From 639c08ce2ac75bd5ba33b124c65c59f781f6c543 Mon Sep 17 00:00:00 2001 From: Ming Yue Date: Fri, 11 Dec 2020 15:49:56 -0800 Subject: [PATCH] Remove uIP TCP/IP stack and related demos (#467) * Remove uIP TCP/IP stack. * Remove demos that uses uIP. * Update Demo ReadMe.txt files. --- .../org.eclipse.cdt.core/shareddefaults.xml | 1 - .../org.eclipse.cdt.make.core/RTOSDemo.sc | 155 - .../org.eclipse.cdt.make.core/specs.c | 1 - .../org.eclipse.cdt.make.core/specs.cpp | 1 - .../dialog_settings.xml | 5 - .../org.eclipse.cdt.ui/cHelpSettings.xml | 4 - .../org.eclipse.cdt.ui/dialog_settings.xml | 12 - .../.indexes/33/5b/e7/4/history.index | Bin 314 -> 0 bytes .../RTOSDemo/.indexes/69/history.index | Bin 628 -> 0 bytes .../RTOSDemo/.indexes/ad/history.index | Bin 47 -> 0 bytes .../.projects/RTOSDemo/.indexes/history.index | Bin 3897 -> 0 bytes .../RTOSDemo/.indexes/properties.index | Bin 353 -> 0 bytes .../.projects/RTOSDemo/.markers | Bin 1434 -> 0 bytes .../.root/.indexes/history.version | 1 - .../.root/.indexes/properties.index | Bin 104 -> 0 bytes .../.root/.indexes/properties.version | 1 - .../org.eclipse.core.resources/.root/.markers | Bin 679 -> 0 bytes .../org.eclipse.core.resources/.root/31.tree | Bin 30614 -> 0 bytes .../.safetable/org.eclipse.core.resources | Bin 517 -> 0 bytes .../org.eclipse.cdt.core.prj-RTOSDemo.prefs | 3 - .../org.eclipse.cdt.debug.core.prefs | 3 - .../.settings/org.eclipse.cdt.debug.ui.prefs | 5 - .../org.eclipse.cdt.managedbuilder.core.prefs | 3 - .../.settings/org.eclipse.cdt.ui.prefs | 12 - .../org.eclipse.core.resources.prefs | 5 - .../.settings/org.eclipse.debug.core.prefs | 3 - .../.settings/org.eclipse.debug.ui.prefs | 12 - .../.settings/org.eclipse.help.ui.prefs | 7 - .../.settings/org.eclipse.search.prefs | 3 - .../.settings/org.eclipse.team.ui.prefs | 3 - .../.settings/org.eclipse.ui.editors.prefs | 3 - .../.settings/org.eclipse.ui.ide.prefs | 4 - .../.settings/org.eclipse.ui.prefs | 3 - .../.settings/org.eclipse.ui.workbench.prefs | 3 - .../.launches/OpenOCD Programmer.launch | 7 - .../.launches/OpenOCD Server.launch | 7 - .../.launches/RTOSDemo.launch | 26 - .../org.eclipse.debug.ui/dialog_settings.xml | 34 - .../launchConfigurationHistory.xml | 24 - .../org.eclipse.help.ui/dialog_settings.xml | 3 - .../scope_sets/Default.pref | 2 - .../scope_sets/relative_path.hist | 4 - .../scope_sets/working_set.hist | 4 - .../scope_sets/working_sets.hist | 4 - .../dialog_settings.xml | 6 - .../org.eclipse.search/dialog_settings.xml | 46 - .../dialog_settings.xml | 10 - .../org.eclipse.ui.ide/dialog_settings.xml | 26 - .../org.eclipse.ui.intro/dialog_settings.xml | 4 - .../dialog_settings.xml | 38 - .../dialog_settings.xml | 19 - .../org.eclipse.ui.workbench/workbench.xml | 530 - .../org.eclipse.ui.workbench/workingsets.xml | 73 - .../org.eclipse.ui/dialog_settings.xml | 10 - .../org.eclipse.update.ui/dialog_settings.xml | 5 - .../.metadata/version.ini | 1 - .../ARM7_LPC2368_Eclipse/RTOSDemo/.cproject | 230 - .../ARM7_LPC2368_Eclipse/RTOSDemo/.project | 97 - .../org.eclipse.ltk.core.refactoring.prefs | 3 - .../RTOSDemo/FreeRTOSConfig.h | 122 - .../RTOSDemo/LCD/portlcd.c | 391 - .../RTOSDemo/LCD/portlcd.h | 31 - .../ARM7_LPC2368_Eclipse/RTOSDemo/Makefile | 128 - .../RTOSDemo/ParTest/ParTest.c | 109 - .../Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s | 157 - .../ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld | 71 - .../ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h | 1138 -- .../Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c | 284 - .../ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c | 162 - .../RTOSDemo/webserver/EMAC_ISR.c | 45 - .../RTOSDemo/webserver/clock-arch.h | 42 - .../RTOSDemo/webserver/emac.c | 411 - .../RTOSDemo/webserver/emac.h | 322 - .../RTOSDemo/webserver/http-strings | 35 - .../RTOSDemo/webserver/http-strings.c | 102 - .../RTOSDemo/webserver/http-strings.h | 34 - .../RTOSDemo/webserver/httpd-cgi.c | 276 - .../RTOSDemo/webserver/httpd-cgi.h | 84 - .../RTOSDemo/webserver/httpd-fs.c | 132 - .../RTOSDemo/webserver/httpd-fs.h | 57 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 41 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 470 - .../RTOSDemo/webserver/httpd-fsdata.h | 64 - .../RTOSDemo/webserver/httpd.c | 346 - .../RTOSDemo/webserver/httpd.h | 62 - .../RTOSDemo/webserver/makefsdata | 78 - .../RTOSDemo/webserver/makestrings | 40 - .../RTOSDemo/webserver/uIP_Task.c | 313 - .../RTOSDemo/webserver/uip-conf.h | 157 - .../RTOSDemo/webserver/webserver.h | 49 - FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt | 1 + .../ARM7_LPC2368_Eclipse/lpc2368_flash.cfg | 35 - .../Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg | 33 - .../Demo/ARM7_LPC2368_Eclipse/program.script | 11 - .../Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h | 126 - .../Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c | 392 - .../Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h | 31 - .../ARM7_LPC2368_Rowley/ParTest/ParTest.c | 109 - .../Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp | 103 - .../Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs | 63 - FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt | 1 + FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c | 231 - .../ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c | 50 - .../webserver/clock-arch.h | 42 - .../Demo/ARM7_LPC2368_Rowley/webserver/emac.c | 412 - .../Demo/ARM7_LPC2368_Rowley/webserver/emac.h | 322 - .../webserver/http-strings | 35 - .../webserver/http-strings.c | 102 - .../webserver/http-strings.h | 34 - .../ARM7_LPC2368_Rowley/webserver/httpd-cgi.c | 276 - .../ARM7_LPC2368_Rowley/webserver/httpd-cgi.h | 84 - .../ARM7_LPC2368_Rowley/webserver/httpd-fs.c | 132 - .../ARM7_LPC2368_Rowley/webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 22 - .../webserver/httpd-fsdata.c | 7113 -------- .../webserver/httpd-fsdata.h | 64 - .../ARM7_LPC2368_Rowley/webserver/httpd.c | 346 - .../ARM7_LPC2368_Rowley/webserver/httpd.h | 62 - .../ARM7_LPC2368_Rowley/webserver/makefsdata | 78 - .../ARM7_LPC2368_Rowley/webserver/makestrings | 40 - .../ARM7_LPC2368_Rowley/webserver/uIP_Task.c | 324 - .../ARM7_LPC2368_Rowley/webserver/uip-conf.h | 157 - .../ARM7_LPC2368_Rowley/webserver/webserver.h | 49 - FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s | 242 - FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s | 175 - FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s | 228 - FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s | 134 - .../Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h | 89 - .../Library/include/91x_ahbapb.h | 60 - .../Library/include/91x_conf.h | 119 - .../ARM9_STR91X_IAR/Library/include/91x_dma.h | 247 - .../Library/include/91x_enet.h | 358 - .../ARM9_STR91X_IAR/Library/include/91x_fmi.h | 184 - .../Library/include/91x_gpio.h | 93 - .../ARM9_STR91X_IAR/Library/include/91x_it.h | 73 - .../ARM9_STR91X_IAR/Library/include/91x_lib.h | 114 - .../ARM9_STR91X_IAR/Library/include/91x_map.h | 878 - .../ARM9_STR91X_IAR/Library/include/91x_scu.h | 196 - .../ARM9_STR91X_IAR/Library/include/91x_tim.h | 155 - .../Library/include/91x_type.h | 50 - .../Library/include/91x_uart.h | 174 - .../ARM9_STR91X_IAR/Library/include/91x_vic.h | 94 - .../ARM9_STR91X_IAR/Library/include/91x_wdg.h | 82 - .../ARM9_STR91X_IAR/Library/source/91x_can.c | 768 - .../ARM9_STR91X_IAR/Library/source/91x_enet.c | 588 - .../ARM9_STR91X_IAR/Library/source/91x_fmi.c | 519 - .../ARM9_STR91X_IAR/Library/source/91x_gpio.c | 407 - .../ARM9_STR91X_IAR/Library/source/91x_it.c | 387 - .../ARM9_STR91X_IAR/Library/source/91x_lib.c | 281 - .../ARM9_STR91X_IAR/Library/source/91x_scu.c | 661 - .../ARM9_STR91X_IAR/Library/source/91x_tim.c | 692 - .../ARM9_STR91X_IAR/Library/source/91x_uart.c | 658 - .../ARM9_STR91X_IAR/Library/source/91x_vic.c | 830 - .../ARM9_STR91X_IAR/Library/source/91x_wdg.c | 277 - .../Demo/ARM9_STR91X_IAR/ParTest/ParTest.c | 103 - FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd | 2443 --- FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp | 4166 ----- FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww | 10 - FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt | 1 + FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c | 1409 -- FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.h | 120 - .../Demo/ARM9_STR91X_IAR/STR91x_FLASH.icf | 42 - .../Demo/ARM9_STR91X_IAR/lwip/api/sys_arch.c | 391 - .../ARM9_STR91X_IAR/lwip/include/arch/cc.h | 78 - .../ARM9_STR91X_IAR/lwip/include/arch/cpu.h | 37 - .../lwip/include/arch/lwip_errno.h | 153 - .../ARM9_STR91X_IAR/lwip/include/arch/perf.h | 38 - .../lwip/include/arch/sys_arch.h | 62 - .../lwip/include/lwIPWebServer/BasicWEB.h | 85 - .../lwip/include/lwIPWebServer/fs.h | 45 - .../lwip/include/lwIPWebServer/fsdata.h | 50 - .../lwip/include/lwIPWebServer/httpd.h | 38 - .../lwip/include/lwip/lwipopts.h | 194 - .../ARM9_STR91X_IAR/lwip/include/lwip/opt.h | 722 - .../lwip/lwipWebServer/BasicWEB.c | 116 - .../ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c | 61 - .../lwip/lwipWebServer/fs/WS1/404.html | 8 - .../lwip/lwipWebServer/fs/WS1/index.html | 50 - .../lwip/lwipWebServer/fs/WS1/logo.gif | Bin 5741 -> 0 bytes .../lwip/lwipWebServer/fsdata.c | 953 -- .../lwip/lwipWebServer/httpd.c | 244 - .../ARM9_STR91X_IAR/lwip/netif/ethernetif.c | 436 - FreeRTOS/Demo/ARM9_STR91X_IAR/main.c | 444 - FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c | 284 - .../ARM9_STR91X_IAR/settings/FreeRTOS.wsdt | 63 - .../settings/RTOSDemo.cspy.bat | 32 - .../ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt | 81 - .../ARM9_STR91X_IAR/settings/RTOSDemo.dni | 37 - .../ARM9_STR91X_IAR/settings/RTOSDemo.wsdt | 68 - .../webserver/Makefile.webserver | 1 - .../ARM9_STR91X_IAR/webserver/clock-arch.h | 42 - .../ARM9_STR91X_IAR/webserver/http-strings | 35 - .../ARM9_STR91X_IAR/webserver/http-strings.c | 102 - .../ARM9_STR91X_IAR/webserver/http-strings.h | 34 - .../ARM9_STR91X_IAR/webserver/httpd-cgi.c | 233 - .../ARM9_STR91X_IAR/webserver/httpd-cgi.h | 84 - .../Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c | 132 - .../Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 21 - .../ARM9_STR91X_IAR/webserver/httpd-fsdata.c | 363 - .../ARM9_STR91X_IAR/webserver/httpd-fsdata.h | 64 - .../Demo/ARM9_STR91X_IAR/webserver/httpd.c | 338 - .../Demo/ARM9_STR91X_IAR/webserver/httpd.h | 62 - .../Demo/ARM9_STR91X_IAR/webserver/makefsdata | 78 - .../ARM9_STR91X_IAR/webserver/makestrings | 40 - .../Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c | 308 - .../Demo/ARM9_STR91X_IAR/webserver/uip-conf.h | 157 - .../ARM9_STR91X_IAR/webserver/webserver.h | 49 - .../FreeRTOSConfig.h | 150 - .../IAR_System/linker_nvm.icf | 42 - .../MicroSemi_Code/CMSIS/a2fxxxm3.h | 1102 -- .../MicroSemi_Code/CMSIS/core_cm3.c | 784 - .../MicroSemi_Code/CMSIS/mss_assert.h | 48 - .../CMSIS/startup_iar/startup_a2fxxxm3.s | 973 -- .../CMSIS/startup_keil/core_cm3.h | 1818 -- .../CMSIS/startup_keil/startus_a2fxxxm3.s | 610 - .../MicroSemi_Code/CMSIS/system_a2fxxxm3.c | 199 - .../MicroSemi_Code/CMSIS/system_a2fxxxm3.h | 49 - .../MicroSemi_Code/drivers/I2C/i2c.c | 835 - .../MicroSemi_Code/drivers/I2C/i2c.h | 783 - .../MicroSemi_Code/drivers/OLED/oled.c | 536 - .../MicroSemi_Code/drivers/OLED/oled.h | 210 - .../MicroSemi_Code/drivers/bsp_config.h | 28 - .../drivers/mss_ace/ace_convert.c | 831 - .../drivers/mss_ace/envm_layout.h | 37 - .../MicroSemi_Code/drivers/mss_ace/mss_ace.c | 746 - .../MicroSemi_Code/drivers/mss_ace/mss_ace.h | 2816 --- .../drivers/mss_ace/mss_ace_configurator.h | 622 - .../MicroSemi_Code/drivers/mss_ace/mtd_data.h | 104 - .../drivers/mss_ethernet_mac/crc32.c | 103 - .../drivers/mss_ethernet_mac/crc32.h | 46 - .../mss_ethernet_mac/mss_ethernet_mac.c | 1575 -- .../mss_ethernet_mac/mss_ethernet_mac.h | 573 - .../mss_ethernet_mac/mss_ethernet_mac_conf.h | 43 - .../mss_ethernet_mac/mss_ethernet_mac_desc.h | 346 - .../mss_ethernet_mac/mss_ethernet_mac_regs.h | 1205 -- .../mss_ethernet_mac_user_cfg.h | 26 - .../drivers/mss_ethernet_mac/phy.c | 390 - .../drivers/mss_ethernet_mac/phy.h | 78 - .../drivers/mss_gpio/mss_gpio.c | 283 - .../drivers/mss_gpio/mss_gpio.h | 488 - .../drivers/mss_pdma/mss_pdma.c | 413 - .../drivers/mss_pdma/mss_pdma.h | 703 - .../MicroSemi_Code/drivers/mss_spi/mss_spi.c | 610 - .../MicroSemi_Code/drivers/mss_spi/mss_spi.h | 1296 -- .../drivers/mss_timer/mss_timer.h | 598 - .../drivers/mss_uart/mss_uart.c | 458 - .../drivers/mss_uart/mss_uart.h | 626 - .../drivers/mss_watchdog/mss_watchdog.h | 427 - .../drivers_config/mss_ace/ace_config.c | 157 - .../drivers_config/mss_ace/ace_config.h | 37 - .../drivers_config/mss_ace/ace_handles.h | 41 - .../Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c | 154 - .../RTOSDemo_IAR.ewd | 4336 ----- .../RTOSDemo_IAR.ewp | 3548 ---- .../RTOSDemo_IAR.eww | 10 - .../RTOSDemo_Keil.uvopt | 1129 -- .../RTOSDemo_Keil.uvproj | 2396 --- .../CORTEX_A2F200_IAR_and_Keil/ReadMe.txt | 1 + .../WebServer/httpd-cgi.c | 269 - .../WebServer/httpd-fs/404.html | 8 - .../WebServer/httpd-fs/index.html | 13 - .../WebServer/httpd-fs/index.shtml | 20 - .../WebServer/httpd-fs/io.shtml | 28 - .../WebServer/httpd-fs/runtime.shtml | 20 - .../WebServer/httpd-fs/stats.shtml | 47 - .../WebServer/httpd-fs/tcp.shtml | 21 - .../WebServer/httpd-fsdata.c | 3871 ----- .../WebServer/makefsdata | 79 - .../WebServer/uip-conf.h | 161 - .../WebServer/webserver.h | 47 - .../CORTEX_A2F200_IAR_and_Keil/main-blinky.c | 366 - .../CORTEX_A2F200_IAR_and_Keil/main-full.c | 623 - .../printf-stdarg.c | 293 - .../CORTEX_A2F200_IAR_and_Keil/uIP_Task.c | 412 - .../Demo/CORTEX_A2F200_SoftConsole/.cproject | 1271 -- .../Demo/CORTEX_A2F200_SoftConsole/.project | 85 - .../org.eclipse.ltk.core.refactoring.prefs | 3 - .../CreateProjectDirectoryStructure.bat | 84 - .../FreeRTOSConfig.h | 155 - .../MicroSemi_Code/CMSIS/a2fxxxm3.h | 1102 -- .../MicroSemi_Code/CMSIS/core_cm3.c | 784 - .../MicroSemi_Code/CMSIS/core_cm3.h | 1818 -- .../MicroSemi_Code/CMSIS/mss_assert.h | 48 - .../debug-in-actel-smartfusion-envm.ld | 184 - .../debug-in-actel-smartfusion-esram.ld | 177 - .../startup_gcc/debug-in-external-ram.ld | 185 - .../CMSIS/startup_gcc/newlib_stubs.c | 247 - .../production-execute-in-place.ld | 172 - .../production-relocate-executable.ld | 176 - .../CMSIS/startup_gcc/startup_a2fxxxm3.s | 1504 -- .../MicroSemi_Code/CMSIS/system_a2fxxxm3.c | 199 - .../MicroSemi_Code/CMSIS/system_a2fxxxm3.h | 49 - .../MicroSemi_Code/drivers/I2C/i2c.c | 835 - .../MicroSemi_Code/drivers/I2C/i2c.h | 783 - .../MicroSemi_Code/drivers/OLED/oled.c | 536 - .../MicroSemi_Code/drivers/OLED/oled.h | 210 - .../MicroSemi_Code/drivers/bsp_config.h | 28 - .../drivers/mss_ace/ace_convert.c | 831 - .../drivers/mss_ace/envm_layout.h | 37 - .../MicroSemi_Code/drivers/mss_ace/mss_ace.c | 746 - .../MicroSemi_Code/drivers/mss_ace/mss_ace.h | 2816 --- .../drivers/mss_ace/mss_ace_configurator.h | 622 - .../MicroSemi_Code/drivers/mss_ace/mtd_data.h | 104 - .../drivers/mss_ethernet_mac/crc32.c | 103 - .../drivers/mss_ethernet_mac/crc32.h | 46 - .../mss_ethernet_mac/mss_ethernet_mac.c | 1575 -- .../mss_ethernet_mac/mss_ethernet_mac.h | 573 - .../mss_ethernet_mac/mss_ethernet_mac_conf.h | 43 - .../mss_ethernet_mac/mss_ethernet_mac_desc.h | 346 - .../mss_ethernet_mac/mss_ethernet_mac_regs.h | 1205 -- .../mss_ethernet_mac_user_cfg.h | 26 - .../drivers/mss_ethernet_mac/phy.c | 390 - .../drivers/mss_ethernet_mac/phy.h | 78 - .../drivers/mss_gpio/mss_gpio.c | 283 - .../drivers/mss_gpio/mss_gpio.h | 488 - .../drivers/mss_timer/mss_timer.h | 598 - .../drivers/mss_watchdog/mss_watchdog.h | 427 - .../drivers_config/mss_ace/ace_config.c | 157 - .../drivers_config/mss_ace/ace_config.h | 37 - .../drivers_config/mss_ace/ace_handles.h | 41 - .../Demo/CORTEX_A2F200_SoftConsole/ParTest.c | 154 - .../Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt | 1 + .../WebServer/httpd-cgi.c | 269 - .../WebServer/httpd-fs/404.html | 8 - .../WebServer/httpd-fs/index.html | 13 - .../WebServer/httpd-fs/index.shtml | 20 - .../WebServer/httpd-fs/io.shtml | 28 - .../WebServer/httpd-fs/runtime.shtml | 20 - .../WebServer/httpd-fs/stats.shtml | 47 - .../WebServer/httpd-fs/tcp.shtml | 21 - .../WebServer/httpd-fsdata.c | 3871 ----- .../WebServer/makefsdata | 79 - .../WebServer/uip-conf.h | 161 - .../WebServer/webserver.h | 47 - .../CORTEX_A2F200_SoftConsole/main-blinky.c | 366 - .../CORTEX_A2F200_SoftConsole/main-full.c | 623 - .../CORTEX_A2F200_SoftConsole/printf-stdarg.c | 293 - .../Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c | 412 - .../FreeRTOSConfig.h | 163 - .../Freescale_Code/common/512KB_Pflash.icf | 48 - .../Freescale_Code/common/assert.h | 25 - .../Freescale_Code/common/common.h | 76 - .../Freescale_Code/common/iar.h | 16 - .../Freescale_Code/common/io.h | 29 - .../Freescale_Code/common/queue.h | 53 - .../Freescale_Code/common/startup.c | 93 - .../Freescale_Code/common/startup.h | 17 - .../Freescale_Code/cpu/arm_cm4.c | 156 - .../Freescale_Code/cpu/arm_cm4.h | 87 - .../Freescale_Code/cpu/crt0.s | 36 - .../Freescale_Code/cpu/dma_channels.h | 121 - .../Freescale_Code/cpu/k60_tower.h | 57 - .../Freescale_Code/cpu/regfile.h | 69 - .../Freescale_Code/cpu/start.c | 86 - .../Freescale_Code/cpu/start.h | 12 - .../Freescale_Code/cpu/sysinit.c | 132 - .../Freescale_Code/cpu/sysinit.h | 17 - .../Freescale_Code/cpu/vectors.c | 306 - .../Freescale_Code/cpu/vectors.h | 304 - .../Freescale_Code/drivers/enet/enet.c | 243 - .../Freescale_Code/drivers/enet/enet.h | 95 - .../Freescale_Code/drivers/enet/eth.h | 58 - .../Freescale_Code/drivers/enet/eth_phy.c | 406 - .../Freescale_Code/drivers/enet/eth_phy.h | 175 - .../Freescale_Code/drivers/enet/mii.c | 130 - .../Freescale_Code/drivers/enet/mii.h | 30 - .../Freescale_Code/drivers/enet/nbuf.h | 233 - .../Freescale_Code/drivers/mcg/mcg.c | 244 - .../Freescale_Code/drivers/mcg/mcg.h | 61 - .../Freescale_Code/drivers/uart/uart.c | 129 - .../Freescale_Code/drivers/uart/uart.h | 20 - .../Freescale_Code/drivers/wdog/wdog.c | 59 - .../Freescale_Code/drivers/wdog/wdog.h | 18 - .../CORTEX_Kinetis_K60_Tower_IAR/ParTest.c | 111 - .../CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd | 1785 -- .../CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp | 2016 --- .../CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww | 50 - .../CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt | 1 + .../CORTEX_Kinetis_K60_Tower_IAR/main-full.c | 629 - .../main_blinky.c | 363 - .../CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c | 319 - .../webserver/EMAC.c | 542 - .../webserver/EMAC.h | 46 - .../webserver/httpd-cgi.c | 263 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 29 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 47 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 3873 ----- .../webserver/makefsdata | 79 - .../webserver/uip-conf.h | 167 - .../webserver/webserver.h | 47 - .../CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h | 115 - .../CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c | 95 - .../CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h | 36 - .../CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf | 58 - .../ParTest/ParTest.c | 75 - .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt | 77 - .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 | 139 - .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd | 1493 -- .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp | 1212 -- .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww | 10 - .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj | 648 - .../Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt | 1 + .../Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h | 336 - .../formike128x128x16.c | 902 - .../formike128x128x16.h | 51 - .../CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h | 9 - FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c | 532 - .../CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c | 933 - .../CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h | 63 - .../CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c | 981 -- .../settings/RTOSDemo.cspy.bat | 24 - .../settings/RTOSDemo.dbgdt | 1604 -- .../settings/RTOSDemo.dni | 61 - .../settings/RTOSDemo.wsdt | 666 - .../CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c | 219 - .../CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S | 251 - .../Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c | 132 - .../webserver/Makefile.webserver | 1 - .../webserver/clock-arch.h | 42 - .../CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c | 280 - .../CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h | 322 - .../webserver/http-strings | 35 - .../webserver/http-strings.c | 102 - .../webserver/http-strings.h | 34 - .../webserver/httpd-cgi.c | 269 - .../webserver/httpd-cgi.h | 84 - .../webserver/httpd-fs.c | 132 - .../webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 470 - .../webserver/httpd-fsdata.h | 64 - .../webserver/httpd.c | 346 - .../webserver/httpd.h | 62 - .../webserver/makefsdata | 78 - .../webserver/makestrings | 40 - .../webserver/uIP_Task.c | 311 - .../webserver/uip-conf.h | 159 - .../webserver/webserver.h | 49 - .../CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h | 112 - .../CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c | 95 - .../CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h | 36 - .../CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s | 199 - .../CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js | 28 - .../CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c | 75 - .../Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp | 121 - .../Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs | 58 - .../Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt | 1 + FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h | 336 - .../formike128x128x16.c | 902 - .../formike128x128x16.h | 51 - .../Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h | 9 - FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c | 445 - .../CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c | 933 - .../CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h | 63 - .../CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h | 2 - .../pack_struct_start.h | 2 - .../Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c | 981 -- .../Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s | 227 - .../Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c | 138 - .../webserver/Makefile.webserver | 1 - .../webserver/clock-arch.h | 42 - .../CORTEX_LM3Sxxxx_Rowley/webserver/emac.c | 274 - .../CORTEX_LM3Sxxxx_Rowley/webserver/emac.h | 322 - .../webserver/http-strings | 35 - .../webserver/http-strings.c | 102 - .../webserver/http-strings.h | 34 - .../webserver/httpd-cgi.c | 293 - .../webserver/httpd-cgi.h | 84 - .../webserver/httpd-fs.c | 132 - .../webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 557 - .../webserver/httpd-fsdata.h | 64 - .../CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c | 346 - .../CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h | 62 - .../webserver/makefsdata | 78 - .../webserver/makestrings | 40 - .../webserver/uIP_Task.c | 311 - .../webserver/uip-conf.h | 159 - .../webserver/webserver.h | 49 - .../CORTEX_LPC1768_GCC_RedSuite/.cproject | 608 - .../Demo/CORTEX_LPC1768_GCC_RedSuite/.project | 81 - .../.settings/language.settings.xml | 15 - .../CreateProjectDirectoryStructure.bat | 50 - .../CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt | 1 + .../src/FreeRTOSConfig.h | 149 - .../CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h | 1035 -- .../src/LPCUSB/USB_CDC.c | 460 - .../src/LPCUSB/type.h | 38 - .../src/LPCUSB/usbapi.h | 118 - .../src/LPCUSB/usbcontrol.c | 246 - .../src/LPCUSB/usbdebug.h | 41 - .../src/LPCUSB/usbhw_lpc.c | 526 - .../src/LPCUSB/usbhw_lpc.h | 149 - .../src/LPCUSB/usbinit.c | 82 - .../src/LPCUSB/usbstdreq.c | 430 - .../src/LPCUSB/usbstruct.h | 119 - .../CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c | 109 - .../src/core_cm3.h | 1818 -- .../src/cr_startup_lpc17.c | 349 - .../CORTEX_LPC1768_GCC_RedSuite/src/main.c | 363 - .../src/printf-stdarg.c | 293 - .../src/rtosdemo_rdb1768_Debug.ld | 87 - .../src/system_LPC17xx.h | 64 - .../src/webserver/EthDev.h | 111 - .../src/webserver/EthDev_LPC17xx.h | 331 - .../src/webserver/clock-arch.h | 42 - .../src/webserver/clock.h | 88 - .../src/webserver/emac.c | 579 - .../src/webserver/http-strings | 35 - .../src/webserver/http-strings.c | 102 - .../src/webserver/http-strings.h | 34 - .../src/webserver/httpd-cgi.c | 304 - .../src/webserver/httpd-cgi.h | 84 - .../src/webserver/httpd-fs.c | 132 - .../src/webserver/httpd-fs.h | 57 - .../src/webserver/httpd-fs/404.html | 8 - .../src/webserver/httpd-fs/index.html | 13 - .../src/webserver/httpd-fs/index.shtml | 20 - .../src/webserver/httpd-fs/io.shtml | 28 - .../src/webserver/httpd-fs/runtime.shtml | 20 - .../src/webserver/httpd-fs/stats.shtml | 41 - .../src/webserver/httpd-fs/tcp.shtml | 21 - .../src/webserver/httpd-fsdata.c | 557 - .../src/webserver/httpd-fsdata.h | 64 - .../src/webserver/httpd.c | 346 - .../src/webserver/httpd.h | 62 - .../src/webserver/lc-switch.h | 76 - .../src/webserver/lc.h | 131 - .../src/webserver/makefsdata | 78 - .../src/webserver/makestrings | 40 - .../src/webserver/psock.c | 339 - .../src/webserver/psock.h | 380 - .../src/webserver/pt.h | 323 - .../src/webserver/timer.c | 127 - .../src/webserver/timer.h | 86 - .../src/webserver/uIP_Task.c | 246 - .../src/webserver/uip-conf.h | 159 - .../src/webserver/uip.c | 1906 --- .../src/webserver/uip.h | 1638 -- .../src/webserver/uip_arch.h | 138 - .../src/webserver/uip_arp.c | 439 - .../src/webserver/uip_arp.h | 152 - .../src/webserver/uipopt.h | 539 - .../src/webserver/webserver.h | 49 - .../CORTEX_LPC1768_GCC_RedSuite/usbser.inf | 45 - .../FreeRTOSConfig.h | 147 - FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h | 35 - .../LPC1700_Startup.s | 364 - .../Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h | 1081 -- .../LPCUSB/USB_CDC.c | 460 - .../CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h | 38 - .../CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h | 118 - .../LPCUSB/usbcontrol.c | 247 - .../LPCUSB/usbdebug.h | 41 - .../LPCUSB/usbhw_lpc.c | 521 - .../LPCUSB/usbhw_lpc.h | 149 - .../LPCUSB/usbinit.c | 82 - .../LPCUSB/usbstdreq.c | 431 - .../LPCUSB/usbstruct.h | 119 - .../Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c | 133 - .../CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp | 66 - .../CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs | 59 - .../Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt | 1 + .../Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h | 1367 -- .../flash_placement.xml | 37 - .../Demo/CORTEX_LPC1768_GCC_Rowley/main.c | 271 - .../CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c | 293 - .../system_LPC17xx.h | 40 - .../Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf | 45 - .../webserver/EthDev.h | 111 - .../webserver/EthDev_LPC17xx.h | 331 - .../webserver/clock-arch.h | 42 - .../webserver/emac.c | 578 - .../webserver/http-strings | 35 - .../webserver/http-strings.c | 102 - .../webserver/http-strings.h | 34 - .../webserver/httpd-cgi.c | 304 - .../webserver/httpd-cgi.h | 84 - .../webserver/httpd-fs.c | 132 - .../webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 557 - .../webserver/httpd-fsdata.h | 64 - .../webserver/httpd.c | 346 - .../webserver/httpd.h | 62 - .../webserver/makefsdata | 78 - .../webserver/makestrings | 40 - .../webserver/uIP_Task.c | 244 - .../webserver/uip-conf.h | 159 - .../webserver/webserver.h | 49 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac | 13 - .../Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h | 142 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h | 35 - .../Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf | 37 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h | 1081 -- .../Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c | 437 - .../Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h | 38 - .../Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h | 118 - .../CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c | 246 - .../Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h | 41 - .../CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c | 521 - .../CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h | 149 - .../Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c | 82 - .../CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c | 430 - .../CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h | 119 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c | 145 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd | 879 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp | 1018 -- FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww | 10 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt | 1 + FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s | 271 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c | 376 - .../Demo/CORTEX_LPC1768_IAR/printf-stdarg.c | 293 - .../settings/RTOSDemo.cspy.bat | 15 - .../settings/RTOSDemo.dbgdt | 79 - .../CORTEX_LPC1768_IAR/settings/RTOSDemo.dni | 73 - .../CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt | 67 - .../settings/RTOSDemo_Debug.jlink | 14 - .../Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h | 40 - FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf | 45 - .../CORTEX_LPC1768_IAR/webserver/EthDev.h | 111 - .../webserver/EthDev_LPC17xx.h | 321 - .../CORTEX_LPC1768_IAR/webserver/clock-arch.h | 42 - .../Demo/CORTEX_LPC1768_IAR/webserver/emac.c | 580 - .../CORTEX_LPC1768_IAR/webserver/http-strings | 35 - .../webserver/http-strings.c | 102 - .../webserver/http-strings.h | 34 - .../CORTEX_LPC1768_IAR/webserver/httpd-cgi.c | 304 - .../CORTEX_LPC1768_IAR/webserver/httpd-cgi.h | 84 - .../CORTEX_LPC1768_IAR/webserver/httpd-fs.c | 132 - .../CORTEX_LPC1768_IAR/webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 557 - .../webserver/httpd-fsdata.h | 64 - .../Demo/CORTEX_LPC1768_IAR/webserver/httpd.c | 346 - .../Demo/CORTEX_LPC1768_IAR/webserver/httpd.h | 62 - .../CORTEX_LPC1768_IAR/webserver/makefsdata | 78 - .../CORTEX_LPC1768_IAR/webserver/makestrings | 40 - .../CORTEX_LPC1768_IAR/webserver/uIP_Task.c | 244 - .../CORTEX_LPC1768_IAR/webserver/uip-conf.h | 159 - .../CORTEX_LPC1768_IAR/webserver/webserver.h | 49 - .../FreeRTOSConfig.h | 136 - .../LCD/STM3210D_lcd.h | 205 - .../CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h | 415 - .../CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c | 972 -- .../CORTEX_STM32F107_GCC_Rowley/LCD_Message.h | 502 - .../ParTest/ParTest.c | 131 - .../CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp | 76 - .../CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs | 64 - .../CORTEX_STM32F107_GCC_Rowley/ReadMe.txt | 1 + .../CORTEX_STM32F107_GCC_Rowley/STM32F10x.s | 294 - .../STM32F10x_Startup.s | 336 - .../Demo/CORTEX_STM32F107_GCC_Rowley/main.c | 381 - .../printf-stdarg.c | 293 - .../Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp | 485 - .../CORTEX_STM32F107_GCC_Rowley/spi_flash.c | 498 - .../CORTEX_STM32F107_GCC_Rowley/stm32f10x.h | 7006 -------- .../stm32f10x_conf.h | 140 - .../stm32f10x_connctivity_line.h | 7804 --------- .../CORTEX_STM32F107_GCC_Rowley/timertest.c | 166 - .../webserver/clock-arch.h | 42 - .../webserver/emac.c | 485 - .../webserver/emac.c.scsc | 485 - .../webserver/emac.h | 54 - .../webserver/emac.h.scsc | 54 - .../webserver/http-strings | 35 - .../webserver/http-strings.c | 102 - .../webserver/http-strings.h | 34 - .../webserver/httpd-cgi.c | 303 - .../webserver/httpd-cgi.h | 84 - .../webserver/httpd-fs.c | 132 - .../webserver/httpd-fs.h | 57 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 41 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 557 - .../webserver/httpd-fsdata.h | 64 - .../webserver/httpd.c | 346 - .../webserver/httpd.h | 62 - .../webserver/makefsdata | 78 - .../webserver/makestrings | 40 - .../webserver/uIP_Task.c | 262 - .../webserver/uip-conf.h | 159 - .../webserver/webserver.h | 49 - .../CFV1_BDM_P&E_Multilink_CyclonePro.hwc | 0 .../CFV1_BDM_P&E_Multilink_CyclonePro.ini | 74 - .../CFV1_Full_Chip_Simulator.ini | 27 - .../C_Layout.hwl | 14 - .../Default.mem | Bin 161 -> 0 bytes .../RTOSDemo.mcp | Bin 80631 -> 0 bytes .../ReadMe.txt | 1 + .../Sources/FEC.c | 642 - .../Sources/FEC.h | 46 - .../Sources/FreeRTOSConfig.h | 138 - .../Sources/ParTest/ParTest.c | 116 - .../Sources/derivative.h | 15 - .../Sources/eth.h | 55 - .../Sources/eth_phy.h | 70 - .../Sources/exceptions.c | 444 - .../Sources/exceptions.h | 52 - .../Sources/exceptions.old0.c | 444 - .../Sources/fecbd.h | 101 - .../Sources/httpd/clock-arch.h | 42 - .../Sources/httpd/http-strings | 35 - .../Sources/httpd/http-strings.c | 102 - .../Sources/httpd/http-strings.h | 34 - .../Sources/httpd/httpd-cgi.c | 284 - .../Sources/httpd/httpd-cgi.h | 84 - .../Sources/httpd/httpd-fs.c | 132 - .../Sources/httpd/httpd-fs.h | 57 - .../Sources/httpd/httpd-fs/404.html | 8 - .../Sources/httpd/httpd-fs/index.html | 13 - .../Sources/httpd/httpd-fs/index.shtml | 20 - .../Sources/httpd/httpd-fs/io.shtml | 28 - .../Sources/httpd/httpd-fs/stats.shtml | 41 - .../Sources/httpd/httpd-fs/tcp.shtml | 22 - .../Sources/httpd/httpd-fsdata.c | 445 - .../Sources/httpd/httpd-fsdata.h | 64 - .../Sources/httpd/httpd.c | 346 - .../Sources/httpd/httpd.h | 62 - .../Sources/httpd/makefsdata | 78 - .../Sources/httpd/makestrings | 40 - .../Sources/httpd/pack_struct_end.h | 1 - .../Sources/httpd/pack_struct_start.h | 1 - .../Sources/httpd/uIP_Task.c | 201 - .../Sources/httpd/uip-conf.h | 163 - .../Sources/httpd/webserver.h | 49 - .../Sources/main.c | 417 - .../Sources/mii.h | 147 - .../Sources/printf-stdarg.c | 293 - .../Sources/startcf.c | 312 - .../Sources/startcf.h | 77 - .../Sources/stdlib.c | 497 - .../Sources/stdlib.h | 79 - ..._BDM_P&E_Multilink_CyclonePro_Postload.cmd | 1 - ...1_BDM_P&E_Multilink_CyclonePro_Preload.cmd | 1 - ...FV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd | 1 - ...1_BDM_P&E_Multilink_CyclonePro_Startup.cmd | 1 - .../cmd/CFV1_Full_Chip_Simulator_Postload.cmd | 1 - .../cmd/CFV1_Full_Chip_Simulator_Preload.cmd | 1 - .../cmd/CFV1_Full_Chip_Simulator_Reset.cmd | 1 - .../cmd/CFV1_Full_Chip_Simulator_Startup.cmd | 1 - .../prm/Project.lcf | 114 - .../ColdFire_MCF52233_Eclipse/.metadata/.log | 41 - .../.metadata/.mylyn/repositories.xml.zip | Bin 344 -> 0 bytes .../.plugins/org.eclipse.cdt.core/.log | 2 - .../org.eclipse.cdt.core/shareddefaults.xml | 1 - .../.plugins/org.eclipse.cdt.make.core/.log | 0 .../org.eclipse.cdt.make.core/RTOSDemo.sc | 104 - .../org.eclipse.cdt.make.core/specs.c | 1 - .../org.eclipse.cdt.make.core/specs.cpp | 1 - .../dialog_settings.xml | 5 - .../org.eclipse.cdt.ui/dialog_settings.xml | 3 - .../RTOSDemo/.indexes/properties.index | Bin 351 -> 0 bytes .../.root/.indexes/history.version | 1 - .../.root/.indexes/properties.index | Bin 151 -> 0 bytes .../.root/.indexes/properties.version | 1 - .../org.eclipse.core.resources/.root/2.tree | Bin 78671 -> 0 bytes .../.safetable/org.eclipse.core.resources | Bin 785 -> 0 bytes .../.settings/org.eclipse.cdt.core.prefs | 3 - .../org.eclipse.cdt.core.prj-RTOSDemo.prefs | 3 - .../org.eclipse.cdt.debug.core.prefs | 3 - .../org.eclipse.cdt.managedbuilder.core.prefs | 3 - .../.settings/org.eclipse.cdt.ui.prefs | 6 - .../org.eclipse.core.resources.prefs | 4 - .../.settings/org.eclipse.debug.ui.prefs | 4 - .../org.eclipse.equinox.p2.ui.sdk.prefs | 3 - .../.settings/org.eclipse.jdt.ui.prefs | 17 - .../org.eclipse.mylyn.context.core.prefs | 3 - .../.settings/org.eclipse.ui.editors.prefs | 3 - .../.settings/org.eclipse.ui.ide.prefs | 5 - .../.settings/org.eclipse.ui.prefs | 4 - .../.settings/org.eclipse.ui.workbench.prefs | 3 - .../.launches/RTOSDemo.launch | 24 - .../org.eclipse.debug.ui/dialog_settings.xml | 13 - .../launchConfigurationHistory.xml | 21 - .../variablesAndContainers.dat | Bin 115 -> 0 bytes .../org.eclipse.jdt.ui/OpenTypeHistory.xml | 2 - .../QualifiedTypeNameHistory.xml | 2 - .../org.eclipse.jdt.ui/dialog_settings.xml | 12 - .../2008/11/47/refactorings.history | 4 - .../.workspace/2008/11/47/refactorings.index | 1 - .../dialog_settings.xml | 10 - .../org.eclipse.ui.ide/dialog_settings.xml | 19 - .../org.eclipse.ui.intro/dialog_settings.xml | 4 - .../dialog_settings.xml | 16 - .../org.eclipse.ui.workbench/workbench.xml | 293 - .../org.eclipse.ui.workbench/workingsets.xml | 4 - .../.metadata/version.ini | 1 - .../RTOSDemo/.cproject | 218 - .../RTOSDemo/.project | 94 - .../org.eclipse.ltk.core.refactoring.prefs | 3 - .../RTOSDemo/FreeRTOSConfig.h | 135 - .../RTOSDemo/FreeRTOS_Tick_Setup.c | 108 - .../RTOSDemo/MCF5223x/MCF52235.h | 86 - .../RTOSDemo/MCF5223x/MCF52235_ADC.h | 193 - .../RTOSDemo/MCF5223x/MCF52235_CCM.h | 47 - .../RTOSDemo/MCF5223x/MCF52235_CFM.h | 76 - .../RTOSDemo/MCF5223x/MCF52235_CLOCK.h | 54 - .../RTOSDemo/MCF5223x/MCF52235_DMA.h | 142 - .../RTOSDemo/MCF5223x/MCF52235_DTIM.h | 91 - .../RTOSDemo/MCF5223x/MCF52235_EPHY.h | 42 - .../RTOSDemo/MCF5223x/MCF52235_EPORT.h | 220 - .../RTOSDemo/MCF5223x/MCF52235_FEC.h | 385 - .../RTOSDemo/MCF5223x/MCF52235_FlexCAN.h | 132 - .../RTOSDemo/MCF5223x/MCF52235_GIACR.h | 37 - .../RTOSDemo/MCF5223x/MCF52235_GPIO.h | 795 - .../RTOSDemo/MCF5223x/MCF52235_GPTA.h | 198 - .../RTOSDemo/MCF5223x/MCF52235_I2C.h | 54 - .../RTOSDemo/MCF5223x/MCF52235_INTC.h | 484 - .../RTOSDemo/MCF5223x/MCF52235_PAD.h | 95 - .../RTOSDemo/MCF5223x/MCF52235_PIT.h | 49 - .../RTOSDemo/MCF5223x/MCF52235_PMM.h | 41 - .../RTOSDemo/MCF5223x/MCF52235_PWM.h | 134 - .../RTOSDemo/MCF5223x/MCF52235_QSPI.h | 78 - .../RTOSDemo/MCF5223x/MCF52235_RCM.h | 45 - .../RTOSDemo/MCF5223x/MCF52235_RNGA.h | 48 - .../RTOSDemo/MCF5223x/MCF52235_RTC.h | 75 - .../RTOSDemo/MCF5223x/MCF52235_SCM.h | 201 - .../RTOSDemo/MCF5223x/MCF52235_UART.h | 194 - .../RTOSDemo/Makefile | 167 - .../RTOSDemo/ParTest/ParTest.c | 107 - .../RTOSDemo/m52235evb-rom-hosted.ld | 229 - .../ColdFire_MCF52233_Eclipse/RTOSDemo/main.c | 455 - .../RTOSDemo/printf-stdarg.c | 293 - .../RTOSDemo/webserver/FEC.c | 733 - .../RTOSDemo/webserver/FEC.h | 80 - .../RTOSDemo/webserver/eth.h | 55 - .../RTOSDemo/webserver/eth_phy.h | 87 - .../RTOSDemo/webserver/fecbd.h | 100 - .../RTOSDemo/webserver/http-strings.c | 102 - .../RTOSDemo/webserver/http-strings.h | 34 - .../RTOSDemo/webserver/httpd-cgi.c | 303 - .../RTOSDemo/webserver/httpd-cgi.h | 84 - .../RTOSDemo/webserver/httpd-fs.c | 132 - .../RTOSDemo/webserver/httpd-fs.h | 57 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/image.html | 16 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 41 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 11552 ------------- .../RTOSDemo/webserver/httpd-fsdata.h | 64 - .../RTOSDemo/webserver/httpd.c | 346 - .../RTOSDemo/webserver/httpd.h | 62 - .../RTOSDemo/webserver/makefsdata | 78 - .../RTOSDemo/webserver/mii.h | 43 - .../RTOSDemo/webserver/uIP_Task.c | 205 - .../RTOSDemo/webserver/uip-conf.h | 162 - .../RTOSDemo/webserver/webserver.h | 49 - .../Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt | 1 + .../ethernet/FreeRTOS-uIP/Makefile.include | 47 - .../Common/ethernet/FreeRTOS-uIP/clock-arch.h | 42 - .../Demo/Common/ethernet/FreeRTOS-uIP/clock.h | 88 - .../ethernet/FreeRTOS-uIP/lc-addrlabels.h | 83 - .../Common/ethernet/FreeRTOS-uIP/lc-switch.h | 76 - .../Demo/Common/ethernet/FreeRTOS-uIP/lc.h | 131 - .../Demo/Common/ethernet/FreeRTOS-uIP/psock.c | 374 - .../Demo/Common/ethernet/FreeRTOS-uIP/psock.h | 380 - .../Demo/Common/ethernet/FreeRTOS-uIP/pt.h | 323 - .../Demo/Common/ethernet/FreeRTOS-uIP/timer.c | 130 - .../Demo/Common/ethernet/FreeRTOS-uIP/timer.h | 86 - .../Common/ethernet/FreeRTOS-uIP/uip-fw.h | 176 - .../ethernet/FreeRTOS-uIP/uip-neighbor.h | 61 - .../Common/ethernet/FreeRTOS-uIP/uip-split.c | 144 - .../Common/ethernet/FreeRTOS-uIP/uip-split.h | 96 - .../Demo/Common/ethernet/FreeRTOS-uIP/uip.c | 2233 --- .../Demo/Common/ethernet/FreeRTOS-uIP/uip.h | 1642 -- .../Common/ethernet/FreeRTOS-uIP/uip_arch.h | 138 - .../Common/ethernet/FreeRTOS-uIP/uip_arp.c | 466 - .../Common/ethernet/FreeRTOS-uIP/uip_arp.h | 152 - .../Common/ethernet/FreeRTOS-uIP/uip_timer.h | 86 - .../Common/ethernet/FreeRTOS-uIP/uiplib.c | 81 - .../Common/ethernet/FreeRTOS-uIP/uiplib.h | 71 - .../Common/ethernet/FreeRTOS-uIP/uipopt.h | 535 - .../FreeTCPIP/apps/httpd/http-strings.c | 486 - .../FreeTCPIP/apps/httpd/http-strings.h | 34 - .../ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c | 169 - .../ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h | 85 - .../ethernet/FreeTCPIP/apps/httpd/httpd-fs.c | 133 - .../ethernet/FreeTCPIP/apps/httpd/httpd-fs.h | 57 - .../FreeTCPIP/apps/httpd/httpd-fsdata.h | 62 - .../ethernet/FreeTCPIP/apps/httpd/httpd.c | 400 - .../ethernet/FreeTCPIP/apps/httpd/httpd.h | 61 - .../ethernet/FreeTCPIP/apps/httpd/makefsdata | 78 - .../ethernet/FreeTCPIP/net/clock-arch.h | 42 - .../Common/ethernet/FreeTCPIP/net/lc-switch.h | 76 - .../Demo/Common/ethernet/FreeTCPIP/net/lc.h | 131 - .../ethernet/FreeTCPIP/net/pack_struct_end.h | 33 - .../FreeTCPIP/net/pack_struct_start.h | 34 - .../Common/ethernet/FreeTCPIP/net/psock.h | 380 - .../Demo/Common/ethernet/FreeTCPIP/net/pt.h | 323 - .../Demo/Common/ethernet/FreeTCPIP/net/uip.h | 2184 --- .../Common/ethernet/FreeTCPIP/net/uip_arch.h | 138 - .../Common/ethernet/FreeTCPIP/net/uip_arp.h | 149 - .../Common/ethernet/FreeTCPIP/net/uipopt.h | 695 - .../Demo/Common/ethernet/FreeTCPIP/psock.c | 338 - .../Common/ethernet/FreeTCPIP/sys/clock.h | 115 - .../Demo/Common/ethernet/FreeTCPIP/sys/pt.h | 335 - .../Common/ethernet/FreeTCPIP/sys/timer.h | 101 - .../Demo/Common/ethernet/FreeTCPIP/timer.c | 151 - FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c | 2143 --- .../Demo/Common/ethernet/FreeTCPIP/uip_arp.c | 475 - .../Demo/Common/ethernet/uIP/uip-1.0/README | 13 - .../Common/ethernet/uIP/uip-1.0/apps/README | 2 - .../uip-1.0/apps/webserver/Makefile.webserver | 1 - .../uIP/uip-1.0/apps/webserver/http-strings | 35 - .../uIP/uip-1.0/apps/webserver/http-strings.c | 102 - .../uIP/uip-1.0/apps/webserver/http-strings.h | 34 - .../uIP/uip-1.0/apps/webserver/httpd-cgi.c | 203 - .../uIP/uip-1.0/apps/webserver/httpd-cgi.h | 84 - .../uIP/uip-1.0/apps/webserver/httpd-fs.c | 132 - .../uIP/uip-1.0/apps/webserver/httpd-fs.h | 57 - .../uip-1.0/apps/webserver/httpd-fs/404.html | 8 - .../uip-1.0/apps/webserver/httpd-fs/fade.png | Bin 196 -> 0 bytes .../apps/webserver/httpd-fs/files.shtml | 35 - .../apps/webserver/httpd-fs/footer.html | 2 - .../apps/webserver/httpd-fs/header.html | 18 - .../apps/webserver/httpd-fs/index.html | 29 - .../apps/webserver/httpd-fs/processes.shtml | 5 - .../apps/webserver/httpd-fs/stats.shtml | 31 - .../uip-1.0/apps/webserver/httpd-fs/style.css | 92 - .../uip-1.0/apps/webserver/httpd-fs/tcp.shtml | 5 - .../uIP/uip-1.0/apps/webserver/httpd-fsdata.c | 607 - .../uIP/uip-1.0/apps/webserver/httpd-fsdata.h | 64 - .../uIP/uip-1.0/apps/webserver/httpd.c | 338 - .../uIP/uip-1.0/apps/webserver/httpd.h | 62 - .../uIP/uip-1.0/apps/webserver/makefsdata | 78 - .../uIP/uip-1.0/apps/webserver/makestrings | 40 - .../uIP/uip-1.0/apps/webserver/webserver.h | 49 - .../uIP/uip-1.0/uip-1.0-changelog.txt | 98 - .../ethernet/uIP/uip-1.0/uip/Makefile.include | 47 - .../Common/ethernet/uIP/uip-1.0/uip/clock.h | 88 - .../ethernet/uIP/uip-1.0/uip/lc-addrlabels.h | 83 - .../ethernet/uIP/uip-1.0/uip/lc-switch.h | 76 - .../Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h | 131 - .../Common/ethernet/uIP/uip-1.0/uip/psock.c | 339 - .../Common/ethernet/uIP/uip-1.0/uip/psock.h | 380 - .../Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h | 323 - .../Common/ethernet/uIP/uip-1.0/uip/timer.c | 127 - .../Common/ethernet/uIP/uip-1.0/uip/timer.h | 86 - .../Common/ethernet/uIP/uip-1.0/uip/uip-fw.c | 532 - .../Common/ethernet/uIP/uip-1.0/uip/uip-fw.h | 176 - .../ethernet/uIP/uip-1.0/uip/uip-neighbor.c | 159 - .../ethernet/uIP/uip-1.0/uip/uip-neighbor.h | 61 - .../ethernet/uIP/uip-1.0/uip/uip-split.c | 136 - .../ethernet/uIP/uip-1.0/uip/uip-split.h | 96 - .../Common/ethernet/uIP/uip-1.0/uip/uip.c | 1908 --- .../Common/ethernet/uIP/uip-1.0/uip/uip.h | 1638 -- .../ethernet/uIP/uip-1.0/uip/uip_arch.h | 138 - .../Common/ethernet/uIP/uip-1.0/uip/uip_arp.c | 439 - .../Common/ethernet/uIP/uip-1.0/uip/uip_arp.h | 152 - .../Common/ethernet/uIP/uip-1.0/uip/uiplib.c | 74 - .../Common/ethernet/uIP/uip-1.0/uip/uiplib.h | 71 - .../Common/ethernet/uIP/uip-1.0/uip/uipopt.h | 539 - .../RTOSDemo/DefaultSession.hsf | 965 -- .../RTOSDemo/DefaultSession.ini | 30 - .../RTOSDemo/FreeRTOSConfig.h | 142 - .../RTOSDemo/GNU-Files/hwinit.c | 55 - .../RTOSDemo/GNU-Files/inthandler.c | 431 - .../RTOSDemo/GNU-Files/start.asm | 94 - .../RTOSDemo/HighFrequencyTimerTest.c | 146 - .../RTOSDemo/IntQueueTimer.c | 134 - .../RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c | 228 - .../RTOSDemo/RTOSDemo.hwp | 479 - .../RTOSDemo/RTOSDemo.nav | Bin 179301 -> 0 bytes .../RTOSDemo/RTOSDemo.tps | 48 - .../RTOSDemo/Renesas-Files/hwsetup.c | 149 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf | 328 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini | 31 - .../RTOSDemo/include/IntQueueTimer.h | 36 - .../RTOSDemo/include/inthandler.h | 714 - .../RTOSDemo/include/iodefine.h | 14211 ---------------- .../RTOSDemo/include/typedefine.h | 23 - .../RTOSDemo/include/yrdkrx62ndef.h | 110 - .../RTOSDemo/main-blinky.c | 204 - .../RTOSDemo/main-full.c | 647 - .../RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c | 319 - .../RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c | 614 - .../RTOSDemo/webserver/EMAC.c | 534 - .../RTOSDemo/webserver/httpd-cgi.c | 277 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/runtime.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 47 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 3871 ----- .../RTOSDemo/webserver/makefsdata | 79 - .../RTOSDemo/webserver/phy.c | 474 - .../RTOSDemo/webserver/phy.h | 83 - .../RTOSDemo/webserver/r_ether.h | 185 - .../RTOSDemo/webserver/uip-conf.h | 167 - .../RTOSDemo/webserver/webserver.h | 47 - .../RX600_RX62N_RDK_GNURX.Hbp | 2 - .../RX600_RX62N_RDK_GNURX.hws | 40 - .../RX600_RX62N_RDK_GNURX.tws | 17 - .../Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt | 1 + .../Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h | 153 - .../HighFrequencyTimerTest.c | 143 - .../Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c | 123 - FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c | 228 - .../RX600_RX62N-RDK_IAR/PriorityDefinitions.h | 41 - .../Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c | 260 - .../Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd | 898 - .../Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp | 2905 ---- .../Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww | 10 - FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt | 1 + FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s | 199 - .../Renesas-Files/hwsetup.c | 150 - .../include/IntQueueTimer.h | 36 - .../RX600_RX62N-RDK_IAR/include/inthandler.h | 714 - .../RX600_RX62N-RDK_IAR/include/typedefine.h | 23 - .../include/yrdkrx62ndef.h | 110 - .../Demo/RX600_RX62N-RDK_IAR/main-blinky.c | 204 - FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c | 508 - .../settings/RTOSDemo.cspy.bat | 24 - .../settings/RTOSDemo.dbgdt | 63 - .../RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni | 141 - .../settings/RTOSDemo.wsdt | 67 - FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c | 319 - .../Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c | 533 - .../RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c | 277 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 47 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 3871 ----- .../RX600_RX62N-RDK_IAR/webserver/makefsdata | 79 - .../Demo/RX600_RX62N-RDK_IAR/webserver/phy.c | 474 - .../Demo/RX600_RX62N-RDK_IAR/webserver/phy.h | 84 - .../RX600_RX62N-RDK_IAR/webserver/r_ether.h | 185 - .../RX600_RX62N-RDK_IAR/webserver/uip-conf.h | 167 - .../RX600_RX62N-RDK_IAR/webserver/webserver.h | 47 - .../Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp | 4 - .../Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws | 46 - .../Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws | 13 - .../RTOSDemo/DefaultSession.hsf | 101 - .../RTOSDemo/FreeRTOSConfig.h | 148 - .../RTOSDemo/HighFrequencyTimerTest.c | 144 - .../RTOSDemo/IntQueueTimer.c | 117 - .../RTOSDemo/ParTest.c | 228 - .../RTOSDemo/RTOSDemo.hwp | 629 - .../RTOSDemo/RTOSDemo.nav | Bin 209220 -> 0 bytes .../RTOSDemo/RTOSDemo.tps | 68 - .../RTOSDemo/Renesas-Files/dbsct.c | 66 - .../RTOSDemo/Renesas-Files/hwsetup.c | 150 - .../RTOSDemo/Renesas-Files/intprg.c | 53 - .../RTOSDemo/Renesas-Files/lowlvl.src | 120 - .../RTOSDemo/Renesas-Files/lowsrc.c | 329 - .../RTOSDemo/Renesas-Files/resetprg.c | 129 - .../RTOSDemo/Renesas-Files/sbrk.c | 28 - .../RTOSDemo/Renesas-Files/vecttbl.c | 64 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf | 466 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini | 31 - .../RTOSDemo/SimSessionRX600.hsf | 72 - .../RTOSDemo/include/IntQueueTimer.h | 36 - .../RTOSDemo/include/iodefine.h | 7181 -------- .../RTOSDemo/include/lowsrc.h | 13 - .../RTOSDemo/include/stacksct.h | 13 - .../RTOSDemo/include/typedefine.h | 41 - .../RTOSDemo/include/vect.h | 60 - .../RTOSDemo/include/yrdkrx62ndef.h | 110 - .../RTOSDemo/main-blinky.c | 196 - .../RTOSDemo/main-full.c | 639 - .../RTOSDemo/uIP_Task.c | 319 - .../RTOSDemo/webserver/EMAC.c | 535 - .../RTOSDemo/webserver/httpd-cgi.c | 277 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/runtime.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 47 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 3871 ----- .../RTOSDemo/webserver/makefsdata | 79 - .../RTOSDemo/webserver/phy.c | 474 - .../RTOSDemo/webserver/phy.h | 84 - .../RTOSDemo/webserver/r_ether.h | 185 - .../RTOSDemo/webserver/uip-conf.h | 167 - .../RTOSDemo/webserver/webserver.h | 47 - .../Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt | 1 + .../RTOSDemo/DefaultSession.hsf | 965 -- .../RTOSDemo/DefaultSession.ini | 30 - .../RTOSDemo/FreeRTOSConfig.h | 143 - .../RTOSDemo/GNU-Files/hwinit.c | 55 - .../RTOSDemo/GNU-Files/inthandler.c | 431 - .../RTOSDemo/GNU-Files/start.asm | 94 - .../RTOSDemo/HighFrequencyTimerTest.c | 146 - .../RTOSDemo/IntQueueTimer.c | 134 - .../RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c | 175 - .../RTOSDemo/RTOSDemo.hwp | 483 - .../RTOSDemo/RTOSDemo.nav | Bin 169792 -> 0 bytes .../RTOSDemo/RTOSDemo.tps | 48 - .../RTOSDemo/Renesas-Files/hwsetup.c | 227 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf | 268 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini | 31 - .../RTOSDemo/include/IntQueueTimer.h | 36 - .../RTOSDemo/include/inthandler.h | 714 - .../RTOSDemo/include/iodefine.h | 14211 ---------------- .../RTOSDemo/include/rskrx62ndef.h | 98 - .../RTOSDemo/include/typedefine.h | 23 - .../RTOSDemo/main-blinky.c | 204 - .../RTOSDemo/main-full.c | 647 - .../RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c | 319 - .../RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c | 614 - .../RTOSDemo/webserver/EMAC.c | 534 - .../RTOSDemo/webserver/httpd-cgi.c | 277 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/runtime.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 47 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 3871 ----- .../RTOSDemo/webserver/makefsdata | 79 - .../RTOSDemo/webserver/phy.c | 468 - .../RTOSDemo/webserver/phy.h | 83 - .../RTOSDemo/webserver/r_ether.h | 185 - .../RTOSDemo/webserver/uip-conf.h | 167 - .../RTOSDemo/webserver/webserver.h | 47 - .../RX600_RX62N_RSK_GNURX.Hbp | 2 - .../RX600_RX62N_RSK_GNURX.hws | 40 - .../RX600_RX62N_RSK_GNURX.tws | 17 - .../Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt | 1 + .../Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h | 153 - .../HighFrequencyTimerTest.c | 143 - .../Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c | 123 - FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c | 175 - .../RX600_RX62N-RSK_IAR/PriorityDefinitions.h | 41 - .../Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c | 260 - .../Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd | 694 - .../Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp | 2779 --- .../Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww | 10 - FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt | 1 + FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s | 199 - .../Renesas-Files/hwsetup.c | 230 - .../include/IntQueueTimer.h | 36 - .../RX600_RX62N-RSK_IAR/include/inthandler.h | 714 - .../RX600_RX62N-RSK_IAR/include/rskrx62ndef.h | 98 - .../RX600_RX62N-RSK_IAR/include/typedefine.h | 23 - .../Demo/RX600_RX62N-RSK_IAR/main-blinky.c | 203 - FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c | 508 - .../settings/RTOSDemo.cspy.bat | 15 - .../settings/RTOSDemo.dbgdt | 63 - .../RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni | 80 - .../settings/RTOSDemo.wsdt | 67 - FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c | 319 - .../Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c | 533 - .../RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c | 277 - .../webserver/httpd-fs/404.html | 8 - .../webserver/httpd-fs/index.html | 13 - .../webserver/httpd-fs/index.shtml | 20 - .../webserver/httpd-fs/io.shtml | 28 - .../webserver/httpd-fs/runtime.shtml | 20 - .../webserver/httpd-fs/stats.shtml | 47 - .../webserver/httpd-fs/tcp.shtml | 21 - .../webserver/httpd-fsdata.c | 3871 ----- .../RX600_RX62N-RSK_IAR/webserver/makefsdata | 79 - .../Demo/RX600_RX62N-RSK_IAR/webserver/phy.c | 468 - .../Demo/RX600_RX62N-RSK_IAR/webserver/phy.h | 84 - .../RX600_RX62N-RSK_IAR/webserver/r_ether.h | 185 - .../RX600_RX62N-RSK_IAR/webserver/uip-conf.h | 167 - .../RX600_RX62N-RSK_IAR/webserver/webserver.h | 47 - .../Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp | 4 - .../Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws | 45 - .../Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws | 13 - .../RTOSDemo/Debug/Debug.hdp | Bin 352650 -> 0 bytes .../Debug_RX600_E1_E20_SYSTEM.hdp | Bin 4950 -> 0 bytes .../RTOSDemo/DefaultSession.hsf | 101 - .../RTOSDemo/FreeRTOSConfig.h | 148 - .../RTOSDemo/HighFrequencyTimerTest.c | 144 - .../RTOSDemo/IntQueueTimer.c | 117 - .../RTOSDemo/ParTest.c | 175 - .../RTOSDemo/RTOSDemo.hwp | 627 - .../RTOSDemo/RTOSDemo.nav | Bin 219796 -> 0 bytes .../RTOSDemo/RTOSDemo.tps | 68 - .../RTOSDemo/Renesas-Files/dbsct.c | 66 - .../RTOSDemo/Renesas-Files/hwsetup.c | 229 - .../RTOSDemo/Renesas-Files/intprg.c | 53 - .../RTOSDemo/Renesas-Files/lowlvl.src | 120 - .../RTOSDemo/Renesas-Files/lowsrc.c | 329 - .../RTOSDemo/Renesas-Files/resetprg.c | 129 - .../RTOSDemo/Renesas-Files/sbrk.c | 28 - .../RTOSDemo/Renesas-Files/vecttbl.c | 64 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf | 464 - .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini | 31 - .../SimDebug_RX600/SimDebug_RX600.hdp | Bin 4928 -> 0 bytes .../RTOSDemo/SimSessionRX600.hsf | 290 - .../RTOSDemo/include/IntQueueTimer.h | 36 - .../RTOSDemo/include/iodefine.h | 7181 -------- .../RTOSDemo/include/lowsrc.h | 13 - .../RTOSDemo/include/rskrx62ndef.h | 98 - .../RTOSDemo/include/stacksct.h | 13 - .../RTOSDemo/include/typedefine.h | 41 - .../RTOSDemo/include/vect.h | 60 - .../RTOSDemo/main-blinky.c | 196 - .../RTOSDemo/main-full.c | 639 - .../RTOSDemo/uIP_Task.c | 319 - .../RTOSDemo/webserver/EMAC.c | 536 - .../RTOSDemo/webserver/httpd-cgi.c | 277 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/runtime.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 47 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 3871 ----- .../RTOSDemo/webserver/makefsdata | 79 - .../RTOSDemo/webserver/phy.c | 468 - .../RTOSDemo/webserver/phy.h | 84 - .../RTOSDemo/webserver/r_ether.h | 185 - .../RTOSDemo/webserver/uip-conf.h | 167 - .../RTOSDemo/webserver/webserver.h | 47 - .../Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt | 1 + .../Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp | 4 - .../Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws | 49 - .../Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws | 17 - .../RTOSDemo/DefaultSession.hsf | 106 - .../RTOSDemo/FreeRTOSConfig.h | 147 - .../RTOSDemo/HighFrequencyTimerTest.c | 141 - .../RTOSDemo/IntQueueTimer.c | 114 - .../RTOSDemo/IntQueueTimer.h | 36 - .../RTOSDemo/ParTest.c | 154 - .../RTOSDemo/RDK_Jlink.hsf | 232 - .../RTOSDemo/RDK_Jlink.ini | 38 - .../RTOSDemo/RTOSDemo.hwp | 477 - .../RTOSDemo/RTOSDemo.nav | Bin 356583 -> 0 bytes .../RTOSDemo/RTOSDemo.tps | 33 - .../Renesas-Files/board/rdkrx63n/dbsct.c | 83 - .../board/rdkrx63n/flash_options.c | 124 - .../Renesas-Files/board/rdkrx63n/hwsetup.c | 173 - .../Renesas-Files/board/rdkrx63n/hwsetup.h | 42 - .../Renesas-Files/board/rdkrx63n/lowlvl.src | 54 - .../Renesas-Files/board/rdkrx63n/lowsrc.c | 332 - .../Renesas-Files/board/rdkrx63n/mcu_info.h | 59 - .../Renesas-Files/board/rdkrx63n/r_bsp.h | 54 - .../board/rdkrx63n/r_bsp_config_reference.h | 149 - .../Renesas-Files/board/rdkrx63n/resetprg.c | 409 - .../Renesas-Files/board/rdkrx63n/sbrk.c | 96 - .../Renesas-Files/board/rdkrx63n/vecttbl.c | 186 - .../Renesas-Files/board/rdkrx63n/yrdkrx63n.h | 118 - .../Renesas-Files/mcu/rx63n/iodefine.h | 12106 ------------- .../mcu/rx63n/iodefine.h_from_toolchain | 12063 ------------- .../RTOSDemo/Renesas-Files/platform.h | 75 - .../RTOSDemo/SimSessionRX600.hsf | 290 - .../RTOSDemo/main-blinky.c | 235 - .../RTOSDemo/main-full.c | 672 - .../RTOSDemo/r_bsp_config.h | 149 - .../RTOSDemo/uIP_Task.c | 319 - .../RTOSDemo/webserver/EMAC.c | 534 - .../RTOSDemo/webserver/httpd-cgi.c | 277 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/runtime.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 47 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 3871 ----- .../RTOSDemo/webserver/makefsdata | 79 - .../RTOSDemo/webserver/phy.c | 468 - .../RTOSDemo/webserver/phy.h | 84 - .../RTOSDemo/webserver/r_ether.h | 185 - .../RTOSDemo/webserver/uip-conf.h | 167 - .../RTOSDemo/webserver/webserver.h | 47 - .../Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt | 1 + .../Demo/SuperH_SH7216_Renesas/RTOSDemo.hws | 41 - .../Demo/SuperH_SH7216_Renesas/RTOSDemo.tws | 15 - .../RTOSDemo/FreeRTOSConfig.h | 118 - .../RTOSDemo/ParTest/ParTest.c | 114 - .../SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c | 15 - .../RTOSDemo/RTOSDemo.hwp | 239 - .../RTOSDemo/RTOSDemo.nav | Bin 112731 -> 0 bytes .../RTOSDemo/RTOSDemo.pgs | 35 - .../RTOSDemo/RTOSDemo.tps | 20 - .../RTOSDemo/RenesasCode/compiler.h | 94 - .../RTOSDemo/RenesasCode/hwEthernet.h | 152 - .../RTOSDemo/RenesasCode/hwEthernetPhy.h | 91 - .../RenesasCode/hwEthernetPhyRTL8201.c | 435 - .../RTOSDemo/RenesasCode/rsk7216def.h | 106 - .../RTOSDemo/RenesasCode/trace.h | 104 - .../RTOSDemo/RenesasCode/typedefine.h | 56 - .../RTOSDemo/RenesasCode/types.h | 476 - .../SessionSH7216_E10A-USB_SYSTEM__SH.hsf | 527 - .../SessionSH7216_E10A-USB_SYSTEM__SH.ini | 4 - ...216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini | 3 - .../SuperH_SH7216_Renesas/RTOSDemo/dbsct.c | 30 - .../SuperH_SH7216_Renesas/RTOSDemo/flop.c | 323 - .../SuperH_SH7216_Renesas/RTOSDemo/intprg.c | 526 - .../SuperH_SH7216_Renesas/RTOSDemo/iodefine.h | 5006 ------ .../SuperH_SH7216_Renesas/RTOSDemo/main.c | 502 - .../RTOSDemo/printf-stdarg.c | 293 - .../RTOSDemo/regtest.src | 451 - .../SuperH_SH7216_Renesas/RTOSDemo/resetprg.c | 106 - .../SuperH_SH7216_Renesas/RTOSDemo/stacksct.h | 11 - .../SuperH_SH7216_Renesas/RTOSDemo/stdint.h | 27 - .../RTOSDemo/typedefine.h | 23 - .../SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c | 234 - .../SuperH_SH7216_Renesas/RTOSDemo/vect.h | 902 - .../SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c | 553 - .../RTOSDemo/webserver/EMAC.c | 532 - .../RTOSDemo/webserver/EMAC_ISR.src | 53 - .../RTOSDemo/webserver/httpd-cgi.c | 254 - .../RTOSDemo/webserver/httpd-fs/404.html | 8 - .../RTOSDemo/webserver/httpd-fs/index.html | 13 - .../RTOSDemo/webserver/httpd-fs/index.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/io.shtml | 28 - .../RTOSDemo/webserver/httpd-fs/runtime.shtml | 20 - .../RTOSDemo/webserver/httpd-fs/stats.shtml | 47 - .../RTOSDemo/webserver/httpd-fs/tcp.shtml | 21 - .../RTOSDemo/webserver/httpd-fsdata.c | 4376 ----- .../RTOSDemo/webserver/makefsdata | 78 - .../RTOSDemo/webserver/uip-conf.h | 163 - .../RTOSDemo/webserver/webserver.h | 47 - .../Demo/SuperH_SH7216_Renesas/ReadMe.txt | 1 + 1373 files changed, 22 insertions(+), 431027 deletions(-) delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/33/5b/e7/4/history.index delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/69/history.index delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/ad/history.index delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/history.index delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.markers delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/31.tree delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h create mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs create mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww create mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/STR91x_FLASH.icf delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/api/sys_arch.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fsdata.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/httpd.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/main.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj create mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c create mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/start.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/start.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww create mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj create mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs create mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat create mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs create mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww create mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs create mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x_conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x_connctivity_line.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/timertest.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.hwc delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Default.mem delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/RTOSDemo.mcp create mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/ReadMe.txt delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd delete mode 100644 FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.mylyn/repositories.xml.zip delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h create mode 100644 FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/fade.png delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h delete mode 100644 FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws create mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww create mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.nav delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h create mode 100644 FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.tps delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws create mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww create mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug/Debug.hdp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug_RX600_E1_E20_SYSTEM/Debug_RX600_E1_E20_SYSTEM.hdp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/DefaultSession.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.nav delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.tps delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/dbsct.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimDebug_RX600/SimDebug_RX600.hdp delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimSessionRX600.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h create mode 100644 FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.nav delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h create mode 100644 FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.pgs delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.tps delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h delete mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h create mode 100644 FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml deleted file mode 100644 index c4b91cfab..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc deleted file mode 100644 index 6643763dc..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml deleted file mode 100644 index 9e62c4bb5..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - -
-
-
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml deleted file mode 100644 index 5240b1825..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml deleted file mode 100644 index ab95b0564..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ /dev/null @@ -1,12 +0,0 @@ - -
- - - - - -
-
-
-
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/33/5b/e7/4/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/33/5b/e7/4/history.index deleted file mode 100644 index b5f9597a432ba35918c1395b8939d434013e1577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmZQ#U|?WkFx7V}N=*$4@ekI^FG^Pk&Mz%WPSr2SFDgk)%1PCCcXrly4DvOP_X%(| zGOnlq%jhLDFbUMMFkOsbkP%tim)$a-dBKe2<~<^e3=9*V-MfD^oIys+_*BBtR>5S? zKL6byaRv)AEbt0 ip-RZ&LCYcH3WwU{ki|>CbV1A!$YH;ZWbdaQh+hE9foROoS=_JB7OegO8;1q5_}p_g5b;w-rI5v~+#uo$Du1vdi_iIM4OV|3=i#qY zNbV0xfru+is(p+iUS|bXZxES!09jlz(*i8MAdDj)S^QA2Iapj_<~A2(@o8Voz~Tv? z49t+l-BTgr45CPhq0}=VJ|wX?8<-#%FZ?&VeG bhdagc8IcS!0?NnjpDs^h-dJ|-7)S#ErykmZ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/ad/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/ad/history.index deleted file mode 100644 index 5ae7777f5fb754fcb1e57082aa5c7e69cae056b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmZQ#U|?Wm;M4bUcF`}$FDl7NPSHzdU|g`OcKVHQ1{pEqQwc{~1(Of2H`pV>$iM&q DB_IwO diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/history.index deleted file mode 100644 index 7a847c7693866ff125efaf82f4cc9ec4cfa46017..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3897 zcmY+{eOOcX6$kJO2$mueIzds2=~U1nkZF-w72?1u@-PAjh=N`g-U13&2&niLBULLe zjn*kIL&G+8g4R^3#e&MKRc1#38(J(h+9}g9O_{PePzL80pXb|uKhO6$_m})`&N;E< zIL?}z=<~bGOr>`=H%0b#O-OMp=Q{IzrRzjXFZ*i`cC}8i;5b>qFDLzNE$2Grd~tgI zNh@u_oZhB!7wzB%zXl)jdB1Vo#mYA;zKh{pofo$8tsgqdZJNsK$DLn&`#8Ga*)npW z*|Z5=f3=jHi?a?!UtPvrXDkgwAGR%_yskRm23Kkvr^{@--TRh4k7wwPhKuN4Ls30Ho z7SHN5te(Fcd}RAZ@`g@3C-m&2@#K>7=WV+npEJ#moR?Mob1QiEbYGSq?yf*T<@6rQ zXHUvS|Mvwia_Rp(cIJ-N5zYE4;K7+>s~rQg$s6+S%*g>S>3N4-DST zkWX36TySpW(4+4+QC{$!D@lg@u?FV+tO=gzKPVb0Z!**lB|*Mp8gucwwU5zjYOYgW zYW;1^&%C;xT++T}8Tv%oZx#2SN0~N98?{=M~7N{#;8M*|{6BJNLE}i-C)*|o~d-KWpqHX2A;9{!? za>;}0)9uhQofoX2R;raKhpWfjao)q(-`~}K@M-)SYNe)#H?59NvO4@bVa4Dp&MhIA9mw-Xx8KQJKkVj*K4{Ne{4(4f z{dprB1+t4*rlSYQ7qjzBTJ)d@p6jdjWzWsM5Q@&X7^tOjwmzW==}F0oO-bAWe&vZe zY(~raJLyNFfA#1y^rX+3^C#z2p>I?&Hx=<(^wE(9s$<&fGE_Krd9UZ7Veb`ket%y_ z0k~%bbKTRjHguit3(9jd`VXQ1s9-L!oT@@!Zp)gZsIF>s57ZBEV@=RhKY1cH!Ml#; z<|xdyM*r?u96eVP68L9qj+`xXiMOU0JzTe*@)CE4z37iCnd^e@?MDA*XdUHc7j7n^ zAIpj*=L3u8p~t+vmRyM5@q8zIuHK<2a((~yO7y-0<|6NDhtdBfTSIx{%xMYeHlED+ zp78bPO(uWJOEfdww!?D|s+p@U1lyxu+qRU|zk2@aHpsV*E+Ll%{JI)FRLh2nzBuS2 z4iCB9JZuVv|AKzTi47IO?qnhkl{^&sIG`){yR+x+XCnas6^<2C3#DP~uDe2l)>dm`1*9vmqbpni3{ z4Y|%^{!a9(N3Gd&qxZ$5x5=4nJKl&!ua9KjFta2QJxyfJ4~GS#yX8)x`o^Y~U!nI~ zT9FIh;uo24&ZjRqa?=5675e=Zf2XD|o|L{S9rFGD_sNAPelOC%I|~iulE(EC1^9_@ z=En3W5A?v4JCx@feLl!aN{Uz$78#hCk*rAZPUT#5&uZhb`Bd&{qeF@s%M`eTch=n? zmwa}>fE!hLR4cizweKYQNPG*qez9{N`hS)(7j%daf7V_ z{Zb5b*>9U;(GxFkro60V)^c>A#(|u3*8c-vs`4r3m&e^^3tnQBPETJN|0Fpi6~5%H zgMTGg`FkJ14d(M3%%xNJ6`)t;GuH~4d(jhP&H2jCJoI-1+Ni$PqbUsCCAWcGGrF$> zHx;LaY-8ZpRY`GUD34;Bfo@Uw*SHzXNV232KnQx(f`3NVb$vn;PV4zo0{$5pedS4R zIzIK#O<3~x^q9Te#zbsGf@+vy{2;job-+*kB%{1ATos z7}xgJQXS30)>`z`Nam{E+CQN;*hR4O3@YBhfsl4CoLpPi`(nq~JN0_7bNb_{=l+J}ZQ|RB5w1Oc*3~#ze z_nwylKsH>FL-DqI-9BOGVaY=D0b@F`pe(W$$+ih*vR;iWKsf+`KTu*>6 zmUv%%BLy zcQ2|#xchlyV49|qQZ^4&#n}jq0vVJ&rbN#EQ<}r=RHsw#gV*SEZ>ZP)h!M?JE9Wp? Pnx5%^XN9X@gS5T3S5t$OT54-)Y2wh=2Ty=mH7!9QAWjmS2c#>Hf}Y&O!1kLJaTFW?J! z@HsS_T1^lGf`~3TWHOVP`F<7vN>DL7=cnBU1_E@LoSEq&YzXNQbbK}pkvOg*F7_jj zI6}tZ5#zWokzNl4GZyauf0ZRhcr>eO;e>EaXx z$n{*e5O*w8@1MMO0tL#4Mc7LJl4XWCt%y6C-cLHtrF7h!RAscBIEJ7#2Hw~$iKq#RgFx6HR@mOX zY>uy!J>l>DMH88^M}n)YaW=U-M){*=iQQ7D-rcI<*evr*+Xw#r6)t>3u|If)6IC7_ HPoG}_9S7Nf diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version deleted file mode 100644 index 25cb955ba..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index deleted file mode 100644 index 567d91cd707e345c0ad0e09f06e362bed8c88b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmYkzF$#n*5Czab_FGukc!;bZ0wCy|fMLG2U(YWCRJ*seoc>6Bn1_$)_~Fhdx|MM@H-Z5lGBG0!hG z(&f^QI~*zC0(uxo!~W{yV4xps5KxWr}>>}2EAUu_J`;OFu3UH=a@lP6{w)64% Ge(?=nDBz+1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/31.tree b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/31.tree deleted file mode 100644 index fe99eb19207e5ce2fc309782f812812d1d889565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30614 zcma)_d4Lqf)xdkt*&AkAO~inp#zYfVc9+xXMuvsuTy|kmF^O4bXL@%B=5l71!vhgR zl+T0viWi5sNEFYo7=ehZ#t7bb)L=q1#v?{ejM48^*Q@S&J=J{Q{IR_azxV3Zt5;R8 zYPxz03-a?d>k~YlU&YUgCHPyOR+CJ3)tcd0G?g)H!;x%lIGHx#fAh7H*>hUjCYtf2 zR_|uwp+u<5jCAxwV-YiLiPUzPiFjy%iT`HlcQlOo|7d6nhY|@h-Iz>tM!P0(-Aqqj zVS$#Pm&bm~ldOV&C>#L)Ro>T5S1YXzr_#y!W;mzjT;c5+3XUuFin&`@aYK=KMujaC?hXx|?TfDLhSbdsY z|5$bbcUju(4284FG-!dM%}%BY3%+dY3-eILV{pZG)W8UTV=^93CWf$<8PXJunM^8= z8?Y&VD`p}Ma)pPo3cyZMD~8lmPVE&Lh)#r z(u>z4{Q#v)%!Otmo1yTcpCbGqg?*i|P{w7(!g^#MqHJ+zESaKevmYS(FhxtFiLBYh zdXDUi4EiAO2&H`~h!B_GE^I~3zoBet##DGY^#i2$P}b3U(=S1IuNqDQjGFt741a?|!4e8rG|dRMO=(Z1 zY8z*?+1d*py4F9Bg8|a@G_Aa8Moa6lc-Ftf2fA|EWHT{qjtJBmztyvQXWo1+X9D{K z3s-^@^G6QnSg@4hsvdI#22udKq$L5WktIHCd5-G~98l_&ZK#`fK4->N!d1)w-vPa| zT1^v%AjjRkGq3NDdLMV`<*cmt$fzi1f@PGg=wL&~g|*4rShCA*n(9-Zp1uQ>AEW{U zY=KM`=8?2pZrVjC_rx*el08{ZxjrgaW|fzX#%bN}x*Usn(hDa|FhfMbQ(idnRy~_# z;1ew8SL-LVZk26Jj=yHE;b`FZROC2GMD4L=Z1TV}$COm~%$EEEl~fPgcj7!3c-DiK zJhpT0k7jc!aL9v}9JYVx>7qLvrgWv4Kyv&ws}A*J=dkX;#WjwE+Fh;RMZxE3QB+Xj zEnDyfDp(p$D`t$_v9ktV^q?JY^}ny~1)SajFHyQAobFC0dB3%1=G%V4p}@-&mgY}; zu)dY0Fz^Yy!mrj(HqP+5)-eLc>gH0T_6&s0p2U~PSrBZ0rDP{}_#=Z^dZqDNJzGwTo$qZ6(3lRs3rG1iDfrkU32? zWg{m8A5w`LM?&3LldnO+zaL9b(OkCRM^vyRZDxAnu&A{2jPg$&{O?XIg~pudN=BCAfx>;@QbXF>{Gj&vk_uz&Z)!Jgpo|;8m>+Ii_s8X%DUo^(JacQ797j zFha~cOaNNKA4KGb4(kfDIK=kZ{Qi@p(R7%n><=u|)%I+Ddl`0eeX>nk zr5w*n$z;t~ER>FBlttb63>VS;vZz;4Enf_uhx`~U0UnVIc2(+M-{fgext;;vLQ>4A!#$t0j^<=xQ^&>YH| z9z14rRsq15bT4Xmhs-Ol@3a0}(@)@68Fo9_fd^8!6g21f*`aYZ7OE?ORyxIz_#V|? z1`>RFmHV87;}k9mVCLkw(V+)Z=k${)&$K5N!iEp=j7^_HX=Zq8QQQN@49gP1c)8Gwdcfb$)tt$A z!KYD}RWh?A6VApwl;a+au!OZgELB}&uH%y*QuP+TBxSl>Zad|4iZd7XgwnKwI?B(W zG>hIvp=`K2lB6SmBk?0DQREI4XR`P)CCgc2l1}%es4WgZ%*DszQANja_*%*rx!c|$ z&vcRQhIh!}l&nlgvvu`j7LOgZc!a!%cUfd&BPVrSl3I5VS44t@tvwjk(=v+Ok>yy^ zK*)$Y;jIJIVjGymH>F8vl% zlTZJDmKJU0tnsxh15;2e8a5N~ZAo@9`&vOP#m{*8X3ptnQNGHfh?*y^*pKt39sm*W zi}lHeB2a{wRI~hnd$7~%IL1sNGhl{Q@Pcw&3TKElzdxbh_033QcHN zp+xJUeTdGZXi++}$ffi*NQM-oT4x6(3p0s$O6jVw3>Ir;p-iH#Jz~n={=&eu2D_I2 zOBsi6_bl8@xbYh~re8_%;&`;9p4M$G?$qd4QM3}!_DnY26Lt^JYcV0vS5k=*n0R27 ztj5x#lq>j%R%>2B;ZmkKryW-BK-Do1n&`F% z^*E)AdLnL5Jdb)43XmBHsYad4Rh>VIUouV%z`W{8uy{-n; z{w0^T<{e7o%%>lvH1z?bHSY+oUMPd#(TX4=rRJ_%g9cnHlbE}*Y?K;sAJW%Rx;T^$ zce~KTh_0e&&fXog!@7@=T}|1dh}lWCuCGE8&9?3!oOr%QY+YZA=vtRjmJ3r7b6|a) zi)7O|C2?}p*He;D(iFV}i{C&|oKGoxJ+d1q%jZan?m-ksTk8%SU`>3Kd>YBkRB2I$ zY;c16*T0YC7D^VgiH|y9LkXfdRa~)+rg^0a8p)_V}`c1R|oTMmwD`)hZDQitUlzbe?tuB&HCzSjQ$!(Ox z1rK32RwKKevewW{$&-=9q2Ib=L6MW?J%=4vPs=(BG`0W_rCr8u45HdwWEeKGW65MH z>gt&r=OK(60Ad|jht?e^12?k)*NV2kV7l(A5 zhpjtiEyC*gtcPl@5W5yoJ*xc=sC^+75RRkp-w|F!;eu33n%CCfKjjc|n3Y*~c>}fL zP!D-J5jylH%EPRbT_W?T!e&BvqGdlV$q8A1|6!n%V{D2}Gw$>8QWi2j-?NJpoC*UrN@lj)DRb;6D*3DqrUaze+& zpQ95Q85u5Cz8K&F_oYLLh${rQ%tRyh@~exbX3RkLQOXuB zobRgHr3n5u7o-|-v7lq)S~$41Y~lQlOr#q&S168aJbfS4D~504-c3K@kiLY%1wGQn zZ22<{_4)k&1K7o_JNRbX*Aq<*tE(MuF9gc})jZ!sosF{2LaliAq~OHnNr3WQ+$fbu%10=!6I1Yh^M1yaX72f|wWnDvN1aMRzuvg0Jq`)Ay_bc1;JKf#qO^X5B#} zR>=ZVfUq(?M3E0@8C1k+dnWQViu{d=l(SMI!@^xrT7+#C7G+6+RT5A14;0HRoaqE# z!u4Bc4fui(VrFDNH0C4Om@=(o#PAWd-Pt&MuEcTZc!d8Y!!V6^h9YKdD&ai(%c?mP z;eS)OoHbacHj|@#IPzb)`D7BlCd@TP=>Lz4?>5021>cJL(f!sPxUnpnh?t9W)sIK~ zzx*ojesEGGY-TdbDu^P!p)%!sPsY2--%`FblU)Kq9nP@mbi9uaG9;Mw61Fd)a3|Vg z0AYVvbww1of=px^AKS3?{gQ)|7_+<9Clt5BJ~FH`6A5KQt`bheQLaPL4=HV+ z6~nTF11MX<(uz)b|KI=c+gTiqbxd7_5dx-Gh}e9dYOZ3M6K1rlyCW%oDtK{};Z?;2V$4RyYzAW1t;Jj{t;4JFIK&UV+1B6EZ2*l$q0l;gZ=ya!hADvf;1 zDILc?>kb0drb+emVx-^l&@ET7Y!*&3IyOv>Zc@$hn4AQUqqh{#UrHr&_Va7j z{@_iF?Ev;9OCqnvK85GlU(-8t^T}Lcz%|b}=iV4@KZ1SLHpE@o9v)63s+V7htSi~W z17}3SE75b#Xc5&L_n>N5o@XCVBJ_qZ(%6BlJBY(FJP=eb%|_sobvGf7O)GHw zG!Id}wh8HP_*Ky2d=7zEe}u3rxx+Izgk80fv$~|$O6|m16h_+(bKOZuL%r+|{9eK` z>!~fYhSwZLINwIC#10Rg5Hqfxhin05`SA;au6!NQLWH5C416g_Kh4K+djB-+CWaWT7 zovT?44%%I6xV$`L#G3%E*Z} zLx-SV*Br&2!7@M*gv}kZ5XDi`x&t?Jl+1jS?&j!t*VtDg{04e);eX-oX>F*NbcKFe z!Gy*}n=8HJgu~dp#_^oz<-^+;>PAh7W+%3=2mZKH28-zYz6=*=zNT2FyKc-V!VW_N z=EyAU7BOq3wOvhb%Re!*HQtd?7}QhgY&-;!Pez26&tjg{2`7xU2ov|HfpbOyY@fp|f9>|AO@snuq%%`SJMmQO!N#n`QdVykC>a`}l8 z@Y^RhB937!@bboF#5^yQPDhi@J{vUOvx|}c4!?3fPb-?z*j86BoBixnNMe@5Nu}>D z!PLMwPgV-6VOB#$>s>q!RnMh-!DJ~g{nrgXiUDbSSLQ0U{=wPJquYaX#@02>9x;6Q z@G-XCHQUdbn?~h7kcA3VLAUHfM9-H|HVc8>Q`=_K5WTDi>7P*AtCp8yc3}LJ@>RC= zZNcWzPUn(s|Di16)2diq89ldtWrQg0 z)gsHqfY?F#3adqCv^Lg5FgdZbf9RRGnh-+yQK*aA{aZVGy@aX%LsRMkuPT z!Q5ll7_{L9hV$jIs^NxafU45lU#xaoDY0D8n<_h zZW$FWkyncY&z;H<15*g=4o2S`@AVy-iaQBGSL&eh-rg;PMW|1RGp=KY4F_H4fXBkG)gwF7_hq!X-rqFJ9w>9 zxw$xOrn1pwqLz)){5zxpi?6wDHS!o+oCj+h-m%`lD^WEb`Gx!{c*Q94E8K`P7O7BK zYy6Q`)QU5@(CXEWTSg&|JMMz_O&QZx-%!tvA!CyF`6W9~Mz)q;IjfxeZ=Q$fMKbE$ zG&jDE{Kb@aB_QP&1@FSfHqMkur4id_qS8xb)Z2)yN0Gmj^1kNArjhjxBW+()B~M7> zWMK@K*<3TKzxr(46jZxZMm@}6JPshnWt1;#ZfhOUFuZBR2&Yy0X_1$DQGK0^=UM`3 z;TyE@@_u(1O3%K zsCX@KT-b3KSAE4?Dl(+f{U&Lm{ zvef}*QoSt?VYC<X% z;df%L+)PoW*TFgaMV_&R^2HD@5oy^wpykM>!yGYwMN!`(I48~bA~7?P*y|}<5zNNT zn6=y;<(#X7?TAC$Q2AI{pi-+83*NR-@QjK)L+n|I5;w>a@J0|x0uG1JZ#E58a6rz8+jl!Vib zfj$&sm9TTs-qw?{W*_Q1914x?v>?B{?9cVMklI0|=w?B#|AfmiwGie}v0P_}915pL zA*KlWy||7tZli`-L2nIA(#v%qx!5CA->%>l+f;kL0rTfkVC}2O+7b=#%H5^1Ec^IFu2H~h1+xWB7BL9K;k4#2zoD3@Si#NVT^fxl`a z&InGhO|JUkvXj0=@Gf@a-8 zFNb455j-6w9_5<$*h|R%)}4J$-q@<_IR0Bu6y5o5>?}%W8HxnUT%J87V`V} zRq(!MGu{jjZ#ZTgTsj?_!uX!d!gI9nG-|57PRg2~%U<{thm4>M!x#7nJ6kzydrM4Y z6DVAPaL$Tz(n{3cNCgJi0_sKDL@|&|JcgWNjb_VDqH?@8{0z1DI3KY&h zcOu*L<*njB5Lvw#!INYVzV~)--pd(IN+W4J}dRDOIFCv~Er+iLM>OYV; zUreVsmsk?8;_N3c5MZeU)#PhV|A7SsXK}p-<^^0PcXsz5*zz6hjm8ty6vbAQf7es3 z!%=acf_Cj9NT%a>F3eE2yZ^x2yRokrIP40(kgYlGW~>_2a?cVpW2S7zF?>=rX!M5| z|Hjj@Os-F=1_j^w6xIKpqKdteszHqx)FF*|sdXo!+nv{Ij~+O0HS&L;+Lc}b{k#8x z{IisIzrwRTd)2aEAv#1x;nh$iLy{jLXpzA@t&Hs)zzbpJ_h!MGYezBaJtX6>m8#g{ zX4=n3yj8}FwW3zou&lEiQYH_}q;klq*oI0!lu_(s=HhHExEfT8GeXnEg4OuDg3nDu zTgx%?GCrcbWi)-Jq8lxFP9~K`_uGZ&$1-{hqpwB&69um@x~dd;j9BXqVo$OBd`}Fj z&nr}`{D7gL=Npka45fWFi$IP zT+)@0{w@YXF^Y^?GO8T0Kfpzs@v@A1kJ#@AIA^><`NH#}7ddGzi|DHm#A(;MgR^}_ zRw7Sg|8^v2%PNaB-$d8jjhR*)osCyz7M4D9;5~svDb~lpL4y|$E?^)@ty=w}Q~z7m z33E7nrI1TkU&<-tD@vD7O~9e4SPZ_PX0O`gQxFUpFX3oqyhiy-IG;kEQ?$RY`Phdg zyiO$)vHbVdh++^~cMv?vAr$iX4^Kz_O{&_LJP%%(nRN0(aP@Pekv&CbJ)Wa`ZZg7c zGOT`%&Q|=E%qpYvzxSZp&t%lQeqT2s|4+)h9;AD2A!4}WV%@=?e#!N4tA?9S2Clg| z>TSWdr=sdF_*L+VC+TdTy)C2p{CO=lU&`rj%U5Wt@uf`Tw|Kcv(*3)OW5&N+IGNb^ zDhHzUWswx1`IZm_5`F=NV6&W!(tvi(I5$Tz-VI}MMmvS&n+04_gAvHesTeJ_`rZvEFXO~1H^DU@ z=|YJn)jSgyEaSgLl3kz`OW77LJo&_Rb4woob~}#Dr$OnAvOZ8oi8!4H|Ja|yeSiA$ zX9%#$_VM3~VZH8yr3m{AL`(rc_P2ET+ETR0s=A?pHVSBSp=SKAR~Uk&2dT75_6;*i(ChL9hl)G%4VjIkHpp*?*^&OL`i z<6YB%Q$n}NHj$kY%22>HBNTVQIpA8!`n`)5@8jrcY}qBboTKd70TF#q_1?gAzT6m?m;~fYCwEMKdAaFAih0j)ywa>&dGeyXsZ&?4Y zX&2y?UGfHLWs{nNjqUcsw>St~eam5vox&6gU-pB++{R_&kIcX+I0z-$ANc+Mc%8uP ztq5NSS5XS|tP1NS?XcVvbhf}MDo|`fo-4P(-VG0Zg1T43^}F~x3~3y7#xVaK-wYGz z8kJU3(ZGDJDJZOEw@^{f7a-Ucucf-JW8LD736|wzJv7}GS$8ZErv`Aq%@$dIED=(Z zvmXN#K0)xe{ehZD??8|yRcBhzHUKSTN(iquX(RB$TOcRtC-#gR$gK#9L4n;zHKXykhk`7HsG208FyP<23~~ehbCn-RkVE2K1E!{@styOQ8+7QoaQC z;a%|kGiv)Id>e(8?=$f4KDe?K`P(V4ctZiuKM|(fL22ie1FT7N0}XNp;u!md23Ct& zV}cxHY=)ElXyc?o&&Gxf!su>)pg|QcG_Xp5m(wgcj37%?q!OrzI?S%8BJv9jEcO2T z&)W75s&`Eg@(T@eD$BAU$rNNsO~v~cf-FxFAE>Fv%Ma`TlT#+vGdx~?VDs`=415{9 ztfqYqI|(Is)Db)8p$S{zDlB3{w~Z6y$FlwmpP-Llt)I+zcB(cEe?FGyoRA&CA7y>w z(CV`h+Xh$BRhjYjtRv-za?orC-ti+8P{4Y39xS-+zie9odj)*1hJO`v^`UE-B>S+r Py2JWS^DSb+1={}tKgh^X diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources deleted file mode 100644 index 7a06fe0924269b4f4763fc19ce607107a225095d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsg@^UE$m*y!1rxqv}7%3PTS{a*I znHnoN1&1gY85o%JawX@aCKkD*=9DDH=NF~xr6%WO78IxIC8w0=CFd8V+LjcR0u8~T zDkU|kG+nPW6RIi&WQ=P?L1s~6NoIZ?b^{F!EiBBF%cmERYsd2fEtb`3;-<9v_t>^ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs deleted file mode 100644 index bb305ff00..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 15:20:24 BST 2007 -eclipse.preferences.version=1 -indexer/preferenceScope=0 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs deleted file mode 100644 index 1c0fdf149..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 15:19:23 BST 2007 -org.eclipse.cdt.debug.core.cDebug.common_source_containers=\r\n\r\n\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs deleted file mode 100644 index 962a2b7ac..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Sun Aug 19 23:06:50 BST 2007 -pref_state_memento.org.eclipse.cdt.debug.ui.ModulesView=\r\n -eclipse.preferences.version=1 -org.eclipse.debug.ui.DebugView.org.eclipse.cdt.debug.ui.cDebug.show_full_paths=true -org.eclipse.debug.ui.BreakpointView.org.eclipse.cdt.debug.ui.cDebug.show_full_paths=true diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index aa0ab5b81..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Sep 02 21:22:35 BST 2007 -eclipse.preferences.version=1 -properties/RTOSDemo.null.976634949/0.1109417601=\#\r\n\#Sun Sep 02 21\:22\:35 BST 2007\r\n0.1109417601\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1502006385\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1021181093\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.164584712\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.260784574\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.1816209921\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\n diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 8a970dac4..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Thu Aug 23 20:22:58 BST 2007 -useQuickDiffPrefPage=true -closeBrackets=false -ensureNewlineAtEOF=true -useAnnotationsPrefPage=true -closeAngularBrackets=false -eclipse.preferences.version=1 -org.eclipse.cdt.ui.text.templates.custom= -hoverModifierMasks=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.ui.CSourceHover;131072;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;0;org.eclipse.cdt.ui.CDocHover;0;org.eclipse.cdt.ui.AnnotationHover;0; -hoverModifiers=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.ui.CSourceHover;Shift;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;\!0;org.eclipse.cdt.ui.CDocHover;\!0;org.eclipse.cdt.ui.AnnotationHover;\!0; -closeBraces=false -closeStrings=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 242e94194..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Fri Aug 31 14:25:00 BST 2007 -version=1 -eclipse.preferences.version=1 -pathvariable.FreeRTOS_ROOT=C\:/E/Dev/FreeRTOS -description.autobuilding=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs deleted file mode 100644 index 205a07217..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Sep 02 17:49:35 BST 2007 -prefWatchExpressions=\r\n\r\n\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs deleted file mode 100644 index 53bcfe87a..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Sun Sep 02 17:49:35 BST 2007 -org.eclipse.debug.ui.PREF_FILTER_WORKING_SETS=false -org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n -org.eclipse.debug.ui.BreakpointView+org.eclipse.debug.ui.ShowSupportedBreakpointsAction=true -pref_state_memento.org.eclipse.debug.ui.VariableView=\r\n -pref_state_memento.org.eclipse.debug.ui.RegisterView=\r\n -pref_state_memento.org.eclipse.debug.ui.ExpressionView=\r\n -org.eclipse.debug.ui.PREF_FILTER_LAUNCH_CLOSED=false -preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane| -org.eclipse.debug.ui.PREF_FILTER_LAUNCH_DELETED=false -eclipse.preferences.version=1 -org.eclipse.debug.ui.user_view_bindings=\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs deleted file mode 100644 index 8d1b31164..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs +++ /dev/null @@ -1,7 +0,0 @@ -#Sun Aug 26 17:32:13 BST 2007 -browser.x=177 -browser.w=1024 -eclipse.preferences.version=1 -browser.h=768 -browser.maximized=false -browser.y=128 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs deleted file mode 100644 index 2426c2b79..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 19:39:29 BST 2007 -org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs deleted file mode 100644 index 06f8f1043..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Fri Aug 31 18:19:04 BST 2007 -eclipse.preferences.version=1 -org.eclipse.team.ui.first_time=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs deleted file mode 100644 index 1affd268e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 20:45:57 BST 2007 -eclipse.preferences.version=1 -overviewRuler_migration=migrated_3.1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs deleted file mode 100644 index b6611b723..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Fri Aug 31 14:27:00 BST 2007 -eclipse.preferences.version=1 -tipsAndTricks=true -platformState=1187207632230 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs deleted file mode 100644 index 3e5b2b17d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 20:45:58 BST 2007 -eclipse.preferences.version=1 -showIntro=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs deleted file mode 100644 index 06cd1e9cd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Mon Aug 20 21:59:49 BST 2007 -eclipse.preferences.version=1 -org.eclipse.ui.commands=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch deleted file mode 100644 index 4175eca53..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch deleted file mode 100644 index f70d8f970..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch deleted file mode 100644 index acc651f5b..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml deleted file mode 100644 index 4b1222134..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml +++ /dev/null @@ -1,34 +0,0 @@ - -
-
- - - - - -
-
- - - - - - - - -
-
- - - - - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml deleted file mode 100644 index 598b376c8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml deleted file mode 100644 index 1ef2b05b5..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref deleted file mode 100644 index fc158177d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref +++ /dev/null @@ -1,2 +0,0 @@ -#Sun Aug 26 17:54:18 BST 2007 -__DEFAULT__=true diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist deleted file mode 100644 index 713e72168..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Aug 26 17:36:29 BST 2007 -__DEFAULT__=false -org.eclipse.help.ui.localSearch.master=true -expression=relative path diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist deleted file mode 100644 index 197837b95..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Aug 26 17:29:25 BST 2007 -__DEFAULT__=false -org.eclipse.help.ui.localSearch.master=true -expression=working set diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist deleted file mode 100644 index a88e15eb8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Aug 26 17:54:21 BST 2007 -__DEFAULT__=false -org.eclipse.help.ui.localSearch.master=true -expression=working sets diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml deleted file mode 100644 index ac671478c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - -
-
- -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml deleted file mode 100644 index 839aca5ed..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml +++ /dev/null @@ -1,46 +0,0 @@ - -
-
- -
-
- - - - - -
-
- - - - - - - - -
-
- -
-
- - - - -
- - - - - - - - - -
-
-
- -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml deleted file mode 100644 index 1df8b48c3..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml deleted file mode 100644 index 127582b33..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ /dev/null @@ -1,26 +0,0 @@ - -
-
- - -
-
-
-
-
-
- - - - - -
-
- - - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml deleted file mode 100644 index d3014f5c1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml +++ /dev/null @@ -1,4 +0,0 @@ - -
- -
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml deleted file mode 100644 index ec032bd0b..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml +++ /dev/null @@ -1,38 +0,0 @@ - -
-
- - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml deleted file mode 100644 index 77beade3e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - -
-
- - -
-
- - - - -
-
- - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml deleted file mode 100644 index 01621f472..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ /dev/null @@ -1,530 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml deleted file mode 100644 index ce2a93059..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml deleted file mode 100644 index 64561b65c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml deleted file mode 100644 index 86928e08c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - -
-
-
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini deleted file mode 100644 index c51ff745b..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.core.runtime=1 \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject deleted file mode 100644 index bbcae405f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project deleted file mode 100644 index b3776decb..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project +++ /dev/null @@ -1,97 +0,0 @@ - - - RTOSDemo - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo} - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - false - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - ?children? - ?name?=outputEntries\|?children?=?name?=entry\\\\\\\\\\\\\\\|\\\\\\\|\|| - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - - - Common Demo Files - 2 - FreeRTOS_ROOT/Demo/Common - - - FreeRTOS.org Source - 2 - FreeRTOS_ROOT/Source - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index a9f7e81cf..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 20:36:58 BST 2007 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 5de383482..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include "lpc23xx.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -/* Value to use on old rev '-' devices. */ -//#define configPINSEL2_VALUE 0x50151105 - -/* Value to use on rev 'A' and newer devices. */ -//#define configPINSEL2_VALUE 0x50150105 - -#ifndef configPINSEL2_VALUE - #error Please uncomment one of the two configPINSEL2_VALUE definitions above, depending on the revision of the LPC2000 device being used. -#endif - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 48000000 ) /* =12Mhz xtal multiplied by 5 using the PLL. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 4 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 104 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 18 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - - -#endif /* FREERTOS_CONFIG_H */ - - -#ifndef sbi -#define sbi(x,y) x|=(1 << (y)) -#endif - -#ifndef cbi -#define cbi(x,y) x&=~(1 << (y)) -#endif - -#ifndef tstb -#define tstb(x,y) (x & (1 << (y)) ? 1 : 0) -#endif - -#ifndef toggle -#define toggle(x,y) x^=(1 << (y)) -#endif - -#ifndef BIT -#define BIT(x) (1 << (x)) - -typedef struct -{ - long xColumn; - char *pcMessage; -} xLCDMessage; - -#endif diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c deleted file mode 100644 index 657a63fc5..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c +++ /dev/null @@ -1,391 +0,0 @@ -/***************************************************************************** - * - * Project : lwIP Web - * Subproject : - * Name : portlcd.c - * Function : Routines for LCD - * Designer : K. Sterckx - * Creation date : 22/01/2007 - * Compiler : GNU ARM - * Processor : LPC2368 - * Last update : - * Last updated by : - * History : - * based on example code from NXP - * - ************************************************************************ - * - * This code is used to place text on the LCD. - * - ************************************************************************/ - -#include "portlcd.h" -#include "FreeRTOS.h" -#include "task.h" - -/* Please note, on old MCB2300 board, the LCD_E bit is p1.30, on the new board -it's p1.31, please check the schematic carefully, and change LCD_CTRL and LCD_E -accordingly if you have a different board. */ - -/* LCD IO definitions */ -#define LCD_E 0x80000000 /* Enable control pin */ -#define LCD_RW 0x20000000 /* Read/Write control pin */ -#define LCD_RS 0x10000000 /* Data/Instruction control */ -#define LCD_CTRL 0xB0000000 /* Control lines mask */ -#define LCD_DATA 0x0F000000 /* Data lines mask */ - -/* Local variables */ -static unsigned int lcd_ptr; - -/* 8 user defined characters to be loaded into CGRAM (used for bargraph) */ -static const unsigned char UserFont[8][8] = { - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 }, - { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 }, - { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C }, - { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E }, - { 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } -}; - -/* Local Function Prototypes */ -static void lcd_write( unsigned int c ); -static void lcd_write_4bit( unsigned int c ); -static unsigned int lcd_read_stat( void ); -static void lcd_write_cmd( unsigned int c ); -static void lcd_write_data( unsigned int d ); -static void lcd_wait_busy( void ); - - -/****************************************************************************** -** Function name: lcd_write_4bit -** -** Descriptions: -** -** parameters: four bits to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write_4bit(unsigned int c) -{ - /* Write a 4-bit command to LCD controller. */ - FIO1DIR |= LCD_DATA | LCD_CTRL; - FIO1CLR = LCD_RW | LCD_DATA; - FIO1SET = (c & 0xF) << 24; - FIO1SET = LCD_E; - vTaskDelay(0); - FIO1CLR = LCD_E; - vTaskDelay(0); - return; -} - -/****************************************************************************** -** Function name: lcd_write -** -** Descriptions: -** -** parameters: word to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write(unsigned int c) -{ - /* Write data/command to LCD controller. */ - lcd_write_4bit (c >> 4); - lcd_write_4bit (c); - return; -} - -/****************************************************************************** -** Function name: lcd_read_stat -** -** Descriptions: -** -** parameters: None -** Returned value: status -** -******************************************************************************/ -static unsigned int lcd_read_stat(void) -{ - /* Read status of LCD controller (ST7066) */ - unsigned int stat; - - FIO1DIR &= ~LCD_DATA; - FIO1CLR = LCD_RS; - FIO1SET = LCD_RW; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat = (FIO1PIN >> 20) & 0xF0; - FIO1CLR = LCD_E; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat |= (FIO1PIN >> 24) & 0xF; - FIO1CLR = LCD_E; - return (stat); -} - -/****************************************************************************** -** Function name: lcd_wait_busy -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -static void lcd_wait_busy(void) -{ - /* Wait until LCD controller (ST7066) is busy. */ - unsigned int stat; - - do - { - stat = lcd_read_stat(); - } - while (stat & 0x80); /* Wait for busy flag */ - - return; -} - -/****************************************************************************** -** Function name: lcd_write_cmd -** -** Descriptions: -** -** parameters: command word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_cmd(unsigned int c) -{ - /* Write command to LCD controller. */ - lcd_wait_busy(); - FIO1CLR = LCD_RS; - lcd_write(c); - return; -} - -/****************************************************************************** -** Function name: lcd_write_data -** -** Descriptions: -** -** parameters: data word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_data(unsigned int d) -{ - /* Write data to LCD controller. */ - lcd_wait_busy(); - FIO1SET = LCD_RS; - lcd_write(d); - return; -} - -/****************************************************************************** -** Function name: LCD_init -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_init(void) -{ - /* Initialize the ST7066 LCD controller to 4-bit mode. */ - PINSEL3 = 0x00000000; -#if USE_FIO - SCS |= 0x00000001;/* set GPIOx to use Fast I/O */ -#endif - FIO1DIR |= LCD_CTRL | LCD_DATA; - FIO1CLR = LCD_RW | LCD_RS | LCD_DATA; - - lcd_write_4bit(0x3); /* Select 4-bit interface */ - vTaskDelay(100); - lcd_write_4bit(0x3); - vTaskDelay(100); - lcd_write_4bit(0x3); - lcd_write_4bit(0x2); - - lcd_write_cmd(0x28); /* 2 lines, 5x8 character matrix */ - lcd_write_cmd(0x0e); /* Display ctrl:Disp/Curs/Blnk=ON */ - lcd_write_cmd(0x06); /* Entry mode: Move right, no shift */ - - LCD_load( (unsigned char *)&UserFont, sizeof (UserFont) ); - LCD_cls(); - return; -} - -/****************************************************************************** -** Function name: LCD_load -** -** Descriptions: -** -** parameters: pointer to the buffer and counter -** Returned value: None -** -******************************************************************************/ -void LCD_load(unsigned char *fp, unsigned int cnt) -{ - /* Load user-specific characters into CGRAM */ - unsigned int i; - - lcd_write_cmd( 0x40 ); /* Set CGRAM address counter to 0 */ - for (i = 0; i < cnt; i++, fp++) - { - lcd_write_data( *fp ); - } - return; -} - -/****************************************************************************** -** Function name: LCD_gotoxy -** -** Descriptions: -** -** parameters: pixel X and Y -** Returned value: None -** -******************************************************************************/ -void LCD_gotoxy(unsigned int x, unsigned int y) -{ - /* Set cursor position on LCD display. Left corner: 1,1, right: 16,2 */ - unsigned int c; - - c = --x; - if (--y) - { - c |= 0x40; - } - lcd_write_cmd (c | 0x80); - lcd_ptr = y*16 + x; - return; -} - -/****************************************************************************** -** Function name: LCD_cls -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cls(void) -{ - /* Clear LCD display, move cursor to home position. */ - lcd_write_cmd (0x01); - LCD_gotoxy (1,1); - return; -} - -/****************************************************************************** -** Function name: LCD_cur_off -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cur_off(void) -{ - /* Switch off LCD cursor. */ - lcd_write_cmd(0x0c); - return; -} - - -/****************************************************************************** -** Function name: LCD_on -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_on(void) -{ - /* Switch on LCD and enable cursor. */ - lcd_write_cmd (0x0e); - return; -} - -/****************************************************************************** -** Function name: LCD_putc -** -** Descriptions: -** -** parameters: unsigned char character -** Returned value: None -** -******************************************************************************/ -void LCD_putc(unsigned char c) -{ - /* Print a character to LCD at current cursor position. */ - if (lcd_ptr == 16) - { - lcd_write_cmd (0xc0); - } - lcd_write_data(c); - lcd_ptr++; - return; -} - -/****************************************************************************** -** Function name: LCD_puts -** -** Descriptions: -** -** parameters: pointer to the buffer -** Returned value: None -** -******************************************************************************/ -void LCD_puts(char *sp) -{ - /* Print a string to LCD display. */ - while (*sp) - { - LCD_putc (*sp++); - } - return; -} - -/****************************************************************************** -** Function name: LCD_bargraph -** -** Descriptions: -** -** parameters: value and size -** Returned value: None -** -******************************************************************************/ -void LCD_bargraph(unsigned int val, unsigned int size) -{ - /* Print a bargraph to LCD display. */ - /* - val: value 0..100 % */ - /* - size: size of bargraph 1..16 */ - unsigned int i; - - val = val * size / 20; /* Display matrix 5 x 8 pixels */ - for (i = 0; i < size; i++) - { - if (val > 5) - { - LCD_putc(5); - val -= 5; - } - else - { - LCD_putc(val); - break; - } - } - return; -} diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h deleted file mode 100644 index 76962538f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h +++ /dev/null @@ -1,31 +0,0 @@ -/***************************************************************************** - * rtc.h: Header file for NXP LPC23xx/24xx Family Microprocessors - * - * Copyright(C) 2006, NXP Semiconductor - * All rights reserved. - * - * History - * 2006.07.13 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __PORTLCD_H -#define __PORTLCD_H - -extern void LCD_init(void); -extern void LCD_load(unsigned char *fp, unsigned int cnt); -extern void LCD_gotoxy(unsigned int x, unsigned int y); -extern void LCD_cls(void); -extern void LCD_cur_off(void); -extern void LCD_on(void); -extern void LCD_putc(unsigned char c); -extern void LCD_puts(char *sp); -extern void LCD_bargraph(unsigned int val, unsigned int size); - -extern void LCD_putnibble(unsigned char nibble); -extern void LCD_puthexbyte(unsigned char abyte); - - -#endif /* end __PORTLCD_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile deleted file mode 100644 index 578c1b3d6..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile +++ /dev/null @@ -1,128 +0,0 @@ -#/* -# * FreeRTOS V202011.00 -# * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# * -# * Permission is hereby granted, free of charge, to any person obtaining a copy of -# * this software and associated documentation files (the "Software"), to deal in -# * the Software without restriction, including without limitation the rights to -# * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -# * the Software, and to permit persons to whom the Software is furnished to do so, -# * subject to the following conditions: -# * -# * The above copyright notice and this permission notice shall be included in all -# * copies or substantial portions of the Software. -# * -# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -# * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -# * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# * -# * http://www.FreeRTOS.org -# * http://aws.amazon.com/freertos -# * -# * 1 tab == 4 spaces! -# */ - - -RTOS_SOURCE_DIR=../../../Source -DEMO_COMMON_DIR=../../Common/Minimal -DEMO_INCLUDE_DIR=../../Common/include -UIP_COMMON_DIR=../../Common/ethernet/uIP/uip-1.0/uip - -CC=arm-elf-gcc -OBJCOPY=arm-elf-objcopy -LDSCRIPT=lpc2368.ld - -LINKER_FLAGS=-mthumb -nostartfiles -Xlinker -oRTOSDemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map - -DEBUG=-g -OPTIM=-O0 - - -CFLAGS= $(DEBUG) \ - $(OPTIM) \ - -T$(LDSCRIPT) \ - -I . \ - -I $(RTOS_SOURCE_DIR)/include \ - -I $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx \ - -I $(DEMO_INCLUDE_DIR) \ - -I ./webserver \ - -I $(UIP_COMMON_DIR) \ - -D ROWLEY_LPC23xx \ - -D THUMB_INTERWORK \ - -mcpu=arm7tdmi \ - -D PACK_STRUCT_END=__attribute\(\(packed\)\) \ - -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \ - -fomit-frame-pointer \ - -mthumb-interwork \ - -fno-dwarf2-cfi-asm \ - -fno-strict-aliasing - -THUMB_SOURCE= \ - main.c \ - ./ParTest/ParTest.c \ - ./LCD/portlcd.c \ - $(DEMO_COMMON_DIR)/BlockQ.c \ - $(DEMO_COMMON_DIR)/blocktim.c \ - $(DEMO_COMMON_DIR)/flash.c \ - $(DEMO_COMMON_DIR)/integer.c \ - $(DEMO_COMMON_DIR)/GenQTest.c \ - $(DEMO_COMMON_DIR)/QPeek.c \ - $(DEMO_COMMON_DIR)/dynamic.c \ - ./webserver/uIP_Task.c \ - ./webserver/emac.c \ - ./webserver/httpd.c \ - ./webserver/httpd-cgi.c \ - ./webserver/httpd-fs.c \ - ./webserver/http-strings.c \ - $(UIP_COMMON_DIR)/uip_arp.c \ - $(UIP_COMMON_DIR)/psock.c \ - $(UIP_COMMON_DIR)/timer.c \ - $(UIP_COMMON_DIR)/uip.c \ - $(RTOS_SOURCE_DIR)/list.c \ - $(RTOS_SOURCE_DIR)/queue.c \ - $(RTOS_SOURCE_DIR)/tasks.c \ - $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx/port.c \ - $(RTOS_SOURCE_DIR)/portable/MemMang/heap_2.c \ - syscalls.c - -ARM_SOURCE= \ - $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx/portISR.c \ - ./webserver/EMAC_ISR.c - -THUMB_OBJS = $(THUMB_SOURCE:.c=.o) -ARM_OBJS = $(ARM_SOURCE:.c=.o) - - -all: RTOSDemo.bin - -RTOSDemo.bin : RTOSDemo.hex - $(OBJCOPY) RTOSDemo.elf -O binary RTOSDemo.bin - -RTOSDemo.hex : RTOSDemo.elf - $(OBJCOPY) RTOSDemo.elf -O ihex RTOSDemo.hex - -RTOSDemo.elf : $(THUMB_OBJS) $(ARM_OBJS) boot.s Makefile - $(CC) $(CFLAGS) $(ARM_OBJS) $(THUMB_OBJS) $(LIBS) boot.s $(LINKER_FLAGS) - -$(THUMB_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h - $(CC) -c $(CFLAGS) -mthumb $< -o $@ - -$(ARM_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h - $(CC) -c $(CFLAGS) $< -o $@ - -clean : - rm $(THUMB_OBJS) - rm $(ARM_OBJS) - touch Makefile - rm RTOSDemo.elf - rm RTOSDemo.hex - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c deleted file mode 100644 index 2f79f44e9..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstFIRST_IO ( ( unsigned long ) 0x01 ) -#define partstNUM_LEDS ( 8 ) -#define partstALL_OUTPUTS_OFF ( ( unsigned long ) 0xff ) - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - PINSEL10 = 0; - FIO2DIR = 0x000000FF; - FIO2MASK = 0x00000000; - FIO2CLR = 0xFF; - SCS |= (1<<0); //fast mode for port 0 and 1 - - FIO2CLR = partstALL_OUTPUTS_OFF; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned long ulLED = partstFIRST_IO; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port */ - ulLED <<= ( unsigned long ) uxLED; - - /* Set of clear the output. */ - if( xValue ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO, ulCurrentState; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED - attached. */ - ulLED <<= ( unsigned long ) uxLED; - - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = FIO2PIN; - if( ulCurrentState & ulLED ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} - -/*-----------------------------------------------------------*/ -unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO; - - ulLED <<= ( unsigned long ) uxLED; - - return ( FIO2PIN & ulLED ); -} - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s deleted file mode 100644 index eafdd9345..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s +++ /dev/null @@ -1,157 +0,0 @@ - /* Sample initialization file */ - - .extern main - .extern exit - - .text - .code 32 - - - .align 0 - - .extern __bss_beg__ - .extern __bss_end__ - .extern __stack_end__ - .extern __data_beg__ - .extern __data_end__ - .extern __data+beg_src__ - - .global start - .global endless_loop - - /* Stack Sizes */ - .set UND_STACK_SIZE, 0x00000004 - .set ABT_STACK_SIZE, 0x00000004 - .set FIQ_STACK_SIZE, 0x00000004 - .set IRQ_STACK_SIZE, 0X00000100 - .set SVC_STACK_SIZE, 0x00000100 - - /* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */ - .set MODE_USR, 0x10 /* User Mode */ - .set MODE_FIQ, 0x11 /* FIQ Mode */ - .set MODE_IRQ, 0x12 /* IRQ Mode */ - .set MODE_SVC, 0x13 /* Supervisor Mode */ - .set MODE_ABT, 0x17 /* Abort Mode */ - .set MODE_UND, 0x1B /* Undefined Mode */ - .set MODE_SYS, 0x1F /* System Mode */ - - .equ I_BIT, 0x80 /* when I bit is set, IRQ is disabled */ - .equ F_BIT, 0x40 /* when F bit is set, FIQ is disabled */ - - -start: -_start: -_mainCRTStartup: - - /* Setup a stack for each mode - note that this only sets up a usable stack - for system/user, SWI and IRQ modes. Also each mode is setup with - interrupts initially disabled. */ - ldr r0, .LC6 - msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */ - mov sp, r0 - sub r0, r0, #UND_STACK_SIZE - msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */ - mov sp, r0 - sub r0, r0, #ABT_STACK_SIZE - msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */ - mov sp, r0 - sub r0, r0, #FIQ_STACK_SIZE - msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */ - mov sp, r0 - sub r0, r0, #IRQ_STACK_SIZE - msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */ - mov sp, r0 - sub r0, r0, #SVC_STACK_SIZE - msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* System Mode */ - mov sp, r0 - - /* We want to start in supervisor mode. Operation will switch to system - mode when the first task starts. */ - msr CPSR_c, #MODE_SVC|I_BIT|F_BIT - - /* Clear BSS. */ - - mov a2, #0 /* Fill value */ - mov fp, a2 /* Null frame pointer */ - mov r7, a2 /* Null frame pointer for Thumb */ - - ldr r1, .LC1 /* Start of memory block */ - ldr r3, .LC2 /* End of memory block */ - subs r3, r3, r1 /* Length of block */ - beq .end_clear_loop - mov r2, #0 - -.clear_loop: - strb r2, [r1], #1 - subs r3, r3, #1 - bgt .clear_loop - -.end_clear_loop: - - /* Initialise data. */ - - ldr r1, .LC3 /* Start of memory block */ - ldr r2, .LC4 /* End of memory block */ - ldr r3, .LC5 - subs r3, r3, r1 /* Length of block */ - beq .end_set_loop - -.set_loop: - ldrb r4, [r2], #1 - strb r4, [r1], #1 - subs r3, r3, #1 - bgt .set_loop - -.end_set_loop: - - mov r0, #0 /* no arguments */ - mov r1, #0 /* no argv either */ - - bl main - -endless_loop: - b endless_loop - - - .align 0 - - .LC1: - .word __bss_beg__ - .LC2: - .word __bss_end__ - .LC3: - .word __data_beg__ - .LC4: - .word __data_beg_src__ - .LC5: - .word __data_end__ - .LC6: - .word __stack_end__ - - - /* Setup vector table. Note that undf, pabt, dabt, fiq just execute - a null loop. */ - -.section .startup,"ax" - .code 32 - .align 0 - - b _start /* reset - _start */ - ldr pc, _undf /* undefined - _undf */ - ldr pc, _swi /* SWI - _swi */ - ldr pc, _pabt /* program abort - _pabt */ - ldr pc, _dabt /* data abort - _dabt */ - nop /* reserved */ - ldr pc, [pc,#-0x120] /* IRQ - read the VIC */ - ldr pc, _fiq /* FIQ - _fiq */ - -_undf: .word __undf /* undefined */ -_swi: .word vPortYieldProcessor /* SWI */ -_pabt: .word __pabt /* program abort */ -_dabt: .word __dabt /* data abort */ -_fiq: .word __fiq /* FIQ */ - -__undf: b . /* undefined */ -__pabt: b . /* program abort */ -__dabt: b . /* data abort */ -__fiq: b . /* FIQ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld deleted file mode 100644 index f15d232ea..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld +++ /dev/null @@ -1,71 +0,0 @@ -MEMORY -{ - flash : ORIGIN = 0x00000000, LENGTH = 500K - ram : ORIGIN = 0x40000000, LENGTH = 32K - usbram : ORIGIN = 0x7FD00000, LENGTH = 8K - ethram : ORIGIN = 0x7FE00000, LENGTH = 16K -} - -__stack_end__ = 0x40000000 + 32K - 4; - - -SECTIONS -{ - - . = 0; - startup : { *(.startup)} >flash - - prog : - { - *(.text) - *(.rodata) - *(.rodata*) - *(.glue_7) - *(.glue_7t) - KEEP(*(.eh_frame)) - } >flash - - __end_of_text__ = .; - - .data : - { - __data_beg__ = .; - __data_beg_src__ = __end_of_text__; - *(.data) - __data_end__ = .; - } >ram AT>flash - - .bss : - { - __bss_beg__ = .; - *(.bss) - } >ram - - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); - _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; - - .usbram (NOLOAD): - { - __usbram_beg__ = .; - *(.dmaram) - __usbram_end__ = .; - } >usbram - - .ethram (NOLOAD): - { - __ethram_beg__ = .; - *(.ethram) - __ethram_end__ = .; - } >ethram - - -} - . = ALIGN(32 / 8); - _end = .; - - PROVIDE (end = .); - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h deleted file mode 100644 index d3587f553..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h +++ /dev/null @@ -1,1138 +0,0 @@ -/***************************************************************************** - * - * Project : lwIP Web - * Subproject : - * Name : LPC23xx.h - * Function : register definitions - * Designer : K. Sterckx - * Creation date : 22/01/2007 - * Compiler : GNU ARM - * Processor : LPC23xx - * Last update : - * Last updated by : - * History : - * - ***************************************************************************** - * - * Hardware specific macro's and defines - * - ****************************************************************************/ - -#ifndef __LPC23xx_H -#define __LPC23xx_H - -/* Vectored Interrupt Controller (VIC) */ -#define VIC_BASE_ADDR 0xFFFFF000 -#define VICIRQStatus (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x000)) -#define VICFIQStatus (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x004)) -#define VICRawIntr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x008)) -#define VICIntSelect (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x00C)) -#define VICIntEnable (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x010)) -#define VICIntEnClr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x014)) -#define VICSoftInt (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x018)) -#define VICSoftIntClr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x01C)) -#define VICProtection (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x020)) -#define VICSWPrioMask (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x024)) - -#define VICVectAddr0 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x100)) -#define VICVectAddr1 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x104)) -#define VICVectAddr2 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x108)) -#define VICVectAddr3 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x10C)) -#define VICVectAddr4 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x110)) -#define VICVectAddr5 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x114)) -#define VICVectAddr6 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x118)) -#define VICVectAddr7 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x11C)) -#define VICVectAddr8 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x120)) -#define VICVectAddr9 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x124)) -#define VICVectAddr10 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x128)) -#define VICVectAddr11 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x12C)) -#define VICVectAddr12 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x130)) -#define VICVectAddr13 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x134)) -#define VICVectAddr14 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x138)) -#define VICVectAddr15 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x13C)) -#define VICVectAddr16 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x140)) -#define VICVectAddr17 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x144)) -#define VICVectAddr18 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x148)) -#define VICVectAddr19 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x14C)) -#define VICVectAddr20 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x150)) -#define VICVectAddr21 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x154)) -#define VICVectAddr22 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x158)) -#define VICVectAddr23 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x15C)) -#define VICVectAddr24 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x160)) -#define VICVectAddr25 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x164)) -#define VICVectAddr26 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x168)) -#define VICVectAddr27 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x16C)) -#define VICVectAddr28 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x170)) -#define VICVectAddr29 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x174)) -#define VICVectAddr30 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x178)) -#define VICVectAddr31 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x17C)) - -/* The name convention below is from previous LPC2000 family MCUs, in LPC230x, -these registers are known as "VICVectPriority(x)". */ -#define VICVectCntl0 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x200)) -#define VICVectCntl1 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x204)) -#define VICVectCntl2 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x208)) -#define VICVectCntl3 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x20C)) -#define VICVectCntl4 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x210)) -#define VICVectCntl5 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x214)) -#define VICVectCntl6 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x218)) -#define VICVectCntl7 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x21C)) -#define VICVectCntl8 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x220)) -#define VICVectCntl9 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x224)) -#define VICVectCntl10 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x228)) -#define VICVectCntl11 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x22C)) -#define VICVectCntl12 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x230)) -#define VICVectCntl13 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x234)) -#define VICVectCntl14 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x238)) -#define VICVectCntl15 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x23C)) -#define VICVectCntl16 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x240)) -#define VICVectCntl17 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x244)) -#define VICVectCntl18 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x248)) -#define VICVectCntl19 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x24C)) -#define VICVectCntl20 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x250)) -#define VICVectCntl21 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x254)) -#define VICVectCntl22 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x258)) -#define VICVectCntl23 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x25C)) -#define VICVectCntl24 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x260)) -#define VICVectCntl25 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x264)) -#define VICVectCntl26 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x268)) -#define VICVectCntl27 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x26C)) -#define VICVectCntl28 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x270)) -#define VICVectCntl29 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x274)) -#define VICVectCntl30 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x278)) -#define VICVectCntl31 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x27C)) - -#define VICVectAddr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0xF00)) - - -/* Pin Connect Block */ -#define PINSEL_BASE_ADDR 0xE002C000 -#define PINSEL0 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x00)) -#define PINSEL1 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x04)) -#define PINSEL2 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x08)) -#define PINSEL3 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x0C)) -#define PINSEL4 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x10)) -#define PINSEL5 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x14)) -#define PINSEL6 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x18)) -#define PINSEL7 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x1C)) -#define PINSEL8 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x20)) -#define PINSEL9 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x24)) -#define PINSEL10 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x28)) - -#define PINMODE0 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x40)) -#define PINMODE1 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x44)) -#define PINMODE2 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x48)) -#define PINMODE3 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x4C)) -#define PINMODE4 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x50)) -#define PINMODE5 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x54)) -#define PINMODE6 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x58)) -#define PINMODE7 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x5C)) -#define PINMODE8 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x60)) -#define PINMODE9 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x64)) - -/* General Purpose Input/Output (GPIO) */ -#define GPIO_BASE_ADDR 0xE0028000 -#define IOPIN0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x00)) -#define IOSET0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x04)) -#define IODIR0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x08)) -#define IOCLR0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x0C)) -#define IOPIN1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x10)) -#define IOSET1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x14)) -#define IODIR1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x18)) -#define IOCLR1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x1C)) - -/* GPIO Interrupt Registers */ -#define IO0_INT_EN_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x90)) -#define IO0_INT_EN_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x94)) -#define IO0_INT_STAT_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x84)) -#define IO0_INT_STAT_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x88)) -#define IO0_INT_CLR (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x8C)) - -#define IO2_INT_EN_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xB0)) -#define IO2_INT_EN_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xB4)) -#define IO2_INT_STAT_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xA4)) -#define IO2_INT_STAT_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xA8)) -#define IO2_INT_CLR (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xAC)) - -#define IO_INT_STAT (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x80)) - -#define PARTCFG_BASE_ADDR 0x3FFF8000 -#define PARTCFG (*(volatile unsigned int *)(PARTCFG_BASE_ADDR + 0x00)) - -/* Fast I/O setup */ -#define FIO_BASE_ADDR 0x3FFFC000 -#define FIO0DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x00)) -#define FIO0MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x10)) -#define FIO0PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x14)) -#define FIO0SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x18)) -#define FIO0CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x1C)) - -#define FIO1DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x20)) -#define FIO1MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x30)) -#define FIO1PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x34)) -#define FIO1SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x38)) -#define FIO1CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x3C)) - -#define FIO2DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x40)) -#define FIO2MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x50)) -#define FIO2PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x54)) -#define FIO2SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x58)) -#define FIO2CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x5C)) - -#define FIO3DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x60)) -#define FIO3MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x70)) -#define FIO3PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x74)) -#define FIO3SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x78)) -#define FIO3CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x7C)) - -#define FIO4DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x80)) -#define FIO4MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x90)) -#define FIO4PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x94)) -#define FIO4SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x98)) -#define FIO4CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x9C)) - -/* FIOs can be accessed through WORD, HALF-WORD or BYTE. */ -#define FIO0DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x01)) -#define FIO1DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x21)) -#define FIO2DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x41)) -#define FIO3DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x61)) -#define FIO4DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x81)) - -#define FIO0DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x02)) -#define FIO1DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x22)) -#define FIO2DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x42)) -#define FIO3DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x62)) -#define FIO4DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x82)) - -#define FIO0DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x03)) -#define FIO1DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x23)) -#define FIO2DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x43)) -#define FIO3DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x63)) -#define FIO4DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x83)) - -#define FIO0DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x04)) -#define FIO1DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x24)) -#define FIO2DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x44)) -#define FIO3DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x64)) -#define FIO4DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x84)) - -#define FIO0DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x00)) -#define FIO1DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x20)) -#define FIO2DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x40)) -#define FIO3DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x60)) -#define FIO4DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x80)) - -#define FIO0DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x02)) -#define FIO1DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x22)) -#define FIO2DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x42)) -#define FIO3DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x62)) -#define FIO4DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x82)) - -#define FIO0MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x10)) -#define FIO1MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x30)) -#define FIO2MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x50)) -#define FIO3MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x70)) -#define FIO4MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x90)) - -#define FIO0MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x11)) -#define FIO1MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x21)) -#define FIO2MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x51)) -#define FIO3MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x71)) -#define FIO4MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x91)) - -#define FIO0MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x12)) -#define FIO1MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x32)) -#define FIO2MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x52)) -#define FIO3MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x72)) -#define FIO4MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x92)) - -#define FIO0MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x13)) -#define FIO1MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x33)) -#define FIO2MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x53)) -#define FIO3MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x73)) -#define FIO4MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x93)) - -#define FIO0MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x10)) -#define FIO1MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x30)) -#define FIO2MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x50)) -#define FIO3MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x70)) -#define FIO4MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x90)) - -#define FIO0MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x12)) -#define FIO1MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x32)) -#define FIO2MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x52)) -#define FIO3MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x72)) -#define FIO4MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x92)) - -#define FIO0PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x14)) -#define FIO1PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x34)) -#define FIO2PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x54)) -#define FIO3PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x74)) -#define FIO4PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x94)) - -#define FIO0PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x15)) -#define FIO1PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x25)) -#define FIO2PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x55)) -#define FIO3PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x75)) -#define FIO4PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x95)) - -#define FIO0PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x16)) -#define FIO1PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x36)) -#define FIO2PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x56)) -#define FIO3PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x76)) -#define FIO4PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x96)) - -#define FIO0PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x17)) -#define FIO1PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x37)) -#define FIO2PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x57)) -#define FIO3PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x77)) -#define FIO4PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x97)) - -#define FIO0PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x14)) -#define FIO1PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x34)) -#define FIO2PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x54)) -#define FIO3PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x74)) -#define FIO4PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x94)) - -#define FIO0PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x16)) -#define FIO1PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x36)) -#define FIO2PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x56)) -#define FIO3PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x76)) -#define FIO4PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x96)) - -#define FIO0SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x18)) -#define FIO1SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x38)) -#define FIO2SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x58)) -#define FIO3SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x78)) -#define FIO4SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x98)) - -#define FIO0SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x19)) -#define FIO1SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x29)) -#define FIO2SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x59)) -#define FIO3SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x79)) -#define FIO4SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x99)) - -#define FIO0SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1A)) -#define FIO1SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3A)) -#define FIO2SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5A)) -#define FIO3SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7A)) -#define FIO4SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9A)) - -#define FIO0SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1B)) -#define FIO1SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3B)) -#define FIO2SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5B)) -#define FIO3SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7B)) -#define FIO4SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9B)) - -#define FIO0SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x18)) -#define FIO1SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x38)) -#define FIO2SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x58)) -#define FIO3SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x78)) -#define FIO4SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x98)) - -#define FIO0SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x1A)) -#define FIO1SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x3A)) -#define FIO2SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x5A)) -#define FIO3SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x7A)) -#define FIO4SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x9A)) - -#define FIO0CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1C)) -#define FIO1CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3C)) -#define FIO2CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5C)) -#define FIO3CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7C)) -#define FIO4CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9C)) - -#define FIO0CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1D)) -#define FIO1CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x2D)) -#define FIO2CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5D)) -#define FIO3CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7D)) -#define FIO4CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9D)) - -#define FIO0CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1E)) -#define FIO1CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3E)) -#define FIO2CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5E)) -#define FIO3CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7E)) -#define FIO4CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9E)) - -#define FIO0CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1F)) -#define FIO1CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3F)) -#define FIO2CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5F)) -#define FIO3CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7F)) -#define FIO4CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9F)) - -#define FIO0CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x1C)) -#define FIO1CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x3C)) -#define FIO2CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x5C)) -#define FIO3CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x7C)) -#define FIO4CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x9C)) - -#define FIO0CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x1E)) -#define FIO1CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x3E)) -#define FIO2CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x5E)) -#define FIO3CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x7E)) -#define FIO4CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x9E)) - - -/* System Control Block(SCB) modules include Memory Accelerator Module, -Phase Locked Loop, VPB divider, Power Control, External Interrupt, -Reset, and Code Security/Debugging */ -#define SCB_BASE_ADDR 0xE01FC000 - -/* Memory Accelerator Module (MAM) */ -#define MAMCR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x000)) -#define MAMTIM (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x004)) -#define MEMMAP (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x040)) - -/* Phase Locked Loop (PLL) */ -#define PLLCON (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x080)) -#define PLLCFG (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x084)) -#define PLLSTAT (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x088)) -#define PLLFEED (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x08C)) - -/* Power Control */ -#define PCON (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x0C0)) -#define PCONP (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x0C4)) - -/* Clock Divider */ -#define APBDIV (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x100)) -#define CCLKCFG (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x104)) -#define USBCLKCFG (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x108)) -#define CLKSRCSEL (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x10C)) -#define PCLKSEL0 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x1A8)) -#define PCLKSEL1 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x1AC)) - -/* External Interrupts */ -#define EXTINT (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x140)) -#define INTWAKE (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x144)) -#define EXTMODE (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x148)) -#define EXTPOLAR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x14C)) - -/* Reset, reset source identification */ -#define RSIR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x180)) - -/* RSID, code security protection */ -#define CSPR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x184)) - -/* AHB configuration */ -#define AHBCFG1 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x188)) -#define AHBCFG2 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x18C)) - -/* System Controls and Status */ -#define SCS (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x1A0)) - -/*MPMC(EMC) registers*/ -#define STATIC_MEM0_BASE 0x80000000 -#define STATIC_MEM1_BASE 0x81000000 -#define STATIC_MEM2_BASE 0x82000000 -#define STATIC_MEM3_BASE 0x83000000 - -#define DYNAMIC_MEM0_BASE 0xA0000000 -#define DYNAMIC_MEM1_BASE 0xB0000000 -#define DYNAMIC_MEM2_BASE 0xC0000000 -#define DYNAMIC_MEM3_BASE 0xD0000000 - -/* External Memory Controller (EMC) */ -#define EMC_BASE_ADDR 0xFFE08000 -#define EMC_CTRL (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x000)) -#define EMC_STAT (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x004)) -#define EMC_CONFIG (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x008)) - -/* Dynamic RAM access registers */ -#define EMC_DYN_CTRL (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x020)) -#define EMC_DYN_RFSH (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x024)) -#define EMC_DYN_RD_CFG (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x028)) -#define EMC_DYN_RP (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x030)) -#define EMC_DYN_RAS (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x034)) -#define EMC_DYN_SREX (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x038)) -#define EMC_DYN_APR (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x03C)) -#define EMC_DYN_DAL (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x040)) -#define EMC_DYN_WR (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x044)) -#define EMC_DYN_RC (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x048)) -#define EMC_DYN_RFC (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x04C)) -#define EMC_DYN_XSR (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x050)) -#define EMC_DYN_RRD (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x054)) -#define EMC_DYN_MRD (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x058)) - -#define EMC_DYN_CFG0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x100)) -#define EMC_DYN_RASCAS0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x104)) -#define EMC_DYN_CFG1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x140)) -#define EMC_DYN_RASCAS1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x144)) -#define EMC_DYN_CFG2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x160)) -#define EMC_DYN_RASCAS2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x164)) -#define EMC_DYN_CFG3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x180)) -#define EMC_DYN_RASCAS3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x184)) - -/* static RAM access registers */ -#define EMC_STA_CFG0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x200)) -#define EMC_STA_WAITWEN0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x204)) -#define EMC_STA_WAITOEN0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x208)) -#define EMC_STA_WAITRD0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x20C)) -#define EMC_STA_WAITPAGE0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x210)) -#define EMC_STA_WAITWR0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x214)) -#define EMC_STA_WAITTURN0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x218)) - -#define EMC_STA_CFG1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x220)) -#define EMC_STA_WAITWEN1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x224)) -#define EMC_STA_WAITOEN1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x228)) -#define EMC_STA_WAITRD1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x22C)) -#define EMC_STA_WAITPAGE1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x230)) -#define EMC_STA_WAITWR1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x234)) -#define EMC_STA_WAITTURN1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x238)) - -#define EMC_STA_CFG2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x240)) -#define EMC_STA_WAITWEN2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x244)) -#define EMC_STA_WAITOEN2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x248)) -#define EMC_STA_WAITRD2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x24C)) -#define EMC_STA_WAITPAGE2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x250)) -#define EMC_STA_WAITWR2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x254)) -#define EMC_STA_WAITTURN2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x258)) - -#define EMC_STA_CFG3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x260)) -#define EMC_STA_WAITWEN3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x264)) -#define EMC_STA_WAITOEN3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x268)) -#define EMC_STA_WAITRD3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x26C)) -#define EMC_STA_WAITPAGE3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x270)) -#define EMC_STA_WAITWR3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x274)) -#define EMC_STA_WAITTURN3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x278)) - -#define EMC_STA_EXT_WAIT (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x880)) - - -/* Timer 0 */ -#define TMR0_BASE_ADDR 0xE0004000 -#define T0IR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x00)) -#define T0TCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x04)) -#define T0TC (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x08)) -#define T0PR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x0C)) -#define T0PC (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x10)) -#define T0MCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x14)) -#define T0MR0 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x18)) -#define T0MR1 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x1C)) -#define T0MR2 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x20)) -#define T0MR3 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x24)) -#define T0CCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x28)) -#define T0CR0 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x2C)) -#define T0CR1 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x30)) -#define T0CR2 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x34)) -#define T0CR3 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x38)) -#define T0EMR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x3C)) -#define T0CTCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x70)) - -/* Timer 1 */ -#define TMR1_BASE_ADDR 0xE0008000 -#define T1IR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x00)) -#define T1TCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x04)) -#define T1TC (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x08)) -#define T1PR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x0C)) -#define T1PC (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x10)) -#define T1MCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x14)) -#define T1MR0 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x18)) -#define T1MR1 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x1C)) -#define T1MR2 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x20)) -#define T1MR3 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x24)) -#define T1CCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x28)) -#define T1CR0 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x2C)) -#define T1CR1 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x30)) -#define T1CR2 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x34)) -#define T1CR3 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x38)) -#define T1EMR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x3C)) -#define T1CTCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x70)) - -/* Timer 2 */ -#define TMR2_BASE_ADDR 0xE0070000 -#define T2IR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x00)) -#define T2TCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x04)) -#define T2TC (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x08)) -#define T2PR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x0C)) -#define T2PC (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x10)) -#define T2MCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x14)) -#define T2MR0 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x18)) -#define T2MR1 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x1C)) -#define T2MR2 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x20)) -#define T2MR3 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x24)) -#define T2CCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x28)) -#define T2CR0 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x2C)) -#define T2CR1 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x30)) -#define T2CR2 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x34)) -#define T2CR3 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x38)) -#define T2EMR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x3C)) -#define T2CTCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x70)) - -/* Timer 3 */ -#define TMR3_BASE_ADDR 0xE0074000 -#define T3IR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x00)) -#define T3TCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x04)) -#define T3TC (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x08)) -#define T3PR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x0C)) -#define T3PC (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x10)) -#define T3MCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x14)) -#define T3MR0 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x18)) -#define T3MR1 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x1C)) -#define T3MR2 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x20)) -#define T3MR3 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x24)) -#define T3CCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x28)) -#define T3CR0 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x2C)) -#define T3CR1 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x30)) -#define T3CR2 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x34)) -#define T3CR3 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x38)) -#define T3EMR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x3C)) -#define T3CTCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x70)) - - -/* Pulse Width Modulator (PWM) */ -#define PWM0_BASE_ADDR 0xE0014000 -#define PWM0IR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x00)) -#define PWM0TCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x04)) -#define PWM0TC (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x08)) -#define PWM0PR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x0C)) -#define PWM0PC (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x10)) -#define PWM0MCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x14)) -#define PWM0MR0 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x18)) -#define PWM0MR1 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x1C)) -#define PWM0MR2 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x20)) -#define PWM0MR3 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x24)) -#define PWM0CCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x28)) -#define PWM0CR0 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x2C)) -#define PWM0CR1 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x30)) -#define PWM0CR2 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x34)) -#define PWM0CR3 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x38)) -#define PWM0EMR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x3C)) -#define PWM0MR4 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x40)) -#define PWM0MR5 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x44)) -#define PWM0MR6 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x48)) -#define PWM0PCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x4C)) -#define PWM0LER (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x50)) -#define PWM0CTCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x70)) - -#define PWM1_BASE_ADDR 0xE0018000 -#define PWM1IR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x00)) -#define PWM1TCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x04)) -#define PWM1TC (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x08)) -#define PWM1PR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x0C)) -#define PWM1PC (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x10)) -#define PWM1MCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x14)) -#define PWM1MR0 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x18)) -#define PWM1MR1 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x1C)) -#define PWM1MR2 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x20)) -#define PWM1MR3 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x24)) -#define PWM1CCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x28)) -#define PWM1CR0 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x2C)) -#define PWM1CR1 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x30)) -#define PWM1CR2 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x34)) -#define PWM1CR3 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x38)) -#define PWM1EMR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x3C)) -#define PWM1MR4 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x40)) -#define PWM1MR5 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x44)) -#define PWM1MR6 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x48)) -#define PWM1PCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x4C)) -#define PWM1LER (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x50)) -#define PWM1CTCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x70)) - - -/* Universal Asynchronous Receiver Transmitter 0 (UART0) */ -#define UART0_BASE_ADDR 0xE000C000 -#define U0RBR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x00)) -#define U0THR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x00)) -#define U0DLL (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x00)) -#define U0DLM (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x04)) -#define U0IER (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x04)) -#define U0IIR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x08)) -#define U0FCR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x08)) -#define U0LCR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x0C)) -#define U0LSR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x14)) -#define U0SCR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x1C)) -#define U0ACR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x20)) -#define U0ICR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x24)) -#define U0FDR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x28)) -#define U0TER (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x30)) - -/* Universal Asynchronous Receiver Transmitter 1 (UART1) */ -#define UART1_BASE_ADDR 0xE0010000 -#define U1RBR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x00)) -#define U1THR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x00)) -#define U1DLL (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x00)) -#define U1DLM (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x04)) -#define U1IER (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x04)) -#define U1IIR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x08)) -#define U1FCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x08)) -#define U1LCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x0C)) -#define U1MCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x10)) -#define U1LSR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x14)) -#define U1MSR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x18)) -#define U1SCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x1C)) -#define U1ACR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x20)) -#define U1FDR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x28)) -#define U1TER (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x30)) - -/* Universal Asynchronous Receiver Transmitter 2 (UART2) */ -#define UART2_BASE_ADDR 0xE0078000 -#define U2RBR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x00)) -#define U2THR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x00)) -#define U2DLL (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x00)) -#define U2DLM (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x04)) -#define U2IER (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x04)) -#define U2IIR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x08)) -#define U2FCR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x08)) -#define U2LCR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x0C)) -#define U2LSR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x14)) -#define U2SCR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x1C)) -#define U2ACR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x20)) -#define U2ICR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x24)) -#define U2FDR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x28)) -#define U2TER (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x30)) - -/* Universal Asynchronous Receiver Transmitter 3 (UART3) */ -#define UART3_BASE_ADDR 0xE007C000 -#define U3RBR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x00)) -#define U3THR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x00)) -#define U3DLL (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x00)) -#define U3DLM (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x04)) -#define U3IER (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x04)) -#define U3IIR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x08)) -#define U3FCR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x08)) -#define U3LCR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x0C)) -#define U3LSR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x14)) -#define U3SCR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x1C)) -#define U3ACR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x20)) -#define U3ICR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x24)) -#define U3FDR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x28)) -#define U3TER (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x30)) - -/* I2C Interface 0 */ -#define I2C0_BASE_ADDR 0xE001C000 -#define I20CONSET (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x00)) -#define I20STAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x04)) -#define I20DAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x08)) -#define I20ADR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x0C)) -#define I20SCLH (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x10)) -#define I20SCLL (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x14)) -#define I20CONCLR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x18)) -//Slightly different naming -#define I2C0CONSET (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x00)) -#define I2C0STAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x04)) -#define I2C0DAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x08)) -#define I2C0ADR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x0C)) -#define I2C0SCLH (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x10)) -#define I2C0SCLL (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x14)) -#define I2C0CONCLR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x18)) - - -/* I2C Interface 1 */ -#define I2C1_BASE_ADDR 0xE005C000 -#define I21CONSET (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x00)) -#define I21STAT (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x04)) -#define I21DAT (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x08)) -#define I21ADR (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x0C)) -#define I21SCLH (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x10)) -#define I21SCLL (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x14)) -#define I21CONCLR (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x18)) - -/* I2C Interface 2 */ -#define I2C2_BASE_ADDR 0xE0080000 -#define I22CONSET (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x00)) -#define I22STAT (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x04)) -#define I22DAT (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x08)) -#define I22ADR (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x0C)) -#define I22SCLH (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x10)) -#define I22SCLL (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x14)) -#define I22CONCLR (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x18)) - -/* SPI0 (Serial Peripheral Interface 0) */ -#define SPI0_BASE_ADDR 0xE0020000 -#define S0SPCR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x00)) -#define S0SPSR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x04)) -#define S0SPDR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x08)) -#define S0SPCCR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x0C)) -#define S0SPINT (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x1C)) - -/* SSP0 Controller */ -#define SSP0_BASE_ADDR 0xE0068000 -#define SSP0CR0 (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x00)) -#define SSP0CR1 (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x04)) -#define SSP0DR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x08)) -#define SSP0SR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x0C)) -#define SSP0CPSR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x10)) -#define SSP0IMSC (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x14)) -#define SSP0RIS (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x18)) -#define SSP0MIS (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x1C)) -#define SSP0ICR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x20)) -#define SSP0DMACR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x24)) - -/* SSP1 Controller */ -#define SSP1_BASE_ADDR 0xE0030000 -#define SSP1CR0 (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x00)) -#define SSP1CR1 (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x04)) -#define SSP1DR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x08)) -#define SSP1SR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x0C)) -#define SSP1CPSR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x10)) -#define SSP1IMSC (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x14)) -#define SSP1RIS (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x18)) -#define SSP1MIS (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x1C)) -#define SSP1ICR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x20)) -#define SSP1DMACR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x24)) - - -/* Real Time Clock */ -#define RTC_BASE_ADDR 0xE0024000 -#define RTC_ILR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x00)) -#define RTC_CTC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x04)) -#define RTC_CCR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x08)) -#define RTC_CIIR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x0C)) -#define RTC_AMR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x10)) -#define RTC_CTIME0 (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x14)) -#define RTC_CTIME1 (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x18)) -#define RTC_CTIME2 (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x1C)) -#define RTC_SEC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x20)) -#define RTC_MIN (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x24)) -#define RTC_HOUR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x28)) -#define RTC_DOM (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x2C)) -#define RTC_DOW (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x30)) -#define RTC_DOY (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x34)) -#define RTC_MONTH (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x38)) -#define RTC_YEAR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x3C)) -#define RTC_CISS (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x40)) -#define RTC_ALSEC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x60)) -#define RTC_ALMIN (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x64)) -#define RTC_ALHOUR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x68)) -#define RTC_ALDOM (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x6C)) -#define RTC_ALDOW (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x70)) -#define RTC_ALDOY (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x74)) -#define RTC_ALMON (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x78)) -#define RTC_ALYEAR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x7C)) -#define RTC_PREINT (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x80)) -#define RTC_PREFRAC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x84)) - - -/* A/D Converter 0 (AD0) */ -#define AD0_BASE_ADDR 0xE0034000 -#define AD0CR (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x00)) -#define AD0GDR (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x04)) -#define AD0INTEN (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x0C)) -#define AD0DR0 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x10)) -#define AD0DR1 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x14)) -#define AD0DR2 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x18)) -#define AD0DR3 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x1C)) -#define AD0DR4 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x20)) -#define AD0DR5 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x24)) -#define AD0DR6 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x28)) -#define AD0DR7 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x2C)) -#define AD0STAT (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x30)) - - -/* D/A Converter */ -#define DAC_BASE_ADDR 0xE006C000 -#define DACR (*(volatile unsigned int *)(DAC_BASE_ADDR + 0x00)) - - -/* Watchdog */ -#define WDG_BASE_ADDR 0xE0000000 -#define WDMOD (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x00)) -#define WDTC (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x04)) -#define WDFEED (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x08)) -#define WDTV (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x0C)) -#define WDCLKSEL (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x10)) - -/* CAN CONTROLLERS AND ACCEPTANCE FILTER */ -#define CAN_ACCEPT_BASE_ADDR 0xE003C000 -#define CAN_AFMR (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x00)) -#define CAN_SFF_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x04)) -#define CAN_SFF_GRP_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x08)) -#define CAN_EFF_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x0C)) -#define CAN_EFF_GRP_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x10)) -#define CAN_EOT (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x14)) -#define CAN_LUT_ERR_ADR (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x18)) -#define CAN_LUT_ERR (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x1C)) - -#define CAN_CENTRAL_BASE_ADDR 0xE0040000 -#define CAN_TX_SR (*(volatile unsigned int *)(CAN_CENTRAL_BASE_ADDR + 0x00)) -#define CAN_RX_SR (*(volatile unsigned int *)(CAN_CENTRAL_BASE_ADDR + 0x04)) -#define CAN_MSR (*(volatile unsigned int *)(CAN_CENTRAL_BASE_ADDR + 0x08)) - -#define CAN1_BASE_ADDR 0xE0044000 -#define CAN1MOD (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x00)) -#define CAN1CMR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x04)) -#define CAN1GSR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x08)) -#define CAN1ICR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x0C)) -#define CAN1IER (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x10)) -#define CAN1BTR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x14)) -#define CAN1EWL (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x18)) -#define CAN1SR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x1C)) -#define CAN1RFS (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x20)) -#define CAN1RID (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x24)) -#define CAN1RDA (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x28)) -#define CAN1RDB (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x2C)) - -#define CAN1TFI1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x30)) -#define CAN1TID1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x34)) -#define CAN1TDA1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x38)) -#define CAN1TDB1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x3C)) -#define CAN1TFI2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x40)) -#define CAN1TID2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x44)) -#define CAN1TDA2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x48)) -#define CAN1TDB2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x4C)) -#define CAN1TFI3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x50)) -#define CAN1TID3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x54)) -#define CAN1TDA3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x58)) -#define CAN1TDB3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x5C)) - -#define CAN2_BASE_ADDR 0xE0048000 -#define CAN2MOD (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x00)) -#define CAN2CMR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x04)) -#define CAN2GSR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x08)) -#define CAN2ICR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x0C)) -#define CAN2IER (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x10)) -#define CAN2BTR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x14)) -#define CAN2EWL (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x18)) -#define CAN2SR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x1C)) -#define CAN2RFS (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x20)) -#define CAN2RID (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x24)) -#define CAN2RDA (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x28)) -#define CAN2RDB (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x2C)) - -#define CAN2TFI1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x30)) -#define CAN2TID1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x34)) -#define CAN2TDA1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x38)) -#define CAN2TDB1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x3C)) -#define CAN2TFI2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x40)) -#define CAN2TID2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x44)) -#define CAN2TDA2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x48)) -#define CAN2TDB2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x4C)) -#define CAN2TFI3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x50)) -#define CAN2TID3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x54)) -#define CAN2TDA3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x58)) -#define CAN2TDB3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x5C)) - - -/* MultiMedia Card Interface(MCI) Controller */ -#define MCI_BASE_ADDR 0xE008C000 -#define MCI_POWER (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x00)) -#define MCI_CLOCK (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x04)) -#define MCI_ARGUMENT (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x08)) -#define MCI_COMMAND (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x0C)) -#define MCI_RESP_CMD (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x10)) -#define MCI_RESP0 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x14)) -#define MCI_RESP1 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x18)) -#define MCI_RESP2 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x1C)) -#define MCI_RESP3 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x20)) -#define MCI_DATA_TMR (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x24)) -#define MCI_DATA_LEN (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x28)) -#define MCI_DATA_CTRL (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x2C)) -#define MCI_DATA_CNT (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x30)) -#define MCI_STATUS (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x34)) -#define MCI_CLEAR (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x38)) -#define MCI_MASK0 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x3C)) -#define MCI_MASK1 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x40)) -#define MCI_FIFO_CNT (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x48)) -#define MCI_FIFO (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x80)) - - -/* I2S Interface Controller (I2S) */ -#define I2S_BASE_ADDR 0xE0088000 -#define I2S_DAO (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x00)) -#define I2S_DAI (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x04)) -#define I2S_TX_FIFO (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x08)) -#define I2S_RX_FIFO (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x0C)) -#define I2S_STATE (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x10)) -#define I2S_DMA1 (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x14)) -#define I2S_DMA2 (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x18)) -#define I2S_IRQ (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x1C)) -#define I2S_TXRATE (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x20)) -#define I2S_RXRATE (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x24)) - - -/* General-purpose DMA Controller */ -#define DMA_BASE_ADDR 0xFFE04000 -#define GPDMA_INT_STAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x000)) -#define GPDMA_INT_TCSTAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x004)) -#define GPDMA_INT_TCCLR (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x008)) -#define GPDMA_INT_ERR_STAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x00C)) -#define GPDMA_INT_ERR_CLR (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x010)) -#define GPDMA_RAW_INT_TCSTAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x014)) -#define GPDMA_RAW_INT_ERR_STAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x018)) -#define GPDMA_ENABLED_CHNS (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x01C)) -#define GPDMA_SOFT_BREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x020)) -#define GPDMA_SOFT_SREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x024)) -#define GPDMA_SOFT_LBREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x028)) -#define GPDMA_SOFT_LSREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x02C)) -#define GPDMA_CONFIG (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x030)) -#define GPDMA_SYNC (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x034)) - -/* DMA channel 0 registers */ -#define GPDMA_CH0_SRC (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x100)) -#define GPDMA_CH0_DEST (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x104)) -#define GPDMA_CH0_LLI (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x108)) -#define GPDMA_CH0_CTRL (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x10C)) -#define GPDMA_CH0_CFG (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x110)) - -/* DMA channel 1 registers */ -#define GPDMA_CH1_SRC (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x120)) -#define GPDMA_CH1_DEST (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x124)) -#define GPDMA_CH1_LLI (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x128)) -#define GPDMA_CH1_CTRL (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x12C)) -#define GPDMA_CH1_CFG (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x130)) - - -/* USB Controller */ -#define USB_INT_BASE_ADDR 0xE01FC1C0 -#define USB_BASE_ADDR 0xFFE0C200 /* USB Base Address */ - -#define USB_INT_STAT (*(volatile unsigned int *)(USB_INT_BASE_ADDR + 0x00)) - -/* USB Device Interrupt Registers */ -#define DEV_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x00)) -#define DEV_INT_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x04)) -#define DEV_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0x08)) -#define DEV_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0x0C)) -#define DEV_INT_PRIO (*(volatile unsigned int *)(USB_BASE_ADDR + 0x2C)) - -/* USB Device Endpoint Interrupt Registers */ -#define EP_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x30)) -#define EP_INT_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x34)) -#define EP_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0x38)) -#define EP_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0x3C)) -#define EP_INT_PRIO (*(volatile unsigned int *)(USB_BASE_ADDR + 0x40)) - -/* USB Device Endpoint Realization Registers */ -#define REALIZE_EP (*(volatile unsigned int *)(USB_BASE_ADDR + 0x44)) -#define EP_INDEX (*(volatile unsigned int *)(USB_BASE_ADDR + 0x48)) -#define MAXPACKET_SIZE (*(volatile unsigned int *)(USB_BASE_ADDR + 0x4C)) - -/* USB Device Command Reagisters */ -#define CMD_CODE (*(volatile unsigned int *)(USB_BASE_ADDR + 0x10)) -#define CMD_DATA (*(volatile unsigned int *)(USB_BASE_ADDR + 0x14)) - -/* USB Device Data Transfer Registers */ -#define RX_DATA (*(volatile unsigned int *)(USB_BASE_ADDR + 0x18)) -#define TX_DATA (*(volatile unsigned int *)(USB_BASE_ADDR + 0x1C)) -#define RX_PLENGTH (*(volatile unsigned int *)(USB_BASE_ADDR + 0x20)) -#define TX_PLENGTH (*(volatile unsigned int *)(USB_BASE_ADDR + 0x24)) -#define USB_CTRL (*(volatile unsigned int *)(USB_BASE_ADDR + 0x28)) - -/* USB Device DMA Registers */ -#define DMA_REQ_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x50)) -#define DMA_REQ_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0x54)) -#define DMA_REQ_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0x58)) -#define UDCA_HEAD (*(volatile unsigned int *)(USB_BASE_ADDR + 0x80)) -#define EP_DMA_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x84)) -#define EP_DMA_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x88)) -#define EP_DMA_DIS (*(volatile unsigned int *)(USB_BASE_ADDR + 0x8C)) -#define DMA_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x90)) -#define DMA_INT_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x94)) -#define EOT_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0xA0)) -#define EOT_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0xA4)) -#define EOT_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0xA8)) -#define NDD_REQ_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0xAC)) -#define NDD_REQ_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0xB0)) -#define NDD_REQ_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0xB4)) -#define SYS_ERR_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0xB8)) -#define SYS_ERR_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0xBC)) -#define SYS_ERR_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0xC0)) - - -/* USB Host Controller */ -#define USBHC_BASE_ADDR 0xFFE0C000 -#define HC_REVISION (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x00)) -#define HC_CONTROL (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x04)) -#define HC_CMD_STAT (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x08)) -#define HC_INT_STAT (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x0C)) -#define HC_INT_EN (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x10)) -#define HC_INT_DIS (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x14)) -#define HC_HCCA (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x18)) -#define HC_PERIOD_CUR_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x1C)) -#define HC_CTRL_HEAD_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x20)) -#define HC_CTRL_CUR_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x24)) -#define HC_BULK_HEAD_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x28)) -#define HC_BULK_CUR_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x2C)) -#define HC_DONE_HEAD (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x30)) -#define HC_FM_INTERVAL (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x34)) -#define HC_FM_REMAINING (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x38)) -#define HC_FM_NUMBER (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x3C)) -#define HC_PERIOD_START (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x40)) -#define HC_LS_THRHLD (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x44)) -#define HC_RH_DESCA (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x48)) -#define HC_RH_DESCB (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x4C)) -#define HC_RH_STAT (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x50)) -#define HC_RH_PORT_STAT1 (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x54)) -#define HC_RH_PORT_STAT2 (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x58)) - -/* USB OTG Controller */ -#define USBOTG_BASE_ADDR 0xFFE0C100 -#define OTG_INT_STAT (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x00)) -#define OTG_INT_EN (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x04)) -#define OTG_INT_SET (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x08)) -#define OTG_INT_CLR (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x0C)) -#define OTG_STAT_CTRL (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x10)) -#define OTG_TIMER (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x14)) - -#define USBOTG_I2C_BASE_ADDR 0xFFE0C300 -#define OTG_I2C_RX (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x00)) -#define OTG_I2C_TX (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x00)) -#define OTG_I2C_STS (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x04)) -#define OTG_I2C_CTL (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x08)) -#define OTG_I2C_CLKHI (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x0C)) -#define OTG_I2C_CLKLO (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x10)) - -#define USBOTG_CLK_BASE_ADDR 0xFFE0CFF0 -#define OTG_CLK_CTRL (*(volatile unsigned int *)(USBOTG_CLK_BASE_ADDR + 0x04)) -#define OTG_CLK_STAT (*(volatile unsigned int *)(USBOTG_CLK_BASE_ADDR + 0x08)) - - -/* Ethernet MAC (32 bit data bus) -- all registers are RW unless indicated in parentheses */ -#define MAC_BASE_ADDR 0xFFE00000 /* AHB Peripheral # 0 */ -#define MAC_MAC1 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x000)) /* MAC config reg 1 */ -#define MAC_MAC2 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x004)) /* MAC config reg 2 */ -#define MAC_IPGT (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x008)) /* b2b InterPacketGap reg */ -#define MAC_IPGR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x00C)) /* non b2b InterPacketGap reg */ -#define MAC_CLRT (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x010)) /* CoLlision window/ReTry reg */ -#define MAC_MAXF (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x014)) /* MAXimum Frame reg */ -#define MAC_SUPP (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x018)) /* PHY SUPPort reg */ -#define MAC_TEST (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x01C)) /* TEST reg */ -#define MAC_MCFG (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x020)) /* MII Mgmt ConFiG reg */ -#define MAC_MCMD (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x024)) /* MII Mgmt CoMmanD reg */ -#define MAC_MADR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x028)) /* MII Mgmt ADdRess reg */ -#define MAC_MWTD (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x02C)) /* MII Mgmt WriTe Data reg (WO) */ -#define MAC_MRDD (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x030)) /* MII Mgmt ReaD Data reg (RO) */ -#define MAC_MIND (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x034)) /* MII Mgmt INDicators reg (RO) */ - -#define MAC_SA0 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x040)) /* Station Address 0 reg */ -#define MAC_SA1 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x044)) /* Station Address 1 reg */ -#define MAC_SA2 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x048)) /* Station Address 2 reg */ - -#define MAC_COMMAND (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x100)) /* Command reg */ -#define MAC_STATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x104)) /* Status reg (RO) */ -#define MAC_RXDESCRIPTOR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x108)) /* Rx descriptor base address reg */ -#define MAC_RXSTATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x10C)) /* Rx status base address reg */ -#define MAC_RXDESCRIPTORNUM (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x110)) /* Rx number of descriptors reg */ -#define MAC_RXPRODUCEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x114)) /* Rx produce index reg (RO) */ -#define MAC_RXCONSUMEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x118)) /* Rx consume index reg */ -#define MAC_TXDESCRIPTOR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x11C)) /* Tx descriptor base address reg */ -#define MAC_TXSTATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x120)) /* Tx status base address reg */ -#define MAC_TXDESCRIPTORNUM (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x124)) /* Tx number of descriptors reg */ -#define MAC_TXPRODUCEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x128)) /* Tx produce index reg */ -#define MAC_TXCONSUMEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x12C)) /* Tx consume index reg (RO) */ - -#define MAC_TSV0 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x158)) /* Tx status vector 0 reg (RO) */ -#define MAC_TSV1 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x15C)) /* Tx status vector 1 reg (RO) */ -#define MAC_RSV (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x160)) /* Rx status vector reg (RO) */ - -#define MAC_FLOWCONTROLCNT (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x170)) /* Flow control counter reg */ -#define MAC_FLOWCONTROLSTS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x174)) /* Flow control status reg */ - -#define MAC_RXFILTERCTRL (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x200)) /* Rx filter ctrl reg */ -#define MAC_RXFILTERWOLSTS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x204)) /* Rx filter WoL status reg (RO) */ -#define MAC_RXFILTERWOLCLR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x208)) /* Rx filter WoL clear reg (WO) */ - -#define MAC_HASHFILTERL (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x210)) /* Hash filter LSBs reg */ -#define MAC_HASHFILTERH (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x214)) /* Hash filter MSBs reg */ - -#define MAC_INTSTATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFE0)) /* Interrupt status reg (RO) */ -#define MAC_INTENABLE (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFE4)) /* Interrupt enable reg */ -#define MAC_INTCLEAR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFE8)) /* Interrupt clear reg (WO) */ -#define MAC_INTSET (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFEC)) /* Interrupt set reg (WO) */ - -#define MAC_POWERDOWN (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFF4)) /* Power-down reg */ -#define MAC_MODULEID (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFFC)) /* Module ID reg (RO) */ - - -#endif /* __LPC23xx_H */ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c deleted file mode 100644 index efff93156..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the LCD send the message on a queue to the LCD task instead of - * accessing the LCD themselves. The LCD task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. - * - * "Check" hook - This only executes every five seconds from the tick hook. - * Its main function is to check that all the standard demo tasks are still - * operational. Should any unexpected behaviour within a demo task be discovered - * the tick hook will write an error to the LCD (via the LCD task). If all the - * demo tasks are executing with their expected behaviour then the check task - * writes PASS to the LCD (again via the LCD task), as described above. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "LCD/portlcd.h" -#include "flash.h" -#include "partest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "dynamic.h" - -/* Demo application definitions. */ -#define mainQUEUE_SIZE ( 3 ) -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 6 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainFLASH_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* Constants to setup the PLL. */ -#define mainPLL_MUL ( ( unsigned long ) ( 8 - 1 ) ) -#define mainPLL_DIV ( ( unsigned long ) 0x0000 ) -#define mainCPU_CLK_DIV ( ( unsigned long ) 0x0003 ) -#define mainPLL_ENABLE ( ( unsigned long ) 0x0001 ) -#define mainPLL_CONNECT ( ( ( unsigned long ) 0x0002 ) | mainPLL_ENABLE ) -#define mainPLL_FEED_BYTE1 ( ( unsigned long ) 0xaa ) -#define mainPLL_FEED_BYTE2 ( ( unsigned long ) 0x55 ) -#define mainPLL_LOCK ( ( unsigned long ) 0x4000000 ) -#define mainPLL_CONNECTED ( ( unsigned long ) 0x2000000 ) -#define mainOSC_ENABLE ( ( unsigned long ) 0x20 ) -#define mainOSC_STAT ( ( unsigned long ) 0x40 ) -#define mainOSC_SELECT ( ( unsigned long ) 0x01 ) - -/* Constants to setup the MAM. */ -#define mainMAM_TIM_3 ( ( unsigned char ) 0x03 ) -#define mainMAM_MODE_FULL ( ( unsigned char ) 0x02 ) - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The LCD is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the LCD directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vLCDTask( void *pvParameters ); - -/* Configure the hardware as required by the demo. */ -static void prvSetupHardware( void ); - -/* The queue used to send messages to the LCD task. */ -QueueHandle_t xLCDQueue; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - prvSetupHardware(); - - /* Create the queue used by the LCD task. Messages for display on the LCD - are received via this queue. */ - xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) ); - - /* Create the uIP task. This uses the lwIP RTOS abstraction layer.*/ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartLEDFlashTasks( mainFLASH_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartDynamicPriorityTasks(); - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vLCDTask, "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - return 0; -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -unsigned portBASE_TYPE uxColumn = 0; -static xLCDMessage xMessage = { 0, "PASS" }; -static unsigned long ulTicksSinceLastDisplay = 0; -static portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt. Have enough ticks passed to make it - time to perform our health status check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - BLOCKQ"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - BLOCKTIM"; - } - - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - GENQ"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - PEEKQ"; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - DYNAMIC"; - } - - xMessage.xColumn++; - - /* Send the message to the LCD gatekeeper for display. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendToBackFromISR( xLCDQueue, &xMessage, &xHigherPriorityTaskWoken ); - } -} -/*-----------------------------------------------------------*/ - -void vLCDTask( void *pvParameters ) -{ -xLCDMessage xMessage; - - /* Initialise the LCD and display a startup message. */ - LCD_init(); - LCD_cur_off(); - LCD_cls(); - LCD_gotoxy( 1, 1 ); - LCD_puts( "www.FreeRTOS.org" ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - while( xQueueReceive( xLCDQueue, &xMessage, portMAX_DELAY ) != pdPASS ); - - /* Display the message. Print each message to a different position. */ - LCD_cls(); - LCD_gotoxy( ( xMessage.xColumn & 0x07 ) + 1, ( xMessage.xColumn & 0x01 ) + 1 ); - LCD_puts( xMessage.pcMessage ); - } - -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - #ifdef RUN_FROM_RAM - /* Remap the interrupt vectors to RAM if we are are running from RAM. */ - SCB_MEMMAP = 2; - #endif - - /* Disable the PLL. */ - PLLCON = 0; - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - - /* Configure clock source. */ - SCS |= mainOSC_ENABLE; - while( !( SCS & mainOSC_STAT ) ); - CLKSRCSEL = mainOSC_SELECT; - - /* Setup the PLL to multiply the XTAL input by 4. */ - PLLCFG = ( mainPLL_MUL | mainPLL_DIV ); - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - - /* Turn on and wait for the PLL to lock... */ - PLLCON = mainPLL_ENABLE; - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - CCLKCFG = mainCPU_CLK_DIV; - while( !( PLLSTAT & mainPLL_LOCK ) ); - - /* Connecting the clock. */ - PLLCON = mainPLL_CONNECT; - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - while( !( PLLSTAT & mainPLL_CONNECTED ) ); - - /* - This code is commented out as the MAM does not work on the original revision - LPC2368 chips. If using Rev B chips then you can increase the speed though - the use of the MAM. - - Setup and turn on the MAM. Three cycle access is used due to the fast - PLL used. It is possible faster overall performance could be obtained by - tuning the MAM and PLL settings. - MAMCR = 0; - MAMTIM = mainMAM_TIM_3; - MAMCR = mainMAM_MODE_FULL; - */ - - /* Setup the led's on the MCB2300 board */ - vParTestInitialise(); -} - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c deleted file mode 100644 index ac8ddeb66..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************************** -* Copyright (c) 2009 by Michael Fischer. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* 1. Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* 2. Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* 3. Neither the name of the author nor the names of its contributors may -* be used to endorse or promote products derived from this software -* without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -* SUCH DAMAGE. -* -**************************************************************************** -* History: -* -* 28.03.09 mifi First Version, based on the original syscall.c from -* newlib version 1.17.0 -****************************************************************************/ - -#include -#include -#include -#include -#include - -/***************************************************************************/ - -int _read_r (struct _reent *r, int file, char * ptr, int len) -{ - r = r; - file = file; - ptr = ptr; - len = len; - - errno = EINVAL; - return -1; -} - -/***************************************************************************/ - -int _lseek_r (struct _reent *r, int file, int ptr, int dir) -{ - r = r; - file = file; - ptr = ptr; - dir = dir; - - return 0; -} - -/***************************************************************************/ - -int _write_r (struct _reent *r, int file, char * ptr, int len) -{ - r = r; - file = file; - ptr = ptr; - -#if 0 - int index; - - /* For example, output string by UART */ - for(index=0; index stack_ptr) - { - /* Some of the libstdc++-v3 tests rely upon detecting - out of memory errors, so do not abort here. */ -#if 0 - extern void abort (void); - - _write (1, "_sbrk: Heap and stack collision\n", 32); - - abort (); -#else - errno = ENOMEM; - return (caddr_t) -1; -#endif - } - - heap_end += incr; - - return (caddr_t) prev_heap_end; -} - -/***************************************************************************/ - -int _fstat_r (struct _reent *r, int file, struct stat * st) -{ - r = r; - file = file; - - memset (st, 0, sizeof (* st)); - st->st_mode = S_IFCHR; - return 0; -} - -/***************************************************************************/ - -int _isatty_r(struct _reent *r, int fd) -{ - r = r; - fd = fd; - - return 1; -} - -/*** EOF ***/ - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c deleted file mode 100644 index 8140babcd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* The interrupt entry point. */ -void vEMAC_ISR_Wrapper( void ) __attribute__((naked)); - -/* The handler that does the actual work. */ -void vEMAC_ISR_Handler( void ) __attribute__((noinline)); - -extern SemaphoreHandle_t xEMACSemaphore; - - -void vEMAC_ISR_Handler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Clear the interrupt. */ - MAC_INTCLEAR = 0xffff; - VICVectAddr = 0; - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - - if( xHigherPriorityTaskWoken ) - { - /* Giving the semaphore woke a task. */ - portYIELD_FROM_ISR(); - } -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Wrapper( void ) -{ - /* Save the context of the interrupted task. */ - portSAVE_CONTEXT(); - - /* Call the handler. This must be a separate function unless you can - guarantee that no stack will be used. */ - __asm volatile ( "bl vEMAC_ISR_Handler" ); - - /* Restore the context of whichever task is going to run next. */ - portRESTORE_CONTEXT(); -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c deleted file mode 100644 index 294cfb145..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c +++ /dev/null @@ -1,411 +0,0 @@ -/****************************************************************** - ***** ***** - ***** Name: cs8900.c ***** - ***** Ver.: 1.0 ***** - ***** Date: 07/05/2001 ***** - ***** Auth: Andreas Dannenberg ***** - ***** HTWK Leipzig ***** - ***** university of applied sciences ***** - ***** Germany ***** - ***** Func: ethernet packet-driver for use with LAN- ***** - ***** controller CS8900 from Crystal/Cirrus Logic ***** - ***** ***** - ***** Keil: Module modified for use with Philips ***** - ***** LPC2378 EMAC Ethernet controller ***** - ***** ***** - ******************************************************************/ - -/* Adapted from file originally written by Andreas Dannenberg. Supplied with permission. */ - -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* The semaphore used to wake the uIP task when data arives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -static unsigned short *rptr; -static unsigned short *tptr; - -// easyWEB internal function -// help function to swap the byte order of a WORD - -static unsigned short SwapBytes(unsigned short Data) -{ - return (Data >> 8) | (Data << 8); -} - -// Keil: function added to write PHY -void write_PHY (int PhyReg, int Value) -{ - unsigned int tout; - - MAC_MADR = DP83848C_DEF_ADR | PhyReg; - MAC_MWTD = Value; - - /* Wait utill operation completed */ - tout = 0; - for (tout = 0; tout < MII_WR_TOUT; tout++) { - if ((MAC_MIND & MIND_BUSY) == 0) { - break; - } - } -} - - -// Keil: function added to read PHY -unsigned short read_PHY (unsigned char PhyReg) -{ - unsigned int tout; - - MAC_MADR = DP83848C_DEF_ADR | PhyReg; - MAC_MCMD = MCMD_READ; - - /* Wait until operation completed */ - tout = 0; - for (tout = 0; tout < MII_RD_TOUT; tout++) { - if ((MAC_MIND & MIND_BUSY) == 0) { - break; - } - } - MAC_MCMD = 0; - return (MAC_MRDD); -} - - -// Keil: function added to initialize Rx Descriptors -void rx_descr_init (void) -{ - unsigned int i; - - for (i = 0; i < NUM_RX_FRAG; i++) { - RX_DESC_PACKET(i) = RX_BUF(i); - RX_DESC_CTRL(i) = RCTRL_INT | (ETH_FRAG_SIZE-1); - RX_STAT_INFO(i) = 0; - RX_STAT_HASHCRC(i) = 0; - } - - /* Set EMAC Receive Descriptor Registers. */ - MAC_RXDESCRIPTOR = RX_DESC_BASE; - MAC_RXSTATUS = RX_STAT_BASE; - MAC_RXDESCRIPTORNUM = NUM_RX_FRAG-1; - - /* Rx Descriptors Point to 0 */ - MAC_RXCONSUMEINDEX = 0; -} - - -// Keil: function added to initialize Tx Descriptors -void tx_descr_init (void) { - unsigned int i; - - for (i = 0; i < NUM_TX_FRAG; i++) { - TX_DESC_PACKET(i) = TX_BUF(i); - TX_DESC_CTRL(i) = 0; - TX_STAT_INFO(i) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - MAC_TXDESCRIPTOR = TX_DESC_BASE; - MAC_TXSTATUS = TX_STAT_BASE; - MAC_TXDESCRIPTORNUM = NUM_TX_FRAG-1; - - /* Tx Descriptors Point to 0 */ - MAC_TXPRODUCEINDEX = 0; -} - - -// configure port-pins for use with LAN-controller, -// reset it and send the configuration-sequence - -portBASE_TYPE Init_EMAC(void) -{ -portBASE_TYPE xReturn = pdPASS; - -// Keil: function modified to access the EMAC -// Initializes the EMAC ethernet controller - volatile unsigned int regv,tout,id1,id2; - - /* Enable P1 Ethernet Pins. */ - PINSEL2 = configPINSEL2_VALUE; - PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005; - - /* Power Up the EMAC controller. */ - PCONP |= 0x40000000; - vTaskDelay( 1 ); - - /* Reset all EMAC internal modules. */ - MAC_MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - MAC_COMMAND = CR_REG_RES | CR_TX_RES | CR_RX_RES; - - /* A short delay after reset. */ - vTaskDelay( 1 ); - - /* Initialize MAC control registers. */ - MAC_MAC1 = MAC1_PASS_ALL; - MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - MAC_MAXF = ETH_MAX_FLEN; - MAC_CLRT = CLRT_DEF; - MAC_IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - MAC_SUPP = SUPP_RES_RMII; - MAC_SUPP = 0; - - /* Put the DP83848C in reset mode */ - write_PHY (PHY_REG_BMCR, 0x8000); - write_PHY (PHY_REG_BMCR, 0x8000); - - /* Wait for hardware reset to end. */ - for (tout = 0; tout < 100; tout++) { - vTaskDelay( 10 ); - regv = read_PHY (PHY_REG_BMCR); - if (!(regv & 0x8000)) { - /* Reset complete */ - break; - } - } - - /* Check if this is a DP83848C PHY. */ - id1 = read_PHY (PHY_REG_IDR1); - id2 = read_PHY (PHY_REG_IDR2); - if (((id1 << 16) | (id2 & 0xFFF0)) == DP83848C_ID) { - /* Configure the PHY device */ - - /* Use autonegotiation about the link speed. */ - write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG); - /* Wait to complete Auto_Negotiation. */ - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 100 ); - regv = read_PHY (PHY_REG_BMSR); - if (regv & 0x0020) { - /* Autonegotiation Complete. */ - break; - } - } - } - else - { - xReturn = pdFAIL; - } - - /* Check the link status. */ - if( xReturn == pdPASS ) - { - xReturn = pdFAIL; - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 100 ); - regv = read_PHY (PHY_REG_STS); - if (regv & 0x0001) { - /* Link is on. */ - xReturn = pdPASS; - break; - } - } - } - - if( xReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if (regv & 0x0004) { - /* Full duplex is enabled. */ - MAC_MAC2 |= MAC2_FULL_DUP; - MAC_COMMAND |= CR_FULL_DUP; - MAC_IPGT = IPGT_FULL_DUP; - } - else { - /* Half duplex mode. */ - MAC_IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if (regv & 0x0002) { - /* 10MBit mode. */ - MAC_SUPP = 0; - } - else { - /* 100MBit mode. */ - MAC_SUPP = SUPP_SPEED; - } - - /* Set the Ethernet MAC Address registers */ - MAC_SA0 = (emacETHADDR0 << 8) | emacETHADDR1; - MAC_SA1 = (emacETHADDR2 << 8) | emacETHADDR3; - MAC_SA2 = (emacETHADDR4 << 8) | emacETHADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - rx_descr_init (); - tx_descr_init (); - - /* Receive Broadcast and Perfect Match Packets */ - MAC_RXFILTERCTRL = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Create the semaphore used ot wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Reset all interrupts */ - MAC_INTCLEAR = 0xFFFF; - - /* Enable receive and transmit mode of MAC Ethernet core */ - MAC_COMMAND |= (CR_RX_EN | CR_TX_EN); - MAC_MAC1 |= MAC1_REC_EN; - } - - return xReturn; -} - - -// reads a word in little-endian byte order from RX_BUFFER - -unsigned short ReadFrame_EMAC(void) -{ - return (*rptr++); -} - -// reads a word in big-endian byte order from RX_FRAME_PORT -// (useful to avoid permanent byte-swapping while reading -// TCP/IP-data) - -unsigned short ReadFrameBE_EMAC(void) -{ - unsigned short ReturnValue; - - ReturnValue = SwapBytes (*rptr++); - return (ReturnValue); -} - - -// copies bytes from frame port to MCU-memory -// NOTES: * an odd number of byte may only be transfered -// if the frame is read to the end! -// * MCU-memory MUST start at word-boundary - -void CopyFromFrame_EMAC(void *Dest, unsigned short Size) -{ - unsigned short * piDest; // Keil: Pointer added to correct expression - - piDest = Dest; // Keil: Line added - while (Size > 1) { - *piDest++ = ReadFrame_EMAC(); - Size -= 2; - } - - if (Size) { // check for leftover byte... - *(unsigned char *)piDest = (char)ReadFrame_EMAC();// the LAN-Controller will return 0 - } // for the highbyte -} - -// does a dummy read on frame-I/O-port -// NOTE: only an even number of bytes is read! - -void DummyReadFrame_EMAC(unsigned short Size) // discards an EVEN number of bytes -{ // from RX-fifo - while (Size > 1) { - ReadFrame_EMAC(); - Size -= 2; - } -} - -// Reads the length of the received ethernet frame and checks if the -// destination address is a broadcast message or not -// returns the frame length -unsigned short StartReadFrame(void) { - unsigned short RxLen; - unsigned int idx; - - idx = MAC_RXCONSUMEINDEX; - RxLen = (RX_STAT_INFO(idx) & RINFO_SIZE) - 3; - rptr = (unsigned short *)RX_DESC_PACKET(idx); - return(RxLen); -} - -void EndReadFrame(void) { - unsigned int idx; - - /* DMA free packet. */ - idx = MAC_RXCONSUMEINDEX; - - if (++idx == NUM_RX_FRAG) - idx = 0; - - MAC_RXCONSUMEINDEX = idx; -} - -unsigned int CheckFrameReceived(void) { // Packet received ? - - if (MAC_RXPRODUCEINDEX != MAC_RXCONSUMEINDEX) // more packets received ? - return(1); - else - return(0); -} - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -unsigned int uiLen = 0; - - if( MAC_RXPRODUCEINDEX != MAC_RXCONSUMEINDEX ) - { - uiLen = StartReadFrame(); - CopyFromFrame_EMAC( ucBuffer, uiLen ); - EndReadFrame(); - } - - return uiLen; -} - -// requests space in EMAC memory for storing an outgoing frame - -void RequestSend(void) -{ - unsigned int idx; - - idx = MAC_TXPRODUCEINDEX; - tptr = (unsigned short *)TX_DESC_PACKET(idx); -} - -// check if ethernet controller is ready to accept the -// frame we want to send - -unsigned int Rdy4Tx(void) -{ - return (1); // the ethernet controller transmits much faster -} // than the CPU can load its buffers - - -// writes a word in little-endian byte order to TX_BUFFER -void WriteFrame_EMAC(unsigned short Data) -{ - *tptr++ = Data; -} - -// copies bytes from MCU-memory to frame port -// NOTES: * an odd number of byte may only be transfered -// if the frame is written to the end! -// * MCU-memory MUST start at word-boundary - -void CopyToFrame_EMAC(void *Source, unsigned int Size) -{ - unsigned short * piSource; - - piSource = Source; - Size = (Size + 1) & 0xFFFE; // round Size up to next even number - while (Size > 0) { - WriteFrame_EMAC(*piSource++); - Size -= 2; - } -} - -void DoSend_EMAC(unsigned short FrameSize) -{ - unsigned int idx; - - idx = MAC_TXPRODUCEINDEX; - TX_DESC_CTRL(idx) = FrameSize | TCTRL_LAST; - if (++idx == NUM_TX_FRAG) idx = 0; - MAC_TXPRODUCEINDEX = idx; -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h deleted file mode 100644 index c3634217d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE Init_EMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void CopyToFrame_EMAC(void *Source, unsigned int Size); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void RequestSend(void); -unsigned int Rdy4Tx(void); -void DoSend_EMAC(unsigned short FrameSize); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index cf9883e01..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,276 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%d%u.%u.%u.%u:%u%s%u%u%c %c\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %ld", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus[ 3 ]; -unsigned long ulString; -extern unsigned long uxParTextGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - for( ulString = 0; ulString < 3; ulString++ ) - { - if( uxParTextGetLED( ulString + 5 ) ) - { - pcStatus[ ulString ] = "checked"; - } - else - { - pcStatus[ ulString ] = ""; - } - } - - sprintf( uip_appdata, - "LED 2.5,"\ - "LED 2.6,"\ - "LED 2.7"\ - "

"\ - "", - pcStatus[ 0 ], - pcStatus[ 1 ], - pcStatus[ 2 ] ); - - return strlen( uip_appdata ); -} - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 0ce405ba0..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 0ffdbff7c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check boxes to select the LED's to turn on or off, enter text to display on the LCD, then click "Update IO". - - -

-

-%! led-io -

- -

-

- - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

- -
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
-
- - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 654d61f21..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index e7e29e344..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,470 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, - 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, - 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, - 0x66, 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, - 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, - 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, - 0x65, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, - 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b, - 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, - 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74, - 0x6f, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4c, 0x45, 0x44, 0x27, 0x73, 0x20, 0x74, - 0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, - 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, - 0x6f, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, - 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x43, 0x44, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, - 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f, - 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, - 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, - 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, - 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, - 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, - 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, - 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 6 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c deleted file mode 100644 index ed24864b7..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define uipMAC_ADDR0 0x00 -#define uipMAC_ADDR1 0x12 -#define uipMAC_ADDR2 0x13 -#define uipMAC_ADDR3 0x10 -#define uipMAC_ADDR4 0x15 -#define uipMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define uipIP_ADDR0 172 -#define uipIP_ADDR1 25 -#define uipIP_ADDR2 218 -#define uipIP_ADDR3 16 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 100 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - while( Init_EMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - MAC_INTENABLE = INT_RX_DONE; - VICIntEnable |= 0x00200000; - VICVectAddr21 = ( long ) vEMAC_ISR_Wrapper; - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - RequestSend(); - - /* Copy the header into the Tx buffer. */ - CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - DoSend_EMAC( uip_len ); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = uipMAC_ADDR0; - xAddr.addr[ 1 ] = uipMAC_ADDR1; - xAddr.addr[ 2 ] = uipMAC_ADDR2; - xAddr.addr[ 3 ] = uipMAC_ADDR3; - xAddr.addr[ 4 ] = uipMAC_ADDR4; - xAddr.addr[ 5 ] = uipMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xLCDQueue; -xLCDMessage xLCDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 5, 0 ); - } - else - { - vParTestSetLED( 5, 1 ); - } - - if( strstr( c, "LED1=1" ) != NULL ) - { - vParTestSetLED( 6, 0 ); - } - else - { - vParTestSetLED( 6, 1 ); - } - - if( strstr( c, "LED2=1" ) != NULL ) - { - vParTestSetLED( 7, 0 ); - } - else - { - vParTestSetLED( 7, 1 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xLCDMessage.xColumn = 0; - xLCDMessage.pcMessage = cMessageForDisplay; - xQueueSend( xLCDQueue, &xLCDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 3e6f7f381..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg deleted file mode 100644 index c45e902a8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg +++ /dev/null @@ -1,35 +0,0 @@ -#daemon configuration -telnet_port 4444 -gdb_port 3333 - -#interface -interface parport -parport_port 0x378 -parport_cable wiggler -jtag_speed 2 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst - -#jtag scan chain -#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) -jtag_device 4 0x1 0xf 0xe - -#target configuration -daemon_startup reset - -#target -#target arm7tdmi -target arm7tdmi little run_and_init 0 arm7tdmi-s_r4 -run_and_halt_time 0 30 - -working_area 0 0x40000000 0x40000 nobackup - -#flash configuration -flash bank lpc2000 0x0 0x80000 0 0 0 lpc2000_v2 12000 calc_checksum -flash bank cfi 0x80000000 0x400000 2 2 0 - -# For more information about the configuration files, take a look at: -# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger - -target_script 0 reset program.script diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg deleted file mode 100644 index 4c3b0ceb9..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg +++ /dev/null @@ -1,33 +0,0 @@ -#daemon configuration -telnet_port 4444 -gdb_port 3333 - -#interface -interface parport -parport_port 0x378 -parport_cable wiggler -jtag_speed 2 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst - -#jtag scan chain -#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) -jtag_device 4 0x1 0xf 0xe - -#target configuration -daemon_startup reset - -#target -#target arm7tdmi -target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4 -run_and_halt_time 0 30 - -working_area 0 0x40000000 0x40000 nobackup - -#flash configuration -flash bank lpc2000 0x0 0x80000 0 0 0 lpc2000_v2 12000 calc_checksum -flash bank cfi 0x80000000 0x400000 2 2 0 - -# For more information about the configuration files, take a look at: -# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script deleted file mode 100644 index 363913c7c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script +++ /dev/null @@ -1,11 +0,0 @@ -arm7_9 dcc_downloads enable -wait_halt -sleep 10 -poll -flash probe 0 -#flash protect 0 0 26 'off' -flash erase 0 0 26 -flash write 0 ./RTOSDemo/RTOSDemo.bin 0x0 -reset run -sleep 10 -shutdown diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h deleted file mode 100644 index aab6043f2..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include -#define vPortYieldProcessor swi_handler - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - - -/* Value to use on old rev '-' devices. */ -//#define configPINSEL2_VALUE 0x50151105 - -/* Value to use on rev 'A' and newer devices. */ -//#define configPINSEL2_VALUE 0x50150105 - -#ifndef configPINSEL2_VALUE - #error Please uncomment one of the two configPINSEL2_VALUE definitions above, depending on the revision of the LPC2000 device being used. -#endif - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 57600000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 4 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 18 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - - -#endif /* FREERTOS_CONFIG_H */ - - -#ifndef sbi -#define sbi(x,y) x|=(1 << (y)) -#endif - -#ifndef cbi -#define cbi(x,y) x&=~(1 << (y)) -#endif - -#ifndef tstb -#define tstb(x,y) (x & (1 << (y)) ? 1 : 0) -#endif - -#ifndef toggle -#define toggle(x,y) x^=(1 << (y)) -#endif - -#ifndef BIT -#define BIT(x) (1 << (x)) - - -#define VICVectAddr VICAddress -#define VICVectCntl4 VICVectPriority4 -typedef struct -{ - long xColumn; - signed char *pcMessage; -} xLCDMessage; - -#endif diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c deleted file mode 100644 index 5ddcf2dd1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c +++ /dev/null @@ -1,392 +0,0 @@ -/***************************************************************************** - * - * Project : lwIP Web - * Subproject : - * Name : portlcd.c - * Function : Routines for LCD - * Designer : K. Sterckx - * Creation date : 22/01/2007 - * Compiler : GNU ARM - * Processor : LPC2368 - * Last update : - * Last updated by : - * History : - * based on example code from NXP - * - ************************************************************************ - * - * This code is used to place text on the LCD. - * - ************************************************************************/ - -#include -#include "portlcd.h" -#include "FreeRTOS.h" -#include "task.h" - -/* Please note, on old MCB2300 board, the LCD_E bit is p1.30, on the new board -it's p1.31, please check the schematic carefully, and change LCD_CTRL and LCD_E -accordingly if you have a different board. */ - -/* LCD IO definitions */ -#define LCD_E 0x80000000 /* Enable control pin */ -#define LCD_RW 0x20000000 /* Read/Write control pin */ -#define LCD_RS 0x10000000 /* Data/Instruction control */ -#define LCD_CTRL 0xB0000000 /* Control lines mask */ -#define LCD_DATA 0x0F000000 /* Data lines mask */ - -/* Local variables */ -static unsigned int lcd_ptr; - -/* 8 user defined characters to be loaded into CGRAM (used for bargraph) */ -static const unsigned char UserFont[8][8] = { - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 }, - { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 }, - { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C }, - { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E }, - { 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } -}; - -/* Local Function Prototypes */ -static void lcd_write( unsigned int c ); -static void lcd_write_4bit( unsigned int c ); -static unsigned int lcd_read_stat( void ); -static void lcd_write_cmd( unsigned int c ); -static void lcd_write_data( unsigned int d ); -static void lcd_wait_busy( void ); - - -/****************************************************************************** -** Function name: lcd_write_4bit -** -** Descriptions: -** -** parameters: four bits to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write_4bit(unsigned int c) -{ - /* Write a 4-bit command to LCD controller. */ - FIO1DIR |= LCD_DATA | LCD_CTRL; - FIO1CLR = LCD_RW | LCD_DATA; - FIO1SET = (c & 0xF) << 24; - FIO1SET = LCD_E; - vTaskDelay(0); - FIO1CLR = LCD_E; - vTaskDelay(0); - return; -} - -/****************************************************************************** -** Function name: lcd_write -** -** Descriptions: -** -** parameters: word to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write(unsigned int c) -{ - /* Write data/command to LCD controller. */ - lcd_write_4bit (c >> 4); - lcd_write_4bit (c); - return; -} - -/****************************************************************************** -** Function name: lcd_read_stat -** -** Descriptions: -** -** parameters: None -** Returned value: status -** -******************************************************************************/ -static unsigned int lcd_read_stat(void) -{ - /* Read status of LCD controller (ST7066) */ - unsigned int stat; - - FIO1DIR &= ~LCD_DATA; - FIO1CLR = LCD_RS; - FIO1SET = LCD_RW; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat = (FIO1PIN >> 20) & 0xF0; - FIO1CLR = LCD_E; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat |= (FIO1PIN >> 24) & 0xF; - FIO1CLR = LCD_E; - return (stat); -} - -/****************************************************************************** -** Function name: lcd_wait_busy -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -static void lcd_wait_busy(void) -{ - /* Wait until LCD controller (ST7066) is busy. */ - unsigned int stat; - - do - { - stat = lcd_read_stat(); - } - while (stat & 0x80); /* Wait for busy flag */ - - return; -} - -/****************************************************************************** -** Function name: lcd_write_cmd -** -** Descriptions: -** -** parameters: command word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_cmd(unsigned int c) -{ - /* Write command to LCD controller. */ - lcd_wait_busy(); - FIO1CLR = LCD_RS; - lcd_write(c); - return; -} - -/****************************************************************************** -** Function name: lcd_write_data -** -** Descriptions: -** -** parameters: data word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_data(unsigned int d) -{ - /* Write data to LCD controller. */ - lcd_wait_busy(); - FIO1SET = LCD_RS; - lcd_write(d); - return; -} - -/****************************************************************************** -** Function name: LCD_init -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_init(void) -{ - /* Initialize the ST7066 LCD controller to 4-bit mode. */ - PINSEL3 = 0x00000000; -#if USE_FIO - SCS |= 0x00000001;/* set GPIOx to use Fast I/O */ -#endif - FIO1DIR |= LCD_CTRL | LCD_DATA; - FIO1CLR = LCD_RW | LCD_RS | LCD_DATA; - - lcd_write_4bit(0x3); /* Select 4-bit interface */ - vTaskDelay(100); - lcd_write_4bit(0x3); - vTaskDelay(100); - lcd_write_4bit(0x3); - lcd_write_4bit(0x2); - - lcd_write_cmd(0x28); /* 2 lines, 5x8 character matrix */ - lcd_write_cmd(0x0e); /* Display ctrl:Disp/Curs/Blnk=ON */ - lcd_write_cmd(0x06); /* Entry mode: Move right, no shift */ - - LCD_load( (unsigned char *)&UserFont, sizeof (UserFont) ); - LCD_cls(); - return; -} - -/****************************************************************************** -** Function name: LCD_load -** -** Descriptions: -** -** parameters: pointer to the buffer and counter -** Returned value: None -** -******************************************************************************/ -void LCD_load(unsigned char *fp, unsigned int cnt) -{ - /* Load user-specific characters into CGRAM */ - unsigned int i; - - lcd_write_cmd( 0x40 ); /* Set CGRAM address counter to 0 */ - for (i = 0; i < cnt; i++, fp++) - { - lcd_write_data( *fp ); - } - return; -} - -/****************************************************************************** -** Function name: LCD_gotoxy -** -** Descriptions: -** -** parameters: pixel X and Y -** Returned value: None -** -******************************************************************************/ -void LCD_gotoxy(unsigned int x, unsigned int y) -{ - /* Set cursor position on LCD display. Left corner: 1,1, right: 16,2 */ - unsigned int c; - - c = --x; - if (--y) - { - c |= 0x40; - } - lcd_write_cmd (c | 0x80); - lcd_ptr = y*16 + x; - return; -} - -/****************************************************************************** -** Function name: LCD_cls -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cls(void) -{ - /* Clear LCD display, move cursor to home position. */ - lcd_write_cmd (0x01); - LCD_gotoxy (1,1); - return; -} - -/****************************************************************************** -** Function name: LCD_cur_off -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cur_off(void) -{ - /* Switch off LCD cursor. */ - lcd_write_cmd(0x0c); - return; -} - - -/****************************************************************************** -** Function name: LCD_on -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_on(void) -{ - /* Switch on LCD and enable cursor. */ - lcd_write_cmd (0x0e); - return; -} - -/****************************************************************************** -** Function name: LCD_putc -** -** Descriptions: -** -** parameters: unsigned char character -** Returned value: None -** -******************************************************************************/ -void LCD_putc(unsigned char c) -{ - /* Print a character to LCD at current cursor position. */ - if (lcd_ptr == 16) - { - lcd_write_cmd (0xc0); - } - lcd_write_data(c); - lcd_ptr++; - return; -} - -/****************************************************************************** -** Function name: LCD_puts -** -** Descriptions: -** -** parameters: pointer to the buffer -** Returned value: None -** -******************************************************************************/ -void LCD_puts(unsigned char *sp) -{ - /* Print a string to LCD display. */ - while (*sp) - { - LCD_putc (*sp++); - } - return; -} - -/****************************************************************************** -** Function name: LCD_bargraph -** -** Descriptions: -** -** parameters: value and size -** Returned value: None -** -******************************************************************************/ -void LCD_bargraph(unsigned int val, unsigned int size) -{ - /* Print a bargraph to LCD display. */ - /* - val: value 0..100 % */ - /* - size: size of bargraph 1..16 */ - unsigned int i; - - val = val * size / 20; /* Display matrix 5 x 8 pixels */ - for (i = 0; i < size; i++) - { - if (val > 5) - { - LCD_putc(5); - val -= 5; - } - else - { - LCD_putc(val); - break; - } - } - return; -} diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h deleted file mode 100644 index 4742e4484..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h +++ /dev/null @@ -1,31 +0,0 @@ -/***************************************************************************** - * rtc.h: Header file for NXP LPC23xx/24xx Family Microprocessors - * - * Copyright(C) 2006, NXP Semiconductor - * All rights reserved. - * - * History - * 2006.07.13 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __PORTLCD_H -#define __PORTLCD_H - -extern void LCD_init(void); -extern void LCD_load(unsigned char *fp, unsigned int cnt); -extern void LCD_gotoxy(unsigned int x, unsigned int y); -extern void LCD_cls(void); -extern void LCD_cur_off(void); -extern void LCD_on(void); -extern void LCD_putc(unsigned char c); -extern void LCD_puts(unsigned char *sp); -extern void LCD_bargraph(unsigned int val, unsigned int size); - -extern void LCD_putnibble(unsigned char nibble); -extern void LCD_puthexbyte(unsigned char abyte); - - -#endif /* end __PORTLCD_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c deleted file mode 100644 index 2f79f44e9..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstFIRST_IO ( ( unsigned long ) 0x01 ) -#define partstNUM_LEDS ( 8 ) -#define partstALL_OUTPUTS_OFF ( ( unsigned long ) 0xff ) - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - PINSEL10 = 0; - FIO2DIR = 0x000000FF; - FIO2MASK = 0x00000000; - FIO2CLR = 0xFF; - SCS |= (1<<0); //fast mode for port 0 and 1 - - FIO2CLR = partstALL_OUTPUTS_OFF; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned long ulLED = partstFIRST_IO; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port */ - ulLED <<= ( unsigned long ) uxLED; - - /* Set of clear the output. */ - if( xValue ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO, ulCurrentState; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED - attached. */ - ulLED <<= ( unsigned long ) uxLED; - - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = FIO2PIN; - if( ulCurrentState & ulLED ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} - -/*-----------------------------------------------------------*/ -unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO; - - ulLED <<= ( unsigned long ) uxLED; - - return ( FIO2PIN & ulLED ); -} - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp deleted file mode 100644 index 6c4b95075..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs deleted file mode 100644 index 7aad07d5d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c deleted file mode 100644 index ce0bda6e3..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Environment includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "portlcd.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" - -/* Demo application definitions. */ -#define mainQUEUE_SIZE ( 3 ) -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainFLASH_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) - - -/* - * Checks the status of all the demo tasks then prints a message to the - * CrossStudio terminal IO windows. The message will be either PASS or FAIL - * depending on the status of the demo applications tasks. A FAIL status will - * be latched. - * - * Messages are not written directly to the terminal, but passed to vPrintTask - * via a queue. - */ -static void vCheckTask( void *pvParameters ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The LCD is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the LCD directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vLCDTask( void *pvParameters ); - -/* The queue used to send messages to the LCD task. */ -QueueHandle_t xLCDQueue; - -/*-----------------------------------------------------------*/ - -int main (void) -{ - /* Setup the led's on the MCB2300 board */ - vParTestInitialise(); - - /* Create the queue used by the LCD task. Messages for display on the LCD - are received via this queue. */ - xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) ); - - /* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks - these serve no useful purpose other than - to demonstrate the FreeRTOS API being used and to test the port. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartLEDFlashTasks( mainFLASH_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - xTaskCreate( vLCDTask, "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - return 0; -} -/*-----------------------------------------------------------*/ - -static void vCheckTask( void *pvParameters ) -{ -portBASE_TYPE xErrorOccurred = pdFALSE; -TickType_t xLastExecutionTime; -unsigned portBASE_TYPE uxColumn = 0; -xLCDMessage xMessage; - - xLastExecutionTime = xTaskGetTickCount(); - - xMessage.xColumn = 0; - xMessage.pcMessage = "PASS"; - - for( ;; ) - { - /* Perform this check every mainCHECK_DELAY milliseconds. */ - vTaskDelayUntil( &xLastExecutionTime, mainCHECK_DELAY ); - - /* Has an error been found in any task? */ - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - LCD_cls(); - xMessage.xColumn++; - LCD_gotoxy( ( uxColumn & 0x07 ) + 1, ( uxColumn & 0x01 ) + 1 ); - - if( xErrorOccurred == pdTRUE ) - { - xMessage.pcMessage = "FAIL"; - } - - /* Send the message to the LCD gatekeeper for display. */ - xQueueSend( xLCDQueue, &xMessage, portMAX_DELAY ); - } -} -/*-----------------------------------------------------------*/ - -void vLCDTask( void *pvParameters ) -{ -xLCDMessage xMessage; - - /* Initialise the LCD and display a startup message. */ - LCD_init(); - LCD_cur_off(); - LCD_cls(); - LCD_gotoxy( 1, 1 ); - LCD_puts( ( signed char * ) "www.FreeRTOS.org" ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - while( xQueueReceive( xLCDQueue, &xMessage, portMAX_DELAY ) != pdPASS ); - - /* Display the message. Print each message to a different position. */ - LCD_cls(); - LCD_gotoxy( ( xMessage.xColumn & 0x07 ) + 1, ( xMessage.xColumn & 0x01 ) + 1 ); - LCD_puts( xMessage.pcMessage ); - } - -} -/*-----------------------------------------------------------*/ - -/* Keep the compiler quiet. */ -#include -int __putchar( int c ) -{ - return EOF; -} - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c deleted file mode 100644 index 7d8620fe8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* The interrupt entry point. */ -void vEMAC_ISR_Wrapper( void ) __attribute__((naked)); - -/* The function that actually performs the interrupt processing. This must be -separate to the wrapper to ensure the correct stack frame is set up. */ -void vEMAC_ISR_Handler( void ) __attribute__((noinline)); - -extern SemaphoreHandle_t xEMACSemaphore; - -void vEMAC_ISR_Handler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Clear the interrupt. */ - IntClear = 0xffff; - VICVectAddr = 0; - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - - if( xHigherPriorityTaskWoken ) - { - /* If the uIP task was unblocked then calling "Yield from ISR" here - will ensure the interrupt returns directly to the uIP task, if it - is the highest priority read task. */ - portYIELD_FROM_ISR(); - } -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Wrapper( void ) -{ - /* Save the context of the interrupted task. */ - portSAVE_CONTEXT(); - - /* Call the handler function. This must be separate from the wrapper - function to ensure the correct stack frame is set up. */ - __asm volatile( "bl vEMAC_ISR_Handler" ); - - /* Restore the context of whichever task is going to run next. */ - portRESTORE_CONTEXT(); -} - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c deleted file mode 100644 index a5a464474..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c +++ /dev/null @@ -1,412 +0,0 @@ -/****************************************************************** - ***** ***** - ***** Name: cs8900.c ***** - ***** Ver.: 1.0 ***** - ***** Date: 07/05/2001 ***** - ***** Auth: Andreas Dannenberg ***** - ***** HTWK Leipzig ***** - ***** university of applied sciences ***** - ***** Germany ***** - ***** Func: ethernet packet-driver for use with LAN- ***** - ***** controller CS8900 from Crystal/Cirrus Logic ***** - ***** ***** - ***** Keil: Module modified for use with Philips ***** - ***** LPC2378 EMAC Ethernet controller ***** - ***** ***** - ******************************************************************/ - -/* Adapted from file originally written by Andreas Dannenberg. Supplied with permission. */ - -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* The semaphore used to wake the uIP task when data arives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -static unsigned short *rptr; -static unsigned short *tptr; - -// easyWEB internal function -// help function to swap the byte order of a WORD - -static unsigned short SwapBytes(unsigned short Data) -{ - return (Data >> 8) | (Data << 8); -} - -// Keil: function added to write PHY -void write_PHY (int PhyReg, int Value) -{ - unsigned int tout; - - MADR = DP83848C_DEF_ADR | PhyReg; - MWTD = Value; - - /* Wait utill operation completed */ - tout = 0; - for (tout = 0; tout < MII_WR_TOUT; tout++) { - if ((MIND & MIND_BUSY) == 0) { - break; - } - } -} - - -// Keil: function added to read PHY -unsigned short read_PHY (unsigned char PhyReg) -{ - unsigned int tout; - - MADR = DP83848C_DEF_ADR | PhyReg; - MCMD = MCMD_READ; - - /* Wait until operation completed */ - tout = 0; - for (tout = 0; tout < MII_RD_TOUT; tout++) { - if ((MIND & MIND_BUSY) == 0) { - break; - } - } - MCMD = 0; - return (MRDD); -} - - -// Keil: function added to initialize Rx Descriptors -void rx_descr_init (void) -{ - unsigned int i; - - for (i = 0; i < NUM_RX_FRAG; i++) { - RX_DESC_PACKET(i) = RX_BUF(i); - RX_DESC_CTRL(i) = RCTRL_INT | (ETH_FRAG_SIZE-1); - RX_STAT_INFO(i) = 0; - RX_STAT_HASHCRC(i) = 0; - } - - /* Set EMAC Receive Descriptor Registers. */ - RxDescriptor = RX_DESC_BASE; - RxStatus = RX_STAT_BASE; - RxDescriptorNumber = NUM_RX_FRAG-1; - - /* Rx Descriptors Point to 0 */ - RxConsumeIndex = 0; -} - - -// Keil: function added to initialize Tx Descriptors -void tx_descr_init (void) { - unsigned int i; - - for (i = 0; i < NUM_TX_FRAG; i++) { - TX_DESC_PACKET(i) = TX_BUF(i); - TX_DESC_CTRL(i) = 0; - TX_STAT_INFO(i) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - TxDescriptor = TX_DESC_BASE; - TxStatus = TX_STAT_BASE; - TxDescriptorNumber = NUM_TX_FRAG-1; - - /* Tx Descriptors Point to 0 */ - TxProduceIndex = 0; -} - - -// configure port-pins for use with LAN-controller, -// reset it and send the configuration-sequence - -portBASE_TYPE Init_EMAC(void) -{ -portBASE_TYPE xReturn = pdPASS; -static portBASE_TYPE xAttempt = 0; -// Keil: function modified to access the EMAC -// Initializes the EMAC ethernet controller - volatile unsigned int regv,tout,id1,id2; - - /* Enable P1 Ethernet Pins. */ - PINSEL2 = configPINSEL2_VALUE; - PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005; - - /* Power Up the EMAC controller. */ - PCONP |= 0x40000000; - vTaskDelay( 10 ); - - /* Reset all EMAC internal modules. */ - MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | - MAC1_SIM_RES | MAC1_SOFT_RES; - Command = CR_REG_RES | CR_TX_RES | CR_RX_RES; - - /* A short delay after reset. */ - vTaskDelay( 10 ); - - /* Initialize MAC control registers. */ - MAC1 = MAC1_PASS_ALL; - MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - MAXF = ETH_MAX_FLEN; - CLRT = CLRT_DEF; - IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - SUPP = SUPP_RES_RMII; - SUPP = 0; - - /* Put the DP83848C in reset mode */ - write_PHY (PHY_REG_BMCR, 0x8000); - write_PHY (PHY_REG_BMCR, 0x8000); - - /* Wait for hardware reset to end. */ - for (tout = 0; tout < 100; tout++) { - vTaskDelay( 200 ); - regv = read_PHY (PHY_REG_BMCR); - if (!(regv & 0x8000)) { - /* Reset complete */ - break; - } - } - - /* Check if this is a DP83848C PHY. */ - id1 = read_PHY (PHY_REG_IDR1); - id2 = read_PHY (PHY_REG_IDR2); - if (((id1 << 16) | (id2 & 0xFFF0)) == DP83848C_ID) { - /* Configure the PHY device */ - - /* Use autonegotiation about the link speed. */ - write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG); - /* Wait to complete Auto_Negotiation. */ - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 200 ); - regv = read_PHY (PHY_REG_BMSR); - if (regv & 0x0020) { - /* Autonegotiation Complete. */ - break; - } - } - } - else - { - xReturn = pdFAIL; - } - - /* Check the link status. */ - if( xReturn == pdPASS ) - { - xReturn = pdFAIL; - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 200 ); - regv = read_PHY (PHY_REG_STS); - if (regv & 0x0001) { - /* Link is on. */ - xReturn = pdPASS; - break; - } - } - } - - if( xReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if (regv & 0x0004) { - /* Full duplex is enabled. */ - MAC2 |= MAC2_FULL_DUP; - Command |= CR_FULL_DUP; - IPGT = IPGT_FULL_DUP; - } - else { - /* Half duplex mode. */ - IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if (regv & 0x0002) { - /* 10MBit mode. */ - SUPP = 0; - } - else { - /* 100MBit mode. */ - SUPP = SUPP_SPEED; - } - - /* Set the Ethernet MAC Address registers */ - SA0 = (emacETHADDR0 << 8) | emacETHADDR1; - SA1 = (emacETHADDR2 << 8) | emacETHADDR3; - SA2 = (emacETHADDR4 << 8) | emacETHADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - rx_descr_init (); - tx_descr_init (); - - /* Receive Broadcast and Perfect Match Packets */ - RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Create the semaphore used ot wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Reset all interrupts */ - IntClear = 0xFFFF; - - /* Enable receive and transmit mode of MAC Ethernet core */ - Command |= (CR_RX_EN | CR_TX_EN); - MAC1 |= MAC1_REC_EN; - } - - return xReturn; -} - - -// reads a word in little-endian byte order from RX_BUFFER - -unsigned short ReadFrame_EMAC(void) -{ - return (*rptr++); -} - -// reads a word in big-endian byte order from RX_FRAME_PORT -// (useful to avoid permanent byte-swapping while reading -// TCP/IP-data) - -unsigned short ReadFrameBE_EMAC(void) -{ - unsigned short ReturnValue; - - ReturnValue = SwapBytes (*rptr++); - return (ReturnValue); -} - - -// copies bytes from frame port to MCU-memory -// NOTES: * an odd number of byte may only be transfered -// if the frame is read to the end! -// * MCU-memory MUST start at word-boundary - -void CopyFromFrame_EMAC(void *Dest, unsigned short Size) -{ - unsigned short * piDest; // Keil: Pointer added to correct expression - - piDest = Dest; // Keil: Line added - while (Size > 1) { - *piDest++ = ReadFrame_EMAC(); - Size -= 2; - } - - if (Size) { // check for leftover byte... - *(unsigned char *)piDest = (char)ReadFrame_EMAC();// the LAN-Controller will return 0 - } // for the highbyte -} - -// does a dummy read on frame-I/O-port -// NOTE: only an even number of bytes is read! - -void DummyReadFrame_EMAC(unsigned short Size) // discards an EVEN number of bytes -{ // from RX-fifo - while (Size > 1) { - ReadFrame_EMAC(); - Size -= 2; - } -} - -// Reads the length of the received ethernet frame and checks if the -// destination address is a broadcast message or not -// returns the frame length -unsigned short StartReadFrame(void) { - unsigned short RxLen; - unsigned int idx; - - idx = RxConsumeIndex; - RxLen = (RX_STAT_INFO(idx) & RINFO_SIZE) - 3; - rptr = (unsigned short *)RX_DESC_PACKET(idx); - return(RxLen); -} - -void EndReadFrame(void) { - unsigned int idx; - - /* DMA free packet. */ - idx = RxConsumeIndex; - - if (++idx == NUM_RX_FRAG) - idx = 0; - - RxConsumeIndex = idx; -} - -unsigned int CheckFrameReceived(void) { // Packet received ? - - if (RxProduceIndex != RxConsumeIndex) // more packets received ? - return(1); - else - return(0); -} - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -unsigned int uiLen = 0; - - if( RxProduceIndex != RxConsumeIndex ) - { - uiLen = StartReadFrame(); - CopyFromFrame_EMAC( ucBuffer, uiLen ); - EndReadFrame(); - } - - return uiLen; -} - -// requests space in EMAC memory for storing an outgoing frame - -void RequestSend(void) -{ - unsigned int idx; - - idx = TxProduceIndex; - tptr = (unsigned short *)TX_DESC_PACKET(idx); -} - -// check if ethernet controller is ready to accept the -// frame we want to send - -unsigned int Rdy4Tx(void) -{ - return (1); // the ethernet controller transmits much faster -} // than the CPU can load its buffers - - -// writes a word in little-endian byte order to TX_BUFFER -void WriteFrame_EMAC(unsigned short Data) -{ - *tptr++ = Data; -} - -// copies bytes from MCU-memory to frame port -// NOTES: * an odd number of byte may only be transfered -// if the frame is written to the end! -// * MCU-memory MUST start at word-boundary - -void CopyToFrame_EMAC(void *Source, unsigned int Size) -{ - unsigned short * piSource; - - piSource = Source; - Size = (Size + 1) & 0xFFFE; // round Size up to next even number - while (Size > 0) { - WriteFrame_EMAC(*piSource++); - Size -= 2; - } -} - -void DoSend_EMAC(unsigned short FrameSize) -{ - unsigned int idx; - - idx = TxProduceIndex; - TX_DESC_CTRL(idx) = FrameSize | TCTRL_LAST; - if (++idx == NUM_TX_FRAG) idx = 0; - TxProduceIndex = idx; -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h deleted file mode 100644 index c3634217d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE Init_EMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void CopyToFrame_EMAC(void *Source, unsigned int Size); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void RequestSend(void); -unsigned int Rdy4Tx(void); -void DoSend_EMAC(unsigned short FrameSize); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index a1de4e887..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,276 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus[ 3 ]; -unsigned long ulString; -extern unsigned long uxParTextGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - for( ulString = 0; ulString < 4; ulString++ ) - { - if( uxParTextGetLED( ulString + 5 ) ) - { - pcStatus[ ulString ] = "checked"; - } - else - { - pcStatus[ ulString ] = ""; - } - } - - sprintf( uip_appdata, - "LED 2.5,"\ - "LED 2.6,"\ - "LED 2.7"\ - "

"\ - "", - pcStatus[ 0 ], - pcStatus[ 1 ], - pcStatus[ 2 ] ); - - return strlen( uip_appdata ); -} - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 4e7ffef6e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | 65K JPG | Connections | IO -

-


-

-

Task statistics

-This page shows dynamically generated task state information. The page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index d87ec25f8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | 65K JPG | Connections | IO -

-


-LED and LCD IO
- -

-This page demonstrates two way communication. By using the check boxes and text boxes this WEB interface can influence the program execution.

-Use the check boxes to select the LED's to turn on or off, enter text to display on the LCD, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 5d24c32c4..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,22 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | 65K JPG | Connections | IO -

-


-
-

Network connections

-This page displays dynamically generated status information on the TCP/IP connections. -

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index a061bb257..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,7113 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_image_jpg[] = { - /* /image.jpg */ - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x2, 0x69, 0x4, 0x39, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x69, - 0x3c, 0xd0, 0x1, 0xba, 0x92, 0x8a, 0x28, 00, 0xe9, 0x4d, - 0x3c, 0xd0, 0x4e, 0x69, 0xa5, 0xb1, 0x40, 0x1, 0x61, 0x8a, - 0x6e, 0x69, 0x19, 0xb8, 0xa6, 0x16, 0xa0, 0x7, 0x31, 0xe7, - 0xe9, 0x4d, 0x2d, 0x4c, 0x67, 0xe2, 0xa3, 0x66, 0xa0, 0x7, - 0xb3, 0xd3, 0xc, 0x83, 0xd6, 0xa2, 0x79, 0x30, 0x9, 0x27, - 00, 0x56, 0x44, 0xba, 0xdb, 0xcb, 0x2b, 0x47, 0x65, 0x67, - 0x3d, 0xe1, 0x1d, 0x25, 0x45, 0xfd, 0xd1, 0xfa, 0x37, 0x43, - 0xe9, 0xc5, 0x67, 0x3a, 0x91, 0xa7, 0xf1, 0x18, 0xd4, 0xad, - 0xa, 0x4b, 0xde, 0x66, 0xcb, 0x3d, 0x56, 0xb9, 0xbe, 0x82, - 0xd0, 0x6e, 0x9a, 0x68, 0xe2, 0x7, 0xbc, 0x8c, 0x16, 0xb9, - 0x6b, 0x8d, 0x27, 0xc7, 0x7a, 0x8b, 0x3a, 0x8b, 0x8d, 0x3b, - 0x4f, 0x85, 0xb8, 0x6, 0x25, 0x6f, 0x33, 0x1e, 0xe4, 0xe7, - 0x9a, 0xe7, 0xef, 0x7e, 0x4, 0x6a, 0x1a, 0xdb, 0x97, 0xd5, - 0x3c, 0x47, 0xa8, 0xdc, 0x67, 0x1f, 0x27, 0xda, 0x9b, 0x60, - 0xfa, 0xc, 0x57, 0x8d, 0x5f, 0x1f, 0x89, 0x4a, 0xd8, 0x6c, - 0x3c, 0xa4, 0xfc, 0xda, 0x8a, 0xff, 00, 0x3f, 0xc0, 0xf0, - 0x71, 0x39, 0x9e, 0x31, 0x2b, 0x60, 0xf0, 0x92, 0x9b, 0xfe, - 0xf3, 0x51, 0x5f, 0xab, 0xfc, 0xe, 0xca, 0xf7, 0xc7, 0x1a, - 0xd, 0x8e, 0x7c, 0xfd, 0x62, 0xc6, 0x3c, 0xc, 0x9c, 0xce, - 0xbf, 0xe3, 0x58, 0xd2, 0xfc, 0x5e, 0xf0, 0x7c, 0x6d, 0x8f, - 0xf8, 0x48, 0x2c, 0x5b, 0xfd, 0xd9, 0x97, 0x8f, 0xd6, 0xb9, - 0xa1, 0xfb, 0x2b, 0xe8, 0x44, 0x7c, 0xf7, 0x37, 0x4, 0xf5, - 0xe6, 0x41, 0xfe, 0x15, 0x5e, 0x4f, 0xd9, 0x43, 0x44, 0x60, - 0x76, 0xdd, 0x4f, 0xf8, 0xb8, 0xff, 00, 0xe2, 0x6b, 0xc6, - 0x9e, 0x33, 0x88, 0x37, 0x86, 0x1a, 0xb, 0xfe, 0xde, 0x6f, - 0xf4, 0x47, 0xcf, 0xd4, 0xc7, 0xf1, 0x4b, 0xd6, 0x18, 0x3a, - 0x6b, 0xfe, 0xdf, 0x6f, 0xf4, 0x47, 0x55, 0x1f, 0xc6, 0xf, - 0x7, 0xbb, 0x63, 0xfb, 0x7e, 0xc1, 0x7d, 0xda, 0x75, 0xff, - 00, 0x1a, 0xb0, 0xbf, 0x14, 0xbc, 0x28, 0xdf, 0x77, 0xc4, - 0x3a, 0x71, 0x3f, 0xf5, 0xf0, 0xb5, 0xc0, 0xcb, 0xfb, 0x25, - 0xe9, 0xe7, 0xee, 0x5e, 0x4a, 0x3e, 0xb2, 0xf, 0xfe, 0x26, - 0xa9, 0x4b, 0xfb, 0x24, 0x45, 0xfc, 0x17, 0xa7, 0xf1, 0x71, - 0xff, 00, 0xc4, 0xd7, 0x33, 0xcc, 0x38, 0x8e, 0x3b, 0xe1, - 0x22, 0xff, 00, 0xed, 0xe3, 0x93, 0xfb, 0x53, 0x8b, 0x21, - 0xbe, 0xa, 0xf, 0xd2, 0x4c, 0xf5, 0x1, 0xf1, 0xf, 0xc3, - 0x92, 0xfd, 0xdd, 0x72, 0xc0, 0xfd, 0x2e, 0x17, 0xfc, 0x6a, - 0x68, 0xfc, 0x69, 0xa2, 0x49, 0xf7, 0x75, 0x7b, 0x26, 0xff, - 00, 0xb7, 0x85, 0xff, 00, 0x1a, 0xf2, 0x9, 0x7f, 0x64, - 0x89, 0xf9, 0xf2, 0xef, 0x87, 0xe3, 0x27, 0xff, 00, 0x63, - 0x54, 0xa4, 0xfd, 0x92, 0x35, 0x31, 0xfe, 0xae, 0xf6, 0x2f, - 0xc6, 0x4f, 0xfe, 0xc6, 0xa7, 0xfb, 0x5f, 0x88, 0x23, 0xbe, - 0x5, 0x3f, 0xfb, 0x7b, 0xfe, 0x1, 0x1f, 0xdb, 0xbc, 0x51, - 0xd, 0xf2, 0xd4, 0xfd, 0x25, 0xff, 00, 00, 0xf7, 0x45, - 0xf1, 0x46, 0x94, 0xdd, 0x35, 0x2b, 0x33, 0xff, 00, 0x6d, - 0xd7, 0xfc, 0x69, 0xdf, 0xf0, 0x90, 0x69, 0xc4, 0xf1, 0x7f, - 0x6a, 0x7f, 0xed, 0xb2, 0xff, 00, 0x8d, 0x7c, 0xfd, 0x27, - 0xec, 0x9b, 0xae, 0xa3, 0x65, 0x2e, 0xa0, 0xc8, 0x3d, 0x7c, - 0xc3, 0xff, 00, 0xc4, 0xd4, 0x2d, 0xfb, 0x2f, 0x78, 0xb2, - 0xc, 0x98, 0xef, 0x50, 0x7f, 0xbb, 0x33, 0xff, 00, 0x85, - 0x4f, 0xf6, 0xf6, 0x75, 0x1f, 0x8b, 0x2f, 0x7f, 0xf8, 0x17, - 0xfc, 0x2, 0x7f, 0xd6, 0x6e, 0x21, 0x8f, 0xc5, 0x95, 0x3f, - 0x94, 0xbf, 0xe0, 0x1f, 0x45, 0xae, 0xaf, 0x66, 0xe3, 0xe5, - 0xba, 0x81, 0xbe, 0x92, 0x3, 0xfd, 0x6a, 0x44, 0xbe, 0x85, - 0xfe, 0xec, 0xa8, 0xdf, 0x46, 0x15, 0xf3, 0x63, 0x7c, 0x1, - 0xf1, 0xf5, 0xa8, 0xc4, 0x5a, 0x9c, 0xe0, 0x7a, 0x25, 0xcc, - 0xa3, 0xfa, 0x53, 0x4f, 0xc2, 0xf, 0x89, 0x96, 0xdf, 0x73, - 0x56, 0xd4, 0x47, 0xfb, 0x97, 0x93, 0xa, 0xa5, 0xc4, 0x98, - 0xf8, 0xfc, 0x78, 0x9, 0xfc, 0x8a, 0xff, 00, 0x5b, 0xb3, - 0x38, 0xff, 00, 0x13, 0x2b, 0x9f, 0xc9, 0xdf, 0xf4, 0x3e, - 0x9a, 0x12, 0x83, 0x82, 0xf, 0x14, 0xbe, 0x76, 0x3b, 0xd7, - 0xcc, 0x3f, 0xf0, 0x82, 0x7c, 0x54, 0xb5, 0x1b, 0x46, 0xb1, - 0xab, 0x37, 0xd6, 0xee, 0x73, 0x4a, 0x74, 0xaf, 0x8a, 0xb6, - 0x60, 0xe6, 0xff, 00, 0x51, 0x7c, 0xfa, 0xcb, 0x31, 0xaa, - 0xff, 00, 0x5a, 0xe7, 0x1f, 0x8f, 0x5, 0x51, 0x16, 0xb8, - 0xda, 0xa4, 0x7f, 0x89, 0x97, 0xd5, 0x5f, 0x23, 0xe9, 0xef, - 0x3b, 0xde, 0x81, 0x2e, 0x4d, 0x7c, 0xc4, 0xba, 0xa7, 0xc5, - 0x3b, 0x30, 0x3e, 0x7b, 0xa9, 0x31, 0xfd, 0xf4, 0x95, 0xa9, - 0xe3, 0xc7, 0xdf, 0x14, 0x2d, 0x7a, 0xc0, 0xcd, 0x83, 0xd1, - 0xad, 0x1c, 0xff, 00, 0x4a, 0xa5, 0xc5, 0xf8, 0x75, 0xf1, - 0xd0, 0xa8, 0xbf, 0xed, 0xd2, 0xd7, 0x1d, 0xe1, 0x57, 0xf1, - 0x30, 0xd5, 0x63, 0xff, 00, 0x6e, 0xff, 00, 0xc1, 0x3e, - 0x9b, 0xf3, 0x3d, 0xe9, 0xc2, 0x5e, 0x3a, 0xd7, 0xcc, 0xf, - 0xf1, 0x7b, 0xe2, 0x64, 0x44, 0x6e, 0xb1, 0x8b, 0x8f, 0xfa, - 0x71, 0x7a, 0x61, 0xf8, 0xe3, 0xf1, 0x12, 0x13, 0xf3, 0xe9, - 0xb0, 0x37, 0xd6, 0xcd, 0xff, 00, 0xc6, 0x9f, 0xfa, 0xe5, - 0x97, 0x2f, 0x8a, 0x13, 0x5f, 0xf6, 0xef, 0xfc, 0x11, 0xff, - 00, 0xc4, 0x40, 0xca, 0x96, 0xf0, 0xa8, 0xbf, 0xed, 0xcf, - 0xf8, 0x27, 0xd4, 0x7e, 0x77, 0xbd, 0x1e, 0x6e, 0x7b, 0xd7, - 0xcb, 0x87, 0xf6, 0x83, 0xf1, 0xdc, 0x64, 0xee, 0xd2, 0xac, - 0xbf, 0x1b, 0x59, 0x7, 0xfe, 0xcd, 0x49, 0xff, 00, 0xd, - 0x25, 0xe3, 0x44, 0xfb, 0xda, 0x56, 0x9c, 0x47, 0xbc, 0x12, - 0xff, 00, 0xf1, 0x55, 0x4b, 0x8d, 0x32, 0xae, 0xae, 0x4b, - 0xfe, 0xdd, 0x63, 0x5e, 0x20, 0xe4, 0x97, 0xd5, 0xcd, 0x7f, - 0xdb, 0xac, 0xfa, 0x99, 0x65, 0xf7, 0xa7, 0xf9, 0x9e, 0xe2, - 0xbe, 0x5f, 0x87, 0xf6, 0x9c, 0xf1, 0xa, 0xf1, 0x36, 0x95, - 0x69, 0xff, 00, 00, 0x89, 0xff, 00, 0xf8, 0xba, 0xbf, - 0x6f, 0xfb, 0x51, 0xdd, 0xab, 0x9f, 0xb4, 0x69, 0x23, 0x18, - 0xff, 00, 0x96, 0x71, 0x9c, 0xfe, 0xaf, 0x5a, 0xc7, 0x8c, - 0x32, 0x89, 0x7f, 0xcb, 0xc6, 0xbe, 0x4c, 0xe8, 0x8f, 0x1e, - 0x64, 0x52, 0xde, 0xab, 0x5e, 0xa9, 0x9f, 0x48, 0xf9, 0x98, - 0xf4, 0xa5, 0x12, 0xe4, 0xd7, 0xcf, 0x91, 0x7e, 0xd4, 0xd6, - 0x63, 0x1e, 0x66, 0x91, 0x74, 0x7d, 0x76, 0xa2, 0xff, 00, - 0xf1, 0x75, 0x79, 0x3f, 0x6a, 0xad, 0xb, 0x1f, 0x36, 0x91, - 0xa8, 0xaf, 0xe0, 0x9f, 0xfc, 0x55, 0x75, 0x47, 0x8a, 0x72, - 0x89, 0x7f, 0xcb, 0xf4, 0xbe, 0xf3, 0xb2, 0x3c, 0x69, 0x90, - 0xcf, 0xfe, 0x62, 0x52, 0xfb, 0xcf, 0x78, 0xf3, 0x7, 0xf9, - 0x34, 0x79, 0x9e, 0xff, 00, 0xad, 0x78, 0x72, 0x7e, 0xd4, - 0xbe, 0x1c, 0x3f, 0x7b, 0x4f, 0xd4, 0x53, 0xfe, 00, 0xa7, - 0xff, 00, 0x66, 0xab, 0x9, 0xfb, 0x4f, 0xf8, 0x51, 0x86, - 0x5a, 0x1b, 0xf4, 0xfa, 0xc2, 0x3f, 0xc6, 0xb6, 0x5c, 0x49, - 0x94, 0x3f, 0xf9, 0x88, 0x8f, 0xde, 0x74, 0x2e, 0x2e, 0xc8, - 0xa5, 0xff, 00, 0x31, 0x70, 0xfb, 0xcf, 0x69, 0xf3, 0x7e, - 0xbf, 0x9d, 0x1e, 0x65, 0x78, 0xe2, 0xfe, 0xd3, 0x7e, 0xe, - 0x3f, 0x79, 0xef, 0x57, 0xeb, 0x6e, 0x7f, 0xc6, 0xad, 0xc5, - 0xfb, 0x48, 0xf8, 0x32, 0x5c, 0x7f, 0xa5, 0xdc, 0x2f, 0xfb, - 0xf0, 0xe3, 0xfa, 0xd6, 0xd1, 0xcf, 0xf2, 0xa9, 0x6d, 0x89, - 0x87, 0xfe, 0x4, 0x8d, 0xe3, 0xc4, 0xf9, 0x24, 0xb6, 0xc5, - 0xc3, 0xff, 00, 0x2, 0x47, 0xac, 0xf9, 0x9e, 0xf4, 0xbe, - 0x65, 0x79, 0x8c, 0x5f, 0x1f, 0xfc, 0x1b, 0x2e, 0xdf, 0xf8, - 0x99, 0x85, 0xcf, 0xf7, 0xb0, 0x31, 0xfa, 0xd5, 0xf8, 0x7e, - 0x34, 0x78, 0x42, 0x6f, 0xf9, 0x8e, 0x59, 0xa7, 0x19, 0xf9, - 0xe7, 0x41, 0xff, 00, 0xb3, 0x57, 0x44, 0x73, 0x7c, 0xbe, - 0x7f, 0xd, 0x78, 0xbf, 0xfb, 0x79, 0x1d, 0x70, 0xcf, 0x72, - 0xba, 0x9a, 0x47, 0x13, 0x7, 0xff, 00, 0x6f, 0x23, 0xd0, - 0x77, 0xe0, 0x50, 0x1e, 0xb8, 0xc8, 0x3e, 0x2a, 0xf8, 0x4a, - 0x60, 0xf, 0xfc, 0x24, 0xba, 0x52, 0x7b, 0x3d, 0xec, 0x40, - 0xff, 00, 0xe8, 0x55, 0x6d, 0x3e, 0x21, 0xf8, 0x6a, 0x4f, - 0xb9, 0xe2, 0x1d, 0x29, 0x8f, 0xb5, 0xec, 0x7f, 0xfc, 0x55, - 0x75, 0x47, 0x1b, 0x85, 0x96, 0xaa, 0xac, 0x7e, 0xf4, 0x76, - 0x47, 0x31, 0xc1, 0xcf, 0x58, 0xd6, 0x8f, 0xfe, 0x4, 0xbf, - 0xcc, 0xea, 0x77, 0xfb, 0x8a, 0x5f, 0x37, 0xde, 0xb9, 0xf8, - 0xbc, 0x5d, 0xa3, 0x4e, 0x71, 0x1e, 0xaf, 0x63, 0x21, 0xff, - 00, 0x66, 0xe5, 0xf, 0xf5, 0xab, 0x91, 0x6a, 0xd6, 0x93, - 0xe3, 0xcb, 0xbb, 0x81, 0xf3, 0xfd, 0xd9, 0x1, 0xad, 0xe3, - 0x5a, 0x94, 0xbe, 0x19, 0x27, 0xf3, 0x47, 0x4c, 0x6b, 0xd2, - 0x9f, 0xc3, 0x34, 0xfe, 0x68, 0xd4, 0xf3, 0x7d, 0xe8, 0xf3, - 0x33, 0x55, 0x16, 0x65, 0x70, 0xa, 0xb0, 0x61, 0xea, 0x29, - 0xc2, 0x60, 0x3b, 0xd6, 0xd7, 0x46, 0xd7, 0x45, 0xc5, 0x7c, - 0xa, 0x5f, 0x32, 0xa9, 0x89, 0x81, 0xe8, 0x69, 0x44, 0x99, - 0xef, 0x4a, 0xe8, 0x2e, 0x8b, 0x7e, 0x65, 0x1e, 0x66, 0x6a, - 0xb2, 0xc8, 0x3d, 0x73, 0x4e, 0xf3, 0x68, 0xb8, 0xc9, 0xf7, - 0x51, 0xba, 0xa1, 0xf3, 0x30, 0x29, 0x77, 0xd3, 0x2, 0x75, - 0x6a, 0x5d, 0xd5, 0x58, 0x3e, 0x29, 0x7c, 0xd3, 0x40, 0x16, - 0x37, 0x52, 0xef, 0xf7, 0xaa, 0xde, 0x65, 0x28, 0x93, 0x34, - 0x1, 0x63, 0x7f, 0xbd, 0x1b, 0xea, 0x10, 0xe2, 0x97, 0x78, - 0xf5, 0xa0, 0x9, 0xb3, 0xef, 0x4b, 0xba, 0xa0, 0xdf, 0xef, - 0x49, 0xbc, 0xd0, 0x4, 0xfb, 0xe9, 0x77, 0x54, 0x1b, 0xa9, - 0x43, 0xe4, 0xd0, 0x4, 0xf9, 0xa3, 0x35, 0x16, 0xfa, 0x5d, - 0xf4, 0x1, 0x26, 0x68, 0xcd, 0x47, 0xba, 0x8d, 0xd4, 0x1, - 0x28, 0xa7, 0x6e, 0xa8, 0x37, 0xfd, 0x28, 0xde, 0x7d, 0x68, - 0x2, 0x7d, 0xdf, 0x5a, 0x37, 0x7d, 0x6a, 0x2d, 0xde, 0xf4, - 0x6e, 0xf7, 0xa0, 0x9, 0x77, 0x7b, 0xd2, 0x86, 0xa8, 0x77, - 0x7b, 0xd2, 0x86, 0xa0, 0x9, 0x77, 0x51, 0xba, 0xa3, 0xdd, - 0xf5, 0xa3, 0x7d, 00, 0x49, 0xba, 0x8d, 0xd4, 0xcd, 0xd4, - 0x6f, 0xa0, 0x7, 0xee, 0xa3, 0x75, 0x33, 0x77, 0xbd, 0x1b, - 0xa8, 0x2, 0x4d, 0xd4, 0x64, 0x53, 0x37, 0x51, 0xba, 0x80, - 0x1f, 0x91, 0x46, 0x45, 0x33, 0x75, 0x1b, 0xa8, 0x1, 0xf9, - 0x14, 0xb9, 0x15, 0x1e, 0xea, 0x51, 0xcd, 00, 0x3e, 0x8a, - 0x4c, 0xd1, 0xba, 0x80, 0x16, 0x8a, 0x4d, 0xd4, 0x6e, 0xa0, - 0x7, 0x64, 0xd1, 0xf8, 0xd2, 0x66, 0x8c, 0xd0, 0x2, 0xfe, - 0x34, 0x67, 0xde, 0x93, 0x34, 0x66, 0x80, 0x17, 0x75, 0x1b, - 0xa9, 0x28, 0xa0, 0x5, 0xdd, 0x46, 0xea, 0x4a, 0x28, 0x1, - 0x77, 0x51, 0xba, 0x92, 0x8a, 00, 0x5d, 0xd4, 0xa3, 0x9a, - 0x6d, 0x28, 0x38, 0xa0, 0x7, 0x51, 0x4d, 0xc9, 0xa3, 0x75, - 00, 0x3a, 0x8a, 0x6e, 0xea, 0x37, 0x50, 0x3, 0xa8, 0xa6, - 0xee, 0xa5, 0xdd, 0x40, 0xb, 0x45, 0x26, 0xea, 0x37, 0x50, - 0x2, 0xd1, 0x49, 0xba, 0x8c, 0xd0, 0x2, 0xd1, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x26, 0x68, 0x1, 0xa7, 0xad, 0x14, 0x51, - 0x9a, 00, 0x29, 0xa4, 0xd0, 0x69, 0xac, 0x68, 00, 0x27, - 0x6, 0xa3, 0x66, 0xa1, 0x8f, 0xbd, 0x46, 0x4f, 0x34, 00, - 0x33, 0x1a, 0x8c, 0xb5, 0x23, 0xb7, 0x53, 0x50, 0xbb, 0xd0, - 0x3, 0xd9, 0xe9, 0x23, 0x57, 0x9d, 0xb0, 0xa3, 0x3e, 0xf4, - 0xfb, 0x6b, 0x66, 0xb8, 0x39, 0x3c, 0x27, 0xad, 0x69, 0x47, - 0x1a, 0xc6, 0xb8, 0x51, 0x81, 0x40, 0x14, 0x13, 0x4a, 0x53, - 0x22, 0xbc, 0xad, 0xbf, 0x6f, 0x44, 0xfe, 0x1f, 0xc4, 0x77, - 0xab, 0xa9, 0x12, 0x46, 0xa1, 0x55, 0x2, 0x8f, 0x40, 0x30, - 0x2a, 0x5a, 0x2a, 0x54, 0x56, 0xe4, 0xf2, 0xa4, 0xee, 0x27, - 0x4a, 0x4e, 0xbd, 0x29, 0xd4, 0x53, 0x28, 0x69, 0x14, 0x7e, - 0x54, 0xea, 0x29, 0x80, 0xde, 0x94, 0x62, 0x9d, 0x45, 00, - 0x37, 0x22, 0x94, 0xd2, 0xd1, 0x48, 0x6, 0xfe, 0x34, 0x62, - 0x9d, 0x45, 0x30, 0x1b, 0x8a, 0x38, 0xa7, 0x51, 0x40, 0xc, - 0xda, 0x3f, 0xba, 0x29, 0xa6, 0x24, 0x3f, 0xc0, 0xa7, 0xf0, - 0xa9, 0x68, 0xa5, 0x61, 0x59, 0x10, 0x9b, 0x68, 0x8f, 0x58, - 0x90, 0xfd, 0x54, 0x53, 0x5a, 0xc2, 0xdd, 0xbe, 0xf4, 0x11, - 0x1f, 0xf8, 00, 0xab, 0x14, 0x52, 0xe5, 0x5d, 0x89, 0xe4, - 0x8b, 0xdd, 0x14, 0xbf, 0xb2, 0x6c, 0x8e, 0x73, 0x69, 0x9, - 0xff, 00, 0x80, 0xa, 0x8d, 0xb4, 0x1d, 0x39, 0xfa, 0xd8, - 0xdb, 0x9f, 0xfb, 0x66, 0x3f, 0xc2, 0xb4, 0x68, 0xa9, 0x74, - 0xe0, 0xf7, 0x48, 0x87, 0x46, 0x9b, 0xde, 0x2b, 0xee, 0x32, - 0x5b, 0xc3, 0x1a, 0x4b, 0xfd, 0xed, 0x3a, 0xd4, 0xfd, 0x62, - 0x5f, 0xf0, 0xa8, 0x5f, 0xc1, 0x7a, 0x1b, 0xfd, 0xed, 0x2e, - 0xd4, 0xff, 00, 0xdb, 0x15, 0xff, 00, 0xa, 0xdc, 0xa2, - 0xb3, 0x78, 0x7a, 0x2f, 0x78, 0x2f, 0xb9, 0x19, 0xbc, 0x2d, - 0x7, 0xbc, 0x17, 0xdc, 0x8e, 0x6d, 0xfe, 0x1e, 0xf8, 0x76, - 0x4e, 0xba, 0x55, 0xaf, 0xfd, 0xf9, 0x5f, 0xf0, 0xaa, 0x92, - 0xfc, 0x2a, 0xf0, 0xd4, 0xdf, 0x7b, 0x4a, 0xb6, 0xff, 00, - 0xbf, 0x2b, 0xfe, 0x15, 0xd7, 0xd1, 0x58, 0xbc, 0xe, 0x16, - 0x5b, 0xd3, 0x5f, 0x72, 0x30, 0x96, 0x5d, 0x83, 0x9f, 0xc5, - 0x4a, 0x3f, 0x72, 0x38, 0x49, 0x3e, 0xc, 0x78, 0x5a, 0x5e, - 0xba, 0x6c, 0x1f, 0x84, 0x49, 0xfe, 0x15, 0x4e, 0x6f, 0x81, - 0x3e, 0x16, 0x97, 0xfe, 0x5c, 0x22, 0x1f, 0xf6, 0xc9, 0x3f, - 0xc2, 0xbd, 0x1e, 0x8a, 0xe7, 0x96, 0x55, 0x81, 0x96, 0xf4, - 0x63, 0xf7, 0x1c, 0xb2, 0xc9, 0x32, 0xd9, 0xfc, 0x54, 0x23, - 0xf7, 0x23, 0xca, 0xe6, 0xfd, 0x9e, 0x7c, 0x31, 0x20, 0xe2, - 0xd9, 0x17, 0xfe, 0xd9, 0x27, 0xf8, 0x55, 0x19, 0x7f, 0x66, - 0xaf, 0xe, 0x49, 0x9c, 0x28, 0x5f, 0xa4, 0x6b, 0xfe, 0x15, - 0xec, 0x54, 0x57, 0x3c, 0xb2, 0x2c, 0xb6, 0x5b, 0xd0, 0x8f, - 0xdc, 0x72, 0x4b, 0x86, 0xb2, 0x89, 0xef, 0x87, 0x8f, 0xdc, - 0x78, 0x84, 0xdf, 0xb2, 0xee, 0x87, 0x21, 0xca, 0xcd, 0xb7, - 0xfe, 00, 0x2a, 0x84, 0xdf, 0xb2, 0x8e, 0x97, 0x21, 0x3b, - 0x2f, 0xa, 0xfd, 0x54, 0x57, 0xbf, 0x51, 0x5c, 0xb2, 0xe1, - 0x9c, 0xa6, 0x5b, 0xd0, 0x47, 0x1c, 0xf8, 0x43, 0x24, 0x9e, - 0xf8, 0x74, 0x7c, 0xe9, 0x37, 0xec, 0x95, 0x6c, 0xd9, 0xd9, - 0xa8, 0x1, 0xff, 00, 00, 0xaa, 0x52, 0x7e, 0xc8, 0xa7, - 0xf8, 0x35, 0x38, 0x87, 0xd5, 0xd, 0x7d, 0x31, 0x45, 0x73, - 0xcb, 0x84, 0xb2, 0x89, 0x7f, 0xcb, 0xaf, 0xc5, 0x9c, 0x92, - 0xe0, 0x6c, 0x86, 0x5f, 0xf2, 0xe3, 0xf1, 0x67, 0xcb, 0x92, - 0xfe, 0xc8, 0xb7, 0x63, 0xee, 0xea, 0x90, 0x1f, 0xac, 0x66, - 0xab, 0x3f, 0xec, 0x99, 0xac, 0x47, 0xf7, 0x35, 0x58, 0xf, - 0xfc, 0x5, 0xab, 0xea, 0xca, 0x2b, 0x9d, 0xf0, 0x6e, 0x50, - 0xf6, 0xa6, 0xd7, 0xcd, 0x9c, 0xcf, 0x80, 0x32, 0x27, 0xb5, - 0x26, 0xbf, 0xed, 0xe6, 0x7c, 0x96, 0xff, 00, 0xb2, 0xf7, - 0x8a, 0x61, 0xff, 00, 0x53, 0xaa, 0xa0, 0xfa, 0x33, 0x8a, - 0x81, 0xff, 00, 0x67, 0x6f, 0x1c, 0x41, 0xfe, 0xaf, 0x53, - 0x6e, 0x3d, 0x26, 0x90, 0x57, 0xd7, 0x74, 0x56, 0x6f, 0x83, - 0x32, 0xdf, 0xb2, 0xe4, 0xbf, 0xed, 0xe6, 0x62, 0xfc, 0x3f, - 0xca, 0x3e, 0xcb, 0x9a, 0xff, 00, 0xb7, 0x99, 0xf1, 0xe4, - 0x9f, 0x3, 0x3e, 0x20, 0xc3, 0xf7, 0x75, 0x29, 0xb8, 0xf4, - 0xb9, 0x90, 0x55, 0x67, 0xf8, 0x47, 0xf1, 0x1e, 0xd7, 0x38, - 0xd4, 0xee, 0x87, 0xd2, 0xea, 0x4a, 0xfb, 0x2f, 0x14, 0x60, - 0x7a, 0x56, 0x72, 0xe0, 0xcc, 0x27, 0xd9, 0xab, 0x35, 0xff, - 00, 0x6f, 0x19, 0x3f, 0xf, 0xf0, 0x3f, 0x66, 0xbd, 0x45, - 0xff, 00, 0x6f, 0x1f, 0x16, 0x3f, 0xc3, 0xff, 00, 0x89, - 0x76, 0xdf, 0x77, 0x55, 0xbf, 0x1f, 0xee, 0xde, 0x49, 0x55, - 0x9f, 0xc3, 0xff, 00, 0x13, 0x20, 0xff, 00, 0x98, 0xbe, - 0xa9, 0xf5, 0x5b, 0xd7, 0xff, 00, 0x1a, 0xfb, 0x73, 0x68, - 0x3d, 0x85, 0x35, 0xa3, 0x53, 0xfc, 0x23, 0xf2, 0xac, 0x9f, - 0x6, 0xc1, 0x7c, 0x18, 0xa9, 0xaf, 0x99, 0x8b, 0xe0, 0xa, - 0x6b, 0xe0, 0xc6, 0x55, 0x5f, 0x33, 0xe2, 0x1d, 0xff, 00, - 0x12, 0xec, 0x4f, 0x3a, 0xae, 0xa6, 0xfc, 0xe7, 0xe7, 0xbb, - 0x73, 0xff, 00, 0xb3, 0x54, 0xa9, 0xe2, 0xff, 00, 0x88, - 0xf6, 0x58, 0xcd, 0xe5, 0xcb, 0x91, 0xff, 00, 0x3d, 0x27, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xda, 0xe6, 0x4, 0x3d, 0x63, - 0x5f, 0xca, 0x98, 0x6c, 0xe0, 0x6e, 0xb1, 0x21, 0xff, 00, - 0x80, 0xd4, 0xff, 00, 0xaa, 0x55, 0xe3, 0xf0, 0x63, 0x66, - 0xbf, 0xaf, 0x52, 0x3f, 0xd4, 0x7c, 0x4c, 0x7f, 0x87, 0x98, - 0xd4, 0x5f, 0xd7, 0xa9, 0xf1, 0x94, 0x7f, 0x16, 0xbe, 0x21, - 0xd9, 0x72, 0xd2, 0x29, 0xc7, 0xf7, 0xcb, 0x9f, 0xfd, 0x9e, - 0xac, 0x27, 0xc7, 0xff, 00, 0x1f, 0xdb, 0xff, 00, 0xd, - 0x8b, 0x60, 0x63, 0xe7, 0x89, 0x8f, 0xfe, 0xcd, 0x5f, 0x60, - 0xb6, 0x97, 0x6a, 0xdf, 0x7a, 0xde, 0x23, 0xf5, 0x51, 0x51, - 0xb6, 0x87, 0xa7, 0xb7, 0xde, 0xb3, 0x84, 0xff, 00, 0xc0, - 0x5, 0x35, 0xc3, 0x79, 0x9c, 0x3e, 0xc, 0x7c, 0xbe, 0xe2, - 0x97, 0x8, 0xe7, 0x14, 0xff, 00, 0x87, 0x99, 0xcf, 0xee, - 0xff, 00, 0x82, 0x7c, 0x93, 0x1f, 0xed, 0x2d, 0xe3, 0x38, - 0x98, 0x79, 0xb6, 0xb6, 0xd, 0xeb, 0x88, 0xc8, 0xcf, 0xeb, - 0x56, 0x97, 0xf6, 0xa4, 0xf1, 0xc, 0x6d, 0xfb, 0xcd, 0x32, - 0xd5, 0x87, 0xa0, 0x62, 0x2b, 0xea, 0x57, 0xf0, 0xb6, 0x92, - 0xff, 00, 0x7a, 0xc2, 0x3, 0xff, 00, 00, 0x15, 0x5e, - 0x4f, 0x3, 0xe8, 0x92, 0xfd, 0xed, 0x3a, 0x3, 0xff, 00, - 00, 0x15, 0x7f, 0xd8, 0x99, 0xe4, 0x7e, 0x1c, 0x7d, 0xfe, - 0x46, 0x9f, 0xea, 0xef, 0x11, 0x43, 0xe1, 0xcc, 0xdb, 0xf5, - 0x89, 0xf3, 0x74, 0x5f, 0xb5, 0x7e, 0xa2, 0xbf, 0xeb, 0x34, - 0x18, 0x9f, 0xe9, 0x71, 0x8f, 0xfd, 0x96, 0xae, 0x47, 0xfb, - 0x5b, 0xba, 0xf1, 0x27, 0x86, 0x49, 0xf7, 0x5b, 0xcf, 0xfe, - 0xc2, 0xbd, 0xea, 0x5f, 0x86, 0xbe, 0x1d, 0x94, 0x9d, 0xda, - 0x64, 0x1f, 0xf7, 0xcd, 0x54, 0x97, 0xe1, 0x27, 0x86, 0x65, - 0x1c, 0xe9, 0xb0, 0xfe, 0x55, 0x4b, 0x2e, 0xe2, 0x28, 0x7c, - 0x38, 0xb4, 0xfd, 0x62, 0x57, 0xf6, 0x57, 0x15, 0xd3, 0xf8, - 0x71, 0xd1, 0x7e, 0xb1, 0x3c, 0x62, 0x2f, 0xda, 0xe6, 0xdb, - 0xfe, 0x5a, 0x78, 0x6e, 0x75, 0xff, 00, 0x76, 0xe4, 0x1f, - 0xfd, 0x96, 0xac, 0xa7, 0xed, 0x71, 0xa4, 0xf1, 0xe6, 0x68, - 0x37, 0xcb, 0xfe, 0xec, 0x88, 0x7f, 0xa8, 0xaf, 0x52, 0x97, - 0xe0, 0x97, 0x86, 0x25, 0x7, 0xfe, 0x25, 0xf1, 0x2f, 0xd0, - 0x7f, 0xf5, 0xea, 0x9c, 0xdf, 00, 0x3c, 0x31, 0x2f, 0x4b, - 0x44, 0x5f, 0xcf, 0xfc, 0x6a, 0x5e, 0x1b, 0x89, 0xe3, 0xb5, - 0x78, 0x3f, 0x91, 0xf, 0x7, 0xc6, 0x51, 0xf8, 0x71, 0x30, - 0x7f, 0xf6, 0xea, 0x38, 0x28, 0xff, 00, 0x6b, 0x7f, 0xe, - 0x7f, 0x1e, 0x8f, 0xaa, 0x83, 0xfe, 0xca, 0xc4, 0x7f, 0xf6, - 0x71, 0x56, 0x22, 0xfd, 0xac, 0xbc, 0x29, 0x26, 0x73, 0xa7, - 0xea, 0xd1, 0xff, 00, 0xbd, 0x14, 0x5f, 0xfc, 0x72, 0xba, - 0x69, 0x7f, 0x67, 0xf, 0xd, 0x48, 0x4e, 0x22, 0xb, 0x9f, - 0xf7, 0xbf, 0xc6, 0xa9, 0x4f, 0xfb, 0x31, 0x78, 0x7e, 0x5e, - 0x87, 0x67, 0xfd, 0xf5, 0xff, 00, 0xc5, 0x56, 0x7c, 0xbc, - 0x59, 0x1f, 0xb5, 0x7, 0xf2, 0x46, 0x5c, 0xbc, 0x6f, 0xd, - 0xa7, 0x4d, 0xfc, 0x91, 0x56, 0xf, 0xda, 0x7f, 0xc2, 0x13, - 0x75, 0x5b, 0xd8, 0xff, 00, 0xdf, 0x48, 0xff, 00, 0xf8, - 0xba, 0xd3, 0x87, 0xf6, 0x88, 0xf0, 0x64, 0x9b, 0x4f, 0xf6, - 0x83, 0x26, 0x7b, 0x38, 0x51, 0x8f, 0xfc, 0x7a, 0xb2, 0x26, - 0xfd, 0x95, 0x34, 0x67, 0x3f, 0x2d, 0xc6, 0xdf, 0xc1, 0xbf, - 0xf8, 0xaa, 0xa7, 0x27, 0xec, 0x99, 0xa7, 0x36, 0x76, 0xdf, - 0xed, 0xff, 00, 0x80, 0x37, 0xff, 00, 0x15, 0x42, 0xaf, - 0xc5, 0x51, 0xde, 0x94, 0x1f, 0xf5, 0xea, 0x35, 0x8a, 0xe3, - 0x58, 0x6f, 0x46, 0x9c, 0xbf, 0xaf, 0x53, 0xb0, 0x87, 0xe3, - 0xc7, 0x82, 0x65, 0xc6, 0x75, 0xc8, 0x23, 0xe7, 0xf8, 0xcd, - 0x5f, 0x8b, 0xe3, 0xf, 0x83, 0xa7, 0x20, 0x26, 0xbf, 0x6a, - 0xd9, 0xe4, 0x61, 0x8f, 0xf8, 0x57, 0x9b, 0x49, 0xfb, 0x23, - 0xdb, 0x9f, 0xbb, 0xaa, 0x2f, 0xfd, 0xfb, 0x3f, 0xfc, 0x55, - 0x52, 0x97, 0xf6, 0x43, 0x6c, 0x9d, 0xba, 0xa8, 0x3f, 0xf6, - 0xcb, 0xff, 00, 0xb2, 0xad, 0x3f, 0xb4, 0x38, 0x9a, 0x3f, - 0x16, 0x16, 0x2f, 0xe7, 0xff, 00, 0x4, 0xd1, 0x66, 0xbc, - 0x61, 0xf, 0x8b, 0x5, 0x7, 0xf3, 0xff, 00, 0x82, 0x7b, - 0x1c, 0x3f, 0x12, 0x3c, 0x37, 0x71, 0xb7, 0xcb, 0xd5, 0xe0, - 0x7d, 0xdd, 0x31, 0x9e, 0x7f, 0x4a, 0xd0, 0x87, 0xc5, 0x1a, - 0x5d, 0xc2, 0xee, 0x8e, 0xf6, 0x36, 0x1e, 0xa3, 0x35, 0xe0, - 0x13, 0x7e, 0xc8, 0xd7, 0x63, 0x3b, 0x35, 0x24, 0x3f, 0xf6, - 0xc8, 0x7f, 0xf1, 0x55, 0x4a, 0x7f, 0xd9, 0x2f, 0x55, 0x4f, - 0xf5, 0x77, 0x8a, 0xc3, 0xfd, 0xc1, 0xff, 00, 0xc5, 0x53, - 0x59, 0xce, 0x7f, 0xf, 0x8b, 0x3, 0x7f, 0x49, 0x7f, 0xc3, - 0x8f, 0xfb, 0x7f, 0x89, 0xe1, 0xfc, 0x4c, 0xb1, 0x3f, 0x49, - 0x7f, 0xc3, 0x9f, 0x4d, 0xc5, 0x7b, 0xc, 0xcb, 0xb9, 0x25, - 0x56, 0x1e, 0xb9, 0xa9, 0x5, 0xc2, 0x7f, 0x7d, 0x7f, 0x3a, - 0xf9, 0x52, 0x4f, 0xd9, 0x5f, 0x5d, 0x8b, 0x94, 0x9c, 0x12, - 0x3d, 00, 0x1f, 0xfb, 0x35, 0x56, 0x7f, 0xd9, 0xbf, 0xc5, - 0x36, 0xe0, 0xf9, 0x73, 0x49, 0xff, 00, 0x1, 0x6c, 0x7f, - 0xec, 0xd4, 0xdf, 0x10, 0xe6, 0xb1, 0xf8, 0xb2, 0xe9, 0x7f, - 0xe0, 0x5f, 0xf0, 0x6, 0xf8, 0xab, 0x3a, 0x87, 0xc7, 0x95, - 0x4b, 0xff, 00, 0x2, 0xff, 00, 0xed, 0x4f, 0xad, 0x7e, - 0xd2, 0x9f, 0xde, 0x1f, 0x9d, 0x28, 0x9d, 0x4f, 0xf1, 0xf, - 0xce, 0xbe, 0x43, 0x3f, 0x3, 0x7c, 0x71, 0x6d, 0xcc, 0x77, - 0x17, 0xab, 0xfe, 0xe4, 0xd8, 0xff, 00, 0xd9, 0xea, 0xbc, - 0x9f, 0xa, 0xfe, 0x20, 0xdb, 0xfd, 0xdb, 0x9d, 0x4f, 0x8f, - 0x4b, 0x92, 0x3f, 0xf6, 0x7a, 0xcf, 0xfd, 0x69, 0xc6, 0x47, - 0xe3, 0xc0, 0x4f, 0xef, 0xff, 00, 0x80, 0x66, 0xf8, 0xd3, - 0x1f, 0xf, 0x8f, 0x2c, 0xa8, 0xbe, 0x7f, 0xf0, 0xf, 0xb1, - 0xbc, 0xc5, 0xf5, 0x1f, 0x9d, 0x2, 0x41, 0xd8, 0xd7, 0xc6, - 0x47, 0xc1, 0x3f, 0x12, 0x6d, 0x18, 0x15, 0xba, 0xd5, 0xce, - 0x3f, 0xe9, 0xe9, 0x88, 0xff, 00, 0xd0, 0xe9, 0x7e, 0xc7, - 0xf1, 0x42, 0xcd, 0x76, 0x8b, 0x9d, 0x4f, 0xfe, 0x4, 0xfb, - 0xbf, 0xad, 0x4f, 0xfa, 0xe1, 0x35, 0xf1, 0xe0, 0xe6, 0x89, - 0xff, 00, 0x5f, 0x27, 0x1f, 0xe2, 0x60, 0x2a, 0x2f, 0x91, - 0xf6, 0x76, 0xea, 0x37, 0x7d, 0x6b, 0xe3, 0x58, 0xfc, 0x43, - 0xf1, 0x56, 0xc8, 0x60, 0x5c, 0xdf, 00, 0x3f, 0xbd, 0x1a, - 0xb5, 0x48, 0xbf, 0x11, 0x7e, 0x2b, 0x5a, 0x1c, 0x8b, 0xdb, - 0xaf, 0xf8, 0x15, 0xac, 0x67, 0xff, 00, 0x65, 0xad, 0x17, - 0x19, 0xe1, 0xd7, 0xc7, 0x42, 0x6b, 0xe4, 0x69, 0x1f, 0x10, - 0x30, 0xbf, 0x6f, 0xd, 0x51, 0x7f, 0xdb, 0xa7, 0xd8, 0xdb, - 0xe8, 0xf3, 0x31, 0x5f, 0x1f, 0x2f, 0xc6, 0x4f, 0x89, 0xf0, - 0x5, 0x12, 0xcf, 0x33, 0xe3, 0xa9, 0xfb, 0x24, 0x63, 0x3f, - 0xf8, 0xed, 0x5a, 0x8b, 0xe3, 0xf7, 0x8f, 0x6d, 0xb1, 0xe7, - 0x43, 0x24, 0xbe, 0xb9, 0x89, 0x57, 0xff, 00, 0x64, 0xad, - 0x57, 0x1a, 0x65, 0xf7, 0xd6, 0x13, 0x5f, 0xf6, 0xe9, 0xba, - 0xf1, 0x7, 0x2b, 0xfb, 0x50, 0xa8, 0xbf, 0xed, 0xd3, 0xeb, - 0x7f, 0x32, 0x8f, 0x32, 0xbe, 0x55, 0x83, 0xf6, 0x97, 0xf1, - 0x54, 00, 0x79, 0xba, 0x57, 0x9b, 0x8e, 0xbb, 0x88, 0x5f, - 0xfd, 0x92, 0xaf, 0x47, 0xfb, 0x57, 0xeb, 0x31, 0x7f, 0xac, - 0xf0, 0xdc, 0x4f, 0xff, 00, 0x6f, 0x4, 0x7f, 0xec, 0xb5, - 0xd1, 0x1e, 0x30, 0xca, 0x9e, 0xf2, 0x6b, 0xfe, 0xdd, 0x67, - 0x54, 0x38, 0xf3, 0x24, 0x97, 0xc5, 0x39, 0x2f, 0x58, 0xcb, - 0xfc, 0x8f, 0xa7, 0x81, 0xf7, 0xa7, 0x6e, 0xaf, 0x99, 0xd3, - 0xf6, 0xb9, 0xbc, 0x1f, 0x7f, 0xc3, 0x2b, 0xf8, 0x5c, 0x9f, - 0xfe, 0x26, 0xa6, 0x4f, 0xda, 0xf3, 0x7, 0xf7, 0x9e, 0x1b, - 0x70, 0x3f, 0xd9, 0xb8, 0x1f, 0xe1, 0x5b, 0x2e, 0x2d, 0xc9, - 0xdf, 0xfc, 0xbe, 0xfc, 0x1f, 0xf9, 0x1d, 0xb, 0x8e, 0x72, - 0x1f, 0xf9, 0xff, 00, 0xff, 00, 0x92, 0xcb, 0xfc, 0x8f, - 0xa4, 0xb7, 0x51, 0xba, 0xbe, 0x74, 0x4f, 0xda, 0xf6, 0xcb, - 0xf8, 0xfc, 0x3b, 0x72, 0x3d, 0x71, 0x32, 0xff, 00, 0x85, - 0x58, 0x8f, 0xf6, 0xbc, 0xd2, 0x58, 0xfc, 0xda, 0x5, 0xea, - 0x7b, 0xf9, 0x8a, 0x45, 0x68, 0xb8, 0xab, 0x26, 0x7f, 0xf2, - 0xfd, 0x7d, 0xcf, 0xfc, 0x8d, 0x23, 0xc6, 0xd9, 0x4, 0xbf, - 0xe6, 0x25, 0x2f, 0x93, 0xff, 00, 0x23, 0xe8, 0x3d, 0xd4, - 0xbb, 0xab, 0xc1, 0x60, 0xfd, 0xad, 0x3c, 0x3f, 0x20, 0xfd, - 0xe6, 0x9b, 0x75, 0xf, 0xb3, 0x1c, 0xff, 00, 0x21, 0x5a, - 0x10, 0xfe, 0xd4, 0xfe, 0x11, 0x7f, 0xbe, 0xd3, 0x44, 0x7d, - 0xe3, 0x73, 0xfc, 0x92, 0xba, 0x23, 0xc4, 0x99, 0x44, 0xf6, - 0xc4, 0x44, 0xea, 0x87, 0x17, 0x64, 0x53, 0xdb, 0x15, 0x1f, - 0xcb, 0xf3, 0x3d, 0xab, 0x77, 0xd6, 0x8d, 0xd5, 0xe4, 0x90, - 0x7e, 0xd3, 0x5e, 0x5, 0x7f, 0xbf, 0xa9, 0x49, 0x1f, 0xfd, - 0xbb, 0x4c, 0x7f, 0x92, 0x55, 0xf8, 0xff, 00, 0x68, 0xcf, - 0x87, 0xf3, 0xc, 0xae, 0xbb, 0xc7, 0x4e, 0x6d, 0x27, 0x1f, - 0xfb, 0x25, 0x75, 0x47, 0x3b, 0xcb, 0x27, 0xb6, 0x22, 0x1f, - 0xf8, 0x12, 0xff, 00, 0x33, 0xb6, 0x1c, 0x45, 0x93, 0xcf, - 0xe1, 0xc5, 0xd3, 0xff, 00, 0xc0, 0xa3, 0xfe, 0x67, 0xa6, - 0x6e, 0xf7, 0xa7, 0x6, 0xe2, 0xb8, 0x8, 0x7e, 0x38, 0x78, - 0x2e, 0x70, 0xa, 0x6b, 0x48, 0x41, 0xf5, 0x86, 0x41, 0xff, - 00, 0xb2, 0xd6, 0x95, 0xbf, 0xc5, 0xf, 0xb, 0xdc, 0x1, - 0xb3, 0x59, 0xb7, 0x39, 0xf5, 0xc8, 0xfe, 0x62, 0xba, 0xa3, - 0x98, 0x60, 0xe7, 0xf0, 0xd6, 0x8b, 0xf9, 0xa3, 0xb6, 0x19, - 0xae, 0x2, 0xa6, 0x90, 0xaf, 0x7, 0xff, 00, 0x6f, 0x2f, - 0xf3, 0x3a, 0xdd, 0xd4, 0x6e, 0xac, 0x38, 0x3c, 0x63, 0xa1, - 0xce, 0x37, 0x26, 0xad, 0x67, 0x8f, 0x79, 0x94, 0x7f, 0x33, - 0x53, 0x8f, 0x13, 0x69, 0x2d, 0xd3, 0x53, 0xb3, 0x3f, 0xf6, - 0xdd, 0x7f, 0xc6, 0xba, 0x95, 0x6a, 0x4f, 0x55, 0x25, 0xf7, - 0xa3, 0xb5, 0x62, 0x28, 0xb5, 0x75, 0x35, 0xf7, 0x9a, 0xd9, - 0x14, 0x64, 0x56, 0x72, 0xeb, 0xba, 0x7b, 0xfd, 0xdb, 0xeb, - 0x66, 0xfa, 0x4a, 0xbf, 0xe3, 0x52, 0x2e, 0xa9, 0x68, 0xdd, - 0x2e, 0x61, 0x3f, 0x47, 0x14, 0xfd, 0xad, 0x3f, 0xe6, 0x45, - 0x2a, 0xd4, 0x9f, 0xda, 0x5f, 0x79, 0x77, 0x22, 0x8c, 0xe6, - 0xab, 0xb, 0xd8, 0x4f, 0x49, 0x50, 0xff, 00, 0xc0, 0x85, - 0x38, 0x5c, 0x46, 0x47, 0xe, 0xa7, 0xf1, 0xaa, 0xe7, 0x8f, - 0x72, 0xb9, 0xe2, 0xfa, 0x93, 0xd2, 0xe7, 0x15, 0x10, 0x91, - 0x4f, 0x46, 0x1f, 0x9d, 0x2e, 0xe1, 0xeb, 0x54, 0x9a, 0x65, - 0x5d, 0x12, 0x64, 0xd1, 0x93, 0x51, 0xe6, 0x8c, 0xd3, 0x19, - 0x26, 0x4d, 0x28, 0x39, 0xa8, 0xc1, 0xc5, 0x2e, 0xe3, 0x40, - 0x12, 0x51, 0x4c, 0xdd, 0xef, 0x4a, 0x1a, 0x80, 0x1d, 0x45, - 0x37, 0x26, 0x8c, 0x9a, 00, 0x75, 0x14, 0xdc, 0x9a, 0x37, - 0x50, 0x3, 0xb3, 0x46, 0x69, 0xbb, 0xa8, 0xdd, 0x40, 0xe, - 0xcd, 0x3, 0x83, 0x4d, 0xdd, 0xed, 0x4e, 0x7, 0x34, 00, - 0xec, 0x8a, 0x32, 0x29, 0xb4, 0x50, 0x3, 0xb2, 0x29, 0x69, - 0x94, 0xe0, 0x45, 00, 0x2d, 0x14, 0x99, 0x14, 0x66, 0x80, - 0x16, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x98, 0x79, 0xa7, 0x1a, 0x6d, 00, 0x14, - 0xd3, 0xd6, 0x82, 0x69, 0x9, 0xc5, 00, 0x23, 0x54, 0x6c, - 0x69, 0xc5, 0xaa, 0x36, 0x39, 0x14, 00, 0xd6, 0x3c, 0x54, - 0x4c, 0xd8, 0xef, 0x4a, 0xed, 0x8a, 0x82, 0x47, 0xa0, 0x1, - 0xde, 0xab, 0xdb, 0xcc, 0x97, 0x57, 0xa6, 0xdc, 0x1c, 0x95, - 0x19, 0x7e, 0x3a, 0xa, 0xe6, 0x3c, 0x71, 0xe3, 0x78, 0x7c, - 0x32, 0x2d, 0x2c, 0xe3, 0xd, 0x2e, 0xa9, 0xa8, 0xb1, 0x8a, - 0xd2, 0x24, 00, 0xe1, 0xb0, 0x49, 0x66, 0xc9, 0xfb, 0xa3, - 0x1d, 0x70, 0x6b, 0xa0, 0xf0, 0x65, 0x84, 0xd6, 0xb6, 0x11, - 0x9b, 0xa9, 0x3c, 0xeb, 0xb7, 0x1b, 0xe6, 0x94, 0x9c, 0xee, - 0x63, 0xd6, 0xb9, 0xd5, 0x55, 0x3a, 0x8e, 0x9c, 0x7a, 0x6e, - 0x72, 0xaa, 0xca, 0x75, 0x5d, 0x28, 0x74, 0xdf, 0xfc, 0x8e, - 0x9d, 00, 0x55, 0xa, 0x6, 00, 0xa7, 0x51, 0x45, 0x74, - 0x1d, 0x41, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x84, 0xed, - 0x19, 0x34, 00, 0xb4, 0xdd, 0xe0, 0xe, 0x4e, 0x3e, 0xb5, - 0xe6, 0xdf, 0x12, 0xbf, 0x68, 0x2f, 0x8, 0xfc, 0x2b, 0xc, - 0x35, 0xab, 0xb7, 0xe, 0x17, 0x21, 0x61, 0xd8, 0x4f, 0xea, - 0xc3, 0xd2, 0xbe, 0x29, 0xf8, 0xb9, 0xff, 00, 0x5, 0x24, - 0xd0, 0xc5, 0xe5, 0xcc, 0x7a, 0x1d, 0xfd, 0xf2, 0xaa, 0xb1, - 0xb, 0x85, 0x8c, 0x7f, 0x27, 0x34, 0x1, 0xfa, 0x3a, 0x67, - 0x8d, 0x7a, 0xba, 0x8f, 0xc6, 0xa3, 0xfb, 0x7d, 0xbe, 0xec, - 0x79, 0xaa, 0x4f, 0xb5, 0x7e, 0x2b, 0x78, 0xab, 0xfe, 0xa, - 0x39, 0xe2, 0x47, 0x93, 0x16, 0xba, 0x9e, 0xa1, 0xb7, 0x9e, - 0x9b, 0x3f, 0xc6, 0xb4, 0x7e, 0x15, 0x7e, 0xdc, 0xde, 0x34, - 0xf1, 0x5e, 0xbf, 0x6d, 0x6d, 0xf6, 0xeb, 0xd7, 0x12, 0xc8, - 0x10, 0x67, 0x6f, 0x72, 0x7, 0x6a, 00, 0xfd, 0x9e, 0x57, - 0xc, 0x1, 0x1c, 0x83, 0xdc, 0x53, 0xab, 0x82, 0xf8, 0x47, - 0xaa, 0xde, 0xdd, 0xf8, 0xa, 0xc2, 0xff, 00, 0x55, 0x97, - 0xf7, 0xb2, 0xa0, 0x62, 0xce, 0xde, 0xc2, 0xaf, 0x5e, 0x7c, - 0x57, 0xf0, 0xcd, 0x85, 0xcb, 0x41, 0x36, 0xa5, 0x1a, 0xc8, - 0xa7, 0x4, 0x64, 0x7f, 0x8d, 00, 0x75, 0xf4, 0x57, 0x33, - 0xa7, 0xfc, 0x45, 0xd0, 0x35, 0x59, 0x44, 0x56, 0xda, 0x84, - 0x72, 0x39, 0xe8, 0x33, 0x5d, 0x22, 0x38, 0x75, 0xc, 0xa7, - 0x20, 0xd0, 0x3, 0xa9, 0x1, 0xa0, 0xd5, 0x3b, 0xed, 0x46, - 0x2b, 0x8, 0xcb, 0xc8, 0x7d, 0xea, 0x65, 0x25, 0x15, 0x77, - 0xb1, 0x12, 0x9c, 0x60, 0xb9, 0xa4, 0xec, 0x8b, 0x99, 0xa0, - 0x9a, 0xe5, 0x4f, 0x8f, 0x6c, 0xf7, 0x11, 0x86, 0xfd, 0x3f, - 0xc6, 0xa4, 0x1e, 0x39, 0xb2, 0xfe, 0xeb, 0x7e, 0x9f, 0xe3, - 0x5c, 0x5f, 0x5f, 0xc3, 0x7f, 0x3a, 0x3c, 0xf5, 0x99, 0xe1, - 0x1f, 0xfc, 0xbc, 0x47, 0x4d, 0x93, 0xe9, 0x46, 0x4f, 0xa5, - 0x73, 0x83, 0xc6, 0xf6, 0x27, 0xa8, 0x6f, 0xc8, 0x53, 0xc7, - 0x8d, 0x2c, 0x4f, 0xf7, 0xbf, 0x4a, 0xaf, 0xae, 0xe1, 0xdf, - 0xdb, 0x45, 0xac, 0xc3, 0xa, 0xf6, 0xa8, 0x8e, 0x83, 0x27, - 0xd2, 0x8c, 0xfb, 0x56, 0x12, 0xf8, 0xba, 0xc4, 0xf7, 0x6f, - 0xd2, 0x9e, 0x3c, 0x57, 0x62, 0x7f, 0x89, 0xbf, 0x4a, 0xaf, - 0xad, 0x50, 0x7f, 0x6d, 0x16, 0xb1, 0xb8, 0x77, 0xf6, 0xd1, - 0xb5, 0x9a, 0x33, 0x58, 0xeb, 0xe2, 0x7b, 0x33, 0xd1, 0x8d, - 0x3f, 0xfe, 0x12, 0x3b, 0x43, 0xfc, 0x66, 0xab, 0xeb, 0x14, - 0xbf, 0x99, 0x14, 0xb1, 0x54, 0x1f, 0xdb, 0x46, 0xae, 0x45, - 0x19, 0xac, 0xc1, 0xaf, 0xda, 0x1f, 0xe3, 0xa7, 0x8d, 0x6a, - 0xd8, 0xff, 00, 0x1f, 0xeb, 0x55, 0xed, 0xa9, 0xbf, 0xb4, - 0x8b, 0x58, 0x8a, 0x4f, 0xed, 0x23, 0x42, 0x8c, 0xd5, 0x11, - 0xab, 0x5b, 0x9e, 0x92, 0xa, 0x94, 0x6a, 0x10, 0xb7, 0xfc, - 0xb4, 0x1f, 0x9d, 0x5a, 0xa9, 0x7, 0xb3, 0x2d, 0x55, 0xa6, - 0xf6, 0x92, 0x2c, 0xd2, 0xd4, 0x31, 0xce, 0x8e, 0x7e, 0x56, - 0x7, 0xf1, 0xa9, 0x7a, 0xd5, 0xa7, 0x7d, 0x8d, 0x13, 0x4f, - 0x61, 0x68, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x13, 0x9f, 0x5a, 0x31, 0x4b, - 0x45, 00, 0x26, 0x28, 0xc5, 0x2d, 0x14, 00, 0x98, 0xa3, - 0x1e, 0xf4, 0xb4, 0x50, 0x2, 0x51, 0x4b, 0x45, 0x2b, 00, - 0x52, 0x52, 0xd1, 0x4c, 0x4, 0xc5, 0x18, 0x34, 0xb4, 0x50, - 0x2, 0x62, 0x80, 0x29, 0x68, 0xa0, 0x4, 0xc5, 0x2d, 0x14, - 0x50, 0x2, 0x62, 0x8c, 0x52, 0xd1, 0x40, 0xd, 0xdb, 0x46, - 0xda, 0x75, 0x14, 00, 0x98, 0xa4, 0x2a, 0xd, 0x3a, 0x8a, - 00, 0x69, 0x40, 0x69, 0x3c, 0xa5, 0xee, 0xa0, 0xfe, 0x14, - 0xfa, 0x28, 0x15, 0x91, 0x19, 0xb7, 0x8c, 0xff, 00, 0x2, - 0xfe, 0x54, 0xc3, 0x65, 0x3, 0x7f, 0xcb, 0x25, 0xfc, 0xaa, - 0x7a, 0x4a, 0x9e, 0x48, 0xbe, 0x84, 0xb8, 0x45, 0xee, 0x8a, - 0xad, 0xa5, 0x5a, 0x3f, 0x58, 0x10, 0xfe, 0x15, 0xb, 0xf8, - 0x7f, 0x4f, 0x7e, 0xb6, 0xc9, 0xf9, 0x56, 0x8d, 0x15, 0xe, - 0x95, 0x37, 0xbc, 0x57, 0xdc, 0x66, 0xe8, 0x52, 0x96, 0xf1, - 0x5f, 0x71, 0x8f, 0x27, 0x84, 0xb4, 0xa9, 0x47, 0xcd, 0x68, - 0x86, 0xaa, 0x49, 0xf0, 0xff, 00, 0x44, 0x97, 0xad, 0x9a, - 0xfe, 0x66, 0xba, 0x3a, 0x2b, 0x27, 0x84, 0xc3, 0xcb, 0x78, - 0x2f, 0xb8, 0xc2, 0x58, 0x1c, 0x2c, 0xfe, 0x2a, 0x51, 0x7f, - 0x24, 0x72, 0x52, 0xfc, 0x2f, 0xd0, 0x25, 0xeb, 0x66, 0x3f, - 0x33, 0x54, 0xe6, 0xf8, 0x37, 0xe1, 0xb9, 0xba, 0xda, 0x11, - 0xff, 00, 0x2, 0x35, 0xdc, 0xd1, 0x5c, 0xf2, 0xcb, 0x70, - 0x52, 0xde, 0x94, 0x7e, 0xe4, 0x73, 0x4b, 0x28, 0xcb, 0xe7, - 0xf1, 0x50, 0x8f, 0xdc, 0x8f, 0x38, 0x97, 0xe0, 0x37, 0x86, - 0x26, 0xeb, 0x6e, 0xc3, 0xe8, 0xd5, 0x4a, 0x6f, 0xd9, 0xd7, - 0xc2, 0xf2, 0x9f, 0xf5, 0x72, 0xf, 0xf8, 0x15, 0x7a, 0xa5, - 0x15, 0xcf, 0x2c, 0x97, 0x2e, 0x96, 0xf4, 0x23, 0xf7, 0x1c, - 0xb2, 0xe1, 0xec, 0xaa, 0x7b, 0xe1, 0xe3, 0xf7, 0x1e, 0x3b, - 0x3f, 0xec, 0xc7, 0xe1, 0x99, 0x7a, 0x34, 0xab, 0x54, 0xe5, - 0xfd, 0x95, 0xfc, 0x3e, 0xe7, 0x8b, 0xa9, 0x97, 0xf0, 0x15, - 0xed, 0xd4, 0x84, 0x66, 0xb9, 0xa5, 0xc3, 0xb9, 0x54, 0xb7, - 0xa0, 0x8e, 0x49, 0xf0, 0xae, 0x4b, 0x3f, 0x8b, 0xd, 0x1f, - 0xc4, 0xf0, 0x69, 0x7f, 0x64, 0xed, 0x15, 0x8f, 0xcb, 0xa8, - 0xce, 0x3f, 0xe0, 0x22, 0xa9, 0x4b, 0xfb, 0x24, 0x69, 0xcd, - 0x9d, 0xba, 0xac, 0xff, 00, 0xf7, 0xca, 0xd7, 0xd0, 0xbc, - 0x51, 0x8a, 0xe7, 0x97, 0xb, 0xe5, 0x12, 0xde, 0x82, 0xfb, - 0xdf, 0xf9, 0x9c, 0xb2, 0xe0, 0xbc, 0x86, 0x7b, 0xe1, 0x97, - 0xde, 0xff, 00, 0xcc, 0xf9, 0xbe, 0x6f, 0xd9, 0x16, 0x6, - 0xfb, 0x9a, 0xb4, 0x83, 0xea, 0x8b, 0x54, 0xe5, 0xfd, 0x91, - 0x25, 0x1f, 0x73, 0x56, 0x6c, 0xfb, 0xa0, 0xff, 00, 0x1a, - 0xfa, 0x73, 0x6, 0x8c, 0x1a, 0xe7, 0x7c, 0x21, 0x93, 0xcb, - 0xfe, 0x5d, 0x7e, 0x2c, 0xe5, 0x97, 0x2, 0x64, 0x32, 0xff, - 00, 0x97, 0x1f, 0x8b, 0xff, 00, 0x33, 0xe5, 0x89, 0xbf, - 0x64, 0x7d, 0x47, 0x9d, 0x9a, 0x92, 0x1f, 0xaa, 0x8f, 0xf1, - 0xaa, 0x72, 0x7e, 0xc9, 0x7a, 0xd8, 0xce, 0xdb, 0xe8, 0xdb, - 0xea, 0x3f, 0xfb, 0x2a, 0xfa, 0xcf, 0x6, 0x97, 0x15, 0x83, - 0xe0, 0xcc, 0xa1, 0xed, 0x6, 0xbe, 0x6c, 0xe6, 0x97, 0x87, - 0xd9, 0x13, 0xda, 0x9b, 0x5f, 0xf6, 0xf3, 0x3e, 0x41, 0x93, - 0xf6, 0x53, 0xf1, 0x22, 0x67, 0x6d, 0xd2, 0x1f, 0xc7, 0x1f, - 0xd6, 0xaa, 0xcb, 0xfb, 0x2e, 0xf8, 0xb2, 0x3f, 0xba, 0xe8, - 0xc3, 0xda, 0x40, 0x3f, 0xad, 0x7d, 0x8f, 0xc5, 0x18, 0x15, - 0x9b, 0xe0, 0xbc, 0xb3, 0xec, 0xb9, 0x2f, 0xfb, 0x78, 0xc5, - 0xf8, 0x7b, 0x94, 0x7d, 0x97, 0x35, 0xff, 00, 0x6f, 0x1f, - 0x17, 0xbf, 0xec, 0xdf, 0xe3, 0x3b, 0x66, 0xc, 0x80, 0x12, - 0x39, 0x4, 0x4a, 0x3f, 0xc6, 0x88, 0xbe, 0x9, 0xfc, 0x40, - 0xb0, 0x25, 0xa2, 0xca, 0xb7, 0xb4, 0x88, 0x7f, 0x9d, 0x7d, - 0xa0, 00, 0xa3, 0x68, 0xf4, 0xa8, 0xff, 00, 0x53, 0x30, - 0x6b, 0xe1, 0xab, 0x35, 0xff, 00, 0x6f, 0x19, 0xff, 00, - 0xc4, 0x3e, 0xc0, 0x47, 0xe0, 0xad, 0x51, 0x7f, 0xdb, 0xc7, - 0xc6, 0x91, 0xf8, 0x2b, 0xe2, 0x95, 0x82, 0xe2, 0x39, 0xa5, - 0x45, 0xf4, 0x6, 0x3f, 0xf0, 0xa9, 0x52, 0xf, 0x8b, 0x96, - 0x3f, 0x72, 0xf6, 0xe1, 0x78, 0xc7, 0x1e, 0x57, 0xf8, 0x57, - 0xd8, 0xa5, 0x17, 0xb8, 0x14, 0xd3, 0x14, 0x67, 0xaa, 0x3, - 0xf8, 0x51, 0xfe, 0xa9, 0x28, 0xff, 00, 0xf, 0x15, 0x51, - 0x7c, 0xc6, 0xb8, 0x1a, 0x30, 0xfe, 0x1e, 0x36, 0xaa, 0xff, - 00, 0xb7, 0x8f, 0x90, 0x7, 0x88, 0x7e, 0x2f, 0xdb, 0xc, - 0x35, 0xf5, 0xc3, 0xe3, 0xfb, 0xc2, 0x2a, 0x90, 0x7c, 0x44, - 0xf8, 0xaf, 0x69, 0xf7, 0xdc, 0xbf, 0xfb, 0xca, 0xbf, 0xd0, - 0xd7, 0xd7, 0x26, 0xce, 0x16, 0xeb, 0x12, 0x1f, 0xc2, 0xa3, - 0x3a, 0x6d, 0xa3, 0xe7, 0x75, 0xbc, 0x67, 0xfe, 0x2, 0x29, - 0xff, 00, 0xab, 0x58, 0xb8, 0xfc, 0x18, 0xe9, 0xfd, 0xe3, - 0xff, 00, 0x53, 0xf1, 0xb1, 0xfe, 0x1e, 0x63, 0x53, 0xe6, - 0xdb, 0x3e, 0x4f, 0x5f, 0x8d, 0x1f, 0x13, 0x6d, 0x7e, 0xfd, - 0xad, 0xbb, 0xf7, 0xf9, 0x93, 0x3f, 0xc9, 0xaa, 0x55, 0xfd, - 0xa2, 0xbe, 0x21, 0xdb, 0xc, 0x3e, 0x97, 0x60, 0xff, 00, - 0xef, 0xc4, 0xff, 00, 0xd1, 0xeb, 0xea, 0x67, 0xd0, 0xb4, - 0xf6, 0xfb, 0xd6, 0x90, 0x9f, 0xf8, 00, 0xa8, 0x24, 0xf0, - 0xae, 0x95, 0x27, 0xde, 0xb0, 0x80, 0xff, 00, 0xc0, 0x5, - 0x3f, 0xec, 0x2c, 0xd6, 0x1f, 0x6, 0x3a, 0x5f, 0x31, 0xff, - 00, 0xab, 0x59, 0xd5, 0x3f, 0xe1, 0xe6, 0x52, 0xf9, 0xa3, - 0xe6, 0x31, 0xfb, 0x50, 0x78, 0xd9, 0x8, 0xdf, 0xa1, 0xd8, - 0x37, 0xae, 0x12, 0x41, 0xff, 00, 0xb3, 0x54, 0xb1, 0xfe, - 0xd5, 0xbe, 0x27, 0x8d, 0xbf, 0x7b, 0xe1, 0xcb, 0x46, 0xf5, - 0xda, 0xec, 0xbf, 0xe3, 0x5f, 0x48, 0x3f, 0x82, 0x34, 0x29, - 0x3e, 0xf6, 0x99, 0x6e, 0x7f, 0xe0, 0x2, 0xab, 0xc9, 0xf0, - 0xe3, 0xc3, 0x72, 0x7d, 0xed, 0x22, 0xd8, 0xff, 00, 0xc0, - 0x29, 0x3c, 0xa7, 0x3f, 0x5f, 0xe, 0x3b, 0xf0, 0x5f, 0xe4, - 0x4b, 0xc8, 0xb8, 0x9e, 0x3f, 0x6, 0x65, 0xf7, 0xc5, 0x7f, - 0x91, 0xe0, 0x3, 0xf6, 0xb9, 0xd6, 0x14, 0x9f, 0x33, 0xc2, - 0x90, 0x9f, 0xa5, 0xd1, 0x1f, 0xfb, 0x25, 0x4c, 0xbf, 0xb6, - 0x15, 0xe2, 0xfd, 0xff, 00, 0x8, 0x2e, 0x3d, 0xb5, 0xf, - 0xfe, 0xd7, 0x5e, 0xe1, 0x27, 0xc2, 0x8f, 0xa, 0xcb, 0xf7, - 0xb4, 0x5b, 0x63, 0xff, 00, 0x1, 0xaa, 0x33, 0xfc, 0x16, - 0xf0, 0x84, 0xe3, 0x7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0x37, 0x96, 0xf1, 0x34, 0x7e, 0x1c, 0x64, 0x5f, 0xaa, 0x5f, - 0xfc, 0x89, 0x93, 0xca, 0x78, 0xc2, 0x3f, 0x6, 0x61, 0x17, - 0xeb, 0x15, 0xff, 00, 0xc8, 0x9e, 0x57, 0x63, 0xfb, 0x60, - 0xd9, 0xc9, 0x26, 0x2f, 0x34, 0x7, 0xb5, 0x4f, 0xef, 0x25, - 0xc9, 0x7f, 0xd3, 0x60, 0xae, 0x9a, 0xcb, 0xf6, 0xad, 0xf0, - 0x2c, 0xe1, 0x7e, 0xd1, 0x75, 0x73, 0x68, 0xc7, 0xae, 0xfb, - 0x77, 0x60, 0x3f, 0x10, 0x2b, 0x57, 0x50, 0xfd, 0x9c, 0xfc, - 0x23, 0x78, 0xa7, 0x6d, 0x84, 0x71, 0xe7, 0xfb, 0xb9, 0x1f, - 0xd6, 0xbc, 0xff, 00, 0x5f, 0xfd, 0x92, 0xac, 0xe6, 0x2e, - 0x6c, 0xa5, 0x8e, 0x20, 0x7e, 0xee, 0xf9, 0x1b, 0xfc, 0xd, - 0x45, 0xf8, 0xa7, 0xb, 0xbb, 0x85, 0x4f, 0x97, 0xf9, 0x58, - 0x94, 0xf8, 0xd3, 0x7, 0xf1, 0x3a, 0x75, 0x7e, 0x56, 0x7f, - 0x85, 0x8f, 0x65, 0xf0, 0xaf, 0xc4, 0xff, 00, 0xd, 0x78, - 0xca, 0x2f, 0x33, 0x4a, 0xd5, 0x23, 0xb8, 0x5f, 0xf6, 0xd5, - 0xa3, 0xff, 00, 0xd0, 0x80, 0xae, 0xa5, 0x64, 0xe, 0xa0, - 0x82, 0x8, 0x3d, 0xc1, 0xaf, 0x8c, 0x35, 0x6f, 0xd9, 0x47, - 0xc4, 0x56, 0x13, 0x79, 0xba, 0x7d, 0xf5, 0x90, 0x75, 0x39, - 0x56, 0x13, 0x3a, 0x90, 0x7d, 0xbe, 0x4a, 0x65, 0xb4, 0xbf, - 0x1a, 0xbe, 0x1c, 0xb6, 0xe8, 0x75, 0x99, 0x75, 0xb, 0x54, - 0xeb, 0xc, 0x8d, 0xe7, 0x82, 0x7, 0x60, 0x5d, 0x9, 0x1f, - 0x85, 0x7a, 0x14, 0x33, 0xcc, 0x75, 0x25, 0x6c, 0x76, 0x16, - 0x4b, 0xce, 0x3a, 0xa3, 0xd4, 0xc3, 0x71, 0x1e, 0x63, 0x45, - 0x5b, 0x32, 0xc1, 0x49, 0x79, 0xc7, 0x55, 0xf7, 0x1f, 0x69, - 0x86, 0xa7, 0x3, 0x8a, 0xf9, 0x87, 0x44, 0xfd, 0xb4, 0x2c, - 0xb4, 0x9b, 0x6f, 0x27, 0xc5, 0xfe, 0x1e, 0xd4, 0xed, 0x2f, - 0x81, 0xc1, 0x6b, 0x18, 0x55, 0xe3, 0xc7, 0xa9, 0x2c, 0xea, - 0x7f, 0x21, 0x5e, 0xdb, 0xe0, 0xf, 0x8a, 0xde, 0x1a, 0xf8, - 0x99, 0x63, 0xf6, 0x9d, 0x3, 0x53, 0x8a, 0xeb, 0x3, 0xe7, - 0x80, 0xb0, 0x59, 0x93, 0xfd, 0xe4, 0xea, 0x2b, 0xe8, 0xf0, - 0xb9, 0x9e, 0x13, 0x16, 0xf9, 0x69, 0x4f, 0x5e, 0xdb, 0x3f, - 0xb8, 0xfa, 0xcc, 0x1e, 0x6f, 0x82, 0xc7, 0xbe, 0x5a, 0x15, - 0x13, 0x97, 0x67, 0xa3, 0xfb, 0x99, 0xd9, 0x6e, 0xa3, 0x75, - 0x47, 0xbe, 0x80, 0xd5, 0xea, 0x1e, 0xc9, 0x26, 0x79, 0xa5, - 0xa6, 0xe7, 0x14, 0x64, 0xd0, 0x3, 0xa8, 0x1c, 0x1a, 0x40, - 0x73, 0x4b, 0x40, 0xe, 0xdd, 0x40, 0x39, 0xa6, 0xe6, 0x8c, - 0xe2, 0x80, 0x1f, 0x45, 0x37, 0x26, 0x9d, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x21, - 0xa5, 0xa6, 0x50, 0x1, 0x45, 0x14, 0xd2, 0x68, 0x1, 0xac, - 0x69, 0x28, 0x63, 0x4c, 0x26, 0x80, 0x1a, 0xe7, 0x2, 0xa2, - 0x62, 0x69, 0xce, 0x6a, 0x17, 0x6e, 0xb4, 00, 0xc7, 0x7a, - 0xab, 0x3c, 0xdb, 0x15, 0x98, 0xf4, 0x3, 0x9a, 0x91, 0xdb, - 0xad, 0x78, 0x47, 0xed, 0x61, 0xf1, 0x36, 0x2f, 0x5, 0xf8, - 0xe, 0x4d, 0x26, 0x19, 0x88, 0xd4, 0xf5, 0x85, 0x68, 0x22, - 0x11, 0xb8, 0xc, 0x89, 0xc6, 0xe6, 0xf5, 0x1d, 0x7a, 0x8a, - 0xe4, 0xc5, 0xe2, 0x23, 0x85, 0xa3, 0x2a, 0xd3, 0xd9, 0x2b, - 0x9c, 0x58, 0xdc, 0x54, 0x30, 0x58, 0x79, 0xd7, 0x9e, 0xd1, - 0x46, 0x47, 0xc3, 0x6f, 0x11, 0xbf, 0xc5, 0xdf, 0x89, 0xba, - 0x9f, 0x89, 0x58, 0xee, 0xd2, 0xec, 0xcf, 0x91, 0xa7, 0xa3, - 0x64, 0xed, 0x5e, 0x85, 0xb1, 0x92, 0x1, 0x38, 0xec, 0x6b, - 0xe9, 0x9d, 0x2b, 0x9, 0x1a, 0x8e, 0xb5, 0xe0, 0x1f, 0xb3, - 0x67, 0x86, 0x1b, 0x43, 0xf0, 0x45, 0x80, 0x74, 0xda, 0xf2, - 0x2e, 0xf3, 0xc7, 0x3d, 0x4d, 0x7d, 0x9, 0xa7, 0x47, 0x85, - 0x15, 0xc7, 0x95, 0xc2, 0x4b, 0xc, 0xa7, 0x53, 0xe2, 0x96, - 0xaf, 0xe6, 0x79, 0xf9, 0x2d, 0x39, 0xc7, 0x8, 0xaa, 0x55, - 0xf8, 0xa7, 0xef, 0x3f, 0x56, 0x5f, 0xa2, 0x8a, 0x2b, 0xd7, - 0x3d, 0xd0, 0xa2, 0x8a, 0x28, 0x1, 0x9, 0xc0, 0x24, 0xf4, - 0x15, 0xe0, 0xbf, 0xb4, 0xe7, 0xed, 0x9, 0x63, 0xf0, 0x97, - 0xc2, 0x17, 0x73, 0xc5, 0x31, 0x37, 0x4a, 0x8c, 0x7f, 0x76, - 0xc0, 0x11, 0xc1, 0xff, 00, 0x68, 0x7a, 0x57, 0xa3, 0xfc, - 0x59, 0xf1, 0xd5, 0xaf, 0x80, 0xbc, 0x11, 0xa9, 0x6a, 0x77, - 0x2e, 0xa9, 0xe5, 0xc4, 0x76, 0xe5, 0xc2, 0xf3, 0x8f, 0x5a, - 0xfc, 0x27, 0xfd, 0xa8, 0x7f, 0x68, 0xab, 0xdf, 0x88, 0x5a, - 0xd6, 0xa1, 0x1c, 0x57, 0x72, 0x49, 0xb, 0x4a, 0xca, 0x7, - 0x9a, 0x4a, 0xe3, 0x26, 0x80, 0x13, 0xf6, 0x85, 0xfd, 0xab, - 0xb5, 0x6f, 0x89, 0x5a, 0xcc, 0xa7, 0xed, 0x37, 0x4a, 0x87, - 0x70, 0x1b, 0xe4, 0x3e, 0xa7, 0xfd, 0xa3, 0x5f, 0x36, 0xdc, - 0x6a, 0x57, 0x37, 0x32, 0xb3, 0xbc, 0xf2, 0x12, 0xc7, 0x27, - 0x2e, 0x69, 0x16, 0x39, 0x6f, 0xa6, 0x3, 0x25, 0x9d, 0x8f, - 0x15, 0xd1, 0xc1, 0xf0, 0xdb, 0x57, 0x9e, 0xdc, 0x4c, 0xb0, - 0xbe, 0xc2, 0x33, 0x9d, 0x94, 0x1, 0xcb, 0x99, 0x64, 0x73, - 0xcb, 0xb1, 0xfa, 0x9a, 0xfa, 0x9f, 0xf6, 0x2f, 0xf0, 0x43, - 0x78, 0x87, 0xc7, 0xda, 0x34, 0x64, 0x67, 0xf7, 0xea, 0xc4, - 0x63, 0xaf, 0xcc, 0x3d, 0xab, 0xe6, 0x27, 0xd3, 0x65, 0xb6, - 0xbf, 0x5b, 0x67, 0x1f, 0x3e, 0xec, 0x60, 0x8a, 0xfd, 0x2c, - 0xff, 00, 0x82, 0x69, 0xfc, 0x3e, 0x7b, 0xff, 00, 0x18, - 0x5a, 0xde, 0x34, 0x79, 0x8e, 0x2, 0x18, 0x9f, 0x2f, 0x3d, - 0x30, 0x7a, 0xd0, 0x7, 0xe8, 0xb7, 0xc4, 0x3b, 0xc1, 0xe0, - 0x3f, 0x85, 0x1, 0x91, 0x8c, 0x9, 0x6b, 0x69, 0xd2, 0x33, - 0xb7, 0x90, 0x9f, 0x85, 0x7e, 0x42, 0xf8, 0xf3, 0xf6, 0xb3, - 0xd4, 0x1b, 0xc6, 0x3a, 0x97, 0x97, 0xa8, 0xdc, 0x4, 0x8e, - 0x67, 0x40, 0x4, 0xa7, 0xb1, 0x3f, 0xed, 0xd7, 0xeb, 0x1f, - 0xed, 0x6b, 0x30, 0x8b, 0xe1, 0x35, 0xf4, 0xa, 0x76, 0xb4, - 0x88, 0xcb, 0x80, 0x39, 0x23, 0x69, 0xaf, 0xc0, 0x2f, 0x8b, - 0xda, 0x7a, 0x69, 0x7e, 0x28, 0xb8, 0x8d, 0x7e, 0xf3, 0xbb, - 0x31, 0x20, 0x63, 0xb9, 0xcd, 00, 0x7e, 0x80, 0xfe, 0xc9, - 0xdf, 0x1e, 0x35, 0xf, 0x17, 0xf8, 0xa0, 0x99, 0x6f, 0xe7, - 0x9a, 0x35, 0x60, 0x36, 0xb4, 0xa4, 0x8e, 0x87, 0xde, 0xbf, - 0x55, 0x7c, 0x2d, 0x70, 0xd7, 0x7a, 0x25, 0xbc, 0xcd, 0x9c, - 0xb8, 0xcf, 0x35, 0xf8, 0x7d, 0xfb, 0x9, 0xdb, 0xb2, 0xeb, - 0xf6, 0xb0, 0xaf, 0x2d, 0x24, 0x80, 0x9f, 0x41, 0xd7, 0xad, - 0x7e, 0xe3, 0xf8, 0x7e, 0xd4, 0xd9, 0x68, 0xd6, 0x90, 0x9c, - 0xe5, 0x50, 0x3, 0x91, 0x8a, 00, 0xd0, 0x6e, 0x95, 0xe7, - 0x7f, 0x11, 0x75, 0x77, 0xb6, 0xb7, 0x70, 0xad, 0x83, 0x5e, - 0x81, 0x3b, 0x6c, 0x8d, 0x9b, 0xd0, 0x57, 0x8b, 0xfc, 0x49, - 0xbf, 0xf3, 0x64, 0xf2, 0xc1, 0xce, 0x5b, 0xfc, 0x6b, 0xe7, - 0x33, 0xda, 0xee, 0x86, 0x15, 0xd9, 0xee, 0x7c, 0x9f, 0x12, - 0xe2, 0x5e, 0x1f, 0x5, 0x2b, 0x3d, 0x59, 0xc6, 0x2e, 0xab, - 0x73, 0x92, 0x77, 0x75, 0xfa, 0xff, 00, 0x8d, 0x48, 0x35, - 0x9b, 0x91, 0xdf, 0xf5, 0x35, 0x54, 0xc, 0xa, 0x2b, 0xf2, - 0x25, 0x52, 0xa7, 0xf3, 0x33, 0xf0, 0x95, 0x56, 0xaf, 0xf3, - 0x32, 0xe2, 0xeb, 0x97, 00, 0x75, 0x3f, 0x99, 0xa7, 0xaf, - 0x88, 0x2e, 0x7, 0x73, 0xf9, 0x9a, 0xa1, 0x46, 0x2a, 0xbd, - 0xb5, 0x55, 0xb4, 0x8b, 0x58, 0x8a, 0xcb, 0xed, 0x33, 0x4c, - 0x78, 0x96, 0xe0, 0x7f, 0x7b, 0xf3, 0x34, 0xe5, 0xf1, 0x44, - 0xe3, 0xfb, 0xdf, 0x99, 0xac, 0xac, 0x51, 0x8a, 0xb5, 0x89, - 0xae, 0xbe, 0xd1, 0x6b, 0x17, 0x88, 0x5b, 0x4c, 0xd8, 0x5f, - 0x15, 0xcc, 0x3f, 0xbd, 0xf9, 0xff, 00, 0xf5, 0xea, 0x41, - 0xe2, 0xd9, 0x47, 0x76, 0xfc, 0xff, 00, 0xfa, 0xf5, 0x84, - 0x54, 0x1a, 0x36, 0x8f, 0x4a, 0xa5, 0x8b, 0xae, 0xbe, 0xd1, - 0x6b, 0x1d, 0x89, 0x5f, 0x6c, 0xe8, 0x47, 0x8c, 0x64, 0x1f, - 0xc4, 0xdf, 0x9f, 0xff, 00, 0x5e, 0xa5, 0x4f, 0x19, 0x38, - 0x3f, 0x78, 0xfe, 0x7f, 0xfd, 0x7a, 0xe6, 0x76, 0x8f, 0x4a, - 0x36, 0x8a, 0xb5, 0x8e, 0xc4, 0xaf, 0xb4, 0x6a, 0xb3, 0x1c, - 0x5a, 0xfb, 0x47, 0x56, 0x9e, 0x34, 0x60, 0x7e, 0xf3, 0x7e, - 0x7f, 0xfd, 0x7a, 0xb5, 0x17, 0x8e, 0x88, 0xc7, 0xcc, 0x7f, - 0x3f, 0xfe, 0xbd, 0x71, 0x3b, 0x5, 0x1e, 0x58, 0xad, 0x56, - 0x65, 0x89, 0x8f, 0x53, 0x68, 0xe6, 0xf8, 0xc8, 0xed, 0x23, - 0xd3, 0xf4, 0xef, 0x88, 0x8, 0xae, 0x32, 0x49, 0xfc, 0x7f, - 0xfa, 0xf5, 0xd6, 0xe9, 0xfe, 0x38, 0xb7, 0xb8, 00, 0x30, - 0x3f, 0x86, 0x3f, 0xc6, 0xbc, 0x11, 0x54, 0x29, 0xcf, 0x15, - 0x7a, 0xd7, 0x56, 0x6b, 0x43, 0xc6, 0x78, 0xf4, 0x35, 0xec, - 0x61, 0x78, 0x82, 0xbd, 0x2d, 0x27, 0xb1, 0xef, 0x60, 0xf8, - 0xa3, 0x13, 0x45, 0xda, 0xa6, 0xc7, 0xd1, 0x96, 0x5a, 0x94, - 0x57, 0xbf, 0x72, 0xad, 0xe6, 0xbc, 0x5b, 0xc3, 0x9e, 0x39, - 0x78, 0x1d, 0x54, 0x96, 0x1d, 0xba, 0xd7, 0xaa, 0x68, 0x5a, - 0xba, 0x6a, 0x76, 0xaa, 0xfb, 0x86, 0x48, 0xaf, 0xbe, 0xcb, - 0xf3, 0x3a, 0x58, 0xd8, 0xe8, 0xf5, 0x3f, 0x4e, 0xca, 0xf3, - 0x8a, 0x39, 0x84, 0x6c, 0x9f, 0xbc, 0x6b, 0xd1, 0x48, 0xd, - 0x2d, 0x7b, 0x67, 0xd1, 0x5, 0x21, 0x1d, 0xe9, 0x69, 0xd, - 00, 0x41, 0x75, 0x38, 0xb5, 0xb7, 0x79, 0x5b, 0xa2, 0x8c, - 0xd7, 0x1b, 0x37, 0x8e, 0x76, 0xcc, 0x40, 0x3c, 0x3, 0x8e, - 0xbf, 0xfd, 0x7a, 0xd6, 0xf1, 0xcd, 0xe1, 0xb3, 0xd0, 0x6e, - 0x58, 0x1c, 0x1d, 0x87, 0x1c, 0xe2, 0xbc, 0x5, 0xef, 0xae, - 0x19, 0xf3, 0xbc, 0xfe, 0x75, 0xf1, 0xb9, 0xde, 0x6b, 0x2c, - 0xd, 0x48, 0xd3, 0xa6, 0x7e, 0x7f, 0xc4, 0x59, 0xdc, 0xf2, - 0xea, 0xd0, 0xa5, 0x4f, 0xaa, 0xb9, 0xed, 0x2b, 0xe3, 0xa0, - 0x7f, 0xfd, 0x7f, 0xfd, 0x7a, 0x95, 0x7c, 0x72, 0xa7, 0xaf, - 0xf3, 0xff, 00, 0xeb, 0xd7, 0x89, 0xb, 0xfb, 0x81, 0xfc, - 0x44, 0xfe, 0x34, 0xf1, 0xa9, 0xdc, 0xe, 0xe7, 0xf3, 0xaf, - 0x9d, 0x5c, 0x47, 0x58, 0xf9, 0x58, 0xf1, 0x66, 0x21, 0x6e, - 0x7b, 0x7a, 0xf8, 0xe2, 0x3c, 0x74, 0xff, 00, 0x3f, 0x9d, - 0x48, 0xbe, 0x35, 0x88, 0xf5, 0x5c, 0xff, 00, 0x9f, 0xad, - 0x78, 0x77, 0xf6, 0xc5, 0xc0, 0xee, 0x7f, 0x3a, 0x72, 0xeb, - 0x77, 0x3, 0xb9, 0x3f, 0x8d, 0x6c, 0xb8, 0x96, 0xa2, 0xdc, - 0xe8, 0x8f, 0x17, 0x55, 0x5b, 0x9e, 0xe8, 0xbe, 0x33, 0x83, - 0xfb, 0x9f, 0xe7, 0xf3, 0xa9, 0x57, 0xc5, 0xd6, 0xe7, 0xf8, - 0x4f, 0xe7, 0x5e, 0x12, 0x3c, 0x41, 0x38, 0xf5, 0xfc, 0xe9, - 0xe3, 0xc4, 0x57, 0xb, 0xd8, 0xfe, 0x75, 0xb2, 0xe2, 0x69, - 0x75, 0xfc, 0x8d, 0xe3, 0xc6, 0x13, 0x5b, 0xfe, 0x47, 0xbb, - 0x8f, 0x15, 0xdb, 0x9e, 0xc7, 0xf3, 0xa7, 0xf, 0x13, 0xdb, - 0x13, 0xd0, 0xfe, 0x75, 0xe1, 0x23, 0xc4, 0xd3, 0xe, 0xc7, - 0xf3, 0xa7, 0x8f, 0x14, 0xcc, 0x3f, 0xbd, 0xff, 00, 0x7d, - 0x56, 0xab, 0x89, 0xbb, 0x9b, 0xae, 0x30, 0xef, 0xf9, 0x1e, - 0xee, 0xbe, 0x22, 0xb6, 0x6f, 0xff, 00, 0x58, 0xa9, 0x6, - 0xbb, 0x6c, 0x7b, 0xfe, 0xb5, 0xe1, 0xb, 0xe2, 0xb9, 0x3d, - 0x5b, 0xf3, 0xa9, 0x17, 0xc5, 0xce, 0xbd, 0xdb, 0xf3, 0xad, - 0x97, 0x13, 0x47, 0xaa, 0x37, 0x8f, 0x17, 0xc3, 0xaa, 0x3d, - 0xd9, 0x75, 0xab, 0x73, 0xfc, 0x42, 0x9e, 0x35, 0x5b, 0x7f, - 0xef, 0xd7, 0x85, 0x2f, 0x8c, 0x1b, 0xfb, 0xcc, 0x3f, 0xe0, - 0x55, 0x2a, 0xf8, 0xcc, 0xff, 00, 0x7c, 0xfe, 0x75, 0xb2, - 0xe2, 0x4a, 0x6f, 0xa1, 0xd1, 0x1e, 0x2e, 0xa5, 0xd5, 0x1e, - 0xe4, 0x35, 0x28, 0xf, 0xf1, 0x8a, 0x78, 0xbe, 0x84, 0xff, - 00, 0x18, 0xfc, 0xeb, 0xc3, 0x97, 0xc6, 0xb8, 0xff, 00, - 0x96, 0x84, 0x7f, 0xc0, 0xaa, 0x55, 0xf1, 0xbf, 0xfd, 0x35, - 0x3f, 0xf7, 0xd5, 0x6c, 0xb8, 0x8e, 0x8f, 0x53, 0x78, 0xf1, - 0x66, 0x1d, 0xee, 0x7b, 0x70, 0xbb, 0x88, 0xff, 00, 0x10, - 0xa7, 0x79, 0xe8, 0x7f, 0x8c, 0x57, 0x8a, 0x47, 0xe3, 0x8f, - 0xfa, 0x6a, 0x7f, 0xef, 0xaa, 0x98, 0x78, 0xeb, 0x8e, 0x24, - 0x3f, 0xf7, 0xd5, 0x6a, 0xb8, 0x87, 0xe, 0xf7, 0x37, 0x5c, - 0x53, 0x85, 0x67, 0xb3, 0xab, 0x6, 0xe8, 0x41, 0xfa, 0x53, - 0xab, 0x85, 0xf0, 0x7e, 0xb8, 0xda, 0x88, 0xdd, 0xb8, 0x90, - 0x7d, 0xeb, 0xb9, 0x1d, 0x2b, 0xe8, 0x30, 0xb8, 0x98, 0xe2, - 0xa9, 0xaa, 0x91, 0x3e, 0xa7, 0x7, 0x8b, 0x86, 0x32, 0x92, - 0xab, 0xd, 0x85, 0xa2, 0x8a, 0x2b, 0xb0, 0xee, 0xa, 0x28, - 0xa2, 0x80, 0xa, 0x28, 0xa4, 0xcd, 00, 0x2d, 0x15, 0x1b, - 0x4e, 0x89, 0xf7, 0x98, 0x2f, 0xd4, 0xd6, 0x7d, 0xee, 0xbf, - 0x6d, 0x68, 0xa4, 0xf9, 0x8a, 0x7f, 0xe0, 0x55, 0x9c, 0xea, - 0x42, 0xa, 0xf2, 0x66, 0x55, 0x2a, 0xc2, 0x92, 0xbc, 0xdd, - 0x8d, 0x3c, 0xd2, 0x71, 0x5c, 0x7c, 0xfe, 0x3e, 0xb6, 0x84, - 0xfa, 0xe3, 0xde, 0xb3, 0x6e, 0xbe, 0x29, 0x5b, 0xc7, 0xc0, - 0x1c, 0xfb, 0x1f, 0xfe, 0xb5, 0x79, 0xb3, 0xcd, 0x30, 0x94, - 0xfe, 0x29, 0x9e, 0x45, 0x4c, 0xeb, 0x3, 0x4b, 0xe2, 0xa8, - 0x8f, 0x42, 0xc8, 0xa3, 0x2b, 0x5e, 0x5c, 0xff, 00, 0x14, - 0xa1, 0x63, 0xd7, 0x1f, 0x56, 0xa5, 0x4f, 0x89, 0xb0, 0x13, - 0xcb, 0x7f, 0xe3, 0xd5, 0xca, 0xf3, 0xbc, 0x25, 0xed, 0xcc, - 0x71, 0x7f, 0xac, 0x79, 0x7d, 0xfe, 0x33, 0xd4, 0x73, 0x46, - 0x6b, 0xcc, 0xd3, 0xe2, 0x5d, 0xb1, 0xfe, 0x3f, 0xfc, 0x7a, - 0xaf, 0x5a, 0xfc, 0x48, 0xb4, 0x63, 0x82, 0xe3, 0xfe, 0xfa, - 0xad, 0xa3, 0x9b, 0xe1, 0x24, 0xed, 0xce, 0x6f, 0xc, 0xfb, - 0x3, 0x37, 0x65, 0x34, 0x77, 0xf4, 0x57, 0x37, 0x6d, 0xe3, - 0x9b, 0xb, 0x8c, 0x7c, 0xe0, 0x7e, 0x35, 0xa7, 0x6, 0xbb, - 0x69, 0x3f, 0xdd, 0x90, 0x67, 0xeb, 0x5e, 0x84, 0x31, 0x54, - 0x6a, 0x7c, 0x12, 0x4c, 0xf5, 0xa9, 0xe3, 0x30, 0xf5, 0x7e, - 0x9, 0xa6, 0x68, 0xd1, 0x4c, 0x49, 0x4, 0x8a, 0xa, 0xf2, - 0x29, 0xd9, 0xae, 0x9b, 0x9d, 0x82, 0xd1, 0x48, 0xd, 0x2d, - 0x30, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x29, 0x28, 0xa0, 0x5, 0xa2, 0x92, 0x82, 0x71, - 0x40, 0xb, 0x45, 0x34, 0xb6, 0x29, 0x72, 0x3d, 0x68, 0xb, - 0x8b, 0x45, 0x26, 0xe1, 0x46, 0xea, 00, 0x5a, 0x29, 0x37, - 0x52, 0x6e, 0xa0, 0x7, 0x51, 0x4d, 0xdd, 0x4b, 0x9a, 00, - 0x5a, 0x64, 0x8b, 0xb9, 0x69, 0xf4, 0x8d, 0xf7, 0x4d, 00, - 0x62, 0x5e, 0xc4, 0xa4, 0x1c, 0x81, 0x5c, 0xae, 0xaf, 0x65, - 0x1c, 0x81, 0x83, 0x28, 0x61, 0xe8, 0x45, 0x75, 0xd7, 0xfd, - 0xe, 0x2b, 0x9c, 0xd4, 0x30, 0x43, 0x52, 0xb2, 0x64, 0xb8, - 0xa7, 0xb9, 0xe4, 0x7e, 0x30, 0xf8, 0x77, 0xa3, 0x6b, 0x91, - 0xc8, 0x27, 0xb2, 0x83, 0x79, 0xfe, 0x31, 0x1a, 0xe7, 0xf9, - 0x57, 0x89, 0x6a, 0xbf, 0xa, 0xf5, 0xbf, 0x4, 0x5f, 0xb6, - 0xa9, 0xe1, 0x1d, 0x72, 0xe7, 0x4a, 0x9d, 0x48, 0x72, 0x90, - 0xc8, 0xc8, 0xaf, 0x8e, 0x81, 0x82, 0x81, 0xb8, 0x75, 0xe0, - 0xfa, 0xd7, 0xd3, 0x9a, 0xb4, 0x63, 0xe6, 0xae, 0x23, 0x59, - 0x88, 0x10, 0xdc, 0x57, 0x95, 0x88, 0xcb, 0x30, 0xd8, 0x87, - 0xcc, 0xe3, 0x69, 0x77, 0x5a, 0x33, 0xc5, 0xc5, 0x64, 0xf8, - 0x4c, 0x53, 0xe7, 0x70, 0xb4, 0xbb, 0xad, 0x1a, 0xf9, 0xa3, - 0x53, 0xe0, 0x57, 0xed, 0x27, 0xff, 00, 0x9, 0x6d, 0xfd, - 0xaf, 0x84, 0x7c, 0x4b, 0x69, 0x2d, 0xa7, 0x8a, 0x15, 0x8, - 0x13, 0xa8, 0x2, 0x1b, 0x8d, 0xa3, 0x92, 0x37, 0x36, 0xec, - 0xfe, 0x1e, 0xb5, 0xef, 0xe1, 0xab, 0xe1, 0x8f, 0x1a, 0xe9, - 0xb, 0x75, 0x19, 0x96, 0xde, 0x46, 0xb2, 0xbe, 0x89, 0x83, - 0xc1, 0x77, 0x9, 0x2b, 0x2c, 0x4c, 0xf, 0xc, 0xac, 0x30, - 0x41, 0xfa, 0x1a, 0xf6, 0x1f, 0x82, 0x3f, 0xb4, 0x62, 0xea, - 0x4f, 0x67, 0xe1, 0x8f, 0x16, 0x3a, 0xdb, 0xea, 0xaa, 0x8b, - 0x14, 0x3a, 0x94, 0xb3, 0xd, 0x97, 0x67, 0x80, 0x1, 0xc8, - 0xe1, 0xcf, 0xb9, 0x39, 0xf5, 0xad, 0xa8, 0x3a, 0x94, 0x7f, - 0x77, 0x59, 0xdd, 0x74, 0x7f, 0xe7, 0xe6, 0x74, 0x61, 0xdd, - 0x6c, 0x3a, 0xf6, 0x55, 0xdf, 0x37, 0x67, 0xfe, 0x7e, 0x67, - 0xd1, 0x1, 0xb3, 0x4b, 0x9a, 0x84, 0x3e, 0x71, 0x8a, 0x7e, - 0xea, 0xf4, 0xf, 0x50, 0x95, 0x4d, 0x2e, 0x7d, 0xea, 0x30, - 0x78, 0xa7, 0x29, 0x19, 0xa0, 0x9, 0x16, 0x96, 0x99, 0x9a, - 0x51, 0xd6, 0x80, 0x1d, 0x4b, 0x9f, 0x7a, 0x4c, 0xd1, 0x40, - 0xe, 0x1d, 0x29, 0x69, 0x99, 0xa7, 0x2d, 00, 0x2d, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x52, 0x1e, 0x94, 00, 0x99, 0xe2, 0x92, 0x8a, - 0x28, 00, 0x35, 0x1b, 0x74, 0xa7, 0xb5, 0x46, 0xc6, 0x80, - 0x10, 0xb0, 0xc5, 0x46, 0xcd, 0x4a, 0xd5, 0x13, 0x9c, 0x66, - 0x80, 0x1b, 0x23, 0x75, 0xaa, 0xf2, 0x36, 0x33, 0x4f, 0x76, - 0xe2, 0xab, 0xc8, 0xdd, 0x68, 0x2, 0x29, 0x5f, 00, 0xf3, - 0x5f, 0x5, 0xfe, 0xd1, 0x5a, 0xd5, 0xcf, 0x8f, 0x7f, 0x68, - 0x57, 0xd1, 0x5b, 0x1e, 0x46, 0x95, 0xb2, 0xd5, 0x14, 0xc, - 0x75, 0x1, 0xc9, 0xfa, 0xfc, 0xc3, 0xf2, 0xaf, 0xbb, 0x66, - 0x94, 0x20, 0x66, 0x62, 0x15, 0x40, 0xc9, 0x24, 0xf0, 0x2b, - 0xe1, 0xbf, 0x1, 0x45, 0xff, 00, 0xb, 0x7, 0xf6, 0x8c, - 0xf1, 0x6, 0xb0, 0x47, 0x9f, 0x1a, 0xde, 0x38, 0x2e, 0x40, - 0x1f, 0x74, 0x6c, 0xed, 0xfe, 0xe5, 0x7c, 0xa7, 0x10, 0x5e, - 0xac, 0x29, 0x61, 0xd7, 0xdb, 0x92, 0x5f, 0x23, 0xe2, 0x78, - 0xa1, 0x3a, 0xd4, 0xe8, 0x61, 0x62, 0xff, 00, 0x89, 0x34, - 0xbe, 0x47, 0xd8, 0xde, 0x4, 0xd2, 0x57, 0x4e, 0xd3, 0x2d, - 0xa0, 0x51, 0x80, 0x88, 0x5, 0x7a, 0x15, 0xaa, 0x6d, 0x5a, - 0xe6, 0xf4, 0xb, 0x7d, 0xb1, 0x20, 0xc5, 0x75, 0x31, 0x2e, - 0xd4, 0x2, 0xbe, 0xa2, 0x11, 0xe5, 0x8a, 0x8a, 0xe8, 0x7d, - 0x95, 0x38, 0xa8, 0x41, 0x45, 0x74, 0x1f, 0x45, 0x14, 0x55, - 0x9a, 0x5, 0x47, 0x34, 0xa2, 0x18, 0xd9, 0xdb, 0x85, 0x51, - 0x92, 0x6a, 0x4a, 0xe6, 0x3e, 0x22, 0xeb, 0x23, 0x42, 0xf0, - 0x96, 0xa1, 0x73, 0xbb, 0x61, 0x11, 0xf0, 0xde, 0x94, 0x1, - 0xf0, 0x77, 0xfc, 0x14, 0x3f, 0xf6, 0x80, 0x7d, 0x3b, 0xc1, - 0xd7, 0x9a, 0x4c, 0x13, 0x84, 0x32, 0x12, 0xa0, 0x1, 0xec, - 0x7f, 0xd9, 0xf7, 0xaf, 0xc7, 0xc9, 0x5a, 0x5d, 0x4e, 0xe4, - 0xb7, 0x2f, 0x23, 0xb1, 0x3d, 0x7b, 0x93, 0x5f, 0x52, 0xfe, - 0xdb, 0xfe, 0x3c, 0x9b, 0x5d, 0xf1, 0x2c, 0xb6, 0xc6, 0x66, - 0x60, 0x5c, 0x9c, 0x10, 0x3f, 0xc2, 0xbc, 0x8f, 0xe0, 0x5f, - 0x81, 0x8f, 0x8b, 0xbc, 0x4f, 0xa6, 0xdb, 0xf9, 0x3e, 0x68, - 0x96, 0xe1, 0x17, 0x6f, 0xaf, 0xcc, 0x28, 0x3, 0xe8, 0x4f, - 0xd9, 0x6b, 0xf6, 0x2a, 0x9f, 0xe2, 0x85, 0xb5, 0xae, 0xa1, - 0x71, 0x6b, 0x23, 0xa1, 0x61, 0xca, 0xb8, 0x3, 0xa0, 0xff, - 00, 0x68, 0x7a, 0xd7, 0xd2, 0x5f, 0x19, 0x7f, 0x65, 0x2b, - 0xf, 0x85, 0x3e, 0xb, 0xbd, 0xb9, 0x31, 0x1d, 0xd0, 0xc2, - 0x39, 0x66, 0xe3, 0xb7, 0xfb, 0x46, 0xbe, 0xe4, 0xfd, 0x9f, - 0x3e, 0x18, 0xd8, 0x7c, 0x3d, 0xf8, 0x73, 0xa5, 0x42, 0x96, - 0xe8, 0x93, 0x98, 0x83, 0xb1, 0x5c, 0xf1, 0xf2, 0x8e, 0x3f, - 0x4a, 0xf9, 0x37, 0xfe, 0xa, 0x3d, 0xf1, 0x23, 0xfb, 0x23, - 0xc1, 0x97, 0xf6, 0xa9, 0x3e, 0x1a, 0x4e, 0x2, 0xf1, 0x8e, - 0xa3, 0xaf, 0x14, 0x1, 0xf9, 0x24, 0x90, 0xd, 0x53, 0xc7, - 0x13, 0x84, 0x19, 0x41, 0x27, 0x6, 0xbf, 0x67, 0x3f, 0xe0, - 0x9b, 0xde, 0x2, 0xfe, 0xc6, 0xf0, 0x6c, 0xba, 0x9c, 0x91, - 0xec, 0x69, 0x14, 0xed, 0xe7, 0x3d, 0xc7, 0xbd, 0x7e, 0x3d, - 0xfc, 0x18, 0xd2, 0x9f, 0xc4, 0x3e, 0x30, 0xc6, 0x3, 0xbb, - 0x48, 0xb9, 0x3f, 0x52, 0x6b, 0xfa, 00, 0xfd, 0x98, 0x7c, - 0x28, 0x9e, 0x12, 0xf8, 0x53, 0xa6, 0x44, 0x63, 0x11, 0xb3, - 0xc6, 0x18, 0x9c, 0xf5, 0xa0, 0xe, 0x37, 0xf6, 0xc5, 0xd7, - 0x56, 0xd7, 0xc2, 0x33, 0x40, 0xc7, 0x2a, 0xb0, 0xb3, 0x10, - 0x3e, 0x8d, 0x5f, 0x83, 0x7f, 0x15, 0xf5, 0x31, 0xac, 0x78, - 0xea, 0xfe, 0x45, 0x70, 0xe8, 0x25, 0x65, 0x18, 0x18, 0x3, - 0xe6, 0x35, 0xfa, 0xe3, 0xfb, 0x7f, 0x7c, 0x48, 0x8b, 0x4f, - 0xd1, 0xb5, 0x18, 0xc4, 0xcd, 0xfe, 0xad, 0x94, 0x28, 0x3, - 0x9e, 0x1a, 0xbf, 0x1a, 0xae, 0x26, 0x3a, 0x86, 0xab, 0x34, - 0xa7, 0x96, 0x92, 0x46, 0x73, 0xf8, 0x9c, 0xd0, 0x7, 0xdd, - 0xff, 00, 0xf0, 0x4d, 0x8f, 0xd, 0xbe, 0xbf, 0xe3, 0xd8, - 0x5c, 0xa9, 0x31, 0xc0, 0xc8, 0x33, 0xd8, 0x70, 0xdc, 0xf5, - 0xe6, 0xbf, 0x6a, 0x14, 00, 0xa0, 0xe, 0x95, 0xf9, 0xa3, - 0xff, 00, 0x4, 0xaa, 0xf8, 0x78, 0x6d, 0x74, 0x9b, 0x8d, - 0x5e, 0x58, 0x40, 0x62, 0xc0, 0x86, 0x24, 0xf1, 0xf7, 0xbf, - 0x33, 0x5f, 0xa5, 0xdd, 0xa8, 0x2, 0x9e, 0xaf, 0x37, 0x93, - 0x66, 0xe7, 0xda, 0xbc, 0x7, 0xc5, 0xf7, 0x66, 0xeb, 0x53, - 0x61, 0x9c, 0x85, 0x27, 0x8a, 0xf6, 0xaf, 0x16, 0xde, 0xb, - 0x7b, 0x27, 0xfa, 0x57, 0x80, 0xdf, 0xcb, 0xe7, 0xdf, 0xca, - 0xfd, 0x7e, 0x63, 0x5f, 0x9d, 0xf1, 0x3d, 0x7b, 0xf2, 0xd2, - 0x4c, 0xfc, 0xa7, 0x8c, 0xb1, 0x3a, 0xc2, 0x8a, 0x21, 0xa2, - 0x8a, 0x2b, 0xe0, 0xf, 0xcc, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x82, 0x1, 0xa2, 0x8a, - 00, 0x54, 0x95, 0xa0, 0x39, 0x5e, 0x2b, 0xb9, 0xf0, 0x47, - 0x89, 0x25, 0x8a, 0x54, 0x49, 0x1f, 0xb, 0xf4, 0xae, 0x16, - 0xa6, 0xb3, 0x9d, 0xa0, 0x9d, 0x48, 0x62, 0x6, 0x7b, 0x57, - 0x6e, 0xf, 0x11, 0x2c, 0x2d, 0x55, 0x38, 0xb3, 0xd0, 0xc0, - 0x63, 0x27, 0x82, 0xad, 0x1a, 0x91, 0x67, 0xd2, 0xf6, 0x17, - 0x49, 0x77, 0x2, 0xba, 0x9c, 0xf1, 0x56, 0x6b, 0x8c, 0xf0, - 0x26, 0xaa, 0x2f, 0x2d, 0x95, 0x1, 0xc8, 00, 0x57, 0x64, - 0x39, 0xaf, 0xda, 0xf0, 0xb5, 0xd6, 0x22, 0x8c, 0x6a, 0x2e, - 0xa7, 0xf4, 0x3e, 0xb, 0x10, 0xb1, 0x54, 0x23, 0x55, 0x75, - 0x16, 0x90, 0xd2, 0xd3, 0x58, 0xe0, 0x57, 0x59, 0xdc, 0x70, - 0x5f, 0x14, 0x2e, 0xf6, 0x69, 0x72, 0xc7, 0x9e, 0xa3, 0xa5, - 0x78, 0xc5, 0x7a, 0x37, 0xc5, 0x2d, 0x43, 0x7c, 0xc2, 0x20, - 0x7e, 0xa0, 0x57, 0x9c, 0xd7, 0xe3, 0xf9, 0xf5, 0x6f, 0x6b, - 0x8c, 0x69, 0x74, 0x3f, 0x5, 0xe2, 0x6a, 0xfe, 0xdb, 0x30, - 0x95, 0xba, 0x68, 0x14, 0x51, 0x45, 0x7c, 0xe9, 0xf2, 0x81, - 0x8a, 0x28, 0xa2, 0x90, 0x5, 0x18, 0xa2, 0x8a, 00, 0x36, - 0x8a, 0x4d, 0xa3, 0xd2, 0x96, 0x8a, 0x34, 0x16, 0x82, 0x6d, - 0x1e, 0x94, 0x6c, 0x1e, 0x94, 0xb4, 0x51, 0x64, 0x16, 0x42, - 0x6c, 0x14, 0x6c, 0x5f, 0x4a, 0x5a, 0x29, 0x59, 0x5, 0x90, - 0x86, 0x35, 0x34, 0x9e, 0x58, 0xf5, 0xa7, 0x51, 0x47, 0x2a, - 0x15, 0x90, 0xdf, 0x2c, 0x53, 0x5a, 0x2c, 0xf4, 0x26, 0xa4, - 0xa9, 0x6d, 0x13, 0xcc, 0xbb, 0x85, 0x3a, 0xe5, 0x80, 0xc5, - 0x35, 0x14, 0xda, 0x43, 0x50, 0x4e, 0x49, 0x1e, 0xb7, 0xf0, - 0xe7, 0x4e, 0xf2, 0x6d, 0x90, 0x90, 0x6b, 0xd1, 0x6b, 0x9b, - 0xf0, 0x75, 0xa7, 0x93, 0x62, 0xa4, 0x8e, 0xd5, 0xd2, 0xd7, - 0xed, 0xf9, 0x6d, 0x2f, 0x63, 0x86, 0x8c, 0x4f, 0xe8, 0xcc, - 0x9e, 0x82, 0xc3, 0xe0, 0xe1, 0x5, 0xd8, 0x28, 0xa2, 0x8a, - 0xf5, 0xf, 0x68, 0x29, 0x29, 0x7, 0xad, 0x50, 0xd5, 0x75, - 0x58, 0xb4, 0xf8, 0x19, 0x99, 0xc0, 0x6c, 0x74, 0xa8, 0x9c, - 0xe3, 0x8, 0xb9, 0x4b, 0x64, 0x67, 0x52, 0xa4, 0x69, 0xc5, - 0xca, 0x6e, 0xc9, 0x16, 0xe6, 0x99, 0x6d, 0xd4, 0xb3, 0x1c, - 0x57, 0x3d, 0xaa, 0xf8, 0xca, 0xd6, 0xce, 0x36, 0x1, 0x86, - 0xef, 0xaf, 0xff, 00, 0x5a, 0xb8, 0x6f, 0x11, 0xfc, 0x44, - 0x79, 0x19, 0xa3, 0x47, 0x6c, 0x67, 0x1c, 0xa, 0xe1, 0xaf, - 0xf5, 0x49, 0x2f, 0x98, 0xb6, 0xe3, 0xcd, 0x7c, 0x56, 0x3f, - 0x88, 0xa1, 0x4e, 0xf0, 0xa1, 0xab, 0x3f, 0x3b, 0xcc, 0xf8, - 0xaa, 0x14, 0xaf, 0xc, 0x36, 0xac, 0xed, 0x75, 0x8f, 0x1d, - 0x4a, 0xe4, 0xf9, 0x4f, 0x8a, 0xe4, 0xaf, 0x3c, 0x4f, 0x7b, - 0x70, 0x4e, 0x5e, 0xb2, 0x40, 0x3d, 0xcd, 0x2d, 0x7c, 0x2e, - 0x23, 0x30, 0xc4, 0x62, 0x1d, 0xe5, 0x26, 0x7e, 0x6f, 0x89, - 0xcd, 0x71, 0x58, 0xa7, 0x79, 0x49, 0xa2, 0xc3, 0x6a, 0x97, - 0xf, 0xf7, 0x8d, 0x42, 0xd2, 0xb4, 0x87, 0x2d, 0x4d, 0xa2, - 0xbc, 0xf7, 0x29, 0x4b, 0x76, 0x79, 0x6e, 0x53, 0x97, 0xc4, - 0xee, 0x18, 0x14, 0x9b, 0x45, 0x2d, 0x15, 0x36, 0x44, 0xd8, - 0x4d, 0xb4, 0xe4, 0x25, 0xf, 0x4, 0x8a, 0x4a, 0x28, 0xb0, - 0x6d, 0xa9, 0x76, 0xdf, 0x53, 0x6b, 0x72, 0xe, 0xe3, 0xc5, - 0x6d, 0x69, 0xfe, 0x31, 0x6b, 0x77, 0x1f, 0x35, 0x73, 0x18, - 0x6, 0x80, 00, 0x3d, 0x2b, 0xae, 0x9e, 0x26, 0xb5, 0x1f, - 0x85, 0x9d, 0xb4, 0x71, 0xb5, 0xe8, 0x3b, 0xc1, 0x9e, 0xc5, - 0xa1, 0xf8, 0xf8, 0x4c, 0x8a, 0xa5, 0x86, 0x2b, 0xb5, 0xd3, - 0xf5, 0x15, 0xbe, 0x40, 0x46, 0x2b, 0xe6, 0xfb, 0x7d, 0x46, - 0x4b, 0x56, 0x1b, 0x7b, 0x57, 0x63, 0xe1, 0xbf, 0x18, 0xcd, - 0x13, 0x28, 0x66, 0x2a, 0x3f, 0xa, 0xfb, 0x4c, 0xb7, 0x88, - 0x1b, 0x6a, 0x15, 0x99, 0xfa, 0x1e, 0x53, 0xc5, 0xf, 0x99, - 0x53, 0xc4, 0x33, 0xdb, 0x47, 0x4a, 0x5a, 0xc5, 0xd1, 0x75, - 0xa8, 0xef, 0x62, 0x5c, 0xc9, 0x92, 0x6b, 0x60, 0x73, 0xcd, - 0x7e, 0x81, 0x4e, 0xac, 0x6a, 0xc7, 0x9a, 0x27, 0xea, 0x14, - 0xaa, 0xc2, 0xb4, 0x54, 0xe0, 0xf4, 0x1d, 0x45, 0x14, 0x56, - 0xa6, 0xc1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x86, 0x80, 0x16, 0x8a, 0x8a, 0x59, 0x56, 0x24, - 0x2c, 0xe7, 00, 0x56, 0xe, 0xa7, 0xe2, 0xfb, 0x4b, 0x35, - 0x23, 0x7f, 0x22, 0xb0, 0xab, 0x5e, 0x9d, 0x15, 0x79, 0xbb, - 0x1c, 0xd5, 0xb1, 0x14, 0xb0, 0xea, 0xf5, 0x25, 0x63, 0xa0, - 0x67, 0x3, 0xa9, 0xc5, 0x50, 0xbe, 0xd5, 0xe2, 0xb2, 0x42, - 0x4b, 0x2, 0x45, 0x79, 0x9e, 0xad, 0xe3, 0xb6, 0x77, 0x6f, - 0x26, 0x43, 0x5c, 0x96, 0xa3, 0xe2, 0xbb, 0xcb, 0x96, 0x3f, - 0xbc, 0x62, 0x3f, 0xa, 0xf9, 0x6c, 0x57, 0x11, 0x51, 0xa5, - 0x75, 0x5, 0x76, 0x7c, 0x5e, 0x37, 0x8a, 0xb0, 0xf4, 0x13, - 0x8d, 0x35, 0x76, 0x7a, 0xec, 0xde, 0x3a, 0x86, 0x2c, 0xf4, - 0xaa, 0x13, 0xfc, 0x4a, 0x86, 0x3e, 0x32, 0x33, 0xf4, 0x35, - 0xe4, 0x7, 0x56, 0x9d, 0xc7, 0x24, 0x9a, 0x85, 0xee, 0x5d, - 0xfa, 0xe6, 0xbe, 0x6e, 0xa7, 0x12, 0x62, 0x1f, 0xc0, 0x7c, - 0x9d, 0x5e, 0x2d, 0xc4, 0xbf, 0x80, 0xf5, 0x79, 0xbe, 0x27, - 0xa1, 0x3f, 0x7c, 0xf, 0xc3, 0xff, 00, 0xad, 0x51, 0xaf, - 0xc4, 0x98, 0xcf, 0xf1, 0x8f, 0xf3, 0xf8, 0x57, 0x94, 0x75, - 0xa4, 0xdb, 0x5c, 0x8f, 0x3f, 0xc6, 0x37, 0x7b, 0x9e, 0x7b, - 0xe2, 0x7c, 0x7b, 0x77, 0xb9, 0xeb, 0xab, 0xf1, 0x1a, 0x1f, - 0xef, 0xff, 00, 0x3a, 0xb3, 0xf, 0xc4, 0x48, 0x1b, 0xab, - 0x8f, 0xd7, 0xfc, 0x2b, 0xc6, 0x76, 0xfb, 0xd2, 0x8c, 0x8e, - 0xe6, 0xaa, 0x3c, 0x43, 0x8b, 0x46, 0x91, 0xe2, 0x9c, 0x6c, - 0x5e, 0xb6, 0x3d, 0xe2, 0xd3, 0xc7, 0x36, 0x8f, 0xf7, 0x9c, - 0x67, 0xf1, 0xff, 00, 0xa, 0xd5, 0x83, 0xc4, 0xf6, 0x53, - 0x8e, 0x24, 0xc7, 0xe7, 0x5f, 0x3c, 0x45, 0x72, 0xf1, 0xff, - 00, 0x11, 0xad, 0xb, 0x6d, 0x75, 0xa0, 0xc6, 0x5d, 0x85, - 0x7a, 0x94, 0x38, 0x9a, 0xa2, 0xd2, 0x69, 0x1e, 0xce, 0x1f, - 0x8c, 0x2a, 0xad, 0x2a, 0x45, 0x1f, 0x41, 0xa6, 0xad, 0x6d, - 0x27, 0x49, 0x33, 0x56, 0x52, 0x55, 0x7e, 0x41, 0xcd, 0x78, - 0x4d, 0x9f, 0x8c, 0x4c, 0x4c, 0x33, 0x23, 0x7e, 0x55, 0xd8, - 0xe8, 0x5e, 0x3e, 0x85, 0x99, 0x55, 0x9f, 0x24, 0xfb, 0x57, - 0xd0, 0x61, 0x73, 0xda, 0x35, 0xdd, 0xa4, 0xec, 0x7d, 0x4e, - 0xb, 0x89, 0x70, 0xf8, 0x96, 0xa3, 0x36, 0x91, 0xe9, 0x35, - 0x14, 0xcf, 0xb5, 0x6a, 0xb5, 0x86, 0xa4, 0x97, 0xa8, 0x19, - 0x4f, 0x5a, 0x4b, 0xc9, 0xb1, 0x9e, 0x6b, 0xe9, 0xe3, 0x25, - 0x35, 0x74, 0x7d, 0x84, 0x27, 0x1a, 0x8b, 0x9a, 0x3b, 0x14, - 0x6f, 0x64, 0xe0, 0xf3, 0x5c, 0xee, 0xa1, 0x27, 0x5a, 0xd5, - 0xbc, 0x9f, 0xad, 0x73, 0xba, 0x84, 0xff, 00, 0x7b, 0x9a, - 0xa2, 0xcc, 0x5d, 0x4d, 0xf2, 0xd, 0x71, 0x9a, 0xae, 0xe, - 0x6b, 0xa7, 0xd4, 0x67, 0xe1, 0xb9, 0xae, 0x3b, 0x56, 0x9b, - 0x93, 0x40, 0x1c, 0x3f, 0x89, 0x63, 0x1e, 0x5c, 0x98, 0xaf, - 0x1c, 0xf1, 0x85, 0xc0, 0xb3, 0x63, 0x2a, 0x31, 0x8e, 0x64, - 0x3b, 0x91, 0xd4, 0xe0, 0xa9, 0x1d, 0x8, 0xf7, 0xaf, 0x5e, - 0xf1, 0x35, 0xc0, 0x4b, 0x69, 0x58, 0x9c, 0x60, 0x57, 0xce, - 0xdf, 0x11, 0x35, 0x8c, 0x34, 0x9f, 0x37, 0x1c, 0xff, 00, - 0x5a, 0xe4, 0xc4, 0xd5, 0x54, 0xe1, 0xa9, 0xc3, 0x8b, 0xad, - 0x1a, 0x50, 0x77, 0x3e, 0xbb, 0xfd, 0x95, 0x7f, 0x69, 0xe4, - 0xf1, 0xf7, 0xfc, 0x52, 0x7e, 0x22, 0xb8, 0x8d, 0x7c, 0x43, - 0x6e, 0xbf, 0xe8, 0xf2, 0x85, 0x23, 0xed, 0x51, 0x81, 0xce, - 0x40, 0x5d, 0xa0, 0x8e, 0xfc, 0xf3, 0x5f, 0x4f, 0x7, 0xe2, - 0xbf, 0xb, 0x67, 0xf1, 0xed, 0xf7, 0x84, 0xfc, 0x4b, 0x6b, - 0xaa, 0xe9, 0xb7, 0xf, 0x6f, 0x77, 0x6b, 0x20, 0x92, 0x39, - 0x13, 0x19, 0x1e, 0xa3, 0x9f, 0x6e, 0x3f, 0x1a, 0xfd, 0x62, - 0xfd, 0x97, 0x3e, 0x3b, 0xda, 0xfc, 0x68, 0xf8, 0x7d, 0x63, - 0x74, 0xf7, 0x46, 0x5d, 0x52, 0x34, 0xc4, 0xde, 0x66, 0xd5, - 0x67, 0xe4, 0x8c, 0xe0, 0x7d, 0xf, 0x1e, 0x83, 0x3d, 0xeb, - 0xc, 0x1e, 0x2a, 0x35, 0xd3, 0x8f, 0x54, 0x73, 0x60, 0x31, - 0x91, 0xc4, 0x27, 0x1b, 0xea, 0x8f, 0x71, 0xd, 0x4f, 0x56, - 0xe6, 0xa0, 0x57, 0xcd, 0x38, 0x35, 0x7a, 0x47, 0xae, 0x58, - 0xd, 0xcd, 0x3b, 0x75, 0x42, 0x8d, 0x4f, 0xdd, 0x40, 0x12, - 0x75, 0xa7, 0x8c, 0x54, 0x60, 0x80, 0x29, 0xca, 0x45, 00, - 0x3a, 0x8a, 0x4c, 0x8a, 0x5a, 00, 0x75, 0x2d, 0x34, 0x1c, - 0x52, 0xe7, 0x34, 00, 0xb4, 0x51, 0x45, 00, 0x14, 0x51, - 0x45, 00, 0x14, 0xd2, 0x69, 0xd4, 0xd3, 0xd6, 0x80, 0x12, - 0x90, 0x9a, 0x5a, 0x6b, 0x50, 0x2, 0x66, 0x98, 0x7a, 0x52, - 0x93, 0x83, 0x4d, 0x2c, 0x28, 0x1, 0x8c, 0x6a, 0x9, 0x1a, - 0xa4, 0x73, 0xc5, 0x57, 0x91, 0xa8, 0x2, 0x37, 0x35, 0x56, - 0x56, 0xa9, 0x9d, 0xb8, 0xaa, 0x93, 0x3f, 0x5a, 00, 0xe3, - 0x3e, 0x2f, 0x78, 0x9a, 0x3f, 0xa, 0x7c, 0x38, 0xf1, 0x16, - 0xa4, 0xed, 0xb4, 0xc7, 0x67, 0x22, 0x21, 0xc8, 0x18, 0x76, - 0x52, 0xab, 0xd4, 0x8e, 0xe4, 0x57, 0xce, 0x9f, 0xb1, 0xcf, - 0x87, 0xde, 0xe2, 0xc6, 0xfb, 0x59, 0x9d, 0x1, 0x96, 0xe6, - 0x5c, 0xee, 0xee, 0x4f, 0xcc, 0x4f, 0xf3, 0xae, 0x8b, 0xf6, - 0xdf, 0xf1, 0x7f, 0xd8, 0x3c, 0xb, 0xa7, 0xf8, 0x7e, 0x17, - 0xc4, 0xda, 0x95, 0xd2, 0xb4, 0xab, 0x9c, 0x66, 0x15, 0xc, - 0x73, 0x8c, 0xff, 00, 0x78, 0x2f, 0x51, 0x5d, 0x8f, 0xec, - 0xbd, 0xe1, 0xe5, 0xd3, 0x3e, 0x1a, 0x69, 0xd, 0xb1, 0x91, - 0xe5, 0x42, 0xec, 0x8, 0xc1, 0xce, 0xe2, 0x2b, 0xe5, 0x6a, - 0xc9, 0x62, 0xb3, 0x78, 0x53, 0x5b, 0x53, 0x8d, 0xfe, 0x6c, - 0xf8, 0x9a, 0xd2, 0x58, 0xcc, 0xf6, 0x14, 0xba, 0x52, 0x8d, - 0xfe, 0x6c, 0xf7, 0xad, 0x26, 0x1d, 0xa8, 0xbc, 0x56, 0xd8, - 0xe0, 0xa, 0xa3, 0x61, 0x16, 0xd5, 0x2, 0xaf, 0xd7, 0xd5, - 0x1f, 0x6c, 0x14, 0x51, 0x45, 00, 0x15, 0xe2, 0x1f, 0xb5, - 0x4f, 0x89, 0x7f, 0xb1, 0x3c, 0x9, 0x3c, 0x6a, 0xec, 0xac, - 0xc8, 0x58, 0xe3, 0xea, 0x2b, 0xdb, 0xeb, 0xe6, 0xf, 0xdb, - 0x62, 0x46, 0xb2, 0xf0, 0x6, 0xa3, 0x7d, 0x23, 0xf9, 0x69, - 0x1c, 0x58, 0x42, 0x7a, 0x13, 0xc5, 00, 0x7e, 0x21, 0xfc, - 0x7b, 0xd7, 0xce, 0xbb, 0xe3, 0xab, 0x9f, 0x9d, 0x9d, 0x55, - 0xba, 0xb1, 0xf5, 0xaf, 0x7d, 0xfd, 0x82, 0xbc, 0x37, 0x1e, - 0xbb, 0xf1, 0x2b, 0x44, 0xb7, 0x28, 0x19, 0x56, 0x78, 0xc9, - 0xff, 00, 0xbe, 0xd7, 0xf4, 0xaf, 0x94, 0x7c, 0x5d, 0x7a, - 0xfa, 0x87, 0x88, 0x6f, 0x2e, 0x9b, 0xab, 0xc8, 0x6b, 0xdb, - 0x3f, 0x65, 0x4f, 0x8a, 0xef, 0xf0, 0xeb, 0xc5, 0x10, 0x5d, - 0xf9, 0xd0, 0xc6, 0xe6, 0x55, 0xe6, 0x43, 0x82, 0x6, 0x47, - 0xb8, 0xf4, 0xa0, 0xf, 0xe8, 0x22, 0xe1, 0xe3, 0xd2, 0xbc, - 0x3a, 0x15, 0x70, 0xa9, 0x14, 0x21, 0x46, 0xd3, 0xd3, 0x8a, - 0xfc, 0x6f, 0xff, 00, 0x82, 0x99, 0x7c, 0x40, 0x37, 0xfa, - 0xcb, 0x69, 0x49, 0x31, 0x60, 0x64, 0x19, 0x40, 0x78, 0xe3, - 0x7, 0x9e, 0x7d, 0xab, 0xee, 0x1b, 0x3f, 0xdb, 0xf, 0xc3, - 0x77, 0x5e, 0x3, 0x48, 0xe6, 0xd4, 0xa0, 0x7b, 0x9f, 0x2b, - 0x73, 0xec, 0x91, 0x4f, 0x6f, 0xf7, 0xeb, 0xf2, 0x27, 0xf6, - 0xa9, 0xf8, 0x8f, 0xff, 00, 0xb, 0x13, 0xe2, 0x5d, 0xe4, - 0xf1, 0x48, 0xaf, 0x2, 0xb9, 0x20, 0xa9, 0xe0, 0x9c, 0xfd, - 0x4e, 0x68, 0x3, 0xb1, 0xfd, 0x88, 0x3c, 0x14, 0x7c, 0x4f, - 0xf1, 0x6, 0x15, 0x30, 0x89, 00, 0x74, 0x3c, 0x8e, 0x9f, - 0x7b, 0xda, 0xbf, 0x77, 0x2e, 0xee, 0xad, 0xfc, 0xd, 0xf0, - 0xec, 0xc8, 0xe4, 0x45, 0x1d, 0xad, 0xa7, 0x7e, 00, 0x21, - 0x7f, 0xa, 0xfc, 0x83, 0xff, 00, 0x82, 0x76, 0x6a, 0x5e, - 0x1b, 0xf0, 0xa7, 0x88, 0x6e, 0x6f, 0xf5, 0x9b, 0xa8, 0xed, - 0xd2, 0x25, 0x8d, 0x81, 0x91, 0xd4, 0x2, 0x7e, 0x7f, 0x5f, - 0xc2, 0xbd, 0x53, 0xf6, 0xbd, 0xfd, 0xbe, 0xef, 0x6f, 0x74, - 0xed, 0x43, 0x43, 0xd1, 0x2e, 0x6d, 0x24, 0xb3, 0x70, 0x50, - 0xb0, 0x2d, 0x92, 0x31, 0x8f, 0xe1, 0x92, 0x80, 0x3c, 0x7, - 0xf6, 0xde, 0xf8, 0xe0, 0x9e, 0x2f, 0xd5, 0xaf, 0xed, 0x2d, - 0xae, 0x9a, 0x44, 0x67, 0x28, 0x70, 0x41, 0xcf, 0x27, 0xdc, - 0xfa, 0xd7, 0xc9, 0x5e, 0x13, 0xd2, 0x65, 0xd6, 0x35, 0x78, - 0x21, 0x8d, 0x59, 0x8c, 0x8e, 0x13, 0xa, 0x33, 0x9c, 0x9a, - 0xaf, 0xae, 0x6b, 0xb7, 0x3e, 0x22, 0xbf, 0x92, 0xe2, 0xe0, - 0xe6, 0x49, 0x18, 0xb1, 0xe4, 0xf2, 0x49, 0xfa, 0xd7, 0xd6, - 0x7f, 0xb1, 0x97, 0xec, 0xf6, 0xde, 0x36, 0xf1, 0xe, 0x95, - 0x75, 0x71, 0x6d, 0x31, 0x42, 0xca, 0xf9, 0x1c, 0xe, 0xa3, - 0xfd, 0x9a, 00, 0xfd, 0x4a, 0xfd, 0x85, 0xfe, 0x1e, 0x8f, - 0x5, 0xfc, 0x24, 0xb3, 0x66, 0x81, 0x62, 0x79, 0x80, 0x6e, - 0x6, 0x3d, 0x7d, 0x87, 0xad, 0x7d, 0x29, 0x59, 0x1e, 0x10, - 0xd0, 0x61, 0xf0, 0xcf, 0x86, 0xec, 0x34, 0xdb, 0x75, 0xdb, - 0x1c, 0x11, 0x5, 0x3, 0xf9, 0xd6, 0xb3, 0x36, 0xd0, 0x4d, - 0x26, 0x7, 0x1, 0xf1, 0x26, 0xfc, 0x41, 0x6d, 0x22, 0xe7, - 0xb5, 0x78, 0xd8, 0x39, 0xc9, 0xf5, 0x39, 0xae, 0xf3, 0xe2, - 0x86, 0xa6, 0x65, 0xbd, 0x78, 0x81, 0x18, 0x27, 0x1c, 0x57, - 0x6, 0x6, 00, 0xaf, 0xc7, 0x73, 0xca, 0xfe, 0xdb, 0x18, - 0xd2, 0xe8, 0x7e, 0x5, 0xc4, 0x78, 0x8f, 0xac, 0x63, 0xe4, - 0x96, 0xd1, 0xd0, 0x28, 0xa2, 0x8a, 0xf9, 0xf3, 0xe5, 0xc2, - 0x8a, 0x28, 0xa6, 0x1, 0xf8, 0x66, 0x93, 0x77, 0xb1, 0xae, - 0x9f, 0x44, 0xf0, 0xa4, 0xda, 0x94, 0x4a, 0xea, 0x8d, 0x83, - 0xed, 0x5b, 0x7, 0xe1, 0xdd, 0xc7, 0xf7, 0x1b, 0xfc, 0xfe, - 0x15, 0xe9, 0xd3, 0xcb, 0x31, 0x35, 0x63, 0xcf, 0x18, 0xe8, - 0x7b, 0x34, 0x72, 0x8c, 0x5d, 0x78, 0x29, 0xc2, 0x1a, 0x1c, - 0x6, 0xef, 0x63, 0x46, 0xea, 0xef, 0x1b, 0xe1, 0xfd, 0xc0, - 0x1f, 0xea, 0x98, 0xfe, 0x1f, 0xfd, 0x6a, 0xcf, 0xbb, 0xf0, - 0x45, 0xdc, 0x59, 0xc4, 0x27, 0xf2, 0x3f, 0xe1, 0x44, 0xf2, - 0xcc, 0x54, 0x15, 0xdc, 0x42, 0x79, 0x36, 0x36, 0xa, 0xee, - 0xf, 0xee, 0x39, 0x4a, 0x2b, 0x4a, 0xe7, 0xc3, 0xd7, 0xd0, - 0x13, 0xfb, 0x9f, 0xe7, 0xfe, 0x15, 0x42, 0x4b, 0x79, 0x60, - 0x38, 0x91, 0x76, 0xd7, 0x4, 0xe9, 0x4e, 0x9f, 0xc7, 0x1b, - 0x1e, 0x5d, 0x4a, 0x35, 0x29, 0x69, 0x38, 0xb4, 0x32, 0x8a, - 0x28, 0xac, 0x8c, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x90, 0xf1, - 0x83, 0x4b, 0x41, 0xa1, 0x89, 0xec, 0x7a, 0x37, 0xc3, 0x9d, - 0x44, 0xc6, 0xc2, 0x31, 0x9c, 0x9a, 0xf5, 0xd4, 0x3f, 0x2e, - 0x7d, 0xab, 0xc3, 0xbe, 0x1d, 0x3e, 0xeb, 0xf0, 0xc7, 0xa0, - 0x38, 0xaf, 0x6f, 0x85, 0xb7, 0xc4, 0xa7, 0xd4, 0x57, 0xeb, - 0x3c, 0x3d, 0x37, 0x3c, 0x2e, 0xa7, 0xee, 0x3c, 0x2b, 0x55, - 0xd4, 0xc1, 0x59, 0xf4, 0x25, 0xa8, 0x6e, 0xe4, 0x10, 0xc0, - 0xec, 0x7a, 00, 0x6a, 0x45, 0x35, 0x8f, 0xe2, 0xab, 0xef, - 0xb1, 0xe9, 0x53, 0x36, 0x40, 0x3b, 0x4f, 0x5f, 0xa5, 0x7d, - 0x25, 0x69, 0xaa, 0x74, 0xe5, 0x37, 0xd0, 0xfa, 0xdc, 0x45, - 0x45, 0x4a, 0x94, 0xa6, 0xfa, 0x23, 0xc5, 0xfc, 0x73, 0x7b, - 0xf6, 0xad, 0x62, 0x4c, 0x1e, 0x7, 0xf8, 0xd7, 0x37, 0x56, - 0x35, 0x2b, 0xa3, 0x73, 0x7b, 0x2c, 0x84, 0xe7, 0x2c, 0x6a, - 0xb6, 0xe1, 0xeb, 0x5f, 0x85, 0x62, 0x6a, 0xfb, 0x6a, 0xd2, - 0x9f, 0x76, 0x7f, 0x36, 0x63, 0x2b, 0x7b, 0x7c, 0x44, 0xea, - 0x3e, 0xac, 0x5a, 0x28, 0xdc, 0x28, 0xc8, 0xae, 0x7b, 0xa3, - 0x92, 0xe8, 0x28, 0xa2, 0x8a, 0x2e, 0x17, 0xa, 0x28, 0xa2, - 0x81, 0x85, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x5f, 0xf0, - 0xfc, 0x1f, 0x69, 0xd6, 0x6d, 0x97, 0x1d, 0x18, 0x55, 0x3, - 0xd2, 0xba, 0x7f, 0x87, 0xb6, 0x5f, 0x69, 0xd6, 0x15, 0x8e, - 0x4e, 0x8, 0xae, 0xbc, 0x24, 0x3d, 0xae, 0x22, 0x10, 0x5d, - 0xce, 0xec, 0xd, 0x2f, 0x6f, 0x8a, 0xa7, 0x5, 0xdd, 0x1e, - 0xdd, 0xa2, 0x42, 0x21, 0xb3, 0x51, 0x8c, 0x71, 0x5a, 0x35, - 0xd, 0xbc, 0x7e, 0x54, 0x48, 0xa2, 0xa6, 0xaf, 0xdd, 0x29, - 0xc7, 0x92, 0x2a, 0x28, 0xfe, 0x92, 0xa5, 0x1e, 0x48, 0x28, - 0x89, 0x46, 0x68, 0x6a, 0xe7, 0x7c, 0x49, 0xe2, 0x88, 0xb4, - 0x98, 0x5c, 0x2b, 0xa9, 0x71, 0x51, 0x5a, 0xb4, 0x28, 0x41, - 0xce, 0xa3, 0xb2, 0x22, 0xbd, 0x7a, 0x78, 0x68, 0x3a, 0x95, - 0x1d, 0x92, 0x2d, 0xeb, 0x1a, 0xf5, 0xbe, 0x95, 0x3, 0x33, - 0x38, 0x7, 0x1e, 0xa2, 0xbc, 0x7b, 0xc5, 0xbe, 0x2e, 0x9b, - 0x50, 0xb9, 0x22, 0x19, 0x4e, 0xca, 0xce, 0xd7, 0xfc, 0x57, - 0x73, 0xac, 0xb3, 0x7, 0x23, 0x67, 0xb7, 0xff, 00, 0xae, - 0xb0, 0xc7, 0xbf, 0x5a, 0xfc, 0xbf, 0x35, 0xce, 0xa7, 0x8b, - 0x7e, 0xca, 0x96, 0x91, 0x3f, 0x19, 0xce, 0xf8, 0x86, 0x78, - 0xe6, 0xe9, 0x50, 0x76, 0x80, 0xac, 0xed, 0x21, 0xcb, 0x9c, - 0x9a, 0x4a, 0x28, 0xaf, 0x93, 0x3e, 0x23, 0xcd, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x83, 0x2, - 0x95, 0x25, 0x78, 0xdb, 0xe4, 0x6c, 0x52, 0x51, 0xd6, 0x8f, - 0x41, 0xea, 0xb5, 0x47, 0x5d, 0xe1, 0x6f, 0x11, 0xc9, 0x6f, - 0x32, 0x9, 0x25, 0x38, 0xcf, 0xad, 0x7b, 0x36, 0x8f, 0xaa, - 0x47, 0xa8, 0x5b, 0x29, 0x43, 0x92, 0x7, 0x35, 0xf3, 0x5a, - 0x37, 0x94, 0xe1, 0x87, 0x5a, 0xf4, 0x2f, 0x2, 0x78, 0xa6, - 0x58, 0xa7, 0x58, 0x49, 0x1, 0x3d, 0xeb, 0xed, 0x32, 0x3c, - 0xd5, 0xd2, 0x9a, 0xa3, 0x51, 0xe8, 0xcf, 0xd0, 0xb8, 0x73, - 0x3b, 0x74, 0x2a, 0x2a, 0x15, 0x9e, 0x8c, 0xf6, 0x3a, 0x5a, - 0x82, 0xde, 0x75, 0xb8, 0x8c, 0x30, 0x20, 0xfb, 0x8a, 0x98, - 0x57, 0xe9, 0xc9, 0xa6, 0xae, 0x8f, 0xd8, 0x93, 0x4d, 0x5d, - 0xb, 0x45, 0x14, 0x53, 0x18, 0x51, 0x45, 0x14, 00, 0x99, - 0xac, 0xfd, 0x53, 0x56, 0x87, 0x4f, 0x88, 0xb3, 0x38, 0x6, - 0xb3, 0x7c, 0x4d, 0xe2, 0x78, 0xb4, 0x68, 0x1f, 0xe6, 0x50, - 0xfe, 0xe6, 0xbc, 0x83, 0xc4, 0x1e, 0x31, 0xba, 0xd4, 0x65, - 0x3b, 0x1c, 0x14, 0xf6, 0xff, 00, 0xf5, 0xd7, 0xce, 0x66, - 0x79, 0xc5, 0x2c, 0xa, 0xe5, 0x5a, 0xc8, 0xf9, 0x3c, 0xdf, - 0x3e, 0xa1, 0x97, 0x45, 0xc1, 0x6b, 0x23, 0xa8, 0xf1, 0x17, - 0xc4, 0x5c, 0x97, 0x8d, 0x19, 0xb0, 0x38, 0xe3, 0xff, 00, - 0xd7, 0x5c, 0x1e, 0xa1, 0xac, 0x4d, 0x7a, 0xe5, 0xbc, 0xc6, - 0xe7, 0xde, 0xa8, 0x33, 0xb4, 0xa4, 0x97, 0xea, 0x69, 0x31, - 0x8a, 0xfc, 0xc7, 0x17, 0x98, 0xd7, 0xc5, 0xc9, 0xb9, 0xbd, - 0xf, 0xc7, 0x71, 0xb9, 0xae, 0x27, 0x1d, 0x2b, 0xd4, 0x7a, - 0x9, 0xf3, 0x93, 0xcb, 0x13, 0xf8, 0xd2, 0xe3, 0x34, 0x51, - 0x5e, 0x69, 0xe3, 0xd8, 0x30, 0x28, 0xa2, 0x8a, 0x6, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x85, 0x73, - 0x4b, 0x45, 0x16, 0x15, 0x86, 0xf9, 0x62, 0xad, 0xe9, 0xe, - 0xc6, 0xf9, 0x15, 0x7f, 0x4a, 0xac, 0x6b, 0x7f, 0xc1, 0x1a, - 0x60, 0xbc, 0xd4, 0x37, 0x36, 0x48, 0x18, 0xae, 0x8c, 0x35, - 0x37, 0x56, 0xb4, 0x61, 0x1e, 0xe7, 0x56, 0x12, 0x94, 0xab, - 0x57, 0x84, 0x21, 0xdc, 0xf5, 0xbf, 0xa, 0xee, 0x5b, 0x65, - 0x27, 0x23, 0x8e, 0xf5, 0x6e, 0xf6, 0x72, 0x33, 0xcd, 0x4d, - 0xa7, 0xdb, 0x8b, 0x6b, 0x5e, 0x6, 0x38, 0xac, 0xfb, 0xe9, - 0x39, 0x3f, 0x5a, 0xfd, 0xc3, 0xb, 0x4d, 0xd3, 0xa4, 0xa2, - 0xcf, 0xe8, 0xec, 0x15, 0x27, 0x4a, 0x84, 0x62, 0xcc, 0xcb, - 0xdb, 0xa3, 0xcf, 0x35, 0xce, 0x6a, 0x17, 0x7d, 0x6b, 0x5e, - 0xf9, 0xf8, 0x6a, 0xe5, 0xb5, 0x39, 0x71, 0x9e, 0x6b, 0xac, - 0xee, 0x33, 0x35, 0xb, 0xb1, 0x86, 0xe4, 0xd7, 0x23, 0xaa, - 0x5d, 0x2f, 0x3c, 0xd6, 0xb6, 0xa9, 0x39, 0x50, 0xd8, 0xae, - 0x33, 0x57, 0xbb, 0x3c, 0xf4, 0xa0, 0xe, 0x63, 0xc6, 0xd7, - 0xa2, 0x1d, 0x36, 0x63, 0xbb, 0x92, 0x3d, 0x6b, 0xe5, 0x8f, - 0x89, 0x3a, 0xc1, 0x6, 0x41, 0xbc, 0xf4, 0xff, 00, 0x1a, - 0xf7, 0x7f, 0x88, 0xfa, 0xc3, 0x43, 0x63, 0x28, 0xc8, 0xe9, - 0x5f, 0x28, 0xf8, 0xf3, 0x57, 0x37, 0x17, 0x6c, 0xa0, 0x8f, - 0xf3, 0x9a, 0xf9, 0x7c, 0xde, 0xb5, 0xad, 0x14, 0x7c, 0x66, - 0x79, 0x5f, 0x97, 0xdd, 0x47, 0x9e, 0xeb, 0x53, 0x19, 0x64, - 0x76, 0x63, 0x92, 0x6b, 0xd9, 0x3f, 0x63, 0x3f, 0x8e, 0x57, - 0x3f, 0xd, 0x3e, 0x21, 0x26, 0x9a, 0xd7, 0x4d, 0xc, 0x17, - 0x52, 0x6, 0x81, 0xb, 0x62, 0x3d, 0xc0, 0x1c, 0xa9, 0xf9, - 0x86, 0x77, 0x70, 0x31, 0x5e, 0x25, 0xa9, 0xcb, 0x92, 0x6b, - 0x8f, 0xd4, 0x2f, 0x65, 0xb0, 0xba, 0x4b, 0x9b, 0x79, 0x1a, - 0x39, 0xa3, 0x6c, 0xa3, 0x21, 0xc1, 0x7, 0xea, 0x2b, 0xcf, - 0xcb, 0xa6, 0xe1, 0x35, 0x24, 0x79, 0x59, 0x4c, 0xdd, 0x3a, - 0x8a, 0x47, 0xf4, 0x51, 0xa0, 0xeb, 0x96, 0xfe, 0x20, 0xd2, - 0x2d, 0x75, 0xb, 0x57, 0xf, 0x4, 0xe8, 0x19, 0x79, 0x7, - 0x1e, 0xdd, 0x6b, 0x4d, 0x5f, 0x38, 0xaf, 0x92, 0xbf, 0x61, - 0x1f, 0x8d, 0x2d, 0xf1, 0x23, 0xc0, 0x16, 0xb1, 0x4f, 0x22, - 0x6f, 0x78, 0x7c, 0xcc, 0x2f, 0x18, 0x94, 0x1c, 0x48, 0xa0, - 0x6e, 0x3c, 0x64, 0x8f, 0xd6, 0xbe, 0xae, 0x8d, 0xeb, 0xee, - 0x13, 0xb9, 0xfa, 0x42, 0x77, 0x57, 0x2e, 0x2b, 0x75, 0xa9, - 0x14, 0xf0, 0x2a, 0xb2, 0xbf, 0xbd, 0x4a, 0xae, 0x4d, 00, - 0x4f, 0x9a, 0x72, 0x9a, 0x84, 0x31, 0x35, 0x22, 0x9f, 0x4a, - 00, 0x96, 0x9c, 0xe, 0x69, 0x82, 0x97, 0x38, 0xa0, 0x7, - 0x52, 0x83, 0x8a, 0x4a, 0x28, 0x1, 0xc3, 0x9a, 0x5a, 0x6e, - 0x69, 0xd4, 00, 0x51, 0x45, 0x14, 00, 0x87, 0xa5, 0x36, - 0x9c, 0x4e, 0x29, 0xb4, 00, 0x53, 0x18, 0xd3, 0xcf, 0x15, - 0x1b, 0x50, 0x3, 0x18, 0xd4, 0x6c, 0x69, 0xe7, 0xbd, 0x46, - 0xdd, 0x28, 0x1, 0x8f, 0xd2, 0xab, 0x48, 0x6a, 0x77, 0x35, - 0x5a, 0x53, 0x40, 0x10, 0x48, 0x70, 0xd, 0x53, 0x95, 0xaa, - 0xc4, 0xcd, 0xc5, 0x66, 0xdf, 0xdc, 0x8b, 0x5b, 0x69, 0xa6, - 0x6e, 0x56, 0x24, 0x67, 0x38, 0xf4, 0x3, 0x34, 0x6d, 0xab, - 0x7, 0xa1, 0xf0, 0xff, 00, 0xed, 0x67, 0xac, 0xb7, 0x8a, - 0xbe, 0x35, 0x58, 0x69, 0x31, 0x4d, 0xe7, 0x47, 0x61, 0xa, - 0xc1, 0xb1, 0xf, 0xa, 0xcc, 0xd9, 0x20, 0xfa, 0x9c, 0xe6, - 0xbe, 0xc4, 0xf8, 0x4b, 0xa2, 0x8d, 0x23, 0xc2, 0x5a, 0x65, - 0xb2, 0xa9, 0x51, 0x1c, 0x40, 0x60, 0x9f, 0x72, 0x6b, 0xe1, - 0x6f, 0x4, 0x8f, 0xf8, 0x59, 0x5f, 0x1f, 0x35, 0x3d, 0x55, - 0x23, 0xcd, 0xbd, 0xce, 0xa5, 0x3d, 0xca, 0x2b, 0x1f, 0xba, - 0x86, 0x46, 0x2a, 0x3f, 0x22, 0x2b, 0xf4, 0x4b, 0xc2, 0xf6, - 0xc2, 0x1b, 0x8, 0x54, 0xc, 0x6d, 0x5c, 0x57, 0xc6, 0x64, - 0x9f, 0xed, 0x18, 0xac, 0x46, 0x2d, 0xf5, 0x76, 0x5f, 0x23, - 0xe0, 0x38, 0x77, 0xfd, 0xab, 0x19, 0x8a, 0xc7, 0x3f, 0xb4, - 0xec, 0xbd, 0x11, 0xd3, 0x5a, 0xa6, 0xd5, 0xa9, 0xe9, 0xb1, - 0x8c, 0x20, 0xa7, 0x57, 0xd9, 0x9f, 0x7e, 0x14, 0x51, 0x45, - 00, 0x15, 0xf2, 0xd7, 0xed, 0xed, 0x1c, 0xf7, 0xbf, 0xc, - 0xe5, 0xb3, 0x82, 0x32, 0xc6, 0x44, 0x39, 0x20, 0x67, 0xb8, - 0xaf, 0xa9, 0x6b, 0xcc, 0xbe, 0x3c, 0xf8, 0x56, 0xdf, 0x5f, - 0xf0, 0x4d, 0xfb, 0x3c, 0x7b, 0xe6, 0x11, 0xe1, 0x48, 0x27, - 0x23, 0xa5, 00, 0x7f, 0x39, 0x3e, 0x3e, 0xd3, 0x8e, 0x99, - 0xaf, 0xdc, 0x5b, 0xec, 0x29, 0xb0, 0xf2, 0xf, 0x5a, 0xc4, - 0xb0, 0xbd, 0x92, 0xce, 0x75, 0x75, 0x90, 0xa6, 0x3d, 0xd, - 0x7b, 0x17, 0xed, 0x19, 0xe0, 0xb, 0xef, 0xe, 0x78, 0xb2, - 0xf6, 0x4b, 0x88, 0x84, 0x42, 0x49, 0x49, 0x55, 0xdc, 0x9, - 0x2, 0xbc, 0x51, 0x97, 0x69, 0xc1, 0xa0, 0xf, 0x42, 0xb6, - 0xf8, 0xa1, 0x7b, 0x6d, 0xa7, 0xbc, 0x2, 0xf6, 0x43, 0x95, - 0xdb, 0x8d, 0xcd, 0x5c, 0x35, 0xd5, 0xeb, 0xde, 0x5e, 0x3c, - 0xf2, 0xbe, 0xe6, 0x63, 0x9c, 0xd5, 0x5a, 0x28, 0x3, 0xb4, - 0xd0, 0x7c, 0x7b, 0x7d, 0xe1, 0xfb, 0x69, 0x16, 0xce, 0xf1, - 0xe0, 0x2e, 00, 0x3b, 0x9, 0x19, 0xae, 0x73, 0x54, 0xd7, - 0xef, 0x75, 0x79, 0x99, 0xee, 0xae, 0x24, 0x9b, 0x71, 0xc9, - 0x2c, 0x6b, 0x3a, 0xaf, 0x69, 0x7a, 0x2d, 0xde, 0xb1, 0x32, - 0xc5, 0x6b, 0x9, 0x91, 0xd8, 0xe0, 0x1, 0x81, 0xfc, 0xe8, - 0x3, 0x5f, 0xc0, 0xbe, 0x12, 0xb9, 0xf1, 0x56, 0xbf, 0x65, - 0x69, 0xc, 0x6c, 0xfe, 0x64, 0xca, 0xbf, 0x2e, 0x3d, 0x6b, - 0xf7, 0x27, 0xf6, 0x33, 0xf8, 0x3, 0x17, 0x82, 0xbc, 0x2d, - 0xa5, 0x5e, 0x5c, 0x5a, 0x3a, 0x37, 0x92, 0xad, 0x97, 0x23, - 0x9f, 0x94, 0x57, 0xc9, 0x5f, 0xb0, 0xaf, 0xec, 0x85, 0x2e, - 0xaa, 0x96, 0x1a, 0xee, 0xa5, 0x68, 0xb9, 0x49, 0x15, 0x81, - 0x66, 0xc6, 0x3e, 0xe9, 0xec, 0xd5, 0xfa, 0xc5, 0xa3, 0xe9, - 0xb1, 0x69, 0x1a, 0x75, 0xbd, 0xa4, 0x4a, 0x15, 0x21, 0x45, - 0x41, 0xf8, 0xc, 0x50, 0x5, 0xc0, 0x30, 0x2a, 0xbd, 0xec, - 0xbe, 0x4d, 0xbb, 0x9e, 0x9c, 0x55, 0x9a, 0xc7, 0xf1, 0x1d, - 0xc8, 0x86, 0xc1, 0xfe, 0x95, 0x8d, 0x59, 0x72, 0x41, 0xc8, - 0xe7, 0xc4, 0x4f, 0xd9, 0xd2, 0x94, 0xfb, 0x1e, 0x1d, 0xe3, - 0x6b, 0xbf, 0xb4, 0xeb, 0xb2, 0x8c, 0xe4, 0x29, 0xac, 0x2a, - 0xb9, 0xac, 0xc9, 0xe7, 0x6a, 0xb7, 0xf, 0xfe, 0xd5, 0x53, - 0xaf, 0xc2, 0xf1, 0x33, 0xf6, 0x95, 0xa7, 0x2e, 0xec, 0xfe, - 0x6c, 0xc5, 0xd4, 0x75, 0x71, 0x15, 0x26, 0xfa, 0xb6, 0x14, - 0x51, 0x45, 0x73, 0x1c, 0xa1, 0x52, 0x5b, 0xa7, 0x9b, 0x71, - 0x1a, 0x77, 0x66, 0x2, 0xa3, 0xab, 0xda, 0x14, 0x26, 0xe3, - 0x59, 0xb6, 0x41, 0xfd, 0xf0, 0x6b, 0x4a, 0x71, 0xe7, 0x9c, - 0x63, 0xdd, 0x9a, 0xd2, 0x8f, 0x3d, 0x48, 0xc7, 0xbb, 0x3d, - 0xb7, 0xc1, 0x5a, 0x78, 0x82, 0xc2, 0x3c, 0xaf, 0xf0, 0x8f, - 0xe5, 0x5d, 0x46, 0xd0, 0x47, 0x41, 0x54, 0x34, 0x48, 0x4, - 0x36, 0x68, 0x3d, 0xab, 0x44, 0xc, 0x57, 0xee, 0x78, 0x4a, - 0x6a, 0x95, 0x18, 0xc4, 0xfe, 0x91, 0xc0, 0xd1, 0x54, 0x70, - 0xf0, 0x82, 0xec, 0x33, 0xca, 0x53, 0xfc, 0x22, 0xa3, 0x92, - 0xd2, 0x29, 0x7, 0x28, 0x3f, 0x2a, 0x9e, 0x81, 0x5d, 0x6e, - 0x29, 0xee, 0x76, 0x38, 0xa7, 0xba, 0x30, 0x35, 0x1f, 0xd, - 0xc5, 0x70, 0xe, 0xd4, 0x15, 0xe6, 0xbe, 0x34, 0xf0, 0xa3, - 0x5a, 0x61, 0xc2, 0x90, 0xbd, 0x4d, 0x7b, 0x49, 0x15, 0xcd, - 0x78, 0xd2, 0xc3, 0xed, 0x7a, 0x79, 0x38, 0xe4, 0x3, 0x5f, - 0x3d, 0x9a, 0x65, 0xd4, 0xab, 0x51, 0x94, 0x92, 0xd4, 0xf9, - 0x8c, 0xe7, 0x29, 0xa3, 0x88, 0xc3, 0x4e, 0x49, 0x6a, 0x8f, - 00, 0x2a, 0x55, 0x88, 0xf4, 0xa4, 0xab, 0x9a, 0xa4, 0x22, - 0xde, 0xed, 0x90, 0x76, 0xeb, 0x54, 0xeb, 0xf2, 0x19, 0x47, - 0x92, 0x4e, 0x3d, 0x8f, 0xc1, 0xa5, 0xe, 0x49, 0xb8, 0xf6, - 0xa, 0x28, 0xa2, 0xa0, 0x90, 0xa4, 0x6e, 0x94, 0xb4, 0x87, - 0x92, 0x7, 0xa9, 0xa1, 0x89, 0x9d, 0xb7, 0xc3, 0xe8, 0x8, - 0x99, 0x70, 0x3a, 0x9a, 0xf6, 0xd8, 0x86, 0xd8, 0xd4, 0x77, - 0xc5, 0x79, 0x5f, 0xc3, 0x8b, 0x2d, 0xd2, 0xa9, 0xc7, 0x3, - 0x15, 0xea, 0xc3, 0x8a, 0xfd, 0x6f, 0x87, 0xe9, 0x72, 0x61, - 0x6e, 0xfa, 0x9f, 0xba, 0x70, 0xbd, 0x1f, 0x67, 0x82, 0xbb, - 0xea, 0x2e, 0x39, 0xac, 0x4f, 0x13, 0xe9, 0xa7, 0x50, 0xb1, - 0x68, 0xc0, 0xc9, 0x39, 0xad, 0xca, 0x6b, 0xa0, 0x71, 0xcf, - 0x35, 0xf4, 0x55, 0x69, 0xaa, 0xb0, 0x70, 0x7d, 0x4f, 0xab, - 0xad, 0x46, 0x35, 0xe9, 0xba, 0x72, 0xd9, 0x9e, 0x3f, 0x27, - 0xc3, 0x80, 0xcc, 0xc7, 0xcb, 0x6e, 0x7d, 0xea, 0x16, 0xf8, - 0x71, 0xe8, 0x8d, 0xf9, 0xd7, 0xb1, 0x1b, 0x68, 0xc9, 0xfb, - 0xb4, 0x1b, 0x58, 0xcf, 0xf0, 0xd7, 0xce, 0x3e, 0x1f, 0xc2, - 0xbe, 0x87, 0xc9, 0x3e, 0x17, 0xc1, 0xbf, 0xb2, 0x78, 0xb3, - 0xfc, 0x39, 0x61, 0xd1, 0x1f, 0xf3, 0xa8, 0x5b, 0xe1, 0xdc, - 0xa3, 0xf8, 0x64, 0xfc, 0xc5, 0x7b, 0x69, 0xb3, 0x8c, 0xf6, - 0xa4, 0x36, 0x11, 0x1e, 0xd5, 0x93, 0xe1, 0xdc, 0x33, 0xe8, - 0x60, 0xf8, 0x4f, 0x8, 0xfa, 0x1e, 0x1d, 0x27, 0xc3, 0xf9, - 0xd0, 0x13, 0x87, 0xe3, 0xe9, 0x58, 0x9a, 0x96, 0x92, 0xda, - 0x69, 0xc3, 0xe4, 0x1f, 0x7a, 0xfa, 0xe, 0xee, 0xc2, 0x3f, - 0x25, 0xb8, 0xe3, 0x1d, 0xeb, 0xc4, 0xbc, 0x75, 0x32, 0xff, - 00, 0x69, 0x18, 0xd4, 0xf4, 0x35, 0xf3, 0x79, 0xbe, 0x55, - 0x47, 0x3, 0x4b, 0x9e, 0x3b, 0xb3, 0xe4, 0xf3, 0xcc, 0x97, - 0xf, 0x96, 0x51, 0xf6, 0x90, 0xdd, 0x9c, 0xcd, 0x25, 0x14, - 0x57, 0xc7, 0x23, 0xe0, 0x42, 0x8a, 0x28, 0xa0, 0x3, 0xa5, - 0x4b, 0x1d, 0xb4, 0xb3, 0xfd, 0xc5, 0xcd, 0x42, 0xc7, 0xa0, - 0xf5, 0x38, 0xaf, 0x44, 0xf0, 0x4f, 0x87, 0x85, 0xda, 0x21, - 0x65, 0xc8, 0xe2, 0xbb, 0xb0, 0x78, 0x59, 0x63, 0x2a, 0xfb, - 0x38, 0x9e, 0x96, 0x5f, 0x82, 0x96, 0x3e, 0xb7, 0xb2, 0x89, - 0xc2, 0x9d, 0x2a, 0xf0, 0x7f, 0xcb, 0x13, 0x8f, 0xc2, 0x9a, - 0x74, 0xeb, 0xb1, 0xff, 00, 0x2c, 0x1b, 0xf4, 0xaf, 0x7a, - 0x3e, 0x13, 0x83, 0x3, 0x31, 0xe7, 0xf1, 0xa8, 0xdb, 0xc2, - 0x30, 0x1f, 0xf9, 0x67, 0xfa, 0xd7, 0xd4, 0x3e, 0x19, 0x9a, - 0xda, 0x47, 0xd9, 0x3e, 0xf, 0xab, 0xd2, 0x47, 0x83, 0x9b, - 0x3b, 0x85, 0xeb, 0xb, 0xa, 0x69, 0xb7, 0x9c, 0x7f, 0xcb, - 0x26, 0xaf, 0x75, 0x6f, 0x7, 0x40, 0x47, 0xfa, 0xbf, 0xd6, - 0xa2, 0x6f, 0x5, 0x40, 0xdf, 0xf2, 0xce, 0xb2, 0x7c, 0x37, - 0x5b, 0xa3, 0x30, 0x7c, 0x23, 0x5d, 0x6d, 0x23, 0xc3, 0x24, - 0x8a, 0x55, 0x1c, 0xc6, 0xdf, 0x95, 0x7a, 0x2f, 0xc2, 0xfd, - 0x3d, 0x95, 0xd6, 0x46, 0x42, 0x32, 0x73, 0xcd, 0x75, 0xf, - 0xe0, 0x68, 0x18, 0x8f, 0x93, 0xfc, 0xfe, 0x75, 0xd1, 0x68, - 0xda, 0x14, 0x5a, 0x6c, 0x60, 0x20, 0xc5, 0x77, 0xe5, 0xb9, - 0x15, 0x5c, 0x3e, 0x21, 0x54, 0x9b, 0xd1, 0x1e, 0xa6, 0x51, - 0xc3, 0x55, 0xb0, 0xb8, 0xa5, 0x5a, 0xa3, 0xba, 0x46, 0xaa, - 0xd0, 0x4d, 0x2e, 0x2a, 0xbd, 0xdd, 0xd2, 0x5a, 0x42, 0x5d, - 0xce, 00, 0x15, 0xfa, 0x13, 0x6a, 0x2a, 0xec, 0xfd, 0x4a, - 0x52, 0x51, 0x5c, 0xcc, 0xa1, 0xaf, 0x6b, 0x71, 0xe9, 0x36, - 0xe5, 0x8b, 00, 0xd5, 0xe1, 0xfe, 0x26, 0xf1, 0xc, 0xba, - 0x9d, 0xf4, 0x98, 0x7c, 0xae, 0x6b, 0x6b, 0xc7, 0xfe, 0x26, - 0x37, 0x57, 0x7e, 0x52, 0x31, 0xc6, 0x6b, 0x87, 0x1f, 0x78, - 0xb7, 0x73, 0x5f, 0x95, 0x67, 0x99, 0xa4, 0xb1, 0x35, 0x1d, - 0x1a, 0x6f, 0xdd, 0x47, 0xe2, 0xdc, 0x49, 0x9c, 0xcb, 0x17, - 0x55, 0xe1, 0xe9, 0x3f, 0x75, 00, 0xe9, 0x45, 0x14, 0x57, - 0xc9, 0x1f, 0xa, 0x14, 0x51, 0x45, 00, 0x14, 0x50, 0x78, - 0x15, 0x25, 0xbd, 0xbb, 0x5c, 0xb8, 0x45, 0x19, 0x26, 0x9a, - 0xbb, 0x76, 0x40, 0x93, 0x93, 0xb2, 0x23, 0x7, 0x26, 0x97, - 0xca, 0x90, 0xf2, 0x10, 0x9a, 0xea, 0x34, 0xbf, 0x3, 0x5d, - 0xdd, 0x61, 0xb0, 0x71, 0x5d, 0x65, 0xa7, 0x80, 0xa4, 0x8e, - 0x35, 0xc, 0x99, 0x38, 0xff, 00, 0x3d, 0xeb, 0xd8, 0xc3, - 0xe5, 0x38, 0x9a, 0xea, 0xee, 0x36, 0x47, 0xd0, 0x61, 0xb2, - 0x3c, 0x5e, 0x25, 0x73, 0x72, 0xd9, 0x1e, 0x55, 0xe5, 0x4c, - 0x3f, 0xe5, 0x99, 0xa4, 0x29, 0x2f, 0x75, 0x35, 0xec, 0xd, - 0xe0, 0x7e, 0x3e, 0xe1, 0xcd, 0x66, 0xde, 0xf8, 0x26, 0x42, - 0xe, 0xd8, 0xeb, 0xa6, 0x79, 0x16, 0x22, 0xa, 0xfa, 0x9d, - 0x75, 0x38, 0x6f, 0x15, 0x4d, 0x5c, 0xf3, 0x20, 0x8, 0xea, - 0x31, 0x45, 0x6f, 0xea, 0xde, 0x1a, 0xba, 0xb6, 0x62, 0x76, - 0x60, 0x56, 0x13, 0xc4, 0xf0, 0xb6, 0xd7, 0x18, 0x35, 0xe1, - 0xd5, 0xa3, 0x52, 0x8b, 0xb4, 0xd1, 0xf3, 0x75, 0xb0, 0xf5, - 0x70, 0xf2, 0xe5, 0x9a, 0xb0, 0xda, 0x28, 0xa2, 0xb1, 0x30, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0xbb, 0xa4, 0xde, 0xb5, 0xa5, - 0xd2, 0x90, 0xd8, 0xc9, 0x15, 0x4a, 0x80, 0x76, 0xb8, 0x6f, - 0x4a, 0xa8, 0x4d, 0xd3, 0x92, 0x92, 0x2e, 0x13, 0x74, 0xe4, - 0xa6, 0xba, 0x1f, 0x41, 0xf8, 0x32, 0xfc, 0x5e, 0xe9, 0xcb, - 0xf3, 0x65, 0x86, 0x33, 0x5d, 0x10, 0x18, 0xaf, 0x36, 0xf8, - 0x57, 0xa9, 0x6f, 0xb6, 0x64, 0x27, 0xa9, 0xaf, 0x49, 0xaf, - 0xdb, 0x32, 0xca, 0xff, 00, 0x58, 0xc2, 0xc2, 0x67, 0xf4, - 0x46, 0x4f, 0x88, 0xfa, 0xce, 0xa, 0x9c, 0xfc, 0x85, 0xa2, - 0x8a, 0x2b, 0xd5, 0x3d, 0xa1, 0xd, 0x54, 0xd4, 0x2f, 0xe3, - 0xb1, 0x85, 0x99, 0x98, 0x2, 0x5, 0x5a, 0x66, 0xda, 0x32, - 0x7a, 0x57, 0x97, 0x7c, 0x44, 0xf1, 0x19, 0x8e, 0x76, 0x81, - 0x1b, 0xa0, 0xaf, 0x37, 0x1f, 0x8b, 0x8e, 0xa, 0x8b, 0xa8, - 0xcf, 0x23, 0x34, 0xc7, 0xc7, 0x2f, 0xc3, 0xba, 0xb2, 0x39, - 0xf, 0x17, 0xf8, 0x8a, 0x4d, 0x4e, 0xf6, 0x75, 0xdd, 0x95, - 0xdd, 0xc5, 0x73, 0x6a, 0x30, 0x29, 0x5d, 0x8c, 0x8e, 0xce, - 0xc7, 0x24, 0x9c, 0xd2, 0x57, 0xe2, 0xb5, 0xeb, 0x4b, 0x11, - 0x51, 0xd4, 0x9b, 0xdc, 0xfe, 0x7a, 0xc4, 0xe2, 0x27, 0x8a, - 0xaa, 0xea, 0xd4, 0x7a, 0xb0, 0xa2, 0x8a, 0x2b, 0x3, 0x98, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa3, 0xad, 0x1b, 0x5c, 0xf4, - 0x53, 0x40, 0x5, 0x14, 0x85, 0x64, 0xfe, 0xe9, 0xa4, 0x3b, - 0xc7, 0xf0, 0x9a, 0x57, 0xf2, 0x15, 0xfc, 0x87, 0x51, 0x4c, - 0xde, 0x47, 0x50, 0x7f, 0x2a, 0x5d, 0xfc, 0x51, 0x71, 0x5c, - 0x75, 0x14, 0x3, 0x9a, 0x29, 0x8c, 0x1b, 0x90, 0x6b, 0xd1, - 0x7e, 0x1a, 0x69, 0xe4, 0x27, 0x98, 0x57, 0x9e, 0xb5, 0xe7, - 0x68, 0xbb, 0xdc, 0x1, 0xde, 0xbd, 0xa7, 0xc0, 0x96, 0x2, - 0xdb, 0x4f, 0x53, 0x8e, 0xb5, 0xf4, 0x79, 0xd, 0xf, 0x6b, - 0x8a, 0x4d, 0xf4, 0x3e, 0xb7, 0x86, 0x70, 0xfe, 0xdb, 0x1b, - 0xcc, 0xfa, 0x1d, 0x44, 0x9f, 0x24, 00, 0x7b, 0x56, 0xd, - 0xeb, 0xf5, 0xfa, 0xd6, 0xe5, 0xd9, 0xc2, 0x91, 0x9a, 0xe7, - 0x6f, 0x9f, 0x4, 0xfd, 0x6b, 0xf5, 0xf4, 0xac, 0x8f, 0xde, - 0x12, 0xb2, 0xb1, 0x89, 0xa8, 0xbe, 0x1, 0xae, 0x5b, 0x52, - 0x93, 0x83, 0x5d, 0xe, 0xa4, 0xfd, 0x6b, 0x95, 0xd4, 0xe4, - 0xeb, 0x4c, 0x67, 0x37, 0xab, 0xc9, 0xc1, 0xae, 0x1b, 0x58, - 0x97, 0x1b, 0xab, 0xad, 0xd6, 0x25, 0xeb, 0x5c, 0x2e, 0xb9, - 0x3e, 0xd4, 0x73, 0xed, 0x40, 0x6c, 0x78, 0xdf, 0xc5, 0x3b, - 0xfd, 0xb6, 0x97, 0x3, 0x77, 0x6a, 0xf9, 0x57, 0xc4, 0xd7, - 0x86, 0x5b, 0xd9, 0x9, 0x39, 0x3, 0xff, 00, 0xaf, 0x5f, - 0x43, 0xfc, 0x56, 0xd4, 0x3f, 0xd1, 0x2e, 0x79, 0x35, 0xf3, - 0x2e, 0xb5, 0x3f, 0x99, 0x34, 0x8d, 0xea, 0x6b, 0xe1, 0xb3, - 0x29, 0x73, 0xd5, 0xe5, 0x3f, 0x38, 0xcd, 0xe7, 0xcf, 0x59, - 0x23, 0x7, 0x50, 0x9f, 0x83, 0xcd, 0x72, 0x1a, 0xd3, 0xe5, - 0x4f, 0xbd, 0x6f, 0x6a, 0x53, 0x63, 0x35, 0xce, 0x6a, 0x4d, - 0xbe, 0x33, 0x5a, 0xe1, 0x61, 0x66, 0x99, 0xae, 0xa, 0x1c, - 0xb6, 0x67, 0xdb, 0x5f, 0xf0, 0x4c, 0x4f, 0x1c, 0x3d, 0x86, - 0xaf, 0x71, 0x61, 0x2d, 0xcf, 0xee, 0xed, 0xee, 0xd7, 0x6c, - 0x44, 0x9f, 0xba, 0xe1, 0xf3, 0xfa, 0xed, 0xaf, 0xd6, 0x44, - 0x7e, 0x2b, 0xf1, 0xb, 0xfe, 0x9, 0xfd, 0x7c, 0xf6, 0xdf, - 0x14, 0x75, 0x18, 0x83, 0x60, 0x79, 0x29, 0x2e, 0x31, 0xdc, - 0x48, 0x83, 0x3f, 0xad, 0x7e, 0xd8, 0xd9, 0x4e, 0x65, 0xb5, - 0x85, 0xf3, 0x9d, 0xc8, 0x1b, 0x3f, 0x85, 0x7d, 0x85, 0x3f, - 0x85, 0x1f, 0x7b, 0x4d, 0xde, 0x8, 0xd4, 0x46, 0xe9, 0x53, - 0x21, 0x15, 0x4a, 0x37, 0xcf, 0x5a, 0xb3, 0x1b, 0x71, 0x5a, - 0x1a, 0x96, 0x57, 0x8a, 0x91, 0x4e, 0x4f, 0x5a, 0x85, 0x4d, - 0x3d, 0x4f, 0x14, 0x1, 0x3a, 0xf7, 0xa7, 0x8e, 0x95, 0xa, - 0x9f, 0x7a, 0x91, 0x48, 0xcd, 00, 0x48, 0x29, 0x69, 0xbd, - 0xe9, 0xd4, 00, 0xa3, 0xad, 0x3a, 0x99, 0x4e, 0x1d, 0x28, - 0x1, 0x68, 0xa2, 0x8a, 00, 0x6b, 0x52, 0x50, 0x68, 0xa0, - 0x4, 0x6a, 0x8d, 0xa9, 0xec, 0x79, 0xa8, 0xd8, 0xd0, 0x3, - 0x1a, 0xa3, 0x63, 0x8a, 0x7b, 0x54, 0x6d, 0xd2, 0x80, 0x21, - 0x73, 0xc5, 0x56, 0x90, 0xe7, 0x35, 0x62, 0x43, 0x55, 0x65, - 0x34, 0x1, 0x56, 0x73, 0x8a, 0xf3, 0x1f, 0xda, 0xb, 0xc4, - 0xf1, 0x78, 0x57, 0xe1, 0x2f, 0x88, 0xee, 0xde, 0x63, 0x4, - 0xd2, 0x5b, 0x3c, 0x16, 0xe7, 0xbb, 0x4a, 0xca, 0x76, 0x8f, - 0x6e, 0x86, 0xbd, 0x2e, 0x66, 0xe6, 0xbe, 0x55, 0xfd, 0xb9, - 0xfc, 0x47, 0xe5, 0x78, 0x6f, 0x42, 0xd0, 0x22, 0x95, 0x77, - 0x5d, 0x5d, 0x7d, 0xa2, 0x48, 0xc3, 0x7c, 0xc0, 0x28, 0x21, - 0x4e, 0x3d, 0x39, 0x35, 0xe5, 0xe6, 0x75, 0xfe, 0xad, 0x83, - 0xa9, 0x53, 0xc8, 0xf1, 0xb3, 0x8c, 0x4f, 0xd5, 0x30, 0x15, - 0x6a, 0xf6, 0x4f, 0xf1, 0xd0, 0xe3, 0x7f, 0x63, 0x9f, 0xc, - 0xfd, 0xa3, 0x55, 0xb8, 0xd4, 0x18, 0x13, 0xb1, 0x76, 0x83, - 0x8e, 0x33, 0xc5, 0x7d, 0xe1, 0xa3, 0x45, 0xb2, 0xdd, 0x31, - 0xe9, 0x5f, 0x35, 0x7e, 0xca, 0x3e, 0x1a, 0x3a, 0x5f, 0x82, - 0x6d, 0xa6, 0x65, 0x2a, 0xf3, 0xfc, 0xfd, 0x3b, 0x1c, 0x57, - 0xd4, 0x1a, 0x64, 0x7b, 0x61, 0x5a, 0xe2, 0xc8, 0xa8, 0x7b, - 0xc, 0xc, 0x2f, 0xbb, 0xd7, 0xef, 0x3c, 0xfe, 0x1a, 0xc3, - 0xfd, 0x5f, 0x2d, 0xa7, 0x7d, 0xe5, 0xaf, 0xdf, 0xa9, 0x7f, - 0xa5, 0x2d, 0x14, 0x57, 0xd0, 0x9f, 0x52, 0x14, 0x51, 0x45, - 00, 0x15, 0x53, 0x53, 0xb2, 0x5d, 0x42, 0xce, 0x58, 0x1b, - 0xa3, 0x8c, 0x55, 0xba, 0x28, 0x3, 0xf3, 0x43, 0xf6, 0xd8, - 0xfd, 0x94, 0xc6, 0xaa, 0x66, 0xd6, 0x9c, 0x49, 0xc9, 0x62, - 0x36, 0xe, 0xbc, 0x7f, 0xbd, 0x5f, 0x98, 0x3e, 0x38, 0xf8, - 0x7c, 0xde, 0x1a, 0xba, 0x91, 0x36, 0x4b, 0xf2, 0x93, 0xf7, - 0x94, 0xd7, 0xf4, 0x91, 0xe3, 0x3f, 0x3, 0xd9, 0xf8, 0xde, - 0xc3, 0xec, 0xb7, 0xa5, 0x96, 0x3f, 0xf6, 0x40, 0x3f, 0xce, - 0xbe, 0x66, 0xf8, 0x9f, 0xfb, 0x10, 0xf8, 0x77, 0x56, 0x57, - 0x92, 0x29, 0x65, 0x24, 0x8c, 0xe0, 0x46, 0x9f, 0xfc, 0x4d, - 00, 0x7e, 0xb, 0x32, 0x90, 0xc4, 0x60, 0xd2, 0xc6, 0xbb, - 0xdc, 0x2f, 0xad, 0x7e, 0xab, 0x78, 0x8f, 0xf6, 0x11, 0xb3, - 0x5b, 0x87, 0x11, 0x2c, 0xe4, 0xe, 0x9f, 0xba, 0x1f, 0xfc, - 0x45, 0x5e, 0xf0, 0x9f, 0xfc, 0x13, 0xa6, 0xc7, 0x54, 0x91, - 0x3c, 0xdc, 0xa6, 0x7a, 0xee, 0x88, 0x3, 0xff, 00, 0xa2, - 0xe8, 0x3, 0xf3, 0x43, 0xc0, 0xff, 00, 0xc, 0xaf, 0x3c, - 0x69, 0x7a, 0x20, 0xb7, 0x59, 0x33, 0xc7, 0x28, 0x9b, 0xab, - 0xf4, 0x17, 0xf6, 0x48, 0xfd, 0x86, 0x2e, 0xa0, 0xbb, 0x86, - 0xf7, 0x56, 0x8a, 0xe1, 0xd7, 0x70, 0x7d, 0xaf, 0x9, 0x5e, - 0xe3, 0xfd, 0xaa, 0xfa, 0xdb, 0xe1, 0x2f, 0xec, 0x21, 0xa2, - 0x7c, 0x3d, 0xbe, 0x5b, 0xcf, 0x3f, 0x73, 0xf0, 0x70, 0x15, - 0x7b, 0x7f, 0xc0, 0x5, 0x7d, 0x53, 0xa4, 0xe9, 0x50, 0xe8, - 0xf6, 0x8b, 0x4, 0x23, 0xe5, 0x51, 0x8e, 0x68, 0x3, 0x1f, - 0xc0, 0xbe, 0xd, 0xb3, 0xf0, 0x66, 0x85, 0x6f, 0x63, 0x6c, - 0x9b, 0x42, 0x28, 0xe7, 0xf0, 0xff, 00, 0xeb, 0x57, 0x4b, - 0x45, 0x14, 00, 0x57, 0x1b, 0xe3, 0xcb, 0xdf, 0x26, 0xc5, - 0xf9, 0xed, 0x5d, 0x83, 0x30, 0xa, 0x4d, 0x79, 0x57, 0xc4, - 0xad, 0x47, 0xfd, 0x1d, 0x90, 0x1c, 0x92, 0x71, 0x5e, 0x26, - 0x6f, 0x5b, 0xd8, 0xe1, 0x64, 0xcf, 0x9d, 0xcf, 0x71, 0x1f, - 0x57, 0xc1, 0x4d, 0xf9, 0x1e, 0x65, 0x23, 0xf9, 0x92, 0xbb, - 0x7a, 0x9a, 0x6d, 0x22, 0xf4, 0x14, 0xb5, 0xf8, 0xbd, 0xef, - 0xa9, 0xfc, 0xf9, 0x7b, 0xea, 0x14, 0x51, 0x45, 0x30, 0xa, - 0xe8, 0x7c, 0x7, 0x6b, 0xf6, 0x8d, 0x7a, 0x32, 0x47, 0xb, - 0x5c, 0xf1, 0xe9, 0x5d, 0xff, 00, 0xc2, 0xdb, 0x12, 0xd7, - 0x82, 0x5c, 0x1e, 0xb5, 0xe9, 0x65, 0x94, 0xfd, 0xae, 0x2e, - 0x11, 0xf3, 0x3d, 0x8c, 0xa2, 0x8f, 0xb6, 0xc7, 0x53, 0x8f, - 0x99, 0xec, 0x56, 0xc8, 0x12, 0x15, 0x3, 0xd2, 0xa5, 0xa6, - 0xaf, 0x2, 0x9d, 0x5f, 0xb7, 0xa5, 0x65, 0x63, 0xfa, 0x31, - 0x2b, 0x2b, 0x5, 0x14, 0x51, 0x4c, 0x61, 0x59, 0xda, 0xe6, - 0xd1, 0xa7, 0x4a, 0x5b, 0x9c, 0x29, 0xad, 0x1a, 0xe6, 0xfc, - 0x6d, 0x7b, 0xf6, 0x3d, 0x1e, 0x43, 0x90, 0x37, 0x2, 0x39, - 0xae, 0x5c, 0x54, 0xd5, 0x3a, 0x33, 0x93, 0xe8, 0x8e, 0x3c, - 0x65, 0x45, 0x4b, 0xf, 0x39, 0xcb, 0x64, 0x99, 0xe1, 0xda, - 0xe3, 0x6f, 0xd4, 0x25, 0x6f, 0xf6, 0x8d, 0x67, 0x55, 0x8b, - 0xd9, 0x7c, 0xd9, 0x98, 0xfb, 0x9a, 0xaf, 0x5f, 0x85, 0x55, - 0x7c, 0xd5, 0x24, 0xcf, 0xe6, 0xba, 0xd2, 0xe7, 0xab, 0x29, - 0x77, 0xa, 0x28, 0xa2, 0xb3, 0x32, 0xa, 0x92, 0xd9, 0x3c, - 0xcb, 0x94, 0x15, 0x1d, 0x69, 0xf8, 0x76, 0xd8, 0xdc, 0xdf, - 0xc, 0x74, 0xc8, 0xe9, 0x5a, 0x53, 0x87, 0xb4, 0xa9, 0x18, - 0xa3, 0x6a, 0x30, 0x75, 0x2a, 0x46, 0xb, 0xa9, 0xeb, 0xbf, - 0xf, 0x2c, 0x3c, 0xab, 0x53, 0x21, 0x1c, 0xf1, 0xda, 0xbb, - 0x40, 0x2b, 0x33, 0xc3, 0x96, 0xa2, 0xd7, 0x4e, 0x41, 0xdc, - 0x8a, 0xd5, 0xaf, 0xdc, 0x30, 0x34, 0x95, 0x1a, 0x11, 0x82, - 0x3f, 0xa3, 0x72, 0xea, 0x1f, 0x57, 0xc2, 0xc2, 0x1e, 0x41, - 0x45, 0x14, 0x57, 0x79, 0xe9, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x19, 0x7a, 0xed, 0xc7, 0x91, 0x61, 0x23, - 0x7a, 0x29, 0xaf, 0x9f, 0x35, 0xeb, 0x9f, 0xb5, 0x6a, 0xb3, - 0x3e, 0x73, 0xc9, 0x15, 0xed, 0x3e, 0x3b, 0xbd, 0x16, 0xfa, - 0x64, 0xbc, 0x8f, 0xba, 0x6b, 0xc2, 0x64, 0x7f, 0x32, 0x57, - 0x63, 0xdc, 0x9a, 0xfc, 0xd7, 0x89, 0xeb, 0x73, 0x54, 0x8d, - 0x24, 0x7e, 0x43, 0xc6, 0x58, 0x8e, 0x6a, 0xb0, 0xa2, 0xba, - 0xd, 0xa2, 0x8a, 0x2b, 0xe1, 0x8f, 0xce, 0x2, 0x8a, 0x28, - 0xa0, 0x7, 0xdb, 0x46, 0x66, 0xbb, 0x8d, 0x7b, 0x64, 0x57, - 0xb9, 0xf8, 0x16, 0xd3, 0xca, 0xb6, 0x7, 0xd8, 0x57, 0x8c, - 0xf8, 0x72, 0xf, 0xb4, 0xea, 0x4b, 0xc6, 0x71, 0x5e, 0xff, - 00, 0xe1, 0xbb, 0x6f, 0x22, 0xc5, 0x7d, 0xc0, 0xaf, 0xb8, - 0xe1, 0x8a, 0x1c, 0xd3, 0x75, 0x4f, 0xd1, 0xb8, 0x3b, 0xf, - 0xcf, 0x56, 0x55, 0x59, 0xaa, 0x6, 0x29, 0x71, 0x4b, 0x45, - 0x7e, 0x96, 0x7e, 0xbe, 0x26, 0x28, 0xc7, 0xb9, 0xa5, 0xa2, - 0x80, 0x1b, 0xc7, 0x7e, 0xb4, 0xa2, 0x96, 0x90, 0xd0, 00, - 0x48, 0x3, 0x26, 0xbc, 0xfb, 0xe2, 0x2f, 0x88, 0x85, 0xac, - 0x3e, 0x52, 0x10, 0x38, 0xf5, 0xae, 0xb7, 0x5f, 0xbf, 0x5b, - 0xb, 0x17, 0x72, 0x70, 0x71, 0x5e, 0x13, 0xe2, 0xdd, 0x54, - 0xea, 0x37, 0xc7, 0xb8, 0x15, 0xf2, 0x79, 0xf6, 0x3f, 0xea, - 0xd4, 0x1d, 0x38, 0xbd, 0x59, 0xf1, 0x1c, 0x4f, 0x99, 0xfd, - 0x53, 0xe, 0xe8, 0xc1, 0xfb, 0xcc, 0xc8, 0xb9, 0x99, 0xae, - 0x67, 0x2e, 0xdc, 0xd4, 0x74, 0x51, 0x5f, 0x94, 0xb6, 0xdb, - 0xbb, 0x3f, 0x12, 0x6d, 0xb6, 0xe4, 0xf7, 0xa, 0x28, 0xa2, - 0x90, 0x82, 0x8a, 0x2a, 0xc6, 0x9d, 0x68, 0xd7, 0xf7, 0x22, - 0x35, 0x4, 0xe7, 0xd0, 0x53, 0x49, 0xc9, 0xa8, 0xae, 0xa5, - 0x46, 0x2e, 0x72, 0x51, 0x8e, 0xec, 0x93, 0x4f, 0xd3, 0xe4, - 0xbe, 0x90, 0x2a, 0xa9, 0x3c, 0xf6, 0x15, 0xea, 0x7e, 0x16, - 0xf0, 0x24, 0x62, 0x14, 0x96, 0x41, 0x83, 0x56, 0x7c, 0xb, - 0xe1, 0x34, 0xb4, 0xb7, 0xdf, 0x30, 0x3b, 0x8e, 0x3a, 0x8a, - 0xee, 0xa3, 0x8c, 0x46, 0x81, 0x40, 0xe0, 0x57, 0xe9, 0x59, - 0x3e, 0x49, 0x1a, 0x71, 0x55, 0xab, 0xad, 0x4f, 0xd7, 0x32, - 0xe, 0x1d, 0x85, 0x28, 0x2c, 0x46, 0x21, 0x5d, 0xbe, 0x84, - 0x16, 0x76, 0x31, 0xda, 0x26, 0xd5, 0x15, 0x67, 0x2, 0x9d, - 0x45, 0x7d, 0xb4, 0x62, 0xa2, 0xac, 0x8f, 0xd1, 0x63, 0x15, - 0x5, 0xcb, 0x1d, 0x86, 0xe2, 0x82, 0xaa, 0x47, 0x23, 0x34, - 0xea, 0x29, 0xd8, 0x66, 0x1e, 0xb7, 0xa2, 0x2d, 0xf4, 0x47, - 0x6a, 0x8a, 0xf1, 0xff, 00, 0x15, 0x78, 0x71, 0xac, 0x66, - 0x77, 0x39, 0xc6, 0x6b, 0xde, 0x98, 0x67, 0x8e, 0xd5, 0xc8, - 0xf8, 0xd3, 0x44, 0x5b, 0x9b, 0x66, 0x6e, 0x78, 0x19, 0xc5, - 0x7c, 0xce, 0x71, 0x97, 0x47, 0x11, 0x49, 0xce, 0x2b, 0x54, - 0x7c, 0x7e, 0x7d, 0x94, 0xc3, 0x17, 0x45, 0xd4, 0x8a, 0xf7, - 0x91, 0xe1, 0x44, 0x60, 0xd2, 0x55, 0x9d, 0x42, 0x13, 0x5, - 0xdb, 0xa9, 0x4, 00, 0x71, 0x55, 0xab, 0xf2, 0x47, 0x17, - 0x16, 0xe2, 0xcf, 0xc3, 0x65, 0x17, 0x9, 0x38, 0xbe, 0x81, - 0x45, 0x14, 0x52, 0x24, 0x28, 0x23, 0x39, 0xa2, 0x8a, 0x1e, - 0xc0, 0x77, 0x7f, 0xc, 0xaf, 0xa, 0xdd, 0x94, 0xe8, 0x1, - 0xaf, 0x69, 0x8d, 0x83, 0x20, 0x23, 0xd2, 0xbe, 0x7f, 0xf0, - 0x34, 0xc6, 0x1d, 0x40, 0x1, 0xd5, 0x8d, 0x7b, 0xdd, 0x91, - 0xcd, 0xb4, 0x67, 0xda, 0xbf, 0x53, 0xe1, 0xaa, 0xbc, 0xf8, - 0x6e, 0x5e, 0xc7, 0xed, 0x3c, 0x23, 0x5b, 0x9f, 0x7, 0xc9, - 0xd8, 0x9e, 0x9b, 0x93, 0x4e, 0xa6, 0x9e, 0x73, 0x5f, 0x60, - 0x7d, 0xe1, 0x8d, 0xe2, 0x4d, 0x53, 0xfb, 0x3e, 0xd1, 0x8e, - 0x70, 0x48, 0xaf, 0x6, 0xf1, 0x6, 0xa2, 0xda, 0x86, 0xa5, - 0x23, 0x13, 0xd0, 0xd7, 0xa4, 0xfc, 0x46, 0xd5, 0x42, 0xb3, - 0x44, 0xf, 0x4c, 0xd7, 0x92, 0x33, 0x6f, 0x95, 0xdb, 0xd4, - 0xd7, 0xe5, 0xbc, 0x47, 0x8c, 0x75, 0x2a, 0xaa, 0x31, 0x7a, - 0x23, 0xf1, 0x8e, 0x2c, 0xc7, 0x3a, 0xd5, 0xd5, 0x4, 0xf4, - 0x41, 0x45, 0x14, 0x57, 0xc7, 0x1f, 0x2, 0x14, 0x51, 0x45, - 0x30, 0xa, 0x92, 0xde, 0xdd, 0xae, 0xdf, 0x62, 0xf5, 0xa4, - 0x89, 0xc, 0xb2, 0x4, 00, 0x92, 0x7d, 0x2b, 0xd1, 0xbc, - 0x9, 0xe0, 0xe1, 0x70, 0xcb, 0x34, 0x80, 0x81, 0xd7, 0x91, - 0x5d, 0xf8, 0x2c, 0x1d, 0x4c, 0x6d, 0x55, 0x4e, 0x8, 0xf5, - 0x32, 0xec, 0x5, 0x4c, 0xc2, 0xb2, 0xa5, 0x4, 0x73, 0xba, - 0x67, 0x82, 0xae, 0x6e, 0x48, 0x3f, 0x36, 0x3f, 0xdd, 0xae, - 0x8e, 0xdf, 0xc0, 0x92, 0x2a, 0x8d, 0xca, 0x7f, 0x2a, 0xf5, - 0x1b, 0x4b, 0x8, 0xec, 0xd0, 0x5, 0x15, 0x64, 0x28, 0xf4, - 0x19, 0xaf, 0xd1, 0xb0, 0xfc, 0x3d, 0x87, 0xa7, 0x1f, 0x7b, - 0x73, 0xf5, 0x8c, 0x37, 0xa, 0xe1, 0x69, 0x47, 0xde, 0xd5, - 0x9e, 0x60, 0x9e, 0x7, 0x3, 0xaa, 0x9f, 0xca, 0x91, 0xfc, - 0x10, 0x3f, 0xb8, 0x7f, 0xef, 0x9a, 0xf5, 0x1c, 0xf, 0x4a, - 0x4d, 0x8b, 0xe9, 0xfa, 0x57, 0x6f, 0xf6, 0x2e, 0x1b, 0xb1, - 0xe8, 0xff, 00, 0xab, 0xd8, 0x4b, 0x5a, 0xc7, 0x92, 0x5c, - 0x78, 0x2b, 0x1d, 0x11, 0xbf, 0x2a, 0xca, 0xbc, 0xf0, 0x8b, - 0xc4, 0x38, 0x46, 0xfc, 0xab, 0xdb, 0x8c, 0x48, 0xdf, 0xc3, - 0x9a, 0x89, 0xec, 0xe2, 0x7e, 0xa8, 0xd, 0x72, 0xd4, 0xc8, - 0x28, 0x4d, 0x68, 0x70, 0xd5, 0xe1, 0x8c, 0x3c, 0xfe, 0x13, - 0xe7, 0x4b, 0xdd, 0x16, 0xe2, 0x2, 0x7f, 0x74, 0xdf, 0x95, - 0x66, 0xbc, 0x33, 0x47, 0xc3, 0x21, 0x15, 0xf4, 0x46, 0xa3, - 0xe1, 0xc8, 0x27, 0x53, 0xb5, 0x39, 0xfa, 0x57, 0x15, 0xaf, - 0xf8, 0x35, 0xca, 0x37, 0x96, 0x8c, 0x3f, 0xe0, 0x35, 0xf2, - 0xd8, 0xce, 0x1e, 0xa9, 0x45, 0x39, 0x43, 0x53, 0xe3, 0x31, - 0xfc, 0x2d, 0x56, 0x85, 0xe5, 0x4d, 0xdc, 0xf3, 0x8d, 0x1e, - 0xdc, 0xdc, 0x5f, 0x44, 0x87, 0xd6, 0xbd, 0xf3, 0x43, 0xb6, - 0x16, 0xd6, 0x31, 0x28, 0xf4, 0xaf, 0x2d, 0xf0, 0xe7, 0x85, - 0xe7, 0x8f, 0x57, 0x52, 0xc0, 0x85, 0x53, 0xd3, 0x15, 0xec, - 0x28, 0xbe, 0x54, 0x20, 0x7a, 0xc, 0x57, 0xb1, 0xc3, 0x78, - 0x49, 0x52, 0x8c, 0xa7, 0x35, 0x66, 0x7b, 0xfc, 0x25, 0x81, - 0x95, 0x18, 0xce, 0xa5, 0x45, 0x66, 0x52, 0xbc, 0x7c, 0x66, - 0xb9, 0xcb, 0xf7, 0xeb, 0xf5, 0xad, 0xdb, 0xd7, 0xeb, 0x5c, - 0xe5, 0xfb, 0xfd, 0xea, 0xfb, 0xb3, 0xf4, 0xa3, 0x3, 0x52, - 0x93, 0xad, 0x72, 0x9a, 0x94, 0x9d, 0x6b, 0xa2, 0xd4, 0xa4, - 0xeb, 0x5c, 0xa6, 0xa7, 0x26, 0x3, 0x50, 0x7, 0x2f, 0xac, - 0xcb, 0xd6, 0xbc, 0xff, 00, 0xc4, 0xf7, 0x3e, 0x5d, 0xbc, - 0x84, 0x7a, 0x75, 0xae, 0xd3, 0x58, 0x97, 0xef, 0x73, 0x5e, - 0x67, 0xe3, 0x6b, 0xa0, 0x96, 0xad, 0xf3, 0x1, 0xc5, 0x44, - 0xdd, 0xa2, 0xd9, 0x9d, 0x47, 0xcb, 0x6, 0xcf, 0x9f, 0x7e, - 0x2b, 0xdf, 0x7f, 0xa3, 0x4e, 0x5, 0x7c, 0xf7, 0xa9, 0xcb, - 0x9d, 0xc6, 0xbd, 0x8b, 0xe2, 0x95, 0xee, 0xe8, 0xe5, 0x5c, - 0xd7, 0x8a, 0x6a, 0x72, 0x70, 0x45, 0x7c, 0xd, 0x77, 0xcf, - 0x5a, 0xe7, 0xe6, 0x18, 0x99, 0x7b, 0x4c, 0x49, 0xce, 0x6a, - 0x4f, 0xc9, 0xac, 0x3b, 0x93, 0x90, 0x45, 0x6a, 0x6a, 0xf, - 0x96, 0x35, 0x8f, 0x3b, 0x73, 0x5e, 0xb5, 0x5, 0x64, 0x7b, - 0xb8, 0x68, 0xd9, 0x23, 0xdf, 0xbf, 0x61, 0x1b, 0x76, 0xff, - 00, 0x85, 0xb1, 0xa9, 0x48, 0x9, 0x3, 0xec, 0x21, 0x78, - 0xf5, 0xf3, 0x52, 0xbf, 0x6b, 0xf4, 0x62, 0x57, 0x4c, 0xb3, - 0x52, 0x79, 0x10, 0x27, 0xfe, 0x82, 0x2b, 0xf2, 0x3, 0xfe, - 0x9, 0xf7, 0xa0, 0x3d, 0xef, 0x89, 0xb5, 0x5b, 0xc0, 0xa4, - 0x7e, 0xfa, 0x8, 0x41, 0xc7, 0x18, 0x2d, 0x93, 0xff, 00, - 0xa0, 0xd7, 0xec, 0x5, 0xa8, 0x11, 0xc4, 0x8a, 0xf, 0xdd, - 00, 0x57, 0xd2, 0xd2, 0xf8, 0x11, 0xf5, 0xf4, 0x3f, 0x86, - 0x8d, 0x48, 0x5e, 0xac, 0xa3, 0x73, 0x59, 0xf0, 0x9c, 0xd5, - 0xb4, 0x6a, 0xd8, 0xdc, 0xb9, 0x1b, 0xd4, 0xca, 0xd9, 0xaa, - 0xb1, 0x9c, 0xd4, 0xea, 0xdd, 0x28, 0x2, 0x75, 0x22, 0xa4, - 0x53, 0x50, 0xa1, 0xcd, 0x4c, 0xa7, 0x8a, 00, 0x90, 0x1a, - 0x55, 0xa6, 0xad, 0x2d, 00, 0x3e, 0x94, 0x75, 0xa4, 0xa5, - 0x14, 00, 0xea, 0x28, 0xa2, 0x80, 0x19, 0x45, 0x14, 0x87, - 0x8a, 00, 0x6b, 0x1e, 0x2a, 0x36, 0xa7, 0xb5, 0x46, 0x4d, - 00, 0x31, 0x8d, 0x46, 0xfc, 0xa, 0x7b, 0x54, 0x52, 0x1e, - 0x28, 0x2, 0x9, 0xd, 0x55, 0x94, 0xd4, 0xf2, 0x1a, 0xab, - 0x29, 0xa0, 0xa, 0xb3, 0x1a, 0xf8, 0x23, 0xf6, 0x95, 0xd7, - 0x1f, 0xc7, 0x5f, 0x1e, 0xa3, 0xd3, 0xed, 0xa4, 0x5b, 0xab, - 0x7b, 0x18, 0xa2, 0xb4, 0xb, 0x1, 0xdc, 0x37, 0xef, 0x62, - 0x7d, 0x79, 0xc3, 0xa, 0xfb, 0x9b, 0xc4, 0x3a, 0xa2, 0x68, - 0x9a, 0x35, 0xfe, 0xa1, 0x22, 0xee, 0x8e, 0xd2, 0x7, 0x9d, - 0x94, 0x1c, 0x64, 0x2a, 0x92, 0x7f, 0x95, 0x7c, 0xb, 0xf0, - 0x46, 0xc2, 0x4f, 0x1b, 0xfc, 0x61, 0xb8, 0xd4, 0x66, 0x3b, - 0xf7, 0x5d, 0x3c, 0xe4, 0x9e, 0x78, 0xdf, 0xc7, 0x5f, 0x6a, - 0xf9, 0xe, 0x21, 0x9b, 0xa9, 0x1a, 0x58, 0x48, 0xfd, 0xb9, - 0x2b, 0xfa, 0x23, 0xe0, 0xf8, 0xaa, 0xa3, 0xa9, 0xa, 0x18, - 0x18, 0xef, 0x52, 0x4a, 0xfe, 0x88, 0xfb, 0x7b, 0xe1, 0x36, - 0x80, 0x34, 0x4f, 0xc, 0xe9, 0xb6, 0xa2, 0x32, 0x9e, 0x5c, - 0x8, 0xa, 0x9e, 0xa0, 0xed, 0x15, 0xea, 0xf6, 0x69, 0x88, - 0x45, 0x73, 0x1e, 0x1d, 0xb6, 0x11, 0xc1, 0x18, 0x3, 0xf8, - 0x6b, 0xac, 0x88, 0x62, 0x35, 0xaf, 0xaa, 0xa5, 0x5, 0x4e, - 0x9c, 0x60, 0xba, 0x23, 0xed, 0x68, 0x53, 0x54, 0xa9, 0x46, - 0x9a, 0xd9, 0x21, 0xf4, 0x51, 0x45, 0x6a, 0x6e, 0x14, 0x51, - 0x45, 00, 0x14, 0x51, 0x5c, 0x3f, 0x8e, 0x3e, 0x2e, 0x68, - 0x9e, 0x4, 0x57, 0xfb, 0x73, 0xb1, 0x75, 0xfe, 0x15, 0xc7, - 0x34, 0x1, 0xdb, 0x34, 0x8a, 0x83, 0x2c, 0xc1, 0x7e, 0xa7, - 0x15, 0xc, 0xaf, 0x6d, 0x30, 0xc3, 0xbc, 0x6c, 0x3d, 0xc8, - 0x35, 0xf0, 0xa7, 0xc6, 0x3f, 0xdb, 0x66, 0xc2, 0x11, 0x22, - 0xe9, 0xad, 0x74, 0x84, 0x67, 0x95, 0x97, 0x3, 0xf4, 0x35, - 0xf3, 0x7e, 0xaf, 0xfb, 0x74, 0x6b, 0x30, 0xca, 0xe6, 0x2b, - 0x8b, 0xb2, 0x1, 0xef, 0x72, 0xff, 00, 0xe3, 0x40, 0x1f, - 0xad, 0x92, 0x68, 0xba, 0x4c, 0xcc, 0x4b, 0x45, 0xb, 0x37, - 0xe1, 0x56, 0xed, 0x34, 0xcb, 0x4b, 0x5e, 0x61, 0x89, 0x7, - 0xb8, 0x2, 0xbf, 0x20, 0xbc, 0x13, 0xfb, 0x6d, 0xf8, 0x97, - 0x5e, 0xd7, 0xe3, 0x80, 0xcb, 0x74, 0x54, 0xb6, 0xd1, 0xfe, - 0x96, 0xfc, 0x9c, 0xfd, 0x6b, 0xf5, 0x13, 0xe0, 0x76, 0xb3, - 0x77, 0xad, 0xf8, 0xa, 0xca, 0xfe, 0xf5, 0x9b, 0xcc, 0x95, - 0x3, 0x7c, 0xee, 0x58, 0xfe, 0x66, 0x80, 0x3d, 0x10, 0xc, - 0x52, 0xd6, 0x7b, 0xeb, 0xd6, 0x11, 0xc9, 0xe5, 0xbd, 0xca, - 0xab, 0xfa, 0x10, 0x6a, 0x68, 0x35, 0x1b, 0x7b, 0xa3, 0x88, - 0xa5, 0x57, 0xfa, 0x50, 0x5, 0xaa, 0x43, 0x4b, 0x49, 0x40, - 0x15, 0xef, 0x65, 0xf2, 0x6d, 0xdc, 0xe6, 0xbc, 0x2b, 0xc7, - 0x97, 0xe6, 0xe2, 0xff, 00, 0xcb, 0xc, 0x8, 0xce, 0x78, - 0xaf, 0x63, 0xf1, 0x3d, 0xcf, 0xd9, 0xec, 0x9b, 0x9c, 0x71, - 0x5f, 0x3f, 0x6a, 0xf7, 0x6, 0xe7, 0x51, 0x91, 0x89, 0x27, - 0x9a, 0xf8, 0x1e, 0x27, 0xc4, 0x5a, 0xa, 0x92, 0xea, 0x7e, - 0x61, 0xc6, 0x38, 0xae, 0x58, 0x46, 0x82, 0xea, 0x55, 0xe9, - 0x45, 0x14, 0x57, 0xe7, 0x47, 0xe5, 0x3b, 0x5, 0x14, 0x51, - 0x4c, 00, 0x8c, 0x8c, 0xe, 0xa6, 0xbd, 0x8f, 0xe1, 0xae, - 0x9d, 0xf6, 0x7b, 0x64, 0x72, 0xb8, 0x38, 0xaf, 0x24, 0xd3, - 0x62, 0xf3, 0xef, 0xe2, 0x4f, 0xf6, 0xab, 0xdf, 0xfc, 0x29, - 0x6e, 0xb0, 0x59, 0xa8, 0x3, 0x1c, 0x57, 0xd8, 0x70, 0xdd, - 0xe, 0x7a, 0xee, 0xa3, 0xe8, 0x7d, 0xef, 0x8, 0xe1, 0xbd, - 0xae, 0x29, 0xd6, 0x7d, 0xd, 0xe1, 0x4b, 0x48, 0x29, 0x6b, - 0xf5, 0x23, 0xf6, 0x80, 0xa4, 0xcd, 0x23, 0x38, 0x3, 0x93, - 0x50, 0xbd, 0xd4, 0x71, 0xa9, 0x25, 0x80, 0xa9, 0x6d, 0x2d, - 0xd9, 0x2e, 0x49, 0x6e, 0xc9, 0x5e, 0x40, 0x8a, 0x49, 0xe0, - 0xf, 0x5a, 0xf2, 0xdf, 0x8a, 0x5e, 0x20, 0x8e, 0x58, 0x63, - 0xb7, 0x8a, 0x40, 0xdc, 0x9e, 0x95, 0xb3, 0xe2, 0xef, 0x19, - 0x25, 0xa4, 0x2f, 0x1c, 0x64, 0xf4, 0xec, 0x6b, 0xc8, 0x35, - 0x2b, 0xf3, 0xa8, 0xcf, 0xbd, 0x89, 0x3d, 0x4f, 0x26, 0xbe, - 0x1b, 0x3e, 0xcd, 0xa2, 0xa9, 0xbc, 0x3d, 0x27, 0x76, 0xf7, - 0x3f, 0x38, 0xe2, 0x6c, 0xee, 0xa, 0x94, 0xb0, 0x94, 0x5d, - 0xdb, 0xdc, 0xaa, 0x4e, 0xee, 0x69, 0x28, 0xa2, 0xbf, 0x37, - 0x3f, 0x23, 0xa, 0x28, 0xa2, 0x80, 0xc, 0xd7, 0x79, 0xf0, - 0xe7, 0x44, 0x7b, 0xad, 0xb3, 0x18, 0xdb, 0x6e, 0x7a, 0xd7, - 0x17, 0xa7, 0xda, 0x9b, 0xcb, 0x8d, 0xa2, 0xbd, 0xeb, 0xc0, - 0xfa, 0x62, 0xe9, 0xfa, 0x14, 0xb, 0x81, 0xb8, 0x8c, 0xe7, - 0x15, 0xf4, 0xf9, 0x6, 0xf, 0xeb, 0x38, 0x8e, 0x79, 0x6c, - 0x8f, 0xb2, 0xe1, 0x8c, 0xbf, 0xeb, 0x98, 0xbf, 0x69, 0x2f, - 0x86, 0x26, 0xfd, 0xbc, 0x62, 0x28, 0x95, 00, 0xe0, 0xa, - 0x96, 0x90, 0x1, 0x4b, 0x5f, 0xad, 0xa5, 0x6d, 0x8f, 0xdc, - 0x92, 0xb2, 0xb2, 0xa, 0x28, 0xa2, 0x98, 0xc2, 0x8a, 0x28, - 0xa0, 0x4, 0x27, 0x14, 0x8c, 0xdb, 0x41, 0x3e, 0x94, 0xa7, - 0xa8, 0xa8, 0x2e, 0xdf, 0x64, 0x2c, 0x69, 0x37, 0x65, 0x72, - 0x64, 0xf9, 0x53, 0x67, 0x9a, 0x7c, 0x50, 0xd4, 0x82, 0xc2, - 0xd1, 0x6, 0x19, 0x22, 0xbc, 0xad, 0x47, 0x15, 0xd5, 0x7c, - 0x41, 0xbe, 0x37, 0x1a, 0xa1, 0x4c, 0x9c, 0xf, 0x7f, 0xad, - 0x72, 0xc2, 0xbf, 0x16, 0xcd, 0xeb, 0xfb, 0x7c, 0x5c, 0x9f, - 0x6d, 0xf, 0xe7, 0xbc, 0xf7, 0x11, 0xf5, 0x9c, 0x74, 0xdf, - 0x45, 0xa0, 0x51, 0x45, 0x15, 0xe3, 0x1e, 00, 0x50, 0x4e, - 0x5, 0x14, 0x8d, 0xe9, 0xeb, 0x43, 0xd8, 0x4f, 0x63, 0xa9, - 0xf0, 0x1d, 0x89, 0x9a, 0xe8, 0x3e, 0xd3, 0xd6, 0xbd, 0xd6, - 0xc2, 0x3f, 0x2a, 0xd9, 0x17, 0xa1, 0xc5, 0x79, 0x8f, 0xc3, - 0x7b, 0x1f, 0x96, 0x33, 0x81, 0xd2, 0xbd, 0x55, 00, 00, - 0x1, 0x5f, 0xab, 0xf0, 0xf6, 0x1f, 0xd9, 0x61, 0xb9, 0xbb, - 0x9f, 0xb7, 0xf0, 0xae, 0x17, 0xd8, 0xe1, 0x39, 0xdf, 0x51, - 0xd4, 0x51, 0x45, 0x7d, 0x61, 0xf6, 0xe1, 0x45, 0x14, 0x50, - 0x1, 0x48, 0xc4, 0x1, 0x93, 0x4b, 0x54, 0x75, 0x8b, 0xa1, - 0x69, 0x61, 0x2c, 0x87, 0xb2, 0x9a, 0x89, 0xc9, 0x42, 0x2e, - 0x4f, 0xa1, 0x13, 0x92, 0x84, 0x5c, 0x9f, 0x43, 0x83, 0xf8, - 0x9f, 0xaf, 0x2c, 0x70, 0x2c, 0x31, 0xb8, 0xcf, 0xa5, 0x79, - 0x2c, 0x8e, 0x65, 0x72, 0xc6, 0xb6, 0x3c, 0x57, 0xa8, 0xb5, - 0xf6, 0xa2, 0x72, 0x49, 00, 0x93, 0x58, 0xb5, 0xf8, 0xbe, - 0x6b, 0x8b, 0x78, 0xbc, 0x4c, 0xa5, 0xd1, 0x1f, 0xcf, 0x99, - 0xde, 0x39, 0xe3, 0xb1, 0x72, 0x9f, 0x44, 0x14, 0x51, 0x45, - 0x79, 0x7, 0x80, 0x14, 0x51, 0x41, 0xa4, 0x21, 0xd1, 0xa3, - 0x4b, 0x22, 0xa2, 0x82, 0x49, 0xec, 0x2b, 0xd2, 0xbe, 0x1e, - 0xf8, 0x51, 0x8c, 0xe2, 0x69, 0xa2, 0x60, 0x31, 0xde, 0xb9, - 0x7f, 0x5, 0xe9, 0x1f, 0x6e, 0xd5, 0xa3, 0xc8, 0xc8, 0x1c, - 0xf4, 0xaf, 0x78, 0xb1, 0xb3, 0x4b, 0x38, 0x55, 0x15, 0x40, - 0xe3, 0xb0, 0xaf, 0xb5, 0xe1, 0xfc, 0xb1, 0x57, 0x7f, 0x58, - 0xa9, 0xb2, 0x3f, 0x45, 0xe1, 0x7c, 0x9d, 0x62, 0x25, 0xf5, - 0xaa, 0xbb, 0x45, 0xe8, 0x4b, 0x14, 0x4b, 0x12, 0xed, 0x40, - 00, 0x15, 0x26, 0x28, 0x14, 0xb5, 0xfa, 0x75, 0x8f, 0xd8, - 0x12, 0x49, 0x59, 0x5, 0x14, 0x51, 0x40, 0xc2, 0x8a, 0x28, - 0xa0, 0x4, 0x35, 0x4f, 0x54, 0x83, 0xed, 0x16, 0x8e, 0xb8, - 0xc9, 0xc5, 0x5c, 0x34, 0xc9, 0x7e, 0xe3, 0x7d, 0x2a, 0x27, - 0x15, 0x28, 0xb4, 0xc8, 0x9c, 0x54, 0xa2, 0xd3, 0x3c, 0x3, - 0xc6, 0x96, 0x82, 0xd7, 0x50, 0x2a, 0x6, 0x39, 0xe6, 0xb9, - 0xca, 0xee, 0xbe, 0x21, 0xdb, 0x84, 0xb8, 0x77, 0x3d, 0x79, - 0xae, 0x14, 0x74, 0xaf, 0xc4, 0xb3, 0x1a, 0x7e, 0xcf, 0x13, - 0x28, 0x9f, 0xce, 0x99, 0xb5, 0x3f, 0x65, 0x8c, 0x9c, 0x7c, - 0xc2, 0x8a, 0x28, 0xaf, 0x30, 0xf2, 0x2, 0x8a, 0x28, 0xa0, - 0xd, 0xbf, 0x8, 0x30, 0x5d, 0x55, 0x9, 0xe8, 0xd, 0x7b, - 0xfe, 0x97, 0x2f, 0x9b, 0x68, 0x87, 0xda, 0xbe, 0x78, 0xd0, - 0x18, 0xa5, 0xf2, 0x1, 0xdd, 0xab, 0xe8, 0x2d, 0x5, 0x71, - 0xa6, 0xc3, 0xf4, 0xaf, 0xd1, 0xb8, 0x5e, 0x5e, 0xe4, 0xa2, - 0x8f, 0xd6, 0x38, 0x32, 0x6d, 0xc2, 0x71, 0x34, 0x6a, 0x19, - 0xe5, 0x11, 0x44, 0xee, 0x4e, 00, 0x1d, 0x6a, 0x6a, 0xc8, - 0xf1, 0x2c, 0xff, 00, 0x67, 0xd2, 0xa5, 0x6c, 0xe0, 0xe2, - 0xbe, 0xe2, 0xac, 0xfd, 0x9c, 0x1c, 0xfb, 0x1f, 0xa3, 0x57, - 0xa9, 0xec, 0xa9, 0x4a, 0x7d, 0x91, 0xe3, 0x9e, 0x37, 0xd5, - 0x3e, 0xd7, 0xa8, 0xcb, 0xb5, 0x81, 0x19, 0x23, 0xf5, 0xae, - 0x48, 0x77, 0xab, 0xba, 0xa3, 0xf9, 0x97, 0x72, 0x31, 0x39, - 0xcb, 0x13, 0x54, 0xeb, 0xf0, 0xbc, 0x5d, 0x57, 0x5e, 0xbc, - 0xa6, 0xfb, 0x9f, 0xcd, 0xf8, 0xea, 0xd2, 0xc4, 0xe2, 0x25, - 0x52, 0x5d, 0xc2, 0x8a, 0x28, 0xae, 0x53, 0x84, 0x28, 0xa2, - 0x82, 0x70, 0x28, 0x6e, 0xc8, 0x46, 0xf7, 0x83, 0x74, 0xcf, - 0xed, 0xd, 0x49, 0x72, 0x85, 0x80, 0x3e, 0x95, 0xef, 0x1a, - 0x3d, 0x82, 0x58, 0xda, 0xaa, 0xaa, 0xe3, 0x8a, 0xf2, 0xaf, - 0x86, 0x4a, 0xa8, 0xfb, 0x8f, 0x52, 0x6b, 0xd8, 0xa3, 0xfb, - 0x80, 0xfb, 0x66, 0xbf, 0x52, 0xe1, 0xcc, 0x3c, 0x21, 0x87, - 0xf6, 0x9d, 0x59, 0xfb, 0x3f, 0x9, 0x61, 0x61, 0xc, 0x2f, - 0xb5, 0xea, 0xc7, 0xd2, 0xa, 0x5a, 0x2b, 0xec, 0x4f, 0xbf, - 0xa, 0x28, 0xa2, 0x80, 0x10, 0x8c, 0xd1, 0x4b, 0x45, 00, - 0x26, 0x33, 0x4c, 0x92, 0x25, 0x91, 0x70, 0xc0, 0x1f, 0xad, - 0x49, 0x48, 0x7a, 0x8a, 0x56, 0x13, 0x57, 0xd1, 0x99, 0xd0, - 0x69, 0x71, 0xc5, 0x39, 0x90, 0x28, 0x15, 0x2d, 0xc1, 0xa, - 0xd, 0x5b, 0x6e, 0x14, 0xd6, 0x75, 0xdb, 0xf0, 0x6a, 0x61, - 0x8, 0xc1, 0x5a, 0x24, 0x42, 0x9c, 0x69, 0xab, 0x45, 0x19, - 0x37, 0xaf, 0xd6, 0xb9, 0xbd, 0x42, 0x4f, 0xbd, 0x5b, 0x97, - 0xaf, 0xd6, 0xb9, 0xad, 0x49, 0xf1, 0x9a, 0xb3, 0x43, 0x3, - 0x52, 0x90, 0x73, 0xcd, 0x72, 0x3a, 0xac, 0x98, 0xd, 0xcd, - 0x74, 0x5a, 0x93, 0xf5, 0xae, 0x47, 0x57, 0x93, 00, 0xd0, - 0x7, 0x2b, 0xac, 0x4b, 0xf7, 0xb9, 0xaf, 0x25, 0xf8, 0x83, - 0x7f, 0xb6, 0x36, 0x19, 0x1d, 0x2b, 0xd3, 0x35, 0xa9, 0x71, - 0xba, 0xbc, 0x37, 0xe2, 0x45, 0xf7, 0x12, 0x63, 0x3c, 0xf, - 0x5a, 0xe3, 0xc5, 0x4b, 0x96, 0x9b, 0x38, 0x31, 0xb3, 0xe4, - 0xa2, 0xcf, 0x9f, 0xbe, 0x22, 0x5e, 0xf9, 0x92, 0xc8, 0x37, - 0x3, 0xcd, 0x79, 0x4e, 0xa9, 0x27, 0x26, 0xbb, 0x7f, 0x18, - 0xdc, 0xf9, 0xb7, 0x52, 0x72, 0x48, 0xc9, 0xaf, 0x3d, 0xd5, - 0x24, 0xeb, 0x5f, 0xf, 0xf, 0x7e, 0xa3, 0x67, 0xe7, 0x14, - 0xff, 00, 0x79, 0x59, 0xb3, 0x6, 0xf5, 0xb2, 0xc6, 0xb2, - 0xa7, 0x6e, 0xb5, 0x7e, 0xe9, 0xf9, 0x35, 0x99, 0x33, 0x63, - 0x9a, 0xf7, 0xe9, 0x2e, 0x87, 0xd4, 0x50, 0x89, 0xfa, 0x31, - 0xff, 00, 0x4, 0xe7, 0xf0, 0x44, 0xd1, 0x68, 0x9a, 0x6d, - 0xe4, 0xd6, 0xce, 0xa6, 0x7b, 0x87, 0xb8, 0x70, 0xc3, 0x39, - 0x8c, 0x64, 0x23, 0x7b, 0xf, 0x9a, 0xbf, 0x46, 0x61, 0x7e, - 0x3a, 0xd7, 0xcc, 0xbf, 0xb1, 0xe7, 0x84, 0x8f, 0x85, 0xfc, - 0x29, 0xd, 0xbb, 0x2a, 0xa7, 0xd8, 0xac, 0xe1, 0xb6, 0xe9, - 0xd4, 0xe0, 0xe7, 0xf9, 0x7e, 0xb5, 0xf4, 0xa4, 0x2f, 0xc0, - 0xaf, 0xa2, 0x82, 0xb4, 0x52, 0x3e, 0xae, 0x9a, 0xe5, 0x82, - 0x46, 0xa4, 0x2d, 0x56, 0x91, 0xab, 0x3e, 0x6, 0xcd, 0x5d, - 0x88, 0xd5, 0x96, 0x5d, 0x8d, 0xaa, 0xc2, 0x1c, 0xd5, 0x48, - 0xaa, 0xc2, 0x1e, 0x28, 0x2, 0xca, 0x1c, 0xa, 0x95, 0x4d, - 0x40, 0x3b, 0x54, 0xc9, 0x40, 0x13, 0x2b, 0x71, 0x4e, 0xa8, - 0xc7, 0x4a, 0x72, 0x9a, 00, 0x90, 0x1c, 0xd1, 0x48, 0x3a, - 0x52, 0xd0, 0x3, 0xe8, 0xa4, 0x7, 0x34, 0xb4, 00, 0xca, - 0x46, 0xa5, 0xa2, 0x80, 0x22, 0x26, 0xa3, 0x6a, 0x94, 0x8c, - 0x53, 0x18, 0xa, 00, 0x84, 0xf5, 0xa8, 0x65, 0x3c, 0x54, - 0xed, 0x55, 0xe5, 0x34, 0x1, 0x5a, 0x43, 0x55, 0x25, 0x3c, - 0x9a, 0xb3, 0x21, 0xaa, 0x72, 0x9a, 00, 0xf1, 0xff, 00, - 0xda, 0x8f, 0xc4, 0xcb, 0xe1, 0xcf, 0x83, 0x7a, 0xf3, 0x6f, - 0x65, 0x9e, 0xee, 0x31, 0x6b, 0x1a, 0xa9, 0xc6, 0xed, 0xec, - 0x15, 0x86, 0x71, 0xfd, 0xd2, 0x7a, 0xd7, 0x8a, 0xfe, 0xc6, - 0x7e, 0x18, 0x38, 0xbb, 0xd4, 0x59, 0x30, 0x32, 0x23, 0x53, - 0x8e, 0xbd, 0xf, 0xad, 0x68, 0xfe, 0xdd, 0x5e, 0x20, 0x2d, - 0xf, 0x86, 0x74, 0x8, 0xd9, 0x33, 0x24, 0xad, 0x74, 0xe0, - 0x7d, 0xe2, 00, 0x2b, 0x8f, 0xa6, 0x48, 0xaf, 0x4a, 0xfd, - 0x98, 0xfc, 0x34, 0x34, 0x7f, 0x3, 0x59, 0x12, 0x8, 0x79, - 0xbf, 0x78, 0x77, 0x2e, 0x3a, 0x81, 0xfe, 0x15, 0xf1, 0x93, - 0xff, 00, 0x6b, 0xce, 0x94, 0x7a, 0x53, 0x5f, 0x8b, 0x3f, - 0x3e, 0xab, 0xfe, 0xdd, 0xc4, 0x51, 0x8f, 0x4a, 0x51, 0xfc, - 0x59, 0xef, 0xfa, 0x3c, 0x3b, 0x62, 0x1f, 0x4a, 0xdd, 0x51, - 0x85, 0x15, 0x9d, 0xa7, 0x47, 0xb5, 0x14, 0x56, 0x95, 0x7d, - 0x99, 0xfa, 0x8, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x62, - 0x78, 0xc7, 0xc4, 0x31, 0x78, 0x63, 0xc3, 0xb7, 0xba, 0x84, - 0xcc, 0xa8, 0xb0, 0xc6, 0x5b, 0x2e, 0xc0, 0xc, 0xe2, 0x80, - 0x39, 0x9f, 0x8d, 0x3f, 0x14, 0x6c, 0xbe, 0x18, 0x78, 0x32, - 0xef, 0x54, 0x9e, 0x54, 0xf3, 0x15, 0x4e, 0xd5, 0xdd, 0x83, - 0xfc, 0x8d, 0x7e, 0x28, 0x7e, 0xd2, 0xff, 00, 0xb5, 0x9d, - 0xf7, 0xc4, 0x4d, 0x6a, 0xf0, 0x5b, 0xdd, 0x4c, 0x81, 0xb8, - 0xca, 0xbf, 0xb0, 0xe9, 0xf2, 0x8a, 0xef, 0x7f, 0x6d, 0x8f, - 0xda, 0xa6, 0xfb, 0xc5, 0x73, 0xdc, 0xe9, 0x96, 0xcd, 0x3, - 0x41, 0xbc, 0x8c, 0xab, 0x6, 0x27, 0x91, 0x5f, 0x7, 0xcb, - 0x23, 0xdd, 0xce, 0x5c, 0xf2, 0xcc, 0x68, 0x2, 0xed, 0xc7, - 0x88, 0xb5, 0xb, 0x87, 0x2c, 0xd7, 0x93, 0x36, 0x4f, 0x77, - 0x35, 0x7, 0xf6, 0xa5, 0xd1, 0xeb, 0x3b, 0x9f, 0xc6, 0x8f, - 0xec, 0xab, 0x9d, 0xbb, 0xbc, 0xb6, 0xc7, 0xae, 0xd, 0x57, - 0x8e, 0x32, 0xd2, 0xaa, 0x11, 0x82, 0x58, 0xf, 0xd6, 0x80, - 0x3e, 0x8a, 0xfd, 0x94, 0x7c, 0x39, 0x71, 0xe2, 0xf, 0x19, - 0xe9, 0xd1, 0xe4, 0x9d, 0xf2, 0x82, 0x49, 0x19, 0xe3, 0xf3, - 0xaf, 0xdb, 0xed, 0x56, 0x57, 0xf0, 0x2f, 0xc2, 0x4b, 0x24, - 0x8d, 0xbc, 0x81, 0x6f, 0x6a, 0x19, 0x9b, 0xf5, 0xf7, 0xf5, - 0xaf, 0xcc, 0x3f, 0xf8, 0x27, 0x4f, 0x80, 0x4e, 0xad, 0xe3, - 0x5b, 0x29, 0xb6, 0xbe, 0x23, 0x23, 0x9d, 0xa7, 0x1d, 0xab, - 0xf4, 0xc3, 0xf6, 0xa4, 0x65, 0xb1, 0xf8, 0x4b, 0xa8, 0x84, - 0x3b, 0x5b, 0xca, 0xda, 0x9, 0xec, 0x1, 0x1f, 0x99, 0xa0, - 0xf, 0xcd, 0x4f, 0x88, 0x1f, 0xb5, 0xb6, 0xa3, 0x6d, 0xe3, - 0x1b, 0xd8, 0x63, 0xbf, 0x90, 0x47, 0x1b, 0x1, 0x8f, 0x33, - 0xdb, 0xfd, 0xda, 0xf7, 0xcf, 0xd8, 0xff, 00, 0xe3, 0x85, - 0xef, 0x8d, 0xf5, 0xa3, 0x2c, 0xf7, 0x4f, 0x2a, 0x6f, 0xc0, - 0xcb, 0xf0, 0x3a, 0x7b, 0xa, 0xfc, 0xa5, 0xf8, 0xa7, 0xa7, - 0x9d, 0x3f, 0xc5, 0x57, 0x4, 0x12, 0x1e, 0x69, 0x19, 0x8e, - 0x7f, 0xa, 0xfb, 0xa3, 0xfe, 0x9, 0xdb, 0x6a, 0xc9, 0x7d, - 0xa7, 0xc0, 0xa4, 0x96, 0x91, 0xc1, 0x3c, 0x70, 0x32, 0x45, - 00, 0x7e, 0xc0, 0x69, 0x92, 0x99, 0xec, 0x61, 0x90, 0xe7, - 0xe6, 0x50, 0x79, 0xab, 0x55, 0x5b, 0x4f, 0x8b, 0xc9, 0xb2, - 0x85, 0x3f, 0xba, 0x80, 0x7e, 0x95, 0x34, 0x8d, 0xb5, 0x9, - 0xf6, 0xa0, 0xe, 0x27, 0xe2, 0x5, 0xf8, 0x8a, 0xd5, 0xc6, - 0x7b, 0x57, 0x88, 0xee, 0x2e, 0xec, 0xc7, 0xb9, 0xcd, 0x7a, - 0x47, 0xc4, 0xcb, 0xfc, 0x86, 0x40, 0x79, 0x3c, 0x57, 0x9b, - 0xa8, 0xc0, 0xaf, 0xc8, 0x33, 0xfa, 0xde, 0xdb, 0x16, 0xd7, - 0x63, 0xf0, 0x6e, 0x26, 0xc4, 0x7b, 0x6c, 0x73, 0x8f, 0x44, - 0x2d, 0x14, 0x51, 0x5f, 0x36, 0x7c, 0x98, 0x51, 0x45, 0x14, - 0x1, 0x77, 0x48, 0x9d, 0x6d, 0x6f, 0x16, 0x56, 0xed, 0x5e, - 0x91, 0xa6, 0x78, 0xfe, 0x2b, 0x68, 0x82, 0xf1, 0xf9, 0xff, - 00, 0xf5, 0xab, 0xca, 0xc1, 0xc5, 0x2f, 0x98, 0x71, 0xd2, - 0xbd, 0x4c, 0x1e, 0x61, 0x57, 0x5, 0xfc, 0x33, 0xd9, 0xc0, - 0x66, 0x95, 0xb2, 0xe5, 0xfb, 0xa3, 0xd9, 0x93, 0xe2, 0x44, - 0x18, 0xe4, 0x8f, 0xcf, 0xff, 00, 0xad, 0x49, 0x2f, 0xc4, - 0x68, 0x31, 0xd5, 0x7f, 0x3f, 0xfe, 0xb5, 0x78, 0xd7, 0x9a, - 0x7d, 0x29, 0x19, 0xb7, 0xf5, 0xaf, 0x5b, 0xfd, 0x62, 0xc5, - 0x58, 0xf6, 0xff, 00, 0xd6, 0xbc, 0x6d, 0xac, 0x7a, 0xad, - 0xe7, 0xc4, 0x8, 0xdd, 0x48, 0xd, 0x8f, 0xa1, 0xff, 00, - 0xeb, 0x57, 0x37, 0xa9, 0x78, 0xca, 0x59, 0x41, 0x9, 0x21, - 0xfc, 0xff, 00, 0xfa, 0xd5, 0xc5, 0xf9, 0x62, 0x94, 0x2e, - 0x2b, 0xcf, 0xad, 0x9b, 0xe2, 0x6b, 0x6e, 0xec, 0x79, 0xb5, - 0xf3, 0xec, 0x66, 0x23, 0x46, 0xec, 0x59, 0xba, 0xbf, 0x96, - 0xed, 0xc9, 0x76, 0x24, 0x1f, 0x7a, 0xaf, 0x45, 0x15, 0xe3, - 0xb9, 0x39, 0x3b, 0xb6, 0x7c, 0xfc, 0xa5, 0x29, 0xbb, 0xc9, - 0xea, 0x14, 0x51, 0x41, 0x38, 0xa9, 0x24, 0x29, 0xd1, 0xa3, - 0x4a, 0xe1, 0x14, 0x64, 0x9a, 0x48, 0xd4, 0xca, 0xc1, 0x54, - 0x12, 0x4d, 0x76, 0xfe, 0xd, 0xf0, 0x64, 0xb7, 0x37, 0x29, - 0x2c, 0xa1, 0x82, 0xfa, 0x62, 0xba, 0xf0, 0xb8, 0x5a, 0x98, - 0xba, 0x8a, 0x10, 0x47, 0x76, 0xb, 0x7, 0x57, 0x1d, 0x55, - 0x53, 0xa4, 0x8d, 0x1f, 0x87, 0x7e, 0x14, 0x32, 0xb1, 0x9a, - 0x55, 0xc0, 0xeb, 0xc8, 0xaf, 0x57, 0x86, 0x1, 0x6f, 0x10, - 0x45, 0xe8, 0x2a, 0xd, 0x3b, 0x4f, 0x8f, 0x4f, 0x80, 0x22, - 0xe, 0xd5, 0x72, 0xbf, 0x63, 0xcb, 0xb0, 0x30, 0xc0, 0xd1, - 0x50, 0x5b, 0x9f, 0xbe, 0xe5, 0x59, 0x74, 0x32, 0xea, 0xa, - 0x9c, 0x56, 0xbd, 0x40, 0xc, 0x52, 0xd1, 0x45, 0x7a, 0xa7, - 0xb4, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x21, - 0xac, 0xdd, 0x7a, 0xe3, 0xc8, 0xb2, 0x73, 0xd3, 0x83, 0x5a, - 0x58, 0xae, 0x53, 0xc7, 0x57, 0xa2, 0xdf, 0x4f, 0x93, 0xe9, - 0x5c, 0x78, 0xba, 0x9e, 0xca, 0x84, 0xa4, 0x70, 0x63, 0xaa, - 0xfb, 0x1c, 0x3c, 0xe7, 0xe4, 0x78, 0xaf, 0x88, 0x6e, 0x3e, - 0xd3, 0xab, 0xcc, 0xd9, 0xc8, 0xce, 0x2b, 0x3e, 0x9f, 0x33, - 0x99, 0x67, 0x91, 0xcf, 0x73, 0x4c, 0xaf, 0xc3, 0x2a, 0x4f, - 0xda, 0x4e, 0x53, 0x7d, 0x4f, 0xe6, 0xda, 0xb3, 0xf6, 0x95, - 0x25, 0x3e, 0xed, 0x85, 0x14, 0x51, 0x59, 0x99, 0x85, 0x3a, - 0x8, 0xfc, 0xeb, 0xa8, 0xd0, 0x73, 0xc8, 0xa6, 0xd5, 0xed, - 0x6, 0xf, 0xb4, 0x6a, 0x89, 0xc7, 0x2, 0xae, 0x11, 0xe7, - 0x9c, 0x63, 0xdd, 0x9a, 0x53, 0x8f, 0xb4, 0xa9, 0x18, 0xf7, - 0x67, 0xb0, 0xf8, 0x6, 0xc8, 0xc5, 0x2, 0x92, 0x3b, 0x57, - 0x6d, 0x58, 0x9e, 0x17, 0xb7, 0xf2, 0x6c, 0x14, 0xfa, 0x81, - 0x5b, 0x75, 0xfb, 0x86, 0x2, 0x97, 0xb2, 0xc3, 0xc6, 0x27, - 0xf4, 0x6e, 0x5b, 0x4b, 0xd8, 0xe1, 0x61, 0x11, 0x68, 0xa2, - 0x8a, 0xf4, 0xf, 0x50, 0x28, 0xa2, 0x8a, 00, 0x69, 0xae, - 0x4b, 0xe2, 0x1e, 0xa6, 0x2d, 0x34, 0x97, 0x8c, 0x1f, 0x99, - 0x81, 0xae, 0xb0, 0x9c, 0x3, 0x5e, 0x47, 0xf1, 0x4b, 0x52, - 0xf3, 0x2e, 0x4, 0x43, 0x9e, 0xdd, 0x6b, 0xc3, 0xce, 0x31, - 0x1f, 0x57, 0xc2, 0x49, 0xad, 0xde, 0x87, 0xce, 0x67, 0xf8, - 0xaf, 0xaa, 0xe0, 0x67, 0x25, 0xbb, 0xd0, 0xf3, 0xab, 0x89, - 0xc, 0xb3, 0x97, 0xf5, 0x34, 0xda, 0x5, 0x15, 0xf8, 0xc5, - 0xdb, 0x6d, 0xb3, 0xf9, 0xf6, 0xf7, 0x77, 0x61, 0x45, 0x14, - 0x50, 0x1, 0x4f, 0x82, 0x33, 0x35, 0xc4, 0x69, 0xea, 0x69, - 0x95, 0xaf, 0xe1, 0x8b, 0x33, 0x77, 0xaa, 0xc4, 0x30, 0x70, - 0x8, 0xad, 0xa9, 0x41, 0xd5, 0xa9, 0x18, 0x2e, 0xa6, 0xd4, - 0x69, 0xba, 0xd5, 0x63, 0x4d, 0x75, 0x67, 0xa6, 0xfc, 0x3d, - 0xd0, 0xc5, 0xb0, 0xf3, 0x98, 0x73, 0x8a, 0xf4, 0x11, 0x59, - 0x9a, 0x1d, 0xa0, 0xb6, 0xb3, 0x51, 0xed, 0x5a, 0x95, 0xfb, - 0x6e, 0x3, 0xe, 0xb0, 0xd4, 0x23, 0x4, 0x7f, 0x45, 0x65, - 0x98, 0x58, 0xe1, 0x30, 0xd1, 0xa7, 0x10, 0xa2, 0x8a, 0x2b, - 0xd0, 0x3d, 0x50, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 0x1, 0x8, 0xce, 0x29, 0x1c, 0x65, 0x48, 0xf6, 0xa7, 0x52, - 0x13, 0x80, 0x68, 0x13, 0x3c, 0x77, 0xe2, 0x87, 0x13, 0x95, - 0x3, 0xde, 0xbc, 0xf2, 0xbd, 0x17, 0xe2, 0x5a, 0xee, 0x9a, - 0x47, 0x3d, 0xab, 0xce, 0x57, 0xa5, 0x7e, 0x2f, 0x9c, 0xab, - 0x63, 0x66, 0x7f, 0x3e, 0xe7, 0xff, 00, 0xef, 0xf3, 0x16, - 0x8a, 0x28, 0xaf, 0x10, 0xf9, 0xd0, 0xa2, 0x8a, 0x28, 0x3, - 0x5f, 0xc2, 0xf1, 0x79, 0xba, 0xb4, 0x43, 0xd0, 0xe6, 0xbe, - 0x82, 0xd2, 0x6, 0x2c, 0x90, 0x7a, 0xa, 0xf0, 0x2f, 0x8, - 0xf, 0xf8, 0x99, 0x6e, 0xf4, 0x35, 0xef, 0x7a, 0x38, 0x3f, - 0x63, 0x43, 0xed, 0x5f, 0xa3, 0x70, 0xba, 0xf7, 0x24, 0xcf, - 0xd6, 0x78, 0x35, 0x5a, 0x9c, 0xd9, 0x7e, 0xb9, 0x6f, 0x1e, - 0x4f, 0xb3, 0x4a, 0x65, 0xee, 0x41, 0xae, 0xa6, 0xb8, 0x5f, - 0x88, 0x92, 0x11, 0x9, 0x51, 0xd3, 0x15, 0xf5, 0x59, 0x94, - 0xf9, 0x30, 0xb3, 0x67, 0xda, 0x66, 0xd5, 0x3d, 0x9e, 0xe, - 0xa3, 0xf2, 0x3c, 0x66, 0xf4, 0xff, 00, 0xa4, 0x11, 0xef, - 0x50, 0xd3, 0xa6, 0x6d, 0xf7, 0x32, 0x1f, 0x73, 0x4d, 0xaf, - 0xc4, 0x5b, 0xbb, 0x67, 0xf3, 0x9c, 0x9d, 0xe4, 0xc2, 0x8a, - 0x28, 0xa9, 0x10, 0x50, 0x7a, 0x51, 0x45, 0x2, 0x3a, 0xff, - 00, 0x5, 0x6a, 0x2b, 0x6b, 0x74, 0x8a, 0x4e, 0x5, 0x7b, - 0x65, 0x85, 0xec, 0x57, 0x70, 0xa9, 0x46, 0x7, 0x8a, 0xf9, - 0xae, 0xce, 0xe3, 0xec, 0xb2, 0x86, 0xcd, 0x7a, 0x47, 0x84, - 0x3c, 0x66, 0x23, 0x65, 0x88, 0x95, 0x23, 0xdd, 0xab, 0xee, - 0x72, 0x2c, 0xd2, 0x34, 0x57, 0xb1, 0xa9, 0xd4, 0xfd, 0x27, - 0x86, 0x73, 0x88, 0x61, 0xff, 00, 0xd9, 0xea, 0xbd, 0x19, - 0xea, 0xf4, 0x56, 0x7d, 0x86, 0xae, 0x97, 0xa0, 0x74, 0x19, - 0xf4, 0x35, 0x7f, 0x76, 0x47, 0x15, 0xfa, 0x3c, 0x67, 0x19, - 0xab, 0xc5, 0x9f, 0xac, 0xc2, 0xa4, 0x6a, 0x2e, 0x68, 0xbb, - 0x8b, 0x45, 0x20, 0x34, 0x3, 0x9a, 0xb3, 0x41, 0x68, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x64, 0xa7, 0xb, 0x59, - 0x37, 0x8f, 0xd7, 0xeb, 0x5a, 0x73, 0x9e, 0x2b, 0x1a, 0xf5, - 0xba, 0xd0, 0x6, 0x3d, 0xf3, 0xf0, 0x6b, 0x97, 0xd4, 0xa4, - 0xc1, 0x6a, 0xe8, 0xaf, 0x5f, 0x83, 0x5c, 0xa6, 0xa7, 0x27, - 0x2d, 0x40, 0x1c, 0xee, 0xa5, 0x27, 0x5a, 0xe3, 0xf5, 0x89, - 0x78, 0x6a, 0xe9, 0xf5, 0x17, 0xfb, 0xdc, 0xd7, 0x19, 0xac, - 0x4b, 0xf7, 0xa8, 0x3, 0x90, 0xd7, 0xe7, 0x9, 0x14, 0x86, - 0xbe, 0x77, 0xf8, 0x97, 0x7e, 0x2, 0xcb, 0xce, 0x3a, 0xd7, - 0xba, 0x78, 0xae, 0xe7, 0xcb, 0xb5, 0x90, 0xd7, 0xcc, 0xff, - 00, 0x13, 0x2f, 0xf3, 0xe6, 0x8c, 0x8e, 0xfd, 0xeb, 0xc5, - 0xcc, 0xa7, 0xcb, 0x4e, 0xc7, 0xcf, 0x66, 0xf5, 0x39, 0x69, - 0xd8, 0xf1, 0x3f, 0x10, 0xdc, 0x19, 0x27, 0x94, 0xfb, 0xd7, - 0x11, 0xa9, 0xc9, 0x9c, 0xd7, 0x53, 0xac, 0x4b, 0x9d, 0xe7, - 0xd4, 0xd7, 0x1b, 0xa9, 0x49, 0x92, 0x45, 0x7c, 0xbe, 0x16, - 0x37, 0x77, 0x3e, 0x37, 0x5, 0x1b, 0xbb, 0x99, 0x17, 0xd, - 0xd6, 0xb6, 0x7e, 0x19, 0x68, 0x5f, 0xf0, 0x94, 0xfc, 0x43, - 0xd0, 0xf4, 0xc3, 0xf7, 0x2e, 0x2e, 0x55, 0x5c, 0xe3, 0x38, - 0x5e, 0xe7, 0x1d, 0xeb, 0xa, 0x76, 0xaf, 0x60, 0xfd, 0x91, - 0xbc, 0x38, 0x75, 0xaf, 0x8a, 0xf1, 0x5e, 0xb0, 0x26, 0x1b, - 0x8, 0x9a, 0x43, 0xb4, 0x7f, 0x11, 0x7, 0x6f, 0x3f, 0x51, - 0x5f, 0x4b, 0x42, 0x37, 0x92, 0x3e, 0xbb, 0xd, 0x1b, 0xc9, - 0x1f, 0xae, 0x9f, 0x5, 0xb4, 0xef, 0xec, 0xff, 00, 0x7, - 0xc5, 0x21, 0x3f, 0x34, 0xcc, 0x5b, 0xa7, 0x6e, 0xd5, 0xe8, - 0xf0, 0xb7, 0x4e, 0x6b, 0x9a, 0xf0, 0x85, 0x8a, 0xe9, 0x5e, - 0x1f, 0xb1, 0xb5, 0x4, 0x9f, 0x2e, 0x20, 0x9, 0x3d, 0xeb, - 0xa2, 0x81, 0xb9, 0xaf, 0x74, 0xfa, 0x53, 0x4e, 0x3, 0xfc, - 0xea, 0xf4, 0x47, 0x26, 0xb3, 0xad, 0xdb, 0x35, 0x7a, 0x23, - 0xcd, 00, 0x5d, 0x8c, 0x8a, 0xb2, 0x95, 0x52, 0x3a, 0xb3, - 0x19, 0xe2, 0x80, 0x2d, 0x27, 0x5a, 0x95, 0x7a, 0x54, 0x11, - 0xe3, 0x19, 0xab, 0x9, 0x40, 0x12, 0x2d, 0x3d, 0x69, 0x8b, - 0x52, 0xe, 0x94, 00, 0xa3, 0x93, 0x4e, 0xa6, 0xaf, 0x5a, - 0x75, 00, 0x39, 0x69, 0x69, 0xa0, 0xd3, 0xa8, 0x1, 0x94, - 0x87, 0xa5, 0x2d, 0x23, 0x50, 0x3, 0x1b, 0x93, 0x51, 0xb1, - 0xa7, 0x31, 0xc8, 0xa6, 0x35, 00, 0x44, 0xf5, 0x5e, 0x53, - 0x53, 0xc9, 0x55, 0x65, 0xa0, 0xa, 0xf2, 0x9a, 0xa7, 0x29, - 0xab, 0x32, 0x1a, 0xc8, 0xd7, 0x75, 0x18, 0x74, 0xad, 0x36, - 0xea, 0xee, 0x79, 0x52, 0x8, 0xa1, 0x8c, 0xb3, 0x4b, 0x21, - 0xc0, 0x5a, 0x99, 0x4b, 0x96, 0x2e, 0x4f, 0xa1, 0x32, 0x92, - 0x84, 0x5c, 0x9f, 0x43, 0xe1, 0x1f, 0x8e, 0xba, 0xb7, 0xfc, - 0x2c, 0x4f, 0xda, 0x2a, 0x5b, 0x3b, 0x6d, 0xd2, 0x5b, 0x5b, - 0x4b, 0x15, 0x9a, 0x7, 0x18, 0xc3, 00, 0xa1, 0xfa, 0x76, - 0xdc, 0xd, 0x7d, 0xb7, 0xf0, 0xef, 0x49, 0x1a, 0x76, 0x8b, - 0x65, 0x6e, 0x10, 0x28, 0x8e, 0x35, 0x5c, 0x1, 0xc7, 0x41, - 0x5f, 0xa, 0x7c, 00, 0xb5, 0x97, 0xc7, 0x7f, 0x16, 0x1b, - 0x58, 0xba, 0x3e, 0x64, 0x92, 0xdc, 0x35, 0xdb, 0xee, 0xe7, - 0x92, 0x73, 0xef, 0x5f, 0xa1, 0xbe, 0x1d, 0xb6, 0x11, 0xc2, - 0x83, 00, 0x60, 0x1, 0xc5, 0x7c, 0x7e, 0x42, 0x9d, 0x6a, - 0xb5, 0xf1, 0x6f, 0xed, 0x4b, 0x4f, 0x44, 0x7c, 0x17, 0xc, - 0xc5, 0xe2, 0x2b, 0x62, 0x71, 0xd2, 0xfb, 0x72, 0x69, 0x7a, - 0x23, 0xa5, 0xb4, 0x5c, 0xa, 0xb5, 0x51, 0x40, 0x30, 0xb5, - 0x2d, 0x7d, 0x91, 0xf7, 0xe1, 0x45, 0x14, 0x50, 0x3, 0x59, - 0x82, 0x82, 0x4f, 0x40, 0x33, 0x5f, 0x12, 0xfe, 0xde, 0xdf, - 0xb4, 0x4, 0x5e, 0x18, 0xf0, 0x16, 0xa3, 0xa6, 0xdb, 0x5d, - 0x98, 0xa5, 0x2a, 0xc3, 0xe5, 0xc6, 0x3a, 0x11, 0xfd, 0x2b, - 0xec, 0x1f, 0x18, 0xea, 0x83, 0x46, 0xf0, 0xdd, 0xfd, 0xde, - 0x9, 0x29, 0x13, 0x11, 0x8f, 0xa1, 0xaf, 0xc4, 0x9f, 0xdb, - 0xc3, 0xe2, 0x75, 0xc6, 0xbb, 0xac, 0x5d, 0x5a, 0x99, 0x1f, - 0x69, 0x90, 0x8c, 0x6e, 0x38, 0x1c, 0x9f, 0x7a, 00, 0xf8, - 0xff, 00, 0x58, 0xd5, 0x2e, 0x35, 0xfd, 0x4d, 0xe4, 0x92, - 0x67, 0x99, 0xe5, 0x93, 0xab, 0x9c, 0xe7, 0x26, 0xbe, 0x8d, - 0xf8, 0x1d, 0xfb, 0x1a, 0x6b, 0xff, 00, 0x12, 0x5e, 0xda, - 0x78, 0x6c, 0xdd, 0xc4, 0x9d, 0x39, 0x6c, 0x77, 0xf4, 0x5a, - 0xf1, 0x8f, 0x84, 0x3e, 0xf, 0x6f, 0x16, 0x78, 0xbb, 0x4a, - 0xb5, 0xca, 0x81, 0x2d, 0xd4, 0x6b, 0x96, 0x19, 0x1f, 0x7b, - 0xe9, 0x5f, 0xd0, 0x7f, 0xc1, 0x9f, 0x83, 0x5a, 0x57, 0xc3, - 0x1f, 0x9, 0xd8, 0xf9, 0x70, 0x42, 0x66, 0x48, 0x43, 0x16, - 0x11, 0xa8, 0x39, 0x39, 0x3e, 0x83, 0xd6, 0x80, 0x3f, 0x24, - 0xfe, 0x33, 0xfe, 0xca, 0x17, 0xbf, 0xb, 0x7c, 0x3b, 0x3d, - 0xd5, 0xdd, 0xba, 0xc5, 0xe5, 0x8c, 0x64, 0x93, 0xe9, 0xee, - 0xa2, 0xbe, 0x37, 0xd2, 0x2d, 0x3e, 0xdd, 0xaf, 0xa4, 0x6a, - 0x3, 0xf, 0x34, 0x7b, 0x77, 0xaf, 0xd4, 0xdf, 0xf8, 0x29, - 0x7f, 0xc4, 0x21, 0xa7, 0x78, 0x6d, 0xec, 0xa3, 0x53, 0xba, - 0x42, 0x78, 0x5e, 0x9c, 0xfa, 0xf3, 0x5f, 0x9a, 0x9f, 0xa, - 0x74, 0x93, 0xaa, 0xf8, 0x92, 0xdc, 0x1e, 0x73, 0x22, 0x81, - 0xf9, 0x8f, 0xf1, 0xa0, 0xf, 0xd6, 0xff, 00, 0xf8, 0x26, - 0x97, 0x80, 0x3e, 0xc5, 0xa4, 0x49, 0xaa, 0x49, 00, 0xc8, - 0x1c, 0x39, 0x1e, 0xc3, 0xa5, 0x7b, 0xe7, 0xed, 0x77, 0xaa, - 0x45, 0xf, 0x82, 0x66, 0xb7, 0x91, 0x88, 0x1b, 0x72, 0x40, - 0xfc, 0x2a, 0x4f, 0xd8, 0xd3, 0xc2, 0x9, 0xe1, 0x8f, 0x85, - 0x36, 0xaf, 0xb5, 0x43, 0xcd, 0xb4, 0xe4, 0xc, 0x7f, 0x8, - 0xaf, 0x22, 0xfd, 0xbb, 0xbc, 0x72, 0xba, 0x5e, 0x81, 0xa8, - 0xae, 0xf2, 0xa1, 0x17, 0x6f, 0xca, 0x79, 0xed, 0xd3, 0x9a, - 00, 0xfc, 0x72, 0xf8, 0xbb, 0x7d, 0x1e, 0xa1, 0xf1, 0x2, - 0xec, 0x45, 0x83, 0x1a, 0x3e, 0x3a, 0xd7, 0xe8, 0x57, 0xfc, - 0x13, 0x7, 0x42, 0x93, 0x56, 0xd7, 0xe3, 0xba, 0x64, 0xd, - 0x14, 0xc, 0x31, 0x9f, 0xba, 0x31, 0x8f, 0xd6, 0xbf, 0x34, - 0x2f, 0xee, 0x9b, 0x56, 0xf1, 0xd, 0xc4, 0xe4, 0x92, 0x5e, - 0x42, 0x79, 0x39, 0xaf, 0xd9, 0x4f, 0xf8, 0x25, 0xff, 00, - 0x80, 0xce, 0x8f, 0xe0, 0x73, 0xa8, 0xb8, 0x5, 0xdd, 0x7a, - 0x81, 0xeb, 0x8f, 0x6e, 0xb4, 0x1, 0xf7, 0xc8, 0x18, 0x2, - 0xab, 0x6a, 0x33, 0x79, 0x36, 0xce, 0x7d, 0xaa, 0xc7, 0x6a, - 0xc6, 0xf1, 0x2d, 0xc8, 0xb7, 0xb2, 0x3c, 0xf6, 0xac, 0x2b, - 0xcd, 0x53, 0xa6, 0xe4, 0x73, 0x62, 0x2a, 0x7b, 0x2a, 0x52, - 0x9b, 0xe8, 0x78, 0xc7, 0x8f, 0x2f, 0x4d, 0xce, 0xa5, 0xb3, - 0x39, 00, 0xd7, 0x37, 0x57, 0x35, 0xab, 0x8f, 0xb5, 0x6a, - 0x73, 0x37, 0x3c, 0x1c, 0x55, 0x3a, 0xfc, 0x37, 0x15, 0x53, - 0xda, 0xd7, 0x9c, 0xdf, 0x73, 0xf9, 0xbf, 0x1b, 0x55, 0xd7, - 0xc4, 0xce, 0x6f, 0xb8, 0x51, 0x45, 0x15, 0xca, 0x71, 0x85, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x82, 0x8a, 0x28, 0xa0, 0x61, 0x45, 0x14, 0xaa, 0x37, - 0x11, 0x40, 0x87, 0x2c, 0x32, 0x49, 0xf7, 0x17, 0x35, 0xa3, - 0x61, 0xa0, 0xdc, 0xdd, 0x38, 0x6, 0x23, 0x8a, 0xe8, 0xbc, - 0x1f, 0xa6, 0xc3, 0x73, 0x22, 0xef, 0x40, 0xd9, 0xaf, 0x56, - 0xd3, 0xfc, 0x3f, 0x67, 0x4, 0x2a, 0xc2, 0x15, 0xce, 0x3d, - 0x5, 0x7d, 0x66, 0x5b, 0x92, 0x3c, 0x62, 0xf6, 0x8d, 0xe8, - 0x7d, 0xc6, 0x53, 0xc3, 0xaf, 0x1f, 0x15, 0x52, 0x52, 0xd0, - 0xe2, 0x3c, 0x39, 0xf0, 0xed, 0xe, 0xd9, 0x24, 0x8d, 0x78, - 0xe7, 0x9a, 0xf4, 0x5b, 0xd, 0x3e, 0x2b, 0x18, 0x42, 0x46, - 0xa1, 0x70, 0x3b, 0xa, 0x9d, 0x23, 0x58, 0x86, 0xd5, 0x18, - 0x1e, 0xd5, 0x20, 0xaf, 0xd1, 0x30, 0x78, 0xa, 0x38, 0x38, - 0xda, 0x9a, 0xd4, 0xfd, 0x5f, 0x1, 0x96, 0x61, 0xf2, 0xf8, - 0xda, 0x94, 0x75, 0x13, 0xaf, 0x14, 0xea, 0x28, 0xaf, 0x4c, - 0xf5, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x4, 0x63, 0x81, 0x5e, 0x65, 0xf1, 0x42, - 0xff, 00, 0x65, 0xb1, 0x4c, 0xf5, 0xe3, 0x15, 0xe9, 0x53, - 0xb0, 0x48, 0xc9, 0x35, 0xe2, 0x3f, 0x12, 0xaf, 0xfc, 0xeb, - 0xc1, 0x18, 0x27, 0xad, 0x7c, 0xce, 0x7f, 0x5b, 0xd9, 0x61, - 0x1a, 0xee, 0x7c, 0x7f, 0x13, 0xe2, 0x3d, 0x8e, 0x6, 0x4b, - 0xb9, 0xc5, 0x8e, 0x94, 0x51, 0x45, 0x7e, 0x44, 0x7e, 0x12, - 0x82, 0x8a, 0x28, 0xa0, 0x60, 0x4e, 0x1, 0x35, 0xd2, 0x78, - 0x1a, 0xcf, 0xce, 0xbc, 0xdf, 0x8c, 0xf3, 0x5c, 0xd3, 0x9e, - 0x3d, 0xeb, 0xd1, 0x3e, 0x1b, 0xd8, 0xef, 0x2a, 0x71, 0xd6, - 0xbd, 0x4c, 0xb2, 0x97, 0xb6, 0xc5, 0xc5, 0x1e, 0xce, 0x4f, - 0x47, 0xdb, 0xe3, 0x61, 0x13, 0xd5, 0xf4, 0xc8, 0xbc, 0x9b, - 0x38, 0xc7, 0xb7, 0xf4, 0xab, 0x62, 0x99, 0x1a, 0x6d, 0x40, - 0x5, 0x49, 0x5f, 0xb6, 0x41, 0x72, 0xc5, 0x23, 0xfa, 0x26, - 0x11, 0xe5, 0x8a, 0x41, 0x45, 0x14, 0x55, 0x96, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x25, 0xf2, 0x2d, 0x9d, 0xf3, 0x8c, - 0xa, 0xf0, 0x1f, 0x18, 0xdf, 0x1b, 0xbd, 0x5a, 0x4e, 0x73, - 0x83, 0x5e, 0xd3, 0xe2, 0xcb, 0xc1, 0x6d, 0xa6, 0xca, 0x73, - 0x8e, 0x3b, 0x57, 0xcf, 0xf7, 0xf3, 0x19, 0xef, 0x25, 0x7c, - 0xe7, 0x2c, 0x6b, 0xf3, 0xee, 0x27, 0xaf, 0x65, 0x1a, 0x49, - 0x9f, 0x97, 0x71, 0x96, 0x26, 0xca, 0x14, 0x13, 0x2b, 0xd1, - 0x45, 0x15, 0xf9, 0xe9, 0xf9, 0x58, 0x51, 0x45, 0x14, 00, - 0x1e, 0x95, 0xdf, 0xfc, 0x2d, 0xd3, 0x3e, 0xd5, 0x74, 0xf2, - 0x11, 0x9d, 0xa4, 0x73, 0x5c, 0xa, 0xae, 0xe6, 0x2, 0xbd, - 0x8f, 0xe1, 0x2d, 0x8f, 0x95, 0xa6, 0xcd, 0x21, 0x1c, 0x96, - 0xe2, 0xbe, 0x87, 0x22, 0xa3, 0xed, 0xb1, 0xb1, 0xbe, 0xc8, - 0xfa, 0xae, 0x19, 0xc3, 0xfd, 0x63, 0x30, 0x8d, 0xd6, 0x8b, - 0x53, 0xbe, 0x8e, 0x31, 0x1a, 0x80, 0x38, 0x2, 0xa4, 0xa4, - 0xc5, 0x2d, 0x7e, 0xc2, 0x7e, 0xf4, 0x95, 0xb4, 0xa, 0x28, - 0xa2, 0x98, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x4, 0xef, 0x51, 0xcc, 0xdb, 0x63, 0x6f, 0xa5, 0x4b, 0x55, - 0xef, 0x1b, 0x6c, 0xe, 0x6a, 0x64, 0xec, 0x9b, 0x22, 0x6e, - 0xd1, 0x6c, 0xf1, 0xff, 00, 0x89, 0x13, 0x81, 0x23, 0x2e, - 0x7a, 0xf1, 0x5c, 0x8, 0xe9, 0x5d, 0x4f, 0x8f, 0xee, 0xbc, - 0xed, 0x4c, 0xa8, 0xe9, 0x9f, 0xf1, 0xae, 0x5a, 0xbf, 0x12, - 0xcc, 0xe7, 0xed, 0x31, 0x73, 0x67, 0xf3, 0xbe, 0x73, 0x53, - 0xda, 0x63, 0x66, 0xd0, 0x51, 0x45, 0x15, 0xe5, 0x9e, 0x28, - 0x50, 0x68, 0xa0, 0xf4, 0xa0, 0xe, 0x87, 0xc1, 0x51, 0x19, - 0x2f, 0xd4, 0x1, 0x9c, 0xb5, 0x7b, 0xed, 0x82, 0x79, 0x76, - 0xb1, 0xaf, 0xb5, 0x78, 0xb7, 0xc3, 0x6b, 0x4f, 0x3b, 0x51, - 0x4e, 0x3a, 0x57, 0xb7, 0xa0, 0xc2, 0x81, 0xe9, 0x5f, 0xa9, - 0x70, 0xd5, 0x3e, 0x5c, 0x33, 0x91, 0xfb, 0x37, 0x7, 0xd1, - 0xe5, 0xc2, 0x39, 0xf7, 0x1d, 0x5c, 0x2f, 0xc4, 0x48, 0x8a, - 0x59, 0x3b, 0x9f, 0x43, 0x5d, 0xd5, 0x72, 0x5e, 0x3b, 0xb7, - 0x33, 0xd8, 0x95, 0x3, 0x23, 0x15, 0xee, 0xe6, 0x51, 0xe7, - 0xc2, 0xcd, 0x1f, 0x4d, 0x9b, 0xc3, 0x9f, 0x7, 0x51, 0x2e, - 0xc7, 0x83, 0xb0, 0xc3, 0xb7, 0xd6, 0x92, 0xa6, 0xbd, 0x4f, - 0x2e, 0xed, 0xd7, 0x18, 00, 0xd4, 0x35, 0xf8, 0x8b, 0x56, - 0x93, 0x47, 0xf3, 0xa4, 0x97, 0x2c, 0x9a, 0x61, 0x45, 0x14, - 0x52, 0x10, 0x51, 0x45, 0x14, 00, 0x11, 0x9a, 0x96, 0xda, - 0xf1, 0xad, 0x24, 0xc, 0x99, 0xcf, 0xb5, 0x45, 0x45, 0x34, - 0xda, 0x77, 0x40, 0x9b, 0x8b, 0xbc, 0x77, 0x3a, 0x9d, 0x27, - 0xc6, 0x97, 0x36, 0xec, 0x3e, 0x76, 0x15, 0xda, 0xe9, 0x7e, - 0x39, 0x69, 0x2, 0x87, 0x90, 0xfe, 0x38, 0xaf, 0x20, 0xcb, - 0xe, 0x86, 0xa5, 0x8e, 0xfa, 0xe2, 0x36, 0xf9, 0x5c, 0x8f, - 0xc6, 0xbd, 0xac, 0x2e, 0x71, 0x5f, 0xf, 0xa3, 0x6d, 0xa3, - 0xe8, 0xf0, 0x79, 0xee, 0x27, 0x9, 0xa3, 0x93, 0x68, 0xfa, - 0x2f, 0x4c, 0xd6, 0xe2, 0xbb, 0x41, 0x99, 0x6, 0x7e, 0xb5, - 0xa8, 0xb2, 0xa3, 0xf4, 0x60, 0x7e, 0x86, 0xbe, 0x7d, 0xd2, - 0xbc, 0x4d, 0x77, 0x6e, 0xc3, 0x32, 0x9f, 0xcc, 0xff, 00, - 0x8d, 0x76, 0xda, 0x1f, 0x8c, 0xcb, 0x32, 0x89, 0x1c, 0xe3, - 0xeb, 0xff, 00, 0xd7, 0xaf, 0xba, 0xc1, 0x67, 0xd4, 0xab, - 0x25, 0x19, 0xe8, 0xcf, 0xd2, 0x32, 0xfe, 0x26, 0xa3, 0x88, - 0x4a, 0x35, 0x34, 0x67, 0xa7, 0xd1, 0x59, 0x36, 0x1a, 0xed, - 0xbd, 0xd2, 0xf, 0x9b, 0x9f, 0xad, 0x6a, 0x2b, 0xac, 0x8b, - 0x90, 0x72, 0x2b, 0xea, 0xa1, 0x52, 0x35, 0x15, 0xe2, 0xcf, - 0xb5, 0xa7, 0x56, 0x15, 0x55, 0xe0, 0xee, 0x3a, 0x8a, 0x29, - 0xf, 0x4a, 0xd0, 0xd4, 0xab, 0x72, 0xdc, 0x1a, 0xc5, 0xbc, - 0x7e, 0xb5, 0xad, 0x74, 0xdc, 0x1a, 0xc2, 0xbd, 0x6c, 0x66, - 0x80, 0x31, 0xaf, 0x9f, 0x86, 0xae, 0x4b, 0x53, 0x93, 0x96, - 0xae, 0x9a, 0xfd, 0xfe, 0x53, 0x5c, 0x86, 0xa6, 0xfc, 0xb7, - 0xd6, 0x80, 0x39, 0xed, 0x4a, 0x4e, 0x1a, 0xb8, 0x9d, 0x62, - 0x5f, 0xbd, 0x5d, 0x66, 0xab, 0x2f, 0x6, 0xb8, 0x7d, 0x66, - 0x5f, 0xbd, 0x40, 0x1e, 0x77, 0xe3, 0xab, 0xcf, 0x2e, 0xd9, - 0xc6, 0xec, 0x7f, 0x91, 0x5f, 0x2e, 0xfc, 0x49, 0xbf, 0xdc, - 0xee, 0x3, 0x73, 0x5f, 0x42, 0xfc, 0x45, 0xbd, 0x28, 0x92, - 0x2e, 0x4e, 00, 0xff, 00, 0xa, 0xf9, 0x6f, 0xc7, 0x97, - 0x9e, 0x65, 0xd1, 00, 0xf1, 0xef, 0x5f, 0x2b, 0x9a, 0xcf, - 0xa1, 0xf1, 0x39, 0xdd, 0x5e, 0x88, 0xf3, 0xdd, 0x56, 0x4c, - 0x2b, 0x57, 0x21, 0x7e, 0xf9, 0x63, 0x5d, 0x36, 0xab, 0x27, - 0xc8, 0xd5, 0xc9, 0x5e, 0x3f, 0x26, 0xbc, 0xfc, 0x24, 0x74, - 0x3c, 0xcc, 0x14, 0x74, 0x33, 0xe7, 0x3c, 0x1a, 0xfa, 0xff, - 00, 0xfe, 0x9, 0xf7, 0xe1, 0x44, 0xbf, 0xbb, 0xd4, 0xef, - 0x9a, 0xdc, 0x39, 0xb9, 0xb9, 0x8a, 0xd7, 0x79, 0x52, 0x70, - 0x17, 0x24, 0xfb, 0x7f, 0x15, 0x7c, 0x79, 0x3b, 0x57, 0xe9, - 0x57, 0xfc, 0x13, 0xf3, 0xc2, 0x46, 0xc3, 0xc1, 0x7a, 0x1d, - 0xcb, 0xc6, 0x11, 0xe7, 0xf3, 0xae, 0x64, 0x52, 0x39, 0xce, - 0xf7, 0x55, 0x3d, 0x3d, 0x14, 0x57, 0xd2, 0xe1, 0x63, 0xef, - 0x5c, 0xfa, 0xfc, 0x14, 0x7d, 0xeb, 0x9f, 0x72, 0x41, 0x91, - 0x81, 0xe8, 0x2a, 0xfc, 0x24, 0xf1, 0x59, 0xf0, 0xe7, 0xd6, - 0xaf, 0xc2, 0x78, 0x15, 0xea, 0x9e, 0xd1, 0xa3, 0x5, 0x5e, - 0x84, 0xf4, 0xac, 0xfb, 0x7c, 0xd5, 0xf8, 0x4f, 0x2, 0x80, - 0x2e, 0xc4, 0x78, 0xab, 0x51, 0xf4, 0xaa, 0x90, 0xd5, 0xb8, - 0xce, 0x28, 0x2, 0xc2, 0xa, 0x9d, 0x2a, 0x4, 0x3c, 0x8a, - 0x99, 0xe, 0x7b, 0x50, 0x4, 0xa3, 0x9a, 0x91, 0x6a, 0x35, - 0xed, 0x52, 0x2d, 00, 0x3d, 0x69, 0x69, 0x1, 0xe2, 0x96, - 0x80, 0x14, 0x75, 0xa5, 0xcd, 0x36, 0x8a, 00, 0x29, 0xa4, - 0xd3, 0x8d, 0x46, 0xd4, 00, 0xc3, 0xe9, 0x4c, 0x63, 0x4f, - 0x3d, 0x6a, 0x26, 0x34, 0x1, 0x1c, 0x87, 0x8a, 0xab, 0x23, - 0x71, 0x56, 0x64, 0x38, 0xaa, 0x92, 0x9a, 00, 0xab, 0x2b, - 0x57, 0x87, 0xfe, 0xd6, 0x9e, 0x32, 0x8b, 0xc3, 0x1f, 0x7, - 0xf5, 0x5b, 0x7c, 0x31, 0xb9, 0xd5, 0x31, 0x69, 0xe, 0xd6, - 0x20, 0xa9, 0x24, 0x12, 0xdd, 0x3b, 0x7f, 0x5a, 0xf6, 0xd9, - 0x8e, 0x2b, 0xe2, 0xaf, 0xdb, 0x8b, 0xc4, 0x8d, 0xa8, 0xf8, - 0xc7, 0xc3, 0x5e, 0x1c, 0x42, 0x7, 0xd9, 0x22, 0x7b, 0x99, - 00, 0xce, 0x4f, 0x98, 0x50, 0x2f, 0xfe, 0x8b, 0x6a, 0xf1, - 0x73, 0x9c, 0x47, 0xd5, 0xb0, 0x35, 0x26, 0xb7, 0x6a, 0xcb, - 0xe6, 0x7c, 0xf6, 0x7f, 0x8a, 0xfa, 0x9e, 0x5d, 0x56, 0xa2, - 0xdd, 0xab, 0x2f, 0x9e, 0x86, 0xaf, 0xec, 0x75, 0xe0, 0xf6, - 0x8a, 0xd2, 0x7d, 0x51, 0xf6, 0xfc, 0xe7, 0x62, 0xf1, 0xce, - 0x32, 0x3f, 0xc2, 0xbe, 0xce, 0xd2, 0x21, 0xd9, 0x12, 0xd7, - 0x8a, 0x7e, 0xcf, 0x7e, 0x1a, 0x1a, 0x27, 0x82, 0x74, 0xe8, - 0xb6, 0x6d, 0x2c, 0xa1, 0xcf, 0x39, 0xeb, 0xff, 00, 0xeb, - 0xaf, 0x77, 0xb0, 0x8f, 0x6a, 0xa8, 0x14, 0x64, 0xf8, 0x7f, - 0xab, 0x60, 0xa1, 0xe, 0xb6, 0xb8, 0x64, 0x18, 0x55, 0x84, - 0xcb, 0xa9, 0x43, 0xab, 0x57, 0xfb, 0xcd, 0x4, 0x18, 0x51, - 0x4e, 0xa2, 0x8a, 0xf6, 0x8f, 0xa1, 0xa, 0x28, 0xa4, 0x3d, - 0x28, 0x3, 0xc6, 0xff, 00, 0x6a, 0xf, 0x16, 0xa7, 0x87, - 0x3e, 0x1e, 0xdd, 0x47, 0xf3, 0xee, 0x94, 0x1f, 0xb9, 0xe9, - 0xb4, 0xf7, 0xaf, 0xc1, 0x8f, 0xda, 0x2f, 0xc4, 0xff, 00, - 0xf0, 0x90, 0x78, 0xe2, 0xed, 0x6, 0xed, 0xab, 0x21, 0xea, - 0x73, 0xdc, 0xd7, 0xed, 0x17, 0xed, 0xb5, 0x75, 0x2a, 0xf8, - 0x3a, 0xf6, 0x4c, 0x8f, 0x2e, 0x28, 0xcf, 0xfe, 0x82, 0x6b, - 0xf0, 0x8f, 0xc7, 0x77, 0xe7, 0x51, 0xf1, 0x6e, 0xa3, 0x3e, - 0xed, 0xe0, 0xce, 0xc0, 0x1c, 0x7a, 0x13, 0x40, 0x1f, 0x50, - 0x7e, 0xc1, 0xde, 0xc, 0x4f, 0x10, 0x7c, 0x4f, 0xd1, 0x53, - 0x6a, 0x1f, 0x2a, 0x65, 0x90, 0x96, 0x1d, 0x31, 0x9a, 0xfd, - 0xc9, 0xf1, 0x5d, 0xf2, 0xe9, 0x5a, 0x4, 0xc7, 0xd1, 0x30, - 0x31, 0x5f, 0x85, 0x9f, 0xb0, 0xcf, 0x8e, 0x17, 0xc2, 0x9e, - 0x39, 0xb7, 0xbb, 0x99, 0xc4, 0x59, 0x91, 0x57, 0x79, 0x19, - 0xf5, 0xed, 0x5f, 0xae, 0x1f, 0x14, 0x7e, 0x33, 0x68, 0x3, - 0xc0, 0xb2, 0x3a, 0xea, 0x4a, 0xf2, 0x8b, 0x72, 0xc4, 0x8, - 0xd8, 0x64, 0xfa, 0x74, 0xa0, 0xf, 0xc9, 0xff, 00, 0xf8, - 0x28, 0x87, 0xc4, 0x65, 0xf1, 0x1f, 0x8f, 0xe, 0x99, 0x11, - 0x93, 0x11, 0x36, 0x58, 0x13, 0xc1, 0xae, 0x23, 0xf6, 0x47, - 0xf0, 0x2c, 0xbe, 0x25, 0xf1, 0xa6, 0x95, 0x12, 0x95, 0x1, - 0xee, 0x23, 0x24, 0xb0, 0xe3, 0x1b, 0x96, 0xbc, 0xef, 0xe3, - 0xc7, 0x89, 0x4f, 0x8c, 0x3e, 0x29, 0x6a, 0x17, 0xb, 0x28, - 0x9a, 0x22, 0xe1, 0x50, 0xa8, 0xc0, 0xaf, 0xb3, 0xff, 00, - 0xe0, 0x9d, 0x9e, 0x16, 0xb0, 0x6f, 0x16, 0x58, 0x5e, 0x5d, - 0x30, 0x55, 0x85, 0x91, 0x89, 0x24, 0x80, 0x30, 0x54, 0xd0, - 0x7, 0xea, 0xc7, 0x86, 0xed, 0xe2, 0xf0, 0x27, 0xc3, 0x8b, - 0x75, 0x97, 0x1, 0x2d, 0xad, 0x83, 0x36, 0xc1, 0x81, 0xf7, - 0x6b, 0xf2, 0x43, 0xf6, 0xf1, 0xf8, 0xf9, 0x6b, 0xe2, 0x29, - 0xf5, 0x1b, 0x2b, 0x4f, 0x3f, 0x73, 0x48, 0x54, 0x92, 0x7b, - 0x64, 0x57, 0xd8, 0x7f, 0xb6, 0x4f, 0xed, 0x61, 0x6b, 0xe1, - 0x3f, 0x8, 0xea, 0x1a, 0x4e, 0x97, 0x77, 0x13, 0x13, 0x19, - 0x52, 0x76, 0x1e, 0xc0, 0x8f, 0xee, 0xd7, 0xe2, 0xe7, 0x8d, - 0x7c, 0x5d, 0x71, 0xe2, 0xbd, 0x4a, 0xe2, 0xe6, 0x79, 0x37, - 0x99, 0x24, 0x2e, 0x4f, 0x4c, 0x93, 0xf8, 0x50, 0x4, 0xdf, - 0xe, 0xb4, 0x19, 0xbc, 0x4b, 0xe2, 0x9b, 0x4b, 0x48, 0xb1, - 0xba, 0x49, 0x54, 0x73, 0xcf, 0x7a, 0xfe, 0x84, 0xbf, 0x65, - 0x1f, 0x1, 0x1f, 0x3, 0xfc, 0x2b, 0xd2, 0xed, 0xdc, 0x26, - 0xe7, 0x8c, 0x11, 0xb5, 0x71, 0xc6, 0x2b, 0xf1, 0xf7, 0xf6, - 0x6, 0xf8, 0x42, 0xde, 0x37, 0xf8, 0x83, 0x5, 0xc4, 0x90, - 0x99, 0x12, 0x12, 0x8d, 0xf7, 0xb1, 0xd7, 0x77, 0x3d, 0x7d, - 0xab, 0xf7, 0x83, 0x47, 0xb0, 0x4d, 0x33, 0x4b, 0xb5, 0xb5, - 0x8c, 0x61, 0x62, 0x8c, 0x28, 0xfc, 0xa8, 0x2, 0xe1, 0xe9, - 0x5c, 0x37, 0x8f, 0xf5, 0x11, 0x5, 0x9c, 0xbd, 0x78, 0x6, - 0xbb, 0x79, 0x1b, 0x64, 0x6c, 0x7d, 0x5, 0x78, 0xf7, 0xc4, - 0xad, 0x40, 0x90, 0xc8, 0xf, 0x53, 0x8a, 0xf0, 0x33, 0x9c, - 0x47, 0xb0, 0xc2, 0xb3, 0xe5, 0xf8, 0x87, 0x13, 0xf5, 0x6c, - 0x14, 0x9f, 0x73, 0xcf, 0x59, 0xbc, 0xc9, 0x19, 0xfd, 0x4e, - 0x68, 0xa4, 0x5f, 0xba, 0x29, 0x6b, 0xf1, 0xb3, 0xf0, 0x1b, - 0xdf, 0x50, 0xa2, 0x8a, 0x28, 0x18, 0x51, 0x45, 0x48, 0x96, - 0xd2, 0xcc, 0x3f, 0x76, 0xb9, 0xa6, 0x93, 0x7b, 0x2, 0x4d, - 0xe8, 0x88, 0xe8, 0xa9, 0xbf, 0xb3, 0xae, 0xc7, 0xfc, 0xb3, - 0xa6, 0x35, 0xa5, 0xc2, 0x75, 0x43, 0x4f, 0x96, 0x6b, 0x74, - 0xca, 0xe4, 0x9a, 0xde, 0x2c, 0x65, 0x14, 0x6d, 0x75, 0x3f, - 0x32, 0xe2, 0x8a, 0x92, 0x7d, 0x42, 0x8a, 0x28, 0xa0, 0x2, - 0x94, 0x36, 0xd3, 0x9a, 0x4a, 0x28, 0x3, 0x7f, 0xc3, 0xfe, - 0x25, 0x6d, 0x3e, 0x75, 0x1, 0x9, 0xfa, 0x1a, 0xf6, 0xbf, - 0xd, 0xea, 0xff, 00, 0xda, 0x96, 0x6a, 0xc7, 0x83, 0x8e, - 0x84, 0xd7, 0xce, 0xab, 0x95, 0x91, 0x48, 0xf5, 0xaf, 0x5a, - 0xf8, 0x6d, 0x7e, 0xd2, 0xe1, 0x4b, 0x70, 0x2b, 0xed, 0x38, - 0x7b, 0x1d, 0x52, 0x35, 0xbd, 0x8c, 0x9e, 0x87, 0xe8, 0x3c, - 0x2b, 0x99, 0x54, 0x8d, 0x7f, 0xab, 0xc9, 0xe8, 0xcf, 0x4b, - 0xc5, 0x2d, 0x20, 0xe9, 0x4b, 0x5f, 0xa7, 0x9f, 0xb2, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x26, 0x78, 0xa5, 0xa4, 0x3d, 0x28, 0x2, 0x8e, - 0xad, 0x70, 0x20, 0xb5, 0x66, 0xf6, 0x35, 0xf3, 0xff, 00, - 0x8a, 0x6f, 0x3e, 0xd7, 0xab, 0x48, 0x7b, 0x3, 0xde, 0xbd, - 0xa3, 0xc6, 0x97, 0x9f, 0x67, 0xd3, 0xe4, 0x39, 0xc7, 0x15, - 0xe0, 0x97, 0x12, 0x19, 0xae, 0x65, 0x73, 0xd4, 0xb5, 0x7e, - 0x71, 0xc4, 0xf5, 0xef, 0x28, 0xd2, 0x47, 0xe4, 0xdc, 0x65, - 0x89, 0xbc, 0xa1, 0x41, 0x7a, 0x91, 0xd1, 0x45, 0x15, 0xf0, - 0x67, 0xe6, 0x61, 0x45, 0x14, 0x50, 0x20, 0x55, 0xf3, 0x26, - 0x8d, 0x7, 0x52, 0x6b, 0xd9, 0xfe, 0x1e, 0xe9, 0xc6, 0x18, - 0x51, 0xbd, 0x5, 0x79, 0x16, 0x8f, 0xf, 0x9f, 0xa8, 0xc6, - 0x7, 0x63, 0x5e, 0xf9, 0xe1, 0x2b, 0x51, 0xd, 0x8a, 0x9c, - 0x60, 0xe2, 0xbe, 0xc7, 0x86, 0xa8, 0x7b, 0x4a, 0xce, 0xa3, - 0xe8, 0x7d, 0xff, 00, 0x8, 0xe1, 0xbd, 0xa6, 0x21, 0xd5, - 0x7d, 0xd, 0xfa, 0x5a, 0x28, 0xaf, 0xd4, 0x8f, 0xd9, 0xc2, - 0x8a, 0x28, 0xa0, 0x2, 0x92, 0x8a, 0x6b, 0xb6, 0x10, 0x9a, - 0x4f, 0x41, 0x37, 0x63, 0x80, 0xf8, 0x95, 0xa9, 0xfd, 0x9e, - 0xc1, 0x97, 0x9e, 0x7d, 0xeb, 0xc6, 0xf3, 0xb8, 0x93, 0xeb, - 0x5e, 0x81, 0xf1, 0x3e, 0xf3, 0x7c, 0xfe, 0x5e, 0x7b, 0xf4, - 0xaf, 0x3f, 0x1d, 0x2b, 0xf1, 0xec, 0xf2, 0xb3, 0xad, 0x8c, - 0x92, 0xec, 0x7e, 0x9, 0xc4, 0x98, 0x8f, 0x6f, 0x8f, 0x92, - 0xed, 0xa0, 0x51, 0x45, 0x15, 0xf3, 0xc7, 0xcb, 0x5, 0x14, - 0x51, 0x43, 0xd8, 0xb, 0x16, 0x51, 0x19, 0x27, 0x51, 0xeb, - 0x5e, 0xf9, 0xe0, 0x7b, 0x1f, 0xb0, 0xe8, 0xa8, 0xa7, 0x92, - 0x79, 0xaf, 0x13, 0xf0, 0xdd, 0xbf, 0xda, 0x2f, 0xe2, 0x5c, - 0x67, 0x9a, 0xfa, 0xb, 0x4b, 0x84, 0x41, 0x65, 0x12, 0x1, - 0xd1, 0x45, 0x7d, 0xff, 00, 0xb, 0xd0, 0xf7, 0xa7, 0x54, - 0xfd, 0x43, 0x83, 0x70, 0xfe, 0xf4, 0xeb, 0x76, 0xd0, 0xb6, - 0x69, 0x68, 0xa2, 0xbf, 0x44, 0x3f, 0x55, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0x10, - 0xd6, 0x6e, 0xb7, 0x70, 0x2d, 0xec, 0xdc, 0x9f, 0x43, 0x5a, - 0x75, 0xca, 0x78, 0xea, 0xef, 0xc8, 0xd3, 0xe4, 0xe7, 0xb5, - 0x71, 0xe2, 0xea, 0x7b, 0x2a, 0x12, 0x97, 0x91, 0xc1, 0x8e, - 0xab, 0xec, 0x70, 0xf3, 0x9f, 0x64, 0x78, 0xb7, 0x88, 0xae, - 0xbe, 0xd7, 0xaa, 0xca, 0xdd, 0x81, 0x35, 0x9b, 0x4f, 0x99, - 0xbc, 0xc9, 0xe4, 0x73, 0xd4, 0xb1, 0x34, 0xca, 0xfc, 0x36, - 0xa4, 0xfd, 0xa4, 0xe5, 0x37, 0xd4, 0xfe, 0x6e, 0xad, 0x37, - 0x56, 0xa4, 0xa6, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0x23, 0x20, - 0xa5, 0x3, 0x26, 0x92, 0x9d, 0x1f, 0x2e, 0x5, 0x1b, 0xe8, - 0x1b, 0xe8, 0x7a, 0x7f, 0xc2, 0x6b, 0x2f, 0x32, 0x59, 0x65, - 0x3d, 0x16, 0xbd, 0x50, 0xa, 0xe1, 0x7e, 0x15, 0xda, 0x79, - 0x3a, 0x54, 0x92, 0xe3, 0x96, 0x35, 0xdd, 0xe, 0xa6, 0xbf, - 0x67, 0xc9, 0x69, 0xfb, 0x3c, 0x14, 0x17, 0x73, 0xfa, 0x7, - 0x87, 0xe9, 0x7b, 0x1c, 0xba, 0x9a, 0xef, 0xa8, 0xb5, 0x9d, - 0xac, 0xda, 0xb, 0xab, 0x39, 0x17, 0x19, 0x38, 0xad, 0x1a, - 0x6b, 0x28, 0x2a, 0x41, 0xe8, 0x6b, 0xd9, 0x9c, 0x54, 0xe2, - 0xe2, 0xfa, 0x9f, 0x41, 0x52, 0xa, 0xa4, 0x1c, 0x1f, 0x53, - 0xe7, 0x7f, 0x14, 0xe9, 0x6f, 0x63, 0x78, 0xf9, 0x23, 0x96, - 0xed, 0x58, 0x60, 0xe6, 0xbd, 0x87, 0xc7, 0x5e, 0x1c, 0x49, - 0x23, 0x79, 0x82, 0xe5, 0xb9, 0xef, 0x5e, 0x47, 0x75, 0x6e, - 0xf6, 0xf2, 0x95, 0xda, 0x47, 0x35, 0xf8, 0xce, 0x6b, 0x82, - 0x96, 0x12, 0xbb, 0xd3, 0x46, 0x7f, 0x3f, 0x67, 0x79, 0x7c, - 0xf0, 0x38, 0x97, 0xa6, 0x8c, 0x8a, 0x8a, 0x28, 0xaf, 0x14, - 0xf9, 0xf0, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x1, - 0x69, 0x28, 0xa2, 0x80, 0x10, 0x83, 0xd8, 0xe2, 0x9f, 0x14, - 0xb2, 0xc4, 0x72, 0x24, 0x61, 0xf8, 0xd3, 0x68, 0xa3, 0x6d, - 0x50, 0x2d, 0x35, 0x47, 0x41, 0xa4, 0x78, 0xad, 0xac, 0x1d, - 0x77, 0xb3, 0xb7, 0xe2, 0x6b, 0xd4, 0xfc, 0x2b, 0xe3, 0x48, - 0xb5, 0x28, 0xfc, 0xb0, 0x87, 0x23, 0xb9, 0x35, 0xe1, 0x64, - 0xa, 0xd4, 0xd1, 0x35, 0x89, 0x6c, 0x2e, 0x6, 0xd3, 0x81, - 0x9a, 0xfa, 0x1c, 0xb7, 0x36, 0xad, 0x84, 0xa8, 0xa3, 0x27, - 0xee, 0x9f, 0x55, 0x94, 0xe7, 0xb5, 0xb0, 0x55, 0x14, 0x64, - 0xef, 0x13, 0xe9, 0x4, 0x90, 0x48, 0xa0, 0x8e, 0x86, 0x89, - 0x1b, 0xb, 0x5c, 0x9f, 0x84, 0xbc, 0x43, 0xf6, 0xe8, 0x57, - 0x7b, 0x73, 0x8e, 0xf5, 0xd4, 0x48, 0xfb, 0x97, 0x39, 0xaf, - 0xd6, 0x30, 0xf8, 0x88, 0x62, 0x29, 0xa9, 0xc4, 0xfd, 0xbf, - 0x9, 0x8a, 0x86, 0x2e, 0x92, 0xa9, 0xe, 0xa5, 0x1b, 0xb9, - 0x38, 0x35, 0x85, 0x7e, 0xfc, 0x1a, 0xd6, 0xbc, 0x6e, 0xb5, - 0x83, 0x7c, 0xfc, 0x9a, 0xea, 0x3b, 0xc, 0x4d, 0x46, 0x4c, - 0x29, 0xae, 0x43, 0x52, 0x97, 0x96, 0xfa, 0xd7, 0x4d, 0xa9, - 0x3f, 0x6, 0xb8, 0xfd, 0x4a, 0x4e, 0x5b, 0xeb, 0x40, 0x1c, - 0xe6, 0xaf, 0x2e, 0x33, 0x5c, 0x2e, 0xb5, 0x3f, 0xd, 0x5d, - 0x6e, 0xb1, 0x2f, 0xde, 0xaf, 0x3f, 0xf1, 0x1d, 0xcf, 0x97, - 0x6f, 0x29, 0xcf, 0x6a, 0x4d, 0xd9, 0x5c, 0x4d, 0xd9, 0x5c, - 0xf1, 0xaf, 0x89, 0x3a, 0x98, 0xb, 0x37, 0x5f, 0xf3, 0x8a, - 0xf9, 0x9b, 0xc5, 0x37, 0x66, 0x6b, 0xd9, 0xf, 0x6a, 0xf6, - 0xcf, 0x89, 0x3a, 0x9f, 0x33, 0xc, 0xd7, 0xcf, 0xda, 0xcc, - 0xfb, 0xe6, 0x90, 0xe7, 0xa9, 0xaf, 0x85, 0xc7, 0xd4, 0xe7, - 0xa9, 0x63, 0xf3, 0x5c, 0xd2, 0xa7, 0xb4, 0xad, 0x63, 0x99, - 0xd5, 0xa5, 0xf9, 0x1a, 0xb9, 0x6b, 0x97, 0xce, 0x6b, 0x7b, - 0x56, 0x93, 0x2a, 0xd5, 0xcd, 0xdc, 0x1c, 0xe6, 0xba, 0x70, - 0xd1, 0xb2, 0x3b, 0x70, 0x91, 0xb4, 0x48, 0x60, 0xb5, 0x6b, - 0xfb, 0xeb, 0x6b, 0x68, 0xf1, 0xbe, 0x69, 0x16, 0x35, 0xcf, - 0xa9, 0x20, 0xf, 0xe7, 0x5f, 0xb2, 0x7f, 0xb3, 0x7, 0x86, - 0x6, 0x83, 0xe1, 0x28, 0xd7, 0x6a, 0x2a, 0xc5, 0x4, 0x70, - 00, 00, 0x18, 0x60, 0x37, 0x1c, 0x7f, 0xdf, 0x55, 0xf9, - 0x3b, 0xf0, 0x4b, 0xc3, 0x6b, 0xe2, 0xdf, 0x8a, 0xde, 0x1f, - 0xd3, 0xdc, 0x6e, 0x8c, 0xce, 0x66, 0x3c, 0xe3, 0x1b, 0x14, - 0xb8, 0xee, 0x3b, 0xa8, 0xaf, 0xda, 0xf, 0x85, 0xda, 0x77, - 0xd8, 0x3c, 0x27, 0x6a, 0x48, 0xc3, 0xca, 0x59, 0xc8, 0xfc, - 0x48, 0x1f, 0xa6, 0x2b, 0xe9, 0x70, 0xd1, 0xb4, 0x5b, 0x3e, - 0xbb, 0x7, 0x1b, 0x45, 0xb3, 0xb8, 0x87, 0xa0, 0xab, 0xf0, - 0xf6, 0xaa, 0x30, 0x91, 0xc6, 0x6a, 0xf4, 0x18, 0xcd, 0x76, - 0x9e, 0x81, 0xa1, 0x6f, 0xf5, 0xab, 0xf1, 0xe, 0x95, 0x46, - 0xd6, 0xb4, 0x22, 0xc5, 00, 0x5b, 0x84, 0x1a, 0xb4, 0x83, - 0xa5, 0x55, 0x88, 0x71, 0x56, 0xa3, 0x18, 0xc5, 00, 0x59, - 0x41, 0x53, 0x20, 0xe2, 0xa0, 0x41, 0xc5, 0x4c, 0xbc, 0x1a, - 00, 0x99, 0x45, 0x48, 0x3a, 0x54, 0x4a, 0x4d, 0x48, 0xf, - 0x34, 00, 0xe1, 0xd6, 0x9d, 0x48, 0xb4, 0xb4, 00, 0x53, - 0xb1, 0x48, 0x3a, 0xd3, 0xa8, 0x2, 0x36, 0xa8, 0xc9, 0xe6, - 0x9e, 0x7a, 0xd4, 0x6c, 0x68, 0x1, 0x87, 0xa5, 0x46, 0xdd, - 0xaa, 0x46, 0xa8, 0x98, 0xe4, 0x50, 0x4, 0x32, 0x1a, 0xab, - 0x21, 0xe2, 0xac, 0x49, 0x55, 0x65, 0xa0, 0xa, 0x93, 0x9e, - 0x3a, 0xe2, 0xbf, 0x3b, 0xfc, 0x79, 0x7e, 0x3e, 0x24, 0xfe, - 0xd1, 0x5a, 0x9c, 0xd6, 0xf9, 0x7b, 0x53, 0x72, 0x91, 0x42, - 0x5f, 0xae, 0xc5, 0x51, 0xe9, 0xef, 0x9f, 0x5a, 0xfb, 0xcb, - 0xc7, 0xba, 0xfa, 0x78, 0x67, 0xc2, 0x1a, 0xc6, 0xa8, 0xf2, - 0x88, 0xbe, 0xc9, 0x6b, 0x24, 0xa1, 0x89, 0x3, 0x90, 0xa7, - 0x18, 0xcf, 0x72, 0x6b, 0xe1, 0x7f, 0xd9, 0x77, 0x43, 0x6f, - 0x10, 0xfc, 0x40, 0x96, 0xfe, 0x60, 0x66, 0xd8, 0x4c, 0xac, - 0xf2, 0x2, 0x4e, 0x49, 0x3f, 0xaf, 0x15, 0xf1, 0xb9, 0xfc, - 0x9d, 0x6a, 0x94, 0x30, 0x8b, 0xed, 0x4a, 0xef, 0xe4, 0x7c, - 0x7, 0x13, 0xc9, 0xd7, 0xab, 0x86, 0xc0, 0xc7, 0xed, 0xca, - 0xef, 0xe4, 0x7d, 0xdb, 0xe0, 0xad, 0x38, 0x59, 0x69, 0xf6, - 0xf0, 0x85, 00, 0x22, 0x81, 0x8f, 0xc2, 0xbb, 0xcb, 0x45, - 0xc0, 0xae, 0x7f, 0x42, 0xb7, 0x11, 0xc2, 0xbd, 0xb0, 0x2b, - 0xa5, 0xb7, 0x5c, 0x2d, 0x7d, 0x7c, 0x22, 0xa3, 0x15, 0x15, - 0xd0, 0xfb, 0xc8, 0x45, 0x42, 0xa, 0x2b, 0xa1, 0x35, 0x14, - 0x51, 0x56, 0x58, 0x52, 0x52, 0xd1, 0x40, 0x1f, 0x29, 0x7e, - 0xdf, 0xf3, 0x18, 0x7e, 0x16, 0x5d, 0x45, 0x1f, 0xfa, 0xc9, - 0x54, 0xff, 00, 0xe8, 0x2d, 0xd6, 0xbf, 0x7, 0xfc, 0x5b, - 0x6c, 0x6d, 0x75, 0x9b, 0x84, 0x63, 0x96, 0x2e, 0x4b, 0x1f, - 0x7c, 0x9a, 0xfe, 0x85, 0xff, 00, 0x6a, 0xef, 0x6, 0x45, - 0xe2, 0x7f, 0x1, 0x5f, 0x49, 0x2a, 0x9, 0x56, 0x18, 0x89, - 0x8, 0x47, 0x4, 0xed, 0x3e, 0xd5, 0xf8, 0x21, 0xf1, 0x97, - 0x40, 0x9f, 0x4c, 0xf1, 0x86, 0xa6, 0xcf, 0xf, 0x94, 0x82, - 0x76, 0x55, 0xe3, 0x1c, 0x66, 0x80, 0x39, 0x8f, 0xc, 0x78, - 0x92, 0xf7, 0x42, 0xd4, 0x21, 0x96, 0xda, 0xe1, 0xa1, 0xd8, - 0xc0, 0xe4, 00, 0x6b, 0xd7, 0xf5, 0xbf, 0xda, 0x3, 0x5a, - 0xd4, 0x34, 0x39, 0x6d, 0xa4, 0xd5, 0x26, 0x90, 0x3a, 0x6d, - 0xdb, 0xb5, 0x7a, 0x7a, 0x74, 0xaf, 0x4, 0xe9, 0x4e, 0xf3, - 0x1b, 0x18, 0xdc, 0x71, 0xe9, 0x9a, 00, 0xb0, 0x6e, 0xda, - 0x7b, 0xf3, 0x3c, 0x87, 0x73, 0x16, 0xdc, 0x7d, 0xeb, 0xd9, - 0xbe, 0x1d, 0x7c, 0x6b, 0xd5, 0x3c, 0x7, 0x67, 0x21, 0xb1, - 0xbb, 0x78, 0x58, 0xa1, 0x1f, 0x2e, 0x3d, 0x3d, 0xc1, 0xaf, - 0xf, 0xa7, 0x9, 0x5c, 0xc, 0x6, 0x38, 0xa0, 0xe, 0xe7, - 0xc7, 0x9f, 0x16, 0xf5, 0xcf, 0x1c, 0x5c, 0xca, 0xda, 0x85, - 0xdb, 0xce, 0xac, 0x7f, 0x88, 0x2f, 0x4f, 0xc0, 0xf, 0x5a, - 0xe3, 0xf4, 0xdd, 0x36, 0x6d, 0x4a, 0xea, 0x28, 0x62, 0x42, - 0xec, 0xec, 0x14, 0x62, 0xaa, 0xe0, 0xb1, 0xe9, 0x5f, 0x57, - 0xfe, 0xc9, 0xbf, 0xb3, 0x5d, 0xd7, 0xc4, 0x4d, 0x57, 0x4d, - 0xbe, 0x92, 0xdd, 0x9e, 0xdf, 0xcc, 0xc, 0x4e, 0xc2, 0x72, - 0x39, 0xff, 00, 0x64, 0xd0, 0x7, 0xdf, 0x5f, 0xf0, 0x4d, - 0xbf, 0x82, 0x6d, 0xe1, 0x8d, 0x12, 0x4d, 0x52, 0xee, 0xd9, - 0x11, 0x9d, 0x50, 0xa8, 0x7, 0xa6, 0x37, 0xff, 00, 0x8d, - 0x7d, 0xfa, 0x3a, 0x57, 0x23, 0xf0, 0xc3, 0xc1, 0x16, 0x7e, - 0x5, 0xf0, 0xad, 0x9e, 0x9f, 0x6b, 0x6e, 0x96, 0xe5, 0x63, - 0x1, 0x82, 0x80, 0x32, 0x79, 0xeb, 0xc0, 0xf5, 0xae, 0xba, - 0x80, 0x2a, 0x6a, 0x72, 0x88, 0xad, 0x5c, 0xe7, 0xb5, 0x78, - 0x37, 0x8e, 0x2f, 0x3e, 0xd3, 0xa9, 0x6d, 0x1c, 0xe0, 0x93, - 0x5e, 0xcf, 0xe2, 0x8b, 0x9f, 0x22, 0xc9, 0x86, 0x71, 0xc1, - 0x35, 0xe0, 0x5a, 0xc4, 0xff, 00, 0x69, 0xd4, 0xa5, 0x6c, - 0xf4, 0x35, 0xf9, 0xff, 00, 0x13, 0xd7, 0xb4, 0x63, 0x49, - 0x1f, 0x97, 0x71, 0x8e, 0x26, 0xd1, 0x8d, 0x14, 0x54, 0x1c, - 0x51, 0x45, 0x15, 0xf9, 0xe1, 0xf9, 0x50, 0x51, 0x45, 0x14, - 00, 0x60, 0xb1, 0x3, 0xd4, 0xd7, 0xa6, 0xf8, 0x43, 0xc3, - 0x2, 0xe2, 0xd9, 0x19, 0xa3, 0x7, 0x38, 0xeb, 0x5e, 0x75, - 0xa6, 0x40, 0x6e, 0x2f, 0xe2, 0x4e, 0xbf, 0x30, 0xeb, 0x5e, - 0xff, 00, 0xe1, 0x4b, 0x51, 0x5, 0x92, 0xc, 0x63, 00, - 0x57, 0xd5, 0xf0, 0xfe, 0xe, 0x38, 0x9a, 0xae, 0x53, 0x5a, - 0x23, 0xee, 0x38, 0x5b, 0x3, 0x1c, 0x5d, 0x79, 0x4e, 0x6b, - 0x44, 0x51, 0x1e, 0x10, 0x8b, 0xfe, 0x78, 0x8a, 0xa7, 0x7f, - 0xe0, 0xf8, 0xcc, 0x4d, 0xb6, 0x2e, 0x71, 0x5d, 0xc6, 0x29, - 0xa, 0x82, 0x30, 0x79, 0x1e, 0x95, 0xfa, 0x24, 0xb2, 0xec, - 0x3c, 0x95, 0xac, 0x7e, 0xab, 0x3c, 0xab, 0xd, 0x28, 0xdb, - 0x94, 0xf0, 0x7f, 0x11, 0x78, 0x66, 0x6b, 0x56, 0x66, 0x11, - 0xe0, 0x57, 0x28, 0xc8, 0x50, 0xe1, 0xba, 0x8a, 0xfa, 0xf, - 0xc5, 0x1a, 0x32, 0xde, 0x5a, 0x3e, 0xd4, 0x5e, 0x9e, 0x95, - 0xe1, 0x9a, 0xe5, 0x9f, 0xd9, 0x2f, 0x9d, 0x3d, 0xd, 0x7e, - 0x6d, 0x9d, 0x65, 0xdf, 0x53, 0x9f, 0x34, 0x76, 0x67, 0xe4, - 0x9c, 0x43, 0x94, 0xfd, 0x42, 0xa7, 0x3c, 0x36, 0x66, 0x75, - 0x14, 0x51, 0x5f, 0x32, 0x7c, 0x70, 0x51, 0x45, 0x14, 00, - 0x8e, 0x70, 0xb5, 0xe8, 0x9f, 0xd, 0xa6, 0xf2, 0x98, 0x28, - 0xfb, 0xc6, 0xbc, 0xf0, 0x8c, 0xd7, 0x71, 0xf0, 0xd9, 0x8b, - 0x6a, 0x4a, 0xf, 0xdd, 0x6, 0xbd, 0x9c, 0xa2, 0x5c, 0xb8, - 0xc8, 0x1e, 0xf6, 0x45, 0x3e, 0x5c, 0x7c, 0x2d, 0xd4, 0xf6, - 0xd5, 0xfb, 0xa2, 0x96, 0x9a, 0xad, 0x90, 0x29, 0xd5, 0xfb, - 0x51, 0xfd, 0xc, 0x82, 0x8a, 0x28, 0xa0, 0x61, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x4d, 0x3c, 0xa, 0x75, - 0x47, 0x29, 0xdb, 0x1b, 0x1a, 0x4, 0xcf, 0x3d, 0xf8, 0x97, - 0x7e, 0x12, 0xc9, 0x97, 0x38, 0x3c, 0xd7, 0x8f, 0xe, 0x71, - 0x5d, 0xe7, 0xc4, 0xeb, 0xff, 00, 0x32, 0xe4, 0x44, 0x9, - 0xc1, 0x35, 0xc2, 0x1, 0x81, 0x5f, 0x8d, 0xe7, 0x75, 0xbd, - 0xae, 0x31, 0xf9, 0x1f, 0x81, 0x71, 0x16, 0x23, 0xdb, 0xe3, - 0xe5, 0xe4, 0x14, 0x51, 0x45, 0x78, 0x7, 0xcc, 0x5, 0x4, - 0xe2, 0x8a, 0x47, 0xfb, 0xb4, 0x9, 0xec, 0x74, 0x1e, 0xb, - 0xb4, 0x33, 0xdf, 0x86, 0xc7, 0x7a, 0xf7, 0x9d, 0x26, 0x1f, - 0x26, 0xcd, 0x6, 0x3b, 0x57, 0x91, 0x7c, 0x3a, 0xb2, 0x2d, - 0x22, 0x31, 0x1d, 0x48, 0xaf, 0x67, 0x85, 0x76, 0x46, 0xa0, - 0x76, 0x15, 0xfa, 0x8f, 0xd, 0x50, 0xe4, 0xa0, 0xe7, 0xdc, - 0xfd, 0x9b, 0x84, 0x70, 0xfc, 0x98, 0x67, 0x51, 0xf5, 0x24, - 0xa2, 0x8a, 0x2b, 0xec, 0x8f, 0xd0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0xa0, 0xba, 0x7d, 0x90, 0x39, 0xa9, 0xb3, 0x54, 0x35, - 0xa9, 0x3c, 0x9d, 0x3e, 0x56, 0xf4, 0x6, 0xb3, 0xa8, 0xf9, - 0x60, 0xd9, 0x95, 0x59, 0x72, 0x53, 0x94, 0x8f, 0xd, 0xf1, - 0xc5, 0xdf, 0xda, 0x75, 0x67, 0xe7, 0x80, 0x7a, 0x57, 0x36, - 0x3a, 0x56, 0x86, 0xb7, 0x31, 0x9a, 0xfe, 0x56, 0x3d, 0xcd, - 0x67, 0xd7, 0xe1, 0x58, 0xaa, 0x9e, 0xd2, 0xbc, 0xa5, 0xe6, - 0x7f, 0x36, 0x63, 0x6a, 0x3a, 0xb8, 0x99, 0xcd, 0xf7, 0xa, - 0x28, 0xa2, 0xb9, 0x4e, 0x20, 0xa2, 0x8a, 0x28, 0x7b, 0x9, - 0x9d, 0x57, 0x80, 0x6d, 0x4c, 0xda, 0xb2, 0x7a, 0xa, 0xf7, - 0x88, 0x57, 0x6a, 0x28, 0xf4, 0x18, 0xaf, 0x18, 0xf8, 0x61, - 0x16, 0xeb, 0xc3, 0x21, 0x1e, 0x9f, 0xd6, 0xbd, 0xa2, 0x3f, - 0xb8, 0x2b, 0xf5, 0x5e, 0x1b, 0x87, 0x26, 0x15, 0xbe, 0xe7, - 0xed, 0x9c, 0x23, 0x5, 0xc, 0x17, 0x37, 0x71, 0xf4, 0x51, - 0x45, 0x7d, 0x71, 0xf7, 0x41, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x2, 0x31, 0xc0, 0xaf, - 0x33, 0xf8, 0x9d, 0x7f, 0xb6, 0xd8, 0xa0, 0x6e, 0xbc, 0x57, - 0xa3, 0x5d, 0xc9, 0xe5, 0xc0, 0xcd, 0xd3, 0x2, 0xbc, 0x47, - 0xe2, 0x2e, 0xa1, 0xf6, 0x8b, 0xad, 0x99, 0xef, 0x5f, 0x31, - 0x9f, 0xd7, 0xf6, 0x58, 0x57, 0x1e, 0xe7, 0xc7, 0x71, 0x3e, - 0x25, 0x50, 0xc1, 0x4a, 0x3d, 0x59, 0xc7, 0xe, 0x94, 0x50, - 0x6, 0x5, 0x15, 0xf9, 0x1f, 0x43, 0xf0, 0xae, 0x81, 0x45, - 0x14, 0x50, 0x30, 0xab, 0x16, 0x31, 0x19, 0x67, 0x50, 0x3d, - 0x71, 0x55, 0xc9, 0xc0, 0xad, 0x9f, 0xd, 0xda, 0x1b, 0x9b, - 0xd8, 0x94, 0xe, 0xac, 0x2b, 0x6a, 0x30, 0xf6, 0x95, 0x23, - 0x13, 0xa3, 0xd, 0x4f, 0xda, 0xd6, 0x8c, 0x17, 0x53, 0xda, - 0xbc, 0xf, 0x67, 0xf6, 0x3d, 0x16, 0x31, 0x8c, 0x64, 0xf, - 0xe5, 0x5d, 0x10, 0xaa, 0x5a, 0x4c, 0x1e, 0x45, 0x84, 0x29, - 0xe8, 0xa3, 0xf9, 0x55, 0xd1, 0x5f, 0xba, 0x61, 0xa9, 0xfb, - 0x2a, 0x31, 0x87, 0x64, 0x7f, 0x49, 0x61, 0x29, 0x7b, 0x1c, - 0x3c, 0x29, 0xf6, 0x42, 0xd1, 0x45, 0x15, 0xd2, 0x75, 0x95, - 0x6f, 0xac, 0xe3, 0xbc, 0x88, 0xa3, 0xae, 0x45, 0x79, 0x77, - 0x8b, 0xbc, 0x2b, 0x20, 0x67, 0x68, 0xa3, 0xe2, 0xbd, 0x68, - 0xd5, 0x5b, 0xdb, 0x18, 0xee, 0xa2, 0x21, 0x91, 0x49, 0x3e, - 0xa2, 0xbc, 0xac, 0x7e, 0x2, 0x18, 0xd8, 0x59, 0xee, 0x78, - 0x99, 0x9e, 0x5b, 0x4f, 0x30, 0xa4, 0xe3, 0x2d, 0xcf, 0x9a, - 0x6e, 0x2c, 0xa5, 0xb5, 0x94, 0x87, 0x18, 0xc5, 0x45, 0x91, - 0x5e, 0xa5, 0xe2, 0x6f, 0x3, 0xc9, 0x2b, 0xbb, 0xa2, 0xc, - 0x67, 0xb0, 0xff, 00, 0xeb, 0x57, 0x5, 0xa8, 0x78, 0x72, - 0x5b, 0x27, 0x6d, 0xd9, 0xfc, 0xab, 0xf2, 0x7c, 0x66, 0x5b, - 0x5b, 0xb, 0x26, 0xad, 0xa1, 0xf8, 0x86, 0x3f, 0x28, 0xc4, - 0x60, 0xa6, 0xd3, 0x8b, 0xb1, 0x95, 0x45, 0xc, 0x36, 0x1c, - 0x1a, 0x40, 0xd9, 0xaf, 0x26, 0xfd, 0x19, 0xe1, 0xdf, 0x5b, - 0x31, 0x68, 0xa2, 0x8a, 0x6, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x8d, 0x91, 0xf7, 0x78, 0x34, 0xb4, - 0x52, 0x62, 0x67, 0x51, 0xe0, 0xfd, 0x65, 0xed, 0xee, 0xa3, - 0x46, 0x73, 0x8e, 0xf5, 0xec, 0xb6, 0x17, 0xe9, 0x75, 0x6c, - 0x19, 0x4e, 0x70, 0x2b, 0xe7, 0x5b, 0x4b, 0x83, 0x6d, 0x3a, - 0xb6, 0x71, 0xcd, 0x7b, 0x17, 0x84, 0x35, 0x4f, 0x32, 0xc5, - 0x17, 0x24, 0x9c, 0x77, 0xaf, 0xbe, 0xe1, 0xbc, 0x6b, 0xbb, - 0xa3, 0x23, 0xf4, 0xee, 0x12, 0xcc, 0x24, 0xe4, 0xe8, 0x49, - 0x9b, 0xf7, 0x8f, 0xd6, 0xb9, 0xfb, 0xc7, 0xeb, 0x5b, 0x37, - 0xb2, 0x71, 0x9a, 0xc0, 0xbe, 0x6c, 0x3, 0x5f, 0xa3, 0x1f, - 0xac, 0x18, 0x1a, 0x94, 0x9d, 0x6b, 0x90, 0xd4, 0xe4, 0xfb, - 0xf5, 0xd3, 0x6a, 0x72, 0x7d, 0xea, 0xe3, 0xf5, 0x59, 0x30, - 0x1a, 0x80, 0x39, 0x5d, 0x62, 0x5f, 0xbd, 0x5e, 0x6b, 0xe3, - 0x2b, 0xbf, 0x2a, 0xcd, 0xf9, 0xc5, 0x77, 0xda, 0xcc, 0xbf, - 0x7a, 0xbc, 0x9b, 0xe2, 0x15, 0xe6, 0xcb, 0x76, 0x5c, 0x90, - 0x70, 0x6b, 0x1a, 0xd2, 0xe5, 0x83, 0x67, 0x3e, 0x22, 0x5c, - 0x94, 0xdb, 0x3e, 0x7a, 0xf8, 0x8d, 0x7d, 0x9f, 0x37, 0x9f, - 0xf3, 0xc5, 0x78, 0xae, 0xa5, 0x27, 0x5a, 0xf4, 0xaf, 0x88, - 0x37, 0xa5, 0xe5, 0x71, 0x93, 0x9c, 0xd7, 0x96, 0x6a, 0x4f, - 0xc1, 0xe6, 0xbe, 0x2, 0xab, 0xe7, 0xaa, 0x7e, 0x5f, 0x59, - 0xfb, 0x4a, 0xe7, 0x39, 0xaa, 0x3e, 0x41, 0xac, 0x9, 0xdb, - 0xad, 0x6b, 0xea, 0x32, 0x64, 0xb5, 0x62, 0x5c, 0x36, 0x33, - 0x5e, 0xd6, 0x1d, 0x59, 0x1f, 0x47, 0x86, 0x8d, 0xa2, 0x7d, - 0x1, 0xfb, 0x15, 0x78, 0x69, 0xb5, 0x6f, 0x89, 0x37, 0x37, - 0xec, 0xa0, 0xa5, 0xad, 0xb9, 0x44, 0x6c, 0xf2, 0x1d, 0x88, - 0x5f, 0xe4, 0x4d, 0x7e, 0xb8, 0xe8, 0x76, 0xcb, 0x67, 0xa5, - 0xda, 0x40, 0xa3, 0x2, 0x38, 0xc0, 0xfc, 0x7b, 0xd7, 0xe7, - 0x67, 0xfc, 0x13, 0xe3, 0xc1, 0xd1, 0x4b, 0x63, 0x2e, 0xa0, - 0xc8, 0xb2, 0x49, 0x7d, 0x76, 00, 0x2c, 0x73, 0x85, 0x8f, - 0x77, 0x1f, 0xa5, 0x7e, 0x8e, 0xc1, 0xc6, 00, 0x15, 0xf4, - 0xb4, 0x55, 0xa0, 0x8f, 0xad, 0xc3, 0xc6, 0xd4, 0xd1, 0xa1, - 00, 0xab, 0xf0, 0xad, 0x52, 0x87, 0x3c, 0x55, 0xe8, 0x8f, - 0x2, 0xb6, 0x3a, 0xd, 0xb, 0x61, 0xc5, 0x5f, 0x88, 0x55, - 0x2b, 0x6e, 0x95, 0x7a, 0x3a, 00, 0xb7, 0x17, 0x41, 0x56, - 0x63, 0xc7, 0x15, 0x5e, 0x31, 0x56, 0x63, 0x1d, 0x28, 0x2, - 0xc2, 0xc, 0xd4, 0xcb, 0x51, 0x46, 0x2a, 0x55, 0xe9, 0x40, - 0x12, 0x2f, 0x6a, 0x91, 0x6a, 0x31, 0x52, 0x2d, 00, 0x3d, - 0x7a, 0x52, 0xd0, 0x38, 0xa2, 0x80, 0x15, 0x69, 0xd4, 0x8b, - 0x4b, 0x40, 0x10, 0xb7, 0x7a, 0x63, 0x53, 0x9a, 0xa3, 0x63, - 0xcd, 00, 0x31, 0x8d, 0x44, 0xfc, 0xa, 0x91, 0xba, 0x54, - 0x32, 0x1a, 00, 0x86, 0x43, 0x55, 0x65, 0x35, 0x3c, 0x86, - 0xaa, 0x4e, 0x7e, 0x53, 0x40, 0x1f, 0x3f, 0xfe, 0xd9, 0xbe, - 0x29, 0x6d, 0x7, 0xe1, 0x14, 0xf6, 0x71, 0x48, 0xb1, 0xcd, - 0xa9, 0xdc, 0x47, 0x2, 0xe4, 0xe0, 0x90, 0x18, 0x33, 0x1, - 0xcf, 0xa0, 0x3f, 0xad, 0x71, 0x9f, 0xb1, 0xdf, 0x85, 0x7e, - 0xcd, 0xa3, 0x5c, 0x6a, 0xf, 0x11, 0xd, 0x29, 0x50, 0xac, - 0x47, 0x61, 0x9e, 0x9c, 0x7b, 0xd7, 0x37, 0xfb, 0x70, 0xf8, - 0x88, 0x6a, 0x9e, 0x30, 0xf0, 0xf7, 0x87, 0xa1, 0x90, 0xc8, - 0xb6, 0xf1, 0x19, 0xe5, 0x8c, 0x64, 0x6d, 0x90, 0x92, 0x7, - 0x5e, 0x3e, 0xe9, 0x15, 0xef, 0xdf, 00, 0x3c, 0x34, 0x34, - 0x2f, 0x6, 0xe9, 0xf0, 0x14, 0x28, 0xc5, 0x77, 0x30, 0x3e, - 0xbc, 0xd7, 0xc6, 0x47, 0xfd, 0xaf, 0x3b, 0x72, 0xe9, 0x4d, - 0x5b, 0xe6, 0x7e, 0x7d, 0xf, 0xf6, 0xee, 0x23, 0x94, 0xba, - 0x52, 0x8d, 0xbe, 0x67, 0xb2, 0xe9, 0xd1, 0xed, 0x45, 0xad, - 0xa8, 0xc6, 0x14, 0x55, 0xb, 0x48, 0xf8, 0x5a, 0xd1, 0x15, - 0xf6, 0x67, 0xe8, 0x22, 0xd1, 0x45, 0x14, 00, 0x51, 0x45, - 0x66, 0xea, 0x5e, 0x21, 0xd3, 0xf4, 0x90, 0x7e, 0xd5, 0x75, - 0x1c, 0x24, 0x7f, 0x78, 0xd0, 0x5, 0xf, 0x1c, 0x68, 0x6b, - 0xe2, 0x1d, 0x2, 0xe2, 0xcd, 0xa3, 0xf3, 0x3, 0x83, 0xf2, - 0x81, 0x9c, 0xf1, 0x5f, 0x91, 0x1f, 0xb6, 0x9f, 0xec, 0xd9, - 0xa8, 0xc7, 0xad, 0xdc, 0xde, 0xdb, 0x58, 0x4b, 0xd, 0xb0, - 0x25, 0x8b, 0x8, 0xf6, 0x82, 0x72, 0x7d, 0x16, 0xbf, 0x5d, - 0x2d, 0xfe, 0x20, 0x68, 0x57, 0x2c, 0x55, 0x75, 0x2b, 0x72, - 0x7a, 0x63, 0x75, 0x79, 0xd7, 0xc6, 0x1f, 0x86, 0x3a, 0x5f, - 0xc5, 0xd, 0x2d, 0xe1, 0x49, 0x63, 0x98, 0xb2, 0x9e, 0x51, - 0x80, 0x3d, 0xe8, 0x3, 0xf9, 0xd6, 0xd7, 0xf4, 0x9, 0x74, - 0x3b, 0xb6, 0x86, 0x51, 0x86, 0x4, 0xf0, 0x7f, 0xfd, 0x55, - 0x93, 0x5f, 0xa5, 0x3f, 0x1b, 0xbf, 0x60, 0xa4, 0xb7, 0xbb, - 0x96, 0xed, 0x2d, 0x2e, 0x32, 0x73, 0x8d, 0xb2, 0x8e, 0x79, - 0xff, 00, 0x7a, 0xbe, 0x72, 0xbd, 0xfd, 0x91, 0xee, 0x60, - 0x99, 0x90, 0x59, 0xdc, 0x8c, 0x1c, 0x7f, 0xac, 0x7, 0xfa, - 0xd0, 0x7, 0xcc, 0x75, 0x7f, 0x4d, 0xd0, 0xef, 0x75, 0x67, - 0x9, 0x6b, 0x3, 0xca, 0xc7, 0x80, 0x14, 0x75, 0xaf, 0xa6, - 0xf4, 0x1f, 0xd8, 0x9b, 0x56, 0xd7, 0xa7, 0xf2, 0xe1, 0xb5, - 0xbc, 0x27, 0x3d, 0x99, 0x7f, 0xc6, 0xbe, 0x9e, 0xf8, 0x23, - 0xff, 00, 0x4, 0xe9, 0xbe, 0xd3, 0x6e, 0x2d, 0x6e, 0xef, - 0xec, 0x2e, 0xda, 0x35, 0x60, 0x49, 0x77, 0x4c, 0x75, 0x1e, - 0xf4, 0x1, 0xf2, 0xbf, 0xec, 0xdf, 0xfb, 0x2a, 0x78, 0x83, - 0xc7, 0x5a, 0xd4, 0x7f, 0x6e, 0xd1, 0xe7, 0x10, 0x6f, 0x1c, - 0xbc, 0x67, 0x18, 0xf7, 0xca, 0x9a, 0xfd, 0x9b, 0xfd, 0x9f, - 0xbe, 00, 0x69, 0x1f, 0xc, 0x7c, 0x2d, 0x60, 0x89, 0x6c, - 0x91, 0xdc, 0x2a, 0x2, 0x54, 0x46, 0xa3, 0x1f, 0xf8, 0xe8, - 0xad, 0x8f, 0x84, 0xbf, 0x4, 0x74, 0x4f, 00, 0xe9, 0xc8, - 0x23, 0xd3, 0xc4, 0x73, 0x80, 0x39, 0x63, 0x9e, 0xc2, 0xbd, - 0x4d, 0x50, 0x20, 00, 0xc, 0x28, 0xe8, 0x5, 00, 0x28, - 0x18, 0x14, 0xb4, 0x87, 0xa5, 0x32, 0x46, 0xd8, 0xa4, 0xfa, - 0xa, 0x5b, 0x6, 0xc7, 0xf, 0xf1, 0xb, 0x50, 0xf2, 0x6d, - 0x64, 00, 0xe3, 0x8c, 0x57, 0x8a, 0x96, 0x2f, 0x23, 0xb1, - 0xee, 0x4d, 0x7a, 0x27, 0xc4, 0xbd, 0x43, 0x24, 0xc6, 0xf, - 0x27, 0xb5, 0x79, 0xd2, 0xf4, 0xaf, 0xc8, 0x33, 0xda, 0xfe, - 0xdb, 0x16, 0xd7, 0x63, 0xf0, 0x5e, 0x25, 0xc4, 0x7b, 0x7c, - 0x6b, 0x8d, 0xf6, 0x16, 0x8a, 0x28, 0xaf, 0x9c, 0x3e, 0x50, - 0x28, 0xa2, 0x83, 0x43, 0x3, 0x7f, 0xc1, 0x36, 0x5f, 0x6a, - 0xd5, 0x15, 0x88, 0x27, 0x6, 0xbd, 0xef, 0x4c, 0x88, 0x45, - 0x6c, 0xa0, 0x57, 0x92, 0xfc, 0x33, 0xd3, 0xf7, 0x3f, 0x9a, - 0x57, 0x8c, 0xf5, 0xaf, 0x62, 0x85, 0x76, 0x46, 0x7, 0xb5, - 0x7e, 0xa5, 0xc3, 0x74, 0x39, 0x30, 0xfc, 0xef, 0xa9, 0xfb, - 0x3f, 0x8, 0xe1, 0xbd, 0x96, 0x13, 0xda, 0x35, 0xb9, 0x25, - 0x14, 0x51, 0x5f, 0x62, 0x7d, 0xf1, 0xd, 0xd2, 0x6f, 0x81, - 0xd7, 0xd4, 0x57, 0x88, 0x7c, 0x41, 0xb2, 0xfb, 0x35, 0xe1, - 0x2a, 0x39, 0x26, 0xbd, 0xd1, 0xba, 0x57, 0x92, 0x7c, 0x4b, - 0xb7, 0xcc, 0xed, 0x21, 0x18, 0x2, 0xbe, 0x53, 0x88, 0xa9, - 0x29, 0xe1, 0x5c, 0xbb, 0x1f, 0x15, 0xc5, 0x54, 0x55, 0x4c, - 0x13, 0x97, 0x63, 0xcd, 0x68, 0xa4, 0x53, 0x9c, 0xd2, 0xd7, - 0xe4, 0xc8, 0xfc, 0x39, 0x5, 0x14, 0x51, 0x4c, 0x60, 0x78, - 0x15, 0xda, 0xfc, 0x3e, 0x95, 0x61, 0xb8, 0x51, 0xc6, 0xe2, - 0x6b, 0x8a, 0xae, 0xb7, 0xc0, 0x7, 0x76, 0xa6, 0xa0, 0xf4, - 0x6, 0xbd, 0x4c, 0xb1, 0xdb, 0x15, 0xb, 0x77, 0x3d, 0x8c, - 0x9e, 0x5c, 0xb8, 0xd8, 0x58, 0xf7, 0x58, 0xbe, 0xe2, 0xfd, - 0x29, 0xfd, 0xe9, 0x91, 0x30, 0x64, 0x52, 0x3d, 0x29, 0xe2, - 0xbf, 0x6e, 0x5b, 0x1f, 0xd1, 0x6b, 0x64, 0x2d, 0x14, 0x51, - 0x4c, 0xa0, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xaa, 0x5a, 0x94, 0xe2, 0xb, 0x57, 0x24, 0xf6, 0xab, 0xb5, - 0xce, 0x78, 0xc6, 0xf0, 0x5b, 0x69, 0xd2, 0x1d, 0xd8, 0xe2, - 0xb9, 0xb1, 0x35, 0x3d, 0x95, 0x29, 0x4f, 0xb1, 0xc9, 0x8b, - 0xab, 0xec, 0x68, 0x4a, 0x6f, 0xa2, 0x3c, 0x63, 0xc6, 0x17, - 0xa2, 0xf3, 0x56, 0x72, 0xe, 0x42, 0xd6, 0x1d, 0x4d, 0x79, - 0x31, 0x9e, 0xee, 0x57, 0x3d, 0xda, 0xa1, 0xaf, 0xc3, 0x2b, - 0xd4, 0x75, 0x6a, 0xca, 0x6f, 0xab, 0x3f, 0x9b, 0x71, 0x35, - 0x5d, 0x6a, 0xf3, 0xa8, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0x3, - 0x9c, 0x29, 0xa, 0xee, 0x65, 0x5f, 0x53, 0x4b, 0x53, 0xe9, - 0x90, 0xfd, 0xa2, 0xfe, 0x35, 0x3, 0x38, 0x34, 0xd4, 0x79, - 0x9a, 0x8a, 0xea, 0x38, 0xc7, 0x9e, 0x4a, 0x2b, 0xa9, 0xeb, - 0x1f, 0xf, 0x74, 0xfd, 0x91, 0xc6, 0xdb, 0x7d, 0xeb, 0xd1, - 0x47, 0x15, 0xcd, 0x78, 0x36, 0xd3, 0xc9, 0xb3, 0x7, 0x18, - 0xe2, 0xba, 0x6c, 0x75, 0xaf, 0xdb, 0x72, 0xca, 0x5e, 0xc7, - 0xd, 0x14, 0x7f, 0x44, 0xe4, 0xf4, 0x15, 0xc, 0x24, 0x22, - 0x2d, 0x14, 0x51, 0x5e, 0xa9, 0xed, 0x85, 0x14, 0x51, 0x40, - 0x8, 0x6b, 0xb, 0xc5, 0xf2, 0x98, 0xb4, 0xa9, 0x31, 0xdc, - 0x1a, 0xde, 0xae, 0x77, 0xc6, 0x43, 0x36, 0x4, 0x76, 0xc5, - 0x71, 0xe3, 0x1d, 0xa8, 0x4e, 0xdd, 0x8e, 0xc, 0x7b, 0x6b, - 0xd, 0x3b, 0x76, 0x3c, 0x13, 0x53, 0x38, 0xb9, 0x23, 0xbe, - 0x6a, 0xb5, 0x58, 0xd4, 0x9b, 0x75, 0xf4, 0x9f, 0x5a, 0xaf, - 0x5f, 0x86, 0x54, 0xf8, 0xe4, 0x7f, 0x36, 0xd5, 0xd6, 0xa4, - 0x98, 0x51, 0x45, 0x15, 0x99, 0x98, 0x52, 0x31, 0xc0, 0xa5, - 0xa0, 0x8d, 0xd8, 0xa1, 0x89, 0xec, 0x7a, 0x6f, 0xc3, 0x5b, - 0x70, 0x81, 0x78, 0xe6, 0xbd, 0x61, 0x46, 0x14, 0x57, 0x94, - 0x7c, 0x33, 0x2d, 0x2c, 0xff, 00, 0xec, 0x8a, 0xf5, 0x71, - 0x5f, 0xb0, 0x64, 0x4b, 0xfd, 0x8e, 0x36, 0x3f, 0x7a, 0xe1, - 0xa4, 0x96, 0x6, 0x2d, 0xb, 0x45, 0x14, 0x57, 0xd1, 0x9f, - 0x58, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x4d, 0x24, 0x1, 0xcf, 0x14, 0x1, 0x8d, 0xe2, 0x7d, - 0x41, 0x6c, 0xec, 0xce, 0x58, 0xc, 0xfa, 0xd7, 0x82, 0xf8, - 0x86, 0xf3, 0xed, 0x9a, 0x8b, 0x1c, 0xe7, 0x7, 0xd6, 0xbd, - 0x1b, 0xe2, 0x4e, 0xba, 0xaa, 0xfe, 0x4a, 0x3f, 0x23, 0xd2, - 0xbc, 0xa5, 0xcf, 0x99, 0x23, 0x31, 0xee, 0x6b, 0xf2, 0xde, - 0x23, 0xc6, 0x2a, 0xb5, 0xbd, 0x94, 0x7a, 0x1f, 0x8b, 0xf1, - 0x66, 0x3f, 0xdb, 0x57, 0xf6, 0x11, 0x7a, 0x21, 0x28, 0xa2, - 0x8a, 0xf8, 0xe3, 0xe0, 0x82, 0x8a, 0x28, 0xa0, 0x4, 0x6e, - 0x46, 0x2b, 0xbb, 0xf8, 0x7f, 0xa6, 0x99, 0xaf, 0xa3, 0x25, - 0x4e, 0x1, 0xae, 0x1e, 0x4, 0x32, 0xdc, 0xc6, 0x83, 0xa9, - 0x23, 0x8a, 0xf6, 0x7f, 0x87, 0xfa, 0x4f, 0xd9, 0xe3, 0x12, - 0x15, 0x23, 0x23, 0x39, 0xaf, 0xa0, 0xc8, 0xf0, 0xde, 0xdf, - 0x12, 0x9f, 0x44, 0x7d, 0x4f, 0xe, 0x61, 0x1e, 0x27, 0x18, - 0x9f, 0x44, 0x77, 0x48, 0xbb, 0x42, 0x8f, 0x41, 0x4e, 0x14, - 0xb4, 0x57, 0xec, 0x67, 0xef, 0x76, 0xa, 0x28, 0xa2, 0x81, - 0x85, 0x21, 0xa5, 0xa2, 0x80, 0x20, 0x96, 0x15, 0x99, 0x76, - 0xb0, 0xac, 0x1d, 0x53, 0xc2, 0x10, 0x5e, 0xab, 0x1c, 0x2, - 0x6b, 0xa5, 0xa4, 0x35, 0xcf, 0x56, 0x85, 0x3a, 0xca, 0xd5, - 0x15, 0xce, 0x5a, 0xf8, 0x6a, 0x58, 0x85, 0x6a, 0x91, 0xb9, - 0xe4, 0x3a, 0xc7, 0x80, 0x12, 0x1d, 0xc5, 0x53, 0xf4, 0xff, - 00, 0xeb, 0x57, 0x1d, 0xa9, 0xe8, 0x8d, 0x66, 0x4f, 0xc8, - 0xdc, 0x7b, 0x57, 0xd0, 0xf3, 0x59, 0x45, 0x36, 0x77, 0x2e, - 0x73, 0x58, 0x7a, 0xb7, 0x84, 0xad, 0x6e, 0x50, 0x9d, 0x9c, - 0xd7, 0xc8, 0x63, 0x78, 0x7a, 0x35, 0x13, 0x95, 0x1d, 0x19, - 0xf0, 0x99, 0x8f, 0xb, 0x42, 0xa2, 0x72, 0xa0, 0x92, 0x3e, - 0x7d, 0x60, 0xca, 0x70, 0x54, 0xfe, 0x22, 0x94, 0x74, 0xaf, - 0x46, 0xd7, 0x3c, 0x1b, 0xe5, 0x6, 0x31, 0xc4, 0x4d, 0x70, - 0xba, 0x86, 0x9b, 0x3d, 0xa3, 0xb6, 0xe8, 0xc8, 0x1e, 0xf5, - 0xf0, 0x78, 0xac, 0xd, 0x6c, 0x2b, 0xb4, 0x91, 0xf9, 0x9e, - 0x33, 0x2d, 0xaf, 0x82, 0x7e, 0xfa, 0xd0, 0xa7, 0x45, 0x3, - 0x3d, 0xe8, 0xaf, 0x3c, 0xf2, 0xc2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0x3d, 0x29, 0x31, 0x32, 0x23, 0xc3, 0x29, 0x3d, - 0x8d, 0x7a, 0x37, 0x80, 0x2f, 0xc, 0xe4, 0x29, 0x38, 0x51, - 0x5e, 0x6f, 0x31, 0xda, 0xb5, 0xd9, 0xf8, 0x12, 0xe7, 0xc9, - 0xc7, 0x3f, 0x31, 0xff, 00, 0xeb, 0x57, 0xb9, 0x92, 0x4b, - 0x93, 0x14, 0x8f, 0xa3, 0xe1, 0xda, 0x9e, 0xcf, 0x1a, 0x8f, - 0x49, 0xbd, 0x97, 0x2b, 0x58, 0x1a, 0x84, 0x98, 0x52, 0x2b, - 0x56, 0x59, 0x33, 0x12, 0x9f, 0x6a, 0xc2, 0xd4, 0x5f, 00, - 0xd7, 0xec, 0xe9, 0xdd, 0x5c, 0xfe, 0x81, 0x8b, 0xba, 0xb9, - 0xce, 0xea, 0x52, 0x75, 0xe6, 0xb8, 0xfd, 0x5e, 0x4f, 0xbd, - 0xcd, 0x75, 0x1a, 0x8c, 0x9d, 0x6b, 0x8c, 0xd6, 0x65, 0xfb, - 0xd4, 0xca, 0x39, 0x1d, 0x66, 0x6e, 0x5b, 0x9a, 0xf1, 0x1f, - 0x89, 0x5a, 0x87, 0xfa, 0xd0, 0xf, 0x6a, 0xf6, 0x1d, 0x6e, - 0x6c, 0x24, 0x87, 0xda, 0xbe, 0x7a, 0xf8, 0x95, 0xa8, 0x65, - 0xa5, 0xe7, 0xd7, 0xf9, 0xd7, 0x9d, 0x8e, 0x9f, 0x2d, 0x23, - 0xca, 0xcc, 0x67, 0xc9, 0x44, 0xf0, 0x4f, 0x19, 0xdd, 0x79, - 0xb7, 0x6c, 0x33, 0xde, 0xbc, 0xff, 00, 0x52, 0x93, 0x19, - 0xae, 0xb3, 0xc4, 0x57, 0x1e, 0x6d, 0xdc, 0xa7, 0x35, 0xc5, - 0x6a, 0x72, 0x7d, 0xea, 0xf8, 0x9a, 0x7e, 0xf4, 0xee, 0x7e, - 0x77, 0x45, 0x73, 0x54, 0x6c, 0xe7, 0xef, 0x5f, 0x25, 0xab, - 0x22, 0xe0, 0xe7, 0x23, 0xae, 0x6b, 0x4a, 0xe9, 0xbe, 0xf5, - 0x57, 0xd3, 0x6c, 0xe4, 0xd4, 0xb5, 0x8b, 0x2b, 0x58, 0x90, - 0xc9, 0x24, 0xb3, 0x22, 0x5, 0xce, 0x33, 0x93, 0x5f, 0x47, - 0x45, 0x6c, 0x8f, 0xac, 0xc3, 0xc6, 0xf6, 0x47, 0xe9, 0xef, - 0xec, 0x31, 0xe1, 0x6f, 0xec, 0x9f, 0x2, 0x68, 0x5, 0xad, - 0xda, 0x16, 0xfb, 0x17, 0xda, 0x18, 0x3a, 0x5, 0x3b, 0xdf, - 0x4, 0xff, 00, 0x33, 0xef, 0x5f, 0x5d, 0x5b, 0x8e, 0x95, - 0xe4, 0x7f, 0xb3, 0xf6, 0x83, 0x1e, 0x8b, 0xe1, 0x8d, 0x91, - 0xae, 0x22, 0x44, 0x8e, 0x28, 0xfd, 0x82, 0xaf, 0x23, 0xf9, - 0x57, 0xaf, 0x40, 0x38, 0x15, 0xf4, 0x51, 0x56, 0x56, 0x3e, - 0xae, 0x2b, 0x95, 0x24, 0x5f, 0x84, 0x70, 0x2a, 0xf4, 0x23, - 0x91, 0x54, 0xed, 0xc5, 0x5e, 0x82, 0xa8, 0xa3, 0x42, 0xdd, - 0x78, 0xab, 0xd1, 0x2f, 0x35, 0x4a, 0xdc, 0x74, 0xab, 0xd1, - 0xe, 0x68, 0x2, 0xdc, 0x62, 0xac, 0xc6, 0x2a, 0xbc, 0x43, - 0x22, 0xac, 0xc6, 0x28, 0x2, 0x74, 0x15, 0x2a, 0x8a, 0x62, - 0x8e, 0x2a, 0x41, 0xd6, 0x80, 0x1e, 0xb5, 0x20, 0xed, 0x4c, - 0x5a, 0x90, 0x75, 0xa0, 0x7, 0x51, 0x45, 0x14, 00, 0xe1, - 0xd2, 0x96, 0x90, 0x52, 0xd0, 0x5, 0x76, 0x35, 0x1b, 0x53, - 0xcd, 0x46, 0xd4, 00, 0xd6, 0x35, 0x5e, 0x43, 0x53, 0x31, - 0xaa, 0xd2, 0x1a, 00, 0x82, 0x43, 0x54, 0xaf, 0x25, 0x58, - 0x21, 0x79, 0x1c, 0xed, 0x45, 0x5, 0x98, 0x9e, 0xc0, 0x77, - 0xab, 0x72, 0x1a, 0xe2, 0x3e, 0x2e, 0xf8, 0x8d, 0xbc, 0x2b, - 0xf0, 0xe7, 0xc4, 0x3a, 0xa2, 0x22, 0xc8, 0xd6, 0xf6, 0x72, - 0x30, 0x57, 0x6d, 0xa0, 0xe4, 0x63, 0xaf, 0xe3, 0x59, 0xd4, - 0x9a, 0xa7, 0x9, 0x4d, 0xec, 0x8c, 0xaa, 0xcd, 0x52, 0xa7, - 0x2a, 0x8f, 0x64, 0xae, 0x7c, 0x41, 0xab, 0x5d, 0xb7, 0xc5, - 0x3f, 0xda, 0x33, 0x51, 0x98, 0xb1, 0xba, 0xb6, 0x37, 0xc6, - 0x18, 0xc9, 0xe3, 0x31, 0xc7, 0xf2, 0x8f, 0x4e, 0x30, 0xbd, - 0xeb, 0xef, 0xaf, 0x7, 0xe9, 0xcb, 0x67, 0x67, 0xc, 0x6a, - 0xbb, 0x55, 0x54, 00, 0x2b, 0xe1, 0xcf, 0xd9, 0x1b, 0xc3, - 0x87, 0x54, 0xf1, 0x44, 0xba, 0x94, 0xc0, 0xb3, 0x44, 0x33, - 0xb8, 0xaf, 0x56, 0x20, 0xe7, 0xf9, 0xd7, 0xdf, 0x9a, 0x1d, - 0xb8, 0x48, 0x57, 0x15, 0xf2, 0x9c, 0x3b, 0x7, 0x52, 0x9d, - 0x4c, 0x54, 0xb7, 0x9c, 0x9f, 0xdc, 0x7c, 0x47, 0xa, 0x41, - 0xd4, 0xa7, 0x57, 0x1b, 0x3d, 0xea, 0x49, 0xfd, 0xc6, 0xed, - 0xb4, 0x78, 0xab, 0x34, 0xd4, 0x5d, 0xaa, 0x29, 0xd5, 0xf5, - 0xe7, 0xde, 0x5, 0x14, 0x51, 0x40, 0x15, 0xf5, 0xb, 0x91, - 0x67, 0x65, 0x3c, 0xec, 0x70, 0x23, 0x42, 0xd5, 0xf9, 0x5f, - 0xfb, 0x6e, 0x7e, 0xd2, 0x7a, 0xf6, 0x81, 0x75, 0x7a, 0x9a, - 0x76, 0xac, 0xf6, 0xe4, 0x64, 0x2e, 0x22, 0x53, 0xf8, 0x72, - 0xb5, 0xfa, 0x5b, 0xf1, 0x3b, 0x50, 0x93, 0x4f, 0xf0, 0x66, - 0xa0, 0xf1, 0xc, 0xc8, 0xc9, 0xb4, 0x1, 0xf8, 0x57, 0xe1, - 0x3f, 0xed, 0xb5, 0xe2, 0x9, 0xee, 0x3c, 0x59, 0x2d, 0xac, - 0x87, 0xef, 0x37, 0x73, 0xc9, 0x1f, 0x4e, 0xd4, 0x1, 0xc8, - 0xe9, 0x7f, 0xb5, 0x5f, 0xc4, 0x8, 0x27, 0x7, 0xfe, 0x12, - 0x16, 0xe4, 0xff, 00, 0xcf, 0xbc, 0x5f, 0xfc, 0x45, 0x7d, - 0xc9, 0xfb, 0x1f, 0x7c, 0x60, 0xf1, 0x97, 0x8f, 0xf5, 0x9b, - 0xb, 0x6b, 0xed, 0x5d, 0xe7, 0x8d, 0xca, 0x86, 0x1e, 0x5a, - 0x1, 0x83, 0xf4, 0x51, 0x5f, 0x96, 0x1a, 0x44, 0x3f, 0x69, - 0xd4, 0x60, 0x8c, 0x9e, 0xb, 0xa, 0xfd, 0x69, 0xff, 00, - 0x82, 0x69, 0xf8, 0x22, 0x1b, 0xad, 0x45, 0x2f, 0x8a, 0x87, - 0x10, 0x80, 0xdf, 0x30, 0xe0, 0x60, 0x3, 0xeb, 0xd6, 0x80, - 0x3f, 0x45, 0x2e, 0xbc, 0x17, 0xa4, 0xea, 0x96, 0x89, 0x15, - 0xe5, 0xa8, 0x9b, 0xa, 0x1, 0xcb, 0x11, 0x9f, 0xc8, 0xd6, - 0x4, 0xbf, 0x3, 0xbc, 0x1d, 0x2b, 0x16, 0x3a, 0x4a, 0x67, - 0xfd, 0xf7, 0xff, 00, 0x1a, 0xef, 0x47, 0x14, 0xb4, 0x1, - 0xc8, 0x69, 0x3f, 0xa, 0x7c, 0x37, 0xa2, 0x49, 0xbe, 0xd7, - 0x4f, 0x58, 0xcf, 0xb3, 0x37, 0xf8, 0xd7, 0x57, 0xc, 0x29, - 0x4, 0x61, 0x10, 0x6d, 0x50, 0x30, 0x7, 0xa5, 0x49, 0x45, - 00, 0x25, 0x2d, 0x14, 0x50, 0x2, 0x55, 0x3d, 0x4e, 0x6f, - 0x22, 0xd2, 0x46, 0xf6, 0x35, 0x70, 0xf4, 0xac, 0xf, 0x16, - 0xdd, 0xfd, 0x9e, 0xc5, 0xf0, 0x7b, 0x66, 0xb9, 0xf1, 0x13, - 0xf6, 0x74, 0xa5, 0x23, 0x97, 0x15, 0x53, 0xd9, 0x51, 0x94, - 0xfb, 0x23, 0xc6, 0x3c, 0x6d, 0x7a, 0x6e, 0xb5, 0x46, 0x5d, - 0xdc, 0x3, 0xfd, 0x4d, 0x60, 0x55, 0x9d, 0x52, 0x63, 0x71, - 0xa8, 0xca, 0xe4, 0xe7, 0x9a, 0xad, 0x5f, 0x86, 0x62, 0x2a, - 0x7b, 0x5a, 0xd2, 0x9b, 0xea, 0xcf, 0xe6, 0xec, 0x55, 0x57, - 0x5a, 0xbc, 0xea, 0x3e, 0xac, 0x28, 0xa2, 0x8a, 0xe7, 0x39, - 0x42, 0x94, 0xd, 0xcc, 0xaa, 0x3b, 0x9c, 0x52, 0x55, 0xad, - 0x2a, 0xf, 0xb4, 0xea, 0x31, 0x27, 0xb8, 0xab, 0x8c, 0x79, - 0xa4, 0xa3, 0xdc, 0xa8, 0x45, 0xce, 0x4a, 0x2b, 0xa9, 0xec, - 0x1f, 0xe, 0xb4, 0xd1, 0x5, 0x84, 0x67, 0x6f, 0x38, 0xeb, - 0x5d, 0xd8, 0x18, 0x15, 0x87, 0xe1, 0x6b, 0x41, 0x6f, 0x60, - 0x9c, 0x63, 0xe5, 0x15, 0xb8, 0x2b, 0xf6, 0xfc, 0x5, 0x2f, - 0x63, 0x87, 0x84, 0x7c, 0x8f, 0xe8, 0xec, 0xae, 0x82, 0xc3, - 0xe1, 0x61, 0xf, 0x21, 0x68, 0xa2, 0x8a, 0xf4, 0x4f, 0x54, - 0x42, 0x33, 0x5e, 0x65, 0xf1, 0x45, 0x31, 0x16, 0xd5, 0xe7, - 0x3d, 0x6b, 0xd3, 0x6b, 0xce, 0xfe, 0x24, 0x28, 0x31, 0x33, - 0x1e, 0xc2, 0xbc, 0x2c, 0xe6, 0x3c, 0xd8, 0x39, 0xa3, 0xe6, - 0xf8, 0x82, 0x3c, 0xd8, 0x9, 0xa3, 0xc7, 0xb1, 0xb4, 0x90, - 0x28, 0xa4, 0x7, 0x73, 0x13, 0xeb, 0x4b, 0x5f, 0x8c, 0xa3, - 0xf9, 0xf4, 0x28, 0xa2, 0x8a, 0x6, 0x7, 0xa5, 0x74, 0xde, - 0x7, 0x90, 0xc5, 0x7a, 0xa0, 0x7d, 0xe6, 0x35, 0xcc, 0x9e, - 0x95, 0xd1, 0xf8, 0x24, 0xe7, 0x55, 0x4c, 0xf4, 0x6, 0xbb, - 0xb0, 0x3f, 0xef, 0x30, 0xf5, 0x3d, 0x2c, 0xb5, 0xdb, 0x17, - 0x4f, 0xd5, 0x1e, 0xf7, 0x68, 0xbb, 0x6d, 0xd0, 0x1f, 0x4a, - 0x9e, 0xa1, 0xb5, 0x71, 0x24, 0x2a, 0x45, 0x4d, 0x5f, 0xb9, - 0x43, 0xe1, 0x47, 0xf4, 0x84, 0x2d, 0xca, 0xac, 0x2d, 0x14, - 0x51, 0x56, 0x58, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x21, - 0xa0, 0x2, 0xbc, 0xe7, 0xe2, 0x6e, 0xa4, 0x61, 0xb3, 0x64, - 0xc, 0x79, 0xaf, 0x43, 0x95, 0xb6, 0xc6, 0x4d, 0x78, 0xb7, - 0xc4, 0xcd, 0x40, 0xcb, 0x73, 0xe5, 0x67, 0x3f, 0x35, 0x7c, - 0xe6, 0x7b, 0x5f, 0xd8, 0xe1, 0x24, 0xbb, 0x9f, 0x25, 0xc4, - 0xb8, 0x9f, 0x61, 0x81, 0x97, 0x99, 0xc3, 0xe, 0x79, 0xf5, - 0xa2, 0x81, 0xd2, 0x8a, 0xfc, 0x7c, 0xfc, 0x19, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x6e, 0x78, 0x36, 0xd3, 0xed, 0x37, 0xe0, - 0xe3, 0xb8, 0xac, 0x26, 0x38, 0x53, 0x5d, 0xdf, 0xc3, 0xcb, - 0xd, 0xd2, 0xab, 0x11, 0xe9, 0x5e, 0x8e, 0x5f, 0x49, 0xd6, - 0xc5, 0x46, 0x27, 0xad, 0x95, 0x50, 0x75, 0xf1, 0x90, 0x89, - 0xeb, 0xba, 0x3d, 0xb8, 0x82, 0xc9, 00, 0x18, 0xe2, 0xaf, - 0xd4, 0x70, 0x2e, 0xc8, 0x94, 0xe, 0xc2, 0xa4, 0xaf, 0xdb, - 0xe1, 0x1e, 0x58, 0xa4, 0x7f, 0x46, 0x53, 0x8f, 0x24, 0x14, - 0x7b, 0x5, 0x14, 0x51, 0x56, 0x68, 0x14, 0x51, 0x45, 00, - 0x15, 0xcd, 0xf8, 0xd9, 0xfc, 0xbd, 0x2d, 0xdb, 0xbe, 0x2b, - 0xa3, 0x35, 0xcd, 0xf8, 0xd9, 0x3c, 0xcd, 0x38, 0xaf, 0x6c, - 0x57, 0xe, 0x37, 0xfd, 0xde, 0x7e, 0x87, 0x9d, 0x98, 0xdf, - 0xea, 0xb5, 0x2d, 0xd8, 0xf0, 0x2b, 0xac, 0x99, 0xd8, 0x9e, - 0xa4, 0xd4, 0x75, 0x3e, 0xa3, 0xf2, 0xde, 0x3a, 0xfa, 0x1a, - 0x82, 0xbf, 0xd, 0x9f, 0xc4, 0xd1, 0xfc, 0xdd, 0x51, 0x5a, - 0x72, 0x41, 0x45, 0x14, 0x54, 0x10, 0x14, 0x13, 0x81, 0x45, - 0x7, 0xa5, 0x26, 0x1d, 0xf, 0x48, 0xf8, 0x67, 0x75, 0xe4, - 0x38, 0x1f, 0xc4, 0x45, 0x7a, 0xea, 0x9c, 0x81, 0x5e, 0xf, - 0xe0, 0x1b, 0xd2, 0xba, 0x96, 0xf, 0xa, 0x31, 0xfd, 0x6b, - 0xdc, 0xed, 0x64, 0x12, 0xc2, 0xac, 0x3b, 0x8a, 0xfd, 0x67, - 0x87, 0x6a, 0xa9, 0xe1, 0x79, 0x57, 0x43, 0xf6, 0xfe, 0x14, - 0xae, 0xaa, 0x60, 0xf9, 0x7b, 0x13, 0x51, 0x45, 0x15, 0xf5, - 0x67, 0xdb, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x52, 0x50, - 0x2, 0xd6, 0x2f, 0x89, 0x35, 0x51, 0xa7, 0x5a, 0x31, 0xdd, - 0xb5, 0xab, 0x52, 0x79, 0x85, 0xba, 0x16, 0x35, 0xe4, 0x7f, - 0x11, 0x3c, 0x4c, 0xd3, 0xdc, 0xf9, 0x51, 0xbe, 0x7, 0xa0, - 0xaf, 0x1b, 0x35, 0xc6, 0xc7, 0x5, 0x87, 0x72, 0xbe, 0xa7, - 0xcf, 0xe7, 0x39, 0x84, 0x30, 0x18, 0x69, 0x49, 0xbd, 0x5e, - 0xc7, 0x1f, 0xe2, 0x3d, 0x49, 0xf5, 0xd, 0x4a, 0x46, 0x2d, - 0x91, 0x9a, 0xcb, 0xa5, 0x66, 0x2e, 0xe5, 0x8f, 0x53, 0x49, - 0x5f, 0x8c, 0xd4, 0xa8, 0xea, 0xcd, 0xce, 0x5d, 0x4f, 0xe7, - 0xfa, 0xb5, 0x65, 0x5a, 0xa4, 0xaa, 0x4b, 0x76, 0x14, 0x51, - 0x45, 0x66, 0x64, 0x14, 0x51, 0x4a, 0x8b, 0xe6, 0x48, 0xaa, - 0x3b, 0xd0, 0x6, 0xef, 0x83, 0x74, 0xef, 0xb7, 0xea, 0xf1, - 0x82, 0x32, 0x1, 0x15, 0xef, 0x3a, 0x5d, 0x92, 0x59, 0xdb, - 0x2a, 0xaa, 0xe3, 0x8a, 0xf3, 0xdf, 0x86, 0x5a, 0x28, 0x49, - 0x3c, 0xe7, 0x5e, 0x7a, 0xe4, 0x8a, 0xf4, 0xec, 0xc, 0xf, - 0x4a, 0xfd, 0x5b, 0x87, 0xb0, 0x7e, 0xc7, 0xf, 0xed, 0x24, - 0xb5, 0x67, 0xed, 0x9c, 0x2b, 0x81, 0xfa, 0xbe, 0x17, 0xda, - 0xc9, 0x6b, 0x21, 0xf4, 0x51, 0x45, 0x7d, 0x69, 0xf7, 0x21, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x46, - 0x69, 0x68, 0xa0, 0x4, 0x2, 0x82, 0x32, 0x31, 0x4b, 0x45, - 00, 0x41, 0x2d, 0xa4, 0x52, 0x82, 0x19, 0x1, 0xcd, 0x72, - 0x1e, 0x2d, 0xf0, 0xac, 0x77, 0x16, 0xae, 0xd1, 0xa6, 0x3e, - 0x86, 0xbb, 0x53, 0x51, 0x5c, 0x42, 0xb3, 0xc2, 0xc8, 0x7b, - 0xd7, 0x1e, 0x27, 0xd, 0x4f, 0x11, 0x7, 0x9, 0x23, 0x83, - 0x17, 0x83, 0xa5, 0x8a, 0xa4, 0xe1, 0x34, 0x7c, 0xdd, 0xab, - 0x69, 0xe6, 0xc2, 0x7d, 0x87, 0xd6, 0xa8, 0x57, 0x77, 0xe3, - 0xdd, 0x2d, 0x2d, 0xe6, 0x77, 0x3, 0xa5, 0x70, 0x6a, 0xc5, - 0xb9, 0xaf, 0xc5, 0xb1, 0xb4, 0x3e, 0xad, 0x5e, 0x54, 0xcf, - 0xe7, 0xbc, 0xc7, 0xd, 0xf5, 0x4c, 0x44, 0xa9, 0xb, 0x45, - 0x14, 0x57, 0x9, 0xe6, 0x85, 0x23, 0x74, 0xa5, 0xa4, 0x6e, - 0x94, 0x99, 0x2c, 0xaf, 0x71, 0xc9, 0x3, 0xad, 0x75, 0x3e, - 0xa, 0x52, 0xf7, 0x61, 0x6b, 0x95, 0x90, 0xe6, 0x4a, 0xee, - 0x3c, 0x3, 00, 0x32, 0x6f, 0xaf, 0x6f, 0x26, 0xa6, 0xe7, - 0x8a, 0x89, 0xf4, 0xbc, 0x3d, 0x49, 0xd4, 0xc6, 0xc4, 0xed, - 0xe7, 0x6c, 0x46, 0xa0, 0x76, 0x15, 0xcf, 0x6a, 0x72, 0x75, - 0xad, 0xbb, 0xa7, 0xc2, 0x57, 0x35, 0xa9, 0x49, 0x9c, 0xd7, - 0xed, 0xb, 0x43, 0xfa, 0x5, 0x68, 0x91, 0x81, 0xa8, 0xc9, - 0xc1, 0xe6, 0xb8, 0x7d, 0x6a, 0x6f, 0xbd, 0xcd, 0x75, 0xda, - 0x94, 0x9c, 0x35, 0x70, 0x9a, 0xd4, 0xdc, 0xb7, 0xd6, 0x98, - 0xce, 0x2b, 0xc5, 0x17, 0x66, 0x1b, 0x39, 0x5b, 0x38, 0xe2, - 0xbe, 0x67, 0xf8, 0x8f, 0xa8, 0x96, 0x69, 0x7e, 0x7f, 0x5a, - 0xf7, 0xff, 00, 0x1d, 0xdd, 0x98, 0xac, 0xdf, 0x1d, 0xc5, - 0x7c, 0xbb, 0xf1, 0x16, 0xfc, 0xb3, 0x48, 0x33, 0xeb, 0x5f, - 0x3d, 0x9a, 0x54, 0xb2, 0xb1, 0xf2, 0xd9, 0xd5, 0x5e, 0x58, - 0xf2, 0x9e, 0x53, 0xab, 0x4c, 0x5d, 0xdd, 0x89, 0xea, 0x6b, - 0x92, 0xd4, 0xe5, 0xeb, 0xcd, 0x74, 0x5a, 0x94, 0x9c, 0x1a, - 0xe5, 0x35, 0x19, 0x32, 0x4d, 0x7c, 0xfe, 0x1a, 0x37, 0x67, - 0xcb, 0x60, 0xe3, 0x7d, 0x4c, 0x7b, 0x96, 0xce, 0x6b, 0xbe, - 0xfd, 0x9b, 0xfc, 0x3b, 0xff, 00, 0x9, 0x3f, 0xc6, 0x2d, - 0x16, 0x2f, 0x2c, 0x48, 0xb6, 0x8d, 0xf6, 0xb6, 0x4, 0xe3, - 0x84, 0x23, 0x3c, 0xfe, 0x3d, 0x2b, 0xcf, 0x6e, 0x1b, 0x8a, - 0xfa, 0x4b, 0xf6, 0x14, 0xf0, 0xbf, 0xf6, 0xa7, 0x8c, 0xb5, - 0x5d, 0x48, 0x8f, 0x9e, 0x15, 0x4b, 0x78, 0xfe, 0x5c, 0xe7, - 0x79, 0xf9, 0xb9, 0xfc, 0xab, 0xe9, 0xb0, 0xd1, 0xbc, 0x91, - 0xf6, 0x18, 0x48, 0xde, 0x48, 0xfd, 0x3b, 0xf8, 0x7b, 0xa7, - 0x7f, 0x67, 0x78, 0x5a, 0xca, 0x3d, 0xa1, 0x4c, 0x89, 0xe6, - 0x11, 0xee, 0x79, 0xae, 0xc6, 0xdd, 0x7a, 0x56, 0x6e, 0x9f, - 0x6e, 0x2d, 0xed, 0xe2, 0x89, 0x7e, 0xea, 0x20, 0x2, 0xb5, - 0x20, 0xe3, 0x15, 0xed, 0x9f, 0x44, 0x5d, 0x80, 0x56, 0x85, - 0xba, 0xf4, 0xe2, 0xa9, 0x42, 0x38, 0x15, 0xa1, 0x7, 0x4, - 0x50, 0x5, 0xd8, 0x5, 0x5e, 0x85, 0x78, 0x6, 0xa9, 0xc1, - 0x57, 0xe2, 0x1c, 0xa, 00, 0xb1, 0x10, 0xab, 0x31, 0xf6, - 0xaa, 0xf1, 0x8c, 0x55, 0x98, 0xc7, 0x4a, 00, 0x9d, 0x2a, - 0x55, 0xa8, 0x90, 0x54, 0xa3, 0xa5, 00, 0x48, 0xbd, 0xaa, - 0x45, 0xa6, 0x2d, 0x3c, 0x74, 0xa0, 0x5, 0xa5, 0x1d, 0x69, - 0x29, 0x56, 0x80, 0x1d, 0x45, 0x14, 0x50, 0x5, 0x56, 0xa8, - 0xcf, 0x7a, 0x7b, 0x1a, 0x8d, 0xa8, 0x2, 0x37, 0xe9, 0x55, - 0xa4, 0xa9, 0xe4, 0x35, 0x5a, 0x43, 0x40, 0x15, 0xe4, 0x3c, - 0xd7, 0xce, 0xdf, 0xb6, 0xe5, 0xdc, 0xb6, 0xff, 00, 0x7, - 0x61, 0x48, 0x8e, 0x4, 0xfa, 0xa4, 0x30, 0xbf, 0xba, 0x94, - 0x94, 0x9f, 0xe4, 0x2b, 0xe8, 0x79, 0x5b, 00, 0xd7, 0xc9, - 0x5f, 0xb6, 0xcf, 0x88, 0x9a, 0xe6, 0x6f, 0xc, 0xf8, 0x5a, - 0x19, 0x43, 0x79, 0xf2, 0x9b, 0xb9, 0xa1, 00, 0xe7, 0x2b, - 0xf2, 0xa1, 0xf4, 0xfe, 0x26, 0xaf, 0x17, 0x39, 0xa9, 0xec, - 0xf0, 0x15, 0x5f, 0x75, 0x6f, 0xbc, 0xf9, 0xfc, 0xfe, 0xaf, - 0xb2, 0xcb, 0x2b, 0x3e, 0xad, 0x5b, 0xef, 0xd0, 0xd5, 0xfd, - 0x91, 0x3c, 0x2f, 0xfd, 0x9f, 0xe1, 0x61, 0x78, 0xca, 0x43, - 0x5c, 0x36, 0x72, 0x47, 0x50, 0x32, 0x2b, 0xeb, 0x1d, 0x32, - 0x20, 0xb1, 0x8a, 0xf2, 0x3f, 0x82, 0x5e, 0x1e, 0x5d, 0x1b, - 0xc2, 0x5a, 0x5c, 0x2, 0x3d, 0xa5, 0x61, 0x5c, 0xf1, 0xdf, - 0xad, 0x7b, 0x35, 0x8a, 00, 0xa2, 0xb6, 0xca, 0xe8, 0x7d, - 0x5b, 0x9, 0x4e, 0x9f, 0x91, 0xb6, 0x4d, 0x86, 0x58, 0x4c, - 0xd, 0x2a, 0x5e, 0x45, 0xda, 0x28, 0xa2, 0xbd, 0x43, 0xda, - 0xa, 0x28, 0xa2, 0x80, 0x39, 0xbf, 0x1e, 0x58, 0x7d, 0xbf, - 0xc3, 0xd7, 0x2a, 0x46, 0x42, 0xa1, 0x38, 0xaf, 0xc1, 0x9f, - 0xdb, 0x5b, 0xc3, 0x77, 0x2b, 0xf1, 0x2b, 0x52, 0xbc, 0x93, - 0x7a, 0xc2, 0x87, 0x3, 0x78, 0xc6, 0x7f, 0x4a, 0xfd, 0xfb, - 0xd6, 0x44, 0x72, 0x69, 0x93, 0xc7, 0x23, 0xa4, 0x6a, 0xeb, - 0xb7, 0x32, 0x30, 0x2, 0xbf, 0x2c, 0xff, 00, 0x6e, 0x5f, - 0x83, 0x3a, 0x5d, 0xdd, 0xd5, 0xdd, 0xca, 0x4b, 0x14, 0xa7, - 0x1b, 0x98, 0xa4, 0xca, 0x73, 0xf4, 0xc5, 00, 0x7e, 0x5f, - 0xe9, 0x53, 0x79, 0x17, 0xc9, 0x20, 0x3c, 0x8f, 0x5a, 0xfd, - 0x7b, 0xff, 00, 0x82, 0x6c, 0x78, 0xae, 0xc3, 0x4a, 0xd0, - 0x12, 0x39, 0x24, 0x43, 0x75, 0x28, 00, 0xd, 0xc3, 0x3, - 0x20, 0x74, 0xc9, 0xcd, 0x7e, 0x47, 0xeb, 0x76, 0x11, 0x69, - 0x9a, 0x9c, 0xb1, 0xc6, 0x70, 0x88, 0xe4, 0x2, 0xf, 0xa1, - 0xaf, 0xa8, 0xbf, 0x65, 0xf, 0xda, 0x2, 0xdf, 0xe1, 0xc6, - 0xaf, 0x6e, 0xf7, 0x17, 0x91, 0xc6, 0xa8, 0xea, 0x2, 0xcb, - 0x92, 0xbd, 0xbd, 0xe8, 0x3, 0xf7, 0xae, 0x27, 0xe, 0x81, - 0x87, 0x42, 0x33, 0x4f, 0xaf, 0x9b, 0x3e, 0x17, 0x7e, 0xd5, - 0x96, 0x3e, 0x30, 0xb4, 0x87, 0x75, 0xc5, 0xab, 0x96, 0xe9, - 0xb1, 0x48, 0x3f, 0xce, 0xbd, 0x86, 0xf, 0x89, 0x3a, 0x74, - 0xa8, 0x18, 0xcc, 0x83, 0x34, 0x1, 0xd9, 0x51, 0x5c, 0xaa, - 0xf8, 0xff, 00, 0x4e, 0x6f, 0xf9, 0x6e, 0x9f, 0x9d, 0x4e, - 0x9e, 0x39, 0xd3, 0x1b, 0xfe, 0x5b, 0xad, 00, 0x74, 0x74, - 0x56, 0x75, 0x8e, 0xbb, 0x69, 0x7f, 0x8f, 0x2a, 0x50, 0xc4, - 0xd6, 0x8d, 00, 0x21, 0xae, 0x3, 0xe2, 0x2e, 0xa0, 0x22, - 0xb4, 0x90, 0x3, 0xd8, 0xd7, 0x7b, 0x29, 0xda, 0x84, 0xfb, - 0x57, 0x8e, 0x7c, 0x4b, 0xd4, 0xb, 0x31, 0x8c, 0x1e, 0xa6, - 0xbe, 0x7f, 0x3b, 0xaf, 0xec, 0x70, 0x92, 0x3e, 0x5b, 0x88, - 0xf1, 0x1e, 0xc3, 0x5, 0x2b, 0x75, 0x3c, 0xff, 00, 0x3b, - 0x98, 0xb7, 0xa9, 0xcd, 0x14, 0x8b, 0xc0, 0xa5, 0xaf, 0xc7, - 0x11, 0xf8, 0x12, 0xa, 0x28, 0xa2, 0x81, 0x85, 0x74, 0x3e, - 0x6, 0xb3, 0x37, 0x3a, 0xb8, 0x6c, 0x70, 0x3f, 0xc4, 0x57, - 0x3c, 0x7a, 0x1a, 0xf4, 0x1f, 0x86, 0x5a, 0x7e, 0xe9, 0x3c, - 0xc2, 0x3a, 0xd7, 0xa9, 0x96, 0x52, 0xf6, 0xd8, 0xa8, 0x44, - 0xf6, 0x32, 0x7a, 0x1f, 0x58, 0xc6, 0xd3, 0x8f, 0x9d, 0xcf, - 0x5a, 0xd3, 0xa2, 0xf2, 0xed, 0x94, 0x63, 0x1c, 0x55, 0xaa, - 0x6c, 0x6b, 0xb5, 0x14, 0x53, 0xeb, 0xf6, 0xc8, 0xae, 0x54, - 0x91, 0xfd, 0x15, 0x8, 0xf2, 0xc5, 0x44, 0x28, 0xa2, 0x8a, - 0xb2, 0xc4, 0xaf, 0x3d, 0xf8, 0x9f, 0xc5, 0x99, 0x51, 0xd4, - 0x8a, 0xf4, 0x23, 0x5e, 0x79, 0xf1, 0x24, 0xef, 0x8c, 0xfb, - 0xa, 0xf1, 0x73, 0x8f, 0xf7, 0x39, 0x9f, 0x3d, 0x9f, 0x7f, - 0xb8, 0x4d, 0x1e, 0x3c, 0x57, 0x69, 0x23, 0xd2, 0x92, 0x82, - 0x77, 0x3b, 0x1a, 0x2b, 0xf1, 0x63, 0xf9, 0xec, 0x28, 0xa2, - 0x8a, 00, 0x2b, 0x6b, 0xc2, 0x6f, 0xe5, 0xde, 0x8f, 0x52, - 0x6b, 0x16, 0xb6, 0x3c, 0x2f, 0xf3, 0x6a, 0x91, 0x8e, 0xc0, - 0xf5, 0xae, 0xac, 0x2e, 0x95, 0xe1, 0xea, 0x76, 0xe0, 0x9d, - 0xb1, 0x30, 0xf5, 0x3e, 0x82, 0xd2, 0xc6, 0xdb, 0x28, 0xf3, - 0xe9, 0x56, 0xd6, 0xaa, 0x69, 0xcf, 0xe6, 0x5a, 0x21, 0xf4, - 0x15, 0x6c, 0x57, 0xee, 0x94, 0xed, 0xc8, 0xac, 0x7f, 0x49, - 0x52, 0xb7, 0x24, 0x6d, 0xd9, 0xb, 0x45, 0x14, 0x56, 0xa6, - 0xc1, 0x45, 0x14, 0x50, 0x1, 0x48, 0xdd, 0x29, 0x69, 0xd, - 00, 0x55, 0xd4, 0x24, 0xf2, 0xac, 0xe5, 0x63, 0xd8, 0x57, - 0xcf, 0xde, 0x2d, 0xba, 0xfb, 0x56, 0xb1, 0x27, 0x39, 0xa, - 0x6b, 0xdd, 0x3c, 0x4b, 0x3f, 0x91, 0xa4, 0xdc, 0x36, 0x7a, - 0x29, 0x35, 0xf3, 0xc5, 0xf4, 0xa6, 0x7b, 0xc9, 0x64, 0xf5, - 0x63, 0x5f, 0x9f, 0x71, 0x4d, 0x5b, 0x28, 0x52, 0x47, 0xe5, - 0xbc, 0x67, 0x5e, 0xca, 0x9d, 0x15, 0xd7, 0x52, 0xa, 0x28, - 0xa2, 0xbf, 0x3e, 0x3f, 0x2c, 0xa, 0x28, 0xa2, 0x80, 0x1a, - 0x46, 0x58, 0xf, 0x5a, 0xf6, 0xf, 0x87, 0x76, 0x25, 0x23, - 0x52, 0x47, 0x4a, 0xf2, 0x7b, 0x28, 0x7c, 0xfb, 0xc8, 0xd7, - 0x19, 0xe6, 0xbd, 0xdb, 0xc1, 0x16, 0x9e, 0x4d, 0xae, 0x48, - 0xed, 0x5f, 0x59, 0xc3, 0x94, 0x7d, 0xa6, 0x25, 0xcf, 0xb1, - 0xf6, 0xfc, 0x29, 0x87, 0xf6, 0xb8, 0xa7, 0x37, 0xd0, 0xea, - 0x14, 0x62, 0x9d, 0x48, 0x29, 0x6b, 0xf5, 0x63, 0xf6, 0xe0, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xac, 0x4f, - 0x14, 0x45, 0xbf, 0x4d, 0x95, 0xbb, 0xe2, 0xb6, 0xea, 0x86, - 0xb1, 0xf, 0x9f, 0x64, 0xe9, 0x5c, 0xf8, 0x88, 0xf3, 0xd2, - 0x92, 0xf2, 0x39, 0x71, 0x51, 0xe7, 0xa3, 0x28, 0xf9, 0x1f, - 0x39, 0xea, 0x91, 0x79, 0x77, 0x6e, 0xd8, 0xc6, 0x4d, 0x54, - 0xad, 0xaf, 0x16, 0x40, 0x62, 0xd4, 0x8a, 0xe3, 0x81, 0x58, - 0xb5, 0xf8, 0x66, 0x22, 0x1c, 0x95, 0x65, 0x13, 0xf9, 0xb7, - 0x15, 0xf, 0x67, 0x5e, 0x71, 0xf3, 0xa, 0x28, 0xa2, 0xb9, - 0xce, 0x60, 0xa2, 0x8a, 0x28, 0x3, 0x4b, 0x43, 0xba, 0xfb, - 0x2d, 0xd2, 0x74, 0xe4, 0xf7, 0xaf, 0x7a, 0xf0, 0xbd, 0xfa, - 0x5e, 0x69, 0xcb, 0xb4, 0xe4, 0xaf, 0x5a, 0xf9, 0xd1, 0x5b, - 0xcb, 0x70, 0xc3, 0xb5, 0x7a, 0x87, 0xc3, 0xdf, 0x11, 0x88, - 0xa2, 0x30, 0x96, 0x1f, 0x31, 0xaf, 0xb0, 0xe1, 0xec, 0x62, - 0xa1, 0x57, 0xd9, 0x4d, 0xe8, 0xcf, 0xbd, 0xe1, 0x5c, 0xc1, - 0x61, 0xeb, 0xba, 0x33, 0xd9, 0x9e, 0xa8, 0xd, 0x2d, 0x43, - 0x4, 0xeb, 0x34, 0x61, 0x87, 0x39, 0xf4, 0xa9, 0x6b, 0xf5, - 0x24, 0xd3, 0xd5, 0x1f, 0xb3, 0xa7, 0x75, 0x74, 0x2d, 0x14, - 0x51, 0x4c, 0x62, 0x53, 0x5d, 0xc4, 0x60, 0x96, 0x20, 0xa, - 0x49, 0x25, 0x11, 0x2e, 0xe6, 0x38, 0x1e, 0xf5, 0xc5, 0x78, - 0xaf, 0xc6, 0x50, 0xdb, 0x43, 0x2c, 0x71, 0x48, 0x37, 0xe, - 0x2b, 0x8f, 0x13, 0x8a, 0xa7, 0x85, 0x83, 0x9c, 0xd9, 0xc1, - 0x8b, 0xc6, 0x52, 0xc1, 0xd3, 0x75, 0x2a, 0x32, 0x1f, 0x1e, - 0xf8, 0xb5, 0x6c, 0x60, 0xd9, 0x13, 0x6, 0x27, 0x8e, 0xd, - 0x78, 0xfd, 0xf5, 0xdb, 0x5f, 0x5c, 0x99, 0x18, 0xd4, 0xfa, - 0xae, 0xa9, 0x2e, 0xa5, 0x29, 0x2e, 0xdb, 0x86, 0x6a, 0x8f, - 0x4a, 0xfc, 0x87, 0x33, 0xcc, 0x27, 0x8f, 0xaa, 0xdf, 0x43, - 0xf0, 0x8c, 0xe3, 0x34, 0xa9, 0x99, 0x57, 0x72, 0xbf, 0xbb, - 0xd8, 0x28, 0xa2, 0x8a, 0xf1, 0x8f, 00, 0x28, 0xa2, 0x8a, - 00, 0x2b, 0x63, 0xc2, 0x9a, 0x61, 0xd4, 0x35, 0x25, 0x18, - 0x24, 0xf, 0x6a, 0xc9, 0x85, 0x1a, 0x69, 0x95, 0x14, 0x67, - 0x35, 0xea, 0xff, 00, 0xe, 0x7c, 0x3a, 0x21, 0x73, 0x33, - 0xa9, 0xfc, 0x6b, 0xd8, 0xca, 0xf0, 0x8f, 0x17, 0x88, 0x8c, - 0x7a, 0x23, 0xdd, 0xc9, 0xb0, 0x32, 0xc7, 0x62, 0xa3, 0x1b, - 0x68, 0xb7, 0x3b, 0x9d, 0xb, 0x4d, 0x5b, 0xb, 0x45, 00, - 0x60, 0xe2, 0xb5, 0x29, 0x14, 0x60, 0x52, 0xd7, 0xec, 0xf4, - 0xe0, 0xa9, 0xc5, 0x45, 0x74, 0x3f, 0xa0, 0xe9, 0x53, 0x54, - 0xa0, 0xa1, 0x1d, 0x90, 0x51, 0x49, 0x9f, 0x6a, 0xcb, 0xbe, - 0xd7, 0xa0, 0xb1, 0x97, 0x63, 0x38, 0xcd, 0x13, 0xa9, 0x1a, - 0x6a, 0xf2, 0x76, 0xa, 0x95, 0x61, 0x49, 0x73, 0x4d, 0xd9, - 0x1a, 0xb4, 0x55, 0x1b, 0x2d, 0x52, 0x2b, 0xd5, 0xca, 0x30, - 0x3f, 0x4a, 0xbb, 0x55, 0x19, 0x29, 0xab, 0xc5, 0x95, 0x9, - 0xa9, 0xae, 0x68, 0xbd, 0x5, 0xa2, 0x8a, 0x2a, 0x8b, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0x12, 0x91, 0xcf, - 0xca, 0x68, 0x6a, 0x8a, 0xe6, 0x41, 0x14, 0x2c, 0xc4, 0xe0, - 0xa, 0x96, 0xec, 0xae, 0x4c, 0x9d, 0x93, 0x67, 0x94, 0x7c, - 0x4f, 0x91, 0x50, 0x6c, 0x1d, 0x4d, 0x79, 0xb8, 0x18, 0x15, - 0xd7, 0x7c, 0x44, 0xd4, 0x45, 0xce, 0xa4, 0x10, 0x36, 0x40, - 0xf4, 0xae, 0x46, 0xbf, 0x15, 0xcd, 0xaa, 0xaa, 0x98, 0xb9, - 0xb5, 0xd0, 0xfe, 0x79, 0xcf, 0x2b, 0x2a, 0xd8, 0xf9, 0xc9, - 0x74, 0xa, 0x28, 0xa2, 0xbc, 0x83, 0xc1, 0xa, 0x6b, 0x9e, - 0xd, 0x3a, 0xa2, 0x95, 0xbe, 0x53, 0x52, 0xc9, 0x64, 0x7, - 0xe6, 0x92, 0xbd, 0x2f, 0xc1, 0x36, 0xde, 0x55, 0xa6, 0xea, - 0xf3, 0xab, 0x28, 0xbc, 0xe9, 0xd1, 0x71, 0x9c, 0x9c, 0x57, - 0xad, 0x68, 0x56, 0xff, 00, 0x67, 0xd3, 0x93, 0x8c, 0x12, - 0x5, 0x7d, 0xa7, 0xd, 0x50, 0x73, 0xac, 0xe6, 0xfa, 0x1f, - 0xa1, 0xf0, 0x8e, 0x1b, 0x9f, 0x10, 0xea, 0x76, 0x44, 0xb7, - 0xb2, 0x61, 0xd, 0x72, 0xfa, 0x8b, 0xf5, 0xae, 0x87, 0x51, - 0x93, 00, 0xd7, 0x2d, 0xa8, 0xc9, 0xd6, 0xbf, 0x51, 0x3f, - 0x65, 0x39, 0xed, 0x4e, 0x4c, 0x2b, 0x57, 0x3, 0xac, 0xcb, - 0xf3, 0x35, 0x76, 0x9a, 0xac, 0x98, 0x6, 0xbc, 0xff, 00, - 0x59, 0x9b, 0x97, 0x3f, 0x5a, 00, 0xf2, 0xbf, 0x89, 0x17, - 0xbb, 0x63, 0x75, 0x4, 0x70, 0xd, 0x7c, 0xb9, 0xe3, 0xdb, - 0xbf, 0x32, 0xe1, 0x96, 0xbe, 0x81, 0xf8, 0x99, 0xa8, 0xd, - 0xf3, 0x60, 0x8e, 0x33, 0xfd, 0x6b, 0xe6, 0x5f, 0x16, 0xdd, - 0x79, 0xd7, 0x6f, 0xce, 0x79, 0xaf, 0x8e, 0xcd, 0x2a, 0x5e, - 0x56, 0x3e, 0x3, 0x3a, 0xab, 0xcd, 0x3b, 0x1c, 0x6e, 0xa6, - 0xfd, 0x45, 0x72, 0xb7, 0xef, 0x97, 0x35, 0xd0, 0xea, 0x6f, - 0xcb, 0x73, 0x5c, 0xc5, 0xe3, 0xe5, 0x8d, 0x73, 0xe1, 0x63, - 0x63, 0x9b, 0x7, 0x1b, 0x23, 0x3a, 0xe1, 0xb8, 0x22, 0xbe, - 0xf7, 0xff, 00, 0x82, 0x7c, 0xf8, 0x33, 0xc8, 0xf0, 0xdc, - 0x57, 0x92, 0x67, 0x7d, 0xde, 0xa0, 0xd7, 0x4a, 0x3b, 0x6c, - 0x55, 0x8f, 0x3, 0xa7, 0xa8, 0x35, 0xf0, 0x2d, 0xc1, 0xc8, - 0x6f, 0xf0, 0xaf, 0xd6, 0x2f, 0xd8, 0xe3, 0xc2, 0xe9, 0xa1, - 0xf8, 0x1b, 0x48, 0x45, 0x89, 0x93, 0xca, 0xb1, 0x46, 0xdc, - 0x47, 0x52, 0xfc, 0x9f, 0x7e, 0x84, 0x57, 0xd3, 0x61, 0x23, - 0xad, 0xcf, 0xb0, 0xc0, 0xc7, 0x5b, 0x9f, 0x4b, 0x41, 0xd6, - 0xb4, 0x61, 0xe0, 0xa, 0xa1, 0x8, 0xe2, 0xb4, 0x20, 0x1d, - 0x2b, 0xd3, 0x3d, 0x82, 0xf4, 0x39, 0xe2, 0xb4, 0x21, 0x1d, - 0x2a, 0x8c, 0x23, 0x9a, 0xbd, 0xf, 0x41, 0x40, 0x17, 0xed, - 0xc6, 00, 0xab, 0xd1, 0x72, 0x2a, 0x9c, 0x1c, 0xe3, 0xda, - 0xae, 0xc5, 0xd2, 0x80, 0x2c, 0xc6, 0x2a, 0xcc, 0x62, 0xab, - 0xc7, 0x56, 0x63, 0xa0, 0x9, 0x93, 0xa5, 0x4a, 0x3a, 0xd4, - 0x4b, 0x52, 0x29, 0xa0, 0x9, 0x7, 0x4a, 0x90, 0x54, 0x6a, - 0x6a, 0x40, 0x73, 0x40, 0x5, 0x39, 0x69, 0xb4, 0xe1, 0xd2, - 0x80, 0x16, 0x8a, 0x28, 0xa0, 0xa, 0x6d, 0x51, 0xb1, 0xa7, - 0xb5, 0x46, 0xc7, 0xad, 00, 0x43, 0x21, 0xcd, 0x55, 0x90, - 0xd5, 0x89, 0x3a, 0x55, 0x69, 0x28, 0x2, 0xb4, 0xc7, 0xa8, - 0xaf, 0x86, 0xbe, 0x26, 0x5f, 0xb7, 0xc4, 0x8f, 0xda, 0x99, - 0xac, 0xe, 0xc, 0x3a, 0x57, 0xfa, 0x16, 0xd0, 0x31, 0xca, - 0x33, 0x12, 0x7f, 0xf1, 0xe1, 0xf9, 0x57, 0xda, 0x9e, 0x23, - 0xd5, 0x23, 0xd1, 0x34, 0x3d, 0x4b, 0x51, 0x98, 0x81, 0x15, - 0xa5, 0xbc, 0x97, 0xf, 0x93, 0x81, 0xb5, 0x10, 0xb1, 0xe7, - 0xb7, 0x2, 0xbe, 0x18, 0xfd, 0x99, 0xe1, 0x93, 0xc5, 0x1f, - 0x1a, 0xf5, 0x5d, 0x5a, 0x45, 0x2c, 0x24, 0x13, 0xcc, 0x4f, - 0x1d, 0x4b, 0xae, 0x3f, 0x4a, 0xf9, 0x5c, 0xee, 0x5e, 0xd2, - 0x74, 0x30, 0xbf, 0xcd, 0x25, 0xf7, 0x23, 0xe2, 0xb8, 0x8a, - 0x7e, 0xd6, 0x78, 0x6c, 0x1a, 0xfb, 0x73, 0x57, 0xf4, 0x47, - 0xdc, 0xfe, 0x10, 0xb0, 0x16, 0xb6, 0x70, 0xa0, 0x18, 0xa, - 0xa0, 0xa, 0xed, 0x6d, 0x97, 0xb, 0x9a, 0xc1, 0xd1, 0x20, - 0xf2, 0xe2, 0x5a, 0xe8, 0xa3, 0x1b, 0x50, 0x57, 0xd4, 0xc5, - 0x72, 0xab, 0x1f, 0x67, 0x15, 0xcb, 0x14, 0x90, 0xfa, 0x28, - 0xa2, 0x99, 0x41, 0x4d, 0x77, 0x8, 0xa5, 0x8f, 0x41, 0x4e, - 0xaa, 0x1a, 0xd5, 0xc8, 0xb6, 0xd3, 0xe5, 0x62, 0x40, 0xe3, - 0xbd, 00, 0x7c, 0x79, 0xfb, 0x71, 0xfe, 0xd1, 0xd7, 0xbf, - 0xb, 0xbc, 0x32, 0xc9, 0xa7, 0xbe, 0xdb, 0x89, 0xe, 0x7, - 00, 0xe3, 0x91, 0xea, 0x3d, 0xeb, 0xf2, 0xff, 00, 0xc7, - 0xff, 00, 0xb4, 0x7e, 0xb9, 0xe3, 0x3b, 0x19, 0x7e, 0xdd, - 0x3e, 0xe7, 0x71, 0x83, 0x85, 0x51, 0xfc, 0x85, 0x7a, 0xdf, - 0xfc, 0x14, 0xd3, 0xe2, 0x7, 0xf6, 0xaf, 0x8b, 0x62, 0xd2, - 0xe0, 0xb9, 0xc, 0x91, 0xb1, 0xdc, 0x88, 0xd9, 0xc7, 0xb, - 0xd6, 0xbe, 0x11, 0x33, 0xc8, 0x46, 0xb, 0x93, 0xf8, 0xd0, - 0x5, 0xad, 0x56, 0xec, 0xdd, 0x5c, 0x33, 0x12, 0x4e, 0x49, - 0x3c, 0xd2, 0xe9, 0x7a, 0x9b, 0xe9, 0xd3, 0xa4, 0x8b, 0xce, - 0xd3, 0x9a, 0xa2, 0x4e, 0x68, 0xa0, 0xf, 0x78, 0xf0, 0x47, - 0xed, 0x4f, 0xab, 0xf8, 0x31, 0x63, 0x58, 0x22, 0x24, 0x2f, - 0x71, 0xb7, 0xfa, 0x8a, 0xf4, 0xfb, 0x3f, 0xf8, 0x28, 0x66, - 0xbf, 00, 0x50, 0x62, 0x90, 0x1, 0xfe, 0xcc, 0x67, 0xfa, - 0x57, 0xc7, 0x14, 0x50, 0x7, 0xdb, 0xf6, 0xbf, 0xf0, 0x51, - 0x7d, 0x65, 0x71, 0xba, 0x37, 0xce, 0x39, 0xca, 0x47, 0x5b, - 0xba, 0x6f, 0xfc, 0x14, 0x6b, 0x51, 0x92, 0x78, 0xd0, 0xc6, - 0x72, 0xce, 0x14, 0x60, 0x47, 0xdf, 0xf0, 0xaf, 0x80, 0xeb, - 0x7b, 0xc1, 0x5a, 0x6b, 0x6a, 0x7a, 0xfd, 0xac, 0x61, 0x4b, - 00, 0xeb, 0x9c, 0xc, 0xf7, 0xa0, 0xf, 0xdb, 0xaf, 0xd9, - 0x33, 0xf6, 0x84, 0xbc, 0xf8, 0xa9, 0xa8, 0xc1, 0x13, 0x2, - 0xab, 0x81, 0xd5, 0x57, 0x24, 0xe0, 0x74, 0xc5, 0x7d, 0xa1, - 0x5f, 0xf, 0xff, 00, 0xc1, 0x3b, 0xbc, 0x4, 0xda, 0x66, - 0x85, 0x26, 0xa4, 0xf1, 0x6c, 0xc2, 0x85, 0xcb, 0x2e, 0x9, - 0xc8, 0x1c, 0x75, 0xaf, 0xb7, 0xf3, 0x40, 0x15, 0x75, 0x39, - 0xbc, 0x9b, 0x66, 0x3e, 0xd5, 0xe0, 0x9e, 0x37, 0xbd, 0x37, - 0x3a, 0x99, 0x4e, 0xc0, 0xd7, 0xb4, 0xf8, 0xae, 0xe8, 0x5b, - 0xd8, 0xe7, 0x38, 0xeb, 0x5f, 0x3f, 0xea, 0x93, 0x7d, 0xa7, - 0x50, 0x95, 0xfb, 0x67, 0x15, 0xf9, 0xff, 00, 0x13, 0xd7, - 0xd2, 0x34, 0x91, 0xf9, 0x77, 0x19, 0x62, 0x6d, 0x18, 0xd1, - 0x4f, 0x72, 0xb7, 0x4a, 0x28, 0xa2, 0xbf, 0x3c, 0x3f, 0x2a, - 0x5a, 0x5, 0x14, 0x51, 0x4c, 0x60, 0x6, 0xe6, 0x51, 0xea, - 0x6b, 0xd9, 0xfe, 0x1d, 0x69, 0xe2, 0x1b, 0x38, 0xcf, 0x4c, - 0x81, 0x5e, 0x43, 0xa6, 0x40, 0x6e, 0x2f, 0xe1, 0x40, 0x33, - 0xf3, 0xa, 0xf7, 0xef, 0xb, 0x5a, 0x7d, 0x9a, 0xc5, 0x32, - 0x3b, 0x57, 0xd8, 0xf0, 0xd5, 0xe, 0x7a, 0xce, 0xa3, 0x5b, - 0x1f, 0x7d, 0xc2, 0x18, 0x6f, 0x69, 0x89, 0x95, 0x56, 0xb6, - 0x37, 0xa9, 0x68, 0xa2, 0xbf, 0x51, 0x3f, 0x67, 0xa, 0x28, - 0xa2, 0x80, 0x13, 0x38, 0xaf, 0x3d, 0xf8, 0x99, 0x1f, 0x97, - 0x66, 0xc4, 0x75, 0x22, 0xbd, 0xa, 0xbc, 0xff, 00, 0xe2, - 0x4b, 0x6f, 0x8b, 0x1d, 0x80, 0xaf, 0x1b, 0x37, 0xff, 00, - 0x73, 0x99, 0xf3, 0xf9, 0xed, 0xbe, 0xa3, 0x33, 0xc6, 0xb1, - 0xb7, 0x8a, 0x28, 0x63, 0xba, 0x46, 0x34, 0x57, 0xe2, 0xa7, - 0xf3, 0xd0, 0x51, 0x45, 0x14, 00, 0x56, 0xb7, 0x86, 0x5b, - 0x65, 0xee, 0xec, 0xf7, 0xac, 0x9a, 0xd1, 0xd0, 0x1b, 0xfe, - 0x26, 0x8, 0x3d, 0xeb, 0xa3, 0xe, 0xed, 0x56, 0x3e, 0xa7, - 0x4e, 0x15, 0xdb, 0x11, 0xf, 0x53, 0xe8, 0x4d, 0x10, 0x11, - 0x61, 0x1e, 0x7a, 0x9a, 0xd0, 0x15, 0x9d, 0xa2, 0x4a, 0x24, - 0xb2, 0x40, 0x3b, 0xa, 0xd1, 0x15, 0xfb, 0xa5, 0x1f, 0xe1, - 0xc7, 0xd0, 0xfe, 0x94, 0xc3, 0xdb, 0xd9, 0x46, 0xdd, 0x85, - 0xa2, 0x8a, 0x2b, 0x73, 0xa0, 0x28, 0xa2, 0x8a, 00, 0x29, - 0xd, 0x2d, 0x23, 0x1c, 0x50, 0x7, 0x23, 0xf1, 0x6, 0xf3, - 0xc8, 0xd1, 0xae, 0x31, 0xfd, 0xc3, 0x5e, 0x10, 0xe, 0x72, - 0x7d, 0x6b, 0xd6, 0x3e, 0x29, 0x5f, 0x3, 0x66, 0xd1, 0x67, - 0xaf, 0x1d, 0x6b, 0xc9, 0xc7, 0x4a, 0xfc, 0x9b, 0x88, 0xaa, - 0xfb, 0x4c, 0x5d, 0x97, 0x44, 0x7e, 0x1d, 0xc5, 0x95, 0xfd, - 0xae, 0x3b, 0x95, 0x6c, 0x90, 0x51, 0x45, 0x15, 0xf2, 0xa7, - 0xc5, 0x85, 0x14, 0x50, 0x4e, 0x5, 00, 0x6a, 0xf8, 0x5a, - 0xdf, 0xed, 0x1a, 0xa0, 0x1d, 0x85, 0x7b, 0xf6, 0x83, 00, - 0xb7, 0xb3, 0x5f, 0x7a, 0xf1, 0x5f, 0x87, 0x96, 0xa6, 0x7d, - 0x45, 0x9f, 0x15, 0xee, 0xd6, 0xd1, 0xec, 0x85, 0x16, 0xbf, - 0x49, 0xe1, 0x8a, 0x36, 0xa4, 0xea, 0x33, 0xf5, 0xce, 0xe, - 0xa1, 0x6a, 0xe, 0xab, 0x5b, 0x93, 0xa, 0x5a, 0x28, 0xaf, - 0xba, 0x3f, 0x49, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0x10, 0x9a, 0x8e, 0x65, 0xcc, 0x6e, 0x2a, 0x5a, 0x42, - 0x33, 0x49, 0xab, 0x89, 0xab, 0xab, 0x1e, 0x21, 0xf1, 0x3, - 0x4d, 0xfb, 0x3c, 0xed, 0x21, 0xea, 0x4f, 0xf8, 0x57, 0x12, - 0x3a, 0x57, 0xb2, 0xfc, 0x41, 0xd2, 0xc, 0xf1, 0x3c, 0x9b, - 0x49, 0xc7, 0xa0, 0xaf, 0x1c, 0x95, 0x1a, 0x39, 0x59, 0x58, - 0x15, 0xe7, 0xbd, 0x7e, 0x39, 0x9d, 0x61, 0x9d, 0xc, 0x53, - 0x76, 0xd1, 0x9f, 0x81, 0x71, 0x16, 0x11, 0xe1, 0xb1, 0x8d, - 0xa5, 0xa3, 0x1b, 0x45, 0x14, 0x57, 0x80, 0x7c, 0xc0, 0x51, - 0x45, 0x14, 00, 0x11, 0x91, 0x57, 0x74, 0xcd, 0x56, 0x4d, - 0x3a, 0x40, 0x53, 0x39, 0xaa, 0x54, 0x1c, 0xf6, 0xaa, 0x8c, - 0xa5, 0x7, 0xcd, 0x1d, 0xca, 0x84, 0xe5, 0x4e, 0x4a, 0x71, - 0x76, 0x67, 0xa6, 0x68, 0x7e, 0x3b, 0x98, 0x5, 0x56, 0xe9, - 0xf8, 0x57, 0x6b, 0x61, 0xe2, 0x84, 0x99, 0x6, 0xe2, 0x2b, - 0xe7, 0xf4, 0x9e, 0x58, 0xcf, 0xca, 0xd8, 0xab, 0x90, 0xeb, - 0x17, 0x51, 0x74, 0x90, 0xd7, 0xd5, 0x61, 0x33, 0xfa, 0xb4, - 0x15, 0xa7, 0xa9, 0xf6, 0xb8, 0x1e, 0x27, 0xad, 0x87, 0x4a, - 0x35, 0x2e, 0xcf, 0xa0, 0x8f, 0x88, 0x22, 0x3, 0x39, 0x15, - 0x95, 0xa8, 0xf8, 0xd1, 0x2d, 0x41, 0xc7, 0x35, 0xe2, 0xe7, - 0xc4, 0x37, 0x78, 0xc6, 0xf3, 0xf9, 0xd5, 0x79, 0x75, 0x7b, - 0x89, 0x78, 0x66, 0x26, 0xbb, 0xaa, 0xf1, 0x34, 0xa5, 0x1b, - 0x41, 0x58, 0xf4, 0xab, 0x71, 0x84, 0xa5, 0x1b, 0x53, 0x56, - 0x67, 0xa1, 0x6b, 0x3f, 0x13, 0xb, 0xa3, 0x22, 0x8a, 0xf3, - 0xed, 0x43, 0x51, 0x92, 0xfe, 0x79, 0x1c, 0xb1, 0xf9, 0x89, - 0x35, 0x55, 0xd8, 0xbf, 0x5a, 0x4a, 0xf9, 0x7c, 0x5e, 0x3e, - 0xbe, 0x35, 0xfe, 0xf1, 0xe8, 0x7c, 0x66, 0x37, 0x34, 0xc4, - 0xe6, 0xf, 0xf7, 0xd2, 0xd0, 0x3a, 0x8a, 0x28, 0xa2, 0xbc, - 0xe3, 0xc8, 0xa, 0x28, 0xa2, 0x90, 0xc2, 0x8e, 0xe2, 0x8a, - 0xd1, 0xd1, 0x74, 0x79, 0x75, 0x2b, 0xc8, 0x80, 0x46, 0x2b, - 0x9e, 0xc2, 0xb4, 0x85, 0x39, 0x54, 0x92, 0x8c, 0x16, 0xac, - 0xd2, 0x9d, 0x39, 0xd6, 0x9a, 0x84, 0x15, 0xdb, 0x35, 0xfc, - 0x19, 0xe1, 0xc9, 0x2f, 0xf5, 0x4, 0x66, 0xfb, 0xb9, 0xe9, - 0x5e, 0xe1, 0xa6, 0x69, 0xe9, 0x63, 00, 0x55, 0x18, 0x26, - 0xb2, 0xfc, 0x2f, 0xa0, 0x8d, 0x36, 0xd9, 0x9, 0x18, 0x6c, - 0x57, 0x45, 0x5f, 0xae, 0xe4, 0xf9, 0x74, 0x70, 0x54, 0x53, - 0x6b, 0xde, 0x67, 0xee, 0xf9, 0xe, 0x53, 0x1c, 0xba, 0x82, - 0x72, 0x5e, 0xf3, 0x12, 0x96, 0x8a, 0x2b, 0xe8, 0x8f, 0xaa, - 0x23, 0x99, 0xc2, 0x46, 0xcd, 0xe8, 0x2b, 0xc5, 0xfc, 0x69, - 0xaf, 0xb4, 0x5a, 0x84, 0x84, 0x13, 0xc1, 0xc7, 0x15, 0xeb, - 0x5a, 0xed, 0xc8, 0xb5, 0xd3, 0x65, 0x62, 0x71, 0xc6, 0x2b, - 0xe7, 0xdf, 0x10, 0xdc, 0x7d, 0xa6, 0xed, 0xcf, 0xa9, 0xaf, - 0x89, 0xe2, 0x4c, 0x4b, 0xa5, 0x4e, 0x30, 0x8b, 0xd4, 0xfc, - 0xef, 0x8b, 0xb1, 0x92, 0xa3, 0x4a, 0x34, 0xa0, 0xf5, 0x3a, - 0xaf, 0xd, 0xf8, 0xe9, 0xad, 0xf0, 0xa7, 0x35, 0xe8, 0x3a, - 0x5f, 0x8b, 0x96, 0xf4, 0xa8, 0x3c, 0x66, 0xbc, 0xa, 0x39, - 0x1a, 0x1e, 0x54, 0x56, 0x95, 0x97, 0x88, 0x2e, 0x2d, 0x9c, - 0x63, 0x38, 0xfa, 0xd7, 0xcd, 0xe0, 0x33, 0xca, 0xb8, 0x7b, - 0x42, 0xa3, 0xd0, 0xf9, 0xc, 0xb3, 0x89, 0x2b, 0x61, 0x52, - 0x85, 0x57, 0x74, 0x7d, 0x1f, 0x14, 0xeb, 0x2a, 0x82, 0xd, - 0x49, 0x9a, 0xf1, 0x3b, 0xf, 0x1d, 0xce, 0x98, 0x5, 0x88, - 0xfc, 0x6b, 0xa3, 0xd3, 0xbc, 0x71, 0xe6, 0x63, 0x7c, 0x98, - 0xfc, 0x7f, 0xfa, 0xd5, 0xf6, 0xd4, 0x33, 0xcc, 0x35, 0x5d, - 0xf, 0xd1, 0xb0, 0xdc, 0x49, 0x84, 0xaf, 0x65, 0x7b, 0x1e, - 0x95, 0x45, 0x73, 0x36, 0x9e, 0x29, 0xb7, 0x92, 0x30, 0x4c, - 0xc9, 0x9f, 0xf7, 0xaa, 0xf2, 0x6b, 0xf6, 0xcc, 0x38, 0x99, - 0xf, 0xfc, 0xa, 0xbd, 0x98, 0xe2, 0xa9, 0x4d, 0x69, 0x23, - 0xdf, 0x86, 0x36, 0x84, 0xd5, 0xd4, 0x91, 0xb1, 0x45, 0x64, - 0x1d, 0x7a, 0xd8, 0x7f, 0xcb, 0x64, 0xff, 00, 0xbe, 0x85, - 0x52, 0xbb, 0xf1, 0x75, 0xbd, 0xbe, 0x70, 0xea, 0x7f, 0x1a, - 0x25, 0x8a, 0xa3, 0x5, 0x79, 0x48, 0x27, 0x8d, 0xc3, 0xd3, - 0x57, 0x94, 0x91, 0xd1, 0x31, 00, 0x64, 0xf4, 0xae, 0x5b, - 0xc6, 0x5a, 0xfc, 0x76, 0x3a, 0x74, 0x8a, 0xa7, 0xe6, 0x35, - 0x8d, 0xa9, 0xfc, 0x46, 0x8d, 0x23, 0x65, 0x52, 0x7, 0x1e, - 0xbf, 0xfd, 0x6a, 0xf3, 0x7f, 0x10, 0x6b, 0xcf, 0xab, 0x31, - 0xc3, 0x1c, 0x66, 0xbe, 0x6b, 0x33, 0xce, 0xe9, 0x53, 0xa4, - 0xe1, 0x45, 0xdd, 0xb3, 0xe4, 0x33, 0x8e, 0x22, 0xa1, 0x4a, - 0x8c, 0xa1, 0x41, 0xde, 0x4c, 0xce, 0xd5, 0x6e, 0xda, 0xf2, - 0xf1, 0xa4, 0x27, 0x35, 0x5a, 0x8a, 0x2b, 0xf2, 0xc9, 0x49, - 0xce, 0x4e, 0x4f, 0xa9, 0xf8, 0xbc, 0xe4, 0xe7, 0x27, 0x27, - 0xbb, 0xa, 0x28, 0xa2, 0xa4, 0x80, 0x35, 0x5e, 0xe0, 0xe1, - 0x45, 0x4e, 0xdd, 0x2a, 0x6, 0x43, 0x3c, 0xa8, 0x8a, 0x9, - 0xc9, 0xed, 0x45, 0xae, 0xec, 0x81, 0x27, 0x26, 0x92, 0x35, - 0x7c, 0x39, 0x65, 0xe7, 0x5c, 0xc4, 0x7d, 0xeb, 0xd5, 0x51, - 0x4, 0x36, 0xb1, 0xaf, 0xfb, 0x22, 0xb9, 0x8f, 0xc, 0x68, - 0x86, 0x2f, 0x2d, 0xd9, 0x8, 0xfa, 0x8a, 0xea, 0x6e, 0xdb, - 0x6a, 0xfd, 0x2b, 0xf5, 0xbc, 0x83, 0xa, 0xe8, 0x51, 0xe6, - 0x6b, 0x73, 0xf7, 0x3e, 0x18, 0xc1, 0x3c, 0x36, 0x1f, 0x9e, - 0x4b, 0x56, 0x62, 0xea, 0x52, 0x75, 0xae, 0x57, 0x50, 0x7e, - 0xb5, 0xbf, 0xa9, 0x49, 0x92, 0xd5, 0xcc, 0x6a, 0x32, 0x75, - 0xaf, 0xaa, 0x3e, 0xd4, 0xe6, 0xb5, 0x89, 0x70, 0xad, 0x5e, - 0x79, 0xaf, 0x4f, 0xb2, 0x39, 0xf, 0xb1, 0xae, 0xdf, 0x5a, - 0x9b, 0x86, 0xc1, 0xaf, 0x33, 0xf1, 0x6d, 0xd0, 0x8a, 0xce, - 0x62, 0x4e, 0x38, 0xa9, 0x93, 0xb2, 0x6c, 0x99, 0xbe, 0x58, - 0xb6, 0x78, 0x47, 0xc4, 0xad, 0x43, 0x26, 0x73, 0xdf, 0x27, - 0xfa, 0xd7, 0xce, 0xda, 0xf4, 0xe5, 0xee, 0x24, 0x3e, 0xf5, - 0xec, 0xbf, 0x12, 0x2f, 0xfe, 0x69, 0x7e, 0x6e, 0xe7, 0xbf, - 0xb9, 0xaf, 0xc, 0xd5, 0x25, 0xc9, 0x73, 0xef, 0x5f, 0x5, - 0x8c, 0x97, 0x3d, 0x53, 0xf3, 0x2c, 0x7c, 0xfd, 0xa5, 0x6b, - 0x1c, 0xe6, 0xa7, 0x27, 0x7, 0x9e, 0xf5, 0xcd, 0xdc, 0xb7, - 0x26, 0xb6, 0xb5, 0x39, 0x39, 0x35, 0x83, 0x70, 0x7a, 0xd7, - 0x76, 0x1d, 0x68, 0x8f, 0x4b, 0xb, 0x1b, 0x45, 0x1a, 0x1e, - 0xa, 0xd2, 0xce, 0xbb, 0xe3, 0x5d, 0xa, 0xc0, 0x2e, 0xe1, - 0x71, 0x7d, 0xc, 0x6c, 0x3f, 0xd9, 0x32, 0xc, 0xfe, 0x99, - 0xaf, 0xd9, 0x4f, 0x82, 0x3a, 0x3a, 0xe9, 0x5e, 0x14, 0x50, - 0x31, 0x80, 0xc2, 0x35, 0x3f, 0xec, 0xaa, 0x28, 0x15, 0xf9, - 0x39, 0xfb, 0x35, 0xdb, 0x47, 0x79, 0xf1, 0xaf, 0xc3, 0xd1, - 0xc8, 0x3, 00, 0xee, 0xc0, 0x11, 0x9e, 0x42, 0x12, 0x3f, - 0x5a, 0xfd, 0x8a, 0xf0, 0x45, 0x81, 0xb0, 0xf0, 0xd5, 0x84, - 0x4c, 0xe, 0xed, 0x81, 0x8e, 0x47, 0xaf, 0x3f, 0xd6, 0xbe, - 0x97, 0xc, 0xbd, 0xdb, 0x9f, 0x5d, 0x83, 0x56, 0x8d, 0xce, - 0xa2, 0x11, 0x5a, 0x36, 0xe3, 0xa5, 0x50, 0xb7, 0x18, 0xab, - 0xf0, 0xe, 0x5, 0x76, 0x1d, 0xe5, 0xf8, 0x57, 0xa5, 0x5e, - 0x84, 0x74, 0xaa, 0x56, 0xea, 0x2b, 0x42, 0x11, 0xc8, 0x34, - 0x1, 0x76, 0xdc, 0x75, 0xab, 0xb1, 0x8e, 0x95, 0x4e, 0xe, - 0xb5, 0x7a, 0x31, 0x40, 0x13, 0xc6, 0x2a, 0xca, 0x54, 0x9, - 0x56, 0x13, 0xb5, 00, 0x48, 0xbd, 0x69, 0xeb, 0xd2, 0x98, - 0xb5, 0x20, 0x14, 00, 0xf5, 0xed, 0x52, 0x2d, 0x31, 0x69, - 0xe3, 0xa5, 00, 0x2d, 0x28, 0xeb, 0x49, 0x4a, 0xb4, 00, - 0xea, 0x28, 0xa2, 0x80, 0x28, 0xb7, 0x7a, 0x89, 0xcd, 0x48, - 0xd5, 0x14, 0x87, 0x14, 0x1, 0x4, 0x86, 0xab, 0x48, 0x6a, - 0x79, 0xd, 0x56, 0x94, 0xf1, 0x40, 0x1e, 0x17, 0xfb, 0x5f, - 0x78, 0x95, 0x74, 0x1f, 0x83, 0x7a, 0x9c, 0x23, 0x6, 0x6d, - 0x41, 0x85, 0xa2, 0xa9, 0xf4, 0x6e, 0x18, 0xfe, 00, 0x9a, - 0xf3, 0x4f, 0xd8, 0xb3, 0xc3, 0x86, 0x1b, 0x7b, 0xbd, 0x41, - 0xb2, 0x37, 0x8d, 0x83, 0x8e, 0xdc, 0x1f, 0xf0, 0xaa, 0x3f, - 0xb7, 0x47, 0x8a, 0x85, 0xe6, 0xb7, 0xe1, 0xbf, 0xb, 0x45, - 0x20, 0x63, 0x1e, 0x2f, 0xa4, 0x54, 0xed, 0x92, 0xc9, 0x83, - 0xcf, 0xa0, 0x7, 0x4, 0x57, 0xb2, 0xfe, 0xcd, 0x3e, 0x18, - 0x3a, 0x17, 0x83, 0x2c, 0x51, 0x94, 0x2b, 0x48, 0x81, 0xcf, - 0xe2, 0x7, 0xb5, 0x7c, 0x63, 0xff, 00, 0x6b, 0xce, 0xfc, - 0xa9, 0xaf, 0xc4, 0xfc, 0xfd, 0xff, 00, 0xb7, 0x71, 0x12, - 0xb6, 0xd4, 0xa3, 0xf8, 0xb3, 0xde, 0x34, 0xe8, 0xf0, 0x8a, - 0x2b, 0x54, 0x71, 0x54, 0xec, 0x93, 00, 0x54, 0x97, 0xf7, - 0xd1, 0x69, 0xf6, 0xcf, 0x3c, 0xcc, 0x11, 0x14, 0x75, 0x35, - 0xf6, 0x67, 0xe8, 0x5, 0x9a, 0x2b, 0xe7, 0x3f, 0x88, 0x1f, - 0xb5, 0xbe, 0x8f, 0xe1, 0x3d, 0x51, 0xac, 0xa3, 0x96, 0x22, - 0xe3, 0x83, 0x9c, 0x13, 0xff, 00, 0xa1, 0x56, 0x57, 0x87, - 0xff, 00, 0x6b, 0xeb, 0x3d, 0x72, 0xf6, 0x38, 0x11, 0xe3, - 0xcb, 0x7a, 0x2f, 0xff, 00, 0x65, 0x40, 0x1f, 0x50, 0xd7, - 0xb, 0xf1, 0x63, 0x56, 0xfe, 0xcc, 0xf0, 0xdd, 0xc4, 0x80, - 0x67, 0x6a, 0x13, 0x8c, 0xf5, 0xad, 0xdf, 0x8, 0x78, 0x83, - 0xfe, 0x12, 0x3d, 0x29, 0x2e, 0xf1, 0x80, 0xc0, 0x63, 0x1d, - 0xeb, 0x37, 0xe2, 0x3f, 0x83, 0x9f, 0xc6, 0x1a, 0xd, 0xc5, - 0x94, 0x6d, 0xb5, 0xa5, 0x5d, 0xbd, 0x71, 0x40, 0x1f, 0xcf, - 0xc7, 0xed, 0x2a, 0x6f, 0xfc, 0x63, 0xf1, 0x43, 0x53, 0xba, - 0xc6, 0x55, 0x5f, 0x3, 0x6a, 0x92, 0x31, 0x81, 0xfe, 0x15, - 0xe4, 0xaf, 0xe1, 0x6b, 0xd5, 0xfe, 0x6, 0x3f, 0xf0, 0x3, - 0x5f, 0xb0, 0x3a, 0xff, 00, 0xfc, 0x13, 0x7e, 0xe3, 0x53, - 0xbd, 0xb8, 0xb9, 0x3b, 0x59, 0xe4, 0x62, 0xc4, 0x99, 0x87, - 0xff, 00, 0x1b, 0xae, 0x6e, 0xef, 0xfe, 0x9, 0xa1, 0xa8, - 0x63, 0xe5, 0x88, 0x9f, 0xf7, 0x66, 0xff, 00, 0xed, 0x74, - 0x1, 0xf9, 0x3c, 0x7c, 0x39, 0x7a, 0x3f, 0xe5, 0x93, 0x7f, - 0xdf, 0x27, 0xfc, 0x2a, 0x36, 0xd0, 0xaf, 0x17, 0xfe, 0x58, - 0xb1, 0xfa, 0x29, 0xff, 00, 0xa, 0xfd, 0x4b, 0xbb, 0xff, - 00, 0x82, 0x6b, 0xeb, 0x28, 0x4e, 0xcb, 0x79, 0x4f, 0x5e, - 0xac, 0x7f, 0xf8, 0xdd, 0x63, 0x5d, 0x7f, 0xc1, 0x38, 0xbc, - 0x44, 0x84, 0xe2, 0xd5, 0xff, 00, 0x33, 0xff, 00, 0xc6, - 0xe8, 0x3, 0xf3, 0x21, 0xb4, 0x9b, 0xa5, 0x1c, 0xc2, 0xff, - 00, 0xf7, 0xc9, 0xff, 00, 0xa, 0x61, 0xb0, 0xb8, 0x1f, - 0xf2, 0xc6, 0x4f, 0xfb, 0xe4, 0xd7, 0xe8, 0xf5, 0xdf, 0xfc, - 0x13, 0xc7, 0xc4, 0xd1, 0xe7, 0x16, 0x6e, 0x7f, 0x3, 0xff, - 00, 0xc6, 0xeb, 0x9f, 0xbb, 0xfd, 0x81, 0xbc, 0x57, 0x11, - 0x20, 0x59, 0x3, 0xed, 0xf3, 0x7f, 0xf1, 0xba, 00, 0xfc, - 0xfe, 0xfb, 0x24, 0xff, 00, 0xf3, 0xc6, 0x41, 0xff, 00, - 00, 0x35, 0xea, 0xff, 00, 00, 0x7c, 0x3b, 0x2e, 0xa1, - 0xe2, 0x8b, 0x72, 0x62, 0x93, 0x99, 0x55, 0x47, 0xc8, 0x7d, - 0x45, 0x7d, 0x25, 0x75, 0xfb, 0xb, 0xf8, 0xba, 0x1d, 0xdf, - 0xf1, 0x2f, 0x7, 0x3, 0xb6, 0xe3, 0xff, 00, 0xb4, 0xeb, - 0xd8, 0xff, 00, 0x67, 0x5f, 0xd8, 0xfb, 0x5b, 0xd0, 0xb5, - 0xcb, 0x19, 0x6f, 0xac, 0x95, 0x15, 0x66, 0x56, 0x62, 0x41, - 0xe3, 0x91, 0xea, 0x94, 0x1, 0xf7, 0xcf, 0xec, 0xc3, 0xe1, - 0xaf, 0xf8, 0x47, 0x3e, 0x17, 0xd8, 0xa1, 0x52, 0x8d, 0x20, - 0xc, 0x41, 0x18, 0x3f, 0x74, 0x75, 0xaf, 0x5c, 0x3d, 0x45, - 0x66, 0xf8, 0x6b, 0x49, 0x4d, 0x17, 0x43, 0xb3, 0xb3, 0x55, - 0xb, 0xe5, 0x46, 0x14, 0xe3, 0xe9, 0x5a, 0x67, 0xa6, 0x28, - 0x3, 0x84, 0xf8, 0x97, 0x7e, 0x20, 0xb0, 0xc7, 0xb1, 0xeb, - 0xf8, 0x57, 0x89, 0xac, 0x9b, 0x89, 0x27, 0xa9, 0x35, 0xeb, - 0xff, 00, 0x12, 0x6c, 0x26, 0xbe, 0x8d, 0x11, 0x10, 0xb7, - 0x27, 0xa7, 0xe1, 0x5e, 0x7f, 0xff, 00, 0x8, 0xbc, 0xca, - 0x7, 0xee, 0xcd, 0x7e, 0x55, 0x9e, 0xd3, 0xad, 0x5f, 0x16, - 0xdc, 0x56, 0x88, 0xfc, 0x4f, 0x89, 0xa8, 0xd7, 0xc4, 0xe3, - 0x9b, 0x8a, 0xd1, 0x23, 0x7, 0x75, 0x1b, 0xab, 0x6d, 0xbc, - 0x39, 0x28, 0xff, 00, 0x96, 0x7f, 0xa5, 0x44, 0xde, 0x1f, - 0x95, 0x7f, 0x80, 0xfe, 0x55, 0xf3, 0x4f, 0xb, 0x59, 0x74, - 0x3e, 0x45, 0xe0, 0xeb, 0xaf, 0xb2, 0x65, 0x66, 0x8c, 0x8a, - 0xd2, 0x6d, 0xa, 0x51, 0xfc, 0x7, 0xf2, 0xa8, 0xdb, 0x46, - 0x90, 0xe, 0x8d, 0x50, 0xe8, 0x55, 0x5d, 0xc, 0xde, 0x1e, - 0xb2, 0xfb, 0x26, 0x9f, 0x82, 0x2d, 0x3e, 0xd3, 0xab, 0x29, - 0xe7, 00, 0x8a, 0xf7, 0xad, 0x3e, 0x2d, 0x96, 0xc8, 0x3d, - 0xab, 0xcb, 0x3e, 0x1b, 0xe8, 0x6c, 0x92, 0x19, 0x18, 0x1e, - 0x4f, 0x7f, 0xad, 0x7a, 0xda, 0x2e, 0xd4, 00, 0x76, 0x15, - 0xfa, 0x7f, 0xe, 0x61, 0xdd, 0x2c, 0x37, 0x34, 0xb7, 0x67, - 0xec, 0x7c, 0x27, 0x85, 0x74, 0x30, 0xae, 0x72, 0x5a, 0xb1, - 0xf4, 0x51, 0x45, 0x7d, 0x71, 0xf7, 0x61, 0x45, 0x14, 0x50, - 0x2, 0x1a, 0xf3, 0xff, 00, 0x89, 0x29, 0xe5, 0xd9, 0x33, - 0x13, 0xc9, 0x15, 0xe8, 0xd, 0xd2, 0xbc, 0xf3, 0xe2, 0x73, - 0x34, 0xb1, 0x4, 0x3, 0xa0, 0xaf, 0x17, 0x37, 0x76, 0xc1, - 0xcc, 0xf9, 0xec, 0xf6, 0xdf, 0x51, 0x9b, 0x3c, 0x77, 0x6e, - 0xde, 0x28, 0xa1, 0xe3, 0x7f, 0x30, 0xf1, 0x46, 0xd7, 0x1d, - 0x8d, 0x7e, 0x2d, 0xf2, 0x3f, 0x9e, 0xb6, 0xe8, 0x14, 0x51, - 0xb5, 0xbf, 0xba, 0x69, 0x39, 0xf4, 0xa2, 0xe1, 0x71, 0x6b, - 0x43, 0x42, 0x6d, 0x97, 0x80, 0xf7, 0xcd, 0x67, 0x64, 0xf7, - 0x1f, 0xa5, 0x5a, 0xd2, 0x58, 0x9d, 0x42, 0x35, 0xf7, 0xcd, - 0x6b, 0x45, 0xfe, 0xf6, 0x26, 0xf4, 0x25, 0x6a, 0xb1, 0x7e, - 0x67, 0xd0, 0xbe, 0x1b, 0x18, 0xd3, 0xd4, 0xf5, 0xcd, 0x6b, - 0x8a, 0xc6, 0xf0, 0xd3, 0xee, 0xb1, 0x51, 0xe8, 0x2b, 0x66, - 0xbf, 0x74, 0xc3, 0x7f, 0x6, 0x3e, 0x87, 0xf4, 0x9e, 0xf, - 0x5a, 0x10, 0xf4, 0x16, 0x8a, 0x28, 0xae, 0xa3, 0xb0, 0x28, - 0xa2, 0x8a, 00, 0x2a, 0x2b, 0x96, 0xd9, 0xb, 0x1f, 0x6a, - 0x96, 0xb3, 0xb5, 0xab, 0x81, 0x5, 0x94, 0x8d, 0xe8, 0xd, - 0x67, 0x52, 0x5c, 0xb0, 0x72, 0x66, 0x55, 0x65, 0xc9, 0x7, - 0x26, 0x78, 0xdf, 0xc4, 0x7b, 0xef, 0x3e, 0xfc, 0x47, 0xd8, - 0x1f, 0x5a, 0xe3, 0xab, 0x4f, 0xc4, 0xb7, 0x7f, 0x6b, 0xd5, - 0xa5, 0x3d, 0x70, 0x48, 0xac, 0xca, 0xfc, 0x3b, 0x1b, 0x57, - 0xdb, 0x62, 0x27, 0x3f, 0x33, 0xf9, 0xc3, 0x31, 0xad, 0xf5, - 0x8c, 0x5d, 0x49, 0xf9, 0x85, 0x14, 0x51, 0x5c, 0x27, 0x9c, - 0x14, 0x8f, 0xf7, 0x4d, 0x2d, 0x26, 0xdf, 0x32, 0x45, 0x5f, - 0x53, 0x43, 0xf2, 0x13, 0xd7, 0x43, 0xd3, 0x3e, 0x16, 0x59, - 0x64, 0xee, 0xaf, 0x5a, 0x3, 0x18, 0xae, 0xf, 0xe1, 0xad, - 0x9f, 0x93, 0x6f, 0xbb, 0x1f, 0xc3, 0x5d, 0xed, 0x7e, 0xcb, - 0x92, 0xd2, 0xf6, 0x58, 0x38, 0xa3, 0xfa, 0x3, 0x87, 0xa8, - 0x7b, 0x1c, 0xbe, 0x8, 0x28, 0xa2, 0x8a, 0xf7, 0x8f, 0xa6, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0x28, 0x6a, 0xd6, 0x82, 0xee, 0xd1, 0x93, 0x19, - 0x35, 0xe2, 0x1e, 0x31, 0xd0, 0xde, 0xd6, 0xed, 0xe4, 0xe4, - 0x28, 0xf6, 0xaf, 0x7c, 0x20, 0x10, 0x7d, 0x2b, 0x8c, 0xf1, - 0xaf, 0x87, 0x45, 0xe5, 0xa4, 0x8e, 0x6, 0x78, 0x26, 0xbe, - 0x67, 0x3b, 0xc0, 0xfd, 0x6a, 0x8b, 0x92, 0x5a, 0xa3, 0xe3, - 0xf8, 0x8b, 0x2d, 0x58, 0xda, 0xe, 0x71, 0x5a, 0xa3, 0xc3, - 0x81, 0xc8, 0xa2, 0xac, 0x5f, 0xda, 0x35, 0xac, 0xac, 0x36, - 0x10, 0x33, 0x8e, 0x95, 0x5c, 0x57, 0xe4, 0x6e, 0x2e, 0xf, - 0x96, 0x47, 0xe1, 0x72, 0x8b, 0x83, 0xe5, 0x90, 0x51, 0x45, - 0x14, 0x8, 0x28, 0xa2, 0x8a, 0x40, 0x14, 0x51, 0x45, 00, - 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, - 0x45, 00, 0x14, 0x13, 0x8a, 0xe, 0x7b, 0x55, 0xdd, 0x37, - 0x4b, 0x97, 0x51, 0x9d, 0x54, 0x21, 0xe7, 0xbd, 0x54, 0x63, - 0x2a, 0x92, 0xe5, 0x8e, 0xe5, 0xc2, 0x12, 0xab, 0x2e, 0x48, - 0x2b, 0xb1, 0x9a, 0x66, 0x9d, 0x26, 0xa1, 0x74, 0xb1, 0xa0, - 0x27, 0x24, 0x3, 0x81, 0x5e, 0xe3, 0xe1, 0x1f, 0xc, 0xc7, - 0x61, 0x69, 0x1b, 0x38, 0x3b, 0xb8, 0xea, 0x2b, 0x27, 0xc1, - 0x9e, 0x8, 0x5d, 0x39, 0x96, 0x59, 0x17, 0x9e, 0xbf, 0xe7, - 0x8a, 0xef, 0xd1, 0x42, 00, 00, 0xc0, 0xaf, 0xd3, 0x72, - 0x3c, 0xa3, 0xea, 0xf1, 0xf6, 0xd5, 0x97, 0xbc, 0xcf, 0xd8, - 0x78, 0x6f, 0x23, 0xfa, 0xac, 0x3d, 0xbd, 0x75, 0xef, 0x31, - 0x40, 0x2, 0x96, 0x8a, 0x2b, 0xed, 0xf, 0xd0, 0x42, 0x8a, - 0x29, 0x9, 0xc0, 0xcd, 00, 0x71, 0xdf, 0x12, 0x2f, 0xbe, - 0xcb, 0xa5, 0x6d, 0xcf, 0xde, 0xaf, 0xe, 0x9d, 0xb7, 0xca, - 0x4d, 0x7a, 0x5f, 0xc5, 0xbd, 0x50, 0x17, 0x86, 0x10, 0x7b, - 0x74, 0xaf, 0x32, 0x3c, 0x92, 0x6b, 0xf2, 0x3e, 0x21, 0xaf, - 0xed, 0x71, 0x8e, 0x2b, 0x64, 0x7e, 0x19, 0xc5, 0x58, 0x8f, - 0x6d, 0x8f, 0x94, 0x13, 0xd2, 0x21, 0x48, 0x46, 0x68, 0xa2, - 0xbe, 0x60, 0xf8, 0xd1, 0xb8, 0x23, 0xbd, 0x1, 0xa4, 0x5e, - 0x8c, 0x45, 0x3a, 0x8a, 0x5b, 0x6c, 0x4e, 0xdb, 0x31, 0xeb, - 0x79, 0x3a, 0xc, 0x9, 0xd, 0x4c, 0x9a, 0xad, 0xca, 0xc, - 0x79, 0x86, 0xab, 0x51, 0x54, 0xaa, 0x4d, 0x6c, 0xcb, 0x55, - 0x6a, 0x47, 0x69, 0x32, 0xd9, 0xd6, 0x6e, 0xb1, 0xc3, 0xd4, - 0x4f, 0xa9, 0xdc, 0xc9, 0xc3, 0x1c, 0xd4, 0x34, 0x55, 0x3a, - 0xb3, 0x7f, 0x68, 0xa7, 0x5a, 0xab, 0xde, 0x4c, 0x53, 0x23, - 0x49, 0xd6, 0x93, 0x14, 0x51, 0x59, 0x19, 0x36, 0xde, 0xe1, - 0x45, 0x14, 0x50, 0x20, 0xa2, 0x8a, 0xf, 0x2, 0x80, 0x19, - 0x23, 0x71, 0x5b, 0x9e, 0x11, 0xd2, 0x7e, 0xdb, 0x7a, 0x92, - 0x1c, 0xe0, 0x1f, 0x4a, 0xc8, 0xb6, 0xb4, 0x92, 0xf1, 0x82, - 0xa2, 0xe7, 0x9a, 0xf5, 0xbf, 0x7, 0xf8, 0x7f, 0xec, 0x16, - 0x6a, 0xf2, 0x28, 0xd, 0xe9, 0x5e, 0xf6, 0x4f, 0x81, 0x96, - 0x2f, 0x10, 0x9b, 0x5a, 0x23, 0xe9, 0xb8, 0x7f, 0x2e, 0x96, - 0x37, 0x14, 0xa4, 0xd7, 0xba, 0x8d, 0x41, 0x6e, 0xb6, 0xf1, - 0xa8, 0x3, 0x18, 0x15, 0x97, 0x7a, 0xf8, 0x53, 0x5a, 0xf7, - 0x8f, 0xc9, 0xac, 0xd, 0x42, 0x4c, 0x29, 0xaf, 0xd9, 0x21, - 0x15, 0x5, 0x64, 0x7e, 0xff, 00, 0x8, 0x2a, 0x71, 0x51, - 0x89, 0x81, 0xa8, 0xbf, 0x27, 0x9a, 0xe5, 0xf5, 0x17, 0x18, - 0x35, 0xbf, 0xa8, 0xc9, 0xd6, 0xb9, 0x6d, 0x4e, 0x4c, 0x2b, - 0x55, 0x96, 0x72, 0x9a, 0xcc, 0x83, 0xe6, 0xaf, 0x24, 0xf8, - 0x85, 0x7b, 0xe5, 0xda, 0xb2, 0xff, 00, 0x5a, 0xf4, 0xfd, - 0x5e, 0x6e, 0x5a, 0xbc, 0x47, 0xe2, 0x5d, 0xfe, 0xdd, 0xe3, - 0xb0, 0xae, 0x6c, 0x44, 0xb9, 0x69, 0xb6, 0x71, 0xe2, 0xe7, - 0xc9, 0x49, 0xb3, 0xe7, 0x9f, 0x88, 0x77, 0xa1, 0xa6, 0x94, - 0x7b, 0x9f, 0xe6, 0x6b, 0xc9, 0xf5, 0x39, 0x38, 0x35, 0xde, - 0x78, 0xde, 0xeb, 0xcd, 0xba, 0x70, 0x3f, 0xbc, 0x7f, 0xad, - 0x79, 0xde, 0xa5, 0x27, 0x5a, 0xf8, 0x26, 0xf9, 0xaa, 0xb6, - 0x7e, 0x65, 0x27, 0xcf, 0x5d, 0xb3, 0x9c, 0xd4, 0x5f, 0x2e, - 0x6b, 0x1e, 0x63, 0x9e, 0x33, 0x8a, 0xd1, 0xbd, 0x7c, 0xb9, - 0xac, 0xa9, 0xcf, 0xcd, 0x5e, 0xed, 0x15, 0x64, 0x7d, 0x2d, - 0x8, 0xd9, 0x23, 0xde, 0xbf, 0x62, 0x2f, 0xa, 0x37, 0x89, - 0x3e, 0x36, 0xdb, 0x4c, 0x54, 0xec, 0xb2, 0x8b, 0xcd, 0xdd, - 0x83, 0xdd, 0xd5, 0x48, 0xfc, 0x98, 0xd7, 0xeb, 0x9d, 0x9c, - 0x22, 0x18, 0xa3, 0x8c, 0x74, 0x45, 0xb, 0xf9, 0x57, 0xe7, - 0x5f, 0xfc, 0x13, 0x8f, 0xc3, 0x2a, 0x2f, 0xee, 0x75, 0x89, - 0x41, 0xdf, 0x3d, 0xc9, 0x86, 0x3c, 0x74, 0xda, 0x17, 0x27, - 0xb7, 0x5c, 0xad, 0x7e, 0x8d, 0x40, 0xb5, 0xf4, 0x54, 0x63, - 0x68, 0x23, 0xea, 0xf0, 0xf1, 0xe5, 0xa6, 0x8b, 0x90, 0x2f, - 0x35, 0xa3, 0xa, 0xf0, 0x2a, 0x8c, 0x2, 0xb4, 0x61, 0x1d, - 0x2b, 0x73, 0xa4, 0xb7, 0x8, 0xc9, 0xad, 0x18, 0x47, 0x19, - 0xaa, 0x30, 0xe, 0x6a, 0xfc, 0x27, 0x20, 0x50, 0x5, 0xd8, - 0x5, 0x5c, 0x8e, 0xaa, 0xc1, 0xc5, 0x5b, 0x8e, 0x80, 0x27, - 0x8c, 0x66, 0xac, 0x20, 0xa8, 0x63, 0xc5, 0x4e, 0x94, 0x1, - 0x20, 0xe8, 0x2a, 0x41, 0xd6, 0x98, 0x3a, 0xd4, 0x8b, 0x40, - 0xf, 0x5a, 0x7d, 0x31, 0x7b, 0x53, 0xe8, 00, 0xa7, 0x1, - 0xc5, 0x36, 0x9c, 0x3a, 0x50, 0x2, 0xd1, 0x45, 0x14, 0x1, - 0x9e, 0xd5, 0xc, 0x86, 0xa6, 0x7a, 0x82, 0x4a, 00, 0xaf, - 0x21, 0xaa, 0xb2, 0x9a, 0xb3, 0x21, 0xae, 0x7b, 0xc6, 0x3a, - 0xbc, 0x7a, 0x17, 0x86, 0xb5, 0x4b, 0xf9, 0x66, 0xf2, 0x16, - 0xde, 0xd9, 0xdf, 0xcc, 0xe7, 0xe5, 0x3b, 0x4e, 0x3f, 0x5c, - 0x54, 0xc9, 0xa8, 0xa7, 0x27, 0xd0, 0x99, 0x49, 0x42, 0x2e, - 0x4f, 0xa1, 0xf0, 0x77, 0xc5, 0xeb, 0xf3, 0xf1, 0x17, 0xf6, - 0x93, 0xba, 0x48, 0xff, 00, 0xd4, 0xc3, 0x75, 0x15, 0x9a, - 0x86, 0x39, 0xc6, 0xd6, 0xa, 0xdf, 0xf8, 0xf6, 0x4d, 0x7d, - 0xd3, 0xf0, 0xf3, 0x4c, 0x5d, 0x3f, 0x4c, 0xb7, 0x89, 0x40, - 0x1, 0x23, 0x3, 0x81, 0xec, 0x2b, 0xe1, 0x4f, 0xd9, 0xab, - 0x4b, 0x93, 0xc5, 0x9f, 0x13, 0x66, 0xd5, 0x6e, 0x3f, 0x7a, - 0xef, 0x33, 0xdd, 0xc8, 0xcf, 0x8c, 0x97, 0x67, 0xdc, 0x49, - 0xf7, 0xc9, 0x35, 0xfa, 0x17, 0xe1, 0xbb, 0x7f, 0x2e, 0x34, - 0x1e, 0xd5, 0xf2, 0x1c, 0x3e, 0xbd, 0xb4, 0xab, 0x62, 0xe5, - 0xbc, 0xe4, 0x7c, 0x1f, 0xb, 0x45, 0xe2, 0x25, 0x88, 0xc7, - 0x4b, 0x79, 0xc9, 0xdb, 0xd0, 0xe8, 0xad, 0x97, 0x9, 0x5e, - 0x47, 0xfb, 0x4b, 0xf8, 0xec, 0xf8, 0x2f, 0xc1, 0x6f, 0x22, - 0x6e, 0xde, 0xc1, 0x8e, 0x54, 0xe3, 0xd3, 0x1d, 0xfd, 0xeb, - 0xd8, 0x54, 0x61, 0x45, 0x7c, 0x3b, 0xff, 00, 0x5, 0x9, - 0xf1, 0xe2, 0x69, 0x1e, 0x1c, 0xb9, 0x8c, 0x31, 0x3b, 0x10, - 0x82, 0x1, 0xc7, 0xf7, 0x6b, 0xec, 0x4f, 0xbe, 0x3f, 0x2c, - 0xfe, 0x2e, 0x7e, 0xd0, 0x7a, 0xde, 0xaf, 0xe3, 0x7d, 0x42, - 0x58, 0xee, 0x25, 0x8, 0xb2, 0x15, 0x3, 0xcc, 0x6f, 0xfe, - 0x2a, 0xbb, 0x9f, 0xd9, 0xa3, 0xc7, 0x7e, 0x21, 0xf1, 0x47, - 0x8a, 0x23, 0xd, 0x72, 0xc1, 0xc, 0x8a, 0x80, 0xb3, 0xb7, - 0xa8, 0xf7, 0x35, 0xf2, 0xbe, 0xa3, 0x72, 0x6f, 0x2f, 0xa6, - 0x98, 0xe7, 0x2e, 0xc4, 0xf3, 0x5f, 0x76, 0x7f, 0xc1, 0x3f, - 0x7c, 0x3, 0xfd, 0xa3, 0xaf, 0x58, 0x48, 0x63, 0xf, 0xb9, - 0xd5, 0xce, 0x47, 0xba, 0xd0, 0x7, 0xeb, 0xef, 0xc1, 0xed, - 0x3e, 0x4d, 0x3f, 0xc0, 0x5a, 0x62, 0xca, 0xc5, 0xe4, 0x68, - 0x95, 0x8b, 0x1e, 0xff, 00, 0x28, 0xae, 0xca, 0x59, 0xd2, - 0x11, 0x97, 0x6c, 0x55, 0x4d, 0x3a, 0x5, 0xd3, 0x34, 0x9b, - 0x78, 0xf0, 0x2, 0xc5, 0x12, 0x8e, 0x3d, 0x85, 0x7c, 0x83, - 0xfb, 0x44, 0xfe, 0xda, 0xda, 0x3f, 0xc3, 0x4f, 0x1a, 0xc9, - 0xa1, 0xc8, 0x24, 0x67, 0x88, 0xe1, 0xb6, 0x92, 0x7, 0x40, - 0x7f, 0xba, 0x7d, 0x68, 0x3, 0xec, 0x65, 0xbd, 0x89, 0x8f, - 0xe, 0x2a, 0x65, 0x21, 0x86, 0x41, 0xcd, 0x7c, 0x1, 0xe1, - 0x4f, 0xdb, 0xdb, 0x46, 0xd7, 0xb5, 0x4b, 0x7b, 0x44, 0x8e, - 0x66, 0x79, 0xe, 0x7, 0xce, 0x47, 0xfe, 0xc9, 0x5f, 0x66, - 0xfc, 0x35, 0xf1, 0xa4, 0x7e, 0x30, 0xd2, 0x56, 0xe2, 0x35, - 0x2a, 0xa4, 0x67, 0x93, 0x9f, 0xe9, 0x40, 0x1d, 0x91, 00, - 0xf5, 0xa6, 0x98, 0x90, 0xf5, 0x45, 0x3f, 0x85, 0x3e, 0x8a, - 00, 0x85, 0xad, 0x21, 0x6e, 0xb1, 0x21, 0xff, 00, 0x80, - 0x8a, 0x8d, 0xb4, 0xcb, 0x46, 0xeb, 0x6b, 0x1, 0xfa, 0xc6, - 0x2a, 0xd5, 0x14, 0x1, 0x41, 0xb4, 0x2d, 0x39, 0xba, 0xd8, - 0xdb, 0x9f, 0xac, 0x4b, 0xfe, 0x14, 0xf8, 0x34, 0x7b, 0x1b, - 0x66, 0x6, 0x2b, 0x38, 0x62, 0x23, 0xba, 0xc6, 0x5, 0x5c, - 0xa2, 0x80, 0x10, 0x51, 0x8c, 0xa, 0x5a, 0x42, 0x33, 0x40, - 0x15, 0xe7, 0xb2, 0x86, 0xeb, 0x1e, 0x64, 0x6a, 0xf8, 0xf5, - 0x15, 0x5d, 0xb4, 0x3b, 0x46, 0xff, 00, 0x96, 0x4a, 0x3f, - 0xa, 0xd0, 0xdb, 0x46, 0x2b, 0x39, 0x53, 0x84, 0xb5, 0x68, - 0xca, 0x54, 0xa9, 0xc9, 0xde, 0x51, 0x4c, 0xcb, 0x6f, 0xe, - 0xd9, 0x37, 0xfc, 0xb2, 0x1f, 0x90, 0xa8, 0xdb, 0xc2, 0xf6, - 0x4c, 0x7f, 0xd5, 0x8f, 0xc8, 0x56, 0xc6, 0x28, 0xc5, 0x66, - 0xf0, 0xf4, 0x9e, 0xf1, 0x46, 0x4f, 0xb, 0x41, 0xef, 0x5, - 0xf7, 0x18, 0x4f, 0xe1, 0x1b, 0x36, 0xfe, 0x1, 0xf9, 0xa, - 0x85, 0xfc, 0x17, 0x66, 0xdf, 0xc2, 0xbf, 0x95, 0x74, 0x78, - 0xa3, 0x15, 0x93, 0xc1, 0xd0, 0x7f, 0x61, 0x19, 0x3c, 0x6, - 0x19, 0xef, 0x4, 0x66, 0xe9, 0x9a, 0x2c, 0x1a, 0x64, 0x61, - 0x63, 0x3, 0xeb, 0x8a, 0xd1, 0x14, 0xb8, 0xe2, 0x8a, 0xe9, - 0x84, 0x23, 0x4e, 0x3c, 0xb1, 0x56, 0x3a, 0xe9, 0xd3, 0x8d, - 0x28, 0xf2, 0xc1, 0x59, 0xb, 0x45, 0x14, 0x56, 0x86, 0x81, - 0x45, 0x14, 0x50, 0x2, 0x1a, 0xe6, 0x7c, 0x51, 0xa1, 0xb6, - 0xa6, 0xa7, 0x68, 0x1c, 0xfa, 0x8a, 0xe9, 0x8f, 0x34, 0x9b, - 0x6b, 0xa, 0xf4, 0x63, 0x5e, 0xe, 0x13, 0xd8, 0xe6, 0xc4, - 0x61, 0xe1, 0x89, 0xa6, 0xe9, 0xcf, 0x66, 0x79, 0x1, 0xf8, - 0x7f, 0x38, 0x24, 0xf1, 0xf9, 0x7f, 0xf5, 0xaa, 0x17, 0xf0, - 0x1c, 0xe3, 0xb0, 0xfc, 0xab, 0xd9, 0x4a, 0xa, 0x4f, 0x2c, - 0x7a, 0xf, 0xca, 0xbe, 0x7d, 0xe4, 0x18, 0x56, 0x7c, 0xbc, - 0xb8, 0x63, 0x6, 0xf6, 0x3c, 0x55, 0xbc, 0xf, 0x70, 0x3a, - 0x28, 0xfc, 0x8d, 0x44, 0xfe, 0xc, 0x9c, 0x7f, 0xa, 0xfe, - 00, 0xd7, 0xb7, 0x18, 0x50, 0xff, 00, 0x8, 0xfc, 0xa9, - 0xd, 0xb4, 0x47, 0xf8, 0x17, 0xf2, 0xac, 0x5f, 0xe, 0xe1, - 0xde, 0xcc, 0xc2, 0x5c, 0x29, 0x85, 0x7b, 0x33, 0xc2, 0x9f, - 0xc2, 0x13, 0xaf, 0xf0, 0xf, 0xca, 0xa4, 0xd3, 0x3c, 0x2b, - 0x34, 0x57, 0x61, 0xfc, 0xb1, 0xf9, 0x57, 0xb7, 0x9b, 0x28, - 0x5b, 0xfe, 0x59, 0xaf, 0xe5, 0x48, 0x2c, 0x20, 0x7, 0x88, - 0xd7, 0xf2, 0xac, 0xd7, 0xe, 0x52, 0x52, 0x52, 0x52, 0xd8, - 0xc5, 0x70, 0x9d, 0x18, 0xc9, 0x49, 0x4b, 0x62, 0x96, 0x83, - 0x6c, 0xd6, 0xd6, 0x40, 0x30, 0xc1, 0xad, 0x41, 0x48, 0x14, - 0x1, 0x81, 0xc0, 0xa5, 0xaf, 0xad, 0xa7, 0x5, 0x4e, 0xa, - 0x2b, 0xa1, 0xf7, 0x34, 0xa9, 0xaa, 0x50, 0x50, 0x5d, 0x5, - 0xa2, 0x8a, 0x2b, 0x43, 0x50, 0xa2, 0x8a, 0x28, 0x1, 0xa7, - 0xa5, 0x73, 0x9e, 0x32, 0x95, 0x93, 0x4d, 0x94, 0x3, 0x82, - 0x54, 0x81, 0x5d, 0x21, 0x15, 0x9f, 0xab, 0x69, 0x4b, 0xa9, - 0x44, 0x50, 0x90, 0x33, 0xea, 0x2b, 0x97, 0x13, 0x9, 0x54, - 0xa5, 0x28, 0x47, 0x76, 0x71, 0x63, 0x29, 0xce, 0xad, 0x9, - 0x42, 0x1b, 0xb3, 0xe7, 0x5b, 0x8b, 0x29, 0x26, 0xb9, 0x91, - 0xf3, 0xd4, 0x9e, 0x4d, 0x44, 0x6c, 0x64, 0x1d, 0xeb, 0xda, - 0x5f, 0xe1, 0xec, 0x47, 0x3c, 0xa1, 0x3f, 0xee, 0xd4, 0xf, - 0xf0, 0xed, 0x4f, 0x42, 0xbf, 0xf7, 0xcf, 0xff, 00, 0x5e, - 0xbf, 0x35, 0x97, 0xe, 0xe2, 0x2f, 0x7b, 0x1f, 0x91, 0x4f, - 0x85, 0x31, 0x57, 0x6e, 0xc7, 0x8e, 0x1b, 0x39, 0x7, 0x7a, - 0x6f, 0xd9, 0x64, 0xcf, 0x5a, 0xf5, 0xf6, 0xf8, 0x77, 0xd7, - 0x5, 0x7f, 0x2a, 0x81, 0xfe, 0x1d, 0x37, 0xb7, 0xe5, 0x5c, - 0xef, 0x20, 0xc4, 0xae, 0x87, 0x2c, 0xb8, 0x5f, 0x16, 0xb6, - 0x89, 0xe4, 0xc6, 0x9, 0x5, 0x4f, 0xa5, 0xda, 0x3c, 0xda, - 0x84, 0x63, 0x1d, 0xd, 0x7a, 0x5c, 0x9f, 0xf, 0x24, 0xec, - 0x7f, 0x4f, 0xfe, 0xbd, 0x4b, 0xa4, 0xf8, 0xa, 0x4b, 0x6b, - 0xb0, 0xec, 0x47, 0x1f, 0xec, 0xd4, 0xc3, 0x22, 0xc4, 0x7b, - 0x48, 0xde, 0x3a, 0x11, 0x4f, 0x86, 0xf1, 0x7e, 0xd6, 0x37, - 0x8e, 0x87, 0x53, 0xe0, 0xeb, 0x43, 0x6f, 0x62, 0xe, 0x31, - 0xc5, 0x74, 0x95, 0x56, 0xc2, 0xd8, 0x5a, 0xdb, 0xaa, 0x77, - 0xab, 0x55, 0xfa, 0xae, 0x1e, 0x9f, 0xb2, 0xa5, 0x18, 0x76, - 0x3f, 0x6c, 0xc2, 0x52, 0xf6, 0x14, 0x63, 0x4f, 0xb0, 0x51, - 0x45, 0x15, 0xd2, 0x75, 0x85, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x41, 0x75, 0x6e, - 0xb7, 0x31, 0x14, 0x6e, 0x84, 0x54, 0xf4, 0x94, 0x9a, 0x4d, - 0x59, 0x89, 0xa5, 0x25, 0x66, 0x79, 0x77, 0x8b, 0xfc, 0x2a, - 0xa3, 0x7b, 0x46, 0x83, 0xf2, 0xaf, 0x35, 0xbc, 0xd3, 0x67, - 0xb7, 0x90, 0xee, 0x50, 0x2b, 0xe9, 0x5b, 0x8b, 0x54, 0xb8, - 0x8c, 0xab, 0x28, 0x3f, 0x85, 0x71, 0x1e, 0x22, 0xf0, 0x93, - 0x5c, 0xee, 0x31, 0xa8, 0x1f, 0x85, 0x7c, 0x26, 0x6d, 0x91, - 0xfb, 0x4b, 0xd4, 0xa4, 0x7e, 0x6b, 0x9d, 0xf0, 0xef, 0xb5, - 0x6e, 0xb5, 0xf, 0xb8, 0xf1, 0x7c, 0x63, 0x83, 0x46, 0x6b, - 0xa5, 0xd5, 0x3c, 0x1d, 0x73, 0x3, 0x13, 0xbb, 0x1f, 0x87, - 0xff, 00, 0x5e, 0xb0, 0x66, 0xd3, 0xe4, 0xb7, 0x38, 0x63, - 0x9f, 0xc2, 0xbe, 0x6, 0xae, 0x1a, 0xad, 0x17, 0x69, 0xc6, - 0xc7, 0xe6, 0x15, 0xf0, 0x95, 0xf0, 0xee, 0xd3, 0x8d, 0x88, - 0x28, 0xa5, 0xc1, 0x1c, 0x1a, 0x4c, 0x8a, 0xe6, 0xbf, 0x73, - 0x8e, 0xfd, 0xc2, 0x8a, 0x37, 0xa, 0x37, 0xf, 0x5a, 0x2e, - 0x17, 0x41, 0x45, 0x14, 0x50, 0x30, 0xa2, 0x82, 0x71, 0xdb, - 0x34, 0xaa, 0x8c, 0xe7, 0x85, 0x34, 0x6a, 0x24, 0xdb, 0x76, - 0x42, 0x12, 0x5, 0x2c, 0x68, 0x66, 0x20, 0x28, 0xe6, 0xb5, - 0x74, 0xed, 0x2, 0x4b, 0xf6, 0xc6, 0x31, 0xee, 0x6b, 0xb5, - 0xd0, 0x7e, 0x1d, 0xb0, 0x91, 0x5d, 0xb1, 0xff, 00, 0x7c, - 0xd7, 0xa7, 0x85, 0xcb, 0xb1, 0x18, 0xa6, 0xb9, 0x56, 0x87, - 0xb5, 0x83, 0xca, 0x71, 0x58, 0xc9, 0x2e, 0x48, 0xe8, 0x72, - 0x5a, 0x37, 0x85, 0xae, 0x2f, 0xa4, 0x19, 0x1c, 0x67, 0xd2, - 0xbd, 0x63, 0xc3, 0x9e, 0xd, 0x82, 0xca, 0x15, 0x77, 0x40, - 0x5b, 0xe9, 0x5b, 0x9a, 0x56, 0x89, 0x15, 0x84, 0x40, 0x6d, - 0x5c, 0x8f, 0x6a, 0xd2, 0xb, 0x81, 0x8e, 0xd5, 0xfa, 0x4e, - 0x5d, 0x92, 0xd2, 0xc2, 0x25, 0x39, 0x2b, 0xb3, 0xf5, 0xac, - 0xa7, 0x87, 0xa8, 0xe0, 0x57, 0x3d, 0x45, 0x79, 0xc, 0x8e, - 0x31, 0x1a, 0xed, 0x51, 0x52, 0xa, 0x31, 0x4b, 0x5f, 0x4c, - 0x95, 0x8f, 0xb1, 0x4a, 0xda, 0x20, 0xa2, 0x8a, 0x29, 0x8c, - 0x2a, 0xb5, 0xe4, 0xc2, 0x18, 0x1d, 0x8d, 0x58, 0xac, 0x3f, - 0x14, 0xdd, 0x1b, 0x7b, 0x33, 0x8f, 0x4a, 0xc2, 0xbc, 0xfd, - 0x9d, 0x39, 0x4c, 0xe6, 0xc4, 0x55, 0x54, 0x69, 0x4a, 0x7d, - 0x8f, 0x1e, 0xf8, 0x87, 0x7d, 0xf6, 0xbd, 0x61, 0x70, 0x4e, - 00, 0x3f, 0xce, 0xb9, 0x7a, 0xbd, 0xae, 0x5c, 0x35, 0xce, - 0xa4, 0xec, 0x7b, 0x13, 0x54, 0x6b, 0xf0, 0xec, 0x65, 0x57, - 0x5a, 0xbc, 0xe6, 0xfa, 0xb3, 0xf9, 0xc3, 0x1d, 0x59, 0xd7, - 0xc4, 0xd4, 0xa8, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0x8e, 0xc7, - 0xd, 0x82, 0x8a, 0x28, 0xa7, 0x60, 0xb0, 0x51, 0x45, 0x14, - 0x58, 0x2c, 0x14, 0x51, 0x45, 0x2b, 0x5, 0x82, 0x8a, 0x28, - 0xa7, 0x60, 0xb0, 0x51, 0x45, 0x3, 0xe6, 0xe0, 0x52, 0x10, - 0x84, 0xe2, 0xa4, 0xb5, 0xb7, 0x6b, 0xc9, 0x76, 0x28, 0x39, - 0x35, 0x6f, 0x4f, 0xd2, 0x27, 0xbb, 0x95, 0x40, 0x5e, 0x9, - 0xaf, 0x4e, 0xf0, 0xaf, 0x82, 0x95, 0x4a, 0xbb, 0x81, 0x9f, - 0xa5, 0x7a, 0xd8, 0x2c, 0xb6, 0xae, 0x36, 0x76, 0x4b, 0x43, - 0xdc, 0xcb, 0x72, 0x8a, 0xf9, 0x84, 0xd2, 0x4a, 0xc8, 0xcf, - 0xf0, 0x67, 0x83, 0xf6, 0x44, 0x24, 0x91, 0x43, 0x7b, 0x91, - 0x5d, 0xe4, 0x90, 0xad, 0xac, 0xa, 0x80, 0x1, 0x5a, 0x96, - 0xb6, 0x89, 0x67, 0xe, 0xc5, 0x3, 0x8f, 0x41, 0x54, 0x75, - 0x7, 0xe3, 0x15, 0xfa, 0xd6, 0x3, 0x3, 0x4f, 0x5, 0x4d, - 0x46, 0x2b, 0x53, 0xf7, 0x2c, 0xb7, 0x2d, 0xa7, 0x97, 0xd2, - 0x50, 0x8a, 0xd4, 0xe7, 0xef, 0x1a, 0xb9, 0xed, 0x49, 0xf8, - 0x35, 0xd0, 0x5e, 0xbf, 0x5a, 0xe7, 0x75, 0x27, 0xeb, 0x5e, - 0xa1, 0xec, 0x9c, 0xce, 0xa2, 0xfd, 0x6b, 0x94, 0xd5, 0xe5, - 0xc2, 0x9a, 0xe9, 0xf5, 0x29, 0x3a, 0xd7, 0x23, 0xab, 0xcb, - 0xc1, 0xe6, 0x80, 0x38, 0xcd, 0x5e, 0x4f, 0xbf, 0x5f, 0x3d, - 0x7c, 0x4e, 0xd4, 0xe, 0xf9, 0xb9, 0x38, 0xc9, 0xaf, 0x7e, - 0xd6, 0xe6, 0xda, 0xae, 0x7d, 0xab, 0xe6, 0x3f, 0x89, 0x97, - 0xf8, 0x79, 0xb9, 0x27, 0x93, 0xde, 0xbc, 0xac, 0xc2, 0x7c, - 0xb4, 0x8f, 0x17, 0x34, 0x9f, 0x25, 0x13, 0xc2, 0x3c, 0x4d, - 0x70, 0x64, 0xbd, 0x90, 0x92, 0x7a, 0x9f, 0xe6, 0x6b, 0x88, - 0xd4, 0xe4, 0xeb, 0x5d, 0x56, 0xb9, 0x36, 0xf9, 0xe4, 0x3e, - 0xe6, 0xb8, 0xed, 0x4d, 0xf8, 0x6a, 0xf8, 0xea, 0x3e, 0xf4, - 0xee, 0x7c, 0x6, 0x19, 0x73, 0x4e, 0xe6, 0x5, 0xd3, 0x65, - 0x8d, 0x66, 0x4e, 0x72, 0x4f, 0xbd, 0x68, 0x5c, 0xb7, 0x26, - 0xaa, 0xda, 0xc2, 0x6e, 0xaf, 0xed, 0xa1, 00, 0x93, 0x24, - 0x8a, 0xb8, 0x3, 0x3d, 0x4d, 0x7d, 0x1d, 0x25, 0xb1, 0xf5, - 0xb4, 0x23, 0xb2, 0x3f, 0x4b, 0x7f, 0x61, 0x2f, 0x9, 0x47, - 0xa2, 0xf8, 0x1f, 0x45, 0x65, 0xc3, 0xbc, 0x91, 0x35, 0xeb, - 0x3e, 0x39, 0xfd, 0xe6, 0xe, 0x9, 0xe3, 0xa6, 0xea, 0xfb, - 0x16, 0x1c, 0xe0, 0x67, 0xad, 0x78, 0xdf, 0xec, 0xeb, 0xe1, - 0xf1, 0xa1, 0xf8, 0x5a, 0xde, 00, 0xaa, 0xab, 0x6f, 0x6f, - 0x15, 0xb2, 0x6d, 00, 0xc, 0x2a, 0x81, 0xc0, 0x1d, 0x3a, - 0x57, 0xb3, 0x42, 0xb5, 0xf4, 0x31, 0x56, 0x49, 0x1f, 0x55, - 0x15, 0x68, 0xa4, 0x5e, 0xb7, 0x7, 0xd6, 0xb4, 0x21, 0xaa, - 0x56, 0xeb, 0x57, 0xe0, 0x1c, 0xa, 0xa2, 0x8b, 0xb0, 0xe, - 0x5, 0x5f, 0x8b, 0x8c, 0x55, 0x4b, 0x75, 0xe9, 0x57, 0x63, - 0x1d, 0x28, 0x2, 0xe4, 0x3c, 0xd5, 0xb8, 0xc5, 0x56, 0xb7, - 0x18, 0x15, 0x6e, 0x3a, 00, 0x9e, 0x31, 0x53, 0xaf, 0x41, - 0x51, 0x46, 0x2a, 0x75, 0x14, 00, 0xf5, 0xa7, 0x81, 0xc5, - 0x31, 0x7a, 0x54, 0x8b, 0xc5, 00, 0x3d, 0x69, 0xd4, 0x8b, - 0x4b, 0x40, 0x5, 0x3e, 0x9a, 0x3a, 0xd3, 0xa8, 00, 0xa2, - 0x8a, 0x28, 0x3, 0x39, 0xfa, 0xd5, 0x79, 0xd, 0x4e, 0xf5, - 0x5a, 0x43, 0x40, 0x15, 0xe4, 0x35, 0xe0, 0x9f, 0xb6, 0x37, - 0x8b, 0xcf, 0x86, 0xbe, 0xf, 0x5d, 0xda, 0xa2, 0x2b, 0xbe, - 0xaf, 0x32, 0x59, 0x6e, 0x24, 0xe5, 0x41, 0xf9, 0xf7, 0xf, - 0xfb, 0xe3, 0x1f, 0x8d, 0x7b, 0xcc, 0xb5, 0xf1, 0x27, 0xed, - 0xb7, 0xe2, 0xe8, 0xbc, 0x41, 0xe3, 0x9d, 0x7, 0xc2, 0x96, - 0xbb, 0x9a, 0x5d, 0x3d, 0x4c, 0xf3, 0xff, 00, 0x74, 0xb4, - 0x98, 0x8, 0x38, 0xee, 0x30, 0x7f, 0x3a, 0xf0, 0xf3, 0xac, - 0x47, 0xd5, 0xb0, 0x35, 0x25, 0x7d, 0x5a, 0xb2, 0xf9, 0x9f, - 0x39, 0xc4, 0x18, 0xaf, 0xaa, 0x65, 0xb5, 0x67, 0x7d, 0x5a, - 0xb2, 0xf5, 0x66, 0xe7, 0xec, 0x73, 0xe1, 0x63, 0x6, 0x93, - 0x36, 0xa2, 0xd9, 0xcc, 0x8f, 0xb4, 0xf, 0x6c, 0x2d, 0x7d, - 0x97, 0xa3, 0xc3, 0xb1, 0x17, 0x35, 0xe2, 0x7f, 0xb3, 0xe7, - 0x85, 0xf, 0x87, 0xfc, 0x13, 0xa6, 0xc2, 0xc8, 0xaa, 0xec, - 0x81, 0xdb, 0x69, 0x3d, 0x48, 0x15, 0xee, 0xd6, 0x11, 0xed, - 0x1f, 0x85, 0x5e, 0x51, 0x87, 0xfa, 0xb6, 0xa, 0x9c, 0x1e, - 0xf6, 0xbb, 0xf9, 0x9a, 0x64, 0x38, 0x6f, 0xaa, 0x65, 0xf4, - 0xa9, 0xdb, 0x5b, 0x5d, 0xfc, 0xcb, 0x57, 0x12, 0x8b, 0x7b, - 0x79, 0x24, 0x6e, 0x15, 0x14, 0x93, 0x5f, 0x90, 0x1f, 0xf0, - 0x52, 0x9f, 0x88, 0xbf, 0x69, 0x96, 0x4b, 0x34, 0x70, 0x1e, - 0x42, 0x47, 0x4e, 0xbf, 0x77, 0xda, 0xbf, 0x57, 0xfe, 0x20, - 0xea, 0xa3, 0x48, 0xf0, 0xad, 0xec, 0xb9, 0x21, 0x8a, 0x60, - 0x62, 0xbf, 0x4, 0x7f, 0x6d, 0xef, 0x1b, 0x7f, 0xc2, 0x43, - 0xf1, 0x15, 0xed, 0x56, 0x46, 0x91, 0x61, 0xcf, 0xc, 00, - 0xc7, 0xdd, 0xff, 00, 0xa, 0xf6, 0x4f, 0x7c, 0xf9, 0xd7, - 0x4b, 0xb5, 0x37, 0x97, 0xf6, 0xf0, 0x81, 0xf7, 0xe4, 0x51, - 0xf8, 0x67, 0x9a, 0xfd, 0x7f, 0xff, 00, 0x82, 0x71, 0xf8, - 0x22, 0x12, 0x22, 0xb9, 0xc9, 0x6f, 0x29, 0x57, 0x20, 0xe, - 0x6, 0x36, 0xfb, 0xd7, 0xe4, 0x37, 0x87, 0xef, 0x22, 0xb0, - 0xd4, 0xe1, 0x9e, 0x5c, 0xed, 0x46, 0x7, 0x8a, 0xfd, 0x48, - 0xfd, 0x88, 0xbf, 0x6a, 0x8f, 0xb, 0xfc, 0x3a, 0xf0, 0xff, - 00, 0xd9, 0xef, 0x96, 0xe1, 0xa6, 0x90, 0x1, 0xfb, 0xb8, - 0xd4, 0x8e, 0x8b, 0xea, 0x7d, 0xa8, 0x3, 0xf4, 0xd3, 0xc5, - 0x97, 0xc3, 0x4f, 0xd1, 0x2e, 0x25, 0xec, 0xa8, 0x49, 0xfa, - 0x62, 0xbf, 0x9e, 0xdf, 0xdb, 0x5f, 0xc5, 0xb2, 0xf8, 0x9f, - 0xf6, 0x86, 0xf1, 0x44, 0xc6, 0x42, 0x56, 0x39, 0xc2, 0x2e, - 0x38, 0x3, 0xa, 0xb5, 0xfa, 0xb9, 0xf1, 0x87, 0xf6, 0xe6, - 0xf0, 0x99, 0xf0, 0x8e, 0xa0, 0x90, 0x47, 0x77, 0xbc, 0xc4, - 0x55, 0x7e, 0x45, 0xea, 0x47, 0xfb, 0xd5, 0xf8, 0x9f, 0xf1, - 0x3b, 0xc4, 0x43, 0xc5, 0x9e, 0x3e, 0xd6, 0xf5, 0x65, 0xdd, - 0xb6, 0xea, 0xe0, 0xb8, 0xdd, 0xd7, 0xb0, 0xfe, 0x94, 0x1, - 0xe8, 0xbf, 0xb2, 0xdf, 0x86, 0xe5, 0xf1, 0x17, 0xc4, 0x1b, - 0x43, 0x96, 0x65, 0x47, 0x1d, 0xfa, 0xf5, 0xaf, 0xde, 0x8f, - 0xd9, 0xef, 0xc3, 0xc3, 0x45, 0xf0, 0x4d, 0xbb, 0x75, 0x67, - 0x18, 0xcf, 0xb0, 0xaf, 0xc6, 0x5f, 0xd8, 0x9e, 0xeb, 0x49, - 0xf0, 0xfe, 0xb3, 0x15, 0xde, 0xa6, 0x33, 0x96, 0xc9, 0xda, - 0x32, 0x4f, 0x5c, 0xe, 0xa2, 0xbf, 0x5f, 0x7c, 0x1d, 0xfb, - 0x45, 0x78, 0x27, 0x4e, 0xd0, 0x6d, 0x2d, 0xbe, 0xd1, 0x3a, - 0xb2, 0xa7, 0x41, 0x18, 0xff, 00, 0xe2, 0xa8, 0x3, 0xdc, - 0x68, 0xaf, 0x31, 0x8f, 0xf6, 0x89, 0xf0, 0x6c, 0xa3, 0x8b, - 0xa9, 0xff, 00, 0xef, 0x81, 0xff, 00, 0xc5, 0x55, 0xb8, - 0xfe, 0x3c, 0x78, 0x46, 0x4e, 0x97, 0xb2, 0xf, 0xaa, 0xf, - 0xf1, 0xa0, 0xf, 0x43, 0xa2, 0xb8, 0x68, 0xbe, 0x33, 0x78, - 0x5e, 0x53, 0xc5, 0xf1, 0x1f, 0x55, 0xff, 00, 0xeb, 0xd5, - 0xc8, 0xfe, 0x29, 0x78, 0x72, 0x5e, 0x97, 0xe0, 0x7f, 0xc0, - 0x4d, 00, 0x75, 0xb4, 0x56, 0x5e, 0x99, 0xe2, 0x5d, 0x3b, - 0x57, 0x20, 0x5a, 0xdc, 0xac, 0xa4, 0xf4, 0x2, 0xb5, 0x28, - 00, 0xa2, 0x8a, 0x8a, 0x5b, 0xa8, 0x60, 0x19, 0x92, 0x45, - 0x4f, 0xa9, 0xa0, 0x9, 0x68, 0xa8, 0x16, 0xfa, 0xdd, 0xba, - 0x4f, 0x19, 0xff, 00, 0x81, 0xa, 0x78, 0x9e, 0x33, 0xd2, - 0x45, 0x3f, 0x46, 0x14, 0x1, 0x25, 0x14, 0xdd, 0xea, 0x7f, - 0x88, 0x7e, 0x74, 0xbb, 0x87, 0xa8, 0xa0, 0x5, 0xa2, 0x8a, - 0x4a, 00, 0x5a, 0x28, 0xa4, 0xcd, 00, 0x2d, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x99, 0x14, 0xb4, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x52, 0x1a, 0x5a, 0x28, 0x1, - 0xb8, 0xa3, 0x8a, 0x75, 0x14, 00, 0xde, 0x28, 0xcd, 0x3a, - 0x8a, 00, 0x6e, 0x1, 0xa5, 0xc0, 0x14, 0xb4, 0x50, 0x3, - 0x69, 0xd4, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x34, 0x80, 0x69, 0xd4, 0x50, - 0x6, 0x5e, 0xa1, 0xa3, 0x25, 0xe0, 0x23, 0x81, 0x9a, 0xe4, - 0xb5, 0x3f, 0x87, 0x9f, 0x69, 0x25, 0x87, 0x5f, 0x63, 0x5e, - 0x83, 0x48, 0x46, 0x6b, 0xcf, 0xc4, 0x60, 0x28, 0x62, 0x7f, - 0x88, 0x8f, 0x2b, 0x13, 0x96, 0x61, 0xb1, 0x7f, 0xc5, 0x89, - 0xe3, 0x97, 0x3f, 0xd, 0x1d, 0x49, 0xc6, 0x7f, 0x3f, 0xfe, - 0xbd, 0x64, 0x5d, 0xf8, 0xa, 0x58, 0xf, 0x53, 0x5e, 0xec, - 0xd0, 0xab, 0xf5, 0x5a, 0xab, 0x3e, 0x95, 0x14, 0xfd, 0xbf, - 0x3a, 0xf0, 0x2b, 0x70, 0xee, 0x1a, 0x4b, 0xdc, 0x47, 0xcc, - 0xd7, 0xe1, 0x4c, 0x2c, 0xd7, 0xb8, 0x8f, 0x2, 0x7f, 0x8, - 0xce, 0x3b, 0x9a, 0x8f, 0xfe, 0x11, 0x4b, 0x8c, 0xf5, 0x35, - 0xee, 0xcf, 0xe1, 0xb8, 0x5b, 0xb0, 0xa6, 0x8f, 0xc, 0xc2, - 0xe, 0x70, 0xb5, 0xe6, 0x3e, 0x19, 0x8d, 0xcf, 0x1d, 0xf0, - 0x7c, 0x6f, 0xa1, 0xe2, 0x49, 0xe0, 0xeb, 0xb6, 0x1c, 0x67, - 0xf4, 0xa9, 0x53, 0xc1, 0x77, 0x9e, 0x87, 0xfc, 0xfe, 0x35, - 0xee, 0x31, 0xe8, 0x91, 0x20, 0x3, 0x2, 0xac, 0x26, 0x9d, - 0x12, 0x7f, 0x8, 0x35, 0xbc, 0x38, 0x66, 0x97, 0x56, 0x75, - 0x43, 0x83, 0xa8, 0xfd, 0xa6, 0x78, 0xc5, 0x8f, 0x81, 0xee, - 0x59, 0x86, 0xe1, 0x91, 0xf4, 0xff, 00, 0xeb, 0xd7, 0x67, - 0xa4, 0xf8, 0xa, 0x2d, 0x8a, 0x64, 0x18, 0x38, 0xae, 0xe8, - 0x40, 0x8b, 0xd1, 0x45, 0x48, 0xa0, 0x1, 0xc5, 0x7b, 0x18, - 0x6c, 0x8f, 0xd, 0x87, 0x7a, 0xab, 0x9e, 0xee, 0x13, 0x87, - 0x30, 0x98, 0x67, 0x76, 0xae, 0x62, 0xd9, 0xf8, 0x5e, 0xd6, - 0xd3, 0x5, 0x46, 0x6b, 0x5e, 0x38, 0x96, 0x31, 0x80, 0x31, - 0xf4, 0xa9, 0x28, 0xaf, 0x7a, 0x9d, 0x28, 0x52, 0x56, 0x82, - 0xb1, 0xf4, 0xb4, 0xa8, 0xd3, 0xa2, 0xad, 0x4e, 0x36, 0x10, - 0x63, 0xb5, 0x2d, 0x14, 0x56, 0xa6, 0xe1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x2, 0x56, 0x3f, 0x88, 0x74, 0xd6, - 0xbf, 0xb7, 0x21, 0x73, 0xd3, 0x15, 0xb3, 0x45, 0x65, 0x52, - 0x9a, 0xab, 0x17, 0x9, 0x75, 0x31, 0xad, 0x4a, 0x35, 0xa0, - 0xe9, 0xcb, 0x66, 0x78, 0x66, 0xaf, 0xe0, 0x6b, 0x95, 0x99, - 0x98, 0x67, 0x93, 0x9a, 0xe7, 0x6e, 0xfc, 0x3d, 0x71, 0x6e, - 0xc7, 0x35, 0xf4, 0x65, 0xcd, 0x9a, 0xdc, 0xae, 0x8, 0x19, - 0xae, 0x7f, 0x51, 0xf0, 0x72, 0x5d, 0x93, 0x8d, 0xa3, 0xeb, - 0x5f, 0xd, 0x8b, 0xe1, 0xb8, 0xc9, 0xb7, 0x48, 0xfc, 0xe3, - 0x1d, 0xc2, 0x70, 0x95, 0xe5, 0x40, 0xf0, 0x56, 0xb6, 0x78, - 0xcf, 0x34, 0xdc, 0x62, 0xbd, 0x66, 0xf7, 0xe1, 0x93, 0xc8, - 0x49, 0x5d, 0x9f, 0x99, 0xac, 0x9b, 0x8f, 0x86, 0x13, 0x8c, - 0xe0, 0x2f, 0xfd, 0xf4, 0x6b, 0xe6, 0xaa, 0xe4, 0x78, 0xb8, - 0x3d, 0x22, 0x7c, 0x7d, 0x5e, 0x1b, 0xc7, 0x52, 0x7a, 0x40, - 0xf3, 0xbc, 0xe2, 0x8c, 0x8a, 0xec, 0xe7, 0xf8, 0x6d, 0x76, - 0x99, 0xc6, 0xdf, 0xcc, 0xd6, 0x74, 0xfe, 0x5, 0xbc, 0x8c, - 0xf6, 0xfc, 0xcd, 0x79, 0xf3, 0xcb, 0xb1, 0x54, 0xf7, 0x81, - 0xe6, 0x4f, 0x2a, 0xc7, 0x53, 0xde, 0x9b, 0x39, 0xdc, 0x8a, - 0x33, 0x9a, 0xd9, 0x6f, 0x6, 0xde, 0xaf, 0xa7, 0xe6, 0x69, - 0x17, 0xc1, 0xfa, 0x81, 0x3c, 0x5, 0x3f, 0x89, 0xac, 0x3e, - 0xab, 0x88, 0xfe, 0x46, 0x73, 0x7d, 0x4b, 0x15, 0xff, 00, - 0x3e, 0xd9, 0x8f, 0x45, 0x6e, 0xaf, 0x82, 0x35, 0x36, 0xe8, - 0x8b, 0xf9, 0x9a, 0x90, 0x78, 0x1f, 0x53, 0xff, 00, 0x9e, - 0x6b, 0xf9, 0x9a, 0xd1, 0x60, 0xb1, 0x2f, 0xec, 0x32, 0xd6, - 0x5f, 0x8b, 0x7f, 0xf2, 0xed, 0x9c, 0xf1, 0x34, 0x81, 0xb2, - 0x71, 0x8a, 0xec, 0x2d, 0x3c, 0x1, 0xa8, 0x39, 0x1b, 0xa3, - 0x5c, 0x7d, 0x4d, 0x74, 0xfa, 0x5f, 0xc3, 0x82, 0xd8, 0xf3, - 0x51, 0x3f, 0x33, 0x5d, 0xb4, 0x32, 0x7c, 0x5d, 0x77, 0xa4, - 0x6c, 0x7a, 0x58, 0x7c, 0x83, 0x1d, 0x88, 0x76, 0xe5, 0x68, - 0xf3, 0x4b, 0x3d, 0x32, 0x4b, 0xd6, 0x1, 0x41, 0xe6, 0xba, - 0x8d, 0x17, 0xe1, 0xf4, 0xf7, 0x32, 0x6, 0xc9, 0xc5, 0x7a, - 0x55, 0x87, 0x81, 0xad, 0xad, 0x8, 0x25, 0x57, 0xf0, 0xae, - 0x82, 0xd2, 0xce, 0x3b, 0x45, 0xc2, 0x2e, 0x2b, 0xea, 0xf0, - 0x7c, 0x37, 0x18, 0xb4, 0xeb, 0x9f, 0x6d, 0x97, 0xf0, 0x8c, - 0x62, 0xd4, 0xb1, 0x46, 0x6, 0x83, 0xe1, 0x18, 0xb4, 0xf8, - 0xd7, 0xcc, 0x5c, 0x9a, 0xe9, 0x63, 0x85, 0x63, 0x18, 0x51, - 0x8f, 0xa5, 0x3e, 0x8a, 0xfb, 0x6a, 0x34, 0x29, 0xd0, 0x8f, - 0x2d, 0x35, 0x63, 0xf4, 0x4c, 0x3e, 0x16, 0x96, 0x1a, 0xa, - 0x14, 0x95, 0x91, 0x14, 0xa7, 0x2, 0xb1, 0xb5, 0x6, 0xe7, - 0xf0, 0xad, 0x6b, 0x86, 0xc0, 0x35, 0x85, 0xa8, 0xbf, 0xf5, - 0xae, 0x83, 0xa8, 0xc5, 0xbc, 0x7e, 0x4d, 0x73, 0x5a, 0x94, - 0x9d, 0x6b, 0x7a, 0xf6, 0x4e, 0xb5, 0xcb, 0xea, 0x52, 0xf5, - 0xa0, 0xe, 0x7f, 0x52, 0x93, 0xad, 0x71, 0xda, 0xc4, 0xbd, - 0x6b, 0xa8, 0xd4, 0xe5, 0xc6, 0xea, 0xe2, 0xf5, 0x79, 0xb3, - 0x9e, 0x68, 0x3, 0x8c, 0xf1, 0x35, 0xcf, 0x95, 0x6b, 0x2b, - 0xf, 0x4a, 0xf9, 0x47, 0xe2, 0x56, 0xa1, 0xba, 0x49, 0xb1, - 0xea, 0x6b, 0xe9, 0x4f, 0x1b, 0xdf, 0x8, 0x6c, 0xdf, 0x9e, - 0xd5, 0xf2, 0x37, 0xc4, 0x2d, 0x47, 0xcc, 0x9e, 0x45, 0xc9, - 0xe4, 0xd7, 0xcd, 0xe6, 0xd5, 0x2d, 0x14, 0x8f, 0x92, 0xcf, - 0x2a, 0xa5, 0x15, 0x13, 0xcd, 0xb5, 0x49, 0x32, 0x58, 0xfa, - 0x9a, 0xe4, 0xb5, 0x29, 0x32, 0x4d, 0x74, 0x5a, 0x94, 0xbd, - 0x6b, 0x95, 0xd4, 0x65, 0xc9, 0x35, 0xe1, 0xe1, 0x62, 0x7c, - 0xde, 0xa, 0x26, 0x4d, 0xcb, 0x75, 0xae, 0xaf, 0xe0, 0x96, - 0x84, 0xde, 0x24, 0xf8, 0xab, 0xe1, 0xeb, 0x4d, 0xa1, 0xa2, - 0x17, 0x4a, 0xf2, 0xf3, 0x8c, 0x20, 0x3c, 0x9a, 0xe4, 0x6e, - 0x1b, 0x93, 0x5e, 0xf9, 0xfb, 0x14, 0x78, 0x62, 0x4d, 0x67, - 0xe2, 0x36, 0xa1, 0xa9, 0x85, 0xd, 0x1d, 0x8d, 0xb0, 0x8c, - 0x82, 0x70, 0x4b, 0x48, 0x78, 0x3f, 0xf8, 0xe1, 0xfc, 0xeb, - 0xe9, 0x30, 0xf1, 0xbc, 0x91, 0xf5, 0xb8, 0x58, 0xde, 0x49, - 0x1f, 0xa8, 0x5f, 0xc, 0x74, 0xf3, 0x63, 0xe1, 0x8b, 0x7c, - 0xf5, 0x90, 0xef, 0xfc, 0xf, 0x4a, 0xed, 0xe1, 0x1c, 0xd6, - 0x4e, 0x89, 0x67, 0xf6, 0x1d, 0x3e, 0xd6, 0xdf, 0x8f, 0xdd, - 0x46, 0xa9, 0xc7, 0xb0, 0x15, 0xb5, 00, 0xe6, 0xbd, 0xc3, - 0xe9, 0xb, 0xb0, 0xae, 0x5, 0x5f, 0x81, 0x72, 0x5, 0x54, - 0x89, 0x6a, 0xf4, 0x2b, 0xd2, 0x80, 0x2f, 0x40, 0x3a, 0x55, - 0xc8, 0x85, 0x56, 0x85, 0x71, 0x8a, 0xb9, 0x8, 0xa0, 0xb, - 0x71, 0xe, 0x5, 0x5b, 0x8c, 0x55, 0x78, 0x85, 0x5a, 0x8c, - 0x50, 0x4, 0xd1, 0x8a, 0x99, 0x6a, 0x34, 0x15, 0x2a, 0xf6, - 0xa0, 0x7, 0x8e, 0xd5, 0x22, 0xf5, 0xa6, 0x2d, 0x3d, 0x7a, - 0x50, 0x4, 0x83, 0xa5, 0x14, 0xa, 0x28, 0x1, 0xcb, 0x4b, - 0x48, 0x3a, 0x52, 0xd0, 0x1, 0x45, 0x14, 0x50, 0x6, 0x5c, - 0x86, 0xab, 0x48, 0x6a, 0xc4, 0x9d, 0x6a, 0xac, 0x94, 0x1, - 0x5e, 0x53, 0x5f, 0x9c, 0xda, 0xc5, 0xdf, 0xfc, 0x2c, 0xbf, - 0xda, 0x33, 0x50, 0xbc, 0x4f, 0xde, 0x5b, 0xc9, 0x7c, 0x16, - 0x20, 0x79, 0xf9, 0x17, 0xb1, 0xc6, 0x47, 0xad, 0x7d, 0xd9, - 0xf1, 0x6b, 0xc4, 0xcb, 0xe0, 0xef, 0x87, 0x7a, 0xf6, 0xb0, - 0xd2, 0xb4, 0x4d, 0x6b, 0x6a, 0xee, 0x85, 0x5b, 0x6b, 0x16, - 0xc7, 0xca, 0x1, 0xf5, 0x27, 0x8a, 0xf8, 0xab, 0xf6, 0x4d, - 0xf0, 0xe3, 0xea, 0xde, 0x30, 0x96, 0xfd, 0xd3, 0x72, 0xc4, - 0x37, 0x12, 0xc3, 0x27, 0x24, 0x8a, 0xf8, 0xcc, 0xf9, 0xfb, - 0x7a, 0xd8, 0x7c, 0x22, 0xea, 0xee, 0xfe, 0x47, 0xe7, 0xfc, - 0x4d, 0x2f, 0xac, 0xe2, 0x30, 0xb8, 0x15, 0xf6, 0xa5, 0x77, - 0xe8, 0x8f, 0xb9, 0xfc, 0x17, 0xa7, 0xad, 0x96, 0x9f, 0x6f, - 0x1a, 0xae, 0xd0, 0x88, 0x6, 0x31, 0xe8, 0x5, 0x77, 0x56, - 0xab, 0x85, 0xcd, 0x73, 0xfa, 0x15, 0xbf, 0x97, 0xa, 0xc, - 0x76, 0xae, 0x96, 0x21, 0x84, 0xaf, 0xb1, 0x8a, 0xe5, 0x49, - 0x1f, 0x7b, 0x8, 0xf2, 0xc5, 0x44, 0xf3, 0xff, 00, 0x8d, - 0xf2, 0xfd, 0x9f, 0xc0, 0xd7, 0xf3, 0x31, 0x21, 0x23, 0x89, - 0x98, 0xe3, 0xd6, 0xbf, 0x9d, 0xcf, 0x8e, 0xba, 0xab, 0xeb, - 0x5f, 0x11, 0x75, 0x5b, 0xa6, 0x24, 0x83, 0x26, 0x1, 0x35, - 0xfd, 0x9, 0x7e, 0xd2, 0x30, 0xdc, 0x5d, 0x7c, 0x2e, 0xd5, - 0x6d, 0xad, 0x43, 0x19, 0xa6, 0x4d, 0xa3, 0x68, 0x24, 0xf5, - 0x1e, 0x95, 0xfc, 0xf9, 0xfc, 0x6f, 0xf0, 0xfc, 0xda, 0x7, - 0x8b, 0xee, 0x6d, 0xa6, 0x3b, 0xa4, 0xc, 0x4b, 0x1c, 0x7d, - 0x2a, 0x8b, 0x3c, 0xdc, 0x70, 0x6b, 0xaf, 0xf0, 0xff, 00, - 0xc4, 0x3b, 0xcd, 0x1, 0x54, 0x40, 0xec, 0x9b, 0x7f, 0xbb, - 0x9f, 0xf1, 0xae, 0x42, 0x8a, 00, 0xef, 0xb5, 0xef, 0x8b, - 0x7a, 0x9e, 0xb9, 0x64, 0xd0, 0x49, 0x73, 0x31, 0xd, 0xd4, - 0x12, 0x71, 0xfc, 0xeb, 0x82, 0x76, 0x2e, 0xc5, 0x8f, 0x24, - 0x9c, 0xd2, 0x51, 0x40, 0x1d, 0xef, 0x82, 0xfe, 0x23, 0x3f, - 0x85, 0xca, 0x79, 0x72, 0x48, 0x9b, 0x7f, 0xbb, 0xff, 00, - 0xeb, 0xaf, 0x4e, 0xb6, 0xfd, 0xa8, 0x6f, 0xa2, 0x1, 0x7e, - 0xdd, 0x70, 00, 0xe3, 0x4, 0x9f, 0xfe, 0x2a, 0xbe, 0x74, - 0xa2, 0x80, 0x3e, 0x9e, 0xb6, 0xfd, 0xab, 0x2f, 0x53, 0x1f, - 0xf1, 0x30, 0xb8, 0x5f, 0xa3, 0x1f, 0xfe, 0x2a, 0xb4, 0xed, - 0xff, 00, 0x6b, 0x5b, 0xd1, 0x8f, 0xf8, 0x9a, 0x5c, 0xaf, - 0xfc, 0xf, 0xff, 00, 0xb2, 0xaf, 0x93, 0xa8, 0xdc, 0x7d, - 0x4d, 00, 0x7d, 0x8f, 0x6b, 0xfb, 0x5d, 0xde, 0x86, 0x4, - 0x6a, 0xd2, 0xe7, 0xfe, 0xba, 0x7f, 0xf6, 0x75, 0xbb, 0xa7, - 0x7e, 0xd7, 0x77, 0xf3, 0xcf, 0x14, 0x6b, 0xab, 0xcf, 0x96, - 0x20, 0x7f, 0xac, 0xff, 00, 0xec, 0xab, 0xe1, 0xcd, 0xec, - 0x3f, 0x88, 0xfe, 0x75, 0xd2, 0x78, 0xe, 0xc2, 0x5d, 0x53, - 0xc4, 0x36, 0xf1, 0x82, 0xcc, 0x1, 0xfa, 0x8a, 00, 0xfd, - 0xb4, 0xfd, 0x8e, 0xfe, 0x22, 0x5e, 0xf8, 0xee, 0xf9, 0xc, - 0xb7, 0x4f, 0x3a, 0x2a, 0x2, 0x77, 0x36, 0x73, 0xd3, 0xdc, - 0xd7, 0xd9, 0xc2, 0xbe, 0x36, 0xff, 00, 0x82, 0x7b, 0x78, - 0x11, 0xb4, 0x4f, 0xa, 0x49, 0x7d, 0x2a, 0x6d, 0x2e, 0x83, - 0xef, 0x2f, 0x3f, 0xfd, 0x6e, 0x95, 0xf6, 0x4d, 00, 0x67, - 0xeb, 0xba, 0xa2, 0x69, 0x1a, 0x6c, 0xd7, 0x2e, 0xdb, 0x42, - 0xf, 0x51, 0x5f, 0xb, 0x7e, 0xd0, 0xbf, 0xb5, 0xa4, 0xbe, - 0x17, 0xd6, 0xd, 0xa5, 0xae, 0xa0, 0xf1, 0x90, 0xf8, 0xf9, - 0x5f, 0xff, 00, 0xb3, 0xaf, 0xa8, 0xbf, 0x68, 0x6f, 0x10, - 0xd, 0x1b, 0xc1, 0xf3, 0x8f, 0x30, 0xa1, 0x2a, 0x5b, 0xe5, - 0x6c, 0x1e, 0x86, 0xbf, 0x6, 0x3f, 0x69, 0x8f, 0x1d, 0x5d, - 0x6b, 0x7f, 0x11, 0xaf, 0x7c, 0xab, 0xb9, 0x8a, 0x46, 0xe7, - 0xee, 0xca, 0x71, 0xf8, 0x73, 0x40, 0x1f, 0x78, 0xd9, 0x7e, - 0xdb, 0x7a, 0x8a, 0xf5, 0xd5, 0x25, 0xff, 00, 0xbe, 0xff, - 00, 0xfb, 0x3a, 0xdd, 0xb4, 0xfd, 0xb8, 0x2f, 0x94, 0x8f, - 0xf8, 0x99, 0xca, 0x7e, 0x92, 0x7f, 0xf6, 0x75, 0xf9, 0x32, - 0x9e, 0x21, 0xd4, 0x53, 0xa5, 0xe4, 0xff, 00, 0xf7, 0xf5, - 0xbf, 0xc6, 0xa7, 0x5f, 0x16, 0xea, 0x89, 0xd2, 0xf2, 0x5f, - 0xfb, 0xf8, 0xdf, 0xe3, 0x40, 0x1f, 0xae, 0xf6, 0x9f, 0xb7, - 0x1d, 0xe7, 00, 0xea, 0x73, 0x7f, 0xdf, 0x63, 0xff, 00, - 0x8b, 0xad, 0x8b, 0x4f, 0xdb, 0x8e, 0xe3, 0x1c, 0xea, 0xe, - 0x7f, 0xe0, 0x43, 0xff, 00, 0x8b, 0xaf, 0xc7, 0x88, 0xfc, - 0x73, 0xab, 0xc6, 0x78, 0xbb, 0x97, 0xfe, 0xfe, 0xb7, 0xf8, - 0xd5, 0x94, 0xf8, 0x8d, 0xac, 0x46, 0x31, 0xf6, 0x87, 0x3f, - 0xf6, 0xd5, 0xbf, 0xc6, 0x80, 0x3f, 0x65, 0xad, 0xff, 00, - 0x6e, 0x6, 0x38, 0xdd, 0x7b, 0x27, 0xe8, 0x7f, 0xf6, 0x7a, - 0xd6, 0xb4, 0xfd, 0xb6, 0xe3, 0x6c, 0x66, 0xeb, 0x3c, 0x7f, - 0x10, 0x1f, 0xfc, 0x5d, 0x7e, 0x2e, 0x47, 0xf1, 0x4f, 0x59, - 0x8f, 0xfe, 0x5b, 0x49, 0xff, 00, 0x7f, 0x9b, 0xfc, 0x6a, - 0xdc, 0x5f, 0x18, 0x75, 0x88, 0xcf, 0xdf, 0x90, 0xff, 00, - 0xdb, 0x66, 0xff, 00, 0x1a, 00, 0xfd, 0xb2, 0xb5, 0xfd, - 0xb4, 0x6c, 0xca, 0x82, 0xd3, 0x29, 0xff, 00, 0xbe, 0x7f, - 0xf8, 0xba, 0xd6, 0xb5, 0xfd, 0xb2, 0x74, 0xc7, 0x3, 0x74, - 0xb1, 0xf3, 0xeb, 0xb4, 0x7f, 0xec, 0xf5, 0xf8, 0x89, 0xf, - 0xc6, 0xfd, 0x5a, 0x30, 0x32, 0x66, 0x3f, 0x49, 0x9b, 0xfc, - 0x6a, 0xec, 0x3f, 0x1f, 0x35, 0x48, 0xcf, 0x26, 0x73, 0xff, - 00, 0x6d, 0xda, 0x80, 0x3f, 0x70, 0xed, 0xbf, 0x6b, 0xbd, - 0x22, 0x4f, 0xbc, 0xf1, 0xfe, 0x6b, 0xff, 00, 0xc5, 0xd6, - 0x9d, 0xbf, 0xed, 0x5d, 0xa1, 0x49, 0xf7, 0x9d, 0x7f, 0x35, - 0xff, 00, 0xe2, 0xeb, 0xf0, 0xde, 0x1f, 0xda, 0x23, 0x51, - 0x8c, 0xf3, 0xf6, 0x8f, 0xc2, 0x73, 0xfe, 0x35, 0x7a, 0x1f, - 0xda, 0x4a, 0xf9, 0x47, 0x2f, 0x74, 0x3f, 0xed, 0xb1, 0xff, - 00, 0x1a, 00, 0xfd, 0xcc, 0xb7, 0xfd, 0xa7, 0x7c, 0x3d, - 0x2e, 0x9, 0x75, 0xfc, 0x19, 0x3f, 0xf8, 0xba, 0xd1, 0x87, - 0xf6, 0x8b, 0xf0, 0xd4, 0xa4, 0x66, 0x42, 0x33, 0xfe, 0xd2, - 0x7f, 0xf1, 0x55, 0xf8, 0x67, 0x7, 0xed, 0x39, 0x76, 0xa1, - 0x73, 0x25, 0xc0, 0xff, 00, 0xb6, 0xe7, 0xfc, 0x6b, 0x46, - 0xdb, 0xf6, 0xa6, 0x9d, 0x59, 0x77, 0x4f, 0x72, 0xa3, 0xfe, - 0xbe, 0xf, 0xf8, 0xd0, 0x7, 0xee, 0x5c, 0x1f, 0x1d, 0xbc, - 0x37, 0x2e, 0x3f, 0x7f, 0xd7, 0xfd, 0xb4, 0xff, 00, 0xe2, - 0xaa, 0xec, 0x5f, 0x19, 0xbc, 0x39, 0x20, 0xcf, 0xda, 0x31, - 0xff, 00, 0x2, 0x4f, 0xf1, 0xaf, 0xc3, 0xcb, 0x7f, 0xda, - 0xba, 0x54, 0xe7, 0xed, 0x93, 0xf, 0xad, 0xc1, 0xff, 00, - 0x1a, 0xd2, 0xb7, 0xfd, 0xad, 0xdd, 0x71, 0xfe, 0x9f, 0x38, - 0x3f, 0xf5, 0xf4, 0x7f, 0xc6, 0x80, 0x3f, 0x6e, 0xa2, 0xf8, - 0xaf, 0xe1, 0xf9, 0x7a, 0x5d, 0x1, 0xf5, 0x65, 0xff, 00, - 0x1a, 0xb9, 0x17, 0xc4, 0x5d, 0xe, 0x53, 0xc5, 0xe4, 0x7f, - 0xf7, 0xda, 0xff, 00, 0x8d, 0x7e, 0x25, 0x5b, 0x7e, 0xd7, - 0xae, 0x98, 0xff, 00, 0x89, 0x8c, 0xff, 00, 0x8d, 0xd1, - 0xff, 00, 0x1a, 0xd5, 0xb6, 0xfd, 0xb1, 0x48, 0x23, 0x3a, - 0x9c, 0x83, 0xfe, 0xde, 0xcf, 0xf8, 0xd0, 0x7, 0xed, 0x4a, - 0x78, 0xd7, 0x47, 0x7e, 0x97, 0x91, 0x7f, 0xdf, 0xc5, 0xff, - 00, 0x1a, 0xb3, 0x1f, 0x89, 0xb4, 0xc9, 0x7e, 0xed, 0xe4, - 0x27, 0xfe, 0xda, 0x2f, 0xf8, 0xd7, 0xe3, 0x1d, 0xa7, 0xed, - 0x96, 0xca, 0x72, 0x35, 0x49, 0x7f, 0xf0, 0x2c, 0xff, 00, - 0xf1, 0x55, 0xb1, 0x69, 0xfb, 0x68, 0xb0, 0xff, 00, 0x98, - 0x9b, 0xff, 00, 0xe0, 0x51, 0xff, 00, 0xe2, 0xa8, 0x3, - 0xf6, 0x2d, 0x35, 0x9b, 0x27, 0xe9, 0x73, 0xf, 0xfd, 0xfc, - 0x1f, 0xe3, 0x52, 0xad, 0xfd, 0xb3, 0xf4, 0x9e, 0x3f, 0xfb, - 0xec, 0x57, 0xe4, 0x4d, 0xa7, 0xed, 0xaa, 0xc0, 0x8f, 0xf8, - 0x99, 0x4b, 0xff, 00, 0x81, 0x67, 0xff, 00, 0x8a, 0xad, - 0x9b, 0x4f, 0xdb, 0x71, 0xd7, 0xfe, 0x62, 0x4f, 0x8f, 0x7b, - 0xa3, 0xfe, 0x34, 0x1, 0xfa, 0xc2, 0x2e, 0x22, 0x23, 0x89, - 0x10, 0xff, 00, 0xc0, 0x85, 0x38, 0x48, 0xa7, 0xa3, 0x3, - 0xf4, 0x35, 0xf9, 0x67, 0x6b, 0xfb, 0x70, 0x9c, 0x1, 0xf6, - 0xf7, 0xfc, 0x2f, 0xf, 0xf8, 0xd6, 0xcd, 0xa7, 0xed, 0xc6, - 0x1, 0x1f, 0xe9, 0xf2, 0x7e, 0x37, 0x47, 0xfc, 0x68, 0x3, - 0xf4, 0xd3, 0x34, 0x66, 0xbf, 0x39, 0x2d, 0x7f, 0x6e, 0x74, - 0x7, 0x9b, 0xd7, 0x3f, 0xf6, 0xf5, 0xff, 00, 0xd7, 0xad, - 0xab, 0x2f, 0xdb, 0xa6, 0xd, 0xa3, 0x75, 0xe3, 0xf5, 0xfe, - 0x2b, 0x9f, 0xfe, 0xbd, 00, 0x7e, 0x80, 0xe6, 0x8c, 0xd7, - 0xc3, 0x16, 0xdf, 0xb7, 0x45, 0x9f, 0x19, 0xba, 0xcf, 0xfd, - 0xbc, 0x7f, 0xf5, 0xeb, 0x62, 0xd3, 0xf6, 0xe4, 0xd3, 0x9b, - 0x1b, 0xa7, 0x1f, 0x8c, 0xe3, 0xfc, 0x68, 0x3, 0xec, 0xfa, - 0x33, 0x5f, 0x23, 0x5a, 0xfe, 0xdb, 0xfa, 0x43, 0x81, 0xba, - 0x58, 0xcf, 0xfd, 0xb6, 0x1f, 0xe3, 0x5a, 0xd6, 0xff, 00, - 0xb6, 0xae, 0x84, 0xf8, 0xcc, 0x91, 0x1f, 0xfb, 0x6c, 0xb4, - 0x1, 0xf5, 0x25, 0x15, 0xf3, 0x7d, 0xb7, 0xed, 0x95, 0xe1, - 0xb7, 0x20, 0x34, 0x90, 0x8f, 0xac, 0xcb, 0x5a, 0x96, 0xff, - 00, 0xb5, 0xdf, 0x85, 0xa5, 0x3, 0x32, 0xc4, 0x3e, 0x93, - 0xad, 00, 0x7b, 0xe5, 0x15, 0xe2, 0xb0, 0x7e, 0xd5, 0x3e, - 0x13, 0x97, 0x19, 0xb8, 0x45, 0xcf, 0xfd, 0x36, 0x4f, 0xf1, - 0xab, 0xf0, 0xfe, 0xd2, 0xfe, 0x11, 0x94, 0x81, 0xf6, 0xb8, - 0xc7, 0xfd, 0xb6, 0x4f, 0xf1, 0xa0, 0xf, 0x5b, 0xa2, 0xbc, - 0xca, 0x2f, 0xda, 0x13, 0xc2, 0x32, 0xe3, 0xfd, 0x39, 0x7, - 0xfd, 0xb4, 0x4f, 0xf1, 0xab, 0xb1, 0x7c, 0x71, 0xf0, 0x9c, - 0xbd, 0x35, 0x28, 0x87, 0xfc, 0xd, 0x7f, 0xc6, 0x80, 0x3d, - 0x2, 0x8a, 0xe2, 0xe2, 0xf8, 0xbd, 0xe1, 0x79, 0xba, 0x6a, - 0x70, 0x8f, 0xab, 0xaf, 0xf8, 0xd5, 0xb8, 0xfe, 0x26, 0x78, - 0x6a, 0x51, 0xc6, 0xad, 0x6e, 0x3e, 0xb2, 0xf, 0xf1, 0xa0, - 0xe, 0xa6, 0x8a, 0xe7, 0xe3, 0xf1, 0xee, 0x81, 0x27, 0xdd, - 0xd5, 0x6d, 0x4f, 0xfd, 0xb4, 0x1f, 0xe3, 0x56, 0x17, 0xc5, - 0xfa, 0x2b, 0xf4, 0xd4, 0xed, 0x8f, 0xfd, 0xb4, 0x14, 0x1, - 0xb1, 0x45, 0x66, 0xaf, 0x89, 0x34, 0xa7, 0xfb, 0xba, 0x8d, - 0xb1, 0xff, 00, 0xb6, 0xa2, 0xa5, 0x5d, 0x66, 0xc5, 0x87, - 0x17, 0x90, 0x1f, 0xa4, 0x82, 0x80, 0x2e, 0xd1, 0x55, 0x86, - 0xa1, 0x6c, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, 0x22, 0xdc, - 0xc4, 0xdd, 0x25, 0x46, 0xfa, 0x30, 0xa0, 0x9, 0x68, 0xa6, - 0x9, 0x50, 0xf4, 0x60, 0x7f, 0x1a, 0x70, 0x60, 0x7a, 0x1a, - 00, 0x5a, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0x10, 0x52, 0xd1, 0x45, 00, 0x21, 0xa2, - 0x96, 0x8a, 00, 0x29, 0x3f, 0x1a, 0x5a, 0x28, 0x1, 0x31, - 0x40, 0x18, 0xa5, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x4c, 0x52, 0xd1, 0x40, - 0x9, 0x8a, 0x6b, 0x44, 0xad, 0xd4, 0xa, 0x7d, 0x14, 0x1, - 0x3, 0xd9, 0xc6, 0xfd, 0x56, 0xaa, 0x4b, 0xa2, 0xc1, 0x26, - 0x72, 0xa2, 0xb4, 0xa8, 0xac, 0xe5, 0x4e, 0x12, 0xdd, 0x19, - 0x4a, 0x94, 0x27, 0xf1, 0x23, 0x1c, 0xf8, 0x7a, 0x3, 0xfc, - 0x23, 0xf2, 0xa5, 0x5d, 0x2, 0x15, 0x39, 0xa, 0x3f, 0x2a, - 0xd6, 0xc5, 0x18, 0xac, 0xfe, 0xaf, 0x4f, 0xb1, 0x8f, 0xd5, - 0x68, 0xff, 00, 0x29, 0x45, 0x34, 0xa8, 0x93, 0xf8, 0x47, - 0xe5, 0x52, 0xa6, 0x9f, 0xa, 0xff, 00, 0xcb, 0x35, 0xfc, - 0xaa, 0xce, 0x29, 0x6b, 0x45, 0x4e, 0x2b, 0xa1, 0xb2, 0xa5, - 0x5, 0xb2, 0x23, 0x5b, 0x78, 0x97, 0xa4, 0x6a, 0x3f, 0xa, - 0x78, 0x50, 0xbd, 00, 0x1f, 0x4a, 0x5a, 0x2a, 0xec, 0x69, - 0x64, 0x84, 0xa2, 0x96, 0x8a, 0x63, 0xa, 0x28, 0xa4, 0x63, - 0x80, 0x68, 0x2, 0x9d, 0xd3, 0x70, 0x79, 0xae, 0x7f, 0x51, - 0x7a, 0xda, 0xbc, 0x6e, 0x2b, 0x9e, 0xd4, 0x1e, 0x80, 0x31, - 0x6f, 0x9f, 0x83, 0x5c, 0xae, 0xa5, 0x27, 0x5a, 0xe8, 0xb5, - 0x19, 0x38, 0x35, 0xca, 0x6a, 0x32, 0x75, 0xa0, 0xe, 0x7b, - 0x54, 0x93, 00, 0xd7, 0x13, 0xab, 0xc9, 0xd6, 0xba, 0xbd, - 0x5a, 0x5c, 0x3, 0x5c, 0x46, 0xb1, 0x2e, 0x33, 0x40, 0x1e, - 0x57, 0xf1, 0x22, 0xf7, 0x64, 0x2e, 0xb9, 0xed, 0x5f, 0x24, - 0xf8, 0xd2, 0xe7, 0xcd, 0xbc, 0x71, 0x9c, 0xf3, 0x5f, 0x49, - 0x7c, 0x4d, 0xbf, 0x4, 0xcb, 0x86, 0xe3, 0xeb, 0x5f, 0x2c, - 0xf8, 0x92, 0xe3, 0xcc, 0xbc, 0x90, 0xe7, 0xbd, 0x7c, 0x56, - 0x69, 0x3e, 0x6a, 0x89, 0x23, 0xf3, 0xcc, 0xea, 0xa7, 0x3d, - 0x44, 0x8e, 0x4b, 0x52, 0x7e, 0xd, 0x72, 0xf7, 0xad, 0x96, - 0x35, 0xbf, 0xa9, 0xc9, 0xc3, 0x57, 0x35, 0x74, 0xf9, 0x26, - 0xa7, 0xd, 0x1d, 0x9, 0xc1, 0xc7, 0x43, 0x3e, 0x76, 0xeb, - 0x5f, 0x73, 0xff, 00, 0xc1, 0x3e, 0xfc, 0x19, 0x9d, 0x25, - 0xb5, 0x27, 0x41, 0xba, 0xf6, 0xec, 0x2, 0x71, 0xd6, 0x34, - 0xe9, 0xce, 0x3f, 0xda, 0x35, 0xf0, 0xad, 0xc1, 0xeb, 0x5f, - 0xaa, 0x3f, 0xb1, 0x6f, 0x84, 0x3f, 0xb0, 0x3c, 0xb, 0xa3, - 0xc4, 0xe3, 0x32, 0x41, 0x6b, 0xb9, 0xce, 0x31, 0x96, 0x76, - 0x38, 0x3f, 0x96, 0x2b, 0xe8, 0xf0, 0xab, 0x5b, 0x9f, 0x59, - 0x82, 0x8d, 0xe5, 0x73, 0xea, 0x38, 0x17, 0xa7, 0xb7, 0x15, - 0xa1, 0x6e, 0x7, 0x15, 0x4a, 0x5, 0xe9, 0x5a, 0x56, 0xe3, - 0x81, 0xc5, 0x7a, 0x87, 0xb2, 0x5c, 0x85, 0x79, 0xab, 0xf0, - 0x2f, 0x4a, 0xa7, 0x8, 0xe6, 0xaf, 0xdb, 0xaf, 0x2, 0x80, - 0x2e, 0xc4, 0x3a, 0x55, 0xc8, 0x47, 0x22, 0xab, 0x44, 0xb5, - 0x72, 0x11, 0x40, 0x16, 0xa3, 0x15, 0x66, 0x31, 0xc8, 0xa8, - 0x22, 0x1d, 0x2a, 0xcc, 0x74, 0x1, 0x3a, 0x8e, 0x2a, 0x45, - 0xa6, 0x28, 0xc1, 0xa9, 0x16, 0x80, 0x1c, 0xb5, 0x22, 0x8e, - 0x29, 0x8b, 0x52, 0x2f, 0x5a, 00, 0x75, 0x14, 0x50, 0x28, - 0x1, 0xc3, 0x8a, 0x5a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0xc, 0x89, 0xd, 0x56, 0x91, 0xaa, 0x79, 0xd, 0x55, 0x90, - 0xe6, 0x80, 0x3e, 0x72, 0xfd, 0xb7, 0x7c, 0x58, 0xda, 0x37, - 0xc2, 0xe8, 0x74, 0x88, 0xe5, 0x54, 0x93, 0x57, 0xb8, 0x11, - 0x8c, 0x83, 0xb8, 0x84, 0x65, 0x66, 0x3, 0xb7, 0x4e, 0xb9, - 0xae, 0x7f, 0xf6, 0x40, 0xf0, 0xb7, 0xd8, 0xbc, 0x3b, 0x25, - 0xf3, 0x46, 0x43, 0x4c, 0xc0, 0x6, 0x3d, 0xc5, 0x70, 0xdf, - 0xb6, 0xd6, 0xb6, 0x35, 0xbf, 0x89, 0xba, 0x36, 0x89, 0xf, - 0xce, 0x6c, 0x2d, 0xf2, 0xe0, 0x8e, 0x3, 0xbe, 0xf, 0xfe, - 0x82, 0x45, 0x7d, 0x23, 0xf0, 0x37, 0xc3, 0xa3, 0x44, 0xf0, - 0x86, 0x9d, 00, 0x50, 0xa4, 0x46, 0xa4, 0xfd, 0x6b, 0xe2, - 0xa9, 0x7f, 0xb5, 0x67, 0x73, 0x93, 0xda, 0x9a, 0xb1, 0xf9, - 0xed, 0x1f, 0xf6, 0xee, 0x22, 0xa9, 0x37, 0xb5, 0x25, 0x6f, - 0x9b, 0x3d, 0x7f, 0x4c, 0x8b, 0x6c, 0x6a, 0x2b, 0x60, 0xc, - 0xa, 0xa1, 0x63, 0x1e, 00, 0xf6, 0xad, 0xa, 0xfb, 0x53, - 0xf4, 0x23, 0xb, 0xc6, 0x5a, 0x22, 0xeb, 0xba, 0x1d, 0xc5, - 0xb9, 0x1b, 0x89, 0x43, 0x81, 0x5f, 0x8f, 0x3f, 0xb6, 0x37, - 0xec, 0xec, 0xda, 0x3e, 0xb5, 0x73, 0x77, 0x67, 0x61, 0x2c, - 0xf3, 0x48, 0xc7, 0x24, 0x30, 0xe3, 0xa7, 0xbd, 0x7e, 0xd1, - 0x32, 0x86, 0x4, 0x11, 0x90, 0x6b, 0x8a, 0xf1, 0x87, 0xc2, - 0x9d, 0x7, 0xc5, 0x50, 0x48, 0x6e, 0xac, 0xc4, 0x92, 0x63, - 0x8f, 0x9d, 0x87, 0xf2, 0x34, 0x1, 0xfc, 0xda, 0x6a, 0x9e, - 00, 0xd7, 0x2d, 0x2e, 0x1c, 0x1d, 0x3a, 0x44, 0x50, 0x71, - 0x92, 0x47, 0xf8, 0xd6, 0x54, 0xde, 0x1c, 0xd4, 0xad, 0xc6, - 0x64, 0xb4, 0x75, 0x1e, 0xf8, 0xaf, 0xdb, 0xef, 0x88, 0x9f, - 0xb2, 0x65, 0x96, 0xa1, 0x73, 0x21, 0xb4, 0xb0, 0x50, 0xe, - 0x4e, 0x37, 0x1f, 0xfe, 0x2a, 0xbe, 0x59, 0xf8, 0xe7, 0xfb, - 0x34, 0x8f, 0x7, 0xe8, 0x17, 0x97, 0xaf, 0x6a, 0x91, 0xa2, - 0x21, 0x39, 0xc9, 0xf4, 0x3f, 0xed, 0x7b, 0x50, 0x7, 0xe6, - 0xbc, 0x91, 0xb4, 0x4c, 0x55, 0x86, 0x8, 0xed, 0x42, 0xc6, - 0xcf, 0xd0, 0x66, 0xaf, 0xf8, 0x80, 0x8f, 0xed, 0x7b, 0x95, - 0x5f, 0xba, 0xb2, 0x30, 0x1c, 0xfb, 0xd7, 0xa9, 0xfc, 0x16, - 0xf8, 0x47, 0x7b, 0xe3, 0x85, 0x49, 0x21, 0x80, 0x4a, 0x8c, - 0x78, 0xc9, 0xc6, 0x7a, 0xfb, 0xd0, 0x7, 0x8f, 0x79, 0x2e, - 0x7, 0xdd, 0x34, 0xd2, 0xa4, 0x76, 0xaf, 0xbe, 0xe0, 0xfd, - 0x8e, 0x6f, 0xcd, 0x94, 0x6c, 0x74, 0xf4, 0xc9, 00, 0xfd, - 0xfc, 0xff, 00, 0xec, 0xd5, 0x9d, 0x77, 0xfb, 0x1f, 0x5e, - 0xc, 0xff, 00, 0xa0, 0x27, 0xe2, 0xdf, 0xfd, 0x95, 00, - 0x7c, 0x29, 0x45, 0x7d, 0xab, 0x71, 0xfb, 0x21, 0x5d, 0xae, - 0x7f, 0xe2, 0x5e, 0x87, 0xe8, 0xdf, 0xfd, 0x95, 0x64, 0xdd, - 0x7e, 0xc9, 0x37, 0x6b, 0xd6, 0xc5, 0x47, 0xe3, 0xff, 00, - 0xd9, 0x50, 0x7, 0xc8, 0x15, 0xeb, 0x7f, 0xb3, 0xf6, 0x87, - 0xfd, 0xa7, 0xe2, 0x38, 0x49, 0x5d, 0xd9, 0x90, 0x1, 0x5e, - 0x9f, 0x71, 0xfb, 0x27, 0x5d, 0xa9, 0xff, 00, 0x8f, 0x18, - 0xff, 00, 0xef, 0xaf, 0xfe, 0xca, 0xbd, 0xd7, 0xf6, 0x63, - 0xfd, 0x95, 0xe7, 0xb4, 0xf1, 0x5, 0x8c, 0x8f, 0x6c, 0xa8, - 0x4, 0x9b, 0x89, 0xdd, 0xd3, 0x93, 0xfe, 0xd5, 00, 0x7e, - 0x97, 0xfe, 0xcd, 0x3e, 0x18, 0x5f, 0xe, 0x7c, 0x35, 0xb1, - 0x51, 0x19, 0x8d, 0xa4, 0x50, 0xc4, 0x1e, 0xa7, 0x8e, 0xf5, - 0xeb, 0x27, 0xa5, 0x66, 0x78, 0x67, 0x49, 0x4d, 0xf, 0x43, - 0xb4, 0xb2, 0x45, 0xda, 0x22, 0x40, 0xb8, 0xad, 0x27, 0x3b, - 0x54, 0x9f, 0x41, 0x40, 0x1f, 0x26, 0x7e, 0xdb, 0x7e, 0x33, - 0x5d, 0x1f, 0xc3, 0x37, 0x88, 0x25, 0xb, 0xb6, 0x12, 0x30, - 0x3f, 0x1a, 0xfc, 0x29, 0xf1, 0xae, 0xaa, 0xda, 0xcf, 0x89, - 0xb5, 0xb, 0xa6, 0x70, 0xe5, 0xe4, 0x38, 0x23, 0xa1, 0xe7, - 0xb5, 0x7e, 0xbd, 0x7e, 0xdf, 0x50, 0x5f, 0x6a, 0xda, 0x5d, - 0xe4, 0x30, 0x37, 0xdf, 0xc, 0x36, 0xfe, 0x75, 0xf9, 0x6f, - 0x73, 0xf0, 0x47, 0x59, 0x2c, 0xce, 0xc0, 0x64, 0xf2, 0x4e, - 0x47, 0xf8, 0xd0, 0x7, 0x98, 0x51, 0x5e, 0x81, 0x37, 0xc1, - 0x9d, 0x6a, 0x3e, 0x8a, 0xf, 0xe2, 0x3f, 0xc6, 0xaa, 0x3f, - 0xc2, 0x6d, 0x6d, 0x3f, 0xe5, 0x9a, 0xff, 00, 0xdf, 0x42, - 0x80, 0x38, 0xaa, 0x2b, 0xac, 0x93, 0xe1, 0x96, 0xb7, 0x1f, - 0x58, 0x57, 0xfe, 0xfa, 0x15, 0x5d, 0xfe, 0x1f, 0x6b, 0x28, - 0x70, 0x6d, 0xc7, 0xfd, 0xf4, 0x28, 0x3, 0x9b, 0xa2, 0xb7, - 0x1f, 0xc1, 0x5a, 0xb2, 0x75, 0xb6, 0xff, 00, 0xc7, 0x85, - 0x42, 0xde, 0x15, 0xd4, 0xd3, 0xad, 0xb1, 0xfc, 0xc5, 00, - 0x64, 0xd1, 0x5a, 0xf, 0xa0, 0x5f, 0xa1, 0xe6, 0xdd, 0xbf, - 0x30, 0x6a, 0x26, 0xd2, 0xae, 0xd7, 0xac, 0xd, 0x40, 0x15, - 0x28, 0xa9, 0xda, 0xc2, 0xe1, 0x7a, 0xc2, 0xc3, 0xf0, 0xa8, - 0xcd, 0xbc, 0xa3, 0xac, 0x6e, 0x3f, 0xe0, 0x26, 0x80, 0x19, - 0x45, 0x3b, 0xca, 0x7f, 0xee, 0x37, 0xe5, 0x49, 0xb4, 0x8e, - 0xc7, 0xf2, 0xa0, 0x4, 0xa2, 0x8c, 0x71, 0x46, 0x3d, 0xe8, - 0x1, 0x77, 0x1f, 0x53, 0xf9, 0xd1, 0xbd, 0xbf, 0xbc, 0x7f, - 0x3a, 0x4a, 0x28, 0x1, 0xe2, 0x79, 0x7, 0x49, 0x1c, 0x7f, - 0xc0, 0x8d, 0x3d, 0x6f, 0x27, 0x5e, 0x93, 0x38, 0xff, 00, - 0x81, 0x54, 0x34, 0x50, 0x5, 0x95, 0xd4, 0xee, 0xd3, 0xa5, - 0xc4, 0x83, 0xfe, 0x5, 0x52, 0xae, 0xb9, 0x7e, 0xa3, 0x2, - 0xea, 0x4f, 0xce, 0xa8, 0xd1, 0x40, 0x1a, 0x6b, 0xe2, 0x5d, - 0x4d, 0x3a, 0x5d, 0xc9, 0xf9, 0xd4, 0xc9, 0xe3, 0xd, 0x5e, - 0x3e, 0x97, 0x8f, 0xf8, 0xd6, 0x35, 0x14, 0x1, 0xd0, 0x27, - 0x8e, 0xf5, 0x94, 0xff, 00, 0x97, 0xb2, 0x7f, 0xa, 0xb3, - 0x17, 0xc4, 0x9d, 0x72, 0x2c, 0x62, 0xec, 0x90, 0x3d, 0xab, - 0x96, 0xa2, 0x80, 0x3b, 0x28, 0xfe, 0x2b, 0x6b, 0xb1, 0x9f, - 0xf8, 0xf9, 0xcf, 0xfc, 0x7, 0xff, 00, 0xaf, 0x57, 0x22, - 0xf8, 0xc7, 0xae, 0x46, 0x3f, 0xd7, 0x9f, 0xcb, 0xff, 00, - 0xaf, 0x5c, 0xd, 0x14, 0x1, 0xe9, 0x51, 0xfc, 0x6f, 0xd6, - 0xd0, 0xf, 0xdf, 0xff, 00, 0xe3, 0xb5, 0x6e, 0x1f, 0x8f, - 0x7a, 0xc4, 0x67, 0x99, 0x4f, 0xe0, 0x2b, 0xca, 0xa8, 0xa0, - 0xf, 0x64, 0x87, 0xf6, 0x87, 0xd5, 0x53, 0x19, 0x9c, 0x8f, - 0xaa, 0x9a, 0xd2, 0x87, 0xf6, 0x91, 0xd4, 0x53, 00, 0xdc, - 0x63, 0xe8, 0xd, 0x78, 0x4d, 0x14, 0x1, 0xf4, 0x3d, 0xbf, - 0xed, 0x39, 0x7c, 0x98, 0xcd, 0xe9, 0x5c, 0x7f, 0xb2, 0x7f, - 0xc2, 0xb4, 0x20, 0xfd, 0xa8, 0xef, 0x14, 0xf3, 0x7e, 0x3f, - 0x22, 0x2b, 0xe6, 0x8a, 0x28, 0x3, 0xea, 0xab, 0x6f, 0xda, - 0xae, 0xe5, 0x40, 0x1f, 0xda, 0x58, 0x3f, 0xf0, 0x2a, 0xd5, - 0xb6, 0xfd, 0xac, 0xee, 0x86, 0x3f, 0xe2, 0x68, 0x9f, 0x91, - 0xaf, 0x90, 0x28, 0xa0, 0xf, 0xb5, 0x6d, 0x3f, 0x6b, 0x8b, - 0xa4, 0x39, 0xfe, 0xd5, 0x5f, 0xc3, 0x35, 0xb1, 0x6d, 0xfb, - 0x5f, 0x5d, 0xa8, 00, 0x6a, 0xe8, 0x7f, 0x3, 0xfe, 0x15, - 0xf0, 0x90, 0x38, 0xa5, 0xe, 0xc3, 0xa1, 0xa0, 0xf, 0xd0, - 0x3b, 0x5f, 0xdb, 0xe, 0xf4, 0x63, 0xfe, 0x26, 0xa9, 0xf8, - 0x3, 0xfe, 0x15, 0xb1, 0x6b, 0xfb, 0x64, 0xdf, 0x29, 0xe3, - 0x56, 0x4f, 0xc5, 0x49, 0xfe, 0x95, 0xf9, 0xcc, 0x25, 0x61, - 0xd0, 0xfe, 0x95, 0x22, 0xde, 0xcc, 0x9f, 0x75, 0xf1, 0xf8, - 0xa, 00, 0xfd, 0x2b, 0xb5, 0xfd, 0xb3, 0xaf, 0xd7, 0x9f, - 0xed, 0x58, 0xbf, 0x23, 0x5b, 0x36, 0x9f, 0xb6, 0x9d, 0xf2, - 0xff, 00, 0xcc, 0x55, 0x7, 0xe0, 0x7f, 0xc2, 0xbf, 0x2f, - 0xd7, 0x56, 0xba, 0x5e, 0x92, 0xfe, 0x82, 0xa6, 0x4f, 0x10, - 0x5f, 0x47, 0xf7, 0x67, 0xc7, 0xe0, 0x28, 0x3, 0xf5, 0x5a, - 0xd3, 0xf6, 0xd9, 0xbd, 0x18, 0xce, 0xa9, 0x11, 0xfc, 0xd, - 0x6c, 0x5a, 0x7e, 0xdb, 0xb7, 0x8a, 0x3f, 0xe4, 0x23, 0x1f, - 0xe4, 0x7f, 0xc2, 0xbf, 0x25, 0xd3, 0xc5, 0x7a, 0x9c, 0x7d, - 0x27, 0xff, 00, 0xc7, 0x45, 0x58, 0x4f, 0x1c, 0x6a, 0xc9, - 0xd2, 0x7e, 0x3f, 0xdd, 0x1f, 0xe1, 0x40, 0x1f, 0xaf, 0x36, - 0x9f, 0xb7, 0xd, 0xc8, 0xb, 0x9d, 0x4a, 0x23, 0xed, 0xb4, - 0xff, 00, 0x85, 0x6d, 0xda, 0xfe, 0xdb, 0xf3, 0x1c, 0x67, - 0x50, 0x84, 0xfd, 0x10, 0xff, 00, 0x85, 0x7e, 0x38, 0xaf, - 0xc4, 0x2d, 0x61, 0x31, 0x89, 0x87, 0xfd, 0xf2, 0x3f, 0xc2, - 0xac, 0xc7, 0xf1, 0x3b, 0x59, 0x4f, 0xf9, 0x68, 0xf, 0xe0, - 0x3f, 0xc2, 0x80, 0x3f, 0x67, 0x6d, 0xbf, 0x6d, 0xdf, 0x5d, - 0x46, 0xc, 0x7b, 0xc6, 0x7f, 0xc2, 0xb5, 0xac, 0xff, 00, - 0x6d, 0x98, 0x58, 0x82, 0xf7, 0xb6, 0xc7, 0xdb, 0xcb, 0x3f, - 0xe1, 0x5f, 0x8a, 0xf1, 0x7c, 0x5c, 0xd6, 0x63, 0x1f, 0xeb, - 0x7, 0xe4, 0x3f, 0xc2, 0xad, 0x43, 0xf1, 0x9f, 0x57, 0x8c, - 0x8c, 0xb6, 0x7f, 0x2f, 0xfe, 0x26, 0x80, 0x3f, 0x6e, 0x6d, - 0x7f, 0x6c, 0xfb, 0x17, 0xfb, 0xd7, 0x76, 0xbf, 0xf7, 0xc3, - 0x7f, 0x85, 0x69, 0xdb, 0x7e, 0xd8, 0x9a, 0x5c, 0x9f, 0x7a, - 0xea, 0xd0, 0x8f, 0xf7, 0x5b, 0xfc, 0x2b, 0xf1, 0x12, 0x1f, - 0x8e, 0xba, 0xaa, 0x1, 0x97, 0x23, 0xf0, 0x1f, 0xfc, 0x4d, - 0x5c, 0x87, 0xf6, 0x80, 0xd4, 0x10, 0x60, 0xb1, 0xfc, 0x87, - 0xff, 00, 0x13, 0x40, 0x1f, 0xb8, 0x56, 0xdf, 0xb5, 0xb6, - 0x8b, 0x20, 0x1b, 0xae, 0x2d, 0x87, 0xe0, 0xdf, 0xe1, 0x5a, - 0x70, 0x7e, 0xd4, 0xde, 0x1f, 0x97, 0x19, 0xb9, 0xb7, 0xff, - 00, 0xc7, 0xbf, 0xc2, 0xbf, 0xe, 0x6d, 0xff, 00, 0x68, - 0x9b, 0xd4, 0xff, 00, 0x96, 0x8e, 0xb8, 0xff, 00, 0x64, - 0x1f, 0xfd, 0x96, 0xaf, 0xc5, 0xfb, 0x4b, 0x5c, 0xc6, 0x79, - 0x99, 0xff, 00, 0xef, 0x81, 0xff, 00, 0xc4, 0xd0, 0x7, - 0xee, 0x54, 0x1f, 0xb4, 0x97, 0x87, 0x25, 0xeb, 0x73, 0xf, - 0xd4, 0x16, 0xff, 00, 0xa, 0xd0, 0xb7, 0xfd, 0xa0, 0x7c, - 0x33, 0x30, 0xff, 00, 0x8f, 0xc8, 0x87, 0x3f, 0xed, 0x7f, - 0x85, 0x7e, 0x1a, 0xdb, 0xfe, 0xd3, 0xd3, 0x27, 0x59, 0x98, - 0x1f, 0x5d, 0x9f, 0xfd, 0x8d, 0x69, 0xdb, 0x7e, 0xd5, 0x12, - 0xa6, 0x7, 0xda, 0x9c, 0x7f, 0xdb, 0x2c, 0xff, 00, 0xec, - 0xb4, 0x1, 0xfb, 0x8f, 0xf, 0xc6, 0xcf, 0xc, 0xcb, 0xff, - 00, 0x2f, 0xf1, 0x73, 0xfe, 0xf7, 0xf8, 0x55, 0xc8, 0xbe, - 0x2d, 0xf8, 0x6a, 0x5f, 0xf9, 0x89, 0x46, 0x3f, 0x6, 0xff, - 00, 0xa, 0xfc, 0x41, 0xb6, 0xfd, 0xab, 0xe4, 0x5f, 0xf9, - 0x7a, 0x7f, 0xfb, 0xf7, 0xff, 00, 0xd8, 0x56, 0xbd, 0xb7, - 0xed, 0x6f, 0x2a, 0xe3, 0xfd, 0x39, 0xc7, 0xfd, 0xb3, 0xff, - 00, 0xec, 0x68, 0x3, 0xf6, 0xca, 0x3f, 0x89, 0x7e, 0x1d, - 0x97, 0xa6, 0xa5, 0x11, 0xfc, 0xff, 00, 0xc2, 0xad, 0x27, - 0x8e, 0xf4, 0x29, 0x3a, 0x6a, 0x31, 0x7e, 0xbf, 0xe1, 0x5f, - 0x8a, 0xf6, 0xbf, 0xb5, 0xdc, 0xdc, 0x1, 0x7a, 0xc7, 0xfe, - 0xd9, 0x8f, 0xfe, 0x26, 0xb6, 0x2d, 0x7f, 0x6b, 0xf9, 0x90, - 0x8c, 0x5f, 0x30, 0xc7, 0xfb, 0x3, 0xff, 00, 0x89, 0xa0, - 0xf, 0xd9, 0x74, 0xf1, 0x76, 0x8d, 0x27, 0xdd, 0xd4, 0x21, - 0x3f, 0x89, 0xab, 0x9, 0xaf, 0xe9, 0xce, 0x32, 0xb7, 0x91, - 0x1f, 0xc6, 0xbf, 0x1d, 0xad, 0x7f, 0x6c, 0x6b, 0x80, 0x47, - 0xfa, 0x7b, 0x7f, 0xdf, 0xaf, 0xfe, 0xc6, 0xb6, 0xed, 0x3f, - 0x6c, 0xcb, 0x80, 0x7, 0xfa, 0x6b, 0x8c, 0xfa, 0x20, 0xff, - 00, 0xe2, 0x28, 0x3, 0xf5, 0xcd, 0x75, 0x6b, 0x36, 0xe9, - 0x70, 0x87, 0xf1, 0xa9, 0x56, 0xf2, 0x6, 0xe9, 0x2a, 0x9f, - 0xc6, 0xbf, 0x27, 0xad, 0xbf, 0x6d, 0x1b, 0x85, 0x23, 0xfd, - 0x39, 0x8f, 0xd6, 0x31, 0xff, 00, 0xc4, 0x56, 0xd5, 0xa7, - 0xed, 0xad, 0x30, 0x23, 0x37, 0x4c, 0x7f, 0xe0, 0x23, 0xff, - 00, 0x88, 0xa0, 0xf, 0xd4, 0xa1, 0x32, 0x1e, 0x8c, 0x29, - 0x43, 0x83, 0xd0, 0xd7, 0xe6, 0x6d, 0xa7, 0xed, 0xb9, 0x22, - 0xa8, 0xcd, 0xe3, 0x8f, 0xfb, 0x66, 0x3f, 0xf8, 0x8a, 0xd8, - 0xb4, 0xfd, 0xb7, 0xe4, 0xe3, 0xfd, 0x31, 0xcf, 0xd1, 00, - 0xff, 00, 0xd9, 0x28, 0x3, 0xf4, 0x72, 0x8a, 0xfc, 0xfd, - 0xb3, 0xfd, 0xb8, 0xa, 0x91, 0xfe, 0x98, 0xe3, 0xfe, 00, - 0xf, 0xfe, 0xc9, 0x5b, 0x56, 0x9f, 0xb7, 0xa, 0x7f, 0xcf, - 0xdb, 0x1f, 0xfb, 0x67, 0x8f, 0xfd, 0x92, 0x80, 0x3e, 0xe8, - 0xa4, 0xaf, 0x8c, 0x6d, 0xbf, 0x6d, 0xf8, 0x30, 0x37, 0x5c, - 0x37, 0xe0, 0x9f, 0xfd, 0x85, 0x6b, 0xdb, 0x7e, 0xdb, 0x3a, - 0x7b, 0x91, 0xba, 0xe1, 0xbf, 0xef, 0xdf, 0xff, 00, 0x61, - 0x40, 0x1f, 0x5c, 0x52, 0x66, 0xbe, 0x5f, 0xb6, 0xfd, 0xb2, - 0xb4, 0x99, 00, 0xdd, 0x29, 0xe7, 0xfd, 0x93, 0xff, 00, - 0xc4, 0xd6, 0x9d, 0xbf, 0xed, 0x7d, 0xa1, 0xbe, 0x37, 0x48, - 0xdf, 0xf7, 0xc9, 0xff, 00, 0xe2, 0x68, 0x3, 0xe8, 0xdc, - 0x8a, 0x5a, 0xf0, 0x6b, 0x5f, 0xda, 0xb7, 0xc3, 0xd3, 0xe, - 0x5c, 0xb7, 0xe7, 0xff, 00, 0xc4, 0xd6, 0x94, 0x1f, 0xb4, - 0xf7, 0x86, 0x64, 0x19, 0x2e, 0xe3, 0xfe, 0x2, 0x7f, 0xf8, - 0x9a, 00, 0xf6, 0x7a, 0x2b, 0xca, 0x6d, 0xff, 00, 0x68, - 0xbf, 0xb, 0xcd, 0x8f, 0xdf, 0x3f, 0x3f, 0xec, 0xb7, 0xff, - 00, 0x13, 0x57, 0xe1, 0xf8, 0xf1, 0xe1, 0x79, 0xbf, 0xe5, - 0xe1, 0xc7, 0xfc, 0x1, 0xbf, 0xc2, 0x80, 0x3d, 0x1e, 0x8a, - 0xe1, 0x62, 0xf8, 0xcd, 0xe1, 0x99, 0x47, 0x17, 0x6d, 0xff, - 00, 0x7e, 0xdb, 0xfc, 0x2a, 0xe4, 0x5f, 0x14, 0xfc, 0x3b, - 0x2f, 0x4b, 0xd3, 0xff, 00, 0x7e, 0xdb, 0xfc, 0x28, 0x3, - 0xae, 0xa2, 0xb9, 0xc8, 0xbe, 0x21, 0x68, 0x53, 0x7d, 0xdb, - 0xd1, 0xf8, 0xa3, 0x7f, 0x85, 0x5a, 0x4f, 0x18, 0x69, 0x32, - 0x7d, 0xdb, 0xb5, 0x3f, 0xf0, 0x13, 0x40, 0x1b, 0x34, 0x56, - 0x6a, 0xf8, 0x8f, 0x4e, 0x7e, 0x97, 0x4b, 0xf9, 0x1a, 0x99, - 0x35, 0x7b, 0x39, 0x3e, 0xec, 0xe8, 0x68, 0x2, 0xe5, 0x15, - 0x2, 0xdf, 0x40, 0xc3, 0x89, 0x54, 0xfe, 0x34, 0xf5, 0xb8, - 0x8d, 0xba, 0x3a, 0x9f, 0xc6, 0x80, 0x24, 0xa2, 0x9a, 0x1d, - 0x4f, 0x46, 0x7, 0xf1, 0xa5, 0xdc, 0x3d, 0x68, 0x1, 0x69, - 0x92, 0x9c, 0x2d, 0x3b, 0x35, 0x14, 0xed, 0xc5, 00, 0x66, - 0x5e, 0xbe, 0x3f, 0x2a, 0xe7, 0x6f, 0xde, 0xb6, 0xef, 0xde, - 0xb9, 0xeb, 0xf6, 0xa0, 0xc, 0x2d, 0x4a, 0x4e, 0xb5, 0xca, - 0x6a, 0x52, 0x75, 0xae, 0x8b, 0x53, 0x93, 0xad, 0x72, 0x9a, - 0x8c, 0x9c, 0x1a, 00, 0xe6, 0x75, 0x89, 0x71, 0xba, 0xb8, - 0x4d, 0x76, 0x7d, 0x91, 0x48, 0x49, 0xe9, 0x5d, 0x86, 0xb1, - 0x2e, 0x37, 0x57, 0x9d, 0xf8, 0xae, 0xeb, 0xcb, 0xb3, 0x90, - 0x83, 0x8a, 0x99, 0x3b, 0x26, 0xc9, 0x93, 0xe5, 0x8b, 0x67, - 0x82, 0x7c, 0x4a, 0xd4, 0x32, 0xd3, 0x1d, 0xd5, 0xf3, 0x86, - 0xb3, 0x36, 0xe9, 0xa4, 0x39, 0xee, 0x6b, 0xdb, 0x7e, 0x23, - 0x5f, 0xe7, 0xcd, 0xe6, 0xbc, 0x1b, 0x56, 0x97, 0x2c, 0xe7, - 0xdc, 0xd7, 0xc0, 0xe2, 0x9f, 0x3d, 0x63, 0xf3, 0xc, 0x6c, - 0xbd, 0xa5, 0x73, 0x9b, 0xd4, 0xe4, 0xeb, 0x5c, 0xfd, 0xc3, - 0x75, 0xad, 0x8d, 0x4a, 0x4c, 0x93, 0x58, 0x57, 0xd, 0xd6, - 0xbd, 0x1a, 0x11, 0xb2, 0x47, 0xad, 0x86, 0x8d, 0x91, 0x37, - 0x87, 0xb4, 0xd1, 0xad, 0xf8, 0x8b, 0x4c, 0xd3, 0xdc, 0x16, - 0x5b, 0xab, 0x98, 0xe1, 0x20, 0x75, 0x3b, 0x98, 0xa, 0xfd, - 0x97, 0xf8, 0x1d, 0xa3, 0xae, 0x97, 0xe1, 0x81, 0xb6, 0x3d, - 0x98, 0xb, 0x10, 0xe3, 0x1c, 0x28, 0xff, 00, 0x12, 0x6b, - 0xf2, 0x8f, 0xf6, 0x6d, 0xd0, 0xdf, 0x5f, 0xf8, 0xcb, 0xe1, - 0xf4, 0xd9, 0xbe, 0x8, 0x5e, 0x49, 0xa4, 0x39, 0xc6, 0x36, - 0xc4, 0xe5, 0x4f, 0x5e, 0x7e, 0x60, 0x2b, 0xf6, 0xf, 0xe1, - 0xfd, 0x91, 0xb1, 0xf0, 0xb5, 0x9a, 0x30, 0xc3, 0xb0, 0x2c, - 0xd8, 0xfa, 0x9a, 0xfa, 0x3c, 0x32, 0xb4, 0x6e, 0x7d, 0x66, - 0x12, 0x36, 0x8b, 0x67, 0x59, 00, 0xe9, 0x5a, 0x50, 0xa, - 0xa1, 00, 0xf9, 0x85, 0x69, 0x42, 0x38, 0xae, 0xc3, 0xbc, - 0xb9, 0x8, 0xad, 0xb, 0x71, 0xd2, 0xa9, 0x42, 0xbd, 0x2b, - 0x42, 0x5, 0xc0, 0x6, 0x80, 0x2d, 0xc6, 0x39, 0xab, 0xb0, - 0x81, 0x81, 0x55, 0x22, 0x1d, 0x2a, 0xec, 0x43, 0xa5, 00, - 0x58, 0x88, 0x55, 0xa4, 0x1c, 0xd5, 0x78, 0x85, 0x5a, 0x8c, - 0x50, 0x4, 0xab, 0x4f, 0x5a, 0x62, 0xf4, 0xa9, 0x7, 0x6a, - 00, 0x78, 0xeb, 0x52, 0x2d, 0x31, 0x69, 0xeb, 0xd2, 0x80, - 0x16, 0x95, 0x69, 0x29, 0x56, 0x80, 0x1d, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x6, 0x24, 0x95, 0x52, 0x77, 0x54, - 0x46, 0x67, 0x21, 0x55, 0x41, 0x25, 0x8f, 0x40, 0x2a, 0xd4, - 0x95, 0xe7, 0x3f, 0x1d, 0xfc, 0x5e, 0x7c, 0xf, 0xf0, 0xab, - 0xc4, 0x5a, 0xaa, 0x18, 0x4c, 0xc9, 0x7, 0x95, 0x1a, 0xce, - 0xd8, 0xc, 0x64, 0x60, 0x87, 0xf1, 0xc3, 0x13, 0xf8, 0x56, - 0x55, 0x6a, 0x2a, 0x54, 0xe5, 0x37, 0xb2, 0x46, 0x35, 0xaa, - 0xaa, 0x34, 0xe5, 0x52, 0x5d, 0x15, 0xcf, 0x89, 0x35, 0x6b, - 0xa9, 0x3e, 0x29, 0x7e, 0xd1, 0xda, 0xb5, 0xd8, 0x73, 0x73, - 0x1c, 0x97, 0xc2, 0x25, 0x2d, 0xc2, 0xed, 0x8d, 0x56, 0x3e, - 0x31, 0xc6, 0x3e, 0x4e, 0xdd, 0x7a, 0xd7, 0xdf, 0xbe, 0x12, - 0xb2, 0x5b, 0x4b, 0x38, 0x50, 00, 0xa1, 0x54, 0xc, 0xa, - 0xf8, 0x73, 0xf6, 0x48, 0xd0, 0xd6, 0xe3, 0xc4, 0x32, 0xdf, - 0xca, 0x37, 0x34, 0x43, 0x86, 0x3e, 0xa7, 0x3c, 0xd7, 0xdc, - 0xba, 0x4d, 0xc6, 0xd4, 00, 0x1e, 0x82, 0xbe, 0x57, 0x87, - 0x69, 0xb9, 0xd3, 0xa9, 0x8a, 0x96, 0xf3, 0x6c, 0xf8, 0x9e, - 0x14, 0xa6, 0xe7, 0x4a, 0xae, 0x36, 0x5b, 0xd4, 0x93, 0x67, - 0x69, 0x66, 0xc0, 0x28, 0x15, 0x6a, 0xb0, 0x6d, 0x6e, 0xba, - 0x73, 0x5a, 0x71, 0x5d, 0x64, 0xe, 0x6b, 0xeb, 0xcf, 0xbc, - 0x2d, 0xd1, 0x4c, 0x59, 0x3, 0x53, 0xb2, 0x28, 0x1, 0xaf, - 0x1a, 0x10, 0x4b, 0x20, 0x3f, 0x51, 0x5f, 0x8, 0xff, 00, - 0xc1, 0x47, 0x3c, 0x79, 0x69, 0xe1, 0xff, 00, 0x87, 0xd7, - 0x56, 0xd1, 0x22, 0x47, 0x34, 0x8a, 0xdc, 0x88, 0xc7, 0x1f, - 0x2b, 0x74, 0xf7, 0xaf, 0xba, 0xee, 0x9b, 0x10, 0x39, 0x1d, - 0x71, 0x5f, 0x15, 0x7e, 0xd7, 0x1f, 0x9, 0x6e, 0x3e, 0x25, - 0x5c, 0x47, 0xf, 0x90, 0xd3, 0x20, 0xe0, 0xfc, 0x9b, 0x87, - 0x7f, 0x63, 0xeb, 0x40, 0x1f, 0x87, 0x57, 0x1b, 0xe7, 0xb8, - 0x96, 0x42, 0xac, 0xcc, 0xec, 0x5b, 0x27, 0xaf, 0x26, 0xbf, - 0x56, 0x3f, 0xe0, 0x9c, 0xdf, 0xc, 0xac, 0x2f, 0xfc, 0x2b, - 0xa5, 0x3d, 0xe6, 0x9f, 0x1c, 0xcd, 0x26, 0x49, 0x2e, 0x32, - 0x4f, 0xcc, 0xdf, 0xa5, 0x70, 0xa9, 0xfb, 0x19, 0xab, 0x5d, - 0x46, 0xe, 0x94, 0x71, 0xb8, 0x64, 0x8b, 0x7f, 0x7f, 0xf7, - 0x6b, 0xf4, 0x2b, 0xf6, 0x64, 0xf8, 0x5b, 0x6b, 0xe0, 0xf, - 0xb, 0xda, 0x43, 0x1d, 0xb0, 0x81, 0xe3, 0x8f, 0x18, 0x9, - 0x8e, 0xe7, 0xd8, 0x7a, 0xd0, 0x7, 0xad, 0xf, 0x2, 0x68, - 0x1b, 0x15, 0x7f, 0xb2, 0xad, 0xc0, 0x3, 0x18, 0xdb, 0x55, - 0xe5, 0xf8, 0x73, 0xe1, 0xd9, 0x7e, 0xf6, 0x95, 0x6e, 0x7f, - 0xe0, 0x35, 0xd3, 0x51, 0x40, 0x1c, 0x74, 0xbf, 0x9, 0xfc, - 0x31, 0x2e, 0x73, 0xa5, 0xc2, 0x3e, 0x82, 0xa9, 0xcd, 0xf0, - 0x53, 0xc2, 0xd2, 0xf5, 0xd3, 0xa3, 0xc7, 0xfb, 0xb5, 0xde, - 0xd1, 0x40, 0x1e, 0x67, 0x37, 0xc0, 0x1f, 0xa, 0xcb, 0x9f, - 0xf8, 0x97, 0xc4, 0x3f, 0xe0, 0x35, 0xb5, 0xe1, 0xbf, 0x85, - 0xda, 0x2f, 0x86, 0x65, 0x49, 0x2d, 0x6d, 0x63, 0x57, 0x5f, - 0xbb, 0x81, 0xd2, 0xbb, 0x2a, 0x28, 0x1, 0x29, 0x1d, 0x77, - 0xa1, 0x5f, 0x51, 0x8a, 0x75, 0x14, 0x1, 0xe3, 0xbf, 0x14, - 0x3e, 0x2, 0x5a, 0xfc, 0x42, 0xe2, 0x58, 0xe0, 0x91, 0x49, - 0xe4, 0x48, 0xc4, 0x7f, 0x43, 0x5e, 0x55, 0x73, 0xfb, 0x10, - 0x69, 0xef, 0xf7, 0x6c, 0xec, 0xfa, 0xf6, 0x90, 0xff, 00, - 0x85, 0x7d, 0x6f, 0x45, 00, 0x7c, 0x5f, 0x79, 0xfb, 0xb, - 0x40, 0xe3, 0xf7, 0x76, 0x76, 0xa7, 0xfe, 0x6, 0x7f, 0xf8, - 0x9a, 0xc6, 0xba, 0xfd, 0x84, 0xe, 0xe, 0xdd, 0x3a, 0xdc, - 0xfd, 0x1d, 0xbf, 0xf8, 0x9a, 0xfb, 0xa6, 0x8a, 00, 0xfc, - 0xfe, 0xbb, 0xfd, 0x83, 0x67, 0x39, 0xb, 0xa7, 0x45, 0x9f, - 0x72, 0xdf, 0xfc, 0x4d, 0x62, 0xdd, 0x7e, 0xc1, 0xd7, 0xc0, - 0xb6, 0x34, 0xc8, 0xb1, 0xec, 0x5b, 0xff, 00, 0x89, 0xaf, - 0xd1, 0xba, 0x28, 0x3, 0xf3, 0x2a, 0xf3, 0xf6, 0x15, 0xd4, - 0x14, 0x1c, 0x69, 0x8b, 0xf8, 0x6e, 0xff, 00, 0xe2, 0x6b, - 0x12, 0xf3, 0xf6, 0x1b, 0xd4, 0xd7, 0xa6, 0x97, 0x19, 0xfc, - 0x1b, 0xff, 00, 0x89, 0xaf, 0xd5, 0xa, 0x42, 0xa0, 0xf5, - 0x14, 0x1, 0xf9, 0x29, 0x7b, 0xfb, 0x11, 0xea, 0x68, 0x5b, - 0xfe, 0x25, 0xb, 0xd7, 0xb0, 0x6f, 0xfe, 0x26, 0xb1, 0x2e, - 0xbf, 0x62, 0xad, 0x50, 0xf, 0xf9, 0x4, 0x45, 0xf8, 0xab, - 0x7f, 0xf1, 0x35, 0xfb, 0x4, 0xd6, 0xf1, 0xb7, 0x54, 0x53, - 0xf5, 0x14, 0xc6, 0xb0, 0xb7, 0x7f, 0xbd, 0xa, 0x1f, 0xa8, - 0xa0, 0xf, 0xc6, 0x9b, 0xbf, 0xd8, 0xc7, 0x52, 0x5f, 0xf9, - 0x83, 0xa1, 0x3e, 0xc1, 0xbf, 0xf8, 0x9a, 0xc7, 0xbb, 0xfd, - 0x8e, 0xf5, 0x4, 0xce, 0x74, 0x75, 0xfc, 0x55, 0xbf, 0xf8, - 0x9a, 0xfd, 0xa9, 0x6d, 0x16, 0xc5, 0xba, 0xda, 0xc4, 0x7e, - 0xab, 0x51, 0x37, 0x87, 0x74, 0xc7, 0xfb, 0xd6, 0x30, 0x1f, - 0xf8, 00, 0xa0, 0xf, 0xc4, 0x4b, 0x9f, 0xd9, 0x6, 0xf5, - 0x41, 0xce, 0x8c, 0xbf, 0x80, 0x6f, 0xfe, 0x26, 0xb2, 0x2f, - 0x3f, 0x64, 0x9b, 0xc4, 0x7, 0x3a, 0x40, 0x3, 0xfd, 0xd6, - 0xff, 00, 0xe2, 0x6b, 0xf7, 0x31, 0xfc, 0x23, 0xa2, 0xbf, - 0xde, 0xd3, 0x2d, 0x9b, 0xeb, 0x18, 0xa8, 0xa4, 0xf0, 0x3e, - 0x81, 0x27, 0xde, 0xd2, 0x2d, 0x3f, 0xef, 0xd0, 0xa0, 0xf, - 0xc2, 0x1b, 0x8f, 0xd9, 0x4a, 0xed, 0x73, 0xff, 00, 0x12, - 0xac, 0x7d, 0x3, 0x7f, 0xf1, 0x35, 0x99, 0x71, 0xfb, 0x2d, - 0xde, 0x20, 0xe3, 0x4d, 0x75, 0xfc, 0x1b, 0x1f, 0xfa, 0xd, - 0x7e, 0xf3, 0xc9, 0xf0, 0xd7, 0xc3, 0x32, 0x83, 0xbb, 0x46, - 0xb4, 0x39, 0xff, 00, 0xa6, 0x4b, 0xfe, 0x15, 0x56, 0x4f, - 0x84, 0xbe, 0x15, 0x97, 0xef, 0x69, 0x16, 0xdf, 0x84, 0x4b, - 0xfe, 0x14, 0x1, 0xf8, 0x23, 0x3f, 0xec, 0xcd, 0x79, 0x1e, - 0x7f, 0xd0, 0x58, 0xf, 0xf8, 0x17, 0xf8, 0x56, 0x74, 0xff, - 00, 0xb3, 0x75, 0xf2, 0x1e, 0x2d, 0x1c, 0x7f, 0xdf, 0x5f, - 0xe1, 0x5f, 0xbe, 0x72, 0xfc, 0x11, 0xf0, 0x8c, 0xc4, 0x96, - 0xd2, 0xa1, 0xff, 00, 0xbf, 0x69, 0xff, 00, 0xc4, 0xd5, - 0x39, 0x7f, 0x67, 0xef, 0x6, 0xc9, 0x9f, 0xf8, 0x95, 0xc4, - 0x33, 0xe9, 0x12, 0x7f, 0xf1, 0x34, 0x1, 0xf8, 0x11, 0x3f, - 0xec, 0xf5, 0xa8, 0xc7, 0x9c, 0x40, 0xc3, 0xea, 0x5b, 0xff, - 00, 0x89, 0xaa, 0x33, 0x7c, 0x3, 0xd5, 0x23, 0x3c, 0x44, - 0xff, 00, 0x81, 0x3f, 0xfc, 0x4d, 0x7e, 0xfc, 0x4f, 0xfb, - 0x35, 0x78, 0x2e, 0x71, 0x83, 0x60, 0xa0, 0x7a, 0x79, 0x49, - 0xff, 00, 0xc4, 0xd6, 0x7d, 0xc7, 0xec, 0xab, 0xe0, 0xa9, - 0xf2, 0x7e, 0xc6, 0x80, 0x9f, 0xfa, 0x63, 0x1f, 0xff, 00, - 0x13, 0x40, 0x1f, 0x81, 0x32, 0xfc, 0xf, 0xd5, 0xd0, 0xf1, - 0x1b, 0x7e, 0x39, 0xff, 00, 0xe2, 0x6a, 0x9c, 0xbf, 0x6, - 0xb5, 0xa4, 0xe9, 0x17, 0xea, 0x7f, 0xf8, 0x9a, 0xfd, 0xf0, - 0xb8, 0xfd, 0x90, 0x3c, 0x1d, 0x30, 0xe2, 0x4, 0x5f, 0xfb, - 0x65, 0x1f, 0xff, 00, 0x13, 0x59, 0xb3, 0xfe, 0xc5, 0xbe, - 0x11, 0x90, 0x8d, 0xb1, 0x45, 0xf8, 0xc4, 0x9f, 0xfc, 0x4d, - 00, 0x7e, 0xb, 0xcb, 0xf0, 0x97, 0x5b, 0x8f, 0xfe, 0x58, - 0x8f, 0xfc, 0x7b, 0xff, 00, 0x89, 0xaa, 0xaf, 0xf0, 0xcb, - 0x5b, 0x4f, 0xf9, 0x62, 0xf, 0xd3, 0x3f, 0xe1, 0x5f, 0xbc, - 0x17, 0x1f, 0xb1, 0x7, 0x86, 0x24, 0xe0, 0x24, 0x23, 0xe9, - 0x1a, 0xff, 00, 0xf1, 0x15, 0x93, 0x73, 0xfb, 0x9, 0xf8, - 0x7e, 0x4c, 0xe1, 0x62, 0xe7, 0xfe, 0x99, 0xaf, 0xff, 00, - 0x11, 0x40, 0x1f, 0x85, 0xcf, 0xf0, 0xf3, 0x59, 0x4e, 0xb6, - 0xe4, 0xfd, 0x14, 0xff, 00, 0x85, 0x57, 0x7f, 0x4, 0xea, - 0xc9, 0xd6, 0xdd, 0xbf, 0x23, 0xfe, 0x15, 0xfb, 0x87, 0x75, - 0xfb, 0x6, 0x69, 0xd, 0xf7, 0x62, 0x8b, 0xf0, 0x8c, 0x7f, - 0xf1, 0x15, 0x8b, 0x79, 0xfb, 0x3, 0x69, 0xee, 0xcd, 0xb6, - 0x11, 0xff, 00, 0x7e, 0xc7, 0xff, 00, 0x11, 0x40, 0x1f, - 0x8a, 0xf, 0xe1, 0x4d, 0x4d, 0x3a, 0xdb, 0x3f, 0xe0, 0xa7, - 0xfc, 0x2a, 0x6, 0xf0, 0xfd, 0xfa, 0xe, 0x6d, 0xe4, 0xff, - 00, 0xbe, 0xf, 0xf8, 0x57, 0xec, 0xe5, 0xd7, 0xec, 0x5, - 0x6, 0xe, 0xdb, 0x60, 0x7e, 0x91, 0xf, 0xfe, 0x22, 0xb1, - 0xae, 0xbf, 0x60, 0x35, 0xe4, 0xb, 0x39, 0x31, 0xff, 00, - 0x5c, 0x47, 0xff, 00, 0x11, 0x40, 0x1f, 0x8e, 0xed, 0xa4, - 0xdd, 0xaf, 0x5b, 0x79, 0x7, 0xfc, 00, 0xd4, 0x6d, 0x61, - 0x70, 0x9d, 0x60, 0x93, 0xfe, 0xf9, 0x35, 0xfa, 0xe7, 0x77, - 0xfb, 0x2, 0x38, 0x24, 0xad, 0x8c, 0x87, 0xeb, 0x7, 0xff, - 00, 0x61, 0x58, 0xd7, 0x7f, 0xb0, 0x5c, 0xeb, 0x9c, 0x69, - 0xd2, 0x1f, 0xa5, 0xbf, 0xff, 00, 0x61, 0x40, 0x1f, 0x94, - 0x5f, 0x66, 0x94, 0xe, 0x62, 0x7f, 0xfb, 0xe4, 0xd3, 0x4c, - 0x4e, 0x3a, 0xa3, 0xf, 0xc2, 0xbf, 0x51, 0xaf, 0x3f, 0x61, - 0x9, 0xd1, 0x4f, 0xfc, 0x4b, 0x24, 0x3f, 0x5b, 0x73, 0xff, - 00, 0xc4, 0x56, 0x1d, 0xdf, 0xec, 0x37, 0x74, 0x80, 0xff, - 00, 0xc4, 0xad, 0xcf, 0xd2, 0xdb, 0xff, 00, 0xb0, 0xa0, - 0xf, 0xcd, 0x4d, 0xa4, 0x76, 0x34, 0x98, 0x3e, 0x86, 0xbf, - 0x44, 0xee, 0xbf, 0x62, 0x3b, 0x90, 0x32, 0x74, 0xa7, 0xfc, - 0x6d, 0xbf, 0xfb, 0xa, 0xc7, 0xba, 0xfd, 0x8b, 0x2e, 0x54, - 0x1f, 0xf8, 0x94, 0x93, 0xec, 0x2d, 0xff, 00, 0xfb, 0xa, - 00, 0xf8, 0x12, 0x8a, 0xfb, 0x92, 0xe3, 0xf6, 0x34, 0xb9, - 0x52, 0x73, 0xa4, 0x49, 0xff, 00, 0x80, 0xdf, 0xfd, 0x85, - 0x65, 0x5c, 0x7e, 0xc7, 0xd7, 0x8, 0x73, 0xfd, 0x93, 0x20, - 0xff, 00, 0xb7, 0x7f, 0xfe, 0xc2, 0x80, 0x3e, 0x30, 0xa2, - 0xbe, 0xba, 0xba, 0xfd, 0x92, 0x6e, 0x53, 0xfe, 0x61, 0x93, - 0xaf, 0xd2, 0xdf, 0xff, 00, 0xb0, 0xac, 0xbb, 0x8f, 0xd9, - 0x52, 0xe5, 0x33, 0xfe, 0x81, 0x38, 0xfa, 0xc1, 0xff, 00, - 0xd8, 0xd0, 0x7, 0xcb, 0x34, 0x57, 0xd2, 0x97, 0x1f, 0xb2, - 0xed, 0xda, 0xff, 00, 0xcb, 0xa5, 0xc0, 0xfa, 0x44, 0x7f, - 0xf8, 0x9a, 0xcf, 0x9f, 0xf6, 0x65, 0xbc, 0x51, 0xc4, 0x17, - 0x23, 0xfe, 0xd9, 0x1f, 0xfe, 0x26, 0x80, 0x3e, 0x7b, 0xa2, - 0xbd, 0xce, 0x7f, 0xd9, 0xbe, 0xf9, 0x3f, 0xe5, 0x95, 0xcf, - 0xfd, 0xfb, 0xff, 00, 0xec, 0x6a, 0x8c, 0xbf, 0xb3, 0xcd, - 0xfa, 0x67, 0xf7, 0x77, 0x3f, 0xf7, 0xc1, 0xff, 00, 0xe2, - 0x68, 0x3, 0xc6, 0xa8, 0xaf, 0x56, 0x9b, 0xe0, 0x3e, 0xa4, - 0x84, 0xed, 0x49, 0x8f, 0xfc, 0x4, 0xff, 00, 0xf1, 0x35, - 0x4e, 0x4f, 0x82, 0x7a, 0xa2, 0x7f, 0xcb, 0x39, 0xbf, 0xef, - 0x83, 0xfe, 0x14, 0x1, 0xe6, 0xb4, 0x57, 0x7f, 0x2f, 0xc1, - 0xed, 0x59, 0x3a, 0x45, 0x21, 0xfa, 0xa9, 0xff, 00, 0xa, - 0xa9, 0x2f, 0xc2, 0xbd, 0x62, 0x3f, 0xf9, 0x77, 0x93, 0xfe, - 0xf9, 0x6f, 0xf0, 0xa0, 0xe, 0x2e, 0x8a, 0xea, 0xe4, 0xf8, - 0x6f, 0xac, 0xa1, 0xff, 00, 0x8f, 0x77, 0x3f, 0xf0, 0x16, - 0xff, 00, 0xa, 0xab, 0x27, 0x80, 0xb5, 0x98, 0xc9, 0xff, - 00, 0x44, 0x73, 0xff, 00, 0x1, 0x6f, 0xf0, 0xa0, 0xe, - 0x7a, 0x8a, 0xda, 0x7f, 0x7, 0x6a, 0xc9, 0xff, 00, 0x2e, - 0x72, 0xff, 00, 0xdf, 0x6, 0xa1, 0x6f, 0xc, 0x6a, 0x8b, - 0xff, 00, 0x2e, 0x72, 0xff, 00, 0xdf, 0x26, 0x80, 0x32, - 0xe8, 0xab, 0xed, 0xa0, 0xea, 0x9, 0xd6, 0xce, 0x6f, 0xfb, - 0xe4, 0xd4, 0x67, 0x49, 0xbd, 0x5e, 0xb6, 0xb2, 0x8f, 0xf8, - 0x9, 0xa0, 0xa, 0x94, 0x55, 0x83, 0xa7, 0x5d, 0x2f, 0x5b, - 0x79, 0x47, 0xfc, 00, 0xd4, 0x6d, 0x6b, 0x32, 0x9e, 0x62, - 0x71, 0xf5, 0x53, 0x40, 0x11, 0xd2, 0xee, 0x3e, 0xa6, 0x9c, - 0x61, 0x90, 0x7f, 0x3, 0x7e, 0x54, 0xd2, 0x8c, 0xbd, 0x54, - 0x8f, 0xa8, 0xa0, 0x3, 0x7b, 0x7f, 0x78, 0xfe, 0x74, 0xe1, - 0x71, 0x2a, 0xf4, 0x91, 0x87, 0xe3, 0x4c, 0xa2, 0x80, 0x26, - 0x17, 0xb7, 0xb, 0xd2, 0x69, 0x7, 0xfc, 0x8, 0xd4, 0x8b, - 0xaa, 0xde, 0x27, 0xdd, 0xba, 0x94, 0x7d, 0x1c, 0xd5, 0x5c, - 0x1f, 0x4a, 0x28, 0x2, 0xf2, 0xeb, 0xda, 0x8a, 0x74, 0xbc, - 0x9b, 0xfe, 0xfa, 0xa9, 0x93, 0xc4, 0xfa, 0xa2, 0x74, 0xbd, - 0x97, 0xfe, 0xfa, 0xac, 0xba, 0x28, 0x3, 0x69, 0x7c, 0x65, - 0xac, 0x27, 0x4b, 0xe9, 0x7f, 0xef, 0xaa, 0xb0, 0x9e, 0x3e, - 0xd6, 0x50, 0xff, 00, 0xc7, 0xe4, 0x87, 0xf1, 0xae, 0x76, - 0x8a, 00, 0xeb, 0x62, 0xf8, 0x97, 0xad, 0x47, 0x8f, 0xf4, - 0xc9, 0x7f, 0x3a, 0xb5, 0x1f, 0xc5, 0xad, 0x6d, 0xf, 0x37, - 0x32, 0x1f, 0xc6, 0xb8, 0x8a, 0x28, 0x3, 0xd0, 0xa2, 0xf8, - 0xcb, 0xac, 0x47, 0x83, 0xf6, 0x89, 0x47, 0xd1, 0xaa, 0xec, - 0x3f, 0x1c, 0xb5, 0x78, 0xfa, 0xdc, 0x4c, 0x7f, 0x2a, 0xf3, - 0xa, 0x28, 0x3, 0xd7, 0x21, 0xf8, 0xfd, 0xa9, 0xc7, 0x8c, - 0xcf, 0x70, 0x3e, 0x98, 0xff, 00, 0x1a, 0xbf, 0xf, 0xed, - 0x15, 0xa8, 0x21, 0x7, 0xed, 0x57, 0x3f, 0x8f, 0xff, 00, - 0xae, 0xbc, 0x52, 0x8a, 00, 0xf7, 0xcb, 0x7f, 0xda, 0x56, - 0xf1, 0x3a, 0xdd, 0xdc, 0x3, 0xf4, 0xff, 00, 0xeb, 0xd6, - 0x8c, 0x3f, 0xb5, 0x5, 0xca, 0x60, 0x7d, 0xba, 0xe4, 0x7e, - 0x1f, 0xfd, 0x7a, 0xf9, 0xca, 0x8a, 00, 0xfa, 0x7e, 0xdb, - 0xf6, 0xa9, 0x9d, 0x4f, 0x3a, 0x8d, 0xc6, 0x7f, 0xcf, 0xbd, - 0x6a, 0x5b, 0x7e, 0xd6, 0x33, 0x2f, 0xfc, 0xc5, 0x6e, 0x41, - 0xf7, 0x3f, 0xfd, 0x7a, 0xf9, 0x32, 0x8a, 00, 0xfb, 0x26, - 0xdf, 0xf6, 0xb9, 0x98, 0x60, 0x7f, 0x6c, 0x4c, 0x7f, 0x11, - 0xfe, 0x35, 0xaf, 0x69, 0xfb, 0x5f, 0x4c, 0xbf, 0xf3, 0x18, - 0x9c, 0xf, 0xf7, 0x87, 0xf8, 0xd7, 0xc3, 0xf4, 0x50, 0x7, - 0xdf, 0x36, 0x7f, 0xb6, 0x25, 0xc0, 0x3, 0xfe, 0x27, 0x32, - 0x9f, 0xab, 0xf, 0xf1, 0xad, 0xab, 0x5f, 0xdb, 0x22, 0xe0, - 0x63, 0xfe, 0x27, 0x13, 0x7e, 0xc, 0x3f, 0xc6, 0xbf, 0x3b, - 0x43, 0x91, 0xde, 0x9c, 0x26, 0x75, 0x3c, 0x31, 0x14, 0x1, - 0xfa, 0x4f, 0x6b, 0xfb, 0x67, 0x5c, 0xa9, 0x1f, 0xf1, 0x39, - 0x9b, 0xf1, 0x2b, 0xfe, 0x35, 0xaf, 0x69, 0xfb, 0x69, 0xdc, - 0x8e, 0xba, 0xbc, 0xa4, 0xfb, 0x30, 0xff, 00, 0x1a, 0xfc, - 0xc4, 0x17, 0xb3, 0x28, 0xc0, 0x90, 0x8a, 0x7a, 0xea, 0x77, - 0x4b, 0xd2, 0x66, 0x14, 0x1, 0xfa, 0xa3, 0x6d, 0xfb, 0x6b, - 0xdc, 0xa8, 0x1f, 0xf1, 0x37, 0x9c, 0x7d, 0x48, 0xff, 00, - 0x1a, 0xd8, 0xb2, 0xfd, 0xb7, 0x6e, 0x1, 0x1f, 0xf1, 0x36, - 0x9b, 0xf3, 0x5f, 0xf1, 0xaf, 0xc9, 0xb5, 0xd7, 0x2f, 0x93, - 0xee, 0xdc, 0xb8, 0xfc, 0xaa, 0x41, 0xe2, 0x3d, 0x49, 0x7a, - 0x5d, 0xb8, 0xfc, 0xa8, 0x3, 0xf5, 0xf2, 0xd3, 0xf6, 0xe0, - 0x91, 0x79, 0x3a, 0xac, 0xff, 00, 0x9a, 0xff, 00, 0xf1, - 0x55, 0xb3, 0x67, 0xfb, 0x71, 0x31, 0x23, 0x3a, 0xac, 0xc7, - 0xdb, 0xe5, 0xff, 00, 0x1a, 0xfc, 0x70, 0x4f, 0x17, 0x6a, - 0xc9, 0xd2, 0xf1, 0xc7, 0xd3, 0x15, 0x2a, 0x78, 0xe3, 0x5a, - 0x43, 0x91, 0x7d, 0x27, 0xe3, 0x40, 0x1f, 0xb5, 0x96, 0x3f, - 0xb6, 0xec, 0x4d, 0x80, 0xda, 0x94, 0xa7, 0xea, 0xab, 0xfe, - 0x35, 0xd2, 0xe9, 0x9f, 0xb6, 0x55, 0x95, 0xdc, 0x8a, 0xaf, - 0x79, 0x9c, 0xfa, 0xa2, 0x7f, 0x8d, 0x7e, 0x1c, 0xc3, 0xf1, - 0x2b, 0x5e, 0x84, 0xc, 0x5e, 0x31, 0xae, 0x83, 0xc3, 0xdf, - 0x15, 0xfc, 0x44, 0xd7, 0xd0, 0xa2, 0xce, 0x5f, 0x73, 0x81, - 0xd4, 0xff, 00, 0x8d, 00, 0x7f, 0x40, 0x5e, 0xb, 0xf8, - 0x95, 0x6f, 0xe3, 0xab, 0x31, 0x34, 0x27, 0x70, 0xf5, 0xc0, - 0x1f, 0xc8, 0xd6, 0xb6, 0xa1, 0x27, 0x19, 0xaf, 0x9c, 0xff, - 00, 0x63, 0x1f, 0xb5, 0xc9, 0xf0, 0xee, 0x1b, 0x9b, 0xb5, - 0x75, 0x77, 0x3, 0x5, 0xc1, 0xc9, 0xeb, 0x5f, 0x41, 0xdf, - 0xb9, 0x9, 0xf8, 0x50, 0x7, 0x3f, 0xa9, 0x49, 0xd6, 0xb9, - 0x5d, 0x4a, 0x4c, 0x6, 0xae, 0x83, 0x53, 0x97, 0xad, 0x72, - 0x7a, 0xac, 0xbf, 0x29, 0xa0, 0xe, 0x5b, 0x58, 0x97, 0xef, - 0x57, 0x97, 0xf8, 0xf2, 0xef, 0xca, 0xb3, 0x60, 0xe, 0x2b, - 0xd0, 0xb5, 0x99, 0x7e, 0xf7, 0x35, 0xe3, 0x1f, 0x12, 0xf5, - 0x12, 0xaa, 0xeb, 0x9e, 0x5, 0x73, 0x62, 0x65, 0xc9, 0x4d, - 0xb3, 0x8f, 0x17, 0x3e, 0x4a, 0x4d, 0x9f, 0x3f, 0xfc, 0x42, - 0xbd, 0xdc, 0xd2, 0xc, 0x9a, 0xf1, 0xed, 0x52, 0x4e, 0x5a, - 0xbd, 0x7, 0xc6, 0xd7, 0x66, 0x59, 0x9c, 0x67, 0xbd, 0x79, - 0x9e, 0xa9, 0x2f, 0x27, 0x9a, 0xf8, 0x2f, 0x8e, 0xab, 0x3f, - 0x33, 0xbf, 0xb4, 0xae, 0xd9, 0xcf, 0xea, 0xf, 0x92, 0x6b, - 0x1a, 0x76, 0xad, 0x1b, 0xd7, 0xcb, 0x1a, 0xca, 0xb8, 0x6e, - 0xb5, 0xef, 0x52, 0x47, 0xd3, 0x50, 0x8d, 0x92, 0x3e, 0x93, - 0xfd, 0x86, 0xbc, 0x36, 0x75, 0x3f, 0x19, 0xea, 0xb7, 0xec, - 0x80, 0xac, 0x51, 0xa4, 0x11, 0xbe, 0x39, 0xe, 0xc7, 0x7, - 0x1f, 0x81, 0xaf, 0xd5, 0x6d, 0x36, 0xdc, 0x5b, 0x5a, 0x41, - 0x1e, 0x31, 0xb5, 00, 0xfd, 0x2b, 0xe1, 0xaf, 0xd8, 0x7, - 0xc1, 0x42, 0xdf, 0xc2, 0x5a, 0x7d, 0xf3, 0xa0, 0x7, 0x50, - 0x9e, 0x4b, 0x89, 0x6, 0x39, 0xfd, 0xd9, 0x91, 0x54, 0x9f, - 0xc8, 0x57, 0xdd, 0xb0, 0x1e, 0x73, 0x8c, 0x57, 0xd1, 0x52, - 0x8f, 0x2c, 0x11, 0xf5, 0x74, 0x23, 0xcb, 0x4d, 0x22, 0xed, - 0xba, 0xf2, 0x2b, 0x4e, 0x11, 0xd2, 0xb3, 0xed, 0xfa, 0x8a, - 0xd1, 0x83, 0xb5, 0x6c, 0x6e, 0x5d, 0x84, 0x64, 0xd6, 0x84, - 0x2b, 0xf2, 0x8a, 0xa5, 0x6, 0x3d, 0x2b, 0x42, 0x1e, 0x82, - 0x80, 0x2d, 0x44, 0x33, 0x8a, 0xb9, 0x18, 0xaa, 0xd0, 0x81, - 0x9a, 0xb7, 0x18, 0xa0, 0xb, 0x11, 0xe, 0x95, 0x65, 0x2a, - 0x8, 0x85, 0x59, 0x51, 0xc5, 00, 0x3d, 0x47, 0x6a, 0x90, - 0x75, 0xa6, 0x2f, 0x5a, 0x91, 0x68, 0x1, 0xcb, 0x52, 0xe, - 0x94, 0xc5, 0xed, 0x4f, 0xa0, 0x2, 0x9c, 0x3a, 0x53, 0x69, - 0xc2, 0x80, 0x16, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0xc, 0x19, 0xd, 0x7c, 0xaf, 0xfb, 0x7b, 0x78, 0x9d, 0x2c, - 0x7e, 0x1f, 0x69, 0x3a, 0x32, 0xb9, 0x5b, 0x8b, 0xeb, 0xc1, - 0x21, 0x50, 0x7a, 0xc6, 0x80, 0xe7, 0xf5, 0x2b, 0x5f, 0x54, - 0x49, 0x8c, 0xd7, 0xe7, 0xff, 00, 0xed, 0xfd, 0xae, 0x3d, - 0xdf, 0xc4, 0xed, 0x3, 0x4d, 0x2f, 0xfb, 0xbb, 0x3b, 0x47, - 0x75, 0x4f, 0x4f, 0x30, 0xa9, 0xfc, 0x7e, 0xed, 0x78, 0x39, - 0xe5, 0x57, 0x4b, 0x1, 0x51, 0xad, 0xde, 0x9f, 0x79, 0xf3, - 0x3c, 0x47, 0x59, 0xd1, 0xcb, 0x2a, 0x35, 0xbb, 0xd3, 0xef, - 0x3a, 0x6f, 0xd9, 0x3e, 0xd0, 0x5b, 0x68, 0x53, 0x5c, 0x63, - 0x6, 0x47, 0xc6, 0x7f, 0x12, 0x2b, 0xea, 0x3d, 0x32, 0xef, - 0xa, 0x39, 0x15, 0xf3, 0x57, 0xec, 0xe7, 0x8b, 0x3f, 0x7, - 0x5b, 0x8e, 0x85, 0x8b, 0x1f, 0xfc, 0x78, 0xd7, 0xbb, 0x69, - 0xf7, 0xf8, 0xc7, 0x3c, 0x56, 0xd9, 0x45, 0x2f, 0x65, 0x82, - 0xa7, 0x1f, 0x23, 0x7c, 0x8a, 0x8a, 0xa1, 0x97, 0x52, 0x8a, - 0xec, 0x77, 0xb6, 0xd7, 0x9e, 0xf5, 0xa5, 0xd, 0xef, 0x1d, - 0x45, 0x71, 0xb0, 0x5f, 0x71, 0xd7, 0xf4, 0xad, 0x18, 0x2f, - 0xc7, 0x73, 0x5e, 0xc1, 0xef, 0x9d, 0x64, 0x77, 0xbe, 0xf5, - 0x38, 0xbf, 0xf7, 0xae, 0x5d, 0x6f, 0xf1, 0xfc, 0x54, 0xe1, - 0xa8, 0xfb, 0xd0, 0x7, 0x48, 0xf7, 0xa1, 0x87, 0x27, 0x8a, - 0xcf, 0xba, 0xd3, 0xf4, 0xfb, 0xe6, 0xdd, 0x3d, 0xbc, 0x72, - 0xb7, 0xab, 0x28, 0x26, 0xb2, 0x9b, 0x51, 0xe3, 0xad, 0x20, - 0xd4, 0xbd, 0xff, 00, 0x4a, 00, 0xbb, 0xff, 00, 0x8, - 0xd6, 0x8f, 0xb8, 0x30, 0xb4, 0x8c, 0x1f, 0xa0, 0xad, 0x5b, - 0x4f, 0x26, 0xc6, 0x30, 0x90, 0xa8, 0x45, 0x1d, 0x85, 0x73, - 0xe3, 0x52, 0x3e, 0xbf, 0xa5, 0x3c, 0x6a, 0x5e, 0xf4, 0x1, - 0xd3, 0xfd, 0xbb, 0xde, 0x94, 0x5e, 0xfb, 0xd7, 0x32, 0x35, - 0x2f, 0x7a, 0x7a, 0xea, 0x78, 0xef, 0x40, 0x1d, 0x20, 0xbc, - 0xcf, 0x7a, 0x77, 0xdb, 0x7d, 0xeb, 0x9a, 0x1a, 0x96, 0x7b, - 0xd3, 0xff, 00, 0xb4, 0xb8, 0xeb, 0xfa, 0x50, 0x7, 0x46, - 0x2f, 0x5, 0x2f, 0xda, 0x81, 0xae, 0x74, 0x6a, 0x5e, 0xf4, - 0xe1, 0xa8, 0xfb, 0xd0, 0x7, 0x43, 0xf6, 0xa1, 0xeb, 0x47, - 0xda, 0x47, 0xad, 0x60, 0x7f, 0x68, 0x7b, 0x8a, 0x70, 0xd4, - 0x7, 0xad, 00, 0x6f, 0xfd, 0xa0, 0x7a, 0xd2, 0x89, 0xd7, - 0xd6, 0xb0, 0x7e, 0xde, 0x3d, 0x7f, 0x4a, 0x51, 0x7e, 0x3d, - 0x68, 0x3, 0x7b, 0xce, 0x5f, 0x5a, 0x5f, 0x35, 0x7d, 0x6b, - 0xc, 0x5f, 0x83, 0xde, 0x94, 0x5f, 0x8c, 0xf5, 0xfd, 0x28, - 0x3, 0x6f, 0xcc, 0x5f, 0x5a, 0x50, 0xe0, 0xf7, 0xac, 0x5f, - 0xb6, 0x8f, 0x51, 0x4f, 0x17, 0xdc, 0x75, 0xa0, 0xd, 0x7d, - 0xc3, 0xd6, 0x97, 0x22, 0xb2, 0x3e, 0xdb, 0xcf, 0xde, 0xa7, - 0x7d, 0xbb, 0xfd, 0xaa, 00, 0xd5, 0xcd, 0x19, 0xac, 0xc1, - 0x7d, 0xef, 0x4e, 0x17, 0xbc, 0xf5, 0x14, 0x1, 0xa5, 0x45, - 0x67, 0x7d, 0xb7, 0xde, 0x97, 0xed, 0xbe, 0xff, 00, 0xa5, - 00, 0x68, 0x51, 0x54, 0x45, 0xe7, 0xa9, 0xfd, 0x29, 0xdf, - 0x6d, 0xf7, 0x14, 0x1, 0x72, 0x8a, 0xa8, 0x2f, 0x33, 0xdc, - 0x53, 0xbe, 0xd6, 0x3d, 0x68, 0x2, 0xcd, 0x15, 0x5c, 0x5d, - 0x8c, 0x76, 0xa3, 0xed, 0x62, 0x80, 0x2c, 0x51, 0x50, 0xfd, - 0xa5, 0x73, 0x4a, 0x2e, 0x14, 0xd0, 0x4, 0xb4, 0x54, 0x7e, - 0x7a, 0xfa, 0xd2, 0x89, 0x94, 0xf7, 0xa0, 0x7, 0xd1, 0x4c, - 0xf3, 0x54, 0xf7, 0xa5, 0xde, 0x3d, 0x68, 0x1, 0x71, 0x46, - 0x7, 0xa5, 0x20, 0x71, 0xeb, 0x46, 0xe1, 0xeb, 0x40, 0xb, - 0x8a, 0x31, 0x46, 0x45, 0x2d, 00, 0x21, 0x50, 0x7a, 0x8c, - 0xfd, 0x69, 0x86, 0x8, 0xc8, 0xc1, 0x45, 0x3f, 0xf0, 0x1a, - 0x92, 0x8a, 00, 0x81, 0xac, 0x6d, 0xdf, 0xef, 0x5b, 0xc4, - 0xdf, 0x54, 0x6, 0xa2, 0x6d, 0x1e, 0xc5, 0xf3, 0x9b, 0x48, - 0x3f, 0xef, 0xd8, 0xab, 0x94, 0x50, 0x6, 0x63, 0xf8, 0x6f, - 0x4c, 0x90, 0x61, 0xac, 0x60, 0x3f, 0xf6, 0xcc, 0x7f, 0x85, - 0x56, 0x93, 0xc1, 0x7a, 0x2c, 0xbd, 0x74, 0xe8, 0x3f, 0x8, - 0xc7, 0xf8, 0x56, 0xe5, 0x14, 0x1, 0xcd, 0x3f, 0xc3, 0xbd, - 0x2, 0x4c, 0xee, 0xd3, 0xa2, 0x39, 0xff, 00, 0x64, 0x7f, - 0x85, 0x55, 0x93, 0xe1, 0x47, 0x86, 0x65, 0xfb, 0xda, 0x6c, - 0x5f, 0x82, 0x8f, 0xf0, 0xae, 0xbe, 0x8a, 00, 0xe1, 0x25, - 0xf8, 0x29, 0xe1, 0x49, 0xb3, 0x9d, 0x3c, 0xc, 0xfa, 0x6d, - 0xff, 00, 0xa, 0xa3, 0x37, 0xc0, 0x1f, 0x8, 0xcd, 0xd6, - 0xc4, 0xff, 00, 0xe3, 0xbf, 0xfc, 0x4d, 0x7a, 0x4d, 0x27, - 0x4a, 00, 0xf2, 0x69, 0xff, 00, 0x66, 0xaf, 0x8, 0x4c, - 0x78, 0xb4, 0x23, 0xf1, 0x5f, 0xfe, 0x26, 0xb3, 0xee, 0x7f, - 0x65, 0xaf, 0x9, 0xcb, 0xd2, 0xdf, 0xf3, 0xda, 0x7f, 0xf6, - 0x5a, 0xf6, 0x9a, 0x5a, 00, 0xf0, 0x1b, 0x9f, 0xd9, 0x1b, - 0xc2, 0xd3, 0x67, 0x16, 0xeb, 0xf9, 0xaf, 0xff, 00, 0x13, - 0x59, 0x97, 0x1f, 0xb1, 0xb7, 0x87, 0x1c, 0x7c, 0x90, 0xf, - 0xcd, 0x7f, 0xf8, 0x9a, 0xfa, 0x46, 0x92, 0x80, 0x3e, 0x56, - 0xbb, 0xfd, 0x89, 0x74, 0x49, 0x18, 0xec, 0xb5, 0x52, 0x3d, - 0x9d, 0x7, 0xf4, 0xac, 0x8b, 0x9f, 0xd8, 0x73, 0x4d, 0x6c, - 0x95, 0xb4, 0x39, 0x3c, 0xf1, 0x22, 0x7f, 0x85, 0x7d, 0x81, - 0x45, 00, 0x7c, 0x4f, 0x77, 0xfb, 0xa, 0x5a, 0x91, 0xf2, - 0x58, 0x96, 0xfa, 0x3a, 0x7f, 0x85, 0x63, 0xdd, 0x7e, 0xc2, - 0xb, 0xce, 0x34, 0xd9, 0x8e, 0x3d, 0x1d, 0x4f, 0xf4, 0xaf, - 0xbc, 0x68, 0xa0, 0xf, 0xcf, 0x6b, 0xbf, 0xd8, 0x3d, 0xf9, - 0x2b, 0xa6, 0x4d, 0xf8, 0xed, 0xff, 00, 0xa, 0xc4, 0xbc, - 0xfd, 0x84, 0xee, 0x50, 0x1c, 0x69, 0x13, 0xfe, 0x1b, 0x7f, - 0xc2, 0xbf, 0x48, 0xf0, 0x3d, 0x29, 0x36, 0x29, 0xec, 0x3f, - 0x2a, 00, 0xfc, 0xc0, 0xbb, 0xfd, 0x86, 0xee, 0xc1, 0x3f, - 0xf1, 0x2a, 0x9f, 0x3, 0xd4, 0x2f, 0xf8, 0x56, 0x2d, 0xdf, - 0xec, 0x45, 0x7c, 0xb9, 0xff, 00, 0x89, 0x3c, 0xdf, 0x92, - 0xff, 00, 0x85, 0x7e, 0xac, 0x18, 0x90, 0xf5, 0x45, 0x3f, - 0x85, 0x31, 0xac, 0xe0, 0x71, 0x83, 0x12, 0x91, 0xf4, 0xa0, - 0xf, 0xc9, 0xb, 0xbf, 0xd8, 0xaa, 0xf9, 0x3f, 0xe6, 0xf, - 0x3f, 0xfd, 0xf2, 0x3f, 0xc2, 0xb1, 0xee, 0xff, 00, 0x63, - 0x1b, 0xe5, 0x27, 0xfe, 0x24, 0xf2, 0x91, 0xec, 0xa3, 0xfc, - 0x2b, 0xf6, 0x9, 0xb4, 0xab, 0x47, 0xeb, 0x2, 0x9a, 0x82, - 0x4f, 0xe, 0x69, 0xb2, 0xe7, 0x75, 0xa2, 0x1c, 0xfb, 0x9f, - 0xf1, 0xa0, 0xf, 0xc6, 0xbb, 0xaf, 0xd8, 0xea, 0xf5, 0x3f, - 0xe6, 0xd, 0x3f, 0xfd, 0xf2, 0x3f, 0xc2, 0xb1, 0xaf, 0x3f, - 0x64, 0x2b, 0xc5, 0x3f, 0xf2, 0x6, 0x98, 0xe7, 0xd5, 0x47, - 0xf8, 0x57, 0xed, 0x23, 0xf8, 0x3b, 0x47, 0x90, 0x73, 0x64, - 0xa7, 0xfe, 0x4, 0xdf, 0xe3, 0x55, 0x66, 0xf8, 0x79, 0xa0, - 0x4d, 0xf7, 0xec, 0x47, 0xa7, 0xe, 0xc3, 0xfa, 0xd0, 0x7, - 0xe2, 0x75, 0xcf, 0xec, 0x93, 0x74, 0x3a, 0xe8, 0xb3, 0xff, - 00, 0xdf, 0x23, 0xfc, 0x2b, 0x26, 0xe7, 0xf6, 0x51, 0xb8, - 0x4c, 0xff, 00, 0xc4, 0x9e, 0x71, 0xff, 00, 0x1, 0x1f, - 0xe1, 0x5f, 0xb7, 0x92, 0x7c, 0x28, 0xf0, 0xd4, 0xbd, 0x6c, - 0x4f, 0xe1, 0x23, 0x7f, 0x8d, 0x54, 0x9b, 0xe0, 0xbf, 0x85, - 0xe6, 0x4, 0x1b, 0x16, 0xff, 00, 0xbf, 0x8d, 0xfe, 0x34, - 0x1, 0xf8, 0x77, 0x71, 0xfb, 0x2c, 0x5c, 0x27, 0xfc, 0xc2, - 0x6e, 0x3f, 00, 0x3f, 0xc2, 0xb3, 0x6e, 0x3f, 0x66, 0x19, - 0xd3, 0xfe, 0x61, 0xb7, 0x4b, 0xf8, 0x7f, 0xf5, 0xab, 0xf7, - 0x22, 0x6f, 0x80, 0x1e, 0x13, 0x98, 0x93, 0xf6, 0x47, 0x19, - 0xff, 00, 0xa6, 0x8d, 0xfe, 0x35, 0x42, 0x7f, 0xd9, 0xbb, - 0xc2, 0x92, 0xe7, 0x10, 0xb8, 0xcf, 0xfb, 0x4c, 0x7f, 0xf6, - 0x6a, 00, 0xfc, 0x34, 0x9b, 0xf6, 0x6a, 0xb8, 0x5c, 0xe2, - 0xc6, 0xe3, 0x8f, 0x43, 0xff, 00, 0xd6, 0xac, 0xdb, 0x8f, - 0xd9, 0xd2, 0xea, 0x3c, 0xe2, 0xd6, 0xe4, 0x7e, 0x35, 0xfb, - 0x99, 0x71, 0xfb, 0x2d, 0xf8, 0x56, 0x50, 0x7f, 0x76, 0xd9, - 0xfa, 0xb7, 0xff, 00, 0x15, 0x59, 0x37, 0x1f, 0xb2, 0x3f, - 0x86, 0xa5, 0x27, 0x6a, 0xb8, 0xfa, 0x93, 0xff, 00, 0xc5, - 0x50, 0x7, 0xe1, 0xd4, 0xbf, 0xb3, 0xfd, 0xea, 0xf4, 0x82, - 0x7f, 0xce, 0xa9, 0x4b, 0xf0, 0x27, 0x51, 0x4f, 0xf9, 0x61, - 0x38, 0xff, 00, 0x3f, 0x4a, 0xfd, 0xbd, 0xba, 0xfd, 0x8e, - 0x34, 0x29, 0x33, 0xb5, 0x9, 0xff, 00, 0x81, 0x1f, 0xfe, - 0x2a, 0xb2, 0x6e, 0x7f, 0x62, 0x8d, 0x1e, 0x40, 0x76, 0xa3, - 0x73, 0xfe, 0xd1, 0xff, 00, 0xe2, 0xe8, 0x3, 0xf1, 0x2e, - 0x5f, 0x82, 0x9a, 0xa2, 0x74, 0x8a, 0x6f, 0xc4, 0xf, 0xf0, - 0xaa, 0x92, 0xfc, 0x1f, 0xd5, 0xd3, 0xa5, 0xbc, 0xbf, 0x90, - 0xaf, 0xda, 0x9b, 0xaf, 0xd8, 0x76, 0xc1, 0xb3, 0xb6, 0x22, - 0xc0, 0xff, 00, 0xb6, 0x7f, 0xf8, 0xba, 0xc9, 0xb9, 0xfd, - 0x85, 0x2d, 0xdb, 0x25, 0x6d, 0x5b, 0xf0, 0x93, 0xff, 00, - 0xb3, 0xa0, 0xf, 0xc6, 0x29, 0x7e, 0x15, 0x6a, 0xe9, 0x9f, - 0xdc, 0x48, 0x3e, 0xab, 0x54, 0xe4, 0xf8, 0x6f, 0xad, 0x27, - 0xfc, 0xba, 0xc8, 0x47, 0xfb, 0xbf, 0xfd, 0x7a, 0xfd, 0x91, - 0xbc, 0xfd, 0x84, 0x41, 0xc9, 0x5b, 0x66, 0xfa, 0x6f, 0x1f, - 0xfc, 0x5d, 0x60, 0xdd, 0x7e, 0xc2, 0x52, 0xe4, 0xe2, 0xcd, - 0xb1, 0xea, 0x1c, 0x1f, 0xfd, 0x9e, 0x80, 0x3f, 0x21, 0x1f, - 0xc0, 0x9a, 0xc4, 0x7d, 0x6c, 0xe5, 0xff, 00, 0xbe, 0x6a, - 0xbb, 0xf8, 0x3f, 0x56, 0x4e, 0xb6, 0x52, 0xfe, 0x55, 0xfa, - 0xd5, 0x77, 0xfb, 0xc, 0xce, 0x9, 0xff, 00, 0x45, 0x71, - 0xf5, 0x60, 0x7f, 0xf6, 0x7a, 0xc4, 0xbb, 0xfd, 0x87, 0xae, - 0xc0, 0xff, 00, 0x8f, 0x46, 0x3f, 0xf0, 0x30, 0x3f, 0xf6, - 0x7a, 00, 0xfc, 0xaa, 0x7f, 0xd, 0x6a, 0x69, 0xd6, 0xca, - 0x5f, 0xca, 0xa2, 0x6d, 0xe, 0xfd, 0x3a, 0xda, 0x4a, 0x3f, - 0xe0, 0x35, 0xfa, 0x83, 0x79, 0xfb, 0x12, 0xde, 0x27, 0xfc, - 0xb9, 0xb0, 0xfa, 0xb8, 0xff, 00, 0xe2, 0xeb, 0x16, 0xeb, - 0xf6, 0x2e, 0xbd, 00, 0xe2, 0xd0, 0xb7, 0xfc, 0x8, 0xf, - 0xfd, 0x9e, 0x80, 0x3f, 0x35, 0x1b, 0x4b, 0xbb, 0x5e, 0xb6, - 0xd2, 0x8f, 0xf8, 0x1, 0xa8, 0xcd, 0x94, 0xeb, 0xd6, 0x17, - 0x1f, 0x55, 0xaf, 0xd1, 0x4b, 0xdf, 0xd8, 0xda, 0xf6, 0x3c, - 0x9f, 0xb1, 0x30, 0xfa, 0x48, 0x3f, 0xf8, 0xaa, 0xc5, 0xb9, - 0xfd, 0x90, 0x6f, 0x39, 0xff, 00, 0x42, 0x27, 0xeb, 0x20, - 0xff, 00, 0xe2, 0xa8, 0x3, 0xe0, 0x33, 0x6f, 0x28, 0xeb, - 0x1b, 0xf, 0xc2, 0x98, 0x51, 0x87, 0x55, 0x23, 0xf0, 0xaf, - 0xba, 0xae, 0x3f, 0x64, 0x5b, 0xb5, 0xce, 0x6c, 0x1b, 0xf0, - 0x90, 0x7f, 0xf1, 0x55, 0x8f, 0x75, 0xfb, 0x28, 0x5c, 0x26, - 0x7f, 0xd0, 0x5b, 0xfe, 0xfb, 0x1f, 0xfc, 0x55, 00, 0x7c, - 0x5b, 0xb4, 0xd2, 0x60, 0x8a, 0xfa, 0xfa, 0xe3, 0xf6, 0x53, - 0xb8, 0xc9, 0xcd, 0x8b, 0x1f, 0xfb, 0x68, 0x3f, 0xf8, 0xaa, - 0xcb, 0xb9, 0xfd, 0x96, 0xe5, 0x4e, 0xb6, 0x6e, 0x31, 0xff, - 00, 0x4d, 0x7, 0xff, 00, 0x15, 0x40, 0x1f, 0x2a, 0xd1, - 0x5f, 0x4a, 0x5d, 0x7e, 0xcc, 0x92, 0xa1, 0x23, 0xec, 0xad, - 0x9f, 0xfa, 0xe9, 0xff, 00, 0xd9, 0x56, 0x74, 0xff, 00, - 0xb3, 0x6c, 0xb1, 0xe7, 0x36, 0xee, 0x3d, 0xf7, 0xf, 0xfe, - 0x2a, 0x80, 0x3e, 0x7c, 0xa2, 0xbd, 0xce, 0x5f, 0xd9, 0xde, - 0x75, 0xce, 0xd8, 0xdb, 0xf3, 0xff, 00, 0xec, 0xaa, 0x94, - 0xbf, 00, 0x6e, 0xd0, 0x1c, 0x46, 0xdf, 0x98, 0xff, 00, - 0xe2, 0xa8, 0x3, 0xc6, 0x68, 0xaf, 0x58, 0x9b, 0xe0, 0x5d, - 0xfa, 0x7d, 0xd5, 0x3f, 0xa7, 0xff, 00, 0x15, 0x54, 0x66, - 0xf8, 0x29, 0xaa, 0x2e, 0x76, 0xaf, 0x4f, 0x71, 0xfe, 0x34, - 0x1, 0xe6, 0xb4, 0x57, 0x7b, 0x27, 0xc2, 0x1d, 0x55, 0x7, - 0x4f, 0xe5, 0xfe, 0x35, 0x9d, 0x71, 0xf0, 0xd3, 0x57, 0x83, - 0xfe, 0x59, 0x83, 0xf8, 0x8f, 0xf1, 0xa0, 0xe, 0x4e, 0xbb, - 0xef, 0x84, 0x9a, 0x1f, 0xf6, 0xd7, 0x8b, 0xf4, 0xbb, 0x6f, - 0x2c, 0xcb, 0xbe, 0x50, 0x76, 0x8e, 0xf5, 0xce, 0xcd, 0xe0, - 0xcd, 0x52, 0xf, 0xbd, 00, 0xc7, 0xfb, 0xc2, 0xbd, 0xaf, - 0xf6, 0x4d, 0xf0, 0x8d, 0xd6, 0xa5, 0xf1, 0x4b, 0x4f, 0x8e, - 0x58, 0x76, 0xa2, 0x37, 0x2d, 0x91, 0xc7, 0xeb, 0x40, 0x1f, - 0xb1, 0xbf, 00, 0xfc, 0x3e, 0x34, 0x2f, 00, 0x69, 0xb0, - 0xec, 0xd8, 0xc5, 0x32, 0x47, 0xe7, 0x5d, 0xee, 0xa8, 0xf8, - 0x1f, 0x85, 0x55, 0xf0, 0x95, 0x8a, 0xe9, 0xfa, 0x25, 0x9c, - 0x28, 0xbb, 0x55, 0x23, 0x3, 0x14, 0xed, 0x59, 0xe8, 0x3, - 0x99, 0xd4, 0xa4, 0xeb, 0x5c, 0x96, 0xaf, 0x2e, 0x14, 0xd7, - 0x49, 0xa9, 0xc9, 0xc9, 0xae, 0x43, 0x58, 0x97, 0xad, 00, - 0x72, 0x5a, 0xd4, 0xd8, 0xd, 0xcd, 0x78, 0x7, 0xc4, 0xbd, - 0x43, 0x2f, 0x27, 0x22, 0xbd, 0xbf, 0xc4, 0x37, 0x1e, 0x5c, - 0x52, 0x12, 0x71, 0xc1, 0xaf, 0x9a, 0xfe, 0x24, 0x5f, 0xe5, - 0xa5, 0x3b, 0xab, 0xc8, 0xcc, 0x67, 0xcb, 0x4e, 0xc7, 0x87, - 0x9a, 0xd4, 0xe5, 0xa5, 0x63, 0xc4, 0x7c, 0x4f, 0x71, 0xe6, - 0x5c, 0xbf, 0x22, 0xb8, 0xd, 0x52, 0x4e, 0x5a, 0xba, 0xed, - 0x6e, 0x6d, 0xf3, 0x48, 0x73, 0x9a, 0xe2, 0x35, 0x49, 0x39, - 0x6a, 0xf9, 0x2c, 0x3a, 0xe6, 0x9d, 0xcf, 0x84, 0xc2, 0xae, - 0x69, 0xb6, 0x62, 0x5c, 0xb7, 0x26, 0xb3, 0x9d, 0x4c, 0x92, - 0x2a, 0xaf, 0x25, 0x8e, 00, 0xfc, 0x6a, 0xe5, 0xc3, 0x67, - 0x35, 0xa1, 0xe0, 0x4d, 0x14, 0x78, 0x93, 0xc6, 0xba, 0x4e, - 0x9a, 0xd9, 0x2b, 0x71, 0x38, 0x52, 0x1, 0xc7, 0x41, 0x9f, - 0xe9, 0x5f, 0x45, 0x46, 0x3a, 0xd8, 0xfa, 0xda, 0x11, 0xbb, - 0x48, 0xfd, 0x50, 0xfd, 0x92, 0xbc, 0x26, 0xbe, 0x1c, 0xf0, - 0x46, 0x99, 0x6e, 0x51, 0x92, 0x4b, 0x7b, 0x34, 0xc, 0xad, - 0xd9, 0xdb, 0x96, 0xfe, 0x66, 0xbe, 0x88, 0x84, 0x71, 0x5e, - 0x7f, 0xf0, 0x8b, 0x4b, 0x8e, 0xc3, 0xc3, 0x61, 0xe3, 0x5d, - 0x8b, 0x23, 0x10, 0x3e, 0x8a, 0x48, 0x1f, 0xca, 0xbd, 0xe, - 0x11, 0xd3, 0x15, 0xf4, 0x2b, 0x45, 0x63, 0xea, 0x56, 0x8a, - 0xc5, 0xdb, 0x61, 0x92, 0x31, 0x5a, 0x50, 0x8a, 0xa3, 0x6e, - 0x3a, 0x56, 0x84, 0x23, 0xa5, 0x31, 0x97, 0x60, 0x5a, 0xd0, - 0x8b, 0x8c, 0x55, 0x38, 00, 0xc5, 0x5e, 0x88, 0x50, 0x5, - 0xa8, 0xbd, 0x6a, 0xec, 0x63, 0xa5, 0x55, 0x88, 0x70, 0x2a, - 0xd4, 0x62, 0x80, 0x2d, 0x45, 0x56, 0x16, 0xab, 0xc4, 0x3a, - 0x55, 0x95, 0xa0, 0x7, 0xad, 0x3c, 0x76, 0xa6, 0xe, 0x95, - 0x20, 0xeb, 0x40, 0xf, 0x1d, 0x69, 0xd4, 0x8b, 0x4b, 0x40, - 0xa, 0x3a, 0xd3, 0xa9, 0xab, 0x4e, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xe, 0x7e, 0x43, 0x8a, 0xfc, - 0xd7, 0xfd, 0xb8, 0xaf, 0x4d, 0xcf, 0xed, 0x4, 0xe9, 0x9c, - 0xa4, 0x56, 0x10, 0x20, 0x19, 0xcf, 0x3f, 0x36, 0x7f, 0xa5, - 0x7e, 0x94, 0x4d, 0x93, 0x5f, 0x98, 0x9f, 0xb6, 0x89, 0xc7, - 0xed, 0xd, 0x7f, 0x81, 0x8f, 0xdc, 0xc5, 0xfc, 0xda, 0xbe, - 0x67, 0x88, 0x3f, 0xdc, 0xd2, 0xee, 0xd1, 0xf1, 0xfc, 0x51, - 0xae, 0x5, 0x47, 0xbc, 0x91, 0xec, 0xff, 00, 0x6, 0xee, - 0x45, 0xa7, 0x85, 0x6c, 0x50, 0x1f, 0xe1, 0x3f, 0xcc, 0xd7, - 0xac, 0x58, 0xea, 0x20, 0x1, 0xcf, 0xeb, 0x5e, 0x19, 0xf0, - 0xce, 0xf3, 0xc9, 0xd0, 0x6c, 0xd7, 0x3d, 0x13, 0xfa, 0x9a, - 0xf4, 0x7b, 0x4d, 0x4f, 0x81, 0xcd, 0x7b, 0xb8, 0x68, 0xf2, - 0xd1, 0x82, 0xf2, 0x47, 0xd2, 0x60, 0xe3, 0xc9, 0x87, 0x84, - 0x7c, 0x91, 0xe9, 0x16, 0xda, 0x96, 0x40, 0xff, 00, 0x1a, - 0xd0, 0x8f, 0x51, 0xc7, 0xff, 00, 0xae, 0xbc, 0xfe, 0xdb, - 0x56, 0xc6, 0x39, 0x1f, 0x9d, 0x68, 0x47, 0xab, 0xae, 0x39, - 0x75, 0x1f, 0x8d, 0x74, 0x9d, 0x87, 0x72, 0xba, 0x98, 0x1d, - 0xea, 0x41, 0xa9, 0x3, 0xde, 0xb8, 0x71, 0xae, 0x44, 0x3f, - 0xe5, 0xa2, 0xfe, 0x62, 0x9d, 0xfd, 0xbf, 0x8, 0x1f, 0xeb, - 0x17, 0xfe, 0xfa, 0xa9, 0xe6, 0x5d, 0xc9, 0xe6, 0x8a, 0xea, - 0x76, 0xaf, 0xa8, 0x8c, 0x75, 0xa8, 0xff, 00, 0xb4, 0x7d, - 0xff, 00, 0x5a, 0xe3, 0x5b, 0x5f, 0x87, 0x1f, 0xeb, 0x17, - 0xfe, 0xfa, 0x14, 0xc5, 0xd7, 0xa3, 0xcf, 0xdf, 0x5f, 0xfb, - 0xea, 0x8e, 0x65, 0xdc, 0x39, 0xa3, 0xdc, 0xed, 0xc6, 0xa5, - 0xef, 0x4f, 0x1a, 0x8f, 0xbd, 0x71, 0x43, 0x5b, 0x42, 0x7f, - 0xd6, 0x2f, 0xfd, 0xf4, 0x2a, 0x45, 0xd6, 0x54, 0xff, 00, - 0x1a, 0x9f, 0xf8, 0x15, 0x3b, 0xa1, 0xdd, 0x77, 0x3b, 0x41, - 0xa9, 0x7b, 0xd3, 0x86, 0xa3, 0xef, 0x5c, 0x62, 0xeb, 0x2b, - 0x9f, 0xbc, 0xbf, 0x9d, 0x48, 0xba, 0xb8, 0x3d, 0xc7, 0xe7, - 0x45, 0xc2, 0xe8, 0xec, 0x46, 0xa5, 0xef, 0x4f, 0x1a, 0x8f, - 0xbd, 0x71, 0xa3, 0x56, 0x19, 0xea, 0x3f, 0x3a, 0x72, 0xea, - 0xd9, 0xee, 0x3f, 0x3a, 0x63, 0x3b, 0x2f, 0xed, 0x2f, 0x7a, - 0x70, 0xd4, 0x7d, 0xeb, 0x8f, 0x1a, 0xaf, 0xb8, 0xfc, 0xe9, - 0xeb, 0xaa, 0xfb, 0x8f, 0xce, 0x80, 0x3b, 0x1, 0xa8, 0xe3, - 0xbd, 0x38, 0x6a, 0x5e, 0xf5, 0xc8, 0x2e, 0xab, 0xc7, 0x51, - 0xf9, 0xd3, 0x97, 0x55, 0xe3, 0xa8, 0xfc, 0xe8, 0x3, 0xaf, - 0x1a, 0x8f, 0xbd, 0x38, 0x6a, 0x3e, 0xf5, 0xc8, 0x8d, 0x50, - 0x7a, 0x8f, 0xce, 0x9c, 0x35, 0x4c, 0xf7, 0x1f, 0x9d, 00, - 0x75, 0xcb, 0xa8, 0x8f, 0xf2, 0x69, 0xe3, 0x51, 0xf7, 0xae, - 0x45, 0x75, 0x41, 0xea, 0x3f, 0x3a, 0x70, 0xd4, 0xc7, 0x5c, - 0x8f, 0xce, 0x80, 0x3a, 0xe1, 0xa8, 0xfb, 0xd3, 0x86, 0xa3, - 0xef, 0x5c, 0x90, 0xd5, 0x3d, 0xc7, 0xe7, 0x4f, 0x1a, 0x98, - 0xf5, 0x1f, 0x9d, 00, 0x75, 0xa3, 0x51, 0xf7, 0xa7, 0xd, - 0x47, 0xdf, 0xf5, 0xae, 0x48, 0x6a, 0x63, 0xd4, 0x7e, 0x74, - 0xe1, 0xa9, 0x7b, 0xfe, 0xb4, 0x1, 0xd6, 0x8d, 0x47, 0xde, - 0x9d, 0xfd, 0xa3, 0xef, 0x5c, 0x98, 0xd4, 0xbd, 0xc7, 0xe7, - 0x4e, 0x1a, 0x9f, 0xb8, 0xfc, 0xe8, 0x3, 0xad, 0xfe, 0xd1, - 0xf7, 0xa7, 0xd, 0x4a, 0xb9, 0x2f, 0xed, 0x2f, 0x71, 0xf9, - 0xd3, 0x86, 0xa5, 0xee, 0x7, 0xe3, 0x40, 0x1d, 0x68, 0xd4, - 0x47, 0xaf, 0xeb, 0x4f, 0x1a, 0x97, 0x3d, 0x6b, 0x92, 0xfe, - 0xd2, 0xf7, 0x1f, 0x9d, 0x38, 0x6a, 0x5e, 0xe3, 0xf3, 0xa0, - 0xe, 0xb4, 0x6a, 0x3e, 0xf4, 0xe1, 0xa8, 0x8f, 0x5a, 0xe4, - 0x86, 0xa5, 0xee, 0xf, 0xe3, 0x4e, 0xfe, 0xd1, 0xf7, 0xfd, - 0x68, 0x3, 0xad, 0xfe, 0xd1, 0x14, 0xe1, 0xa8, 0xa, 0xe4, - 0xc6, 0xa4, 0x3d, 0x45, 0x38, 0x6a, 0x7e, 0xe2, 0x80, 0x3a, - 0xc5, 0xd4, 0x7, 0xad, 0x38, 0x6a, 0x3, 0xd7, 0xf5, 0xae, - 0x4c, 0x6a, 0x5e, 0xe2, 0x9c, 0x35, 0x3f, 0x7f, 0xd6, 0x80, - 0x3a, 0xd1, 0xa8, 0xf, 0x5a, 0x51, 0x7e, 0xf, 0x53, 0x5c, - 0xa0, 0xd4, 0xfd, 0xe9, 0xcb, 0xa9, 0x67, 0xb8, 0xa0, 0xe, - 0xaf, 0xed, 0xc0, 0xff, 00, 0xfa, 0xe9, 0xdf, 0x6d, 0x1d, - 0x8d, 0x72, 0x83, 0x52, 0x1e, 0xbf, 0xad, 0x3c, 0x6a, 0x7e, - 0xe2, 0x80, 0x3a, 0xa1, 0x7a, 0x3d, 0x69, 0xc2, 0xf7, 0xde, - 0xb9, 0x51, 0xa9, 0xf3, 0xd4, 0x53, 0x97, 0x52, 0xf7, 0x1f, - 0x9d, 00, 0x75, 0x3f, 0x6d, 0x1e, 0xb9, 0xa7, 0xb, 0xce, - 0x3a, 0xd7, 0x2e, 0x35, 0x2f, 0x71, 0xf9, 0xd3, 0x86, 0xa5, - 0xee, 0x28, 0x3, 0xa8, 0x17, 0x83, 0xb7, 0xf3, 0xa5, 0x17, - 0xbc, 0xd7, 0x30, 0x35, 0x2f, 0x7f, 0xd6, 0x9c, 0x35, 0x2f, - 0x71, 0x40, 0x1d, 0x38, 0xbc, 0xf7, 0xa5, 0x17, 0x9e, 0xff, - 00, 0xad, 0x73, 0x23, 0x52, 0xe7, 0xa8, 0xa7, 0x8d, 0x48, - 0x7a, 0x8a, 00, 0xe9, 0x85, 0xed, 0x28, 0xbc, 0x15, 0xcd, - 0xd, 0x47, 0xdc, 0x53, 0x86, 0xa3, 0x8e, 0xe3, 0xf3, 0xa0, - 0xe, 0x97, 0xed, 0x82, 0x8f, 0xb5, 0x8a, 0xe7, 0x6, 0xa3, - 0xee, 0x29, 0xdf, 0xda, 0x3, 0xdb, 0xf3, 0xa0, 0xe, 0x8b, - 0xed, 0x6b, 0x4e, 0xfb, 0x4a, 0xf7, 0xae, 0x74, 0x6a, 0x23, - 0xdb, 0xf3, 0xa7, 0x8d, 0x40, 0x63, 0xa8, 0xa0, 0xd, 0xff, - 00, 0xb4, 0x25, 0x28, 0x9d, 0x6b, 00, 0x6a, 0x3e, 0xe2, - 0x9e, 0x35, 0x1, 0xea, 0x28, 0x3, 0x74, 0x4e, 0xa6, 0x97, - 0xcd, 0x5f, 0x5a, 0xc2, 0x1a, 0x80, 0xf5, 0xfd, 0x69, 0xdf, - 0x6f, 0x1e, 0xb4, 0x1, 0xb8, 0x24, 0x53, 0xde, 0x8d, 0xe3, - 0xd6, 0xb1, 0x45, 0xf8, 0xf5, 0xfd, 0x69, 0xc2, 0xfb, 0xfd, - 0xaf, 0xd6, 0x80, 0x36, 0x77, 0xf, 0x5a, 0x32, 0x3d, 0x6b, - 0x23, 0xed, 0xde, 0xff, 00, 0xad, 0x38, 0x5f, 0xf, 0x5f, - 0xd6, 0x80, 0x35, 0x73, 0x46, 0x6b, 0x33, 0xed, 0xc0, 0xf7, - 0xa5, 0xfb, 0x6f, 0xbf, 0xeb, 0x40, 0x1a, 0x74, 0x56, 0x70, - 0xbd, 0xf7, 0xa7, 0xb, 0xdf, 0x7a, 00, 0xbf, 0x45, 0x52, - 0x17, 0xb9, 0xef, 0x4b, 0xf6, 0xcc, 0xf7, 0xa0, 0xb, 0x94, - 0x55, 0x4f, 0xb6, 0x53, 0x85, 0xd8, 0xf6, 0xa0, 0xb, 0x34, - 0x55, 0x71, 0x74, 0xd, 0x28, 0xba, 0x6, 0x80, 0x27, 0xa2, - 0xa1, 0x17, 0x22, 0x8f, 0xb4, 0xad, 00, 0x4d, 0x45, 0x46, - 0x27, 0x53, 0x47, 0x9c, 0xb4, 0x1, 0x25, 0x14, 0xcf, 0x35, - 0x7d, 0x68, 0xf3, 0x17, 0xd6, 0x80, 0x1f, 0x45, 0x37, 0x70, - 0x3d, 0xe9, 0x77, 0xf, 0x5a, 00, 0x5a, 0x29, 0x32, 0x28, - 0xcd, 00, 0x18, 0xcd, 0x21, 0x40, 0x7a, 0x80, 0x69, 0x73, - 0x4b, 0x40, 0x11, 0x98, 0x50, 0xff, 00, 0x2, 0xfe, 0x42, - 0x9a, 0xd6, 0x90, 0xb7, 0x58, 0x63, 0x3f, 0x55, 0x15, 0x35, - 0x14, 0x1, 0x51, 0xf4, 0xab, 0x37, 0x3f, 0x35, 0xb4, 0x47, - 0xfe, 0x2, 0x2a, 0x17, 0xf0, 0xfe, 0x9d, 0x27, 0xde, 0xb3, - 0x88, 0xff, 00, 0xc0, 0x6b, 0x46, 0x8a, 00, 0xc6, 0x93, - 0xc1, 0xfa, 0x34, 0xa3, 0xe6, 0xd3, 0xe2, 0x3f, 0x9f, 0xf8, - 0xd5, 0x69, 0x7c, 0x1, 0xa1, 0xca, 0x72, 0x6c, 0x22, 0xfa, - 0x60, 0xff, 00, 0x8d, 0x74, 0x54, 0x50, 0x7, 0x21, 0x37, - 0xc2, 0xcf, 0xf, 0x4d, 0xf7, 0xac, 0x23, 0x19, 0xf4, 0x7, - 0xfc, 0x6a, 0x8c, 0xff, 00, 0x6, 0x3c, 0x3b, 0x36, 0x7f, - 0xd1, 0x51, 0x7f, 0x3, 0xfe, 0x35, 0xde, 0xd1, 0x40, 0x1e, - 0x65, 0x71, 0xf0, 0xf, 0xc3, 0x93, 0xff, 00, 0xcb, 0xbc, - 0x63, 0xfe, 0x2, 0x7f, 0xf8, 0xaa, 0xce, 0x9f, 0xf6, 0x6c, - 0xf0, 0xe4, 0xc4, 0xe1, 0x11, 0x33, 0xfe, 0xc1, 0x3f, 0xfb, - 0x35, 0x7a, 0xf5, 0x14, 0x1, 0xe2, 0x33, 0xfe, 0xcb, 0x5e, - 0x1e, 0x94, 0x70, 0x63, 0xfc, 0x63, 0x3f, 0xfc, 0x55, 0x66, - 0x5d, 0x7e, 0xc8, 0xfa, 0xc, 0xdf, 0x74, 0xc6, 0x3f, 0xed, - 0x99, 0xff, 00, 0xe2, 0xab, 0xe8, 0x1a, 0x28, 0x3, 0xe6, - 0x9b, 0x9f, 0xd8, 0xdf, 0x48, 0x93, 0x38, 0x68, 0xcf, 0x6f, - 0xf5, 0x7f, 0xfd, 0x9d, 0x63, 0xdd, 0xfe, 0xc5, 0x56, 0x12, - 0x29, 0xc2, 0xc7, 0x93, 0xdc, 0x2f, 0xff, 00, 0x67, 0x5f, - 0x57, 0x51, 0x40, 0x1f, 0x1b, 0x5e, 0xfe, 0xc4, 0x36, 0xec, - 0xa7, 0x6c, 0x6a, 0x7e, 0x8b, 0xff, 00, 0xd9, 0xd7, 0x15, - 0xad, 0xfe, 0xc4, 0x2e, 0xa4, 0xec, 0xb6, 0x61, 0xf4, 0x4c, - 0xff, 00, 0xec, 0xf5, 0xf7, 0xee, 0x2a, 0x39, 0x24, 0x8, - 0x3d, 0x68, 0x3, 0xf3, 0x1f, 0x5a, 0xfd, 0x8c, 0x2e, 0x60, - 0x66, 0xc5, 0xb3, 0x8c, 0x67, 0xfe, 0x59, 0x7f, 0xf6, 0x55, - 0xd9, 0x7e, 0xcf, 0x7f, 0xb3, 0x87, 0xfc, 0x22, 0x3e, 0x2a, - 0x17, 0x93, 0x5b, 0xe1, 0x94, 0x9c, 0x12, 0x98, 0xc7, 0xfe, - 0x3c, 0x6b, 0xef, 0x5b, 0xb9, 0x51, 0x94, 0x83, 0x83, 0x5c, - 0xfd, 0xda, 0x44, 0x8e, 0x59, 0x54, 0x6, 0xf5, 0xcd, 00, - 0x66, 0x8, 0x44, 0x11, 0x6d, 0x1c, 0x60, 0x57, 0x3f, 0xab, - 0xc9, 0x5b, 0x77, 0x97, 0x38, 0xcd, 0x73, 0x3a, 0xad, 0xc0, - 0x39, 0xa0, 0xe, 0x73, 0x52, 0x93, 0x93, 0x5c, 0x6e, 0xb1, - 0x27, 0xde, 0xae, 0xa7, 0x52, 0x90, 0x73, 0xcd, 0x71, 0x5a, - 0xcc, 0xb8, 0xdd, 0x40, 0x1c, 0x1f, 0x8c, 0xae, 0xbc, 0xab, - 0x39, 0x7d, 0xeb, 0xe5, 0xef, 0x88, 0x97, 0xd9, 0x32, 0x57, - 0xd0, 0xbf, 0x10, 0xaf, 0x76, 0x5b, 0x30, 0x4, 0x67, 0x15, - 0xf2, 0xdf, 0x8f, 0xaf, 0xb, 0x3b, 0x8e, 0x39, 0x3d, 0xab, - 0xe6, 0x73, 0x5a, 0x9d, 0xf, 0x8f, 0xce, 0xea, 0x7d, 0x93, - 0xcd, 0x75, 0x39, 0x32, 0x58, 0xe6, 0xb8, 0xed, 0x49, 0xf2, - 0xed, 0x5d, 0x46, 0xa7, 0x27, 0x6, 0xb8, 0xfb, 0xf7, 0xcb, - 0x9a, 0xf1, 0xf0, 0xb1, 0x3c, 0xc, 0xc, 0x7a, 0x99, 0x93, - 0xb5, 0x7a, 0xbf, 0xec, 0x9b, 0xa3, 0x36, 0xaf, 0xf1, 0x96, - 0xc9, 0xf6, 0x16, 0x4b, 0x48, 0x64, 0x9f, 0x76, 0xde, 0x1, - 0x18, 0x3, 0x9e, 0xdd, 0x4d, 0x79, 0x25, 0xc3, 0x72, 0x6b, - 0xea, 0xcf, 0xd8, 0x33, 0xc3, 0xd, 0x7b, 0xa9, 0x6b, 0x7a, - 0x83, 0xc, 0x16, 0x92, 0x18, 0x22, 0x60, 0x33, 0x9f, 0xbd, - 0xbb, 0xfa, 0x57, 0xd2, 0xe1, 0xa3, 0x79, 0x23, 0xeb, 0xf0, - 0xb1, 0xbc, 0xd1, 0xfa, 0x49, 0xe0, 0xfb, 0x53, 0x69, 0xe1, - 0xeb, 0x8, 0xca, 0xed, 0x6f, 0x28, 0x12, 0x3d, 0xcf, 0x26, - 0xba, 0x58, 0x6b, 0x3e, 0xda, 0x31, 0x1a, 0xaa, 0x8e, 0x2, - 0x8c, 0xa, 0xd1, 0x80, 0x66, 0xbd, 0x93, 0xe8, 0xb, 0xf6, - 0xfd, 0x45, 0x69, 0x42, 0x2b, 0x3e, 0x1, 0xd2, 0xb4, 0x21, - 0x1c, 0xd0, 0x5, 0xf8, 0x32, 0x2a, 0xec, 0x43, 0xa5, 0x54, - 0x84, 0x55, 0xd8, 0x86, 00, 0xa0, 0xb, 0x91, 0xc, 0x62, - 0xad, 0x47, 0x55, 0xa2, 0x19, 0xab, 0x51, 0x8e, 0x5, 00, - 0x59, 0x88, 0xd4, 0xeb, 0x50, 0xc5, 0x53, 0xaf, 0x6a, 00, - 0x90, 0x75, 0xa7, 0xad, 0x30, 0x75, 0xa9, 0x7, 0x4a, 00, - 0x70, 0xe9, 0x4b, 0x45, 0x14, 00, 0xab, 0x4e, 0xa4, 0x1d, - 0x29, 0x68, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 0x3, 0x9e, 0x92, 0xbf, 0x33, 0x3f, 0x6e, 0x2b, 0x17, 0xb0, - 0xfd, 0xa1, 0x26, 0x76, 0xce, 0xc9, 0xec, 0xe1, 0x90, 0x12, - 0x38, 0xe7, 0x76, 0x47, 0xe1, 0x5f, 0xa6, 0xb2, 0x62, 0xbf, - 0x3e, 0x7f, 0xe0, 0xa1, 0x1a, 0xb, 0x43, 0xe3, 0xed, 0x27, - 0x59, 0x4, 0x5, 0x68, 0x4, 0xd, 0x8e, 0xa4, 0x80, 0x2b, - 0xc1, 0xce, 0xe9, 0xb9, 0xe1, 0x1b, 0x5d, 0x1a, 0x67, 0xcc, - 0xf1, 0x15, 0x27, 0x53, 0x2, 0xe4, 0xbe, 0xcb, 0x4c, 0xab, - 0xe0, 0x8d, 0x41, 0x61, 0xd1, 0x6d, 0xe, 0xe0, 0x6, 0xce, - 0xb9, 0xae, 0xc3, 0xfe, 0x12, 0x48, 0x20, 0x4f, 0xf5, 0xc9, - 0x9f, 0xf7, 0xab, 0xc6, 0xbc, 0x37, 0xad, 0x81, 0xa0, 0x5b, - 0xa0, 0x27, 0x85, 0xeb, 0x9f, 0x7a, 0xa5, 0xa9, 0x78, 0xbc, - 0xdb, 0xe5, 0x72, 0x49, 0x1d, 0xf3, 0xff, 00, 0xd7, 0xad, - 0x16, 0x36, 0x34, 0xe8, 0xc5, 0xf9, 0x1a, 0xc7, 0x31, 0x85, - 0x3c, 0x34, 0x1a, 0xec, 0x8f, 0x6b, 0x6f, 0x1d, 0xc7, 0x1f, - 0x1e, 0x7c, 0x60, 0x7f, 0xbd, 0xff, 00, 0xd7, 0xaa, 0xf2, - 0xfc, 0x43, 0x84, 0x7f, 0xcb, 0xd4, 0x7f, 0xf7, 0xdf, 0xff, - 00, 0x5e, 0xbe, 0x73, 0xd4, 0x7c, 0x70, 0x70, 0x70, 0xcd, - 0xff, 00, 0x7d, 0x7f, 0xf5, 0xeb, 0x9f, 0xba, 0xf1, 0xbc, - 0xc4, 0x9d, 0xac, 0xe7, 0xfe, 0x4, 0x7f, 0xc6, 0xbc, 0x3a, - 0xf9, 0xbd, 0xb6, 0x3e, 0x73, 0x13, 0x9f, 0x59, 0xd9, 0x1f, - 0x52, 0x37, 0xc4, 0x6b, 0x71, 0xff, 00, 0x2f, 0x71, 0x7f, - 0xdf, 0x7f, 0xfd, 0x7a, 0x89, 0xbe, 0x24, 0xdb, 0xff, 00, - 0xcf, 0xdc, 0x7f, 0xf7, 0xdf, 0xff, 00, 0x5e, 0xbe, 0x54, - 0x6f, 0x18, 0xdc, 0x1f, 0xe2, 0x71, 0xf5, 0x63, 0xfe, 0x34, - 0xd3, 0xe2, 0xbb, 0x82, 0x7e, 0xfb, 0xf, 0xf8, 0x11, 0xff, - 00, 0x1a, 0xf2, 0xe5, 0x9b, 0xce, 0xe7, 0x8d, 0x2c, 0xfa, - 0xa7, 0x43, 0xea, 0xb3, 0xf1, 0x2a, 0xdf, 0x1f, 0xf1, 0xf7, - 0x1f, 0xfd, 0xf7, 0xff, 00, 0xd7, 0xa7, 0xc7, 0xf1, 0x22, - 0xdc, 0xe3, 0xfd, 0x2e, 0x3f, 0xfb, 0xe8, 0x7f, 0x8d, 0x7c, - 0x9e, 0x7c, 0x55, 0x71, 0x9f, 0xbe, 0xdf, 0xf7, 0xd1, 0xff, - 00, 0x1a, 0x72, 0xf8, 0xbe, 0xe0, 0x7f, 0x13, 0x7f, 0xdf, - 0x47, 0xfc, 0x68, 0x59, 0xbc, 0xc1, 0x67, 0xd5, 0x3b, 0x1f, - 0x5b, 0x2f, 0xc4, 0x7b, 0x73, 0xff, 00, 0x2f, 0x71, 0xff, - 00, 0xdf, 0x7f, 0xfd, 0x7a, 0xb1, 0x1f, 0xc4, 0x78, 0x30, - 0x3f, 0xd2, 0xe2, 0xff, 00, 0xbf, 0x9f, 0xfd, 0x7a, 0xf9, - 0x19, 0x7c, 0x65, 0x70, 0x3f, 0x89, 0xbf, 0x33, 0xfe, 0x35, - 0x61, 0x7c, 0x6f, 0x32, 0xf7, 0x7f, 0xfb, 0xe8, 0xff, 00, - 0x8d, 0x68, 0xb3, 0x99, 0x1a, 0xac, 0xfe, 0x7d, 0x4f, 0xae, - 0x63, 0xf8, 0x8d, 0xf, 0xfc, 0xfd, 0xc5, 0xff, 00, 0x7f, - 0x3f, 0xfa, 0xf5, 0x61, 0x3e, 0x23, 0x43, 0xc7, 0xfa, 0x5c, - 0x5f, 0xf7, 0xdf, 0xff, 00, 0x5e, 0xbe, 0x44, 0x4f, 0x1e, - 0x4c, 0x3b, 0xbf, 0xfd, 0xf5, 0xff, 00, 0xd7, 0xa9, 0x93, - 0xc7, 0xf2, 0xff, 00, 0x79, 0xff, 00, 0xef, 0xa3, 0xfe, - 0x35, 0xb2, 0xce, 0xa4, 0x6c, 0xb8, 0x86, 0x48, 0xfa, 0xf1, - 0x7e, 0x23, 0x43, 0x9f, 0xf8, 0xfb, 0x8b, 0xfe, 0xfb, 0xff, - 00, 0xeb, 0xd5, 0x84, 0xf8, 0x8b, 0x17, 0xfc, 0xfd, 0x45, - 0xff, 00, 0x7d, 0xff, 00, 0xf5, 0xeb, 0xe4, 0x34, 0xf8, - 0x81, 0x20, 0x3f, 0x79, 0xff, 00, 0xef, 0xa3, 0xfe, 0x35, - 0x62, 0x3f, 0x88, 0x8f, 0xfd, 0xf6, 0xff, 00, 0xbe, 0xbf, - 0xfa, 0xf5, 0xa2, 0xce, 0x9f, 0x73, 0x65, 0xc4, 0x4c, 0xfa, - 0xf1, 0x3e, 0x22, 0x42, 0x7f, 0xe5, 0xe6, 0x33, 0xff, 00, - 0x2, 0xff, 00, 0xeb, 0xd5, 0x84, 0xf8, 0x85, 0xf, 0xfc, - 0xfc, 0x27, 0xfd, 0xf5, 0xff, 00, 0xd7, 0xaf, 0x90, 0xd3, - 0xe2, 0x33, 0x9f, 0xe3, 0x71, 0xff, 00, 0x2, 0xff, 00, - 0xeb, 0xd5, 0x98, 0xfe, 0x23, 0x38, 0xff, 00, 0x96, 0x8f, - 0xff, 00, 0x7d, 0x7f, 0xf5, 0xeb, 0x58, 0xe7, 0x7e, 0x66, - 0xf1, 0xe2, 0x23, 0xeb, 0xa4, 0xf1, 0xfc, 0x1f, 0xf3, 0xf1, - 0x1f, 0xfd, 0xf5, 0xff, 00, 0xd7, 0xa9, 0xe3, 0xf1, 0xfd, - 0xbf, 0xfc, 0xf7, 0x8f, 0xfe, 0xfa, 0xff, 00, 0xeb, 0xd7, - 0xc8, 0xc9, 0xf1, 0x21, 0x87, 0xfc, 0xb4, 0x6f, 0xfb, 0xeb, - 0xff, 00, 0xaf, 0x56, 0x63, 0xf8, 0x92, 0xc7, 0xf8, 0xdb, - 0xfe, 0xfa, 0xff, 00, 0xeb, 0xd6, 0xeb, 0x3b, 0x46, 0xf1, - 0xe2, 0x24, 0x7d, 0x6c, 0xbe, 0x3b, 0xb5, 0x3f, 0xf2, 0xde, - 0x3f, 0xfb, 0xe8, 0x7f, 0x8d, 0x4a, 0x9e, 0x39, 0xb5, 0x3f, - 0xf2, 0xde, 0x3f, 0xfb, 0xe8, 0x7f, 0x8d, 0x7c, 0x9a, 0x9f, - 0x12, 0x1b, 0xfb, 0xed, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xea, - 0xca, 0x7c, 0x49, 0x3c, 0x65, 0xd8, 0x7f, 0xc0, 0xbf, 0xfa, - 0xf5, 0xa2, 0xce, 0x93, 0x36, 0x5c, 0x40, 0x99, 0xf5, 0x7a, - 0x78, 0xd6, 0xd0, 0x8f, 0xf5, 0xe9, 0xf8, 0x11, 0xfe, 0x35, - 0x30, 0xf1, 0x8d, 0xa1, 0xff, 00, 0x97, 0x84, 0xfc, 0xc7, - 0xf8, 0xd7, 0xca, 0x71, 0xfc, 0x4a, 0x27, 0xa3, 0x37, 0xfd, - 0xf5, 0xff, 00, 0xd7, 0xab, 0x31, 0xfc, 0x48, 0x3d, 0xd9, - 0xbf, 0xef, 0xaf, 0xfe, 0xbd, 0x6a, 0xb3, 0x88, 0xb3, 0x75, - 0x9f, 0xc0, 0xfa, 0xa5, 0x3c, 0x61, 0x66, 0xc3, 0xfe, 0x3e, - 0x13, 0xfe, 0xfa, 0x1f, 0xe3, 0x52, 0xaf, 0x8b, 0x2d, 0x1b, - 0xfe, 0x5e, 0x63, 0xff, 00, 0xbe, 0x87, 0xf8, 0xd7, 0xcb, - 0x51, 0xfc, 0x46, 0xc8, 0xfb, 0xcf, 0xff, 00, 0x7d, 0x7f, - 0xf5, 0xea, 0xcc, 0x7f, 0x11, 0xf1, 0x8e, 0x58, 0xff, 00, - 0xc0, 0xbf, 0xfa, 0xf5, 0xaa, 0xcd, 0xe0, 0xcd, 0x96, 0x7b, - 0x4c, 0xfa, 0x80, 0x78, 0xa6, 0xd4, 0xff, 00, 0xcb, 0xcc, - 0x7f, 0xf7, 0xd0, 0xa9, 0x57, 0xc4, 0xf6, 0xa4, 0xf, 0xf4, - 0x98, 0xff, 00, 0xef, 0xb1, 0x5f, 0x31, 0x47, 0xf1, 0x14, - 0x67, 0xef, 0x37, 0xe7, 0xff, 00, 0xd7, 0xab, 0x9, 0xf1, - 0x10, 0x1f, 0xe2, 0x6f, 0xfb, 0xeb, 0xff, 00, 0xaf, 0x5a, - 0x2c, 0xd6, 0xc, 0xd5, 0x67, 0x74, 0xd9, 0xf4, 0xc8, 0xf1, - 0x25, 0xb7, 0xfc, 0xfd, 0x47, 0xff, 00, 0x7d, 0x8f, 0xf1, - 0xa9, 0x7, 0x88, 0xed, 0xcf, 0xfc, 0xbc, 0x45, 0xff, 00, - 0x7d, 0xf, 0xf1, 0xaf, 0x9b, 0x23, 0xf8, 0x86, 0x8, 0xfb, - 0xcd, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xea, 0xc4, 0x7f, 0x10, - 0x47, 0xf7, 0x9b, 0xfe, 0xfa, 0xff, 00, 0xeb, 0xd6, 0x8b, - 0x33, 0x81, 0xaa, 0xce, 0x29, 0xb3, 0xe8, 0xf1, 0xe2, 0x18, - 0x3b, 0x5c, 0x47, 0xff, 00, 0x7d, 0xf, 0xf1, 0xa7, 0x8d, - 0x7e, 0x1f, 0xf9, 0xef, 0x1f, 0xfd, 0xf4, 0x3f, 0xc6, 0xbe, - 0x75, 0x8f, 0xe2, 0x6, 0x7f, 0x89, 0xbf, 0xef, 0xaf, 0xfe, - 0xbd, 0x58, 0x4f, 0x88, 0x1f, 0xed, 0xb7, 0xfd, 0xf5, 0xff, - 00, 0xd7, 0xab, 0x59, 0x95, 0x36, 0x6a, 0xb3, 0x6a, 0x4c, - 0xfa, 0x17, 0xfb, 0x76, 0x23, 0xff, 00, 0x2d, 0x93, 0xfe, - 0xfa, 0xa9, 0x6, 0xb9, 0x19, 0xe9, 0x22, 0xff, 00, 0xdf, - 0x55, 0xf3, 0xf2, 0x78, 0xf8, 0x90, 0x3e, 0x76, 0xff, 00, - 0xbe, 0xbf, 0xfa, 0xf5, 0x61, 0x3c, 0x7c, 0x7f, 0xbe, 0xdf, - 0xf7, 0xd7, 0xff, 00, 0x5e, 0xad, 0x66, 0x14, 0xd9, 0x6b, - 0x33, 0xa4, 0xcf, 0x7d, 0x1a, 0xd4, 0x64, 0xff, 00, 0xac, - 0x5f, 0xfb, 0xea, 0x9e, 0x35, 0x94, 0x3f, 0xf2, 0xd1, 0x4f, - 0xe3, 0x5e, 0x10, 0x9e, 0x3d, 0x38, 0xfb, 0xed, 0xff, 00, - 0x7d, 0x7f, 0xf5, 0xea, 0xc2, 0x78, 0xf4, 0x9f, 0xe2, 0x6f, - 0xfb, 0xeb, 0xff, 00, 0xaf, 0x5a, 0x2c, 0x6d, 0x36, 0x6a, - 0xb3, 0xa, 0x4c, 0xf7, 0x21, 0xac, 0x27, 0xf7, 0xd7, 0xf3, - 0xa7, 0xd, 0x5d, 0x73, 0xf7, 0xd7, 0xf3, 0xaf, 0x13, 0x4f, - 0x1e, 0xb6, 0x7e, 0xf1, 0xfc, 0xff, 00, 0xfa, 0xf5, 0x3a, - 0xf8, 0xf1, 0x8f, 0xf1, 0x37, 0xe7, 0xff, 00, 0xd7, 0xab, - 0x58, 0xba, 0x6f, 0xa9, 0xa2, 0xc7, 0x52, 0x7d, 0x4f, 0x68, - 0x1a, 0xc2, 0xff, 00, 0x79, 0x7f, 0x3a, 0x72, 0xea, 0xc9, - 0xfd, 0xf5, 0xfc, 0xeb, 0xc7, 0x13, 0xc7, 0x7c, 0x8e, 0x5b, - 0xf3, 0xff, 00, 0xeb, 0xd5, 0x88, 0xfc, 0x75, 0x8f, 0x5f, - 0xcf, 0xff, 00, 0xaf, 0x56, 0xb1, 0x34, 0xdf, 0x52, 0xfe, - 0xb9, 0x49, 0xf5, 0x3d, 0x79, 0x75, 0x65, 0xfe, 0xfa, 0xfe, - 0x74, 0xe1, 0xab, 0x2e, 0x7e, 0xfa, 0xfe, 0x75, 0xe4, 0xcb, - 0xe3, 0x91, 0xef, 0xf9, 0xff, 00, 0xf5, 0xea, 0x65, 0xf1, - 0xba, 0xf7, 0xce, 0x3e, 0xbf, 0xfd, 0x7a, 0xaf, 0x6f, 0x4f, - 0xb9, 0x6b, 0x13, 0x49, 0xf5, 0x3d, 0x58, 0x6a, 0xa9, 0xfd, - 0xf5, 0xfc, 0xe9, 0xc3, 0x56, 0x4f, 0xef, 0xaf, 0xe7, 0x5e, - 0x5a, 0x9e, 0x36, 0x8c, 0xf6, 0x3f, 0x9f, 0xff, 00, 0x5e, - 0xa6, 0x4f, 0x19, 0x46, 0x7b, 0x1f, 0xce, 0xab, 0xdb, 0x41, - 0xf5, 0x2f, 0xdb, 0xd3, 0xee, 0x7a, 0x78, 0xd5, 0x53, 0xfb, - 0xeb, 0xf9, 0xd3, 0x86, 0xa8, 0xb8, 0xfb, 0xeb, 0xf9, 0xd7, - 0x99, 0xaf, 0x8b, 0xe2, 0x27, 0xf8, 0xbf, 0x3a, 0x99, 0x7c, - 0x59, 0x17, 0xab, 0x7e, 0x62, 0xab, 0xda, 0x43, 0xb8, 0xd5, - 0x58, 0x3e, 0xa7, 0xa4, 0xd, 0x55, 0x7f, 0xbe, 0xbf, 0x9d, - 0x3c, 0x6a, 0xab, 0xfd, 0xf5, 0xfc, 0xeb, 0xce, 0x57, 0xc5, - 0x31, 0x1e, 0x85, 0xbf, 0x31, 0x53, 0x27, 0x89, 0xa3, 0x3c, - 0x64, 0x8f, 0xc6, 0x9f, 0x3c, 0x7b, 0x95, 0xed, 0x23, 0xdc, - 0xf4, 0x21, 0xaa, 0xa0, 0xfe, 0x35, 0xfc, 0xe9, 0xc3, 0x55, - 0x5f, 0xef, 0xaf, 0xe7, 0x5e, 0x7e, 0x9e, 0x21, 0x8d, 0xba, - 0x31, 0xfc, 0xea, 0x45, 0xd7, 0x93, 0xfb, 0xe7, 0xf3, 0xa7, - 0xcc, 0xbb, 0x95, 0xcd, 0x1e, 0xe7, 0x7e, 0x35, 0x55, 0xfe, - 0xf2, 0xfe, 0x74, 0xf1, 0xaa, 0x2f, 0xf7, 0x87, 0xe7, 0x5c, - 0x12, 0x6b, 0x88, 0x7a, 0x37, 0xeb, 0x52, 0xae, 0xb2, 0xb8, - 0xfb, 0xc7, 0xf3, 0xaa, 0xba, 0x1d, 0xd1, 0xdd, 0x7f, 0x6a, - 0xf, 0xef, 0xf, 0xce, 0x9c, 0x35, 0x45, 0xfe, 0xf0, 0xfc, - 0xeb, 0x86, 0x1a, 0xc0, 0x3f, 0xc4, 0x7f, 0x3a, 0x7a, 0xea, - 0xf9, 0x1d, 0x4f, 0xe7, 0x40, 0xce, 0xe0, 0x6a, 0x8b, 0x8f, - 0xbc, 0x3f, 0x3a, 0x70, 0xd5, 0x17, 0xfb, 0xc3, 0xf3, 0xae, - 0x24, 0x6a, 0xbc, 0x75, 0x3f, 0x9d, 0x38, 0x6a, 0xa4, 0xe, - 0xa7, 0xf3, 0xa0, 0xe, 0xdd, 0x75, 0x41, 0xfd, 0xe1, 0xf9, - 0xd3, 0x86, 0xa8, 0x3f, 0xbc, 0x3f, 0x3a, 0xe2, 0x6, 0xac, - 0x71, 0xd4, 0xd4, 0x83, 0x55, 0xc7, 0x52, 0x7f, 0x3a, 00, - 0xed, 0x46, 0xa8, 0xbf, 0xde, 0x1f, 0x9d, 0x3f, 0xfb, 0x50, - 0x7f, 0x78, 0x7e, 0x75, 0xc4, 0x8d, 0x54, 0x9e, 0xe7, 0xf3, - 0xa7, 0x8d, 0x57, 0x8e, 0xf4, 0x1, 0xda, 0x8d, 0x50, 0x63, - 0xef, 0xf, 0xce, 0x9c, 0x35, 0x41, 0xfd, 0xe1, 0xf9, 0xd7, - 0x14, 0x35, 0x43, 0x8e, 0xf4, 0xe5, 0xd5, 0x7e, 0xbf, 0x9d, - 00, 0x76, 0xa3, 0x54, 0x5f, 0xef, 0xf, 0xce, 0x9e, 0x35, - 0x41, 0xfd, 0xe5, 0xfc, 0xeb, 0x8a, 0x1a, 0xaf, 0xd7, 0xf3, - 0xa7, 0x8d, 0x4f, 0x9e, 0xa6, 0x80, 0x3b, 0x41, 0xaa, 0x2f, - 0xf7, 0x87, 0xe7, 0x4e, 0x1a, 0xa0, 0xfe, 0xf0, 0xfc, 0xeb, - 0x8c, 0x1a, 0xa7, 0xb9, 0xa7, 0xd, 0x53, 0x9e, 0xa7, 0xf3, - 0xa0, 0xe, 0xcc, 0x6a, 0x83, 0xfb, 0xc3, 0xf3, 0xa7, 0x8d, - 0x50, 0x7f, 0x78, 0x7e, 0x75, 0xc5, 0x8d, 0x4b, 0xdc, 0xd3, - 0x86, 0xa5, 0xd3, 0x93, 0x40, 0x1d, 0xa0, 0xd5, 0x7, 0xf7, - 0x87, 0xe7, 0x4f, 0x1a, 0xa2, 0xff, 00, 0x79, 0x7f, 0x3a, - 0xe2, 0xc6, 0xa5, 0xcf, 0x53, 0x4f, 0x1a, 0x97, 0xb9, 0xa0, - 0xe, 0xc8, 0x6a, 0x8a, 0x3f, 0x8c, 0x7e, 0x74, 0xf1, 0xaa, - 0x2f, 0xf7, 0x87, 0xe7, 0x5c, 0x5f, 0xf6, 0x97, 0xb9, 0xa7, - 0x8d, 0x48, 0x9e, 0xe6, 0x80, 0x3b, 0x31, 0xaa, 0x3, 0xfc, - 0x43, 0xf3, 0xa7, 0xd, 0x51, 0x7f, 0xbc, 0xbf, 0x9d, 0x71, - 0x83, 0x52, 0xe3, 0xa9, 0xa7, 0xd, 0x47, 0xdc, 0xd0, 0x7, - 0x66, 0x35, 0x35, 0xcf, 0xde, 0x5f, 0xce, 0x9c, 0x35, 0x35, - 0xcf, 0xde, 0x5f, 0xce, 0xb8, 0xd1, 0xa9, 0x7b, 0x9f, 0xce, - 0x9c, 0x35, 0x2f, 0x73, 0x40, 0x1d, 0x97, 0xf6, 0x92, 0xff, - 00, 0x7c, 0x7e, 0x74, 0xe1, 0xa9, 0x2f, 0xf7, 0x97, 0xf3, - 0xae, 0x34, 0x6a, 0x5e, 0xe7, 0xf3, 0xa7, 0x8d, 0x4b, 0xde, - 0x80, 0x3b, 0x11, 0xa9, 0x2f, 0xf7, 0x97, 0xf3, 0xa7, 0xd, - 0x41, 0x3f, 0xbc, 0x3f, 0x3a, 0xe3, 0x46, 0xa5, 0xc7, 0x53, - 0xf9, 0xd3, 0xd7, 0x53, 0xf7, 0xa0, 0xe, 0xc7, 0xfb, 0x45, - 0x7f, 0xbe, 0xbf, 0x9d, 0x2a, 0xea, 0x9, 0xfd, 0xe1, 0xf9, - 0xd7, 0x1e, 0x35, 0x2f, 0x7f, 0xd6, 0x9c, 0x35, 0x2f, 0x73, - 0xf9, 0xd0, 0x7, 0x60, 0x35, 0x5, 0xfe, 0xf0, 0x1f, 0x8d, - 0x38, 0x6a, 0xa, 0x3f, 0x88, 0x7e, 0x75, 0xc7, 0x8d, 0x4b, - 0x3d, 0xcd, 0x3c, 0x6a, 0x5e, 0xe7, 0xf3, 0xa0, 0xe, 0xbf, - 0xed, 0xeb, 0xfd, 0xf1, 0xf9, 0xd3, 0xbe, 0xde, 0xf, 0xf1, - 0xf, 0xce, 0xb9, 0xf, 0xed, 0x2f, 0x73, 0xf9, 0xd3, 0x86, - 0xa5, 0xee, 0x7f, 0x3a, 00, 0xeb, 0x85, 0xfa, 0xff, 00, - 0x78, 0x7e, 0x74, 0xe1, 0x7e, 0x3f, 0xbc, 0x3f, 0x3a, 0xe4, - 0x86, 0xa5, 0xee, 0x7f, 0x3a, 0x70, 0xd4, 0x7d, 0xce, 0x3e, - 0xb4, 0x1, 0xd6, 0x7d, 0xbc, 0x7f, 0x78, 0x7e, 0x74, 0xe1, - 0x7c, 0xbf, 0xde, 0x1f, 0x9d, 0x72, 0x5f, 0xda, 0x5e, 0xe6, - 0x9e, 0x35, 0x1c, 0xf7, 0x3f, 0x9d, 00, 0x75, 0x82, 0xf5, - 0x7f, 0xbc, 0x29, 0x45, 0xea, 0x8e, 0xe2, 0xb9, 0x41, 0xa9, - 0x7b, 0x9f, 0xce, 0x9e, 0x35, 0x2f, 0x7a, 00, 0xea, 0x85, - 0xea, 0x9e, 0xe2, 0x97, 0xed, 0x8b, 0xea, 0x2b, 0x96, 0x1a, - 0x8f, 0x3d, 0x4f, 0xe7, 0x4e, 0x1a, 0x91, 0xf5, 0x3f, 0x9d, - 00, 0x75, 0x2, 0xed, 0x7d, 0x47, 0xe7, 0x4a, 0x2e, 0x90, - 0xf7, 0x1f, 0x9d, 0x73, 0x3, 0x52, 0xf7, 0x34, 0xf1, 0xa8, - 0xfb, 0x9a, 00, 0xe9, 0x7e, 0xd2, 0x9e, 0xa3, 0xf3, 0xa5, - 0x17, 0x9, 0xfd, 0xe1, 0xf9, 0xd7, 0x36, 0x35, 0x1f, 0xad, - 0x3b, 0xfb, 0x47, 0xeb, 0xf9, 0xd0, 0x7, 0x47, 0xe7, 0xa7, - 0xf7, 0xa8, 0xf3, 0x93, 0xfb, 0xc2, 0xb9, 0xe1, 0xa8, 0x7d, - 0x7f, 0x3a, 0x51, 0xa8, 0x7d, 0x7f, 0x3a, 00, 0xe8, 0x44, - 0xc8, 0x7f, 0x88, 0x7e, 0x74, 0x86, 0x74, 0x1f, 0xc4, 0x3f, - 0x3a, 0xc2, 0xfe, 0xd0, 0xe3, 0xa9, 0xa8, 0x5f, 0x50, 0xeb, - 0xc9, 0xfc, 0xe8, 0x3, 0x72, 0x5b, 0xd5, 0x3, 0xa8, 0xac, - 0xeb, 0x8b, 0xe5, 0x19, 0xcb, 0xa, 0xc9, 0x9b, 0x51, 0xe3, - 0x82, 0x6b, 0x32, 0xeb, 0x51, 0x3c, 0xf2, 0x68, 0x3, 0x4e, - 0xeb, 0x50, 0x1c, 0xfc, 0xc2, 0xb1, 0x6e, 0xf5, 0x1, 0xcf, - 0xcc, 0x2a, 0x85, 0xd6, 0xa1, 0xd7, 0x9a, 0xc7, 0xbb, 0xd4, - 0x31, 0x9e, 0x4d, 00, 0x5a, 0xbe, 0xbf, 0x5c, 0x1f, 0x98, - 0x7e, 0x75, 0xcd, 0x6a, 0x97, 0xcb, 0xfd, 0xe1, 0x51, 0x5f, - 0x6a, 0x39, 0xee, 0x6b, 0x9c, 0xd4, 0x75, 0xc, 0x77, 0x34, - 00, 0xdd, 0x46, 0xfc, 0x60, 0xfc, 0xc2, 0xb9, 0xd, 0x52, - 0xf5, 0x4e, 0xec, 0xb0, 0xfc, 0xea, 0xc6, 0xa7, 0xa8, 0xf5, - 0xe4, 0xd7, 0x23, 0xaa, 0xea, 0x4, 0x2b, 0x73, 0x40, 0x1e, - 0x7d, 0xf1, 0x2f, 0x50, 0x4f, 0xde, 00, 0xe3, 0xa7, 0xad, - 0x7c, 0xc5, 0xe3, 0x2b, 0xa1, 0x2d, 0xc3, 0x61, 0xb3, 0x5e, - 0xd5, 0xf1, 0x1b, 0x54, 0x2c, 0xf2, 0xf2, 0x7b, 0xd7, 0xcf, - 0x5e, 0x21, 0xbb, 0xf3, 0x2e, 0x5f, 0xae, 0x2b, 0xe2, 0x73, - 0x29, 0x39, 0x54, 0xb1, 0xf9, 0xd6, 0x6f, 0x37, 0x3a, 0x96, - 0x39, 0x8d, 0x4a, 0x4c, 0x67, 0xa5, 0x72, 0x57, 0x8d, 0x97, - 0x6f, 0xad, 0x74, 0x5a, 0x9c, 0x83, 0xd, 0x5c, 0xbd, 0xcb, - 0x64, 0xb7, 0xd6, 0x8c, 0x2c, 0x74, 0x1e, 0xe, 0x36, 0x45, - 0x9, 0xdb, 0x93, 0x5f, 0xa2, 0x3f, 0xb0, 0x37, 0x84, 0x65, - 0xb0, 0xf0, 0x6e, 0x9f, 0x71, 0x2c, 0x2e, 0xbf, 0x68, 0x99, - 0xee, 0xc3, 0x38, 0xfe, 0x1c, 00, 0x3b, 0x74, 0xeb, 0x5f, - 0x9e, 0x11, 0xc0, 0xf7, 0xb7, 0x90, 0x5b, 0xc7, 0xcc, 0x92, - 0xc8, 0xb1, 0xaf, 0xd4, 0x9c, 0xa, 0xfd, 0x82, 0xfd, 0x9b, - 0x7c, 0x31, 0x1e, 0x81, 0xe1, 0x2b, 0x68, 0x13, 0x5, 0x6d, - 0xe0, 0x8e, 0x24, 0xe3, 0x18, 0xe3, 0x27, 0xf9, 0xd7, 0xd2, - 0xe1, 0x57, 0x53, 0xeb, 0xb0, 0x51, 0xdd, 0x9e, 0xd5, 0xa, - 0xfb, 0x55, 0xf8, 0x6, 0x2a, 0x9c, 0x23, 0x8a, 0xbf, 0xa, - 0xe0, 0xd7, 0xa2, 0x7a, 0xc5, 0xeb, 0x7e, 0xd5, 0xa3, 00, - 0xe9, 0x54, 0x6d, 0xd7, 0xa5, 0x68, 0x42, 0xbd, 0x28, 0x2, - 0xf4, 0x42, 0xae, 0xc5, 0xda, 0xa9, 0xc2, 0x39, 0xab, 0xd0, - 0x8e, 0x28, 0x2, 0xd4, 0x42, 0xac, 0xc7, 0xd0, 0x54, 0x11, - 0x8e, 0x95, 0x66, 0x31, 0x40, 0x16, 0x23, 0xe2, 0xa7, 0x5e, - 0xd5, 0x4, 0x62, 0xa5, 0x5a, 00, 0x99, 0x69, 0xe3, 0xb5, - 0x44, 0x5, 0x48, 0xbd, 0x68, 0x2, 0x4a, 0x29, 0x7, 0x4a, - 0x5a, 00, 0x70, 0xe9, 0x4b, 0x4d, 0x5e, 0xf4, 0xea, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0xc1, 0x7a, - 0xf9, 0x4b, 0xf6, 0xe9, 0xf0, 0x7c, 0x9a, 0xdf, 0x84, 0x20, - 0xbd, 0x89, 0x3, 0x32, 0x29, 0x51, 0x90, 0x32, 0x1b, 0x72, - 0x9e, 0xe7, 0xfb, 0xa1, 0xab, 0xea, 0xf7, 0xe6, 0xbc, 0xfb, - 0xe3, 0x4f, 0x85, 0xff, 00, 0xe1, 0x2b, 0xf0, 0xe, 0xa1, - 0x6c, 0xab, 0x99, 0x63, 0x2, 0x44, 0xfc, 0x8, 0xcf, 0xfe, - 0x3b, 0x9a, 0xc6, 0xb5, 0x35, 0x56, 0x9c, 0xa0, 0xfa, 0xa3, - 0x9f, 0x11, 0x49, 0x57, 0xa5, 0x2a, 0x6f, 0xaa, 0x3f, 0x2c, - 0xf4, 0x4d, 0x65, 0xa0, 0xd3, 0x17, 0x93, 0x80, 0x8, 0x3c, - 0xf4, 0xe6, 0xb9, 0xbd, 0x73, 0x59, 0x6b, 0x99, 0x98, 0x29, - 0x20, 0xfa, 0x83, 0x5d, 0x1f, 0x8b, 0xf4, 0x47, 0xf0, 0xce, - 0xb1, 0xa8, 0x58, 0xed, 0x6f, 0x2b, 0x7e, 0xf8, 0xd9, 0x86, - 0x32, 0x8, 0x7, 0xf4, 0xce, 0x3f, 0xa, 0xe2, 0x5a, 0x2, - 0xb2, 0x73, 0xfa, 0xd7, 0xe5, 0x15, 0xeb, 0xce, 0x1f, 0xb9, - 0x96, 0xeb, 0x43, 0xf1, 0x2c, 0x4e, 0x2a, 0xa5, 0x3f, 0xf6, - 0x69, 0xef, 0x1d, 0xa, 0x12, 0x5c, 0x3e, 0x7e, 0x66, 0x39, - 0xfa, 0xd3, 0x7c, 0xdc, 0x9e, 0xb5, 0x62, 0xe6, 0xdb, 0x3d, - 0xaa, 0x93, 0x42, 0xd1, 0xf3, 0x5c, 0xc9, 0xa9, 0x6e, 0x71, - 0x45, 0xc6, 0x5a, 0x93, 0x96, 0xc8, 0xeb, 0x4d, 0x2c, 0x47, - 0x7a, 0x8b, 0x79, 0xe8, 0x69, 0xc0, 0xe4, 0x51, 0x61, 0xd8, - 0x46, 0x99, 0x80, 0xa6, 0x89, 0x98, 0x52, 0x3f, 0x7a, 0x65, - 0x55, 0x8d, 0x12, 0x56, 0x25, 0xfb, 0x41, 0xa5, 0xfb, 0x53, - 0x7f, 0x93, 0x50, 0xd1, 0x45, 0x90, 0x72, 0xa2, 0x7f, 0xb4, - 0x9a, 0x70, 0xba, 0x35, 0x5a, 0x8a, 0x39, 0x50, 0x72, 0x22, - 0xcf, 0xda, 0x8e, 0x69, 0xc2, 0xee, 0xaa, 0x52, 0xe6, 0x8e, - 0x54, 0x27, 0x4e, 0x25, 0xb1, 0x77, 0xf5, 0xfc, 0xe9, 0xdf, - 0x6c, 0xf7, 0x3f, 0x9d, 0x51, 0xa2, 0x97, 0x22, 0x17, 0xb3, - 0x45, 0xff, 00, 0xb6, 0x1f, 0x53, 0xf9, 0xd3, 0xc5, 0xf3, - 0x2f, 0xf1, 0x1f, 0xce, 0xb3, 0x68, 0xcd, 0x2e, 0x44, 0x2f, - 0x66, 0x8d, 0x41, 0xa8, 0x3f, 0xf7, 0x9b, 0xf3, 0xa7, 0x8d, - 0x45, 0xc7, 0xf1, 0xb7, 0xe7, 0x59, 0x19, 0xa5, 0xc9, 0xa3, - 0x95, 0x7, 0xb3, 0xf3, 0x36, 0x57, 0x56, 0x95, 0x7a, 0x3b, - 0x7e, 0x75, 0x20, 0xd6, 0x66, 0x3, 0xfd, 0x61, 0xfc, 0xeb, - 0xb, 0x71, 0xf5, 0xa5, 0xde, 0xde, 0xb4, 0x72, 0x8b, 0xd9, - 0xbe, 0xe6, 0xfa, 0xeb, 0x93, 0xc, 0xf, 0x31, 0xbf, 0x3a, - 0x99, 0x7c, 0x41, 0x30, 0xea, 0xc7, 0xfe, 0xfa, 0xae, 0x6b, - 0x7b, 0x52, 0xf9, 0x8d, 0x47, 0x2b, 0xee, 0x3e, 0x49, 0x77, - 0x3a, 0x81, 0xe2, 0x49, 0xc1, 0xfb, 0xcd, 0xf9, 0xd4, 0x8b, - 0xe2, 0xa9, 0xc0, 0xfb, 0xcd, 0xff, 00, 0x7d, 0x57, 0x26, - 0x25, 0x61, 0xde, 0x97, 0xce, 0x34, 0xfd, 0xee, 0xe1, 0x69, - 0xf7, 0x3b, 0x24, 0xf1, 0x74, 0xaa, 0x3a, 0xbf, 0xfd, 0xf5, - 0x53, 0x27, 0x8d, 0x25, 0x5e, 0xed, 0xff, 00, 0x7d, 0x57, - 0xf, 0xe7, 0xb5, 0x38, 0x5c, 0x1a, 0x77, 0x9a, 0xea, 0x3b, - 0xd4, 0x5d, 0x4e, 0xed, 0x7c, 0x6d, 0x2f, 0xab, 0x8f, 0xf8, - 0x15, 0x58, 0x8f, 0xc7, 0x4e, 0xa3, 0xab, 0xfe, 0x75, 0xe7, - 0xbf, 0x69, 0x3e, 0xb4, 0xbf, 0x6a, 0x6a, 0x7c, 0xf5, 0x57, - 0x52, 0x95, 0x4a, 0xab, 0xa9, 0xe9, 0x11, 0xf8, 0xfd, 0xc7, - 0xf1, 0x3f, 0xe7, 0xff, 00, 0xd6, 0xab, 0x9, 0xf1, 0x1, - 0xbd, 0x5c, 0xf, 0xa9, 0xff, 00, 0xa, 0xf3, 0x1, 0x74, - 0xd9, 0xe6, 0x9c, 0x2e, 0xc8, 0x1c, 0xd5, 0x7b, 0x5a, 0xab, - 0xa8, 0xfd, 0xb5, 0x75, 0xd4, 0xf5, 0x54, 0xf8, 0x82, 0x47, - 0xf1, 0x3f, 0xe7, 0xff, 00, 0xd6, 0xab, 0x31, 0xfc, 0x43, - 0x3f, 0xde, 0x7c, 0xfd, 0x7f, 0xfa, 0xd5, 0xe4, 0x3f, 0x6c, - 0xfc, 0x69, 0xe2, 0xef, 0xd0, 0xe2, 0xab, 0xdb, 0xd6, 0x5d, - 0x4b, 0x58, 0x9a, 0xeb, 0xa9, 0xec, 0x89, 0xf1, 0x1b, 0x3f, - 0xc4, 0xdf, 0x9f, 0xff, 00, 0x5a, 0xac, 0x47, 0xf1, 0x13, - 0x9f, 0xbe, 0xff, 00, 0x9f, 0xff, 00, 0x5a, 0xbc, 0x57, - 0xed, 0x67, 0xd7, 0xf5, 0xa5, 0xfb, 0x71, 0xf5, 0xfd, 0x6a, - 0x96, 0x26, 0xb1, 0x4b, 0x1b, 0x5d, 0x75, 0x3d, 0xc9, 0x3e, - 0x22, 0xff, 00, 0xb4, 0xdf, 0x9f, 0xff, 00, 0x5a, 0xac, - 0xc7, 0xf1, 0x1f, 0xfd, 0xa6, 0xfc, 0xff, 00, 0xfa, 0xd5, - 0xe0, 0xc2, 0xf9, 0xbb, 0x37, 0xeb, 0x52, 0x2e, 0xa2, 0xe3, - 0xa3, 0x1a, 0xa5, 0x8c, 0xaa, 0x8b, 0x58, 0xfa, 0xe8, 0xf7, - 0xe8, 0xfe, 0x23, 0x67, 0xf8, 0x9b, 0xf3, 0xff, 00, 0xeb, - 0x55, 0xa8, 0xfe, 0x22, 0x83, 0xfc, 0x4d, 0xf9, 0xff, 00, - 0xf5, 0xab, 0xe7, 0xa1, 0xaa, 0x48, 0x31, 0x87, 0xa7, 0x2e, - 0xaf, 0x28, 0x3f, 0x7c, 0xd5, 0xac, 0x75, 0x54, 0x6a, 0xb3, - 0x3a, 0xc8, 0xfa, 0x2d, 0x3e, 0x23, 0x2f, 0xab, 0x7e, 0x7f, - 0xfd, 0x6a, 0xb1, 0x1f, 0xc4, 0x55, 0x38, 0xe5, 0xbf, 0x3f, - 0xfe, 0xb5, 0x7c, 0xe2, 0xba, 0xdc, 0xcb, 0xfc, 0x62, 0xa4, - 0x5d, 0x7e, 0x75, 0xe8, 0xc2, 0xb4, 0x59, 0x8d, 0x43, 0x45, - 0x9b, 0x55, 0x47, 0xd2, 0x69, 0xf1, 0x9, 0x4f, 0x42, 0xdf, - 0x9f, 0xff, 00, 0x5a, 0xac, 0xa7, 0xc4, 0x34, 0x3f, 0xc4, - 0xdf, 0x9d, 0x7c, 0xce, 0xbe, 0x24, 0xb8, 0x1f, 0xc4, 0x2a, - 0x55, 0xf1, 0x44, 0xeb, 0xe9, 0xf9, 0xd5, 0xac, 0xce, 0x68, - 0xd5, 0x67, 0x15, 0x11, 0xf4, 0xda, 0x7c, 0x41, 0x4f, 0xef, - 0x37, 0xe7, 0xff, 00, 0xd6, 0xab, 0x31, 0xf8, 0xfd, 0xe, - 0x3e, 0x76, 0xfc, 0xff, 00, 0xfa, 0xd5, 0xf3, 0xa, 0xf8, - 0xb6, 0x71, 0xe9, 0x52, 0xa7, 0x8c, 0xee, 0x7, 0xff, 00, - 0xae, 0xb5, 0x59, 0xa4, 0x91, 0xb2, 0xce, 0xa6, 0x8f, 0xa8, - 0x53, 0xc7, 0xe9, 0xfd, 0xf3, 0xf9, 0xff, 00, 0xf5, 0xaa, - 0xc4, 0x7e, 0x3f, 0x4f, 0xef, 0xb7, 0xe7, 0xff, 00, 0xd6, - 0xaf, 0x97, 0x53, 0xc6, 0xb3, 0xe, 0xa6, 0xa6, 0x5f, 0x1d, - 0x4a, 0x3b, 0xfe, 0xbf, 0xfd, 0x6a, 0xd1, 0x66, 0xcc, 0xd5, - 0x67, 0x92, 0x3e, 0xa4, 0x4f, 0x1f, 0x2f, 0x1f, 0x3b, 0x3, - 0xf5, 0x3f, 0xe1, 0x56, 0x93, 0xc7, 0x83, 0xfb, 0xec, 0x3f, - 0x13, 0x5f, 0x2c, 0x47, 0xe3, 0xd9, 0x3d, 0x47, 0xe7, 0xff, - 00, 0xd6, 0xab, 0x11, 0xf8, 0xfd, 0xc6, 0x3e, 0x65, 0xff, - 00, 0xbe, 0xbf, 0xfa, 0xd5, 0xb2, 0xcd, 0xdf, 0x73, 0x78, - 0xe7, 0xaf, 0xb9, 0xf5, 0x34, 0x7e, 0x3d, 0x18, 0xfb, 0xe7, - 0xf3, 0x35, 0x61, 0x3c, 0x78, 0xf, 0xf1, 0x9f, 0xcf, 0xff, - 00, 0xad, 0x5f, 0x2c, 0xc7, 0xf1, 0xd, 0x81, 0xfb, 0xcb, - 0xff, 00, 0x7d, 0x7f, 0xf5, 0xaa, 0xc2, 0x7c, 0x46, 0x7f, - 0x55, 0xff, 00, 0xbe, 0xbf, 0xfa, 0xd5, 0xaa, 0xce, 0x3c, - 0xcd, 0xd6, 0x7d, 0xe6, 0x7d, 0x4a, 0x9e, 0x3c, 0xe3, 0xef, - 0xb7, 0xe6, 0x6a, 0x75, 0xf1, 0xd0, 0xfe, 0xf3, 0x7e, 0x7f, - 0xfd, 0x6a, 0xf9, 0x6d, 0x3e, 0x22, 0x37, 0xf7, 0xd7, 0xfe, - 0xfa, 0xff, 00, 0xeb, 0x55, 0x98, 0xfe, 0x22, 0xb7, 0xf7, - 0x97, 0xfe, 0xfa, 0xff, 00, 0xeb, 0x56, 0xab, 0x37, 0xf3, - 0x37, 0x59, 0xf2, 0x7d, 0x4f, 0xa8, 0xe3, 0xf1, 0xc8, 0x3, - 0xef, 0x1f, 0xcf, 0xff, 00, 0xad, 0x56, 0x17, 0xc7, 0x60, - 0xf7, 0x3f, 0xe7, 0xf0, 0xaf, 0x97, 0x63, 0xf8, 0x8e, 0x47, - 0xf1, 0x29, 0x3f, 0xef, 0x7f, 0xf5, 0xaa, 0xd4, 0x7f, 0x11, - 0x8e, 0x7e, 0xf2, 0xff, 00, 0xdf, 0x5f, 0xfd, 0x6a, 0xda, - 0x39, 0xba, 0xee, 0x6f, 0x1c, 0xf9, 0x77, 0x3e, 0x9f, 0x4f, - 0x1c, 0x29, 0xc7, 0x27, 0xf3, 0xff, 00, 0xeb, 0x54, 0xc9, - 0xe3, 0x74, 0xf7, 0xfc, 0xff, 00, 0xfa, 0xd5, 0xf3, 0x1c, - 0x7f, 0x11, 0x4f, 0xf7, 0x93, 0xf1, 0x6f, 0xfe, 0xb5, 0x58, - 0x4f, 0x88, 0xff, 00, 0xed, 0x21, 0xff, 00, 0x81, 0x7f, - 0xf5, 0xab, 0x65, 0x9b, 0xae, 0xe6, 0xf1, 0xcf, 0x63, 0xdc, - 0xfa, 0x6d, 0x7c, 0x6b, 0x1f, 0x52, 0xf, 0xe7, 0xff, 00, - 0xd6, 0xa9, 0x57, 0xc6, 0x51, 0x1f, 0x5f, 0xcf, 0xff, 00, - 0xad, 0x5f, 0x33, 0xc7, 0xf1, 0x1b, 0x3f, 0xc4, 0x9f, 0xf7, - 0xd7, 0xff, 00, 0x5a, 0xac, 0xa7, 0xc4, 0x5c, 0xff, 00, - 0x12, 0x67, 0xfd, 0xef, 0xfe, 0xb5, 0x68, 0xb3, 0x68, 0xf7, - 0x36, 0x59, 0xe4, 0x7b, 0x9f, 0x4b, 0x27, 0x8c, 0x21, 0xe3, - 0x39, 0xfc, 0xff, 00, 0xfa, 0xd5, 0x2a, 0x78, 0xb2, 0x3, - 0xeb, 0xf9, 0xff, 00, 0xf5, 0xab, 0xe6, 0xe8, 0xfe, 0x22, - 0x8c, 0xc, 0xb2, 0xff, 00, 0xdf, 0x5f, 0xfd, 0x6a, 0x9d, - 0x3e, 0x22, 0x3, 0xdd, 0x7f, 0xef, 0xaf, 0xfe, 0xb5, 0x6c, - 0xb3, 0x58, 0xbe, 0xa6, 0xf1, 0xce, 0xa0, 0xfa, 0x9f, 0x48, - 0x2f, 0x8a, 0x21, 0xcf, 0x53, 0xfe, 0x7f, 0xa, 0x91, 0x3c, - 0x4b, 0x9, 0xfe, 0x23, 0xfe, 0x7f, 0xa, 0xf9, 0xd2, 0x3f, - 0x88, 0x20, 0x91, 0xf3, 0x2f, 0xd3, 0x77, 0xff, 00, 0x5a, - 0xac, 0xa7, 0xc4, 0x5, 0xfe, 0xfa, 0xf, 0xf8, 0x17, 0xff, - 00, 0x5a, 0xb4, 0x59, 0x9c, 0x4d, 0x96, 0x71, 0x4c, 0xfa, - 0x20, 0x78, 0x8a, 0xf, 0xef, 0x1a, 0x7a, 0xeb, 0xf1, 0x13, - 0xf7, 0x8f, 0xf9, 0xfc, 0x2b, 0xe7, 0xc4, 0xf8, 0x82, 0x9, - 0xfb, 0xeb, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xaa, 0xc4, 0x7e, - 0x3e, 0x1c, 0x7c, 0xe9, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xab, - 0x45, 0x99, 0x41, 0x9b, 0x2c, 0xda, 0x9b, 0x3e, 0x81, 0x5d, - 0x6e, 0x32, 0x7e, 0xf7, 0xeb, 0x52, 0x2e, 0xb2, 0x9f, 0xde, - 0xfd, 0x6b, 0xc0, 0xe3, 0xf1, 0xea, 0x8f, 0xe3, 0x4f, 0xfb, - 0xe8, 0x7f, 0x85, 0x58, 0x4f, 0x1e, 0x82, 0x71, 0xbd, 0x3f, - 0xef, 0xaf, 0xfe, 0xb5, 0x6a, 0xb3, 0xa, 0x66, 0x8b, 0x34, - 0xa6, 0xcf, 0x77, 0x5d, 0x61, 0x4f, 0x46, 0xfd, 0x6a, 0x41, - 0xab, 0xf, 0x5f, 0xd6, 0xbc, 0x32, 0x3f, 0x1e, 0x67, 0xfe, - 0x5a, 0x20, 0xff, 00, 0x81, 0x7f, 0xf5, 0xaa, 0xc2, 0x78, - 0xef, 0x27, 0xef, 0x28, 0xff, 00, 0x81, 0xf, 0xf0, 0xab, - 0x58, 0xea, 0x66, 0xab, 0x32, 0xa4, 0xcf, 0x6e, 0x5d, 0x59, - 0x7a, 0xe4, 0xfe, 0x74, 0xf5, 0xd5, 0xb3, 0xdc, 0xd7, 0x8a, - 0x27, 0x8e, 0xce, 0x7e, 0xfa, 0xff, 00, 0xdf, 0x5f, 0xfd, - 0x6a, 0xb3, 0x17, 0x8e, 0x8e, 0x3e, 0xf2, 0x7e, 0x7f, 0xfd, - 0x6a, 0xb5, 0x8c, 0xa6, 0x68, 0xb1, 0xf4, 0x99, 0xec, 0xab, - 0xaa, 0xfb, 0x9a, 0x7a, 0xea, 0x9e, 0xe6, 0xbc, 0x7e, 0x3f, - 0x1d, 0x9f, 0x54, 0xfc, 0xff, 00, 0xfa, 0xd5, 0x3a, 0xf8, - 0xe8, 0x9e, 0x72, 0x9f, 0x9f, 0xff, 00, 0x5a, 0xaf, 0xeb, - 0x54, 0xfb, 0x9a, 0x2c, 0x6d, 0x17, 0xd4, 0xf5, 0xb5, 0xd5, - 0x7d, 0xcf, 0xe7, 0x4f, 0x5d, 0x53, 0x9e, 0xbf, 0xad, 0x79, - 0x3a, 0x78, 0xe7, 0xdd, 0x3f, 0x3f, 0xfe, 0xb5, 0x58, 0x5f, - 0x1c, 0xfb, 0xa7, 0xfd, 0xf5, 0xff, 00, 0xd6, 0xab, 0x58, - 0x8a, 0x6f, 0xa9, 0x6b, 0x15, 0x4b, 0xb9, 0xea, 0x4b, 0xaa, - 0x7b, 0xfe, 0xb4, 0xf5, 0xd5, 0x6, 0x3a, 0xfe, 0xb5, 0xe6, - 0x9, 0xe3, 0x75, 0x3c, 0xfc, 0x9f, 0xf7, 0xd7, 0xff, 00, - 0x5a, 0xa7, 0x4f, 0x1a, 0x27, 0xfb, 0x3f, 0xf7, 0xd5, 0x57, - 0xb6, 0x87, 0x72, 0x96, 0x22, 0x9b, 0xea, 0x7a, 0x50, 0xd5, - 0x3f, 0xce, 0x69, 0xe3, 0x54, 0xff, 00, 0x39, 0xaf, 0x38, - 0x1e, 0x30, 0x8c, 0xff, 00, 0x77, 0xfe, 0xfa, 0xa9, 0x57, - 0xc5, 0xd1, 0x9e, 0x85, 0x7f, 0xef, 0xaa, 0xaf, 0x6b, 0xe, - 0xe5, 0xfb, 0x6a, 0x7d, 0xcf, 0x44, 0x5d, 0x4c, 0x77, 0x3f, - 0xad, 0x38, 0x6a, 0x59, 0xee, 0x7f, 0x3a, 0xf3, 0xf5, 0xf1, - 0x5c, 0x47, 0xab, 0x28, 0xff, 00, 0x81, 0x54, 0xab, 0xe2, - 0x88, 0x4f, 0xf1, 0xaf, 0xfd, 0xf5, 0x4d, 0x54, 0x8f, 0x72, - 0xbd, 0xa4, 0x3b, 0x9d, 0xf0, 0xd4, 0xbd, 0xff, 00, 0x5a, - 0x78, 0xd4, 0xbd, 0xcf, 0xe7, 0x5c, 0x1a, 0xf8, 0x92, 0x23, - 0xfc, 0x6b, 0xff, 00, 0x7d, 0x54, 0xab, 0xe2, 0x8, 0xcf, - 0xf1, 0xaf, 0xe7, 0x55, 0xcd, 0x1e, 0xe3, 0x53, 0x8b, 0xea, - 0x77, 0x23, 0x52, 0xf7, 0x3f, 0x9d, 0x38, 0x6a, 0x5c, 0x75, - 0xfd, 0x6b, 0x88, 0x5d, 0x76, 0x3e, 0xd2, 0x2f, 0xe7, 0x52, - 0xd, 0x71, 0x3f, 0xe7, 0xa0, 0xa7, 0x74, 0x57, 0x32, 0xee, - 0x76, 0xc3, 0x52, 0xf7, 0xfd, 0x69, 0x46, 0xa5, 0xef, 0xfa, - 0xd7, 0x18, 0xba, 0xca, 0x9c, 0x61, 0xd7, 0xf3, 0xa9, 0x6, - 0xae, 0x3f, 0xbc, 0x3f, 0x3a, 0x63, 0xba, 0x3b, 0x25, 0xd4, - 0x7d, 0xff, 00, 0x5a, 0x70, 0xd4, 0x7d, 0xcf, 0xe7, 0x5c, - 0x72, 0xea, 0xc3, 0xb3, 0x3, 0xf8, 0xd4, 0x8b, 0xaa, 0xfb, - 0xfe, 0xb4, 0x1, 0xd8, 0xd, 0x47, 0xdc, 0xfe, 0x74, 0xef, - 0xed, 0x1f, 0x7f, 0xd6, 0xb8, 0xf1, 0xaa, 0xf3, 0xf7, 0xbf, - 0x5a, 0x78, 0xd5, 0x79, 0xed, 0xf9, 0xd0, 0x7, 0x5e, 0x35, - 0x2f, 0x7f, 0xd6, 0x9e, 0x35, 0x1f, 0x73, 0xf9, 0xd7, 0x20, - 0x35, 0x5f, 0x71, 0xf9, 0xd3, 0xff, 00, 0xb5, 0x72, 0x7a, - 0xd0, 0x7, 0x5c, 0x35, 0x2f, 0x7f, 0xd6, 0x9c, 0x35, 0x2f, - 0x73, 0xf9, 0xd7, 0x22, 0x35, 0x4f, 0x71, 0xf9, 0xd3, 0xc6, - 0xa9, 0xee, 0x28, 0x3, 0xae, 0x1a, 0x97, 0xb9, 0xfc, 0xe9, - 0x46, 0xa5, 0xef, 0xfa, 0xd7, 0x26, 0x35, 0x41, 0xeb, 0xfa, - 0xd3, 0x86, 0xa9, 0xee, 0x3f, 0x3a, 00, 0xeb, 0x7f, 0xb4, - 0xb8, 0xeb, 0xfa, 0xd4, 0x32, 0x6a, 0x3e, 0xe7, 0xf3, 0xae, - 0x6b, 0xfb, 0x4f, 0x3d, 0xea, 0x39, 0x75, 0x31, 0xeb, 0x40, - 0x1b, 0xb3, 0xea, 0x5c, 0x75, 0x3f, 0x9d, 0x67, 0x5c, 0x6a, - 0x1d, 0x79, 0x3f, 0x9d, 0x62, 0xdc, 0x6a, 0x83, 0xb7, 0xf3, - 0xac, 0xcb, 0x9d, 0x53, 0xdc, 0x7e, 0x74, 0x1, 0xad, 0x75, - 0xa9, 0x63, 0x23, 0x35, 0x8d, 0x79, 0xaa, 0x67, 0x3c, 0xfe, - 0xb5, 0x97, 0x77, 0xa9, 0xf5, 0xe6, 0xb1, 0x6e, 0xf5, 0x3e, - 0xbc, 0x8a, 00, 0xd0, 0xbe, 0xd4, 0xbf, 0xce, 0x6b, 0x9c, - 0xd4, 0xf5, 0x3e, 0x3a, 0xfe, 0xb5, 0x5a, 0xfb, 0x53, 0xeb, - 0xcf, 0xeb, 0x5c, 0xce, 0xa5, 0xaa, 0x7b, 0xfe, 0xb4, 0x1, - 0x2e, 0xa5, 0xa9, 0x75, 0xe7, 0xf5, 0xae, 0x43, 0x5b, 0xd5, - 0x36, 0xc4, 0xfc, 0xfe, 0xb4, 0xfd, 0x43, 0x52, 0xce, 0x6b, - 0x90, 0xf1, 0x5, 0xf9, 0xfb, 0x2c, 0x86, 0x93, 0xd8, 0x99, - 0x6c, 0xcf, 0x31, 0xf1, 0xf6, 0xab, 0xb9, 0xa5, 0xeb, 0xdf, - 0xbd, 0x78, 0x96, 0xa9, 0x75, 0xbe, 0x67, 0x39, 0xaf, 0x40, - 0xf1, 0xc6, 0xa4, 0x4b, 0xcb, 0xcf, 0xad, 0x79, 0x65, 0xdc, - 0xbb, 0xd9, 0x8e, 0x7b, 0xd7, 0xc4, 0xe2, 0xe3, 0x7a, 0xa7, - 0xe7, 0x98, 0xd8, 0xf3, 0x55, 0x33, 0x75, 0x9, 0x38, 0x35, - 0xcf, 0x5c, 0x37, 0x5a, 0xda, 0xbc, 0x24, 0x9e, 0x4d, 0x62, - 0xdc, 0xaf, 0x5f, 0xad, 0x74, 0xd0, 0x56, 0xd0, 0xeb, 0xc3, - 0x2b, 0x2b, 0x1d, 0x17, 0xc1, 0xef, 0xf, 0xb7, 0x8a, 0x3e, - 0x28, 0x78, 0x76, 0xcc, 0x36, 0x2, 0xde, 0x45, 0x33, 0x8c, - 0x75, 0x54, 0x70, 0xc4, 0x75, 0x1d, 0x85, 0x7e, 0xc7, 0x7c, - 0x31, 0xb0, 0x4b, 0x1f, 0xc, 0x43, 0xb0, 0x60, 0x48, 0xdb, - 0xbf, 0x90, 0xfe, 0x95, 0xf9, 0x71, 0xfb, 0x1b, 0x68, 0x6b, - 0xa9, 0xfc, 0x55, 0x96, 0xec, 0xa1, 0x76, 0xb2, 0xb5, 0x67, - 0x5c, 0xc, 0xf2, 0xc7, 0x6f, 0xf5, 0xaf, 0xd6, 0x5f, 0xf, - 0x5b, 0x7d, 0x97, 0x4a, 0xb4, 0x8b, 0xa6, 0xd8, 0xd7, 0x8f, - 0xc2, 0xbe, 0x93, 0xe, 0xad, 0xb, 0x9f, 0x5b, 0x84, 0x8d, - 0xa1, 0x73, 0x66, 0x1e, 0xd5, 0xa1, 00, 0xef, 0x54, 0xa1, - 0x1c, 0xd5, 0xf8, 0x33, 0xeb, 0x5d, 0x47, 0x69, 0x7e, 0x3, - 0xd2, 0xb4, 0x60, 0x15, 0x9f, 00, 0xe4, 0x56, 0x94, 0x14, - 0x1, 0x72, 0x11, 0x57, 0x62, 0xe7, 0x2, 0xaa, 0xc4, 0x38, - 0xab, 0xb0, 0xe, 0x94, 0x1, 0x6a, 0x35, 0xe6, 0xac, 0xc6, - 0x2a, 0xbc, 0x62, 0xac, 0xc4, 0x3a, 0x50, 0x4, 0xe9, 0xc0, - 0xa9, 0x17, 0xa0, 0xa6, 0x20, 0xa9, 0x7, 0x5a, 00, 0x78, - 0xeb, 0x4f, 0x5a, 0x62, 0xd4, 0x83, 0xa5, 00, 0x3c, 0x74, - 0xa2, 0x8a, 0x28, 0x1, 0xcb, 0x4b, 0x48, 0x3a, 0x52, 0xd0, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x34, - 0x83, 0xda, 0xaa, 0xca, 0x81, 0x83, 0x2, 0x32, 0xf, 0x15, - 0x71, 0xf3, 0x55, 0xdd, 0x68, 0x3, 0xe0, 0x8f, 0xda, 0xc7, - 0xe0, 0xec, 0xba, 0x76, 0xbb, 0x71, 0x7f, 0x6d, 00, 0xf2, - 0x9c, 0x99, 0x61, 0x29, 0x93, 0xbc, 0x1c, 0x16, 0x5e, 0x7b, - 0x83, 0xbb, 0x8a, 0xf9, 0x56, 0x7d, 0x38, 0x83, 0xc8, 0xaf, - 0xd6, 0xef, 0x89, 0x7e, 0x3, 0x83, 0xc7, 0x9e, 0x1e, 0x9a, - 0xc9, 0x96, 0x31, 0x74, 0xa0, 0x9b, 0x79, 0x9c, 0x7d, 0xc6, - 0xfa, 0xe0, 0x9c, 0x1c, 0x73, 0x5f, 0x9d, 0xbf, 0x13, 0x7e, - 0x1a, 0x4f, 0xe1, 0x5d, 0x5a, 0xe1, 0x56, 0x10, 0x91, 0xab, - 0xed, 0x78, 0xc2, 0x9f, 0x90, 0xfe, 0x5d, 0x2b, 0xf3, 0xce, - 0x24, 0xcb, 0xa7, 0x17, 0xf5, 0xda, 0x2b, 0xfc, 0x5f, 0xe6, - 0x7e, 0x57, 0xc5, 0xd9, 0x4c, 0xa2, 0xff, 00, 0xb4, 0x28, - 0x2b, 0xaf, 0xb4, 0x97, 0xe7, 0xfe, 0x67, 0x8b, 0xcb, 0x60, - 0x79, 0x18, 0xe2, 0xa9, 0xcd, 0x61, 0xed, 0x5d, 0x94, 0xda, - 0x6e, 0x72, 0x40, 0xaa, 0x32, 0xe9, 0xd8, 0xed, 0x5f, 0x1, - 0x1c, 0x4d, 0xcf, 0xcb, 0xe9, 0xe2, 0xee, 0x72, 0x12, 0x69, - 0xfe, 0xd5, 0x3, 0x58, 0x91, 0xd0, 0x57, 0x64, 0xba, 0x2b, - 0xcb, 0xdb, 0xf0, 0xc5, 0x2b, 0x78, 0x61, 0x9b, 0xb6, 0x4f, - 0xb0, 0xff, 00, 0xeb, 0x57, 0x7c, 0x2a, 0xb9, 0x6c, 0x7a, - 0x54, 0xeb, 0xca, 0x47, 0xc, 0xf6, 0x4c, 0x3a, 0x3, 0x51, - 0x9b, 0x57, 0x15, 0xdd, 0x3f, 0x85, 0x5f, 0xfb, 0x87, 0xf2, - 0x3f, 0xe1, 0x51, 0x37, 0x85, 0x9f, 0xfb, 0x87, 0xf2, 0xff, - 00, 0xeb, 0x57, 0x4a, 0x9c, 0xbb, 0x1d, 0x8a, 0xa4, 0xfb, - 0x1c, 0x4f, 0xd9, 0xdf, 0xd2, 0x93, 0xc8, 0x7c, 0xe3, 0x15, - 0xd8, 0xb7, 0x86, 0x1c, 0x7f, 0x9, 0xfc, 0xbf, 0xfa, 0xd5, - 0x13, 0x78, 0x69, 0xc7, 0x6f, 0xd3, 0xff, 00, 0xad, 0x4f, - 0x9d, 0xf6, 0x2b, 0xda, 0x4b, 0xaa, 0x39, 0x23, 0xb, 0xe, - 0xd4, 0xd3, 0x13, 0xe, 0xd5, 0xd4, 0xb7, 0x87, 0xe4, 0x1d, - 0x87, 0xe4, 0x7f, 0xc2, 0xa3, 0x3a, 0xc, 0x9e, 0x9f, 0xa1, - 0xff, 00, 0xa, 0x7e, 0xd3, 0xc8, 0x7e, 0xd5, 0xf6, 0x39, - 0xad, 0x8d, 0xe9, 0x49, 0xb4, 0xfa, 0x57, 0x49, 0xfd, 0x89, - 0x27, 0xf7, 0x3f, 0x43, 0x51, 0xbe, 0x8b, 0x20, 0xfe, 0x1f, - 0xd0, 0xd3, 0xf6, 0x81, 0xed, 0x7c, 0x8e, 0x7f, 0x69, 0xf4, - 0xa4, 0xc5, 0x6e, 0x9d, 0x21, 0xff, 00, 0xbb, 0xfa, 0x1a, - 0x8c, 0xe9, 0x4e, 0x3f, 0x80, 0xfe, 0x46, 0x8e, 0x74, 0x57, - 0xb5, 0x5d, 0x8c, 0x6c, 0x51, 0x5a, 0xe7, 0x4c, 0x61, 0xfc, - 0x7, 0xf2, 0xa6, 0x9d, 0x38, 0xf7, 0x43, 0xf9, 0x53, 0xf6, - 0x88, 0x3d, 0xac, 0x4c, 0xaa, 0x2b, 0x48, 0xe9, 0xdf, 0xec, - 0xe2, 0x98, 0x6c, 0x3d, 0xa9, 0xf3, 0xc4, 0x7e, 0xd6, 0x25, - 0xa, 0x2a, 0xef, 0xd8, 0x69, 0xd, 0x89, 0xa3, 0x9d, 0x15, - 0xed, 0x22, 0x53, 0xc5, 0x15, 0x6b, 0xec, 0x64, 0x53, 0x4d, - 0xa3, 0x53, 0xe6, 0x41, 0xed, 0x23, 0xdc, 0xaf, 0x45, 0x4e, - 0x6d, 0x5b, 0xd6, 0x93, 0xec, 0xaf, 0x45, 0xd0, 0xf9, 0x97, - 0x72, 0x1a, 0x2a, 0x5f, 0xb3, 0xb5, 0x27, 0x90, 0xd4, 0xee, - 0x87, 0x74, 0x47, 0x45, 0x49, 0xe4, 0x36, 0x29, 0xc, 0x4c, - 0x3b, 0x51, 0x70, 0xba, 0x19, 0x45, 0x3b, 0x63, 0x7a, 0x51, - 0xb0, 0xfa, 0x50, 0x31, 0xb4, 0x52, 0xed, 0x34, 0x6d, 0x34, - 00, 0x94, 0x52, 0xe2, 0x92, 0x80, 0x17, 0x3e, 0xf4, 0x67, - 0xde, 0x92, 0x8c, 0x53, 0x18, 0xbb, 0x88, 0xa5, 0xdc, 0x7d, - 0x69, 0xb4, 0x52, 0xd, 0x7, 0x6e, 0x6f, 0x53, 0x46, 0xf6, - 0x1d, 0xe9, 0xb4, 0x53, 0xb0, 0xac, 0x87, 0xf9, 0xad, 0x47, - 0x9a, 0x69, 0x94, 0x52, 0xb0, 0xb9, 0x51, 0x20, 0x99, 0x85, - 0x2f, 0x9e, 0x6a, 0x2a, 0x28, 0xb2, 0xe, 0x54, 0x4d, 0xf6, - 0x83, 0x4a, 0x2e, 0x4d, 0x41, 0x45, 0x2b, 0x21, 0x72, 0x22, - 0xc7, 0xda, 0x69, 0xdf, 0x6c, 0x3e, 0xa6, 0xaa, 0xd1, 0x45, - 0x90, 0xb9, 0x11, 0x68, 0x5d, 0x7b, 0xe2, 0x94, 0x5d, 0xff, - 00, 0xb5, 0xfa, 0x55, 0x4a, 0x29, 0x72, 0xa1, 0x7b, 0x38, - 0x97, 0x45, 0xef, 0xbd, 0x38, 0x5e, 0xe3, 0xb9, 0xaa, 0x14, - 0x66, 0x8e, 0x44, 0x1e, 0xce, 0x26, 0x90, 0xbe, 0x3f, 0xde, - 0xa7, 0xd, 0x41, 0xbf, 0xbe, 0x6b, 0x2f, 0x34, 0x66, 0x97, - 0x22, 0x17, 0xb3, 0x46, 0xb8, 0xd4, 0x9c, 0x7f, 0x19, 0xa7, - 0xae, 0xab, 0x28, 0xe9, 0x23, 0x56, 0x36, 0xe3, 0xeb, 0x46, - 0xe3, 0xeb, 0x47, 0x22, 0xf, 0x66, 0xbb, 0x9b, 0xa3, 0x57, - 0x9c, 0x7f, 0xcb, 0x53, 0x4e, 0x1a, 0xdc, 0xe3, 0xfe, 0x5a, - 0xb5, 0x60, 0x6e, 0x34, 0xa2, 0x46, 0x1d, 0xe8, 0xe5, 0xf3, - 0x17, 0x23, 0xee, 0x74, 0x69, 0xe2, 0x9, 0xc6, 0x3f, 0x78, - 0x4d, 0x4a, 0x3c, 0x49, 0x72, 0x3f, 0xe5, 0xa1, 0xae, 0x63, - 0xcd, 0x6f, 0x5a, 0x4, 0xcc, 0x3d, 0xe8, 0xe5, 0x6b, 0x66, - 0x3e, 0x59, 0x2e, 0xa7, 0x56, 0xbe, 0x29, 0xb9, 0x5f, 0xf9, - 0x6a, 0xc3, 0xf2, 0xff, 00, 0xa, 0x9a, 0x3f, 0x16, 0x4e, - 0x3a, 0xc8, 0xdf, 0xa5, 0x71, 0xfe, 0x79, 0xa5, 0xfb, 0x43, - 0xa, 0x3d, 0xee, 0xe1, 0xfb, 0xce, 0xe7, 0x68, 0xbe, 0x32, - 0x9d, 0x4f, 0xdf, 0x7f, 0xd2, 0xa6, 0x4f, 0x1b, 0x4e, 0x3f, - 0x8d, 0xff, 00, 0x4a, 0xe1, 0xc5, 0xc3, 0xe, 0xe6, 0x97, - 0xed, 0x27, 0xde, 0x9f, 0x35, 0x45, 0xb3, 0x2a, 0xf5, 0x57, - 0x53, 0xbe, 0x4f, 0x1c, 0xca, 0x3a, 0xca, 0xff, 00, 0x90, - 0xab, 0x9, 0xe3, 0xe7, 0x5f, 0xf9, 0x6a, 0xe3, 0xf0, 0x15, - 0xe7, 0x22, 0xe8, 0x8e, 0xc6, 0x97, 0xed, 0x59, 0xf5, 0xab, - 0x55, 0x2a, 0xae, 0xa3, 0xf6, 0x95, 0x97, 0x53, 0xd2, 0xd3, - 0xe2, 0xb, 0xff, 00, 0xcf, 0x57, 0xfc, 0x85, 0x58, 0x8f, - 0xe2, 0x13, 0x77, 0x99, 0xbf, 0x21, 0x5e, 0x5b, 0xf6, 0xa3, - 0x4e, 0x17, 0x98, 0xef, 0x4f, 0xdb, 0x56, 0x5d, 0x4a, 0x55, - 0xeb, 0xae, 0xa7, 0xac, 0x27, 0xc4, 0x42, 0x3f, 0xe5, 0xb3, - 0x7e, 0x42, 0xad, 0x47, 0xf1, 0x18, 0xf6, 0x99, 0xbf, 0x21, - 0x5e, 0x3d, 0xf6, 0xc3, 0xeb, 0x4e, 0x5b, 0xd2, 0x3b, 0x9a, - 0xa5, 0x88, 0xaa, 0x8a, 0x58, 0xaa, 0xeb, 0xa9, 0xec, 0xf1, - 0xfc, 0x46, 0x3f, 0xf3, 0xdd, 0xbf, 0x21, 0x56, 0x63, 0xf8, - 0x8d, 0xff, 00, 0x4d, 0xdb, 0xf2, 0x15, 0xe2, 0x42, 0xfc, - 0xff, 00, 0x78, 0xfe, 0x74, 0xa3, 0x50, 0x7f, 0xef, 0xb7, - 0xe7, 0x55, 0xf5, 0xaa, 0xa8, 0xd1, 0x63, 0xab, 0xa3, 0xdd, - 0x63, 0xf8, 0x90, 0x7, 0xfc, 0xb7, 0x6f, 0xc8, 0x54, 0xe9, - 0xf1, 0x1f, 0x3f, 0xf2, 0xdd, 0xbf, 0x21, 0x5e, 0xe, 0x35, - 0x29, 0x7, 0xfc, 0xb4, 0x6f, 0xce, 0x9c, 0x35, 0x59, 0x7f, - 0xe7, 0xab, 0x7e, 0x75, 0x6b, 0x1b, 0x59, 0x1a, 0x2c, 0xc6, - 0xb9, 0xf4, 0x4, 0x7f, 0x11, 0xbf, 0xe9, 0xb3, 0x7e, 0x42, - 0xad, 0x27, 0xc4, 0x70, 0x3a, 0xce, 0xdf, 0x90, 0xaf, 0x9e, - 0x6, 0xb1, 0x30, 0xff, 00, 0x96, 0xcd, 0xf9, 0xd4, 0x8b, - 0xad, 0xce, 0xbf, 0xf2, 0xd5, 0xbf, 0x3a, 0xb5, 0x8f, 0xa8, - 0x8b, 0x59, 0xa5, 0x64, 0x7d, 0x14, 0x9f, 0x11, 0x81, 0xff, - 00, 0x96, 0xcd, 0xf9, 0xa, 0xb3, 0x1f, 0xc4, 0x54, 0x3d, - 0x67, 0x3f, 0xa5, 0x7c, 0xe0, 0x3c, 0x43, 0x72, 0x3f, 0xe5, - 0xa9, 0xfc, 0xea, 0x51, 0xe2, 0x5b, 0xa1, 0xff, 00, 0x2d, - 0x8f, 0xe7, 0x56, 0xb3, 0x2a, 0x88, 0xd5, 0x66, 0xf5, 0x51, - 0xf4, 0x9a, 0x7c, 0x45, 0x4e, 0xf3, 0x11, 0xf8, 0xa, 0xb0, - 0x9f, 0x11, 0x10, 0xff, 00, 0xcb, 0x76, 0xfd, 0x2b, 0xe6, - 0x85, 0xf1, 0x45, 0xd0, 0xff, 00, 0x96, 0xa7, 0xf3, 0xff, - 00, 0xeb, 0xd4, 0xcb, 0xe2, 0xcb, 0x90, 0x3f, 0xd6, 0x37, - 0xf9, 0xfc, 0x6b, 0x55, 0x9a, 0x4d, 0x1a, 0xac, 0xe6, 0xa1, - 0xf4, 0xcc, 0x7f, 0x10, 0x93, 0x3f, 0xeb, 0x9b, 0xf2, 0x15, - 0x69, 0x3e, 0x20, 0xa7, 0xfc, 0xf7, 0x23, 0xf0, 0x15, 0xf3, - 0xa, 0xf8, 0xca, 0xe5, 0x7f, 0xe5, 0xa3, 0x7f, 0x9f, 0xc6, - 0xa6, 0x4f, 0x1a, 0xdc, 0x7f, 0xcf, 0x47, 0xfc, 0xff, 00, - 0xfa, 0xf5, 0xa2, 0xcd, 0x64, 0x6a, 0xb3, 0xb9, 0x1f, 0x4f, - 0xa7, 0xc4, 0x4, 0x3f, 0xf2, 0xdc, 0xfe, 0x95, 0x62, 0x3f, - 0x88, 0xa, 0x7f, 0xe5, 0xb9, 0xfc, 0x85, 0x7c, 0xbc, 0xbe, - 0x39, 0x9c, 0x7f, 0xcb, 0x47, 0xff, 00, 0x3f, 0x8d, 0x4e, - 0x9e, 0x3e, 0x98, 0x7f, 0xcb, 0x47, 0x3f, 0xe7, 0xeb, 0x5a, - 0xac, 0xd9, 0x9b, 0x2c, 0xf2, 0x47, 0xd4, 0x69, 0xe3, 0xe5, - 0xff, 00, 0x9e, 0xe4, 0x7e, 0x55, 0x3a, 0xf8, 0xf4, 0x1f, - 0xf9, 0x78, 0x3f, 0xa5, 0x7c, 0xb8, 0x9f, 0x10, 0x25, 0xe3, - 0x32, 0xb7, 0xf9, 0xfc, 0x6a, 0xc2, 0x7c, 0x41, 0x90, 0x7f, - 0xcb, 0x56, 0xfc, 0xff, 00, 0xfa, 0xf5, 0xaa, 0xcd, 0xcd, - 0xe3, 0x9e, 0xbe, 0xe7, 0xd4, 0x71, 0xf8, 0xf5, 0x7b, 0x4e, - 0x7f, 0x4a, 0xb2, 0x9e, 0x3c, 0xe9, 0xfb, 0xf3, 0xf9, 0xa, - 0xf9, 0x72, 0x3f, 0x88, 0xce, 0x3f, 0xe5, 0xb1, 0xfc, 0xff, - 00, 0xfa, 0xf5, 0x66, 0x3f, 0x88, 0xd2, 0x7f, 0xcf, 0x66, - 0xff, 00, 0xbe, 0xbf, 0xfa, 0xf5, 0xaa, 0xcd, 0xfc, 0xcd, - 0xe3, 0x9e, 0xf9, 0x9f, 0x50, 0xaf, 0x8f, 0x79, 0xc7, 0x9e, - 0xdf, 0xa5, 0x4e, 0x9e, 0x3b, 0x1f, 0xf3, 0xd9, 0xbf, 0x4a, - 0xf9, 0x7e, 0x3f, 0x88, 0xcf, 0xff, 00, 0x3d, 0xdb, 0xfe, - 0xfa, 0xff, 00, 0xeb, 0xd5, 0x98, 0xfe, 0x24, 0x37, 0xfc, - 0xf6, 0x6f, 0xfb, 0xeb, 0xff, 00, 0xaf, 0x5b, 0x47, 0x37, - 0xf3, 0x37, 0x59, 0xf2, 0xee, 0x7d, 0x3e, 0x9e, 0x3c, 0xcf, - 0xfc, 0xb6, 0x3f, 0x90, 0xa9, 0x97, 0xc7, 0x43, 0xbc, 0xa7, - 0xf2, 0x15, 0xf3, 0x12, 0x7c, 0x48, 0x7f, 0xf9, 0xec, 0x7f, - 0x3f, 0xfe, 0xbd, 0x59, 0x8b, 0xe2, 0x3b, 0xf1, 0xfb, 0xe6, - 0xfc, 0xff, 00, 0xfa, 0xf5, 0xb2, 0xcd, 0xd7, 0x73, 0x78, - 0xe7, 0xab, 0xb9, 0xf4, 0xdc, 0x7e, 0x38, 0x4c, 0x7f, 0xad, - 0x3f, 0x90, 0xa9, 0xd3, 0xc7, 0x11, 0xe7, 0xef, 0x9f, 0xd2, - 0xbe, 0x66, 0x8f, 0xe2, 0x43, 0xf, 0xf9, 0x6c, 0x7f, 0xef, - 0xaf, 0xfe, 0xbd, 0x5a, 0x4f, 0x89, 0xc, 0x7f, 0xe5, 0xa9, - 0xfc, 0xff, 00, 0xfa, 0xf5, 0xaa, 0xcd, 0x97, 0x73, 0x78, - 0xe7, 0x8b, 0xb9, 0xf4, 0xaa, 0xf8, 0xda, 0x23, 0xff, 00, - 0x2d, 0xd, 0x4c, 0x9e, 0x32, 0x84, 0xf2, 0x5c, 0xd7, 0xcd, - 0x71, 0xfc, 0x46, 0x3f, 0xf3, 0xd4, 0xff, 00, 0xdf, 0x5f, - 0xfd, 0x7a, 0xb2, 0x9f, 0x11, 0x4f, 0x79, 0x8f, 0xe7, 0xff, - 00, 0xd7, 0xad, 0x56, 0x6d, 0x13, 0x75, 0x9d, 0xc7, 0xb9, - 0xf4, 0x8a, 0x78, 0xc6, 0xf, 0xef, 0x9a, 0x6b, 0xf8, 0xb2, - 0x6, 0xfe, 0x32, 0x3e, 0xb5, 0xf3, 0xc2, 0x7c, 0x46, 0xed, - 0xe6, 0x9f, 0xfb, 0xeb, 0xff, 00, 0xaf, 0x4f, 0x1f, 0x10, - 0x43, 0x1f, 0xf5, 0xa7, 0xf3, 0x1f, 0xe3, 0x5b, 0x47, 0x34, - 0x8b, 0x37, 0x8e, 0x73, 0x16, 0x7b, 0xe4, 0x9e, 0x25, 0x85, - 0xc7, 0x12, 0x73, 0x54, 0xe6, 0xd6, 0xd1, 0x81, 0xc4, 0x95, - 0xe2, 0x2b, 0xe3, 0xdd, 0xdd, 0x26, 0x3f, 0x98, 0xff, 00, - 0x1a, 0x7f, 0xfc, 0x26, 0xe5, 0xbf, 0xe5, 0xa9, 0xff, 00, - 0xbe, 0x87, 0xf8, 0xd7, 0x64, 0x31, 0xd0, 0x91, 0xdd, 0x4f, - 0x32, 0x84, 0xcf, 0x58, 0xba, 0xd5, 0x86, 0xf, 0xcf, 0x58, - 0x97, 0xba, 0xb7, 0x5f, 0x9a, 0xb8, 0x13, 0xe3, 0x56, 0x3f, - 0xf2, 0xd4, 0xff, 00, 0xdf, 0x43, 0xfc, 0x6a, 0x9, 0x7c, - 0x58, 0x1c, 0x1c, 0xbe, 0x7f, 0x1f, 0xfe, 0xbd, 0x76, 0x46, - 0xbc, 0x65, 0xb1, 0xe8, 0x43, 0x11, 0x9, 0xec, 0x74, 0xd7, - 0xda, 0xbf, 0xfb, 0x75, 0xce, 0xdf, 0xea, 0xbb, 0xb8, 0xce, - 0x6b, 0x26, 0xe3, 0x5f, 0x59, 0x8f, 0xc, 0x7f, 0x3a, 0xa1, - 0x25, 0xd9, 0x73, 0x9c, 0xe6, 0xb7, 0x4d, 0x3d, 0x8e, 0x94, - 0xd3, 0xd8, 0xb3, 0x73, 0x79, 0xd7, 0x26, 0xb9, 0x3f, 0x11, - 0x5e, 0x62, 0xde, 0x41, 0x9a, 0xd4, 0xbc, 0xb8, 0xe3, 0xa9, - 0xae, 0x57, 0xc4, 0x13, 0x19, 0x2d, 0xd8, 0x52, 0x9f, 0xc2, - 0xc9, 0x9f, 0xc2, 0xcf, 0x21, 0xf1, 0x7c, 0xbe, 0x64, 0xd2, - 0x73, 0xdc, 0xd7, 0x3, 0x36, 0x77, 0x1e, 0x7b, 0xd7, 0x79, - 0xe2, 0x94, 0xe5, 0x8f, 0xbd, 0x70, 0xd2, 0x8e, 0x4d, 0x7c, - 0x66, 0x25, 0xfe, 0xf0, 0xfc, 0xff, 00, 0x16, 0xff, 00, - 0x7a, 0x66, 0xdc, 0x2e, 0x73, 0x59, 0x17, 0x69, 0x80, 0x6b, - 0x6e, 0xe0, 0x75, 0xac, 0xd9, 0x2d, 0x9a, 0xea, 0x78, 0xa1, - 0x8f, 0x97, 0x91, 0x82, 0x28, 0x3e, 0xa4, 0xe0, 0x56, 0x94, - 0x5e, 0xa6, 0xd4, 0x1e, 0xb6, 0x3e, 0xbe, 0xfd, 0x82, 0x3c, - 0x18, 0xd2, 0x59, 0xdc, 0xea, 0x6c, 0x83, 0xcc, 0xba, 0xbd, - 0x8, 0xa4, 0xe7, 0x98, 0x97, 0x69, 0x6f, 0xd4, 0x1a, 0xfd, - 0x10, 0xb5, 0x4d, 0xaa, 0x7, 0x40, 0x2b, 0xe7, 0xf, 0xd9, - 0x2b, 0xc0, 0x3, 0xc2, 0x5e, 0xe, 0xd2, 0x20, 0x31, 0xa8, - 0x78, 0x6d, 0x12, 0x49, 0x4e, 0x3f, 0xe5, 0xb3, 0xaa, 0x96, - 0xed, 0xee, 0x6b, 0xe9, 0x38, 0x17, 0x8a, 0xfa, 0xda, 0x71, - 0xe5, 0x82, 0x47, 0xdb, 0xd2, 0x8f, 0x2c, 0x12, 0x2e, 0x42, - 0x38, 0xab, 0xf0, 0x2d, 0x52, 0x84, 0x70, 0x2b, 0x46, 0x5, - 0xe2, 0xb4, 0x36, 0x2e, 0x40, 0x39, 0x15, 0xa5, 0x6e, 0x2a, - 0x84, 0xb, 0xcd, 0x69, 0x5b, 0x8c, 0x62, 0x80, 0x2e, 0x46, - 0x2a, 0xe4, 0x23, 0x8a, 0xab, 0x18, 0xe6, 0xae, 0x44, 0x38, - 0x14, 0x1, 0x66, 0x3e, 0xd5, 0x61, 0x3a, 0x54, 0x11, 0x8e, - 0x95, 0x61, 0x7, 0x14, 0x1, 0x32, 0x54, 0xab, 0x51, 0xa8, - 0xa9, 0x7, 0x4a, 00, 0x7a, 0xf4, 0xa9, 0x7, 0x6a, 0x60, - 0x1d, 0xa9, 0xeb, 0x40, 0xe, 0xa2, 0x8a, 0x28, 0x1, 0xc2, - 0x96, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 0x3, 0x31, 0x96, 0xa0, 0x91, 0x2a, 0xd3, 0xe, 0x6a, - 0x17, 0x5e, 0xb4, 0x1, 0x52, 0x45, 0xe6, 0xbc, 0xd3, 0xe2, - 0xa7, 0xc1, 0xdb, 0x1f, 0x88, 0x71, 0x46, 0xeb, 0x24, 0x56, - 0x37, 0x91, 0xe7, 0x73, 0x98, 0x3, 0xac, 0xab, 0x8f, 0xba, - 0xc3, 0x23, 0xb8, 0x1c, 0xf3, 0x8a, 0xf5, 0x6, 0x4a, 0xaf, - 0x22, 0x52, 0x69, 0x49, 0x59, 0x89, 0xa5, 0x25, 0x67, 0xb1, - 0xf9, 0xcb, 0xf1, 0x13, 0xe0, 0xb5, 0xef, 0x85, 0x35, 0x8b, - 0x8b, 0x52, 0x63, 0xf3, 0x14, 0x96, 0x11, 0x81, 0xc1, 0x5f, - 0x50, 0x7f, 0xe, 0xf8, 0xaf, 0x3d, 0x83, 0x41, 0xf3, 0x6e, - 0xbc, 0xb7, 0xc0, 0x23, 0xd4, 0x57, 0xe9, 0xf7, 0x89, 0x7c, - 0x29, 0xa6, 0x78, 0xa6, 0xc1, 0xed, 0x35, 0x2b, 0x55, 0x9e, - 0x36, 0x18, 0x7, 0x38, 0x65, 0x3e, 0xa0, 0x8e, 0x6b, 0xe6, - 0x7f, 0x8a, 0x1f, 00, 0xa7, 0xd0, 0x6e, 0x7e, 0xd9, 0xa7, - 0xc3, 0x2d, 0xee, 0x9e, 0xa0, 0x9f, 0x38, 0x6d, 0xdf, 0x1f, - 0xb3, 0x7a, 0xf4, 0xeb, 0x8c, 0x57, 0xe7, 0xd9, 0x9f, 0xb, - 0x46, 0xa3, 0xf6, 0xd8, 0x1d, 0x1f, 0x6e, 0x8f, 0xfc, 0x8f, - 0xca, 0xf3, 0x9e, 0xb, 0x85, 0x57, 0xf5, 0x8c, 0xb9, 0xf2, - 0xcb, 0xac, 0x7a, 0x3f, 0x4e, 0xdf, 0x91, 0xf3, 0xf5, 0x9f, - 0x83, 0x3, 0x81, 0xca, 0xff, 00, 0xdf, 0x35, 0xa9, 0xf, - 0x81, 0xf3, 0xdd, 0x49, 0xff, 00, 0x76, 0xbb, 0x8d, 0x2a, - 0xd6, 0x4, 0xa, 0xac, 0xc0, 0x30, 0x1c, 0x66, 0xba, 0xe8, - 0xb4, 0x55, 0x65, 0x52, 0x6, 0x46, 0x2b, 0xe7, 0xe9, 0xe1, - 0x2a, 0x50, 0xf7, 0x6b, 0x41, 0xc5, 0xf9, 0x9f, 0x2f, 0x4b, - 0x3, 0x57, 0xd, 0xee, 0xd7, 0x83, 0x8b, 0xf3, 0x3c, 0x71, - 0xfc, 0xa, 0x7f, 0xbc, 0x9f, 0xf7, 0xcd, 0x42, 0xfe, 0x7, - 0xc7, 0xf1, 0x27, 0xfd, 0xf3, 0x5e, 0xcd, 0x2e, 0x8c, 0x39, - 0xf9, 0x2a, 0xa4, 0x9a, 0x37, 0xfb, 0x6, 0xbb, 0x14, 0x20, - 0x77, 0xa8, 0x53, 0x3c, 0x75, 0xbc, 0x10, 0x7d, 0x53, 0xfe, - 0xf8, 0xa8, 0x9b, 0xc0, 0xf9, 0xfe, 0xe1, 0xff, 00, 0x80, - 0xa, 0xf6, 0x23, 0xa4, 0xf, 0xee, 0x1a, 0x63, 0x68, 0xe3, - 0xfb, 0x94, 0xf9, 0x20, 0x5f, 0xb3, 0x81, 0xe3, 0x4f, 0xe0, - 0x5c, 0xe7, 0x38, 0xfc, 0x14, 0x54, 0x2f, 0xe0, 0x51, 0xdf, - 0x1f, 0xf7, 0xc8, 0xaf, 0x67, 0x6d, 0x19, 0x4f, 0xf0, 0x53, - 0xe, 0x8a, 0xbf, 0xdc, 0x34, 0xbd, 0x9c, 0x9, 0xf6, 0x50, - 0x3c, 0x4d, 0xfc, 0xc, 0xbf, 0xec, 0xfe, 0x2b, 0x50, 0xbf, - 0x81, 0xd4, 0x9e, 0xa8, 0x3f, 0xe0, 0x35, 0xed, 0xc7, 0x44, - 0x5f, 0xee, 0x1a, 0x63, 0x68, 0x4a, 0x7f, 0x80, 0xd2, 0x74, - 0xa2, 0xc5, 0xec, 0x20, 0xcf, 0xe, 0x7f, 0x2, 0x83, 0xdd, - 0x3f, 0xef, 0x9a, 0x81, 0xfc, 0x8, 0x8, 0xea, 0xbf, 0xf7, - 0xc8, 0xaf, 0x75, 0x6d, 0x5, 0x71, 0xf7, 0xd, 0x44, 0x7c, - 0x3e, 0xb8, 0xfb, 0x87, 0xf4, 0xa5, 0xec, 0x62, 0x4f, 0xd5, - 0xe0, 0x78, 0x53, 0x78, 0xc, 0x7b, 0x7f, 0xdf, 0x22, 0xa1, - 0x6f, 0x1, 0x8f, 0x55, 0xfc, 0x50, 0x57, 0xbb, 0x37, 0x87, - 0x93, 0xfb, 0x95, 0x1b, 0x78, 0x71, 0xf, 0xf0, 0x52, 0xfa, - 0xbc, 0x49, 0xfa, 0xac, 0x4f, 0x6, 0x7f, 0x2, 0xf, 0xef, - 0x20, 0xff, 00, 0x80, 0x54, 0xd, 0xe0, 0x51, 0x9f, 0xbe, - 0xa3, 0xfe, 0x3, 0x5e, 0xf6, 0xde, 0x1a, 0x8c, 0x8c, 0x6c, - 0xa8, 0x8f, 0x86, 0x50, 0xff, 00, 0x7, 0xeb, 0x52, 0xf0, - 0xc8, 0x97, 0x84, 0x47, 0x81, 0xbf, 0x81, 0x1, 0xff, 00, - 0x96, 0x8a, 0x7f, 0xe0, 0x35, 0x13, 0xf8, 0xc, 0xff, 00, - 0x79, 0x7f, 0xef, 0x9a, 0xf7, 0xd7, 0xf0, 0xba, 0x7f, 0xcf, - 0x33, 0xf9, 0xd4, 0x2f, 0xe1, 0x65, 0xc1, 0xf9, 0xf, 0xe9, - 0x4b, 0xea, 0xc8, 0x5f, 0x54, 0x47, 0x81, 0x37, 0x81, 0x1b, - 0xb1, 0x5f, 0xfb, 0xe6, 0xa1, 0x6f, 0x2, 0xb8, 0xfe, 0x25, - 0x1f, 0xf0, 0x1a, 0xf7, 0xe6, 0xf0, 0xaa, 0x9f, 0xf9, 0x66, - 0x7f, 0x4a, 0x89, 0xbc, 0x24, 0xa4, 0xf0, 0x94, 0xbe, 0xac, - 0x4f, 0xd5, 0x17, 0x63, 0xc0, 0x5f, 0xc1, 0xe, 0x3a, 0xb2, - 0xfe, 0x55, 0x13, 0x78, 0x29, 0x87, 0x1b, 0xc7, 0xe5, 0x5e, - 0xfc, 0xde, 0x12, 0x5c, 0x1f, 0x93, 0xfc, 0xfe, 0x75, 0xb, - 0xf8, 0x45, 0x7f, 0xb8, 0x6a, 0x7e, 0xac, 0x4b, 0xc2, 0x1e, - 0x2, 0xde, 0xe, 0x90, 0x7f, 0x10, 0xfc, 0xaa, 0x26, 0xf0, - 0x7c, 0xbf, 0xde, 0x1f, 0x95, 0x7b, 0xe3, 0x78, 0x4c, 0x3, - 0xfe, 0xac, 0xfe, 0x75, 0x13, 0xf8, 0x48, 0x7f, 0xcf, 0x23, - 0xf9, 0x8a, 0x9f, 0xab, 0x13, 0xf5, 0x53, 0xc1, 0xf, 0x84, - 0xa5, 0x1f, 0xc4, 0x3f, 0x2a, 0x89, 0xbc, 0x2d, 0x22, 0xf5, - 0x65, 0xfc, 0xab, 0xde, 0x9b, 0xc2, 0x3f, 0xf4, 0xc8, 0xfe, - 0x95, 0x13, 0xf8, 0x3f, 0x3f, 0xf2, 0xcc, 0xd2, 0xf6, 0xc, - 0x9f, 0xab, 0x48, 0xf0, 0x66, 0xf0, 0xcb, 0xf6, 0x23, 0xf2, - 0xa6, 0x37, 0x87, 0x25, 0xc7, 0x5f, 0xd2, 0xbd, 0xd9, 0xbc, - 0x1c, 0xf, 0xfc, 0xb3, 0xa8, 0x24, 0xf0, 0x70, 0xff, 00, - 0x9e, 0x47, 0xfc, 0xfe, 0x34, 0xbd, 0x8c, 0x85, 0xf5, 0x79, - 0x9e, 0x16, 0x7c, 0x3b, 0x20, 0xf4, 0xfc, 0xa9, 0x87, 0x42, - 0x71, 0xe9, 0x5e, 0xe0, 0xfe, 0x10, 0x51, 0xff, 00, 0x2c, - 0xbf, 0x95, 0x40, 0xde, 0x11, 0x1f, 0xf3, 0xc8, 0xfe, 0x62, - 0x97, 0xb2, 0x90, 0xbd, 0x84, 0xcf, 0x12, 0x3a, 0x23, 0xf, - 0x4a, 0x61, 0xd1, 0x9f, 0xd0, 0x7e, 0x55, 0xed, 0x6f, 0xe0, - 0xf5, 0x3f, 0xf2, 0xc9, 0x87, 0xe2, 0x2a, 0x27, 0xf0, 0x6a, - 0xff, 00, 0xcf, 0x26, 0x3f, 0x8d, 0x2f, 0x67, 0x31, 0x7b, - 0x2a, 0x87, 0x8b, 0x1d, 0x1d, 0xc7, 0x6f, 0xd2, 0x9a, 0xda, - 0x53, 0xe, 0xd5, 0xec, 0xaf, 0xe0, 0xc1, 0xff, 00, 0x3c, - 0x8d, 0x42, 0xfe, 0xd, 00, 0xf0, 0x86, 0x97, 0x24, 0xd0, - 0xbd, 0x9d, 0x53, 0xc7, 0x1b, 0x4b, 0x34, 0xc3, 0xa6, 0x9f, - 0x7a, 0xf5, 0xf7, 0xf0, 0x70, 0xfe, 0xe3, 0x55, 0x77, 0xf0, - 0x70, 0xff, 00, 0x9e, 0x64, 0xfe, 0x34, 0xad, 0x34, 0x4f, - 0x2d, 0x54, 0x79, 0x41, 0xd3, 0x88, 0xa6, 0x9d, 0x3d, 0xbd, - 0xff, 00, 0x2a, 0xf5, 0x36, 0xf0, 0x76, 0x7f, 0xe5, 0x99, - 0xfc, 0xff, 00, 0xfa, 0xf5, 0x13, 0x78, 0x37, 0xaf, 0xee, - 0xcd, 0x1e, 0xf8, 0x7e, 0xf0, 0xf2, 0xf3, 0x62, 0x47, 0x7a, - 0x4f, 0xb1, 0x37, 0xad, 0x7a, 0x63, 0xf8, 0x39, 0xbf, 0xe7, - 0x91, 0x35, 0x5d, 0xfc, 0x1e, 0xc3, 0xfe, 0x59, 0x37, 0xe7, - 0x45, 0xe6, 0x17, 0xa8, 0x8f, 0x3a, 0xfb, 0x23, 0xa, 0x3e, - 0xca, 0x6b, 0xbf, 0x7f, 0x8, 0xb0, 0x3f, 0xea, 0xdb, 0xf3, - 0xa8, 0x9b, 0xc2, 0x6f, 0xfd, 0xc3, 0xf5, 0xa5, 0xcd, 0x3e, - 0xc1, 0xcd, 0x53, 0xb1, 0xc1, 0xfd, 0x95, 0xa9, 0xd, 0xbb, - 0xa, 0xee, 0x1b, 0xc2, 0xae, 0x3f, 0x84, 0xfe, 0x75, 0x1b, - 0x78, 0x5e, 0x41, 0xfc, 0xd, 0xf9, 0xd1, 0xcf, 0x2e, 0xc2, - 0xf6, 0x93, 0xea, 0x8e, 0x2c, 0xc0, 0xde, 0xd4, 0x86, 0x16, - 0xae, 0xbd, 0xfc, 0x35, 0x20, 0xfe, 0x6, 0xfc, 0xea, 0x13, - 0xe1, 0xe9, 0x7, 0xf0, 0xd1, 0xce, 0xfb, 0xf, 0xda, 0xbe, - 0xc7, 0x28, 0x63, 0x6f, 0x4a, 0x36, 0x37, 0xa1, 0xae, 0xa0, - 0xf8, 0x7e, 0x4f, 0xee, 0x54, 0x6d, 0xa1, 0x4b, 0xd9, 0xd, - 0x1c, 0xfe, 0x41, 0xed, 0x9f, 0x63, 0x9a, 0xda, 0x7d, 0x28, - 0xc7, 0xb5, 0x74, 0x2d, 0xa2, 0xc9, 0xfd, 0xc3, 0xf9, 0xd4, - 0x67, 0x47, 0x90, 0x75, 0x8f, 0xf5, 0x14, 0x7b, 0x44, 0x35, - 0x59, 0x76, 0x30, 0x68, 0xad, 0xb6, 0xd2, 0x1c, 0x1f, 0xb8, - 0x69, 0xad, 0xa5, 0x3f, 0xf7, 0xd, 0x3f, 0x68, 0x83, 0xda, - 0xa3, 0x1a, 0x8a, 0xd6, 0xfe, 0xca, 0x6e, 0xe8, 0x69, 0x87, - 0x4d, 0x6f, 0xee, 0x53, 0xe7, 0x43, 0xf6, 0xb1, 0x33, 0x28, - 0xad, 0x3, 0xa7, 0x1f, 0xee, 0x9a, 0x4f, 0xb0, 0xfb, 0x53, - 0xe7, 0x88, 0xfd, 0xa4, 0x4a, 0x14, 0x55, 0xd3, 0x60, 0x7f, - 0xc9, 0xa6, 0xfd, 0x85, 0xbd, 0xd, 0x1c, 0xc8, 0xaf, 0x69, - 0x12, 0xa5, 0x15, 0x6f, 0xec, 0x44, 0x76, 0x34, 0xcf, 0xb2, - 0x37, 0xa5, 0x3e, 0x64, 0x1c, 0xf1, 0x2b, 0xe6, 0x8a, 0x9c, - 0xda, 0xb0, 0xa3, 0xec, 0xcd, 0x8e, 0x94, 0x5d, 0x15, 0xcd, - 0x12, 0xa, 0x2a, 0x5f, 0x21, 0xbd, 0x39, 0xa4, 0xf2, 0x5f, - 0xd0, 0xd3, 0xb8, 0xf9, 0x91, 0x1d, 0x14, 0xf3, 0x13, 0x7a, - 0x1a, 0x4f, 0x2d, 0xb1, 0xd2, 0x9e, 0x81, 0x74, 0x36, 0x8a, - 0x76, 0xc6, 0xf4, 0xa4, 0xd8, 0x47, 0x63, 0x40, 0x5d, 0x9, - 0x46, 0x69, 0x76, 0x9f, 0x4a, 0x30, 0x68, 0x1, 0x32, 0x68, - 0xcd, 0x18, 0xa2, 0x80, 0x17, 0x79, 0xf5, 0xa5, 0xde, 0xde, - 0xb4, 0xda, 0x28, 0xb0, 0x58, 0x77, 0x98, 0xde, 0xa6, 0x94, - 0x48, 0xd9, 0xea, 0x7f, 0x3a, 0x65, 0x18, 0xa4, 0x16, 0x25, - 0xf3, 0x9b, 0xd7, 0xf5, 0xa3, 0xcf, 0x61, 0xde, 0xa2, 0xc5, - 0x18, 0xa0, 0x5c, 0xa8, 0x97, 0xed, 0x6, 0x97, 0xed, 0x2c, - 0x3d, 0x6a, 0x1a, 0x29, 0x59, 0xb, 0x95, 0x13, 0x8b, 0xa6, - 0xf7, 0xa7, 0x7d, 0xa9, 0xbd, 0x3f, 0x5a, 0xad, 0x45, 0x16, - 0x41, 0xca, 0xbb, 0x16, 0x4d, 0xdb, 0x7a, 0x52, 0x8b, 0xc3, - 0xe9, 0x55, 0x68, 0xa5, 0xca, 0x85, 0xc8, 0x8b, 0x82, 0xf4, - 0x8a, 0x51, 0x7e, 0x47, 0x73, 0xf9, 0xd5, 0x2a, 0x28, 0xe5, - 0x41, 0xc9, 0x1e, 0xc5, 0xf1, 0xa8, 0x1f, 0x56, 0xfc, 0xe9, - 0x45, 0xfb, 0xf, 0xe2, 0x6f, 0xce, 0xb3, 0xe8, 0xa3, 0x95, - 0xb, 0xd9, 0xc4, 0xd2, 0x1a, 0x9b, 0x8f, 0xe3, 0x61, 0xff, - 00, 0x2, 0xa7, 0x8d, 0x52, 0x41, 0xfc, 0x6d, 0xff, 00, - 0x7d, 0x1a, 0xca, 0xa2, 0x97, 0x2a, 0x17, 0xb3, 0x46, 0xc2, - 0xea, 0xd2, 0xaf, 0xf1, 0xb7, 0xfd, 0xf5, 0x52, 0x8d, 0x72, - 0x60, 0x3e, 0xfb, 0x7e, 0x66, 0xb0, 0xa9, 0x41, 0xc5, 0x1c, - 0xa1, 0xec, 0xd7, 0x73, 0x7d, 0x7c, 0x41, 0x38, 0xfe, 0x36, - 0xff, 00, 0xbe, 0x8d, 0x48, 0xbe, 0x23, 0x9d, 0x7f, 0x8d, - 0x8f, 0xfc, 0x8, 0xd7, 0x39, 0xb8, 0xfa, 0xd2, 0xef, 0x3e, - 0xa6, 0x8e, 0x57, 0xdc, 0x7c, 0x8f, 0xa3, 0x3a, 0x71, 0xe2, - 0x7b, 0x85, 0x1c, 0x33, 0x7f, 0xdf, 0x46, 0x90, 0xf8, 0xba, - 0xe5, 0x47, 0x56, 0xff, 00, 0xbe, 0xcd, 0x73, 0x25, 0xcf, - 0xa9, 0xa8, 0xe4, 0x90, 0x9a, 0xd2, 0x29, 0xf7, 0x2e, 0x2a, - 0x49, 0xee, 0x75, 0x63, 0xc7, 0x37, 0x9, 0xfc, 0x2d, 0xff, - 00, 0x7f, 0x2a, 0x44, 0xf8, 0x85, 0x2a, 0xf5, 0x57, 0x1f, - 0xf6, 0xd2, 0xb8, 0xa3, 0xcf, 0x7a, 0x6b, 0x29, 0x3d, 0xeb, - 0xaa, 0x15, 0x27, 0x1d, 0x99, 0xdb, 0xa, 0xd5, 0x21, 0xb3, - 0x3b, 0xe8, 0xfe, 0x21, 0xc8, 0xc7, 0xee, 0xb7, 0xfd, 0xf7, - 0x5a, 0x36, 0xfe, 0x34, 0x69, 0x7a, 0xee, 0xff, 00, 0xbe, - 0xab, 0xcb, 0xc2, 0x11, 0xde, 0x9e, 0x97, 0x12, 0x44, 0x7e, - 0x52, 0x6b, 0xbe, 0x9e, 0x3a, 0xa4, 0x77, 0x3d, 0x3a, 0x39, - 0x95, 0x58, 0x3d, 0x4f, 0x63, 0xb6, 0xf1, 0x26, 0xef, 0x5f, - 0xce, 0xb4, 0x21, 0xd7, 0x77, 0xe, 0x87, 0xf3, 0xaf, 0x1a, - 0xb6, 0xd6, 0xe5, 0x88, 0x8c, 0xb5, 0x6f, 0x69, 0xde, 0x20, - 0x27, 0xab, 0x8c, 0x7d, 0x2b, 0xdb, 0xc3, 0xe6, 0x57, 0x76, - 0x6c, 0xfa, 0x3c, 0x2e, 0x6d, 0x77, 0x66, 0xcf, 0x4d, 0x7d, - 0x44, 0x5c, 0xe, 0x41, 0x1f, 0x8d, 0x65, 0xeb, 0x3, 0x36, - 0xac, 0x7a, 0xd6, 0x2d, 0xae, 0xae, 0x1c, 0x7d, 0xea, 0x5b, - 0xcd, 0x57, 0x75, 0xbb, 0x2e, 0xe1, 0x5e, 0xea, 0xc5, 0x46, - 0x71, 0x67, 0xd2, 0x47, 0x17, 0x19, 0xc1, 0xea, 0x79, 0xff, - 00, 0x8a, 00, 0x66, 0x7f, 0xa9, 0xae, 0x12, 0x61, 0xc9, - 0xfa, 0xd7, 0x6d, 0xe2, 0x9, 0x3c, 0xc6, 0x93, 0x7, 0x3c, - 0xd7, 0x19, 0x30, 0xc9, 0x35, 0xf2, 0xd5, 0xdd, 0xe7, 0x73, - 0xe2, 0xf1, 0x32, 0xe6, 0xa9, 0x73, 0x3a, 0x75, 0xe2, 0xbd, - 0x2b, 0xf6, 0x71, 0xf8, 0x63, 0x2f, 0x8f, 0x7c, 0x73, 0xd, - 0xeb, 0x98, 0xd7, 0x4f, 0xd2, 0xa4, 0x59, 0xa5, 0x59, 0x17, - 0x77, 0x9a, 0xd9, 0xf9, 0x53, 0x1d, 0x7, 0x73, 0x9e, 0x7a, - 0x57, 0x9d, 0xb4, 0x4f, 0x71, 0x22, 0x45, 0x1a, 0x97, 0x91, - 0x88, 0x1, 0x47, 0x73, 0x5f, 0xa4, 0x7f, 0xb3, 0x1f, 0xc2, - 0x9b, 0x5f, 0xb, 0xf8, 0x6a, 0xc6, 0x3f, 0x24, 0x85, 0x8d, - 0x4, 0xb2, 0x48, 0x4f, 0xdf, 0x98, 0x81, 0x93, 0xf9, 0xe, - 0x95, 0xe9, 0xe5, 0xf4, 0xbd, 0xa4, 0xf9, 0x9e, 0xc8, 0xf6, - 0x32, 0xca, 0x3e, 0xd6, 0x7c, 0xcf, 0x64, 0x7b, 0x67, 0x82, - 0x74, 0x21, 0xa1, 0xe8, 0xb0, 0xc2, 0x76, 0x99, 0x5c, 0x7, - 0x7c, 0xc, 0x60, 0x91, 0xd3, 0xf0, 0xe9, 0x5d, 0x64, 0x2b, - 0xc0, 0xaa, 0x70, 0x20, 0x38, 0xad, 0x8, 0x90, 0x71, 0x5f, - 0x4e, 0x7d, 0x89, 0x6a, 0x11, 0xc8, 0xad, 0x8, 0x7, 0x15, - 0x52, 0x4, 0xe6, 0xb4, 0x21, 0x4e, 0x28, 0x2, 0xd4, 0xb, - 0xd2, 0xb4, 0xed, 0xc5, 0x51, 0x85, 0x3e, 0x61, 0x5a, 0x30, - 0xe, 0x28, 0x2, 0xd4, 0x62, 0xae, 0x46, 0xbd, 0x2a, 0xac, - 0x2b, 0xcd, 0x5d, 0x8c, 0x50, 0x4, 0xc8, 0x39, 0xa9, 0xd0, - 0x74, 0xa8, 0x90, 0x74, 0xa9, 0xd0, 0x50, 0x4, 0xab, 0x52, - 0x1, 0xd2, 0x98, 0xa2, 0xa4, 0x1d, 0x68, 0x1, 0xeb, 0xd6, - 0x9e, 0xb4, 0xc5, 0xe9, 0x52, 0xe, 0x94, 00, 0x52, 0xaf, - 0x26, 0x92, 0x95, 0x68, 0x1, 0xd4, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x51, 0x61, 0xed, - 0x51, 0xba, 0xe4, 0x54, 0xf8, 0xcd, 0x30, 0x8c, 0x9a, 00, - 0xac, 0xcb, 0x50, 0x32, 0x66, 0xae, 0x32, 0x8a, 0x85, 0xd4, - 0x50, 0x5, 0x27, 0x8f, 0x9a, 0x82, 0x48, 0x81, 0x7, 0x23, - 0xad, 0x5e, 0x64, 0xa8, 0x9e, 0x3e, 0x28, 0x3, 0x81, 0xf1, - 0x27, 0xc2, 0xaf, 0xe, 0xf8, 0x92, 0x49, 0x26, 0xb9, 0xb0, - 0x51, 0x72, 0xe7, 0x26, 0x64, 0x66, 0x4, 0x9f, 0xc0, 0xd7, - 0x9a, 0xea, 0x5f, 0x2, 0xf5, 0xbd, 0x2a, 0x69, 0x1b, 0x42, - 0xd5, 0x22, 0x78, 0x98, 0xf1, 0x1c, 0xab, 0xb3, 0x3, 0xd3, - 0x3f, 0x35, 0x7d, 00, 0xe9, 0xed, 0x50, 0xb4, 0x5c, 0x74, - 0xa8, 0x9c, 0x23, 0x35, 0x69, 0xab, 0xa3, 0x39, 0xd3, 0x85, - 0x45, 0xcb, 0x35, 0x75, 0xe6, 0x7c, 0xd3, 0x75, 0xe0, 0xcf, - 0x1c, 0x69, 0xd, 0x9b, 0x8d, 0x3a, 0x3b, 0xa8, 0xc7, 0x3b, - 0xa2, 0x96, 0x3f, 0xf1, 0xcf, 0xe9, 0x59, 0x13, 0xde, 0xea, - 0x56, 0x80, 0x8b, 0x9d, 0xe, 0x65, 0x20, 0xe0, 0x95, 0x6c, - 0xff, 00, 0x21, 0x5f, 0x53, 0x3c, 0x3c, 0x54, 0x12, 0x40, - 0x18, 0x10, 0x40, 0x20, 0xf1, 0x83, 0x5c, 0x33, 0xcb, 0xb0, - 0xb3, 0xde, 0x8, 0xf3, 0x2a, 0x65, 0x38, 0x2a, 0xba, 0xba, - 0x6b, 0xe5, 0xa7, 0xe4, 0x7c, 0xb3, 0xfd, 0xbb, 0x18, 0xff, - 00, 0x59, 0xa7, 0xdc, 0x2f, 0xfc, 00, 0xff, 00, 0x85, - 0x1f, 0xf0, 0x91, 0xe9, 0xe3, 0xef, 0xc7, 0x32, 0x7d, 0x52, - 0xbe, 0x97, 0x9f, 0x44, 0xb2, 0x9b, 0x3b, 0xec, 0xed, 0xdf, - 0x3c, 0x1d, 0xd1, 0x29, 0xfe, 0x95, 0x9f, 0x37, 0x83, 0xb4, - 0x69, 0x81, 0xf3, 0x34, 0x8b, 0x7, 0x7, 0xae, 0xeb, 0x64, - 0x3f, 0xd2, 0xb9, 0x5e, 0x4f, 0x85, 0x7b, 0x27, 0xf7, 0x9c, - 0x92, 0xc8, 0x70, 0x4f, 0xa3, 0x5f, 0x33, 0xe7, 0x7f, 0xf8, - 0x48, 0xf4, 0xb6, 0xfe, 0x29, 0x7, 0xd5, 0x29, 0x7f, 0xb7, - 0x74, 0x93, 0xd6, 0x62, 0x3f, 0xe0, 0x6, 0xbd, 0xf2, 0x5f, - 00, 0x78, 0x79, 0xba, 0xe8, 0x7a, 0x78, 0xff, 00, 0x76, - 0xd9, 0x7, 0xf2, 0x15, 0x4a, 0x5f, 0x86, 0x7e, 0x1b, 0x93, - 0xae, 0x8b, 0x6d, 0xff, 00, 0x1, 0x52, 0x3f, 0x95, 0x66, - 0xf2, 0x5c, 0x3f, 0x46, 0xcc, 0x9f, 0xf, 0x61, 0x1e, 0xcd, - 0xfd, 0xe7, 0x89, 0xd, 0x57, 0x4a, 0x7e, 0x97, 0x23, 0x3f, - 0xee, 0x37, 0xf8, 0x53, 0xd6, 0xf3, 0x4d, 0x90, 0xfc, 0xb3, - 0x83, 0xff, 00, 0x1, 0x6f, 0xf0, 0xaf, 0x5f, 0x93, 0xe1, - 0x37, 0x85, 0xe4, 0xe0, 0xe9, 0x8, 0x3f, 0xdd, 0x96, 0x41, - 0xfc, 0x9a, 0xa9, 0xcd, 0xf0, 0x73, 0xc3, 0x2f, 0xc2, 0xd8, - 0xb4, 0x67, 0xda, 0x69, 0xf, 0xf3, 0x6a, 0x87, 0x92, 0x51, - 0x7b, 0x49, 0x99, 0x3e, 0x1d, 0xa1, 0xd2, 0x6c, 0xf3, 0x15, - 0x16, 0x72, 0xf, 0x96, 0x54, 0xfd, 0x69, 0xff, 00, 0x61, - 0x88, 0xe3, 0xe, 0x87, 0xfe, 0x4, 0x2b, 0xbf, 0x9b, 0xe0, - 0x96, 0x82, 0xc7, 0xe4, 0x13, 0xa7, 0x18, 0xc0, 0x90, 0xff, - 00, 0x5a, 0xa3, 0x27, 0xc0, 0x9d, 0x33, 0x4, 0xc7, 0x7d, - 0x79, 0x19, 0xf4, 0xca, 0xe3, 0xf9, 0x56, 0x2f, 0x23, 0x8f, - 0x49, 0xbf, 0xb8, 0xc2, 0x5c, 0x39, 0x1f, 0xb3, 0x51, 0xfd, - 0xc7, 0x18, 0x74, 0xd4, 0x27, 0x82, 0xa7, 0xfe, 0x4, 0x29, - 0xe, 0x94, 0xf, 0x61, 0x5d, 0x5c, 0xbf, 0x4, 0x2, 0x7f, - 0xc7, 0xbe, 0xa9, 0x70, 0xf, 0xfb, 0x52, 0x63, 0xf9, 0x2d, - 0x54, 0x7f, 0x83, 0x9a, 0xba, 0x9f, 0xdc, 0xeb, 0x4, 0x7f, - 0xbd, 0x3b, 0x8f, 0xe4, 0xb5, 0x8b, 0xc8, 0xe7, 0xd2, 0xa1, - 0x84, 0xb8, 0x72, 0xa7, 0xd9, 0xa8, 0x73, 0xa7, 0x49, 0xf6, - 0xa6, 0x36, 0x93, 0x9f, 0xe1, 0xad, 0xb9, 0x3e, 0x12, 0xf8, - 0xa9, 0x7e, 0xe6, 0xaf, 0x1, 0x5f, 0xf6, 0xa7, 0x93, 0x3f, - 0xfa, 0xd, 0x30, 0xfc, 0x30, 0xf1, 0x7c, 0x67, 0x8b, 0xfb, - 0x66, 0xff, 00, 0xb6, 0xcd, 0xfd, 0x56, 0xb3, 0x79, 0x25, - 0x6e, 0x93, 0x46, 0x2f, 0x87, 0x71, 0x1d, 0x26, 0xbf, 0x13, - 0x15, 0xb4, 0x8c, 0xff, 00, 0xd, 0x46, 0xda, 0x47, 0xfb, - 0x35, 0xb6, 0x7e, 0x1f, 0xf8, 0xd2, 0x33, 0xc4, 0xf6, 0xed, - 0xff, 00, 0x3, 0x53, 0xfc, 0xd6, 0xa3, 0x7f, 0x7, 0xf8, - 0xce, 0x2c, 0xe6, 0x28, 0x64, 0xc7, 0xa1, 0x53, 0xfc, 0x85, - 0x43, 0xc9, 0x71, 0x3d, 0xd7, 0xe2, 0x43, 0xe1, 0xfc, 0x5a, - 0xda, 0x4b, 0xf1, 0x31, 0x8e, 0x91, 0x8f, 0xe1, 0xa6, 0x36, - 0x91, 0x9f, 0xe1, 0xad, 0x56, 0xd1, 0x7c, 0x59, 0x8, 0xf9, - 0xb4, 0xdf, 0x33, 0xfd, 0xd4, 0x27, 0xf9, 0xa, 0x88, 0xc3, - 0xe2, 0x58, 0x87, 0xcf, 0xa0, 0x4c, 0xe3, 0xd5, 0x60, 0x73, - 0xfc, 0xab, 0x27, 0x94, 0xe2, 0xd7, 0x44, 0xfe, 0x66, 0xf, - 0x23, 0xc7, 0x2d, 0x92, 0x7f, 0x33, 0x30, 0xe8, 0xff, 00, - 0xec, 0xd3, 0xe, 0x8f, 0x91, 0xf7, 0x6b, 0x41, 0xae, 0xb5, - 0x84, 0xff, 00, 0x59, 0xa0, 0x5d, 0xaf, 0xae, 0x6d, 0x9c, - 0x52, 0x1d, 0x62, 0x58, 0xc7, 0xef, 0x74, 0xbb, 0xb4, 0xcf, - 0xfd, 0x31, 0x3f, 0xe3, 0x59, 0x3c, 0xb7, 0x19, 0x1f, 0xb2, - 0x63, 0x2c, 0xa3, 0x1d, 0x1f, 0xb1, 0xf8, 0xa3, 0x35, 0xb4, - 0x8e, 0xbf, 0x2d, 0x46, 0xda, 0x3f, 0xfb, 0x35, 0xa4, 0xfe, - 0x27, 0xb1, 0x4e, 0x24, 0xb6, 0xb9, 0x46, 0xf7, 0x41, 0xfe, - 0x34, 0xd1, 0xe2, 0x7d, 0x30, 0xff, 00, 0xc, 0xab, 0xf5, - 0x41, 0xfe, 0x35, 0x93, 0xc1, 0x62, 0x97, 0xfc, 0xbb, 0x66, - 0x2f, 0x2e, 0xc7, 0x2f, 0xf9, 0x74, 0xff, 00, 0x3, 0x30, - 0xe8, 0xa3, 0xfb, 0xa2, 0x98, 0xda, 0x2f, 0xfb, 0x23, 0xf3, - 0xad, 0x81, 0xe2, 0x2d, 0x2c, 0xf7, 0x71, 0xff, 00, 00, - 0xa7, 0xd, 0x6f, 0x4b, 0x61, 0xfe, 0xb3, 0x1f, 0x55, 0x35, - 0xf, 0xb, 0x89, 0x5f, 0xf2, 0xed, 0xfd, 0xc4, 0x3c, 0x16, - 0x2d, 0x6f, 0x49, 0xfd, 0xc6, 0xb, 0x68, 0x80, 0xff, 00, - 00, 0x34, 0xd6, 0xd0, 0xc7, 0xf7, 0x5, 0x74, 0x43, 0x53, - 0xd3, 0x5c, 0xf1, 0x3a, 0xf, 0xaf, 0x15, 0x28, 0xb9, 0xd3, - 0x9f, 0xfe, 0x5e, 0xa0, 0x19, 0xe7, 0x99, 00, 0xac, 0xdd, - 0x2a, 0xcb, 0x78, 0x3f, 0xb8, 0xc6, 0x54, 0x2b, 0xc7, 0x7a, - 0x6f, 0xee, 0x39, 0x36, 0xd0, 0xc7, 0xf7, 0x29, 0x87, 0x42, - 0x7, 0xf8, 0x6b, 0xb1, 0xdb, 0x64, 0xdd, 0x2e, 0x6d, 0xcf, - 0xfd, 0xb5, 0x14, 0xa2, 0xca, 0xdd, 0xf9, 0x59, 0x22, 0x23, - 0xd9, 0xc1, 0xac, 0xda, 0x92, 0xde, 0x3f, 0x81, 0x93, 0x53, - 0x5b, 0xc5, 0xfd, 0xc7, 0xe, 0xde, 0x1f, 0x53, 0xdb, 0xfc, - 0xfe, 0x75, 0x1b, 0xf8, 0x71, 0xf, 0xf0, 0xf, 0xf3, 0xf8, - 0xd7, 0x7d, 0xfd, 0x96, 0xad, 0xd3, 0x69, 0xfa, 0x52, 0x1d, - 0x27, 0x3f, 0xc3, 0x51, 0x75, 0xd8, 0xca, 0xeb, 0xaa, 0x3c, - 0xf8, 0xf8, 0x69, 0x3f, 0xb8, 0x3f, 0x33, 0x51, 0xb7, 0x86, - 0x97, 0xfb, 0xa3, 0x1f, 0x53, 0x5e, 0x82, 0x74, 0x9e, 0x7e, - 0xed, 0x35, 0xb4, 0x8f, 0xf6, 0x5, 0x2b, 0xa0, 0xe6, 0x89, - 0xe7, 0x6d, 0xe1, 0x95, 0xfe, 0xe0, 0xfc, 0xea, 0x26, 0xf0, - 0xb8, 0x3f, 0xc0, 0x2b, 0xd1, 0x4e, 0x91, 0xfe, 0xc0, 0xa6, - 0x7f, 0x64, 0xff, 00, 0xb3, 0x47, 0xba, 0x17, 0x81, 0xe7, - 0xd, 0xe1, 0x40, 0x7f, 0x84, 0x7f, 0x9f, 0xc6, 0xa0, 0x7f, - 0x9, 0x3, 0xd8, 0x7e, 0x5f, 0xfd, 0x7a, 0xf4, 0xc3, 0xa4, - 0x7f, 0xb1, 0x51, 0xb6, 0x91, 0xfe, 0xc5, 0x1e, 0xe8, 0x7b, - 0x87, 0x98, 0xb7, 0x84, 0x47, 0xf7, 0x7f, 0xcf, 0xe7, 0x51, - 0x37, 0x84, 0xbf, 0xd8, 0x5f, 0xd6, 0xbd, 0x44, 0xe9, 0x1c, - 0x7d, 0xca, 0x61, 0xd1, 0xff, 00, 0xd9, 0xa2, 0xd1, 0x17, - 0x2c, 0xf, 0x2b, 0x6f, 0x9, 0x1f, 0xf9, 0xe6, 0x3f, 0x3, - 0x51, 0x37, 0x84, 0x8f, 0xf7, 0x7, 0xe7, 0x5e, 0xaa, 0x74, - 0x61, 0xfd, 0xca, 0x63, 0x68, 0xc3, 0xfe, 0x79, 0x8f, 0xca, - 0x97, 0x2c, 0x45, 0xc9, 0x3, 0xca, 0x1b, 0xc2, 0xd, 0xfd, - 0xdf, 0xd4, 0x7f, 0x8d, 0x42, 0xfe, 0xe, 0x63, 0xd5, 0x7f, - 0x5f, 0xfe, 0xbd, 0x7a, 0xd1, 0xd1, 0x47, 0xf7, 0x17, 0xf2, - 0xa8, 0xce, 0x88, 0xa4, 0xff, 00, 0xab, 0x14, 0x38, 0x40, - 0x5e, 0xce, 0x7, 0x91, 0x3f, 0x83, 0x88, 0xfe, 0x11, 0xfe, - 0x7f, 0x1a, 0x85, 0xbc, 0x24, 0x7f, 0xb9, 0xfc, 0xeb, 0xd8, - 0x5b, 0x43, 0x5f, 0xf9, 0xe6, 0x2a, 0x36, 0xd1, 0x17, 0xfb, - 0x95, 0x3e, 0xca, 0x2, 0xf6, 0x50, 0x67, 0x8d, 0xbf, 0x84, - 0x49, 0xff, 00, 0x96, 0x79, 0xfc, 0x4d, 0x42, 0xde, 0xf, - 0x7, 0xfe, 0x59, 0xf, 0xcc, 0xd7, 0xb2, 0xb6, 0x84, 0xa7, - 0xf8, 0x2a, 0x36, 0xf0, 0xfa, 0x1f, 0xf9, 0x66, 0x3f, 0x2a, - 0x4e, 0x8c, 0x45, 0xec, 0x22, 0x78, 0xcb, 0xf8, 0x3b, 0xfd, - 0x81, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xea, 0x16, 0xf0, 0x71, - 0x27, 0xee, 0x1, 0xf8, 0xff, 00, 0xf5, 0xeb, 0xda, 0x1b, - 0xc3, 0xb1, 0x9f, 0xf9, 0x64, 0xb9, 0xfa, 0x54, 0x67, 0xc3, - 0x68, 0x7f, 0xe5, 0x92, 0xfe, 0x54, 0xbd, 0x82, 0x27, 0xea, - 0xe8, 0xf1, 0x47, 0xf0, 0x6f, 0xfb, 0x23, 0xf3, 0xff, 00, - 0xeb, 0xd4, 0xf, 0xe0, 0xe0, 0x3f, 0xe5, 0x98, 0x3f, 0x9d, - 0x7b, 0x6b, 0x78, 0x69, 0x3f, 0xe7, 0x9a, 0xfe, 0xb5, 0x13, - 0x78, 0x65, 0x7f, 0xe7, 0x98, 0xfc, 0xcd, 0x2f, 0x60, 0x84, - 0xf0, 0xc9, 0x9e, 0x1e, 0xfe, 0xe, 0xcf, 0xf0, 0xf, 0xd6, - 0xa2, 0x6f, 0x6, 0xb7, 0x64, 0x15, 0xee, 0x2d, 0xe1, 0x75, - 0x3f, 0xf2, 0xcc, 0x7e, 0x75, 0x13, 0x78, 0x51, 0x71, 0xf7, - 0x5, 0x4f, 0xd5, 0xd1, 0x1f, 0x55, 0x47, 0x87, 0x37, 0x83, - 0x4f, 0x75, 0x5f, 0xf3, 0xf8, 0xd4, 0x4d, 0xe0, 0xc6, 0x3d, - 0x10, 0x1f, 0xc7, 0xff, 00, 0xaf, 0x5e, 0xe2, 0xde, 0x13, - 0x4f, 0xf9, 0xe6, 0x33, 0xf4, 0xa8, 0x5f, 0xc2, 0x49, 0xff, - 00, 0x3c, 0x97, 0xfe, 0xf9, 0xa9, 0xfa, 0xb9, 0x3f, 0x54, - 0x47, 0x86, 0xbf, 0x83, 0xd8, 0x1f, 0xf5, 0x63, 0xf3, 0xaa, - 0xef, 0xe0, 0xf6, 0xfe, 0xe0, 0xaf, 0x74, 0x7f, 0x8, 0xfa, - 0x44, 0xbf, 0x91, 0xa8, 0x4f, 0x84, 0xbd, 0x62, 0x5f, 0xcc, - 0xd2, 0xfa, 0xb9, 0x1f, 0x55, 0x3c, 0x31, 0xbc, 0x20, 0xe3, - 0xa2, 0xf, 0xf3, 0xf8, 0xd4, 0x67, 0xc2, 0x2e, 0x3f, 0x83, - 0xf5, 0xff, 00, 0xeb, 0xd7, 0xb9, 0x3f, 0x84, 0xbf, 0xe9, - 0x98, 0x15, 0x13, 0x78, 0x47, 0xfe, 0x99, 0x8a, 0x8f, 0xab, - 0x13, 0xf5, 0x43, 0xc3, 0x5f, 0xc2, 0x92, 0x8f, 0xe0, 0x1f, - 0x9f, 0xff, 00, 0x5e, 0xa1, 0x93, 0xc2, 0xf2, 0xf, 0xe1, - 0x1f, 0x9d, 0x7b, 0x93, 0xf8, 0x3c, 0x67, 0xfd, 0x50, 0xfc, - 0xaa, 0x17, 0xf0, 0x79, 0x1d, 0x22, 0x1f, 0x80, 0xa9, 0xfa, - 0xbb, 0x27, 0xea, 0xac, 0xf0, 0xe6, 0xf0, 0xcc, 0x98, 0xe8, - 0x2a, 0x26, 0xf0, 0xd4, 0xbf, 0xdd, 0xaf, 0x6f, 0x7f, 0x8, - 0x1f, 0xf9, 0xe2, 0x3f, 0x23, 0x50, 0xbf, 0x84, 0xf, 0xfc, - 0xf1, 0x1f, 0x91, 0xa5, 0xec, 0x24, 0x4f, 0xd5, 0xa4, 0x78, - 0x9b, 0x78, 0x72, 0x6f, 0xee, 0xff, 00, 0x2a, 0x89, 0xb4, - 0x9, 0x47, 0xf0, 0x8a, 0xf6, 0xb6, 0xf0, 0x78, 0xcf, 0xfa, - 0x95, 0xfd, 0x6a, 0x16, 0xf0, 0x72, 0xff, 00, 0xcf, 0x15, - 0xa5, 0xec, 0x64, 0x4f, 0xd5, 0xe7, 0xdc, 0xf1, 0x53, 0xa1, - 0xc9, 0xfd, 0xc1, 0x4c, 0x3a, 0x2c, 0xbf, 0xdd, 0x1f, 0x9d, - 0x7b, 0x43, 0xf8, 0x35, 0x7f, 0xe7, 0x98, 0xfc, 0x2a, 0x9, - 0x3c, 0x1a, 0x33, 0xc4, 0x54, 0xbd, 0x94, 0xd0, 0xbd, 0x84, - 0xcf, 0x1c, 0x3a, 0x3c, 0xa3, 0xf8, 0x3f, 0x51, 0x51, 0x9d, - 0x25, 0xc7, 0xf0, 0xf, 0xcc, 0x57, 0xb0, 0x3f, 0x83, 0x78, - 0xff, 00, 0x53, 0xfa, 0x1a, 0x81, 0xbc, 0x1b, 0xff, 00, - 0x4c, 0x47, 0xe4, 0x69, 0x7b, 0x39, 0x8b, 0xd9, 0x54, 0x47, - 0x91, 0xb6, 0x96, 0xff, 00, 0xdc, 0xfd, 0x45, 0x30, 0xe9, - 0xa7, 0x3f, 0x76, 0xbd, 0x69, 0xbc, 0x1a, 0x3f, 0xe7, 0x98, - 0xfc, 0xbf, 0xfa, 0xd5, 0xb, 0xf8, 0x3b, 0xfd, 0x81, 0x47, - 0x2c, 0xc3, 0x92, 0xa2, 0x3c, 0xab, 0xfb, 0x3f, 0x1f, 0xc2, - 0x7f, 0x2a, 0x61, 0xd3, 0xce, 0x4f, 0x18, 0xfc, 0x2b, 0xd4, - 0x9b, 0xc1, 0xbf, 0xf4, 0xcd, 0x4f, 0xe3, 0x50, 0x3f, 0x83, - 0x5b, 0xfe, 0x79, 0x2f, 0xeb, 0x4a, 0xd3, 0xb, 0x54, 0x3c, - 0xc8, 0xd8, 0xfb, 0x1a, 0x69, 0xb2, 0xc7, 0xa9, 0xaf, 0x49, - 0x7f, 0x6, 0x37, 0xfc, 0xf2, 0x1f, 0x97, 0xff, 00, 0x5a, - 0xa1, 0x7f, 0x7, 0x3f, 0xfc, 0xf3, 0xfd, 0x28, 0xf7, 0xc5, - 0x7a, 0x88, 0xf3, 0xbf, 0xb1, 0x9a, 0x69, 0xb4, 0x61, 0x5e, - 0x82, 0xde, 0xf, 0x61, 0xff, 00, 0x2c, 0xea, 0x16, 0xf0, - 0x9b, 0x8f, 0xf9, 0x66, 0x3f, 0x33, 0x45, 0xe7, 0xd8, 0x39, - 0xaa, 0x23, 0x84, 0x6b, 0x56, 0x2, 0x9a, 0x6d, 0x9c, 0x57, - 0x6e, 0xde, 0x14, 0x90, 0x7f, 0xcb, 0x31, 0xfa, 0xd4, 0x6d, - 0xe1, 0x69, 0x7, 0xf0, 0x1f, 0xca, 0x8e, 0x69, 0x76, 0xf, - 0x69, 0x2e, 0xc7, 0x17, 0xf6, 0x77, 0xa4, 0x36, 0xee, 0x3b, - 0x57, 0x60, 0x7c, 0x33, 0x28, 0xfe, 0x3, 0xfe, 0x7f, 0xa, - 0x88, 0xf8, 0x72, 0x5f, 0xee, 0x51, 0xce, 0xfb, 0x7, 0xb4, - 0x97, 0x63, 0x93, 0xf2, 0x5f, 0xd2, 0x8f, 0x29, 0xbd, 0x2b, - 0xa8, 0x6f, 0xf, 0xcd, 0xfd, 0xd1, 0xfa, 0xd4, 0x47, 0x40, - 0x98, 0x1f, 0xb9, 0xfa, 0x1f, 0xf0, 0xa3, 0xda, 0x79, 0xf, - 0xda, 0xbe, 0xc7, 0x37, 0xe5, 0xb0, 0xed, 0x48, 0x50, 0xfa, - 0x57, 0x44, 0x74, 0x29, 0xbf, 0xe7, 0x9f, 0xe8, 0x6a, 0x36, - 0xd1, 0xa4, 0x1f, 0xf2, 0xce, 0x8f, 0x68, 0x83, 0xda, 0x98, - 0x3b, 0x4f, 0xa5, 0x18, 0xad, 0xb3, 0xa4, 0x48, 0x3f, 0x83, - 0xf5, 0xa6, 0x9d, 0x29, 0xff, 00, 0xb8, 0x69, 0xfb, 0x44, - 0x3f, 0x6c, 0x8c, 0x5c, 0x51, 0x5a, 0xed, 0xa6, 0x3f, 0xfc, - 0xf3, 0x3f, 0x95, 0x30, 0xe9, 0xad, 0xfd, 0xc3, 0xf9, 0x53, - 0xf6, 0x91, 0x1f, 0xb5, 0x89, 0x97, 0x45, 0x69, 0x1d, 0x3d, - 0xbf, 0xb9, 0x4c, 0x36, 0x7, 0xd2, 0x9f, 0x3c, 0x47, 0xed, - 0x62, 0x50, 0xa2, 0xaf, 0x1b, 0xc, 0x76, 0xa6, 0xfd, 0x88, - 0xd1, 0xcf, 0x11, 0xfb, 0x48, 0x94, 0xea, 0x37, 0xab, 0xc6, - 0xcc, 0x8f, 0x5a, 0x63, 0x59, 0x9e, 0xe2, 0xa9, 0x4d, 0x14, - 0xa7, 0x1e, 0xe5, 0xa, 0x50, 0x33, 0x57, 0x45, 0xa7, 0xb5, - 0xd, 0x6a, 0x17, 0xb5, 0x5f, 0x3a, 0x2f, 0xda, 0x22, 0x9e, - 0xda, 0x42, 0xbe, 0xd5, 0x73, 0xc9, 0xa8, 0x5e, 0x2d, 0xb4, - 0xd4, 0xae, 0x35, 0x2b, 0x95, 0x18, 0x60, 0xd2, 0x2c, 0xad, - 0x11, 0xf9, 0x4d, 0x4c, 0xc9, 0x9e, 0x2a, 0x36, 0x80, 0xfa, - 0x56, 0xd1, 0x95, 0x8d, 0xe1, 0x3e, 0x57, 0x72, 0xfd, 0x8e, - 0xb4, 0xd1, 0x9c, 0x31, 0x20, 0xfd, 0x2b, 0x46, 0x4d, 0x50, - 0xbc, 0x67, 0xe6, 0x35, 0xcd, 0x98, 0xfd, 0xb1, 0x4e, 0x8e, - 0x77, 0x1f, 0x29, 0x26, 0xbd, 0x3a, 0x38, 0x96, 0xb4, 0x67, - 0xb3, 0x87, 0xc6, 0x35, 0xa3, 0x64, 0x7a, 0x95, 0xc6, 0xf7, - 0x61, 0x9e, 0xb5, 0x84, 0xf1, 0x65, 0x8f, 0x6a, 0xd8, 0xba, - 0x81, 0xb7, 0x6e, 0xeb, 0x5e, 0x97, 0xf0, 0x7b, 0xe0, 0xad, - 0xd7, 0x8d, 0x75, 0x8, 0x2f, 0xf5, 0xb, 0x62, 0xba, 0x3a, - 0xb7, 0xdd, 0x7d, 0xca, 0xd3, 0x1e, 0x70, 0x17, 0x8e, 0x47, - 0xe3, 0x5d, 0x14, 0xe3, 0x2c, 0x44, 0xd4, 0x21, 0xab, 0x3a, - 0xa9, 0x42, 0x78, 0xaa, 0x8a, 0x14, 0xd5, 0xd9, 0xa1, 0xfb, - 0x35, 0x7c, 0x15, 0xb8, 0xf1, 0x6, 0xb3, 0x6f, 0xaf, 0xea, - 0x36, 0x99, 0x81, 0x5c, 0x7d, 0x8a, 0x37, 0x38, 0x2e, 0xe0, - 0xe3, 0x77, 0x5e, 00, 0x3e, 0xbe, 0x95, 0xfa, 0x2f, 0xa2, - 0x69, 0xd1, 0xe9, 0x7a, 0x74, 0x36, 0xd1, 0xa8, 0x50, 0x8a, - 0x1, 0xc7, 0x3c, 0xf7, 0xae, 0x4f, 0xe1, 0xff, 00, 0x81, - 0x2d, 0xbc, 0x33, 0x61, 0x1, 0x36, 0xd1, 0x45, 0x2a, 0xae, - 0xd8, 0xe3, 0x41, 0xc4, 0x4b, 0xd8, 0xe, 0x38, 0xae, 0xf6, - 0x24, 0xe9, 0xc5, 0x7d, 0xae, 0x1e, 0x84, 0x68, 0x41, 0x45, - 0x1f, 0xa2, 0x61, 0x70, 0xf1, 0xc3, 0x53, 0x50, 0x45, 0x88, - 0x54, 0xe, 0xd5, 0x7e, 0x11, 0x55, 0xa1, 0x8f, 0xda, 0xaf, - 0x42, 0x80, 0x57, 0x49, 0xd6, 0x5a, 0xb7, 0x19, 0xc5, 0x68, - 0x42, 0x3a, 0x55, 0x48, 0x10, 0x71, 0x5a, 0x10, 0xa0, 0x27, - 0xa5, 00, 0x5a, 0x81, 0x79, 0xad, 0x18, 0x97, 0x8a, 0xa7, - 0x6e, 0xbd, 0x2b, 0x42, 0x21, 0xd2, 0x80, 0x2c, 0x44, 0xbc, - 0xd5, 0xb8, 0xc7, 0x4a, 0xaf, 0x12, 0xe6, 0xad, 0x20, 0xa0, - 0x9, 0xe3, 0x15, 0x3a, 0xf4, 0xa8, 0x63, 0x15, 0x3a, 0xaf, - 0x14, 00, 0xf5, 0xed, 0x4f, 0x5a, 0x45, 0x5a, 0x70, 0x18, - 0xa0, 0x7, 0x28, 0xe2, 0xa4, 0xa6, 0xaf, 0x5a, 0x75, 00, - 0x14, 0xe1, 0xd2, 0x9b, 0x4f, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xa, 0xf8, - 0xf6, 0xa6, 0x30, 0xa9, 0x4f, 0x4a, 0x6e, 0x3d, 0xa8, 0x2, - 0x16, 0x5a, 0x89, 0x93, 0xa9, 0xab, 0x24, 0x73, 0xd2, 0xa3, - 0x64, 0x18, 0xa0, 0xa, 0xac, 0x9c, 0x54, 0x6e, 0x95, 0x6c, - 0xae, 0x29, 0x8e, 0x94, 0x1, 0x49, 0xa2, 0xe2, 0xa2, 0x31, - 0xfb, 0x55, 0xd6, 0x41, 0xe9, 0x51, 0xb2, 0x71, 0x40, 0x14, - 0x1e, 0x2f, 0x6a, 0x89, 0xa2, 0x1e, 0x95, 0x7d, 0xa3, 0xcd, - 0x46, 0xd1, 0xf5, 0xe0, 0xd0, 0x6, 0x7b, 0x46, 0x3f, 0xc8, - 0xa8, 0xda, 0x1c, 0xff, 00, 0xfa, 0xab, 0x40, 0xc4, 0x3d, - 0x29, 0x86, 0x21, 0xe9, 0x40, 0x19, 0xaf, 0x5, 0x46, 0x60, - 0xf6, 0xad, 0x23, 0xf, 0x14, 0xd3, 0xe, 0x28, 0x3, 0x30, - 0xc1, 0x4c, 0x30, 0x64, 0xe6, 0xb4, 0x9a, 0x2f, 0x6a, 0x67, - 0x91, 0x40, 0x19, 0xc6, 0xa, 0x61, 0x84, 0xe3, 0xa7, 0xe9, - 0x5a, 0x66, 0x1c, 0xe, 0x95, 0x1f, 0x92, 0x3d, 0x28, 0x3, - 0x37, 0xec, 0xfe, 0xd4, 0x86, 0xf, 0x6f, 0xd2, 0xb4, 0xbc, - 0x9a, 0x69, 0xb7, 0xc5, 00, 0x65, 0xf9, 0x39, 0xed, 0xfa, - 0x52, 0x1b, 0x7f, 0x6f, 0xd2, 0xb5, 0x3c, 0x9c, 0x53, 0x5a, - 0x1e, 0x3a, 0x50, 0x6, 0x49, 0xb7, 0x3, 0xb5, 0x21, 0xb7, - 0x1e, 0x9c, 0x56, 0x99, 0xb7, 0x18, 0xe9, 0x4d, 0x30, 0x71, - 0xd2, 0x80, 0x32, 0x8d, 0xb6, 0x7b, 0x50, 0x2d, 0x80, 0xad, - 0x2f, 0x26, 0x90, 0xc0, 0x3d, 0x28, 0x3, 0x25, 0xed, 0x11, - 0x8f, 0x2a, 0x1b, 0xea, 0x33, 0x50, 0xbe, 0x93, 0x6f, 0x27, - 0xde, 0xb7, 0x8c, 0xfd, 0x50, 0x1f, 0xe9, 0x5b, 0x26, 0xd8, - 0x7a, 0x52, 0x1b, 0x71, 0xe9, 0x40, 0x18, 0x12, 0x78, 0x7e, - 0xc1, 0xcf, 0xcd, 0x65, 0x6e, 0x7e, 0xb1, 0x2f, 0xf8, 0x54, - 0xf, 0xe1, 0x7d, 0x31, 0xfa, 0xe9, 0xd6, 0xc7, 0xfe, 0xd8, - 0xaf, 0xf8, 0x57, 0x46, 0x6d, 0xf3, 0xd4, 0x53, 0x4d, 0xb8, - 0xec, 0x28, 0x3, 0x97, 0x6f, 0x6, 0x68, 0xef, 0xd7, 0x4b, - 0xb5, 0x3f, 0xf6, 0xc5, 0x7f, 0xc2, 0xa2, 0x93, 0xc0, 0x7a, - 0x13, 0x8c, 0x1d, 0x26, 0xd7, 0xeb, 0xe4, 0x8c, 0xd7, 0x5a, - 0x6d, 0xf8, 0xe9, 0x4d, 0xfb, 0x31, 0xa0, 0xe, 0x22, 0x7f, - 0x86, 0xda, 0x14, 0xa7, 0x8b, 0x18, 0xe3, 0xff, 00, 0x71, - 0x14, 0x7f, 0x4a, 0xcf, 0x9b, 0xe1, 0x26, 0x89, 0x3e, 0x40, - 0x59, 0xe3, 0xc9, 0xcf, 0xc8, 0x54, 0x63, 0xff, 00, 0x1d, - 0xaf, 0x45, 0x36, 0xe4, 0x53, 0x7c, 0x83, 0x40, 0x1e, 0x62, - 0xdf, 0x5, 0xf4, 0x7c, 0xe5, 0x6e, 0xaf, 0xd7, 0xfe, 0xda, - 0x2f, 0xff, 00, 0x13, 0x51, 0xb7, 0xc1, 0xab, 0x5, 0xce, - 0xcd, 0x46, 0xf9, 0x7f, 0xe0, 0x4b, 0xfe, 0x15, 0xea, 0x1f, - 0x67, 0x3e, 0x94, 0x1b, 0x71, 0xdc, 0x54, 0xb8, 0xa7, 0xba, - 0x25, 0xc6, 0x2f, 0x74, 0x79, 0x67, 0xfc, 0x29, 0xf8, 0x86, - 0x76, 0x6a, 0xf7, 0xab, 0x4c, 0x6f, 0x84, 0x72, 0x2e, 0x76, - 0x6b, 0x77, 0x5f, 0xf0, 0x21, 0x8f, 0xeb, 0x5e, 0xa6, 0xd0, - 0xfb, 0x53, 0x7c, 0x8a, 0x9f, 0x65, 0x7, 0xbc, 0x57, 0xdc, - 0x47, 0xb2, 0xa6, 0xf7, 0x8a, 0xfb, 0x91, 0xe4, 0x92, 0xfc, - 0x2b, 0xd5, 0x23, 0xff, 00, 0x55, 0xac, 0x31, 0xff, 00, - 0x79, 0x98, 0x7f, 0x4a, 0xad, 0x27, 0xc3, 0x4f, 0x11, 0xa1, - 0xfd, 0xce, 0xa9, 0x3, 0x7f, 0xbf, 0x23, 0x8f, 0xfd, 0x94, - 0xd7, 0xb1, 0x34, 0x1e, 0xa2, 0x9a, 0x60, 0x1e, 0x95, 0xe, - 0x85, 0x27, 0xf6, 0x17, 0xdc, 0x66, 0xf0, 0xd4, 0x1e, 0xf0, - 0x5f, 0x72, 0x3c, 0x61, 0xfc, 0xd, 0xe2, 0xa8, 0x7, 0xfc, - 0x7c, 0x5b, 0x49, 0xf4, 0x77, 0x3f, 0xfb, 0x2d, 0x44, 0xfa, - 0x7, 0x8a, 0xad, 0xcf, 0xfc, 0x7b, 0x43, 0x2f, 0x19, 0xe0, - 0x39, 0xaf, 0x69, 0x68, 0x3b, 0x62, 0x9b, 0xf6, 0x70, 0x3b, - 0x62, 0xb3, 0x78, 0x3c, 0x3c, 0xb7, 0xa6, 0xbe, 0xe3, 0x29, - 0x60, 0x30, 0xb2, 0xde, 0x9a, 0xfb, 0x8f, 0x12, 0x92, 0xd7, - 0xc5, 0x31, 0x71, 0xfd, 0x8c, 0x24, 0xf7, 0x58, 0xdb, 0xfc, - 0x6a, 0x22, 0x7c, 0x46, 0xbf, 0x7b, 0x42, 0x6f, 0xc2, 0x36, - 0xaf, 0x70, 0x68, 0x6, 0x3a, 0x53, 0x3c, 0x8f, 0xad, 0x63, - 0xfd, 0x9d, 0x85, 0x7f, 0xf2, 0xed, 0x18, 0x3c, 0xab, 0x4, - 0xff, 00, 0xe5, 0xd2, 0x3c, 0x3d, 0xae, 0xf5, 0xb8, 0xfe, - 0xf6, 0x85, 0x2f, 0xe1, 0x1b, 0x7f, 0x85, 0x30, 0xea, 0x9a, - 0x8a, 0xff, 00, 0xac, 0xd1, 0x2e, 0x14, 0xff, 00, 0xd7, - 0x36, 0xff, 00, 0xa, 0xf7, 0x26, 0xb6, 0xea, 0x79, 0xa8, - 0xda, 0xd5, 0x4f, 0x51, 0x9f, 0xad, 0x43, 0xcb, 0x30, 0xaf, - 0xec, 0x19, 0xbc, 0x9f, 0x4, 0xff, 00, 0xe5, 0xda, 0xfc, - 0x4f, 0x10, 0xfe, 0xdb, 0x75, 0x27, 0xcc, 0xd2, 0xee, 0x57, - 0x1e, 0x91, 0x9f, 0xeb, 0x48, 0x7c, 0x45, 0x6a, 0xbc, 0xc9, - 0x69, 0x74, 0xbf, 0xf6, 0xcc, 0x7f, 0x8d, 0x7b, 0x4c, 0x9a, - 0x55, 0xbc, 0x9f, 0x7a, 0xde, 0x26, 0xcf, 0xf7, 0x90, 0x1a, - 0xae, 0xfe, 0x1b, 0xd3, 0xa4, 0x1f, 0x3e, 0x9f, 0x6a, 0xdf, - 0x58, 0x54, 0xff, 00, 0x4a, 0xc9, 0xe5, 0x18, 0x57, 0xd2, - 0xdf, 0x33, 0x9, 0x64, 0x58, 0x27, 0xf6, 0x5f, 0xde, 0x78, - 0xfa, 0xf8, 0x8b, 0x4d, 0x63, 0xca, 0xca, 0xbf, 0xef, 0x2a, - 0xff, 00, 0x8d, 0x4a, 0xba, 0xce, 0x9a, 0xff, 00, 0xf2, - 0xd3, 0x6f, 0xd7, 0x1f, 0xe3, 0x5e, 0xa6, 0xfe, 0x10, 0xd1, - 0xcb, 0x73, 0xa5, 0xd9, 0x8f, 0xa4, 0xa, 0x3f, 0xa5, 0x55, - 0x97, 0xc0, 0x7a, 0x2c, 0x84, 0xff, 00, 0xc4, 0xba, 0x11, - 0x9f, 0xee, 0xa0, 0x15, 0x8b, 0xc9, 0xb0, 0xfd, 0x1b, 0x30, - 0x7c, 0x3f, 0x85, 0x7b, 0x36, 0xbe, 0x67, 0x9d, 0xb, 0xed, - 0x31, 0xcf, 0x17, 0x31, 0x8f, 0xa9, 0x14, 0xef, 0x3f, 0x4e, - 0x61, 0xc5, 0xd4, 0x3f, 0xf7, 0xd0, 0xae, 0xe2, 0x4f, 0x86, - 0x7a, 0x14, 0xa0, 0x86, 0xb2, 0xc6, 0x7f, 0xba, 0xe4, 0x55, - 0x76, 0xf8, 0x53, 0xa0, 0xb7, 0x48, 0x25, 0x5f, 0xa4, 0xc6, - 0xb2, 0x79, 0x25, 0x2e, 0x93, 0x66, 0xf, 0x87, 0x28, 0xbd, - 0xaa, 0x33, 0x8f, 0xff, 00, 0x41, 0x6e, 0x97, 0x30, 0xfe, - 0xc, 0x28, 0xf2, 0x6d, 0x5b, 0xa5, 0xc4, 0x47, 0xfe, 0x6, - 0x2b, 0xa9, 0x93, 0xe1, 0x2e, 0x89, 0xd8, 0x5c, 0xa7, 0xd2, - 0x5f, 0xfe, 0xb5, 0x42, 0xdf, 0x8, 0xb4, 0x9e, 0x4a, 0x4f, - 0x7a, 0x87, 0xda, 0x45, 0xff, 00, 0xe2, 0x6a, 0x1e, 0x47, - 0x1e, 0x95, 0x1f, 0xdc, 0x8c, 0xdf, 0xd, 0xd3, 0xe9, 0x55, - 0xfd, 0xc7, 0x39, 0xf6, 0x38, 0xf, 0x49, 0x50, 0xff, 00, - 0xc0, 0x85, 0x28, 0xd3, 0xa3, 0x3d, 0x18, 0x1f, 0xca, 0xb7, - 0x24, 0xf8, 0x4f, 0x6e, 0xa3, 0xf7, 0x57, 0xd7, 0x6b, 0xf5, - 0x71, 0xfd, 0x16, 0xa0, 0x93, 0xe1, 0x85, 0xc8, 0xe2, 0x2d, - 0x52, 0x71, 0xfe, 0xf4, 0x87, 0xfc, 0x2b, 0x27, 0x91, 0xcb, - 0xec, 0xd4, 0xfc, 0xc, 0xa5, 0xc3, 0x6f, 0xec, 0xd5, 0xfb, - 0xd1, 0x92, 0xda, 0x48, 0x3d, 0xb3, 0x51, 0x9d, 0x1f, 0xfd, - 0x9f, 0xd2, 0xb4, 0xdf, 0xe1, 0xc6, 0xb5, 0x1f, 0x31, 0x6a, - 0xec, 0x7d, 0x99, 0xda, 0xa2, 0x6f, 0x4, 0x78, 0x8e, 0x23, - 0xf2, 0xde, 0xa4, 0x9f, 0x53, 0xfe, 0x26, 0xb2, 0x79, 0x25, - 0x65, 0xb4, 0xd1, 0x84, 0xb8, 0x76, 0xba, 0xda, 0xa2, 0xfc, - 0x4c, 0xff, 00, 0xec, 0x7f, 0xf6, 0x4f, 0xe5, 0x4c, 0x6d, - 0x1c, 0x7f, 0x76, 0xaf, 0x1f, 0xd, 0xf8, 0xb2, 0x21, 0xf2, - 0x84, 0x7f, 0xf8, 0x12, 0x7f, 0x8d, 0x44, 0xda, 0x57, 0x8c, - 0x10, 0xf3, 0x62, 0x8d, 0xf4, 0x68, 0xff, 00, 0xf8, 0xaa, - 0xc9, 0xe4, 0xd8, 0x9e, 0x8d, 0x7d, 0xe6, 0xf, 0x20, 0xc6, - 0x2d, 0x9a, 0xfb, 0xff, 00, 0xe0, 0x15, 0xe, 0x91, 0xfe, - 0xcf, 0xe9, 0x4c, 0x6d, 0x23, 0x8f, 0xba, 0x7f, 0x2a, 0xb4, - 0xd6, 0xde, 0x2b, 0x4e, 0xba, 0x60, 0x6c, 0x7a, 0x28, 0x3f, - 0xc8, 0xd4, 0x65, 0xfc, 0x4c, 0xa7, 0xe6, 0xd1, 0xc9, 0xc7, - 0xfd, 0x31, 0x63, 0xfc, 0x8d, 0x47, 0xf6, 0x4e, 0x2d, 0x76, - 0xfb, 0xcc, 0xde, 0x45, 0x8d, 0x5d, 0xbe, 0xf2, 0xa9, 0xd1, - 0xc0, 0xfe, 0x3, 0xf9, 0x53, 0x3f, 0xb1, 0xff, 00, 0xd9, - 0xfd, 0x2a, 0xd7, 0xdb, 0xb5, 0xa5, 0x27, 0xcd, 0xd1, 0x65, - 0x1f, 0x4b, 0x77, 0x14, 0xdf, 0xed, 0xbb, 0x88, 0x94, 0x19, - 0x74, 0xb9, 0x97, 0x3f, 0xf4, 0xcc, 0x8a, 0xc9, 0xe5, 0x98, - 0xb5, 0xf6, 0x4c, 0xde, 0x4f, 0x8e, 0x5f, 0x66, 0xe5, 0x56, - 0xd1, 0x87, 0xf7, 0x7f, 0x4a, 0x8c, 0xe8, 0xcb, 0xfd, 0xdf, - 0xd2, 0xaf, 0x1f, 0x14, 0x5b, 0xa7, 0x12, 0xda, 0x4e, 0x9f, - 0x86, 0x28, 0x1e, 0x28, 0xd3, 0xdb, 0xaa, 0x48, 0xbf, 0x5a, - 0xcd, 0xe0, 0x71, 0x6b, 0xfe, 0x5d, 0xb3, 0x7, 0x96, 0x63, - 0x56, 0xf4, 0xd9, 0x9e, 0x74, 0x55, 0xcf, 0xdc, 0x1f, 0x95, - 0x46, 0xda, 0x22, 0xff, 00, 0x70, 0x7e, 0x55, 0xb2, 0xbe, - 0x21, 0xd2, 0xdb, 0xab, 0xb2, 0xfd, 0x54, 0x9f, 0xe9, 0x4f, - 0x1a, 0xd6, 0x92, 0xff, 00, 0xf2, 0xf3, 0xb7, 0xea, 0x8d, - 0xfe, 0x15, 0x8b, 0xc3, 0x62, 0x16, 0xf0, 0x66, 0xf, 0x9, - 0x8a, 0x8e, 0xf4, 0xdf, 0xdc, 0x73, 0xef, 0xa2, 0x29, 0xfe, - 0x11, 0xf9, 0x7f, 0xf5, 0xaa, 0x36, 0xd0, 0x93, 0x1f, 0x77, - 0xf4, 0xae, 0x94, 0x6a, 0x3a, 0x5b, 0xf4, 0xbb, 0x4f, 0xc4, - 0x11, 0xfd, 0x29, 0xc2, 0xe7, 0x4d, 0x6e, 0x97, 0x70, 0xfe, - 0x2e, 0x5, 0x43, 0xa5, 0x59, 0x6f, 0x7, 0xf7, 0x19, 0x3a, - 0x15, 0xd6, 0xf4, 0xdf, 0xdc, 0xce, 0x50, 0xf8, 0x7d, 0xf, - 0xf0, 0x7e, 0x94, 0xc7, 0xf0, 0xf2, 0x7f, 0x73, 0xf4, 0x15, - 0xd8, 0x66, 0xc5, 0xba, 0x5d, 0x40, 0x7e, 0x92, 0xad, 0x2f, - 0xd9, 0xed, 0x9f, 0xa4, 0xb1, 0x9f, 0xa3, 0x8a, 0xcd, 0xc6, - 0x6b, 0x78, 0xb3, 0x37, 0x9, 0xad, 0xe0, 0xfe, 0xe6, 0x71, - 0x4d, 0xe1, 0xc8, 0xcf, 0xf0, 0xff, 00, 0xe3, 0xa2, 0xa3, - 0x6f, 0xd, 0xc6, 0x3f, 0x80, 0x7f, 0xdf, 0x35, 0xdd, 0xae, - 0x9b, 0x1b, 0x74, 0x20, 0xfd, 0xd, 0x7, 0x48, 0x7, 0xf8, - 0x4d, 0x45, 0xed, 0xba, 0x33, 0xbd, 0xb7, 0x47, 0x9f, 0xb7, - 0x86, 0xe3, 0x3d, 0x10, 0xf, 0xc2, 0xa2, 0x6f, 0xc, 0x46, - 0x7f, 0x84, 0x7e, 0x5f, 0xfd, 0x6a, 0xf4, 0x13, 0xa4, 0x8f, - 0xee, 0x9a, 0x6b, 0x69, 0x23, 0xfb, 0xb4, 0xaf, 0x1e, 0xc2, - 0xe6, 0x8f, 0x63, 0xce, 0xdb, 0xc2, 0xb1, 0x9f, 0xe1, 0xff, - 00, 0x3f, 0x95, 0x42, 0xfe, 0x13, 0x8f, 0xfb, 0xbf, 0xa0, - 0xff, 00, 0xa, 0xf4, 0x83, 0xa4, 0xff, 00, 0xb2, 0x6a, - 0x33, 0xa4, 0xff, 00, 0xb2, 0x68, 0xbc, 0x42, 0xf1, 0x3c, - 0xd9, 0xbc, 0x24, 0x9f, 0xdc, 0x3f, 0x90, 0xff, 00, 0xa, - 0x8d, 0xbc, 0x24, 0x9f, 0xdc, 0xff, 00, 0xc7, 0x6b, 0xd2, - 0xce, 0x91, 0xfe, 0xc9, 0xa8, 0xce, 0x91, 0xd7, 0xe4, 0x34, - 0x7b, 0xa1, 0x68, 0x1e, 0x66, 0xde, 0x12, 0x4f, 0xee, 0x7e, - 0x3b, 0x6a, 0x17, 0xf0, 0x8a, 0x9e, 0x88, 0x3f, 0x2f, 0xfe, - 0xb5, 0x7a, 0x87, 0xf6, 0x47, 0xfb, 0x26, 0x98, 0x74, 0x8c, - 0x7f, 0x9, 0xa2, 0xd1, 0xb, 0x40, 0xf2, 0xc6, 0xf0, 0x70, - 0xfe, 0xe8, 0xfc, 0xbf, 0xfa, 0xd5, 0xb, 0xf8, 0x38, 0x7a, - 0x7e, 0x9f, 0xfd, 0x6a, 0xf5, 0x63, 0xa4, 0x75, 0xf9, 0xd, - 0x33, 0xfb, 0x1c, 0x7f, 0x76, 0x8e, 0x48, 0x93, 0xc9, 0x6, - 0x79, 0x33, 0xf8, 0x40, 0x7f, 0x70, 0x9f, 0xf8, 0xf, 0xff, - 00, 0x5a, 0xa1, 0x6f, 0x8, 0x2f, 0xfc, 0xf3, 0x3f, 0xf7, - 0xc8, 0xaf, 0x5b, 0x6d, 0x18, 0x63, 0xee, 0x7f, 0x2a, 0x8c, - 0xe8, 0x83, 0xba, 0x7f, 0x2a, 0x9e, 0x48, 0x87, 0xb2, 0x81, - 0xe4, 0x6d, 0xe1, 0x1, 0xff, 00, 0x3c, 0xbf, 0x34, 0xa8, - 0x5b, 0xc1, 0xc0, 0xff, 00, 0xcb, 0x1f, 0xfc, 0x77, 0xff, - 00, 0xad, 0x5e, 0xc0, 0xda, 0x22, 0xe3, 0xee, 0x1a, 0x88, - 0xe8, 0x69, 0xff, 00, 0x3c, 0xe8, 0xf6, 0x71, 0x17, 0xb2, - 0x81, 0xe3, 0xd2, 0x78, 0x30, 0x1f, 0xf9, 0x66, 0x3f, 0xef, - 0x9f, 0xfe, 0xb5, 0x42, 0xfe, 0xc, 0x1f, 0xf3, 0xcc, 0x7e, - 0x5f, 0xfd, 0x6a, 0xf6, 0x46, 0xd0, 0x97, 0xfb, 0x94, 0xc6, - 0xd0, 0x13, 0x1f, 0xea, 0xff, 00, 0x95, 0x2f, 0x63, 0x2, - 0x7d, 0x84, 0x4f, 0x18, 0x6f, 0x6, 0xa8, 0xff, 00, 0x96, - 0x67, 0xf2, 0xff, 00, 0xeb, 0x54, 0xf, 0xe0, 0xe5, 0xff, - 00, 0x9e, 0x47, 0xfe, 0xf9, 0xaf, 0x69, 0x6f, 0xf, 0x46, - 0x3f, 0xe5, 0x97, 0xe8, 0x2a, 0x33, 0xe1, 0xd8, 0xcf, 0xfc, - 0xb3, 0xc7, 0xe0, 0x2a, 0x7d, 0x82, 0x17, 0xd5, 0xe2, 0x78, - 0xa3, 0x78, 0x35, 0x48, 0xff, 00, 0x56, 0xdf, 0xf7, 0xc8, - 0xa8, 0x9f, 0xc1, 0x4b, 0xfd, 0xc6, 0xff, 00, 0xbe, 0x7f, - 0xfa, 0xd5, 0xed, 0x6d, 0xe1, 0xa8, 0xcf, 0xfc, 0xb3, 0x1f, - 0x95, 0x44, 0xde, 0x19, 0x8f, 0xb4, 0x7f, 0x95, 0x2f, 0x60, - 0x89, 0xfa, 0xb2, 0x3c, 0x49, 0xbc, 0x14, 0x7, 0xf0, 0x1f, - 0xfb, 0xe7, 0xff, 00, 0xad, 0x50, 0xbf, 0x82, 0xff, 00, - 0xd8, 0xfd, 0x3f, 0xfa, 0xd5, 0xed, 0xe7, 0xc3, 0xa, 0x7f, - 0xe5, 0x99, 0xfc, 0xea, 0x36, 0xf0, 0xb2, 0x7f, 0xcf, 0x22, - 0x6a, 0x7e, 0xae, 0x89, 0xfa, 0xac, 0x4f, 0xe, 0x7f, 0x6, - 0xf, 0xee, 0xfe, 0x9f, 0xfd, 0x6a, 0x82, 0x4f, 0x7, 0xf, - 0xee, 0x9f, 0xc8, 0x7f, 0x85, 0x7b, 0x9b, 0x78, 0x56, 0x3f, - 0xf9, 0xe6, 0x7f, 0x4a, 0x85, 0xbc, 0x26, 0x87, 0xfe, 0x59, - 0x1f, 0xc8, 0x52, 0xfa, 0xba, 0x27, 0xea, 0xa8, 0xf0, 0xc6, - 0xf0, 0x69, 0xfe, 0xe1, 0xfc, 0xbf, 0xfa, 0xd5, 0x13, 0x78, - 0x35, 0x87, 0xfc, 0xb3, 0x3f, 0xf7, 0xcf, 0xff, 00, 0x5a, - 0xbd, 0xc9, 0xbc, 0x24, 0xbf, 0xf3, 0xcc, 0xfe, 0x55, 0xb, - 0xf8, 0x45, 0x7f, 0xe7, 0x9f, 0xe9, 0x53, 0xf5, 0x72, 0x3e, - 0xa8, 0x78, 0x73, 0xf8, 0x39, 0xbf, 0xb8, 0x7f, 0xef, 0x9f, - 0xfe, 0xb5, 0x54, 0xb8, 0xf0, 0x9b, 0xaa, 0x9f, 0x95, 0x87, - 0xe1, 0xff, 00, 0xd6, 0xaf, 0x77, 0x6f, 0x8, 0x81, 0xff, - 00, 0x2c, 0xea, 0xa5, 0xc7, 0x84, 0xb2, 0x8, 0xf2, 0x89, - 0xfc, 0x6a, 0x7e, 0xae, 0x2f, 0xaa, 0x9e, 0x9, 0x37, 0x87, - 0x24, 0x8f, 0x9d, 0xad, 0xf9, 0x7f, 0xf5, 0xaa, 0x84, 0xda, - 0x4c, 0x91, 0xf5, 0x4f, 0xd2, 0xbd, 0xca, 0xef, 0xc1, 0xf8, - 0x7, 0xf7, 0x44, 0xa, 0xc2, 0xbe, 0xf0, 0x89, 0x19, 0xcc, - 0x67, 0xda, 0xb0, 0x95, 0x16, 0x8e, 0x59, 0xd0, 0x94, 0x4f, - 0x1f, 0x92, 0xc4, 0x8e, 0x30, 0x45, 0x40, 0xd6, 0x15, 0xe8, - 0xd7, 0xfe, 0x16, 0x61, 0x9c, 0x46, 0xd9, 0xac, 0x3b, 0x9d, - 0x15, 0xa1, 0xfe, 0x6, 0xc5, 0x72, 0x3a, 0x92, 0x83, 0xb3, - 0x38, 0xa5, 0x56, 0x54, 0xdd, 0x99, 0xc8, 0x35, 0x87, 0xb5, - 0x34, 0xd9, 0x7b, 0x57, 0x4c, 0xda, 0x7f, 0x1d, 0xd, 0x46, - 0xda, 0x7f, 0xa0, 0xa6, 0xb1, 0x3, 0x58, 0xa3, 0x99, 0x7b, - 0x2c, 0x9e, 0x5, 0x47, 0x1e, 0x98, 0xf2, 0xc8, 0xa9, 0x1a, - 0x33, 0xc8, 0xc7, 0x1, 0x54, 0x64, 0x93, 0x5d, 0xe6, 0x87, - 0xe0, 0x8d, 0x43, 0xc4, 0x57, 0xb, 0x15, 0x9d, 0xac, 0x92, - 0x2e, 0x40, 0x69, 0x71, 0xf2, 0xa8, 0xf5, 0x24, 0xf1, 0x5e, - 0xed, 0xf0, 0xd7, 0xe0, 0xd, 0xb5, 0xb5, 0xc4, 0x57, 0x2f, - 0x6c, 0xd7, 0xb7, 0x63, 0xef, 0x4b, 0x2e, 0xc, 0x49, 0xf4, - 0x4, 0x75, 0xfc, 0xeb, 0xdf, 0xcb, 0xf0, 0x78, 0x8c, 0x6b, - 0xbc, 0x15, 0xa3, 0xdc, 0xfa, 0x7c, 0xb3, 0x2f, 0xc5, 0x66, - 0x2d, 0x38, 0x2b, 0x47, 0xbb, 0xfd, 0x3b, 0x9e, 0x5f, 0xf0, - 0xc3, 0xe0, 0x1d, 0xcf, 0x88, 0x24, 0x86, 0xf3, 0x57, 0x86, - 0x54, 0x8c, 0x30, 0x64, 0xb4, 0x9, 0xf3, 0xbe, 0x3f, 0xbc, - 0xa, 0xe3, 0x15, 0xf6, 0x47, 0x82, 0x3c, 0x1, 0x67, 0xe1, - 0xdb, 0x58, 0x8b, 0x41, 0x18, 0x70, 0x3e, 0x58, 0x95, 00, - 0x48, 0xfe, 0x83, 0x15, 0xa9, 0xe1, 0xef, 0xa, 0xda, 0x68, - 0x91, 0xa9, 0x44, 0xdf, 0x3e, 0x39, 0x91, 0xb0, 0x71, 0xf4, - 0xe3, 0x81, 0x5d, 0x4, 0x69, 0x9e, 0x6b, 0xf4, 0x5c, 0x2e, - 0x12, 0x9e, 0x16, 0x3c, 0xb0, 0x5a, 0xf7, 0x3f, 0x58, 0xc1, - 0x60, 0x69, 0x60, 0xa1, 0xcb, 0xd, 0x5f, 0x57, 0xd5, 0x92, - 0xc4, 0x9e, 0xd5, 0x7a, 0x24, 0x35, 0x4, 0x51, 0xd5, 0xf8, - 0x53, 0xda, 0xbb, 0x4f, 0x40, 0x9e, 0x14, 0xe2, 0xae, 0xc2, - 0xbd, 0x38, 0xa8, 0x61, 0x4c, 0x1, 0xc5, 0x5e, 0x86, 0x3e, - 0x9c, 0x50, 0x5, 0x88, 0x17, 0xda, 0xaf, 0x42, 0xbc, 0x55, - 0x78, 0x53, 0xda, 0xaf, 0x44, 0xa2, 0x80, 0x2c, 0xc0, 0xbc, - 0x8a, 0xbd, 0x1a, 0x73, 0x55, 0xa1, 0x51, 0x9e, 0x95, 0x7a, - 0x25, 0xa0, 0x9, 0xa2, 0x15, 0x65, 0x14, 0x11, 0x50, 0xa2, - 0xd5, 0x94, 0x1d, 0x28, 0x2, 0x54, 0x1d, 0x2a, 0x75, 0xed, - 0x51, 0xa2, 0xd4, 0x8b, 0xfc, 0xa8, 0x2, 0x45, 0xa7, 0x1, - 0x4d, 0x5e, 0x31, 0x52, 0x1, 0x9a, 00, 0x55, 0xa5, 0xa0, - 0xc, 0x51, 0x40, 00, 0xe4, 0xd3, 0xe9, 0xab, 0xd6, 0x9d, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x11, 0x6d, 0xa4, 0xa7, 0xd2, 0x6d, 0xa0, - 0x6, 0x6d, 0xa6, 0x32, 0xf3, 0x52, 0x9e, 0xd, 0x37, 0x6f, - 0x34, 0x1, 0x11, 0x5a, 0x61, 0x5a, 0x9d, 0x87, 0xbd, 0x37, - 0x14, 0x1, 0x5c, 0xa0, 0x34, 0xd6, 0x8c, 0x55, 0x82, 0xb8, - 0x34, 0xc2, 0xb4, 0x1, 0x59, 0xa3, 00, 0x9a, 0x61, 0x8c, - 0x1a, 0xb6, 0x50, 0x62, 0x9b, 0xb0, 0x50, 0x5, 0x33, 0x10, - 0x1d, 0xa9, 0x8d, 0x17, 0xb5, 0x5c, 0x31, 0x83, 0x4c, 0x64, - 0x19, 0xe9, 0x40, 0x15, 0x3c, 0x9f, 0x63, 0x4c, 0x30, 0x8c, - 0xf2, 0xb5, 0x77, 0xcb, 0xf6, 0xa6, 0xb4, 0x54, 0x1, 0x49, - 0xa2, 0x7, 0xb5, 0x33, 0xc9, 0xab, 0xde, 0x5d, 0x27, 0x97, - 0x40, 0x14, 0x5a, 0x1, 0xe9, 0x4d, 0xf2, 0x7, 0xa5, 0x5f, - 0x31, 0x53, 0x4c, 0x42, 0x80, 0x28, 0x79, 0x34, 0x86, 0xdc, - 0x7a, 0x55, 0xff, 00, 0x26, 0x90, 0xc2, 0x31, 0x40, 0x19, - 0xe6, 0x1, 0xe9, 0x4c, 0x30, 0xf3, 0x5a, 0x6, 0x1a, 0x4f, - 0x27, 0xda, 0x80, 0x33, 0xcd, 0xbf, 0xb5, 0x31, 0xa0, 0x19, - 0xe9, 0x5a, 0x46, 0xc, 0xf6, 0xa6, 0x18, 0x28, 0x3, 0x3b, - 0xc8, 0xf6, 0xa4, 0xf2, 0x33, 0xd8, 0xd6, 0x8f, 0x93, 0xed, - 0x48, 0x60, 0xf6, 0xa0, 0xc, 0xc6, 0xb7, 0x19, 0xa4, 0x30, - 0x7b, 0x56, 0x8f, 0x91, 0x49, 0xe4, 0xe2, 0x80, 0x33, 0x7e, - 0xcf, 0xed, 0x48, 0xd6, 0xe0, 0x76, 0xad, 0x13, 0xf, 0xb5, - 0x23, 0x43, 0x40, 0x19, 0xbe, 0x47, 0xb6, 0x29, 0x3e, 0xcf, - 0x5a, 0x1e, 0x4d, 0x1e, 0x4d, 00, 0x66, 0x9b, 0x51, 0xe9, - 0x48, 0x6d, 0x87, 0xa5, 0x69, 0x79, 0x14, 0x9e, 0x48, 0xa0, - 0xc, 0xd3, 0x6f, 0xed, 0x4c, 0x36, 0xc3, 0x15, 0xa9, 0xe4, - 0x67, 0xb5, 0x30, 0xc0, 0x3d, 0x28, 0x3, 0x33, 0xec, 0xe3, - 0x3d, 0x29, 0x1a, 0xdf, 0xda, 0xb4, 0xcc, 0x22, 0x98, 0x60, - 0xa0, 0xc, 0xc3, 0x6b, 0x93, 0xd2, 0x9a, 0x6d, 0xc0, 0xed, - 0x9a, 0xd3, 0xf2, 0x33, 0xda, 0x90, 0xc1, 0x40, 0x19, 0x46, - 0xdb, 0x3d, 0xa8, 0xfb, 0x2f, 0xb5, 0x69, 0x79, 0x34, 0x9e, - 0x41, 0xf4, 0xa0, 0xc, 0xa6, 0xb6, 0x1e, 0x94, 0xdf, 0xb3, - 0x7b, 0x56, 0xa3, 0x5b, 0xf3, 0x49, 0xe4, 0xfb, 0x50, 0x6, - 0x53, 0x5b, 0x71, 0xd2, 0x99, 0xf6, 0x60, 0x3b, 0x56, 0xa9, - 0xb7, 0x27, 0xb5, 0x27, 0xd9, 0xf1, 0x40, 0x19, 0x5f, 0x67, - 0x1e, 0x86, 0x93, 0xec, 0xb9, 0xec, 0x6b, 0x54, 0xc3, 0x4d, - 0x30, 0x7b, 0x50, 0x6, 0x51, 0xb4, 0x3, 0xb7, 0xeb, 0x4d, - 0x36, 0xc3, 0xd2, 0xb5, 0x3e, 0xcf, 0xed, 0x48, 0x60, 0x1e, - 0x94, 0x1, 0x97, 0xf6, 0x6a, 0x43, 0x6b, 0x8a, 0xd4, 0xf2, - 0x3d, 0xa9, 0xd, 0xb8, 0xc7, 0x4a, 00, 0xc9, 0x36, 0xfc, - 0xf4, 0xa6, 0xfd, 0x9f, 0xda, 0xb5, 0xd, 0xb8, 0xa3, 0xec, - 0xfe, 0xd4, 0x1, 0x90, 0xd6, 0xde, 0xd4, 0xdf, 0xb3, 0xfb, - 0x66, 0xb5, 0x4d, 0xb0, 0x26, 0x93, 0xec, 0xe0, 0x76, 0xa0, - 0xc, 0x96, 0xb6, 0xf6, 0x34, 0xd3, 0x6c, 0x2b, 0x55, 0xad, - 0xf2, 0x69, 0xbf, 0x66, 0xf5, 0xa0, 0xc, 0x96, 0xb6, 0x50, - 0x3a, 0x53, 0x7e, 0xce, 0xd, 0x6a, 0xb5, 0xbf, 0x34, 0xd3, - 0x6f, 0xed, 0x40, 0x19, 0x66, 0xd8, 0x7a, 0x53, 0x5a, 0xdc, - 0xe, 0xd5, 0xa8, 0xd6, 0xe7, 0xd2, 0x98, 0x6d, 0xb3, 0xda, - 0x80, 0x32, 0xcd, 0xb0, 0x27, 0x3b, 0x73, 0x4c, 0x36, 0x28, - 0x7a, 0xa0, 0x3f, 0x51, 0x5a, 0xa6, 00, 0x38, 0xc5, 0x1f, - 0x67, 0xff, 00, 0x38, 0xa0, 0xc, 0x86, 0xd3, 0xa1, 0xef, - 0x12, 0xff, 00, 0xdf, 0x22, 0xab, 0x49, 0xa2, 0x5a, 0x4a, - 0x30, 0xf6, 0xe8, 0xd5, 0xbe, 0x6d, 0xf0, 0x2a, 0x3f, 0x22, - 0x80, 0x39, 0x99, 0x7c, 0x25, 0xa6, 0x4c, 0x7e, 0x7b, 0x35, - 0x3f, 0xf0, 0x26, 0x1f, 0xd6, 0xaa, 0xcb, 0xe0, 0xd, 0x12, - 0x5f, 0xbd, 0x62, 0xf, 0xfd, 0xb4, 0x71, 0xfd, 0x6b, 0xaf, - 0xf2, 0x28, 0x36, 0xa2, 0x80, 0x38, 0xb3, 0xf0, 0xe7, 0x41, - 0xff, 00, 0x9f, 0x1, 0xff, 00, 0x7f, 0x5f, 0xff, 00, - 0x8a, 0xa6, 0xff, 00, 0xc2, 0xbb, 0xd0, 0x41, 0xff, 00, - 0x8f, 0x1, 0xff, 00, 0x7f, 0x64, 0xff, 00, 0xe2, 0xab, - 0xb3, 0x30, 0x1, 0xd2, 0x98, 0x6d, 0xf3, 0xd3, 0x8a, 00, - 0xe3, 0xcf, 0xc3, 0xcd, 0xb, 0x1c, 0x58, 0xe3, 0xe9, 0x2b, - 0xff, 00, 0xf1, 0x55, 0x1b, 0x7c, 0x3c, 0xd1, 0x7b, 0x5b, - 0x3a, 0xfd, 0x26, 0x6f, 0xf1, 0xae, 0xd3, 0xec, 0xc7, 0xeb, - 0x4c, 0x30, 0x73, 0xd2, 0x81, 0x34, 0x9e, 0xe7, 0x15, 0xff, - 00, 0xa, 0xeb, 0x49, 0xec, 0x93, 0x8f, 0xa4, 0xad, 0x4c, - 0x3f, 0xf, 0x6c, 0x13, 0x98, 0xe5, 0xb8, 0x4f, 0xac, 0x99, - 0xae, 0xd8, 0xdb, 0xfb, 0x52, 0x1b, 0x7f, 0x5a, 0x87, 0x8, - 0xbd, 0xd1, 0x2e, 0x9c, 0x1e, 0xe9, 0x33, 0x88, 0x3e, 0x6, - 0xa, 0x3f, 0x77, 0x7f, 0x2a, 0x7d, 0x50, 0x35, 0x46, 0x7c, - 0x1d, 0x7c, 0xa3, 0x11, 0xeb, 0x2c, 0xbf, 0x5b, 0x65, 0x3f, - 0xd6, 0xbb, 0x8f, 0x22, 0x9a, 0x61, 0xf6, 0xac, 0x9e, 0x1e, - 0x8b, 0xde, 0xb, 0xee, 0x30, 0x96, 0x17, 0xf, 0x2f, 0x8a, - 0x9a, 0x7f, 0x24, 0x70, 0x4f, 0xe1, 0x1d, 0x61, 0x49, 0xdb, - 0xac, 0x86, 0xfa, 0xdb, 0x28, 0xfe, 0xb5, 0x56, 0x5f, 0xc, - 0x78, 0x81, 0x4f, 0xcb, 0xa8, 0xab, 0x7d, 0x62, 0x41, 0x5e, - 0x88, 0x60, 0xf6, 0xa4, 0xf2, 00, 0xed, 0x51, 0xf5, 0x4c, - 0x3f, 0xfc, 0xfb, 0x5f, 0x71, 0x1f, 0x51, 0xc2, 0xff, 00, - 0xcf, 0xa8, 0xfd, 0xc8, 0xf3, 0x29, 0x7c, 0x3d, 0xe2, 0x85, - 0xfb, 0xb3, 0xc6, 0xdf, 0x5d, 0x83, 0xfa, 0x54, 0x47, 0x46, - 0xf1, 0x52, 0x7f, 0xc, 0x4d, 0xf8, 0xad, 0x7a, 0x8f, 0x92, - 0x3d, 0x29, 0x86, 0xe, 0x7d, 0xa8, 0xfa, 0xa6, 0x1f, 0xfe, - 0x7d, 0xaf, 0xb8, 0x4f, 0x3, 0x85, 0x7f, 0xf2, 0xea, 0x3f, - 0x72, 0x3c, 0xb8, 0xe9, 0xfe, 0x28, 0x53, 0xff, 00, 0x1e, - 0xa8, 0xdf, 0x8a, 0xff, 00, 0x8d, 0x21, 0xb7, 0xf1, 0x22, - 0x2, 0x5f, 0x4e, 0x52, 0x3d, 0x41, 0x1f, 0xe3, 0x5e, 0xa2, - 0x6d, 0xe9, 0x3c, 0x9a, 0x87, 0x81, 0xc3, 0x3f, 0xf9, 0x76, - 0x8c, 0xde, 0x5b, 0x83, 0x7f, 0xf2, 0xe9, 0x1e, 0x58, 0xd3, - 0xeb, 0x10, 0x9c, 0x49, 0xa6, 0x8c, 0xff, 00, 0xbc, 0x5, - 0x42, 0xda, 0xe5, 0xc4, 0x5f, 0xeb, 0x34, 0xde, 0x9c, 0x1f, - 0xde, 0xe3, 0xfa, 0x57, 0xac, 0x18, 0x29, 0xad, 0x7, 0xb5, - 0x64, 0xf2, 0xdc, 0x2b, 0xfb, 0x6, 0x32, 0xca, 0x30, 0x52, - 0xff, 00, 0x97, 0x67, 0x92, 0x8f, 0x15, 0x45, 0xd1, 0xec, - 0xa, 0xff, 00, 0xdb, 0x52, 0x7f, 0xa5, 0x4c, 0xbe, 0x25, - 0xb1, 0x3f, 0x7a, 0x16, 0x5f, 0xc4, 0x9a, 0xf5, 0x6, 0xb7, - 0x56, 0x18, 0x2a, 0x18, 0x7a, 0x11, 0x50, 0x3e, 0x93, 0x6d, - 0x27, 0xde, 0xb7, 0x8c, 0xfd, 0x56, 0xb1, 0x79, 0x4e, 0x15, - 0xf4, 0xfc, 0x4c, 0x25, 0x91, 0xe0, 0xa5, 0xf6, 0x5a, 0xf9, - 0x9e, 0x74, 0xbe, 0x20, 0xd2, 0x9b, 0xef, 0x19, 0x13, 0xe8, - 0xa4, 0xd3, 0xbf, 0xb6, 0x74, 0x86, 0xff, 00, 0x96, 0x8c, - 0x3f, 0xe0, 0x2d, 0x5d, 0xdb, 0xf8, 0x6f, 0x4f, 0x7c, 0xee, - 0xb2, 0x85, 0x81, 0xf5, 0x4a, 0x80, 0xf8, 0x4f, 0x49, 0x3d, - 0x74, 0xeb, 0x7f, 0xc1, 0x31, 0x59, 0x3c, 0x9b, 0xd, 0xd1, - 0xb3, 0x7, 0xc3, 0xf8, 0x47, 0xd5, 0xfd, 0xe7, 0x17, 0xfd, - 0xa9, 0xa4, 0x1f, 0xf9, 0x6f, 0xfa, 0x35, 0x3b, 0xfb, 0x43, - 0x48, 0x6f, 0xf9, 0x79, 0x51, 0xf5, 0xdd, 0x5d, 0x6b, 0xf8, - 0x33, 0x47, 0x6e, 0xba, 0x7c, 0x5f, 0x86, 0x47, 0xf5, 0xa8, - 0x9b, 0xc0, 0xba, 0x33, 0x75, 0xb1, 0x3, 0xe9, 0x23, 0x8f, - 0xeb, 0x50, 0xf2, 0x4a, 0x1d, 0x24, 0xff, 00, 0x3, 0x37, - 0xc3, 0xb8, 0x67, 0xb4, 0xa5, 0xf8, 0x7f, 0x91, 0xcd, 0x2c, - 0x9a, 0x74, 0xa7, 0xb, 0x32, 0x93, 0xf8, 0xd4, 0x89, 0x69, - 0x6a, 0xfd, 0x18, 0x1f, 0xce, 0xb6, 0x24, 0xf8, 0x7f, 0xa4, - 0xb7, 0xdd, 0x80, 0xa7, 0xd1, 0xd8, 0xff, 00, 0x5a, 0xad, - 0x27, 0xc3, 0x9b, 0x6, 0xfb, 0xac, 0xe9, 0xf9, 0x9f, 0xeb, - 0x59, 0x3c, 0x8e, 0x9f, 0xd9, 0x9b, 0x31, 0x97, 0xe, 0x53, - 0xfb, 0x35, 0x1f, 0xdc, 0x55, 0x3a, 0x4c, 0x6c, 0x32, 0x17, - 0x23, 0xeb, 0x4d, 0x3a, 0x3a, 0x7f, 0x77, 0xf5, 0xa9, 0x5f, - 0xe1, 0xad, 0xb8, 0x39, 0x4b, 0xb9, 0x13, 0xd8, 0x28, 0x3f, - 0xd6, 0x9b, 0xff, 00, 0xa, 0xf1, 0x90, 0xd, 0x9a, 0x94, - 0xab, 0xff, 00, 0x1, 0xff, 00, 0xeb, 0xd6, 0x2f, 0x23, - 0x7d, 0x2a, 0x7e, 0x6, 0xf, 0x86, 0xdf, 0xd9, 0xab, 0xf8, - 0x7f, 0xc1, 0x21, 0xfe, 0xc6, 0x43, 0xfc, 0x3f, 0xad, 0x31, - 0xb4, 0x55, 0xfe, 0xef, 0xeb, 0x56, 0x8f, 0x82, 0x2f, 0x14, - 0xfc, 0x9a, 0xbc, 0x80, 0x7f, 0xbb, 0xff, 00, 0xd7, 0xa0, - 0xf8, 0x43, 0x55, 0x4f, 0xbb, 0xac, 0xb9, 0xf6, 0x2a, 0x7f, - 0xc6, 0xb2, 0x79, 0x25, 0x6e, 0x93, 0x5f, 0x89, 0x83, 0xe1, - 0xda, 0xeb, 0x6a, 0x88, 0xa2, 0xda, 0x2a, 0xff, 00, 0x77, - 0xf5, 0xa6, 0x9d, 0x15, 0x7f, 0xb9, 0xfa, 0xd5, 0xb9, 0x3c, - 0x39, 0xaf, 0x46, 0x4e, 0xcd, 0x40, 0xb8, 0x1d, 0xe, 0xd1, - 0xfd, 0x4d, 0x40, 0xda, 0x3f, 0x89, 0x94, 0xfc, 0xb2, 0xee, - 0xfc, 0x23, 0xfe, 0xb5, 0x2f, 0x25, 0xc4, 0x2f, 0xb4, 0x8c, - 0xdf, 0xf, 0xe2, 0x96, 0xd2, 0x5f, 0x89, 0x1, 0xd1, 0x57, - 0xfb, 0x9f, 0xad, 0x31, 0xb4, 0x55, 0xc7, 0xdc, 0xfd, 0x6a, - 0x63, 0x67, 0xe2, 0x98, 0xcf, 0xcd, 0x8, 0x7f, 0xc6, 0x2a, - 0x43, 0x2e, 0xbf, 0x11, 0x3b, 0xec, 0x4b, 0x7f, 0xdf, 0x3f, - 0xd2, 0xb2, 0x79, 0x46, 0x29, 0x6d, 0x63, 0x27, 0x91, 0x63, - 0x16, 0xd6, 0x7f, 0x32, 0xf, 0xec, 0x55, 0xfe, 0xe7, 0xeb, - 0x50, 0xcb, 0xa2, 0x23, 0xf, 0xb9, 0xfa, 0xd5, 0xc3, 0xaa, - 0x6a, 0xb1, 0xf, 0x9f, 0x4a, 0x76, 0x1f, 0x43, 0xfd, 0x5, - 0x30, 0xeb, 0xf7, 0x9d, 0x1b, 0x48, 0x94, 0x7e, 0xd, 0xfe, - 0x15, 0x9b, 0xca, 0xf1, 0x6b, 0xec, 0xfe, 0x26, 0x2f, 0x26, - 0xc7, 0x2d, 0xa2, 0xbe, 0xf3, 0x26, 0x5f, 0xf, 0x44, 0x41, - 0xcc, 0x79, 0xfa, 0x93, 0x59, 0xb7, 0x5e, 0x15, 0x81, 0xf3, - 0xfb, 0xaf, 0xd4, 0xd7, 0x46, 0xda, 0xd5, 0xd3, 0xf0, 0x34, - 0xa9, 0x9, 0xfa, 0x37, 0xf8, 0x53, 0x3c, 0xdd, 0x52, 0xf1, - 0xb1, 0x16, 0x99, 0x22, 0x7d, 0x54, 0x8f, 0xe7, 0x42, 0xca, - 0xb1, 0x52, 0xd1, 0xc7, 0xf1, 0x1a, 0xc9, 0x71, 0xb3, 0xd1, - 0xc3, 0xf1, 0x47, 0x9e, 0x6a, 0x9e, 0x10, 0x8d, 0x57, 0xfd, - 0x58, 0xf6, 0xf9, 0xba, 0xfe, 0xb5, 0xc6, 0xea, 0xbe, 0x13, - 0x56, 0x62, 0x16, 0x3c, 0x92, 0x78, 0xe7, 0xff, 00, 0xaf, - 0x5e, 0xee, 0xbe, 0x13, 0xd6, 0xef, 0x48, 0xf3, 0x61, 0x11, - 0x46, 0x79, 0xc9, 0x28, 0x71, 0xfa, 0xe6, 0xb4, 0xad, 0xbe, - 0x19, 0x28, 0x6c, 0xcb, 0x77, 0x9e, 0xe4, 0x2a, 0x63, 0xfa, - 0xd4, 0xbe, 0x1c, 0xa9, 0x55, 0xfe, 0xf2, 0x69, 0x21, 0x3e, - 0x13, 0xab, 0x5d, 0xfe, 0xf2, 0xa2, 0x8a, 0xf2, 0x57, 0x67, - 0xcc, 0x71, 0x7c, 0x2e, 0xd4, 0x6e, 0xa4, 0x4, 0x42, 0xb0, - 0xc6, 0x7f, 0x89, 0x9c, 0x1f, 0xd3, 0x35, 0xe8, 0x7e, 0x14, - 0xf8, 0x9, 0x67, 0x7b, 0x16, 0xe9, 0x20, 0xfb, 0x71, 0x4, - 0x6e, 0x91, 0xdc, 0xc6, 0x7, 0xd0, 0x6, 0xaf, 0x79, 0xb0, - 0xf0, 0x6e, 0x99, 0x62, 0x14, 0x8b, 0x65, 0x79, 0x17, 0xf8, - 0xdc, 0x93, 0xfa, 0x13, 0x5b, 0x91, 0x40, 0x10, 00, 0xa3, - 00, 0x74, 0x2, 0xbd, 0x9c, 0x27, 0xf, 0xe0, 0xb0, 0x8f, - 0x99, 0xae, 0x67, 0xe7, 0xaf, 0xe1, 0xb1, 0xef, 0xe0, 0x38, - 0x5f, 0x2f, 0xc1, 0x3e, 0x67, 0x1e, 0x77, 0xfd, 0xed, 0x7f, - 0xd, 0x8e, 0x33, 0xc3, 0xff, 00, 0xb, 0xf4, 0x9d, 0x1e, - 0xce, 0x38, 0x4c, 0x26, 0x5d, 0xa3, 00, 0x2, 0x54, 0x7f, - 0x3c, 0x9f, 0xce, 0xbb, 0xb, 0x6b, 0x28, 0xed, 0xa2, 0x58, - 0xe3, 0x8c, 0x22, 0x2f, 00, 0xa, 0xb2, 0x90, 0xfb, 0x54, - 0xe9, 0xf, 0x3d, 0x2b, 0xe8, 0xd4, 0x54, 0x52, 0x4b, 0x63, - 0xeb, 0x23, 0x15, 0x4, 0xa3, 0x15, 0x64, 0x86, 0x45, 0x17, - 0xb5, 0x58, 0x8a, 0x3a, 0x91, 0x22, 0xab, 0x11, 0x43, 0xed, - 0x54, 0x50, 0x45, 0x15, 0x5f, 0x86, 0x3e, 0x3a, 0x53, 0x22, - 0x87, 0xa5, 0x5d, 0x86, 0x2e, 0x94, 0x1, 0x24, 0x31, 0x55, - 0xe8, 0x63, 0xa8, 0xe1, 0x8e, 0xae, 0xc5, 0x1f, 0x4a, 00, - 0x92, 0x24, 0xe2, 0xae, 0xc3, 0x1f, 0x35, 0x1c, 0x68, 0x6a, - 0xe4, 0x28, 0x7a, 0xd0, 0x4, 0xb0, 0xc7, 0xcd, 0x5c, 0x89, - 0x5, 0x45, 0x12, 0x74, 0xab, 0x71, 0xa9, 0xa0, 0x7, 0xaa, - 0x8a, 0x9d, 0x13, 0x8a, 0x6a, 0xa, 0x99, 0x46, 0x68, 0x1, - 0xeb, 0x4f, 0x1d, 0x29, 0x10, 0x71, 0x52, 00, 0x31, 0xd2, - 0x80, 0x15, 0x7b, 0x54, 0x83, 0xa5, 0x31, 0x69, 0xe3, 0xa5, - 00, 0x2d, 0x14, 0x52, 0x81, 0x40, 0x2, 0xd3, 0xa9, 0x29, - 0x68, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x1, 0x94, 0x53, 0xb0, 0x29, 0xa6, 0x80, - 0xc, 0x52, 0x6d, 0xa5, 0xa2, 0x80, 0x18, 0x57, 0x9a, 0x4d, - 0xb4, 0xf2, 0x28, 0xc0, 0xf5, 0xa0, 0x8, 0xc8, 0xa6, 0xed, - 0xcd, 0x48, 0x79, 0x14, 0x9b, 0x68, 0x2, 0x32, 0x29, 0x84, - 0x54, 0xfb, 0x69, 0xbb, 0x7e, 0xb4, 0x1, 0xe, 0xda, 0x4d, - 0x82, 0xa6, 0xc6, 0xd, 0x18, 0xf6, 0xa0, 0x8, 0xa, 0xe2, - 0x98, 0x63, 0xab, 0x5, 0x69, 0x36, 0x50, 0x4, 0x1e, 0x55, - 0x1e, 0x5f, 0xb5, 0x4d, 0xb2, 0x8d, 0x94, 0x1, 0x58, 0xc7, - 0xcd, 0x27, 0x97, 0xf5, 0xab, 0x25, 0x5, 0x26, 0xc1, 0x40, - 0x15, 0xcc, 0x74, 0x86, 0x2c, 0xd5, 0x8d, 0x98, 0x14, 0x6d, - 0xcd, 00, 0x56, 0xf2, 0x40, 0xa6, 0xf9, 0x75, 0x68, 0xa6, - 0x78, 0xa4, 0xf2, 0xc5, 00, 0x55, 0xf2, 0xe9, 0x3c, 0x9a, - 0xb5, 0xb0, 0xd3, 0x4a, 0x73, 0x40, 0x15, 0x4a, 0x9a, 0x6e, - 0xca, 0xb6, 0x63, 0xa4, 0xf2, 0xfe, 0xb4, 0x1, 0x50, 0xc5, - 0x49, 0xe5, 0xd5, 0xcf, 0x2f, 0xd8, 0xd2, 0x79, 0x7e, 0xd4, - 0x1, 0x4c, 0xc6, 0x4d, 0x34, 0xc3, 0x9a, 0xbd, 0xb3, 0x34, - 0xd6, 0x4e, 0x28, 0x2, 0x97, 0x92, 0x29, 0xc, 0x3e, 0x95, - 0x70, 0xc5, 0xed, 0x49, 0xb3, 0xda, 0x80, 0x29, 0x79, 0x54, - 0x79, 0x42, 0xae, 0x79, 0x74, 0x79, 0x42, 0x80, 0x29, 0x79, - 0x5c, 0x53, 0xc, 0x19, 0xad, 0xf, 0x2f, 0xeb, 0x4d, 0xf2, - 0xa8, 0x2, 0x87, 0x91, 0x48, 0xd1, 0x71, 0x57, 0x8c, 0x5c, - 0x53, 0x7c, 0x9f, 0xc6, 0x80, 0x28, 0x79, 0x19, 0xa6, 0x98, - 0x30, 0x2b, 0x47, 0xca, 0xa6, 0xb4, 0x1c, 0x50, 0x6, 0x6f, - 0x93, 0x47, 0x93, 0x5a, 0x6, 0xf, 0x63, 0x4d, 0xf2, 0x7d, - 0x8d, 00, 0x67, 0xb4, 0x14, 0xc3, 0xd, 0x69, 0x34, 0x1f, - 0x5a, 0x69, 0xb7, 0x3, 0xd6, 0x80, 0x33, 0xfc, 0xaa, 0x4f, - 0xb3, 0xd5, 0xff, 00, 0x23, 0xeb, 0x41, 0x84, 0xd0, 0x6, - 0x61, 0x87, 0x34, 0x9e, 0x4e, 0x45, 0x68, 0x18, 0x31, 0xd8, - 0xd2, 0x79, 0x54, 0x1, 0x43, 0xec, 0xf4, 0x9e, 0x4e, 0x3f, - 0xfd, 0x55, 0xa1, 0xe4, 0x7d, 0x69, 0xc, 0x1f, 0x5a, 00, - 0xce, 0x68, 0xa9, 0x9e, 0x4d, 0x69, 0xb4, 0x5c, 0x54, 0x7e, - 0x47, 0xd6, 0x80, 0x33, 0xfc, 0x80, 0x29, 0x8d, 0xf, 0x3d, - 0x2b, 0x4b, 0xc8, 0xfc, 0x29, 0x1a, 0x1c, 0x7a, 0xd0, 0x6, - 0x61, 0xb7, 0xcd, 0x35, 0xad, 0xc0, 0x35, 0xa5, 0xe4, 0x1f, - 0x7a, 0x43, 0x6f, 0x40, 0x19, 0x9f, 0x67, 0xa4, 0x36, 0xf5, - 0xa3, 0xe4, 0xd3, 0x7c, 0x93, 0xe9, 0x40, 0x19, 0x8d, 0x6d, - 0xcd, 0x37, 0xec, 0xf5, 0xa6, 0xd6, 0xfe, 0xb9, 0xa6, 0xf9, - 0x3, 0xde, 0x80, 0x33, 0x4c, 0x1e, 0xd4, 0xd3, 0x5, 0x69, - 0x98, 0xd, 0x37, 0xec, 0xf9, 0xa0, 0xc, 0xcf, 0x22, 0x90, - 0xc0, 0x4f, 0x6a, 0xd2, 0xf2, 0x71, 0xd8, 0xd1, 0xe4, 0xfb, - 0x1a, 00, 0xcb, 0x68, 0x38, 0xa6, 0xf9, 0x38, 0xad, 0x36, - 0xb7, 0x27, 0xb1, 0x34, 0x9e, 0x41, 0xf4, 0x34, 0x1, 0x96, - 0x61, 0xcf, 0x6a, 0x3e, 0xce, 0x3d, 0x2b, 0x4c, 0xc2, 0x41, - 0xe9, 0x4d, 0x30, 0x13, 0xda, 0x80, 0x32, 0xda, 0xde, 0x99, - 0xe4, 0x7b, 0x56, 0xa7, 0xd9, 0xfd, 0xa9, 0x3c, 0x8f, 0x63, - 0x40, 0x19, 0x9f, 0x67, 0xcd, 0x33, 0xec, 0xf5, 0xaa, 0x6d, - 0xf2, 0x2a, 0x3f, 0xb3, 0x7e, 0x14, 0x1, 0x99, 0xf6, 0x7a, - 0x63, 0x5b, 0xf3, 0x5a, 0xbe, 0x40, 0xa6, 0x1b, 0x7e, 0x68, - 0x3, 0x30, 0xdb, 0xd3, 0xc, 0x1c, 0xd6, 0xa1, 0xb6, 0xa6, - 0x1b, 0x7f, 0xad, 00, 0x66, 0x7d, 0x9c, 0x9a, 0x6b, 0xdb, - 0xe3, 0xad, 0x6a, 0x1b, 0x7a, 0x63, 0x5b, 0xe4, 0xf3, 0x40, - 0x19, 0x9e, 0x47, 0xe3, 0x4d, 0x36, 0xf9, 0xed, 0x5a, 0x7f, - 0x67, 0xfa, 0xd2, 0x18, 0xf, 0xa5, 00, 0x66, 0x7d, 0x9f, - 0x8a, 0x46, 0x83, 0x3, 0xa5, 0x69, 0xb4, 0x7, 0x1d, 0x29, - 0x9e, 0x47, 0xb5, 00, 0x66, 0x79, 0x54, 0xd3, 0x6f, 0x9a, - 0xd4, 0x30, 0x7b, 0x52, 0x79, 0x1f, 0x5a, 00, 0xcb, 0x30, - 0x76, 0xe6, 0x9b, 0xe4, 0xe2, 0xb5, 0x7e, 0xcf, 0xf5, 0xa8, - 0xcc, 0x3e, 0xc6, 0x80, 0x33, 0x4c, 0x39, 0xa6, 0x1b, 0x7d, - 0xbe, 0xf5, 0xa9, 0xe4, 0x7b, 0x1a, 0x63, 0x5b, 0xf3, 0xc8, - 0xe2, 0x80, 0x33, 0x7c, 0xaa, 0x6b, 0x43, 0x91, 0x5a, 0x46, - 0xdc, 0x76, 0x6, 0x9a, 0x61, 0xc0, 0xe8, 0x68, 0x3, 0x30, - 0xc1, 0x8e, 0xb4, 0x86, 0x2f, 0x4a, 0xd2, 0x36, 0xf9, 0x3d, - 0xe9, 0xa6, 0xc, 0x7a, 0x9a, 00, 0xcc, 0x30, 0x9e, 0xf4, - 0x9e, 0x45, 0x68, 0x9b, 0x7c, 0xd2, 0x7d, 0x98, 0xfb, 0xd0, - 0x6, 0x71, 0x82, 0x93, 0xcb, 0xc7, 0x6a, 0xd0, 0x30, 0x63, - 0xb5, 0x31, 0xa0, 0x24, 0xf4, 0x34, 0x1, 0x43, 0xca, 0xcf, - 0x6a, 0xc, 0x78, 0xab, 0xc6, 0xdc, 0xd1, 0xe4, 0x7b, 0x50, - 0x5, 0xd, 0x94, 0x9e, 0x57, 0xb7, 0xe9, 0x57, 0x8c, 0x27, - 0xd2, 0x93, 0xc9, 0x3e, 0x86, 0x80, 0x29, 0x79, 0x62, 0x8f, - 0x2b, 0xd2, 0xae, 0xf9, 0x1e, 0xc6, 0x90, 0x43, 0xcf, 0x4a, - 00, 0xa4, 0x21, 0xc5, 0x2f, 0x93, 0x9e, 0xbc, 0xd5, 0xef, - 0x27, 0xeb, 0x4b, 0xf6, 0x7f, 0x5a, 00, 0xa5, 0xe4, 0xe0, - 0x52, 0xac, 0x26, 0xae, 0x88, 0x29, 0xe2, 0x1e, 0x28, 0x2, - 0x9a, 0xc3, 0x8a, 0x95, 0x63, 0x20, 0x55, 0xa1, 0x7, 0x3d, - 0xea, 0x44, 0x87, 0xeb, 0x40, 0x15, 0x52, 0x23, 0x56, 0x23, - 0x87, 0x9a, 0x9d, 0x21, 0xe6, 0xac, 0x24, 0x18, 0xa0, 0x8, - 0x56, 0x3c, 0x55, 0x88, 0xe3, 0xa9, 0x52, 0x1a, 0xb3, 0x1c, - 0x44, 0xf6, 0xa0, 0x6, 0xc5, 0x16, 0x6a, 0xec, 0x71, 0x7b, - 0x51, 0x14, 0x27, 0xd2, 0xae, 0xc5, 0x17, 0xb5, 00, 0x24, - 0x51, 0x74, 0xe2, 0xae, 0x45, 0x1d, 0x11, 0x45, 0x56, 0xa3, - 0x8e, 0x80, 0x16, 0x28, 0xea, 0xdc, 0x51, 0xd3, 0x63, 0x8f, - 0xa5, 0x59, 0x8d, 0x31, 0x40, 0x12, 0x46, 0x87, 0xb5, 0x5a, - 0x8d, 0x4d, 0x47, 0x1a, 0x55, 0x88, 0xd2, 0x80, 0x1c, 0xa3, - 0x9a, 0x95, 0x6, 0x3b, 0x52, 0x5, 0xa9, 0x94, 0x70, 0x28, - 00, 0x3, 0x8a, 0x91, 0x79, 0x34, 0x80, 0x52, 0x81, 0x40, - 0xa, 0x5, 0x3e, 0x81, 0xd2, 0x8a, 00, 0x29, 0xcb, 0xd2, - 0x90, 0xc, 0xd2, 0xf4, 0xa0, 0x5, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 0x1, 0x31, 0x4d, 0xa7, 0xd2, - 0x62, 0x80, 0x1b, 0x45, 0x3b, 0x14, 0xdc, 0x50, 0x2, 0x6d, - 0xa3, 0x6d, 0x2d, 0x14, 00, 0x9b, 0x69, 0x8, 0xc1, 0xa7, - 0x51, 0x81, 0x40, 0x11, 0x91, 0x46, 0xda, 0x7e, 0x5, 0x1b, - 0x68, 0x1, 0x9b, 0x28, 0xdb, 0x4f, 0xdb, 0x46, 0xda, 00, - 0x8f, 0x67, 0xb5, 0x1b, 0x6a, 0x4d, 0xb4, 0x6d, 0xa0, 0x8, - 0x4a, 0xd2, 0x14, 0xa9, 0x8a, 0xfe, 0x34, 0x9b, 0x7d, 0xa8, - 0x2, 0x2d, 0x94, 0x9b, 0x6a, 0x52, 0x38, 0xa4, 0xc5, 00, - 0x47, 0xb6, 0x93, 0x65, 0x4b, 0x8a, 0x31, 0x40, 0x11, 0x6d, - 0xa6, 0x95, 0xa9, 0x8a, 0xd2, 0x6d, 0xa0, 0x8, 0x76, 0xd1, - 0xb7, 0xda, 0xa6, 0xdb, 0x46, 0xca, 00, 0x83, 0x6d, 0x1b, - 0x6a, 0x6d, 0x94, 0x6c, 0xa0, 0x8, 0x76, 0x8a, 0x6b, 0x26, - 0x4d, 0x58, 0xd9, 0x41, 0x5c, 0x76, 0xa0, 0xa, 0xbe, 0x5d, - 0x2f, 0x96, 0x3d, 0xaa, 0x7d, 0xb9, 0xa3, 0x60, 0xa0, 0xa, - 0xfe, 0x5f, 0xd2, 0x93, 0xcb, 0x15, 0x67, 0x6f, 0xb5, 0x34, - 0xa5, 00, 0x40, 0x63, 0x2, 0x90, 0xc7, 0x53, 0xec, 0xa4, - 0xd9, 0x40, 0x10, 0x79, 0x34, 0xd3, 0x10, 0xcd, 0x59, 0xd8, - 0x69, 0x3c, 0xba, 00, 0xad, 0xe5, 0xd2, 0x79, 0x59, 0xab, - 0x5e, 0x5d, 0x21, 0x8f, 0x2, 0x80, 0x2a, 0x98, 0xa9, 0xbb, - 0x2a, 0xd1, 0x8f, 0x34, 0x9e, 0x5e, 0x28, 0x2, 0xa7, 0x95, - 0x9a, 0x3c, 0x9f, 0xc6, 0xad, 0x79, 0x74, 0x79, 0x54, 0x1, - 0x53, 0xcb, 0xa4, 0xf2, 0x73, 0x56, 0xfc, 0xbf, 0x6a, 0x3c, - 0xb3, 0x40, 0x14, 0x4c, 0x3c, 0xd1, 0xe4, 0x8a, 0xb6, 0xd1, - 0x1c, 0xf3, 0x49, 0xe5, 0xd0, 0x5, 0x43, 0x17, 0xb7, 0xe9, - 0x4d, 0x30, 0xe6, 0xae, 0x6c, 0xf6, 0xa3, 0xcb, 0xf6, 0xa0, - 0xa, 0x46, 0x2f, 0x6a, 0x4f, 0x26, 0xae, 0xf9, 0x7e, 0xd4, - 0x85, 0x38, 0xe9, 0x40, 0x14, 0x3c, 0x81, 0xf5, 0xa4, 0x31, - 0xa, 0xbd, 0xe4, 0xd2, 0x79, 0x3e, 0xd4, 0x1, 0x43, 0xc9, - 0xcf, 0xff, 00, 0xaa, 0x91, 0xa0, 0xe3, 0x9a, 0xd0, 0xf2, - 0x69, 0x8f, 0xf, 0x4a, 00, 0xce, 0xf2, 0x5, 0x1e, 0x45, - 0x5f, 0xf2, 0x68, 0xf2, 0xbd, 0x6, 0x68, 0x3, 0x39, 0xe1, - 0xf6, 0xa6, 0x79, 0x2, 0xb4, 0x5a, 0x2, 0x4f, 0x4a, 0x4f, - 0x23, 0xe9, 0x40, 0x19, 0xfe, 0x4d, 0x21, 0x87, 0xda, 0xb4, - 0x3c, 0x9f, 0x6a, 0x43, 0x6e, 0x68, 0x3, 0x30, 0xc1, 0xcf, - 0x4a, 0x3c, 0xaa, 0xd0, 0xfb, 0x3d, 0x37, 0xc8, 0xf6, 0xa0, - 0xc, 0xf3, 0xe, 0x69, 0x3c, 0x8f, 0x6a, 0xd1, 0xfb, 0x39, - 0x3d, 0xa9, 0x3e, 0xcf, 0xed, 0x40, 0x19, 0xe6, 0x11, 0x8a, - 0x61, 0x83, 0xaf, 0x15, 0xa5, 0xe4, 0x7b, 0x52, 0x34, 0x3c, - 0x50, 0x6, 0x67, 0x91, 0xfe, 0x71, 0x49, 0xe4, 0x8f, 0x4a, - 0xd1, 0xfb, 0x39, 0x34, 0x9e, 0x45, 00, 0x66, 0x18, 0x3d, - 0xa9, 0xd, 0xbd, 0x68, 0xb4, 0x27, 0x34, 0x9f, 0x67, 0x27, - 0xd2, 0x80, 0x33, 0xc, 0x3, 0xd2, 0x9b, 0xf6, 0x7f, 0x6a, - 0xd3, 0x68, 0x3d, 0xa9, 0x86, 0xc, 0x74, 0xa0, 0xc, 0xe3, - 0x6f, 0xc5, 0x46, 0x6d, 0x80, 0xad, 0x5f, 0xb3, 0x93, 0x4c, - 0x36, 0xfc, 0xd0, 0x6, 0x67, 0xd9, 0xfd, 0xa9, 0x86, 0xdb, - 0x9f, 0xfe, 0xb5, 0x6a, 0x18, 0x3d, 0xa9, 0xbf, 0x65, 0x27, - 0xda, 0x80, 0x33, 0x3e, 0xcd, 0x8a, 0x3e, 0xcf, 0xf4, 0xad, - 0x2f, 0xb3, 0x7f, 0x9c, 0x53, 0x7c, 0x9f, 0x6a, 00, 0xcd, - 0x36, 0xf8, 0x14, 0xc3, 0x6f, 0x8f, 0xff, 00, 0x55, 0x69, - 0xb5, 0xb9, 0x34, 0xd3, 0x6c, 0x7d, 0x28, 0x3, 0x30, 0xc1, - 0xfe, 0x71, 0x48, 0x6d, 0xf3, 0xda, 0xb5, 0x5, 0xbf, 0xb5, - 0x34, 0xc2, 0x73, 0xd2, 0x80, 0x33, 0xd, 0xbd, 0x30, 0xdb, - 0x8f, 0x4c, 0xd6, 0xa1, 0xb7, 0xe3, 0xa5, 0x37, 0xec, 0xfe, - 0xd4, 0x1, 0x96, 0x6d, 0xfd, 0xbf, 0x4a, 0x61, 0xb7, 0xcd, - 0x6a, 0x98, 0x49, 0xed, 0x4c, 0xfb, 0x31, 0xf4, 0xa0, 0xc, - 0xcf, 0xb3, 0x8f, 0x4a, 0x63, 0x40, 0x33, 0xd2, 0xb5, 0x7e, - 0xcf, 0xed, 0x4c, 0x36, 0xff, 00, 0xec, 0xd0, 0x6, 0x59, - 0xb7, 0x6, 0x98, 0xd6, 0xe3, 0x35, 0xab, 0xf6, 0x7f, 0x6a, - 0x61, 0xb7, 0x19, 0xe9, 0x40, 0x19, 0x7f, 0x67, 0xf6, 0xa4, - 0x36, 0xfc, 0xd6, 0xa1, 0xb7, 0xf6, 0xa6, 0x35, 0xb1, 0xf4, - 0xa0, 0xc, 0xb3, 0x6f, 0x48, 0x6d, 0xfe, 0x95, 0xa7, 0xf6, - 0x6a, 0x4f, 0xb3, 0xfb, 0x50, 0x6, 0x67, 0xd9, 0x8d, 0x21, - 0xb7, 0xad, 0x36, 0xb6, 0x34, 0x86, 0xd8, 0x8f, 0x4a, 00, - 0xcc, 0x30, 0x62, 0x93, 0xec, 0xf9, 0xed, 0xfa, 0x56, 0x9f, - 0xd9, 0xe8, 0x36, 0xed, 0xe9, 0x40, 0x19, 0x7f, 0x67, 0xff, - 00, 0x38, 0xa4, 0xf2, 0x3d, 0xab, 0x4c, 0xdb, 0x1f, 0x4a, - 0x5, 0xb1, 0xf4, 0xa0, 0xc, 0xef, 0x23, 0xdb, 0x1f, 0x85, - 0x2, 0xdc, 0x56, 0x99, 0xb7, 0x27, 0xb5, 0x2, 0xd8, 0x81, - 0xd2, 0x80, 0x33, 0x7c, 0x80, 0x29, 0xc2, 0x1e, 0x6b, 0x43, - 0xec, 0xdc, 0xf4, 0xa7, 0xfd, 0x9f, 0xda, 0x80, 0x33, 0xc4, - 0x15, 0x22, 0xc1, 0xed, 0x57, 0x96, 0xdf, 0xda, 0xa4, 0x5b, - 0x7f, 0x6a, 00, 0xa4, 0xb0, 0x55, 0x88, 0xe0, 0xfc, 0x6a, - 0xd0, 0xb6, 0xc0, 0xe9, 0x52, 0xad, 0xb9, 0xa0, 0xa, 0xe9, - 00, 0x1c, 0xd5, 0x88, 0xa1, 0xa9, 0xe3, 0xb7, 0x35, 0x61, - 0x20, 0xf6, 0xa0, 0x8, 0xe3, 0x86, 0xae, 0x45, 0x10, 0xa7, - 0x47, 0x6e, 0x41, 0xab, 0x51, 0xc3, 0x40, 0xd, 0x8e, 0x2e, - 0x2a, 0xc2, 0x45, 0xd2, 0x95, 0x13, 0xa0, 0xc5, 0x59, 0x48, - 0xe8, 0x1, 0x12, 0x2a, 0xb0, 0x89, 0x42, 0x47, 0x53, 0xa4, - 0x74, 00, 0xa8, 0x98, 0xc5, 0x4c, 0xa3, 0x14, 0x8a, 0xb5, - 0x22, 0xaf, 0x14, 00, 0xf5, 0x5e, 0x3a, 0xd4, 0x81, 0x79, - 0xa6, 0xa8, 0xa9, 0x16, 0x80, 00, 0x3d, 0x69, 0xdb, 0x69, - 0x29, 0xf4, 00, 0xa, 0x72, 0xd3, 0x69, 0xc3, 0xa5, 00, - 0x2d, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x8, 0x7a, 0x53, 0x69, - 0xf4, 0x50, 0x3, 0x28, 0xa7, 0x62, 0x8c, 0x50, 0x3, 0x68, - 0xa7, 0x62, 0x8c, 0xa, 00, 0x6d, 0x14, 0xec, 0xa, 0x36, - 0xd0, 0x3, 0x68, 0xa7, 0x6d, 0xa4, 0x23, 0x14, 00, 0xcd, - 0xb4, 0x6d, 0xa7, 0x51, 0x40, 0xd, 0xc1, 0xa3, 0x6, 0x9d, - 0x45, 00, 0x37, 0x6, 0x8c, 0x1a, 0x75, 0x14, 00, 0xdc, - 0x1a, 0x31, 0x8a, 0x75, 0x14, 00, 0xca, 0x31, 0x4f, 0xa2, - 0x80, 0x19, 0x81, 0x49, 0x8a, 0x92, 0x93, 0xf0, 0xa0, 0x8, - 0xf6, 0x50, 0x57, 0x15, 0x26, 0x5, 0x1b, 0x68, 0x2, 0x2c, - 0xa, 0x36, 0x54, 0xbb, 0x69, 0x8, 0xc5, 00, 0x47, 0xb6, - 0x93, 0x6d, 0x48, 0x46, 0x69, 0x36, 0xd0, 0x3, 0x36, 0xd2, - 0x6c, 0xa7, 0xe0, 0xd1, 0x83, 0x40, 0xc, 0xda, 0x5, 0x23, - 0x26, 0x45, 0x49, 0x83, 0x46, 0xd2, 0x68, 0x2, 0x1d, 0x94, - 0x6c, 0xa9, 0x76, 0x51, 0xb2, 0x80, 0x22, 0xd9, 0x46, 0xca, - 0x97, 0x6f, 0xd6, 0x8d, 0xb4, 0x1, 0xe, 0xda, 0x8, 0xa9, - 0xb6, 0xd2, 0x6d, 0xa0, 0x8, 0x3c, 0xba, 0x3c, 0xba, 0x98, - 0xae, 0x69, 0x36, 0xd0, 0x4, 0x3b, 0x5, 0x26, 0xcc, 0x7a, - 0x9a, 0x9f, 0x6d, 0x21, 0x5c, 0x9a, 00, 0x83, 0x2, 0x8d, - 0xbe, 0xf5, 0x36, 0xda, 0x36, 0xfd, 0x68, 0x2, 0xd, 0x94, - 0xdf, 0x2e, 0xac, 0x6d, 0xa3, 0x65, 00, 0x56, 0xd9, 0xed, - 0x41, 0x8e, 0xac, 0xed, 0xa6, 0xb2, 0xf1, 0x40, 0x15, 0x5a, - 0x3a, 0x4f, 0x2c, 0x7a, 0x55, 0x9d, 0x94, 0x6c, 0xa0, 0xa, - 0xbe, 0x56, 0x68, 0xf2, 0x80, 0xab, 0x5b, 0x29, 0x3c, 0xba, - 00, 0xaa, 0x62, 0x14, 0xd3, 0x1d, 0x5c, 0xd9, 0x49, 0xb2, - 0x80, 0x29, 0xf9, 0x42, 0x93, 0x65, 0x5a, 0x31, 0x8c, 0xd1, - 0xe5, 0x8a, 00, 0xa8, 0x63, 0x27, 0xb5, 0x27, 0x94, 0x7d, - 0xea, 0xd9, 0x8f, 0x3d, 0xa9, 0x3c, 0xaa, 00, 0xa9, 0xe5, - 0x52, 0x18, 0x89, 0xab, 0x9e, 0x5f, 0xd6, 0x90, 0xc7, 0x40, - 0x14, 0x8c, 0x20, 0x53, 0x4c, 0x40, 0x55, 0xe6, 0x88, 0xb5, - 0x37, 0xca, 0xc7, 0xa5, 00, 0x51, 0x31, 0x64, 0xd2, 0x79, - 0x15, 0x7b, 0xcb, 0xa4, 0xf2, 0x89, 0xa0, 0xa, 0xd, 0xf, - 0x34, 0xd3, 0x15, 0x5e, 0x31, 0xd2, 0x79, 0x67, 0xd2, 0x80, - 0x28, 0x98, 0x79, 0xa6, 0x34, 0x35, 0xa2, 0x62, 0xcf, 0x6a, - 0x69, 0x84, 0xa, 00, 0xcf, 0xf2, 0xa9, 0xc, 0x39, 0xab, - 0xfe, 0x55, 0x21, 0x8a, 0x80, 0x28, 0x18, 0x71, 0x51, 0x98, - 0xb1, 0x5a, 0x26, 0x1e, 0x29, 0x3c, 0x8a, 00, 0xce, 0xf2, - 0x73, 0x47, 0x91, 0x5a, 0x1e, 0x41, 0xa6, 0x98, 0x31, 0x40, - 0x14, 0x3c, 0xac, 0x53, 0x4c, 0x35, 0xa3, 0xe4, 0xfb, 0x53, - 0x5a, 0x1f, 0x6a, 00, 0xcd, 0xf2, 0x69, 0xc, 0x42, 0xb4, - 0x7e, 0xce, 0x69, 0xc, 0x34, 0x1, 0x9a, 0x61, 0xc0, 0x14, - 0xdf, 0x22, 0xb4, 0x5a, 0x1e, 0x7a, 0x53, 0x7c, 0x83, 0x40, - 0x19, 0xcd, 0x6, 0x29, 0xbe, 0x5d, 0x68, 0xb4, 0x3c, 0x53, - 0x7c, 0x9a, 00, 0xcf, 0xf2, 0x69, 0x9e, 0x4f, 0xb5, 0x69, - 0x18, 0x49, 0xed, 0x4c, 0x68, 0x70, 0x68, 0x3, 0x3c, 0xc2, - 0x3d, 0x29, 0x86, 0x3, 0xef, 0x5a, 0x3e, 0x4f, 0xb5, 0x1e, - 0x45, 00, 0x66, 0x7d, 0x9c, 0x7a, 0x52, 0x79, 0x1e, 0xd5, - 0xa7, 0xe4, 0xd2, 0x34, 0x3c, 0x74, 0xa0, 0xc, 0xc3, 0x6f, - 0x9a, 0x4f, 0xb3, 0xfa, 0xd6, 0x89, 0x86, 0x90, 0xc1, 0x40, - 0x19, 0xa6, 0x1a, 0xd, 0xbe, 0x7e, 0x95, 0xa3, 0xe4, 0xd2, - 0x79, 0x1e, 0xd4, 0x1, 0x9d, 0xf6, 0x7a, 0x4, 0x1c, 0xd6, - 0x97, 0xd9, 0xa8, 0xf2, 0x31, 0x40, 0x19, 0xde, 0x41, 0x3d, - 0xa8, 0xf2, 0x31, 0x5a, 0x22, 0xc, 0x9a, 0x3e, 0xcd, 0x8a, - 00, 0xcf, 0x10, 0xe3, 0xb5, 0x38, 0x43, 0x57, 0xfe, 0xcf, - 0x4e, 0x10, 0x76, 0xc5, 00, 0x51, 0x10, 0x73, 0x52, 0x2c, - 0x22, 0xae, 0xb, 0x7c, 0xd3, 0xd6, 0xde, 0x80, 0x2a, 0x2c, - 0x39, 0xa9, 0x16, 0x1a, 0xb6, 0xb0, 0xd4, 0xab, 0x7, 0xe5, - 0x40, 0x15, 0x56, 0xc, 0xe2, 0xac, 0xa4, 0x38, 0xed, 0x53, - 0xac, 0x38, 0xa9, 0x56, 0x2a, 00, 0x85, 0x22, 0xcd, 0x58, - 0x58, 0xe9, 0xe9, 0x15, 0x4e, 0xb1, 0xe3, 0x14, 00, 0xc5, - 0x8e, 0xa6, 0x8d, 0x29, 0xe8, 0xb5, 0x28, 0x4a, 00, 0x6a, - 0xa5, 0x4c, 0xab, 0x40, 0x5a, 0x91, 0x45, 00, 0xb, 0x4f, - 00, 0x71, 0x4a, 0xa3, 0xa5, 0x3c, 0xe, 0x7a, 0x50, 00, - 0xa0, 0x66, 0x9d, 0xd2, 0x8c, 0x62, 0x9c, 0x7, 0x14, 00, - 0x60, 0x52, 0xd1, 0x45, 00, 0x28, 0x19, 0xa7, 0x52, 0xe, - 0x94, 0xb4, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x52, 0x60, 0x1a, 0x5a, 0x28, - 0x1, 0xbb, 0x68, 0xdb, 0x4e, 0xa2, 0x80, 0x1b, 0xb6, 0x8d, - 0xb4, 0xea, 0x28, 0x1, 0xbb, 0x68, 0xdb, 0x4e, 0xa2, 0x80, - 0x1b, 0x83, 0x46, 0xd, 0x3a, 0x8a, 00, 0x66, 0x28, 0xc5, - 0x3e, 0x8a, 00, 0x65, 0x14, 0xfa, 0x4c, 0x50, 0x3, 0x68, - 0xa7, 0x60, 0x51, 0x81, 0x40, 0xd, 0xa2, 0x9d, 0x81, 0x41, - 0x1c, 0x50, 0x3, 0x30, 0x28, 0xc0, 0xa5, 0xa2, 0x80, 0x13, - 0x6d, 0x1b, 0x69, 0x68, 0xa0, 0x4, 0xdb, 0x49, 0xb6, 0x9d, - 0x46, 0x28, 0x1, 0xbb, 0x68, 0xc1, 0xa7, 0x62, 0x8a, 00, - 0x6e, 0x28, 0xc7, 0xb5, 0x3a, 0x8a, 00, 0x66, 0x28, 0xc5, - 0x3e, 0x8a, 00, 0x8c, 0xad, 0x26, 0xda, 0x96, 0x8c, 0x50, - 0x4, 0x5b, 0x68, 0xdb, 0x52, 0xe2, 0x91, 0xa8, 0x2, 0x22, - 0xb4, 0x9b, 0x6a, 0x4c, 0x51, 0x81, 0x40, 0x11, 0xed, 0x34, - 0x6d, 0xa7, 0x91, 0x46, 0xda, 00, 0x66, 0xda, 0x6b, 0x2d, - 0x4b, 0xb6, 0x8d, 0xb4, 0x1, 0xe, 0xca, 0x36, 0xd4, 0xbb, - 0x68, 0xdb, 0x40, 0x11, 0x14, 0xcd, 0x26, 0xcf, 0x7a, 0x9b, - 0x6f, 0xb5, 0x26, 0xcc, 0xd0, 0x4, 0x5b, 0x29, 0x36, 0xd4, - 0xdb, 0x28, 0xdb, 0x40, 0x10, 0x6c, 0xa3, 0x67, 0xb0, 0xa9, - 0x88, 0xf6, 0xa4, 0xc6, 0x28, 0x2, 0x2d, 0x83, 0xd0, 0x52, - 0x79, 0x62, 0xa6, 0xc5, 0x26, 0x5, 00, 0x40, 0x52, 0x8d, - 0x9e, 0xd5, 0x36, 0xda, 0x30, 0x68, 0x2, 0x1d, 0xb4, 0xd6, - 0x4a, 0x9f, 0x66, 0x68, 0xd9, 0x40, 0x15, 0xfc, 0xba, 0x3c, - 0xba, 0xb1, 0xb4, 0x52, 0x6d, 0xa0, 0xa, 0xfe, 0x5f, 0xd2, - 0x9a, 0x63, 0xf6, 0xab, 0xc, 0xbc, 0xd2, 0x6d, 0xa0, 0xa, - 0xde, 0x5d, 0x21, 0x8f, 0x35, 0x6b, 0x6d, 0x26, 0xca, 00, - 0xab, 0xe5, 0x7b, 0x50, 0x62, 0xf6, 0xab, 0x5b, 0x29, 0x36, - 0x50, 0x5, 0x5f, 0x26, 0x9b, 0xb0, 0x7a, 0x55, 0xc2, 0x9c, - 0x54, 0x7b, 0x68, 0x2, 0xbf, 0x96, 0x3d, 0x5, 0x34, 0xc3, - 0x93, 0x56, 0xb6, 0xd1, 0xe5, 0xd0, 0x5, 0x43, 0xd, 0x1e, - 0x49, 0xab, 0x5e, 0x5d, 0x1e, 0x5d, 00, 0x54, 0x30, 0xfb, - 0x53, 0x1a, 0x21, 0x57, 0x4c, 0x59, 0xa6, 0x98, 0x68, 0x2, - 0x91, 0x8b, 0x3d, 0xa9, 0x3c, 0xaf, 0xa5, 0x5d, 0xf2, 0xfd, - 0xe9, 0x36, 0x50, 0x5, 0x16, 0x87, 0x9e, 0x82, 0x93, 0xc9, - 0xf6, 0xab, 0xa6, 0x23, 0x49, 0xe5, 0xd0, 0x5, 0x2f, 0x27, - 0x34, 0xc6, 0x80, 0x75, 0xab, 0xfe, 0x5d, 0x35, 0xa3, 0xc0, - 0xe9, 0x40, 0x19, 0xfe, 0x50, 0xa4, 0x30, 0x66, 0xaf, 0xf9, - 0x7e, 0xd4, 0x9e, 0x5e, 0x68, 0x2, 0x89, 0x82, 0x93, 0xc8, - 0xc7, 0xa1, 0xab, 0xe6, 0x2a, 0x4f, 0x2c, 0x50, 0x6, 0x71, - 0xb7, 0x24, 0xd2, 0x7d, 0x9f, 0xda, 0xb4, 0x7c, 0xbc, 0xd2, - 0x79, 0x22, 0x80, 0x33, 0x8c, 0x1f, 0x4a, 0x41, 0x6, 0x4f, - 0x4a, 0xd2, 0x31, 0x52, 0x79, 0x34, 0x1, 0x40, 0xc1, 0xea, - 0x29, 0xc, 0x1e, 0xd5, 0xa1, 0xe4, 0xd2, 0x18, 0x68, 0x2, - 0x82, 0xc1, 0xcf, 0x41, 0x4a, 0x60, 0xcf, 0x61, 0x57, 0x84, - 0x54, 0xbe, 0x51, 0xa0, 0xa, 0x42, 0xe, 0x28, 0x11, 0x73, - 0x57, 0x44, 0x54, 0xbe, 0x5d, 00, 0x54, 0x10, 0xf1, 0xda, - 0x9e, 0x21, 0xab, 0x42, 0x2a, 0x78, 0x8b, 0xda, 0x80, 0x2a, - 0xac, 0x35, 0x20, 0x8e, 0xac, 0x88, 0xf8, 0xe9, 0x4a, 0x22, - 0xe6, 0x80, 0x21, 0x58, 0x86, 0x7a, 0x54, 0xab, 0x10, 0xa9, - 0x56, 0x3c, 0x54, 0x9b, 0x45, 00, 0x42, 0x22, 0xc5, 0x4c, - 0x91, 0xe7, 0xd2, 0x9f, 0xb2, 0x9e, 0xab, 0x40, 0xd, 0x54, - 0xc5, 0x4a, 0x13, 0x38, 0xa5, 0x55, 0xa7, 0xaa, 0xd0, 0x3, - 0x42, 0xd3, 0xc0, 0x34, 0xbb, 0x69, 0xd8, 0xc0, 0xa0, 00, - 0x66, 0x9f, 0x8a, 0x4a, 0x78, 0xe9, 0x40, 0x9, 0x81, 0x4b, - 0x45, 0x14, 00, 0x52, 0x81, 0x4a, 0x7, 0x14, 0xb4, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x98, 0x14, 0x6d, 0xa5, 0xa2, 0x80, 0x13, 0x6d, - 0x18, 0xa5, 0xa2, 0x80, 0x13, 0x1e, 0xf4, 0x63, 0xde, 0x96, - 0x8a, 00, 0x69, 0x7, 0xeb, 0x46, 0xd, 0x3a, 0x8a, 00, - 0x6e, 0xd, 0x26, 0x29, 0xf4, 0x50, 0x3, 0x31, 0x46, 0x29, - 0xf4, 0x50, 0x3, 0x31, 0x46, 0x29, 0xf4, 0x50, 0x3, 0x28, - 0xa7, 0x62, 0x8c, 0x50, 0x3, 0x31, 0x9a, 0x36, 0xd2, 0xe2, - 0x8a, 00, 0x4d, 0xb4, 0x6d, 0xa5, 0xa2, 0x80, 0x13, 0x6d, - 0x1b, 0x69, 0x68, 0xa0, 0x4, 0xdb, 0x46, 0xda, 0x5a, 0x28, - 0x1, 0xb8, 0x34, 0x60, 0xd3, 0xa8, 0xa0, 0x6, 0xe0, 0xd1, - 0x83, 0x4e, 0xa2, 0x80, 0x19, 0xb3, 0x34, 0x9b, 0x6a, 0x4a, - 0x28, 0x2, 0x3c, 0x51, 0xb7, 0xde, 0xa4, 0xc5, 0x18, 0xa0, - 0x8, 0xf6, 0x53, 0x70, 0x2a, 0x42, 0x3d, 0xa9, 0x31, 0x40, - 0xc, 0xdb, 0x46, 0xda, 0x7e, 0x28, 0xc0, 0xa0, 0x6, 0x6d, - 0xa3, 0x1e, 0xf4, 0xfc, 0xa, 0x4d, 0xb4, 0x1, 0x19, 0x5e, - 0x69, 0x36, 0xd4, 0xbb, 0x68, 0xdb, 0x40, 0x10, 0xed, 0xa3, - 0x60, 0xa9, 0xb6, 0xd1, 0xb6, 0x80, 0x21, 0xd8, 0x29, 0x36, - 0x66, 0xa7, 0xd9, 0x49, 0xb6, 0x80, 0x21, 0xf2, 0xe9, 0x36, - 0x54, 0xfb, 0x29, 0xbb, 0x68, 0x2, 0x2d, 0x94, 0x6c, 0xa9, - 0x76, 0xd2, 0x6d, 0xa0, 0x8, 0xa, 0x51, 0xb6, 0xa6, 0xf2, - 0xe8, 0xd9, 0x40, 0x10, 0x6d, 0x26, 0x93, 0x65, 0x58, 0xd9, - 0x49, 0xb0, 0x50, 0x5, 0x7f, 0x2e, 0x8f, 0x2e, 0xac, 0x6c, - 0xa3, 0x65, 00, 0x56, 0x31, 0xe3, 0xad, 0x35, 0x93, 0xd2, - 0xac, 0xb2, 0x7b, 0x52, 0x6c, 0xf6, 0xa0, 0xa, 0xbe, 0x5d, - 0x1e, 0x55, 0x59, 0xd9, 0x49, 0xb2, 0x80, 0x2b, 0xf9, 0x5e, - 0xd4, 0x9e, 0x5f, 0xb5, 0x59, 0xf2, 0xe8, 0xf2, 0xe8, 0x2, - 0xaf, 0x95, 0xed, 0x49, 0xe5, 0xf, 0x4a, 0xb7, 0xe5, 0xd1, - 0xb2, 0x80, 0x2a, 0x79, 0x54, 0x86, 0x2c, 0xd5, 0xbf, 0x2e, - 0x93, 0xcb, 0xcd, 00, 0x55, 0xf2, 0x47, 0xf9, 0x14, 0x9e, - 0x4d, 0x5b, 0xf2, 0xe8, 0xf2, 0xe8, 0x2, 0x9f, 0x91, 0x47, - 0x91, 0xef, 0x56, 0xcc, 0x54, 0x79, 0x43, 0xd2, 0x80, 0x2a, - 0x8, 0xa8, 0xf2, 0x8d, 0x5a, 0xf2, 0xc7, 0xa5, 0x1e, 0x5d, - 00, 0x56, 0x11, 0x7a, 0x9a, 0x5f, 0x2f, 0xd2, 0xad, 0x79, - 0x74, 0x79, 0x74, 0x1, 0x5f, 0xcb, 0xa5, 0x58, 0xaa, 0x7f, - 0x2e, 0x9c, 0x23, 0xe2, 0x80, 0x21, 0xd9, 0x4a, 0x23, 0x3e, - 0x95, 0x32, 0xa7, 0x34, 0xed, 0x80, 0xd0, 0x4, 0x41, 0x29, - 0xea, 0x9c, 0xd3, 0xc2, 0x71, 0x4e, 0xb, 0x40, 0xc, 0xb, - 0x4f, 0xb, 0xd2, 0x9c, 0x12, 0x9c, 0x16, 0x80, 0x1a, 0x17, - 0x6, 0x9e, 0x17, 0x8a, 0x5c, 0x7b, 0x50, 0x5, 00, 0x26, - 0xda, 0x70, 0x19, 0x34, 0xb8, 0x14, 0xb4, 00, 0x63, 0x14, - 0x51, 0x4a, 0x6, 0x68, 00, 0x3, 0x34, 0xa0, 0x71, 0x40, - 0x18, 0xa5, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x4, - 0xc0, 0xa3, 0x2, 0x96, 0x8a, 00, 0x4c, 0xa, 0x36, 0xd2, - 0xd1, 0x40, 0x9, 0xb6, 0x93, 0x6d, 0x3a, 0x8a, 00, 0x6e, - 0xda, 0x36, 0xd3, 0xa8, 0xa0, 0x6, 0xed, 0xa3, 0x6d, 0x3a, - 0x8a, 00, 0x6e, 0x28, 0xc7, 0xb5, 0x3a, 0x8a, 00, 0x6e, - 0x29, 0x29, 0xc4, 0x66, 0x93, 0x6, 0x80, 0x12, 0x8a, 0x31, - 0x46, 0x28, 00, 0xa2, 0x8a, 0x28, 0x1, 0x30, 0x28, 0xc0, - 0xa5, 0xa2, 0x80, 0x13, 0x6e, 0x68, 0xc0, 0xf5, 0xa5, 0xa2, - 0x80, 0x13, 0x3, 0xd6, 0x93, 0x6d, 0x3a, 0x8a, 00, 0x6e, - 0xda, 0x36, 0xd3, 0xa8, 0xa0, 0x6, 0xed, 0xa4, 0xd9, 0xed, - 0x4f, 0xa2, 0x80, 0x19, 0xb7, 0x14, 0x84, 0x53, 0xc8, 0xcd, - 0x26, 0xd, 00, 0x32, 0x93, 0x2, 0xa4, 0xc1, 0xa3, 0x6, - 0x80, 0x23, 0xc5, 0x18, 0xa9, 0x31, 0x46, 0x28, 0x2, 0x2d, - 0xb4, 0x6d, 0xa9, 0x31, 0x46, 0x28, 0x2, 0x3d, 0x94, 0x9b, - 0x2a, 0x4d, 0xb4, 0x6d, 0xa0, 0x8, 0xf6, 0xd2, 0x6d, 0xfa, - 0xd4, 0xbb, 0x68, 0xdb, 0x40, 0x11, 0x15, 0x1d, 0xe9, 0x36, - 0x8a, 0x9b, 0x6d, 0x1b, 0x28, 0x2, 0x1d, 0x94, 0x6c, 0xa9, - 0x76, 0xd1, 0xb6, 0x80, 0x22, 0xd9, 0x49, 0xb2, 0xa6, 0xdb, - 0xed, 0x46, 0xdf, 0x6a, 00, 0x87, 0x65, 0x1b, 0x2a, 0x5d, - 0x94, 0x6c, 0xa0, 0x8, 0x76, 0x1a, 0x36, 0x7a, 0xd4, 0xdb, - 0x7e, 0xb4, 0x6d, 0xa0, 0x8, 0xf6, 0x51, 0xb7, 0xda, 0xa4, - 0xc5, 0x18, 0xa0, 0x8, 0xf6, 0x52, 0x85, 0xc7, 0x15, 0x26, - 0xda, 0x50, 0xb4, 00, 0xc0, 0xb4, 0x6d, 0xa7, 0xed, 0xa0, - 0xa, 00, 0x68, 0x5e, 0x69, 0xdb, 0x69, 0xc0, 0x66, 0x97, - 0x6d, 00, 0x36, 0x97, 0x6, 0x94, 0xc, 0x1a, 0x5a, 00, - 0x40, 0x30, 0x29, 0x68, 0xa3, 0x14, 00, 0x51, 0x4e, 0x3, - 0x8a, 0x31, 0x40, 0x6, 0x28, 0xe9, 0x4b, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x98, 0xa5, 0xa2, 0x80, - 0x13, 0x14, 0x62, 0x96, 0x8a, 00, 0x6e, 0xda, 0x36, 0xd3, - 0xa8, 0xa0, 0x6, 0xed, 0xa3, 0x6d, 0x3a, 0x8a, 00, 0x6e, - 0xda, 0x36, 0xd3, 0xa8, 0xa0, 0x6, 0x91, 0x8a, 0x4a, 0x56, - 0xa4, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x3, 0x14, 0x62, 0x8a, 0x28, 00, 0xc5, 0x26, 0x5, 0x2d, - 0x14, 00, 0x98, 0x14, 0x60, 0x52, 0xd1, 0x40, 0x9, 0x81, - 0x46, 0x5, 0x2d, 0x14, 00, 0x9b, 0x68, 0xdb, 0x4b, 0x45, - 00, 0x37, 0x14, 0x62, 0x9d, 0x45, 00, 0x37, 0x14, 0x62, - 0x9d, 0x45, 00, 0x37, 0x14, 0x98, 0xa7, 0xd1, 0x40, 0xc, - 0xc5, 0x18, 0xa7, 0xd1, 0x40, 0xd, 0x3, 0x34, 0xb8, 0x14, - 0xb4, 0x50, 0x2, 0x60, 0x51, 0x81, 0x4b, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0xb8, 0xa4, 0xa7, 0xe, 0x94, 00, - 0x80, 0x73, 0x4e, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0xff, 0xd9, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x36, - 0x35, 0x4b, 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, - 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x73, 0x68, 0x6f, - 0x77, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x77, - 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x20, 0x65, 0x76, 0x65, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x36, 0x35, 0x4b, 0x20, - 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, - 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, - 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, - 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, - 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, - 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x77, - 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x42, - 0x79, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, - 0x78, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x20, 0x57, 0x45, 0x42, 0x20, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x55, 0x73, - 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x4c, 0x45, 0x44, 0x27, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, - 0x72, 0x20, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, - 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x43, 0x44, 0x2c, - 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, - 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x2e, 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, - 0x22, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, - 0x69, 0x6f, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x72, 0x6d, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0xa, - 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x61, 0x6c, - 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, - 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, 0x50, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, - 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, - 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, - 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x54, 0x43, - 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x36, 0x35, 0x4b, 0x20, - 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, - 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, - 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, - 0x70, 0x61, 0x67, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, - 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_image_jpg[] = {{file_404_html, data_image_jpg, data_image_jpg + 11, sizeof(data_image_jpg) - 11}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_image_jpg, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 2bab3ab01..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,324 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define uipMAC_ADDR0 0x00 -#define uipMAC_ADDR1 0x12 -#define uipMAC_ADDR2 0x13 -#define uipMAC_ADDR3 0x10 -#define uipMAC_ADDR4 0x15 -#define uipMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define uipIP_ADDR0 192 -#define uipIP_ADDR1 168 -#define uipIP_ADDR2 0 -#define uipIP_ADDR3 200 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 200 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - while( Init_EMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - IntEnable = INT_RX_DONE; - VICIntEnable |= 0x00200000; - VICVectAddr21 = ( long ) vEMAC_ISR_Wrapper; - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - RequestSend(); - - /* Copy the header into the Tx buffer. */ - CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - DoSend_EMAC( uip_len ); - - RequestSend(); - - /* Copy the header into the Tx buffer. */ - CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - DoSend_EMAC( uip_len ); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = uipMAC_ADDR0; - xAddr.addr[ 1 ] = uipMAC_ADDR1; - xAddr.addr[ 2 ] = uipMAC_ADDR2; - xAddr.addr[ 3 ] = uipMAC_ADDR3; - xAddr.addr[ 4 ] = uipMAC_ADDR4; - xAddr.addr[ 5 ] = uipMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xLCDQueue; -xLCDMessage xLCDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 5, 0 ); - } - else - { - vParTestSetLED( 5, 1 ); - } - - if( strstr( c, "LED1=1" ) != NULL ) - { - vParTestSetLED( 6, 0 ); - } - else - { - vParTestSetLED( 6, 1 ); - } - - if( strstr( c, "LED2=1" ) != NULL ) - { - vParTestSetLED( 7, 0 ); - } - else - { - vParTestSetLED( 7, 1 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xLCDMessage.xColumn = 0; - xLCDMessage.pcMessage = cMessageForDisplay; - xQueueSend( xLCDQueue, &xLCDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h deleted file mode 100644 index 3e6f7f381..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s deleted file mode 100644 index 6c74e5272..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s +++ /dev/null @@ -1,242 +0,0 @@ -;******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -;* File Name : 91x_init.s -;* Author : MCD Application Team -;* Date First Issued : 05/18/2006 : Version 1.0 -;* Description : This module performs: -;* - FLASH/RAM initialization, -;* - Stack pointer initialization for each mode , -;* - Branches to ?main in the C library (which eventually -;* calls main()). -;* -;* On reset, the ARM core starts up in Supervisor (SVC) mode, -;* in ARM state,with IRQ and FIQ disabled. -;******************************************************************************* -;* History: -;* 05/22/2007 : Version 1.2 -;* 05/24/2006 : Version 1.1 -;* 05/18/2006 : Version 1.0 -;******************************************************************************* -;* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -;* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -;* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -;* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -;* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -;* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -; At power up, the CPU defaults to run on the oscillator clock, so Depending -; of your Application, Disable or Enable the following Define - - #define PLL_Clock ; Use PLL as the default clock source @ 96 MHz only with - ; Bank 0 @ 0x0 and Bank 1 @ 0x80000 -; #define RTC_Clock ; Use RTC as the default clock source -; #define OSC_Clock ; Use OSC as the default clock source - - -; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs - -Mode_USR EQU 0x10 -Mode_FIQ EQU 0x11 -Mode_IRQ EQU 0x12 -Mode_SVC EQU 0x13 -Mode_ABT EQU 0x17 -Mode_UND EQU 0x1B -Mode_SYS EQU 0x1F ; available on ARM Arch 4 and later - -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - - - -; --- STR9X SCU specific definitions - -SCU_BASE_Address EQU 0x5C002000 ; SCU Base Address -SCU_CLKCNTR_OFST EQU 0x00000000 ; Clock Control register Offset -SCU_PLLCONF_OFST EQU 0x00000004 ; PLL Configuration register Offset -SCU_SYSSTATUS_OFST EQU 0x00000008 ; System Status Register Offset -SCU_SCR0_OFST EQU 0x00000034 ; System Configuration Register 0 Offset - -; --- STR9X FMI specific definitions - -FMI_BASE_Address EQU 0x54000000 ; FMI Base Address -FMI_BBSR_OFST EQU 0x00000000 ; Boot Bank Size Register -FMI_NBBSR_OFST EQU 0x00000004 ; Non-boot Bank Size Register -FMI_BBADR_OFST EQU 0x0000000C ; Boot Bank Base Address Register -FMI_NBBADR_OFST EQU 0x00000010 ; Non-boot Bank Base Address Register -FMI_CR_OFST EQU 0x00000018 ; Control Register - -;--------------------------------------------------------------- -; ?program_start -;--------------------------------------------------------------- - MODULE ?program_start - - SECTION IRQ_STACK:DATA:NOROOT(3) - SECTION FIQ_STACK:DATA:NOROOT(3) - SECTION UND_STACK:DATA:NOROOT(3) - SECTION ABT_STACK:DATA:NOROOT(3) - SECTION SVC_STACK:DATA:NOROOT(3) - SECTION CSTACK:DATA:NOROOT(3) - SECTION .icode:CODE:NOROOT(2) - PUBLIC __iar_program_start - EXTERN ?main - CODE32 - -__iar_program_start: - LDR pc, =NextInst - - -NextInst - - - NOP ; execute some instructions to access CPU registers after wake - NOP ; up from Reset, while waiting for OSC stabilization - NOP - NOP - NOP - NOP - NOP - NOP - NOP - - -; BUFFERED_Mode -; ------------------------------------------------------------------------------ -; Description : Enable the Buffered mode. -; Just enable the buffered define on the 91x_conf.h -; http://www.arm.com/pdfs/DDI0164A_966E_S.pdf -; ------------------------------------------------------------------------------ - - MRC p15, 0, r0, c1, c0, 0 ; Read CP15 register 1 into r0 - ORR r0, r0, #0x8 ; Enable Write Buffer on AHB - MCR p15, 0, r0, c1, c0, 0 ; Write CP15 register 1 - - - -; --- Remap Flash Bank 0 at address 0x0 and Bank 1 at address 0x80000, -; when the bank 0 is the boot bank, then enable the Bank 1. - - LDR R6, =FMI_BASE_Address - - LDR R7, = 0x4 ; BOOT BANK Size = 512KB - STR R7, [R6, #FMI_BBSR_OFST] ; (2^4) * 32 = 512KB - - LDR R7, = 0x2 ; NON BOOT BANK Size = 32KB - STR R7, [R6, #FMI_NBBSR_OFST] ; (2^2) * 8 = 32KB - - LDR R7, = 0x0 ; BOOT BANK Address = 0x0 - STR R7, [R6, #FMI_BBADR_OFST] - - LDR R7, = 0x20000 ; NON BOOT BANK Address = 0x80000 - STR R7, [R6, #FMI_NBBADR_OFST] ; need to put 0x20000 because FMI - ; bus on A[25:2] of CPU bus - - LDR R7, = 0x18 ; Enable CS on both banks - STR R7, [R6, #FMI_CR_OFST] ; LDR R7, = 0x19 ;in RevD - ; to enable 8 words PFQ deepth - -; --- Enable 96K RAM, PFQBC enabled, DTCM & AHB wait-states disabled - LDR R0, = SCU_BASE_Address - LDR R1, = 0x0191 - STR R1, [R0, #SCU_SCR0_OFST] - -; ------------------------------------------------------------------------------ -; --- System clock configuration -; ------------------------------------------------------------------------------ - -#ifdef PLL_Clock ; Use 96 MHZ PLL clock as the default frequency - -; --- wait states Flash confguration - - LDR R6, = 0x00080000 ;Write a Write Flash Configuration - LDR R7, =0x60 ;Register command (60h) to any word - STRH R7, [R6] ;address in Bank 1. - - LDR R6, = 0x00083040 ;Write a Write Flash Configuration - LDR R7, = 0x3 ;Register Confirm command (03h) - STRH R7, [R6] ;2Wstaites in read,PWD,LVD enabled, - ;High BUSCFG. -; --- PLL configuration - LDR R1, = 0x00020002 ;Set OSC as clock source - STR R1, [R0, #SCU_CLKCNTR_OFST ] - - - NOP ; Wait for OSC stabilization - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - - - - - LDR R1, = 0x000ac019 ;Set PLL ENABLE, to 96Mhz - STR R1, [R0, #SCU_PLLCONF_OFST] - -Wait_Loop - LDR R1,[R0, #SCU_SYSSTATUS_OFST] ;Wait until PLL is Locked - ANDS R1, R1, #0x01 - BEQ Wait_Loop - - LDR R1, = 0x00020080 ;Set PLL as clock source after pll - STR R1, [R0, #SCU_CLKCNTR_OFST ] ;is locked and FMICLK=RCLK, - ;PCLK=RCLK/2 -#endif - -#ifdef RTC_Clock ;Use RTC as the default clock source - LDR R1, = 0x00020001 ;Set RTC as clock source and - STR R1, [R0, #SCU_CLKCNTR_OFST ] ;FMICLK=RCLK, PCLK=RCLK -#endif - -#ifdef OSC_Clock ;Use Osc as the default clock source - LDR R1, = 0x00020002 ;Set OSC as clock source and - STR R1, [R0, #SCU_CLKCNTR_OFST ] ;FMICLK=RCLK, PCLK=RCLK -#endif - - -; --- Initialize Stack pointer registers - -; Enter each mode in turn and set up the stack pointer - - MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit ; No interrupts - LDR SP, =SFE(FIQ_STACK) - - MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(IRQ_STACK) - - MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(ABT_STACK) - - MSR CPSR_c, #Mode_UND|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(UND_STACK) - - MSR CPSR_c, #Mode_SYS ; IRQs & FIQs are now enabled - LDR SP, = SFE(CSTACK) - - MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(SVC_STACK) - -; --- Set bits 17-18(DTCM/ITCM order bits)of the Core Configuration Control -; Register - MOV r0, #0x60000 - MCR p15,0x1,r0,c15,c1,0 - -; --- Now enter the C code - B ?main ; Note : use B not BL, because an application will - ; never return this way - - LTORG - - - END -;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE**** - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s deleted file mode 100644 index 1204e0871..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s +++ /dev/null @@ -1,175 +0,0 @@ -;******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -;* File Name : 91x_init.s -;* Author : MCD Application Team -;* Date First Issued : 05/18/2006 : Version 1.0 -;* Description : This module performs: -;* - FLASH/RAM initialization, -;* - Stack pointer initialization for each mode , -;* - Branches to ?main in the C library (which eventually -;* calls main()). -;* -;* On reset, the ARM core starts up in Supervisor (SVC) mode, -;* in ARM state,with IRQ and FIQ disabled. -;******************************************************************************* -; History: -; 05/24/2006 : Version 1.1 -; 05/18/2006 : Version 1.0 -;******************************************************************************* -;* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -;* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -;* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -;* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -;* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -;* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -; Depending in Your Application, Disable or Enable the following Define - -; #define BUFFERED_Mode ; Work on Buffered mode, when enabling this define - ; just enable the Buffered define on 91x_conf.h - -; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs - -Mode_USR EQU 0x10 -Mode_FIQ EQU 0x11 -Mode_IRQ EQU 0x12 -Mode_SVC EQU 0x13 -Mode_ABT EQU 0x17 -Mode_UND EQU 0x1B -Mode_SYS EQU 0x1F ; available on ARM Arch 4 and later - -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - -;--- BASE ADDRESSES -; System memory locations - -SRAM_Base EQU 0x04000000 -SRAM_Limit EQU 0x04018000 ; at the top of 96 KB SRAM - -SVC_Stack DEFINE SRAM_Limit ; 512 byte SVC stack at - ; top of memory - used by kernel. -IRQ_Stack DEFINE SVC_Stack-512 ; followed by IRQ stack -USR_Stack DEFINE IRQ_Stack-512 ; followed by USR stack. Tasks run in - ; system mode but task stacks are allocated - ; when the task is created. -FIQ_Stack DEFINE USR_Stack-8 ; followed by FIQ stack -ABT_Stack DEFINE FIQ_Stack-8 ; followed by ABT stack -UND_Stack DEFINE ABT_Stack-8 ; followed by UNDEF stack - - EXTERN main - -; STR9X register specific definition - -FMI_BBSR_AHB_UB EQU 0x54000000 -FMI_BBADR_AHB_UB EQU 0x5400000C -FMI_NBBSR_AHB_UB EQU 0x54000004 -FMI_NBBADR_AHB_UB EQU 0x54000010 - -SCU_SCRO_APB1_UB EQU 0x4C002034 -SCRO_AHB_UNB EQU 0x5C002034 - - - -;--------------------------------------------------------------- -; ?program_start -;--------------------------------------------------------------- - MODULE ?program_start - RSEG ICODE:CODE(2) - IMPORT LINK - PUBLIC __program_start - EXTERN ?main - CODE32 - - -__program_start: - LDR pc, =NextInst - - -NextInst - - - NOP ; execute some instructions to access CPU registers after wake - NOP ; up from Reset, while waiting for OSC stabilization - NOP - NOP - NOP - NOP - NOP - NOP - NOP - ldr r0,=LINK ; to include the vector table inside the final executable. - - - -; --- Remap Flash Bank 0 at address 0x0 and Bank 1 at address 0x80000, -; when the bank 0 is the boot bank, then enable the Bank 1. - - LDR R6, =0x54000000 - LDR R7, =0x4 - STR R7, [R6] - - LDR R6, =0x54000004 - LDR R7, =0x3 - STR R7, [R6] - - LDR R6, =0x5400000C - LDR R7, =0x0 - STR R7, [R6] - - LDR R6, =0x54000010 - LDR R7, =0x20000 - STR R7, [R6] - - LDR R6, =0x54000018 - LDR R7, =0x18 - STR R7, [R6] - -; --- Enable 96K RAM - LDR R0, = SCRO_AHB_UNB - LDR R1, = 0x0196 - STR R1, [R0] - - - /* Setup a stack for each mode - note that this only sets up a usable stack - for system/user, SWI and IRQ modes. Also each mode is setup with - interrupts initially disabled. */ - - MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit ; No interrupts - LDR SP, =FIQ_Stack - - MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit ; No interrupts - LDR SP, =IRQ_Stack - - MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit ; No interrupts - LDR SP, =ABT_Stack - - MSR CPSR_c, #Mode_UND|I_Bit|F_Bit ; No interrupts - LDR SP, =UND_Stack - - MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts - LDR SP, =SVC_Stack - - MSR CPSR_c, #Mode_SYS|I_Bit|F_Bit ; No interrupts - LDR SP, =USR_Stack - - /* We want to start in supervisor mode. Operation will switch to system - mode when the first task starts. */ - MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit - - -; --- Set bits 17-18 of the Core Configuration Control Register - - MOV r0, #0x60000 - MCR p15,0x1,r0,c15,c1,0 - - -; --- Now enter the C code - B ?main ; Note : use B not BL, because an application will - ; never return this way - - LTORG - - END -;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE**** - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s deleted file mode 100644 index d1a4b0b2b..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s +++ /dev/null @@ -1,228 +0,0 @@ -;******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -;* File Name : 91x_vect.s -;* Author : MCD Application Team -;* Date First Issued : 05/18/2006 : Version 1.0 -;* Description : This File used to initialize the exception and IRQ -;* vectors, and to enter/return to/from exceptions -;* handlers. -;******************************************************************************* -* History: -* 05/22/2007 : Version 1.2 -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -;******************************************************************************* -; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -; CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -; A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -#include "FreeRTOSConfig.h" -#include "ISR_Support.h" - - SECTION .intvec:CODE:ROOT(2) - CODE32 - - -VectorAddress EQU 0xFFFFF030 ; VIC Vector address register address. -VectorAddressDaisy EQU 0xFC000030 ; Daisy VIC Vector address register -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - - - - -;******************************************************************************* -; Import the __iar_program_start address from 91x_init.s -;******************************************************************************* - - IMPORT __iar_program_start - -;******************************************************************************* -; Import exception handlers -;******************************************************************************* - - IMPORT Undefined_Handler - IMPORT vPortYieldProcessor ; FreeRTOS SWI handler - IMPORT Prefetch_Handler - IMPORT Abort_Handler - IMPORT FIQ_Handler - - -;******************************************************************************* -; Export Peripherals IRQ handlers table address -;******************************************************************************* - -;******************************************************************************* -; Exception vectors -;******************************************************************************* - - LDR PC, Reset_Addr - LDR PC, Undefined_Addr - LDR PC, SWI_Addr - LDR PC, Prefetch_Addr - LDR PC, Abort_Addr - NOP ; Reserved vector - LDR PC, IRQ_Addr - -;******************************************************************************* -;* Function Name : FIQHandler -;* Description : This function is called when FIQ exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* -FIQHandler - SUB lr,lr,#4 ; Update the link register. - STMFD sp!,{r0-r7,lr} ; Save The workspace plus the current return - ; address lr_fiq into the FIQ stack. - ldr r0,=FIQ_Handler - ldr lr,=FIQ_Handler_end - bx r0 ;Branch to FIQ_Handler. -FIQ_Handler_end: - - LDMFD sp!,{r0-r7,pc}^; Return to the instruction following... - ; ...the exception interrupt. - - -;******************************************************************************* -; Exception handlers address table -;******************************************************************************* - -Reset_Addr DCD __iar_program_start -Undefined_Addr DCD UndefinedHandler -SWI_Addr DCD vPortYieldProcessor -Prefetch_Addr DCD PrefetchAbortHandler -Abort_Addr DCD DataAbortHandler - DCD 0 ; Reserved vector -IRQ_Addr DCD IRQHandler - - -;******************************************************************************* -; MACRO -;******************************************************************************* -;******************************************************************************* -;* Macro Name : SaveContext -;* Description : This macro is used to save the context before entering -; an exception handler. -;* Input : The range of registers to store. -;* Output : none -;******************************************************************************* - -SaveContext MACRO reg1,reg2 - STMFD sp!,{reg1-reg2,lr} ; Save The workspace plus the current return - ; address lr_ mode into the stack. - MRS r1,spsr ; Save the spsr_mode into r1. - STMFD sp!,{r1} ; Save spsr. - ENDM - -;******************************************************************************* -;* Macro Name : RestoreContext -;* Description : This macro is used to restore the context to return from -; an exception handler and continue the program execution. -;* Input : The range of registers to restore. -;* Output : none -;******************************************************************************* - -RestoreContext MACRO reg1,reg2 - LDMFD sp!,{r1} ; Restore the saved spsr_mode into r1. - MSR spsr_cxsf,r1 ; Restore spsr_mode. - LDMFD sp!,{reg1-reg2,pc}^; Return to the instruction following... - ; ...the exception interrupt. - ENDM - - -;******************************************************************************* -; Exception Handlers -;******************************************************************************* - - -;******************************************************************************* -;* Function Name : UndefinedHandler -;* Description : This function is called when undefined instruction -; exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -UndefinedHandler - SaveContext r0,r12 ; Save the workspace plus the current - ; return address lr_ und and spsr_und. - - ldr r0,=Undefined_Handler - ldr lr,=Undefined_Handler_end - bx r0 ; Branch to Undefined_Handler. - -Undefined_Handler_end: - RestoreContext r0,r12 ; Return to the instruction following... - ; ...the undefined instruction. - -;******************************************************************************* -;* Function Name : PrefetchAbortHandler -;* Description : This function is called when Prefetch Abort -; exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -PrefetchAbortHandler - SUB lr,lr,#4 ; Update the link register. - SaveContext r0,r12 ; Save the workspace plus the current - ; return address lr_abt and spsr_abt. - - ldr r0,=Prefetch_Handler - ldr lr,=Prefetch_Handler_end - bx r0 ; Branch to Prefetch_Handler. - -Prefetch_Handler_end: - RestoreContext r0,r12 ; Return to the instruction following that... - ; ...has generated the prefetch abort exception. - -;******************************************************************************* -;* Function Name : DataAbortHandler -;* Description : This function is called when Data Abort -; exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -DataAbortHandler - SUB lr,lr,#8 ; Update the link register. - SaveContext r0,r12 ; Save the workspace plus the current - ; return address lr_ abt and spsr_abt. - ldr r0,=Abort_Handler - ldr lr,=Abort_Handler_end - bx r0 ; Branch to Abort_Handler. - -Abort_Handler_end: - - RestoreContext r0,r12 ; Return to the instruction following that... - ; ...has generated the data abort exception. -;******************************************************************************* -;* Function Name : IRQHandler -;* Description : This function is called when IRQ exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -IRQHandler - portSAVE_CONTEXT ; Save the context of the current task. - - LDR r0, = VectorAddress - LDR r0, [r0] ; Read the routine address - LDR r1, = VectorAddressDaisy - LDR r1, [r1] - MOV lr, pc - bx r0 - LDR r0, = VectorAddress ; Write to the VectorAddress to clear the - STR r0, [r0] ; respective interrupt in the internal interrupt - LDR r1, = VectorAddressDaisy ; Write to the VectorAddressDaisy to clear the - STR r1,[r1] ; respective interrupt in the internal interrupt - - portRESTORE_CONTEXT ; Restore the context of the selected task. - - LTORG - - END -;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE**** diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s deleted file mode 100644 index c87b0004b..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s +++ /dev/null @@ -1,134 +0,0 @@ -;******************** (C) COPYRIGHT 2005 STMicroelectronics ******************** -;* File Name : 91x_vect.s -;* Author : MCD Application Team -;* Date First Issued : 10/25/2005 : Beta Version V0.1 -;* Description : This File used to initialize the exception and IRQ -;* vectors, and to enter/return to/from exceptions -;* handlers. -;******************************************************************************* -; History: -; 10/25/2005 : Beta Version V0.1 -;******************************************************************************* -; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -; CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -; A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -#include "FreeRTOSConfig.h" -#include "ISR_Support.h" - - MODULE ?RESET - COMMON INTVEC:CODE(2) - CODE32 - EXPORT LINK - -VectorAddress EQU 0xFFFFF030 ; VIC Vector address register address. -VectorAddressDaisy EQU 0xFC000030 ; Daisy VIC Vector address register - ; address. -LINK EQU 0x0 - -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - -;******************************************************************************* -; MACRO -;******************************************************************************* - -;******************************************************************************* -; Import the __program_start address from 91x_init.s -;******************************************************************************* - - IMPORT __program_start - -;******************************************************************************* -; Import exception handlers -;******************************************************************************* - - IMPORT vPortYieldProcessor ; FreeRTOS SWI handler - -;******************************************************************************* -; Export Peripherals IRQ handlers table address -;******************************************************************************* - -;******************************************************************************* -; Exception vectors -;******************************************************************************* - - LDR PC, Reset_Addr - LDR PC, Undefined_Addr - LDR PC, SWI_Addr - LDR PC, Prefetch_Addr - LDR PC, Abort_Addr - NOP ; Reserved vector - LDR PC, IRQ_Addr - LDR PC, FIQ_Addr - -;******************************************************************************* -; Exception handlers address table -;******************************************************************************* - -Reset_Addr DCD __program_start -Undefined_Addr DCD UndefinedHandler -SWI_Addr DCD vPortYieldProcessor -Prefetch_Addr DCD PrefetchAbortHandler -Abort_Addr DCD DataAbortHandler - DCD 0 ; Reserved vector -IRQ_Addr DCD IRQHandler -FIQ_Addr DCD FIQHandler - - -;******************************************************************************* -; Exception Handlers -;******************************************************************************* - -; - NOTE - -; The IRQ and SWI handlers are the only managed exception. - -UndefinedHandler - b UndefinedHandler - -PrefetchAbortHandler - b PrefetchAbortHandler - -DataAbortHandler - b DataAbortHandler - -FIQHandler - b FIQHandler - -DefaultISR - b DefaultISR - - -;******************************************************************************* -;* Function Name : IRQHandler -;* Description : This function called when IRQ exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -IRQHandler - portSAVE_CONTEXT ; Save the context of the current task. - - LDR r0, = VectorAddress - LDR r0, [r0] ; Read the routine address - LDR r1, = VectorAddressDaisy - LDR r1, [r1] - MOV lr, pc - bx r0 - LDR r0, = VectorAddress ; Write to the VectorAddress to clear the - STR r0, [r0] ; respective interrupt in the internal interrupt - LDR r1, = VectorAddressDaisy ; Write to the VectorAddressDaisy to clear the - STR r1,[r1] ; respective interrupt in the internal interrupt - - portRESTORE_CONTEXT ; Restore the context of the selected task. - - - LTORG - - END - -;******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE**** diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h deleted file mode 100644 index ba90f9b4a..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - - -/** - * The STR9 port can use either the watchdog or the timer 2 interrupt to generate - * the system tick. Set configUSE_WATCHDOG_TICK to 1 to use the watchdog, or - * 0 to use timer 2. - */ -#define configUSE_WATCHDOG_TICK 1 - - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 96000000 ) -#define configCPU_PERIPH_HZ ( ( unsigned long ) 48000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 100 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 180 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) 52000 ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h deleted file mode 100644 index 1828d488e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h +++ /dev/null @@ -1,60 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_ahbapb.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* AHBAPB software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef _91x_AHBAPB_H -#define _91x_AHBAPB_H - -#include "91x_map.h" - -#define AHBAPB_Split_Enable 0x01000000 -#define AHBAPB_Split_Disable 0xFEFFFFFF -#define AHBAPB_Error_Enable 0x0000100 -#define AHBAPB_Error_Disable 0xFFFFEFF - -/*FLAG*/ -#define AHBAPB_FLAG_ERROR 0x01 /* error flag*/ -#define AHBAPB_FLAG_OUTM 0x10 /* Out of Memory flag */ -#define AHBAPB_FLAG_APBT 0x20 /* APB Time-out flag */ -#define AHBAPB_FLAG_RW 0x40 /*Access type flag*/ - -/* Includes ------------------------------------------------------------------*/ - - -/* AHBAPB Init structure definition */ -typedef struct -{ - u32 AHBAPB_SetTimeOut; - u32 AHBAPB_Error; - u32 AHBAPB_Split; - u8 AHBAPB_SplitCounter; -}AHBAPB_InitTypeDef; - -/* Exported constants --------------------------------------------------------*/ -void AHBAPB_DeInit(AHBAPB_TypeDef* AHBAPBx); -void AHBAPB_Init(AHBAPB_TypeDef* AHBAPBx, AHBAPB_InitTypeDef* AHBAPB_InitStruct); -void AHBAPB_StructInit(AHBAPB_InitTypeDef* AHBAPB_InitStruct); -FlagStatus AHBAPB_GetFlagStatus(AHBAPB_TypeDef* AHBAPBx, u8 AHBAPB_FLAG); -void AHBAPB_ClearFlag(AHBAPB_TypeDef* AHBAPBx, u8 AHBAPB_FLAG); -u32 AHBAPB_GetPeriphAddrError(AHBAPB_TypeDef* AHBAPBx); - - -#endif /* _91x_AHBAPB_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h deleted file mode 100644 index 4fc85fff1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h +++ /dev/null @@ -1,119 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_conf.h -* Author : MCD Application Team -* Date First Issued : 03/31/2006 : Beta Version V0.1 -* Description : Library configuration. -******************************************************************************** -* History: -* 03/31/2006 : Beta Version V0.1 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -#ifndef __91x_CONF_H -#define __91x_CONF_H - -/* To work in buffered mode just decomment the following line */ - -//#define Buffered - -/* Comment the line below to put the library in release mode */ - -//#ifndef inline -// #define inline inline -//#endif - -/************************* AHBAPB *************************/ -#define _AHBAPB -#define _AHBAPB0 -#define _AHBAPB1 -/************************* VIC *************************/ -#define _VIC -#define _VIC0 -#define _VIC1 -/************************* DMA *************************/ -//#define _DMA -//#define _DMA_Channel0 -//#define _DMA_Channel1 -//#define _DMA_Channel2 -//#define _DMA_Channel3 -//#define _DMA_Channel4 -//#define _DMA_Channel5 -//#define _DMA_Channel6 -//#define _DMA_Channel7 - -/************************* EMI *************************/ -//#define _EMI -//#define _EMI_Bank0 -//#define _EMI_Bank1 -//#define _EMI_Bank2 -//#define _EMI_Bank3 -/************************* FMI *************************/ -#define _FMI -/************************* WIU *************************/ -//#define _WIU -/************************* TIM *************************/ -#define _TIM -//#define _TIM0 -//#define _TIM1 -#define _TIM2 -//#define _TIM3 -/************************* GPIO ************************/ -#define _GPIO -#define _GPIO0 -#define _GPIO1 -#define _GPIO2 -#define _GPIO3 -#define _GPIO4 -#define _GPIO5 -#define _GPIO6 -#define _GPIO7 -#define _GPIO8 -#define _GPIO9 -/************************* RTC *************************/ -//#define _RTC -/************************* SCU *************************/ -#define _SCU -/************************* MC **************************/ -//#define _MC -/************************* UART ************************/ -#define _UART -//#define _UART0 -#define _UART1 -//#define _UART2 -/************************* SSP *************************/ -//#define _SSP -//#define _SSP0 -//#define _SSP1 -/************************* CAN *************************/ -//#define _CAN -/************************* ADC *************************/ -//#define _ADC -/************************* WDG *************************/ -#define _WDG -/************************* I2C *************************/ -//#define _I2C -//#define _I2C0 -//#define _I2C1 -/************************ ENET *************************/ -#define _ENET -/************************ DENET ************************/ -//#define _DENET - -/*---------------------------- _Main_Crystal frequency value (KHz)------------*/ - -#ifndef _Main_Crystal -#define _Main_Crystal 25000 -#endif -/*------------------------------------------------------------------------------*/ - - -#endif /* __91x_CONF_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h deleted file mode 100644 index 6a383aafe..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h +++ /dev/null @@ -1,247 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : template.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : provide a short description of the source file indicating -* its purpose. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_DMA_H -#define __91x_DMA_H - -/* Includes ------------------------------------------------------------------*/ -#include"91x_map.h" - - -/* Exported types ------------------------------------------------------------*/ - -typedef struct -{ - u32 DMA_Channel_SrcAdd; /* The current source address (byte-aligned) of the data to be transferred.*/ - - u32 DMA_Channel_DesAdd; /* The current destination address (byte-aligned) of the data to be transferred.*/ - - u32 DMA_Channel_LLstItm; /* The word- aligned address for the next Linked List Item. */ - - u32 DMA_Channel_DesWidth; /* Destination transfer width. */ - - u32 DMA_Channel_SrcWidth; /* Source transfer width. */ - - u32 DMA_Channel_DesBstSize; /* The destination burst size which indicates the number of transfers that make up a destination burst transfer request.*/ - - u32 DMA_Channel_SrcBstSize; /* The source burst size.Indicates the number of transfers that make up a source burst */ - - u32 DMA_Channel_TrsfSize; /* Transfer size which indicates the size of the transfer when the DMA controller is the flow controller*/ - - u32 DMA_Channel_FlowCntrl; /* Flow control and transfer type. */ - - u32 DMA_Channel_Src; /* Source peripheral: selects the DMA source request peripheral. */ - - u32 DMA_Channel_Des; /* Destination peripheral:selects the DMA destination request peripheral. */ - -} DMA_InitTypeDef; - -/* Exported constants --------------------------------------------------------*/ - - /* Interrupts masks */ - -#define DMA_ITMask_IE 0x4000 /* Interrupt error mask. */ -#define DMA_ITMask_ITC 0x8000 /* Terminal count interrupt mask.*/ -#define DMA_ITMask_ALL 0xC000 /* All DMA_Channelx interrupts enable/disable mask*/ - - /* Sources Request (used as masks) */ - -#define DMA_USB_RX_Mask 0x0001 -#define DMA_USB_TX_Mask 0x0002 -#define DMA_TIM0_Mask 0x0004 -#define DMA_TIM1_Mask 0x0008 -#define DMA_UART0_RX_Mask 0x0010 -#define DMA_UART0_TX_Mask 0x0020 -#define DMA_UART1_RX_Mask 0x0040 -#define DMA_UART1_TX_Mask 0x0080 -#define DMA_External_Req0_Mask 0x0100 -#define DMA_External_Req1_Mask 0x0200 -#define DMA_I2C0_Mask 0x0400 -#define DMA_I2C1_Mask 0x0800 -#define DMA_SSP0_RX_Mask 0x1000 -#define DMA_SSP0_TX_Mask 0x2000 -#define DMA_SSP1_RX_Mask 0x4000 -#define DMA_SSP1_TX_Mask 0x8000 - - -/* Previleged Mode and user mode */ - -#define DMA_PrevilegedMode 0x10000000 -#define DMA_UserMode 0xEFFFFFFF - - -/* Error and Terminal Count interrupts Status, after and before"raw" masking */ -#define DMA_IS 0x01 -#define DMA_TCS 0x02 -#define DMA_ES 0x03 -#define DMA_TCRS 0x04 -#define DMA_ERS 0x05 - - -/* interrupt clear: Terminal Count flag Clear and Error flag clear*/ - -#define DMA_TCC 0x01 -#define DMA_EC 0x02 - -/* channel index "0...7"*/ - -#define Channel0 0 -#define Channel1 1 -#define Channel2 2 -#define Channel3 3 -#define Channel4 4 -#define Channel5 5 -#define Channel6 6 -#define Channel7 7 - - - -/* Destination request selection: selects the DMA Destination request peripheral */ - -#define DMA_DES_USB_RX 0x00 -#define DMA_DES_USB_TX 0x40 -#define DMA_DES_TIM1 0x80 -#define DMA_DES_TIM2 0xC0 -#define DMA_DES_UART0_RX 0x100 -#define DMA_DES_UART0_TX 0x140 -#define DMA_DES_UART1_RX 0x180 -#define DMA_DES_UART1_TX 0x1C0 -#define DMA_DES_External_Req0 0x200 -#define DMA_DES_External_Req1 0x240 -#define DMA_DES_I2C0 0x280 -#define DMA_DES_I2C1 0x2C0 -#define DMA_DES_SSP0_RX 0x300 -#define DMA_DES_SSP0_TX 0x340 -#define DMA_DES_SSP1_RX 0x380 -#define DMA_DES_SSP1_TX 0x3C0 - - - - -/* Source request selection: selects the DMA Source request peripheral */ - -#define DMA_SRC_USB_RX 0x00 -#define DMA_SRC_USB_TX 0x02 -#define DMA_SRC_TIM1 0x04 -#define DMA_SRC_TIM2 0x06 -#define DMA_SRC_UART0_RX 0x08 -#define DMA_SRC_UART0_TX 0x0A -#define DMA_SRC_UART1_RX 0x0C -#define DMA_SRC_UART1_TX 0x0E -#define DMA_SRC_External_Req0 0x10 -#define DMA_SRC_External_Req1 0x12 -#define DMA_SRC_I2C0 0x14 -#define DMA_SRC_I2C1 0x16 -#define DMA_SRC_SSP0_RX 0x18 -#define DMA_SRC_SSP0_TX 0x1A -#define DMA_SRC_SSP1_RX 0x1C -#define DMA_SRC_SSP1_TX 0x1E - - - - - -#define DMA_FlowCntrlt0_DMA 0x00000000 /* transfer type :Memory-to-memory, flow controller:DMA */ -#define DMA_FlowCntrl1_DMA 0x00000800 /* transfer type :Memory-to-peripheral, flow controller:DMA */ -#define DMA_FlowCntrl2_DMA 0x00001000 /* transfer type :Peripheral-to-memory, flow controller:DMA */ -#define DMA_FlowCntrl3_DMA 0x00001800 /* transfer type :Source peripheral-to-destination peripheral, flow controller:DMA */ -#define DMA_FlowCntrl_DestPerip 0x00002000 /* transfer type :Source peripheral-to-destination peripheral, flow controller:Destination peripheral */ -#define DMA_FlowCntrl_Perip1 0x00002800 /* transfer type :Memory-to-peripheral, flow controller:peripheral */ -#define DMA_FlowCntrl_Perip2 0x00003000 /* transfer type : Peripheral-to-memory, flow controller:peripheral */ -#define DMA_FlowCntrl_SrcPerip 0x00003800 /* transfer type :Source peripheral-to-destination peripheral, flow controller:Source peripheral */ - - - - -#define DMA_SrcBst_1Data 0x00000000 /* Source Burst transfer request IS 1 Data ( DATA = Source transfer width ) */ -#define DMA_SrcBst_4Data 0x00001000 /* Source Burst transfer request IS 4 Data */ -#define DMA_SrcBst_8Data 0x00002000 /* Source Burst transfer request IS 8 Data */ -#define DMA_SrcBst_16Data 0x00003000 /* Source Burst transfer request IS 16 Data */ -#define DMA_SrcBst_32Data 0x00004000 /* Source Burst transfer request IS 32 Data */ -#define DMA_SrcBst_64Data 0x00005000 /* Source Burst transfer request IS 64Data */ -#define DMA_SrcBst_128Data 0x00006000 /* Source Burst transfer request IS 128 Data */ -#define DMA_SrcBst_256Data 0x00007000 /* Source Burst transfer request IS 256 Data */ - - - - -#define DMA_DesBst_1Data 0x00000000 /*Destination Burst transfer request IS 1Data ( DATA = destination transfer width ) */ -#define DMA_DesBst_4Data 0x00008000 /*Destination Burst transfer request IS 1 Data */ -#define DMA_DesBst_8Data 0x00010000 /*Destination Burst transfer request IS 4 Data */ -#define DMA_DesBst_16Data 0x00018000 /*Destination Burst transfer request IS 8 Data */ -#define DMA_DesBst_32Data 0x00020000 /*Destination Burst transfer request IS 16 Data */ -#define DMA_DesBst_64Data 0x00028000 /*Destination Burst transfer request IS 32 Data */ -#define DMA_DesBst_128Data 0x00030000 /*Destination Burst transfer request IS 128 Data */ -#define DMA_DesBst_256Data 0x00038000 /*Destination Burst transfer request IS 256 Data */ - - - - - -#define DMA_SrcWidth_Byte 0x00000000 /* source Width is one Byte */ -#define DMA_SrcWidth_HalfWord 0x00040000 /* source Width is one HalfWord */ -#define DMA_SrcWidth_Word 0x00080000 /* source Width is one Word */ - - - - -#define DMA_DesWidth_Byte 0x00000000 /* Destination Width is one Byte */ -#define DMA_DesWidth_HalfWord 0x00200000 /* Destination Width is one HalfWord */ -#define DMA_DesWidth_Word 0x00400000 /* Destination Width is one Word */ - - - - - - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -void DMA_DeInit(void); -void DMA_Init(DMA_Channel_TypeDef * DMA_Channelx, DMA_InitTypeDef * DMA_InitStruct); -void DMA_StructInit(DMA_InitTypeDef *DMA_InitStruct); -void DMA_Cmd(FunctionalState NewState); -void DMA_ITMaskConfig(DMA_Channel_TypeDef * DMA_Channelx, u16 DMA_ITMask, FunctionalState NewState); -void DMA_ITConfig(DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState); -FlagStatus DMA_GetChannelStatus(u8 ChannelIndx ); -ITStatus DMA_GetITStatus(u8 ChannelIndx,u8 DMA_ITReq); -void DMA_ClearIT(u8 ChannelIndx,u8 DMA_ITClr); -void DMA_SyncConfig(u16 DMA_SrcReq, FunctionalState NewState); -FlagStatus DMA_GetSReq(u16 DMA_SrcReq); -FlagStatus DMA_GetLSReq(u16 DMA_SrcReq); -FlagStatus DMA_GetBReq(u16 DMA_SrcReq); -FlagStatus DMA_GetLBReq(u16 DMA_SrcReq); -FlagStatus DMA_GetChannelActiveStatus( DMA_Channel_TypeDef * DMA_Channelx); -void DMA_SetSReq(u16 DMA_SrcReq); -void DMA_SetLSReq(u16 DMA_SrcReq); -void DMA_SetBReq(u16 DMA_SrcReq); -void DMA_SetLBReq(u16 DMA_SrcReq); -void DMA_ChannelCmd (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelHalt (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelBuffering (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelLockTrsf(DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelCache(DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelProt0Mode(DMA_Channel_TypeDef * DMA_Channelx,u32 Prot0Mode); -void DMA_ChannelSRCIncConfig (DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState); -void DMA_ChannelDESIncConfig (DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState); - -#endif /* __91x_DMA_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h deleted file mode 100644 index 7ba5263e1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h +++ /dev/null @@ -1,358 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_enet.h -* Author : MCD Application Team -* Date First Issued : May 2006 -* Description : ENET driver defines & function prototypes -******************************************************************************** -* History: -* May 2006: v1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -#ifndef _ENET_H_ -#define _ENET_H_ - -#include <91x_lib.h> - -#define ENET_BUFFER_SIZE 1520 -/*Structures typedef----------------------------------------------------------*/ - -/*Struct containing the DMA Descriptor data */ -typedef struct { - volatile u32 dmaStatCntl; /* DMA Status and Control Register */ - volatile u32 dmaAddr; /* DMA Start Address Register */ - volatile u32 dmaNext; /* DMA Next Descriptor Register */ - volatile u32 dmaPackStatus; /* DMA Packet Status and Control Register */ -} ENET_DMADSCRBase; - - -/* ENET_MACConfig Struct*/ -typedef struct { - FunctionalState ReceiveALL; /* Receive All frames: no address rule filtering */ - u32 MIIPrescaler; /* MII Clock Prescaler value */ - FunctionalState LoopbackMode; /* MAC Loopback mode */ - u32 AddressFilteringMode; /* Address Filtering Mode */ - u32 VLANFilteringMode; /* VLAN Filtering Mode */ - FunctionalState PassWrongFrame; /* Pass wrong frame (CRC, overlength, runt..)*/ - FunctionalState LateCollision; /* Retransmit frame when late collision*/ - FunctionalState BroadcastFrameReception; /* Accept broardcast frame */ - FunctionalState PacketRetry; /* Retransmit frame in case of collision */ - FunctionalState RxFrameFiltering; /* Filter early runt frame and address filter fail frames*/ - FunctionalState AutomaticPadRemoval; /* Automatic Padding removal */ - FunctionalState DeferralCheck; /* Excessive Defferal check */ -} ENET_MACConfig; - -/* ENET_TxStatus Struct*/ -typedef struct { - FlagStatus PacketRetry; - u8 ByteCount; - u8 collisionCount; - FlagStatus LateCollisionObserved; - FlagStatus Deffered; - FlagStatus UnderRun; - FlagStatus ExcessiveCollision; - FlagStatus LateCollision; - FlagStatus ExcessiveDefferal; - FlagStatus LossOfCarrier; - FlagStatus NoCarrier; - FlagStatus FrameAborted; -} ENET_TxStatus; - -/* ENET_RxStatus Struct*/ -typedef struct { - FlagStatus FrameAborted; - FlagStatus PacketFilter; - FlagStatus FilteringFail; - FlagStatus BroadCastFrame; - FlagStatus MulticastFrame; - FlagStatus UnsupportedControFrame; - FlagStatus ControlFrame; - FlagStatus LengthError; - FlagStatus Vlan2Tag; - FlagStatus Vlan1Tag; - FlagStatus CRCError; - FlagStatus ExtraBit; - FlagStatus MIIError; - FlagStatus FrameType; - FlagStatus LateCollision; - FlagStatus OverLength; - FlagStatus RuntFrame; - FlagStatus WatchDogTimout; - FlagStatus FalseCarrierIndication; - u16 FrameLength; -} ENET_RxStatus; - -/*Constants-------------------------------------------------------------------*/ - - -/* AddressFilteringMode */ -#define MAC_Perfect_Multicast_Perfect 0x0 -#define MAC_Perfect_Multicast_Hash 0x1<<17 -#define MAC_Hash_Multicast_Hash 0x2<<17 -#define MAC_Inverse 0x3<<17 -#define MAC_Promiscuous 0x4<<17 -#define MAC_Perfect_Multicast_All 0x5<<17 -#define MAC_Hash_Multicast_All 0x6<<17 - -/* VLANFilteringMode */ -#define VLANFilter_VLTAG_VLID 1 -#define VLANfilter_VLTAG 0 - -/* MIIPrescaler */ -#define MIIPrescaler_1 0 /* Prescaler for MDC clock when HCLK < 50 MHz */ -#define MIIPrescaler_2 1 /* Precaler for MDC when HCLK > = 50 MHz */ - - -/* MAC Address*/ -#define MAC_ADDR0 0x00 -#define MAC_ADDR1 0x0A -#define MAC_ADDR2 0x08 -#define MAC_ADDR3 0x04 -#define MAC_ADDR4 0x02 -#define MAC_ADDR5 0x01 - -/* Multicast Address */ -#define MCAST_ADDR0 0xFF -#define MCAST_ADDR1 0x00 -#define MCAST_ADDR2 0xFF -#define MCAST_ADDR3 0x00 -#define MCAST_ADDR4 0xFF -#define MCAST_ADDR5 0x00 - - - -#define ENET_MAX_PACKET_SIZE 1520 -#define ENET_NEXT_ENABLE 0x4000 - -/*ENET_OperatingMode*/ -/* Set the full/half-duplex mode at 100 Mb/s */ -#define PHY_FULLDUPLEX_100M 0x2100 -#define PHY_HALFDUPLEX_100M 0x2000 -/* Set the full/half-duplex mode at 10 Mb/s */ -#define PHY_FULLDUPLEX_10M 0x0100 -#define PHY_HALFDUPLEX_10M 0x0000 - - -/*----------------------------functions----------------------------------------*/ - -void ENET_MACControlConfig(ENET_MACConfig *MAC_Config); -void ENET_GetRxStatus(ENET_RxStatus * RxStatus); -void ENET_GetTxStatus(ENET_TxStatus * TxStatus); -long ENET_SetOperatingMode(void); -void ENET_InitClocksGPIO(void); -void ENET_MIIWriteReg (u8 phyDev, u8 phyReg, u32 phyVal); -u32 ENET_MIIReadReg (u8 phyDev, u32 phyReg ); -void ENET_RxDscrInit(void); -void ENET_TxDscrInit(void); -void ENET_Init(void); -void ENET_Start(void); -u32 ENET_RxPacketGetSize(void); -void ENET_TxPkt(void *ppkt, u16 size); -u32 ENET_HandleRxPkt(void *ppkt); - - -/*Driver internal constants---------------------------------------------------*/ - -/* MII Address */ -/* Description of bit field values of the MII Address Register */ -#define MAC_MIIA_PADDR 0x0000F800 -#define MAC_MII_ADDR_PHY_ADDR MAC_MIIA_PADDR /* Phy Address (default: 0): select one of 32 dev */ -#define MAC_MII_ADDR_MII_REG 0x000007C0 /* MII Register (default: 0) */ -#define MAC_MII_ADDR_MII_WRITE 0x00000002 /* MII Write */ -#define MAC_MIIA_PHY_DEV_ADDR (0x00005000 & MAC_MIIA_PADDR) /*To be changed if PHY device address changes */ -#define MAC_MII_ADDR_MII_BUSY 0x00000001 /* MII Busy */ - - -/* MII DATA register */ -#define MAC_MII_DATA_REG 0x0000FFFF /* MII Data */ - -/* MII Read / write timeouts*/ -#define MII_READ_TO 0x0004FFFF -#define MII_WRITE_TO 0x0004FFFF - -/* Description of common PHY registers */ -#define MAC_MII_REG_XCR 0x00000000 /* Tranceiver control register */ -#define MAC_MII_REG_XSR 0x00000001 /* Tranceiver status register */ -#define MAC_MII_REG_PID1 0x00000002 /* Tranceiver PHY identifier 1 */ -#define MAC_MII_REG_PID2 0x00000003 /* Tranceiver PHY identifier 2 */ -#define MAC_MII_REG_ANA 0x00000004 /* Auto-Negociation Advertissement register */ -#define MAC_MII_REG_ANLPA 0x00000005 /* Auto-Negociation Link Partner Ability register */ -#define MAC_MII_REG_ANE 0x00000006 /* Auto-Negociation Expansion register */ - - - - -/* MAC_MCR register fields */ -#define MAC_MCR_RA 0x80000000 -#define MAC_MCR_EN 0x40000000 -#define MAC_MCR_PS 0x03000000 -#define MAC_MCR_DRO 0x00800000 -#define MAC_MCR_LM 0x00600000 -#define MAC_MCR_FDM 0x00100000 -#define MAC_MCR_AFM 0x000E0000 -#define MAC_MCR_PWF 0x00010000 -#define MAC_MCR_VFM 0x00008000 -#define MAC_MCR_ELC 0x00001000 -#define MAC_MCR_DBF 0x00000800 -#define MAC_MCR_DPR 0x00000400 -#define MAC_MCR_RVFF 0x00000200 -#define MAC_MCR_APR 0x00000100 -#define MAC_MCR_BL 0x000000C0 -#define MAC_MCR_DCE 0x00000020 -#define MAC_MCR_RVBE 0x00000010 -#define MAC_MCR_TE 0x00000008 -#define MAC_MCR_RE 0x00000004 -#define MAC_MCR_RCFA 0x00000001 - -/* MTS */ -#define MAC_MTS_FA 0x00000001 -#define MAC_MTS_NC 0x00000004 -#define MAC_MTS_LOC 0x00000008 -#define MAC_MTS_ED 0x00000010 -#define MAC_MTS_LC 0x00000020 -#define MAC_MTS_EC 0x00000040 -#define MAC_MTS_UR 0x00000080 -#define MAC_MTS_DEF 0x00000100 -#define MAC_MTS_LCO 0x00000200 -#define MAC_MTS_CC 0x00003C00 -#define MAC_MTS_BC 0x7FFC0000 -#define MAC_MTS_PR 0x80000000 - -/* MRS */ -#define MAC_MRS_FL 0x000007FF -#define MAC_MRS_FCI 0x00002000 -#define MAC_MRS_WT 0x00004000 -#define MAC_MRS_RF 0x00008000 -#define MAC_MRS_OL 0x00010000 -#define MAC_MRS_LC 0x00020000 -#define MAC_MRS_FT 0x00040000 -#define MAC_MRS_ME 0x00080000 -#define MAC_MRS_EB 0x00100000 -#define MAC_MRS_CE 0x00200000 -#define MAC_MRS_VL1 0x00400000 -#define MAC_MRS_VL2 0x00800000 -#define MAC_MRS_LE 0x01000000 -#define MAC_MRS_CF 0x02000000 -#define MAC_MRS_UCF 0x04000000 -#define MAC_MRS_MCF 0x08000000 -#define MAC_MRS_BF 0x10000000 -#define MAC_MRS_FF 0x20000000 -#define MAC_MRS_PF 0x40000000 -#define MAC_MRS_FA 0x80000000 - -/* SCR */ -#define DMA_SCR_SRESET 0x00000001 /* Soft Reset (DMA_SCR_RESET) */ -#define DMA_SCR_LOOPB 0x00000002 /* Loopback mode (DMA_SCR_LOOPB) */ -#define DMA_SCR_RX_MBSIZE 0x00000010 /* Max defined burst length in RX mode (DMA_SCR_RX_MAX_BURST_...) */ -#define DMA_SCR_TX_MBSIZE 0x000000C0 /* Max defined burst length in TX mode (DMA_SCR_TX_MAX_BURST_...) */ -#define DMA_SCR_RX_MAX_BURST_SZ DMA_SCR_RX_MBSIZE /* Maximum value of defined burst length in RX mode */ -#define DMA_SCR_RX_MAX_BURST_SZ_VAL 0x00000000 /* Default value of burst length in RX mode */ -#define DMA_SCR_TX_MAX_BURST_SZ DMA_SCR_TX_MBSIZE /* Maximum value of defined burst length in TX mode */ -#define DMA_SCR_TX_MAX_BURST_SZ_VAL 0x000000C0 /* Default value of burst length in TX mode */ - - -/* DMA_RX_START */ -#define DMA_RX_START_DMAEN 0x00000001 -#define DMA_RX_START_STFETCH 0x00000004 -#define DMA_RX_START_FFAIL 0x00000020 -#define DMA_RX_START_RUNT 0x00000040 -#define DMA_RX_START_COLLS 0x00000080 -#define DMA_RX_START_DMA_EN 0x00000001 /* set = 0 by sw force a DMA abort */ -#define DMA_RX_START_FETCH 0x00000004 /* start fetching the 1st descriptor */ -#define DMA_RX_START_FILTER_FAIL 0x00000020 /* if = 1 the address filtering failed cond */ -#define DMA_RX_START_RUNT 0x00000040 /* discard damaged RX frames from cpu charge */ -#define DMA_RX_START_COLLS_SEEN 0x00000080 /* Late Collision Seen Cond discard frame automat. */ -#define DMA_RX_START_DFETCH_DLY 0x00FFFF00 /* Descriptor Fetch Delay */ -#define DMA_RX_START_DFETCH_DLY_POS 8 -#define DMA_RX_START_DFETCH_DEFAULT 0x00010000 /* Descriptor Fetch Delay default value */ - -/* DMA_DSCR_PACK_STAT */ -#define DMA_DSCR_PACK_STAT 0x00010000 - - -/* DMA_TX_START */ -#define DMA_TX_START_DMAEN 0x00000001 -#define DMA_TX_START_STFETCH 0x00000004 -#define DMA_TX_START_URUN 0x00000020 -#define DMA_TX_START_DISPAD 0x00000040 -#define DMA_TX_START_ADDCTC 0x00000080 -#define DMA_TX_START_DMA_EN 0x00000001 /* set = 0 by sw force a DMA abort */ -#define DMA_TX_START_FETCH 0x00000004 /* start fetching the 1st descriptor */ -#define DMA_RX_START_FILTER_FAIL 0x00000020 /* if = 1 the address filtering failed cond */ -#define DMA_TX_START_DFETCH_DLY 0x00FFFF00 /* Descriptor Fetch Delay */ -#define DMA_TX_START_DFETCH_DEFAULT 0x00010000 /* Descriptor Fetch Delay */ -#define DMA_TX_START_DFETCH_DLY_POS 0x8 -#define DMA_TX_START_URUN 0x00000020 -#define DMA_TX_START_DIS_PADDING 0x00000040 /* Avoid automatic addition of padding bits by MAC*/ -#define DMA_TX_START_ADD_CRC_DIS 0x00000080 /* Tell MAC not to ADD CRC field at end of frame */ - -/* DMA_DSCR_CNTL */ -#define DMA_DSCR_CNTL_XFERCOUNT 0x00000FFF -#define DMA_DSCR_CNTL_NXTEN 0x00004000 - -/* DMA_DSCR_ADDR */ -#define DMA_DSCR_ADDR 0xFFFFFFFC /* for DMA Start Address (32 bit Word Align) */ -#define DMA_DSCR_ADDR_FIX_ADDR 0x00000002 /* Disable incrementing of DMA_ADDR */ -#define DMA_DSCR_ADDR_WRAPEN_SET 0x00000001 -#define DMA_DSCR_ADDR_WRAPEN_RST 0x00000000 - -/* DMA_DSCR_NEXT_ADDR TX/RX */ -#define DMA_DSCR_NXT_DSCR_ADDR 0xFFFFFFFC /* Points to Next descriptor starting address */ -#define DMA_DSCR_NXT_NPOL_EN 0x00000001 /* Next Descriptor Polling Enable */ -#define DMA_DSCR_NXT_NEXT_EN 0x00000002 /* Next Descriptor Fetch mode Enable */ - -/* DMA Descriptor Packet Status: TX */ -#define DMA_DSCR_TX_STATUS_FA_MSK 0x00000001 /* Frame Aborted */ -#define DMA_DSCR_TX_STATUS_JTO_MSK 0x00000002 /* Jabber Timeout. */ -#define DMA_DSCR_TX_STATUS_NOC_MSK 0x00000004 /* No Carrier */ -#define DMA_DSCR_TX_STATUS_LOC_MSK 0x00000008 /* Loss of Carrier */ -#define DMA_DSCR_TX_STATUS_EXCD_MSK 0x00000010 /* Excessive Deferral */ -#define DMA_DSCR_TX_STATUS_LCOLL_MSK 0x00000020 /* Late Collision */ -#define DMA_DSCR_TX_STATUS_ECOLL_MSK 0x00000040 /* Excessive Collisions */ -#define DMA_DSCR_TX_STATUS_URUN_MSK 0x00000080 /* Under Run */ -#define DMA_DSCR_TX_STATUS_DEFER_MSK 0x00000100 /* Deferred */ -#define DMA_DSCR_TX_STATUS_LCOLLO_MSK 0x00000200 /* Late Collision Observed */ -#define DMA_DSCR_TX_STATUS_CCNT_MSK 0x00003C00 /* Collision Count */ -#define DMA_DSCR_TX_STATUS_HBFAIL_MSK 0x00004000 /* Heart Beat Fail */ -#define DMA_DSCR_TX_STATUS_VALID_MSK 0x00010000 /* Valid bit indicator - This bit marks the dscriptors this word belong */ -#define DMA_DSCR_TX_STATUS_PKT_RTRY_MSK 0x80000000 /* Packet Retry */ -#define DMA_DSCR_TX_STATUS_ORED_ERR_MSK 0x000003D7 /* for total number of errors */ - -/* DMA Descriptor Packet Status: RX */ -#define DMA_DSCR_RX_STATUS_FLEN_MSK 0x000007ff /* 0x00003FFF * Frame Length (max 2047) */ -#define DMA_DSCR_RX_STATUS_FTLONG_MSK 0x00001000 /* Over Lenght */ -#define DMA_DSCR_RX_STATUS_FCI_MSK 0x00002000 /* Frame too Long */ -#define DMA_DSCR_RX_STATUS_WDTO_MSK 0x00004000 /* Watchdog Timeout */ -#define DMA_DSCR_RX_STATUS_RUNTFR_MSK 0x00008000 /* Runt Frame */ -#define DMA_DSCR_RX_STATUS_VALID_MSK 0x00010000 /* Valid bit indicator - This bit marks the dscriptors this word */ -#define DMA_DSCR_RX_STATUS_COLLSEEN_MSK 0x00020000 /* Collision Seen */ -#define DMA_DSCR_RX_STATUS_FTYPE_MSK 0x00040000 /* Frame Type */ -#define DMA_DSCR_RX_STATUS_MII_ERR_MSK 0x00080000 /* MII Error */ -#define DMA_DSCR_RX_STATUS_DRBBIT_MSK 0x00100000 /* Dribbling Bit */ -#define DMA_DSCR_RX_STATUS_CRC_ERR_MSK 0x00200000 /* CRC Error */ -#define DMA_DSCR_RX_STATUS_VLAN1_FR_MSK 0x00400000 /* One-Level VLAN Frame */ -#define DMA_DSCR_RX_STATUS_VLAN2_FR_MSK 0x00800000 /* Two-Level VLAN Frame */ -#define DMA_DSCR_RX_STATUS_LEN_ERR_MSK 0x01000000 /* Length Error */ -#define DMA_DSCR_RX_STATUS_CTL_FR_MSK 0x02000000 /* Control Frame */ -#define DMA_DSCR_RX_STATUS_UCTRL_FR_MSK 0x04000000 /* Unsupported Control Frame */ -#define DMA_DSCR_RX_STATUS_MCAST_FR_MSK 0x08000000 /* Multicast Frame */ -#define DMA_DSCR_RX_STATUS_BCAST_FR_MSK 0x10000000 /* BroadCast Frame */ -#define DMA_DSCR_RX_STATUS_FLT_FAIL_MSK 0x20000000 /* Filtering Fail */ -#define DMA_DSCR_RX_STATUS_PKT_FILT_MSK 0x40000000 /* Packet Filter */ -#define DMA_DSCR_RX_STATUS_MIS_FR_MSK 0x80000000 /* Missed Frame */ -#define DMA_DSCR_RX_STATUS_ERROR_MSK (DMA_DSCR_RX_STATUS_LEN_ERR | DMA_DSCR_RX_STATUS_CRC_ERR | \ - DMA_DSCR_RX_STATUS_MII_ERR | DMA_DSCR_RX_STATUS_RUNTFR | \ - DMA_DSCR_RX_STATUS_FTLONG | DMA_DSCR_RX_STATUS_COLLSEEN) -#define DMA_DSCR_RX_STATUS_ORED_ERR_MSK 0x00000000 /*Mask for total number of errors */ - - -#endif /* _ENET_H_ */ - -/******************** (C) COPYRIGHT 2006 STMicroelectronics *******************/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h deleted file mode 100644 index 06e811567..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h +++ /dev/null @@ -1,184 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_fmi.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* FMI software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Define to prevent recursive inclusion ------------------------------------ */ - -#ifndef __91x_FMI_H -#define __91x_FMI_H - -/* ========================================================================== */ -/* When bank 1 is remapped at address 0x0, decomment the following line */ -/* ========================================================================== */ - -//#define Remap_Bank_1 - - -/* Includes ------------------------------------------------------------------*/ - -#include "91x_map.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ - -/* FMI banks */ - -#ifdef Remap_Bank_1 - -#define FMI_BANK_0 ((*(vu32*)0x54000010) << 2) /* FMI Bank 0 */ -#define FMI_BANK_1 ((*(vu32*)0x5400000C) << 2) /* FMI Bank 1 */ - -#else /* Remap Bank 0 */ - -#define FMI_BANK_0 ((*(vu32*)0x5400000C) << 2) /* FMI Bank 0 */ -#define FMI_BANK_1 ((*(vu32*)0x54000010) << 2) /* FMI Bank 1 */ - -#endif - -/* FMI sectors */ - -#define FMI_B0S0 0x00000000 + FMI_BANK_0 /* Bank 0 sector 0 */ -#define FMI_B0S1 0x00010000 + FMI_BANK_0 /* Bank 0 sector 1 */ -#define FMI_B0S2 0x00020000 + FMI_BANK_0 /* Bank 0 sector 2 */ -#define FMI_B0S3 0x00030000 + FMI_BANK_0 /* Bank 0 sector 3 */ -#define FMI_B0S4 0x00040000 + FMI_BANK_0 /* Bank 0 sector 4 */ -#define FMI_B0S5 0x00050000 + FMI_BANK_0 /* Bank 0 sector 5 */ -#define FMI_B0S6 0x00060000 + FMI_BANK_0 /* Bank 0 sector 6 */ -#define FMI_B0S7 0x00070000 + FMI_BANK_0 /* Bank 0 sector 7 */ - -#define FMI_B1S0 0x00000000 + FMI_BANK_1 /* Bank 1 sector 0 */ -#define FMI_B1S1 0x00002000 + FMI_BANK_1 /* Bank 1 sector 1 */ -#define FMI_B1S2 0x00004000 + FMI_BANK_1 /* Bank 1 sector 2 */ -#define FMI_B1S3 0x00006000 + FMI_BANK_1 /* Bank 1 sector 3 */ - -/* FMI Flags */ - -#define FMI_FLAG_SPS 0x02 /* Sector Protection Status Flag */ -#define FMI_FLAG_PSS 0x04 /* Program Suspend Status Flag */ -#define FMI_FLAG_PS 0x10 /* Program Status Flag */ -#define FMI_FLAG_ES 0x20 /* Erase Status Flag */ -#define FMI_FLAG_ESS 0x40 /* Erase Suspend Status Flag */ -#define FMI_FLAG_PECS 0x80 /* FPEC Status Flag */ - -/* FMI read wait states */ - -#define FMI_READ_WAIT_STATE_1 0x0000 /* One read wait state */ -#define FMI_READ_WAIT_STATE_2 0x2000 /* Two read wait states */ -#define FMI_READ_WAIT_STATE_3 0x4000 /* Three read wait states */ - -/* FMI write wait states */ - -#define FMI_WRITE_WAIT_STATE_0 0xFFFFFEFF /* Zero wait state */ -#define FMI_WRITE_WAIT_STATE_1 0x00000100 /* One wait state */ - -/* FMI power down configuration */ - -#define FMI_PWD_ENABLE 0x1000 /* FMI Power Down Enable */ -#define FMI_PWD_DISABLE 0x0000 /* FMI Power Down Disable */ - -/* FMI low voltage detector */ - -#define FMI_LVD_ENABLE 0x0000 /* FMI Low Voltage Detector Enable */ -#define FMI_LVD_DISABLE 0x0800 /* FMI Low Voltage Detector Disable */ - -/* FMI frequency range */ - -#define FMI_FREQ_LOW 0x0000 /* FMI Low bus working frequency */ -#define FMI_FREQ_HIGH 0x0040 /* FMI High bus working gfrequency */ - /* Above 66 MHz*/ -/* FMI OTP word addresses */ - -#define FMI_OTP_WORD_0 0x00 /* OTP word 0 */ -#define FMI_OTP_WORD_1 0x04 /* OTP word 1 */ -#define FMI_OTP_WORD_2 0x08 /* OTP word 2 */ -#define FMI_OTP_WORD_3 0x0C /* OTP word 3 */ -#define FMI_OTP_WORD_4 0x10 /* OTP word 4 */ -#define FMI_OTP_WORD_5 0x14 /* OTP word 5 */ -#define FMI_OTP_WORD_6 0x18 /* OTP word 6 */ -#define FMI_OTP_WORD_7 0x1C /* OTP word 7 */ - -/* FMI OTP halfword addresses */ - -#define FMI_OTP_LOW_HALFWORD_0 0x00 /* OTP Low halfword 0 */ -#define FMI_OTP_HIGH_HALFWORD_0 0x02 /* OTP High halfword 0 */ -#define FMI_OTP_LOW_HALFWORD_1 0x04 /* OTP Low halfword 1 */ -#define FMI_OTP_HIGH_HALFWORD_1 0x06 /* OTP High halfword 1 */ -#define FMI_OTP_LOW_HALFWORD_2 0x08 /* OTP Low halfword 2 */ -#define FMI_OTP_HIGH_HALFWORD_2 0x0A /* OTP High halfword 2 */ -#define FMI_OTP_LOW_HALFWORD_3 0x0C /* OTP Low halfword 3 */ -#define FMI_OTP_HIGH_HALFWORD_3 0x0E /* OTP High halfword 3 */ -#define FMI_OTP_LOW_HALFWORD_4 0x10 /* OTP Low halfword 4 */ -#define FMI_OTP_HIGH_HALFWORD_4 0x12 /* OTP High halfword 4 */ -#define FMI_OTP_LOW_HALFWORD_5 0x14 /* OTP Low halfword 5 */ -#define FMI_OTP_HIGH_HALFWORD_5 0x16 /* OTP High halfword 5 */ -#define FMI_OTP_LOW_HALFWORD_6 0x18 /* OTP Low halfword 6 */ -#define FMI_OTP_HIGH_HALFWORD_6 0x1A /* OTP High halfword 6 */ -#define FMI_OTP_LOW_HALFWORD_7 0x1C /* OTP Low halfword 7 */ -#define FMI_OTP_HIGH_HALFWORD_7 0x1E /* OTP High halfword 7 */ - -/* FMI sectors Masks */ - -#define FMI_B0S0_MASK 0x0001 /* FMI B0S0 mask */ -#define FMI_B0S1_MASK 0x0002 /* FMI B0S1 mask */ -#define FMI_B0S2_MASK 0x0004 /* FMI B0S2 mask */ -#define FMI_B0S3_MASK 0x0008 /* FMI B0S3 mask */ -#define FMI_B0S4_MASK 0x0010 /* FMI B0S4 mask */ -#define FMI_B0S5_MASK 0x0020 /* FMI B0S5 mask */ -#define FMI_B0S6_MASK 0x0040 /* FMI B0S6 mask */ -#define FMI_B0S7_MASK 0x0080 /* FMI B0S7 mask */ - -#define FMI_B1S0_MASK 0x0100 /* FMI B1S0 mask */ -#define FMI_B1S1_MASK 0x0200 /* FMI B1S1 mask */ -#define FMI_B1S2_MASK 0x0400 /* FMI B1S2 mask */ -#define FMI_B1S3_MASK 0x0800 /* FMI B1S3 mask */ - -/* Timeout error */ - -#define FMI_TIME_OUT_ERROR 0x00 /* Timeout error */ -#define FMI_NO_TIME_OUT_ERROR 0x01 /* No Timeout error */ - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -void FMI_BankRemapConfig(u8 FMI_BootBankSize, u8 FMI_NonBootBankSize, \ - u32 FMI_BootBankAddress, u32 FMI_NonBootBankAddress); -void FMI_Config(u16 FMI_ReadWaitState, u32 FMI_WriteWaitState, u16 FMI_PWD,\ - u16 FMI_LVDEN, u16 FMI_FreqRange); -void FMI_EraseSector(vu32 FMI_Sector); -void FMI_EraseBank(vu32 FMI_Bank); -void FMI_WriteHalfWord(u32 FMI_Address, u16 FMI_Data); -void FMI_WriteOTPHalfWord(u8 FMI_OTPHWAddress, u16 FMI_OTPData); -u32 FMI_ReadWord(u32 FMI_Address); -u32 FMI_ReadOTPData(u8 FMI_OTPAddress); -FlagStatus FMI_GetFlagStatus(u8 FMI_Flag, vu32 FMI_Bank); -u16 FMI_GetReadWaitStateValue(void); -u16 FMI_GetWriteWaitStateValue(void); -void FMI_SuspendEnable(vu32 FMI_Bank); -void FMI_ResumeEnable(vu32 FMI_Bank); -void FMI_ClearFlag(vu32 FMI_Bank); -void FMI_WriteProtectionCmd(vu32 FMI_Sector, FunctionalState FMI_NewState); -FlagStatus FMI_GetWriteProtectionStatus(u32 FMI_Sector_Protection); -u8 FMI_WaitForLastOperation(vu32 FMI_Bank); - -#endif /* __91x_FMI_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h deleted file mode 100644 index f4e565804..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h +++ /dev/null @@ -1,93 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_gpio.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* GPIO software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion ------------------------------------ */ - -#ifndef _91x_GPIO_H -#define _91x_GPIO_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" - -/* GPIO Init structure definition */ -typedef struct -{ - u8 GPIO_Pin; - u8 GPIO_Direction; - u8 GPIO_Type; - u8 GPIO_IPConnected; - u16 GPIO_Alternate; -}GPIO_InitTypeDef; - -/* Bit_SET and Bit_RESET enumeration */ -typedef enum -{ Bit_RESET = 0, - Bit_SET -}BitAction; - - -/* Exported constants --------------------------------------------------------*/ -#define GPIO_Pin_None 0x00 -#define GPIO_Pin_0 0x01 -#define GPIO_Pin_1 0x02 -#define GPIO_Pin_2 0x04 -#define GPIO_Pin_3 0x08 -#define GPIO_Pin_4 0x10 -#define GPIO_Pin_5 0x20 -#define GPIO_Pin_6 0x40 -#define GPIO_Pin_7 0x80 -#define GPIO_Pin_All 0xFF - -#define GPIO_PinInput 0x00 -#define GPIO_PinOutput 0x01 - -#define GPIO_Type_PushPull 0x00 -#define GPIO_Type_OpenCollector 0x01 - -#define GPIO_IPConnected_Disable 0x00 -#define GPIO_IPConnected_Enable 0x01 - -#define GPIO_InputAlt1 0x00 -#define GPIO_OutputAlt1 0x01 -#define GPIO_OutputAlt2 0x02 -#define GPIO_OutputAlt3 0x03 - -#define GPIO_ANAChannel0 0x01 -#define GPIO_ANAChannel1 0x02 -#define GPIO_ANAChannel2 0x04 -#define GPIO_ANAChannel3 0x08 -#define GPIO_ANAChannel4 0x10 -#define GPIO_ANAChannel5 0x20 -#define GPIO_ANAChannel6 0x40 -#define GPIO_ANAChannel7 0x80 -#define GPIO_ANAChannelALL 0xFF - -void GPIO_DeInit(GPIO_TypeDef* GPIOx); -void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); -void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); -u8 GPIO_ReadBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin); -u8 GPIO_Read(GPIO_TypeDef* GPIOx); -void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin, BitAction BitVal); -void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal); -void GPIO_EMIConfig(FunctionalState NewState); -void GPIO_ANAPinConfig(u8 GPIO_ANAChannel, FunctionalState NewState); - -#endif /* _91x_GPIO_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h deleted file mode 100644 index a8e35fcb1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h +++ /dev/null @@ -1,73 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_it.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains the headers of the interrupt -* handlers'routines -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion ------------------------------------ */ -#ifndef _91x_IT_H -#define _91x_IT_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_lib.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void Undefined_Handler (void); -void SWI_Handler (void); -void Prefetch_Handler (void); -void Abort_Handler (void); -void FIQ_Handler (void); -void WDG_IRQHandler (void); -void SW_IRQHandler (void); -void ARMRX_IRQHandler (void); -void ARMTX_IRQHandler (void); -void TIM0_IRQHandler (void); -void TIM1_IRQHandler (void); -void TIM2_IRQHandler (void); -void TIM3_IRQHandler (void); -void USBHP_IRQHandler (void); -void USBLP_IRQHandler (void); -void SCU_IRQHandler (void); -void ENET_IRQHandler (void); -void DMA_IRQHandler (void); -void CAN_IRQHandler (void); -void MC_IRQHandler (void); -void ADC_IRQHandler (void); -void UART0_IRQHandler (void); -void UART1_IRQHandler (void); -void UART2_IRQHandler (void); -void I2C0_IRQHandler (void); -void I2C1_IRQHandler (void); -void SSP0_IRQHandler (void); -void SSP1_IRQHandler (void); -void LVD_IRQHandler (void); -void RTC_IRQHandler (void); -void WIU_IRQHandler (void); -void EXTIT0_IRQHandler (void); -void EXTIT1_IRQHandler (void); -void EXTIT2_IRQHandler (void); -void EXTIT3_IRQHandler (void); -void USBWU_IRQHandler (void); -void PFQBC_IRQHandler (void); - -#endif /* _91x_IT_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h deleted file mode 100644 index 823b25012..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h +++ /dev/null @@ -1,114 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_lib.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : Used to include the peripherals header file in the -* user application. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -#ifndef __91x_LIB_H -#define __91x_LIB_H - -#include "91x_map.h" -#include "91x_conf.h" - -#ifdef _AHBAPB - #include "91x_ahbapb.h" -#endif /* _AHBAPB */ - -#ifdef _EMI - #include "91x_emi.h" -#endif /* _EMI */ - -#ifdef _DMA - #include "91x_dma.h" -#endif /* _DMA */ - -#ifdef _FMI - #include "91x_fmi.h" -#endif /* _FMI */ - -#ifdef _VIC - #include "91x_vic.h" -#endif /* _VIC */ - -#ifdef _WIU - #include "91x_wiu.h" -#endif /* _WIU */ - -#ifdef _TIM - #include "91x_tim.h" -#endif /* _TIM */ - -#ifdef _GPIO - #include "91x_gpio.h" -#endif /* _GPIO */ - -#ifdef _RTC - #include "91x_rtc.h" -#endif /* _RTC */ - -#ifdef _SCU - #include "91x_scu.h" -#endif /* _SCU */ - -#ifdef _UART - #include "91x_uart.h" -#endif /* _UART */ - -#ifdef _SSP - #include "91x_ssp.h" -#endif /* _SSP */ - -#ifdef _CAN - #include "91x_can.h" -#endif /* _CAN */ - -#ifdef _ADC - #include "91x_adc.h" -#endif /* _ADC */ - -#ifdef _WDG - #include "91x_wdg.h" -#endif /* _WDG */ - -#ifdef _I2C - #include "91x_i2c.h" -#endif /* _I2C */ - -#ifdef _WIU - #include "91x_wiu.h" -#endif - -#ifdef _MC - #include "91x_mc.h" -#endif - -#ifdef _ENET - #include "91x_enet.h" -#endif - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - - void debug( void ); - - -#endif /* __91x_LIB_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h deleted file mode 100644 index 147302ff6..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h +++ /dev/null @@ -1,878 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_map.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : Peripherals registers definition and memory mapping. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion ------------------------------------ */ -#ifndef __91x_MAP_H -#define __91x_MAP_H - -#ifndef EXT - #define EXT extern -#endif /* EXT */ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_conf.h" -#include "91x_type.h" - -/******************************************************************************/ -/* IP registers structures */ -/******************************************************************************/ - -/*------------------------------------ FMI -----------------------------------*/ - -typedef struct -{ - vu32 BBSR; /* Boot Bank Size Register */ - vu32 NBBSR; /* Non-Boot Bank Size Register */ - vu32 EMPTY1; - vu32 BBADR; /* Boot Bank Base Address Register */ - vu32 NBBADR; /* Non-Boot Bank Base Address Register */ - vu32 EMPTY2; - vu32 CR; /* Control Register */ - vu32 SR; /* Status Register */ - vu32 BCE5ADDR; /* BC Fifth Entry Target Address Register */ -} FMI_TypeDef; - -/*---------------------- Analog to Digital Convertor ------------------------*/ - -typedef struct -{ - vu16 CR; /* Control Register */ - vu16 EMPTY1; - vu16 CCR; /* Channel Configuration Register */ - vu16 EMPTY2; - vu16 HTR; /* Higher Threshold Register */ - vu16 EMPTY3; - vu16 LTR; /* Lower Threshold Register */ - vu16 EMPTY4; - vu16 CRR; /* Compare Result Register */ - vu16 EMPTY5; - vu16 DR0; /* Data Register for Channel 0 */ - vu16 EMPTY6; - vu16 DR1; /* Data Register for Channel 1 */ - vu16 EMPTY7; - vu16 DR2; /* Data Register for Channel 2 */ - vu16 EMPTY8; - vu16 DR3; /* Data Register for Channel 3 */ - vu16 EMPTY9; - vu16 DR4; /* Data Register for Channel 4 */ - vu16 EMPTY10; - vu16 DR5; /* Data Register for Channel 5 */ - vu16 EMPTY11; - vu16 DR6; /* Data Register for Channel 6 */ - vu16 EMPTY12; - vu16 DR7; /* Data Register for Channel 7 */ - vu16 EMPTY13; - vu16 PRS; /* Prescaler Value Register */ - vu16 EMPTY14; -} ADC_TypeDef; - -/*--------------------- AHB APB BRIDGE registers strcture --------------------*/ - -typedef struct -{ - vu32 BSR; /* Bridge Status Register */ - vu32 BCR; /* Bridge Configuration Register */ - vu32 PAER; /* Peripheral Address Error register */ -} AHBAPB_TypeDef; - -/*--------------- Controller Area Network Interface Register -----------------*/ - -typedef struct -{ - vu16 CRR; /* IFn Command request Register */ - vu16 EMPTY1; - vu16 CMR; /* IFn Command Mask Register */ - vu16 EMPTY2; - vu16 M1R; /* IFn Message Mask 1 Register */ - vu16 EMPTY3; - vu16 M2R; /* IFn Message Mask 2 Register */ - vu16 EMPTY4; - vu16 A1R; /* IFn Message Arbitration 1 Register */ - vu16 EMPTY5; - vu16 A2R; /* IFn Message Arbitration 2 Register */ - vu16 EMPTY6; - vu16 MCR; /* IFn Message Control Register */ - vu16 EMPTY7; - vu16 DA1R; /* IFn DATA A 1 Register */ - vu16 EMPTY8; - vu16 DA2R; /* IFn DATA A 2 Register */ - vu16 EMPTY9; - vu16 DB1R; /* IFn DATA B 1 Register */ - vu16 EMPTY10; - vu16 DB2R; /* IFn DATA B 2 Register */ - vu16 EMPTY11[27]; -} CAN_MsgObj_TypeDef; - -typedef struct -{ - vu16 CR; /* Control Register */ - vu16 EMPTY1; - vu16 SR; /* Status Register */ - vu16 EMPTY2; - vu16 ERR; /* Error counter Register */ - vu16 EMPTY3; - vu16 BTR; /* Bit Timing Register */ - vu16 EMPTY4; - vu16 IDR; /* Interrupt Identifier Register */ - vu16 EMPTY5; - vu16 TESTR; /* Test Register */ - vu16 EMPTY6; - vu16 BRPR; /* BRP Extension Register */ - vu16 EMPTY7[3]; - CAN_MsgObj_TypeDef sMsgObj[2]; - vu16 EMPTY8[16]; - vu16 TXR1R; /* Transmission request 1 Register */ - vu16 EMPTY9; - vu16 TXR2R; /* Transmission Request 2 Register */ - vu16 EMPTY10[13]; - vu16 ND1R; /* New Data 1 Register */ - vu16 EMPTY11; - vu16 ND2R; /* New Data 2 Register */ - vu16 EMPTY12[13]; - vu16 IP1R; /* Interrupt Pending 1 Register */ - vu16 EMPTY13; - vu16 IP2R; /* Interrupt Pending 2 Register */ - vu16 EMPTY14[13]; - vu16 MV1R; /* Message Valid 1 Register */ - vu16 EMPTY15; - vu16 MV2R; /* Message VAlid 2 Register */ - vu16 EMPTY16; -} CAN_TypeDef; - -/*----------------------- System Control Unit---------------------------------*/ - -typedef struct -{ - vu32 CLKCNTR; /* Clock Control Register */ - vu32 PLLCONF; /* PLL Configuration Register */ - vu32 SYSSTATUS; /* System Status Register */ - vu32 PWRMNG; /* Power Management Register */ - vu32 ITCMSK; /* Interrupt Mask Register */ - vu32 PCGRO; /* Peripheral Clock Gating Register 0 */ - vu32 PCGR1; /* Peripheral Clock Gating Register 1 */ - vu32 PRR0; /* Peripheral Reset Register 0 */ - vu32 PRR1; /* Peripheral Reset Register 1 */ - vu32 MGR0; /* Idle Mode Mask Gating Register 0 */ - vu32 MGR1; /* Idle Mode Mask Gating Register 1 */ - vu32 PECGR0; /* Peripheral Emulation Clock Gating Register 0 */ - vu32 PECGR1; /* Peripheral Emulation Clock Gating Register 1 */ - vu32 SCR0; /* System Configuration Register 0 */ - vu32 SCR1; /* System Configuration Register 1 */ - vu32 SCR2; /* System Configuration Register 2 */ - u32 EMPTY1; - vu32 GPIOOUT[8]; /* GPIO Output Registers */ - vu32 GPIOIN[8]; /* GPIO Input Registers */ - vu32 GPIOTYPE[10]; /* GPIO Type Registers */ - vu32 GPIOEMI; /* GPIO EMI Selector Register */ - vu32 WKUPSEL; /* Wake-Up Selection Register */ - u32 EMPTY2[2]; - vu32 GPIOANA; /* GPIO Analag mode Register */ -} SCU_TypeDef; - -/*------------------------- DMA Channelx Registers ---------------------------*/ - -typedef struct -{ - vu32 SRC; /* Channelx Source Address Register */ - vu32 DES; /* Channelx Destination Address Register */ - vu32 LLI; /* Channelx Lincked List Item Register */ - vu32 CC; /* Channelx Contol Register */ - vu32 CCNF; /* Channelx Configuration Register */ -} DMA_Channel_TypeDef; - -/* x can be ,0,1,2,3,4,5,6 or 7. There are eight Channels AHB BUS Master */ - -/*----------------------------- DMA Controller -------------------------------*/ - -typedef struct -{ - vu32 ISR; /* Interrupt Status Register */ - vu32 TCISR; /* Terminal Count Interrupt Status Register */ - vu32 TCICR; /* Terminal CountInterrupt Clear Register */ - vu32 EISR; /* Error Interrupt Status Register */ - vu32 EICR; /* Error Interrupt Clear Register */ - vu32 TCRISR; /* Terminal Count Raw Interrupt Status Register */ - vu32 ERISR; /* Raw Error Interrupt Status Register */ - vu32 ENCSR; /* Enabled Channel Status Register */ - vu32 SBRR; /* Software Burst Request Register */ - vu32 SSRR; /* Software Single Request Register */ - vu32 SLBRR; /* Software Last Burst Request Register */ - vu32 SLSRR; /* Software Last Single Request Register */ - vu32 CNFR; /* Configuration Register */ - vu32 SYNR; /* Syncronization Register */ -} DMA_TypeDef; - -/*--------------------------------- TIM Timer --------------------------------*/ - -typedef struct -{ - vu16 IC1R; /* Input Capture 1 Register */ - vu16 EMPTY1; - vu16 IC2R; /* Input Capture 2 Register */ - vu16 EMPTY2; - vu16 OC1R; /* Output Compare 1 Register */ - vu16 EMPTY3; - vu16 OC2R; /* Output Compare 2 Register */ - vu16 EMPTY4; - vu16 CNTR; /* Counter Register */ - vu16 EMPTY5; - vu16 CR1; /* Control Register 1 */ - vu16 EMPTY6; - vu16 CR2; /* Control Register 2 */ - vu16 EMPTY7; - vu16 SR; /* Status Register */ - vu16 EMPTY8; -} TIM_TypeDef; - -/*---------------------------- EMI Bankx Registers ---------------------------*/ - -typedef struct -{ - vu32 ICR; /* Bankx Idle Cycle Control Register */ - vu32 RCR; /* Bankx Read Wait State Control Register */ - vu32 WCR; /* Bankx Write Wait State Control Register */ - vu32 OECR; /* Bankx Output Enable Assertion Delay Control Register */ - vu32 WECR; /* Bankx Write Enable Assertion Delay Control Register */ - vu32 BCR; /* Bankx Control Register */ - } EMI_Bank_TypeDef; - -/*---------------------------- Ethernet Controller ---------------------------*/ - -/* MAC Registers */ -typedef struct -{ - vu32 MCR; /* ENET Control Register */ - vu32 MAH; /* ENET Address High Register */ - vu32 MAL; /* ENET Address Low Register */ - vu32 MCHA; /* Multicast Address High Register */ - vu32 MCLA; /* Multicast Address Low Register */ - vu32 MIIA; /* MII Address Register */ - vu32 MIID; /* MII Data Register */ - vu32 MCF; /* ENET Control Frame Register */ - vu32 VL1; /* VLAN1 Register */ - vu32 VL2; /* VLAN2 register */ - vu32 MTS; /* ENET Transmission Status Register */ - vu32 MRS; /* ENET Reception Status Register */ -} ENET_MAC_TypeDef; - -/* DMA Registers */ -typedef struct -{ - vu32 SCR; /* DMA Status and Control Register */ - vu32 IER; /* DMA Interrupt Sources Enable Register */ - vu32 ISR; /* DMA Interrupt Status Register */ - vu32 CCR; /* Clock Control Relation : HCLK, PCLK and - ENET_CLK phase relations */ - vu32 RXSTR; /* Rx DMA start Register */ - vu32 RXCR; /* Rx DMA Control Register */ - vu32 RXSAR; /* Rx DMA Base Address Register */ - vu32 RXNDAR; /* Rx DMA Next Descriptor Address Register */ - vu32 RXCAR; /* Rx DMA Current Address Register */ - vu32 RXCTCR; /* Rx DMA Current Transfer Count Register */ - vu32 RXTOR; /* Rx DMA FIFO Time Out Register */ - vu32 RXSR; /* Rx DMA FIFO Status Register */ - vu32 TXSTR; /* Tx DMA start Register */ - vu32 TXCR; /* Tx DMA Control Register */ - vu32 TXSAR; /* Tx DMA Base Address Register */ - vu32 TXNDAR; /* Tx DMA Next Descriptor Address Register */ - vu32 TXCAR; /* Tx DMA Current Address Register */ - vu32 TXTCR; /* Tx DMA Current Transfer Count Register */ - vu32 TXTOR; /* Tx DMA FIFO Time Out Register */ - vu32 TXSR; /* Tx DMA FIFO Status Register */ -} ENET_DMA_TypeDef; - -/*------------------------------------- GPIO ---------------------------------*/ - -typedef struct -{ - vu8 DR[1021]; /* Data Register */ - vu32 DDR; /* Data Direction Register */ -} GPIO_TypeDef; - -/*-------------------------------- I2C interface -----------------------------*/ - -typedef struct -{ - vu8 CR; /* Control Register */ - vu8 EMPTY1[3]; - vu8 SR1; /* Status Register 1 */ - vu8 EMPTY2[3]; - vu8 SR2; /* Status Register 2 */ - vu8 EMPTY3[3]; - vu8 CCR; /* Clock Control Register */ - vu8 EMPTY4[3]; - vu8 OAR1; /* Own Address Register 1 */ - vu8 EMPTY5[3]; - vu8 OAR2; /* Own Address Register 2 */ - vu8 EMPTY6[3]; - vu8 DR; /* Data Register */ - vu8 EMPTY7[3]; - vu8 ECCR; /* Extended Clock Control Register */ - vu8 EMPTY8[3]; -} I2C_TypeDef; - -/*------------------------------------- VIC ----------------------------------*/ - -typedef struct -{ - vu32 ISR; /* IRQ Status Register */ - vu32 FSR; /* FIQ Status Register */ - vu32 RINTSR; /* Raw Interrupt Status Register */ - vu32 INTSR; /* Interrupt Select Register */ - vu32 INTER; /* Interrupt Enable Register */ - vu32 INTECR; /* Interrupt Enable Clear Register */ - vu32 SWINTR; /* Software Interrupt Register */ - vu32 SWINTCR; /* Software Interrupt clear Register */ - vu32 PER; /* Protection Enable Register */ - vu32 EMPTY1[3]; - vu32 VAR; /* Vector Address Register */ - vu32 DVAR; /* Default Vector Address Register */ - vu32 EMPTY2[50]; - vu32 VAiR[16]; /* Vector Address 0-15 Register */ - vu32 EMPTY3[48]; - vu32 VCiR[16]; /* Vector Control 0-15 Register */ -} VIC_TypeDef; - -/*-------------------------------- Motor Control -----------------------------*/ - -typedef struct -{ - vu16 TCPT; /* Tacho Capture Register */ - vu16 EMPTY1; - vu16 TCMP; /* Tacho Compare Register */ - vu16 EMPTY2; - vu16 IPR; /* Input Pending Register */ - vu16 EMPTY3; - vu16 TPRS; /* Tacho Prescaler Register */ - vu16 EMPTY4; - vu16 CPRS; /* PWM Counter Prescaler Register */ - vu16 EMPTY5; - vu16 REP; /* Repetition Counter Register */ - vu16 EMPTY6; - vu16 CMPW; /* Compare Phase W Preload Register */ - vu16 EMPTY7; - vu16 CMPV; /* Compare Phase V Preload Register */ - vu16 EMPTY8; - vu16 CMPU; /* Compare Phase U Preload Register */ - vu16 EMPTY9; - vu16 CMP0; /* Compare 0 Preload Register */ - vu16 EMPTY10; - vu16 PCR0; /* Peripheral Control Register 0 */ - vu16 EMPTY11; - vu16 PCR1; /* Peripheral Control Register 1 */ - vu16 EMPTY12; - vu16 PCR2; /* Peripheral Control Register 2 */ - vu16 EMPTY13; - vu16 PSR; /* Polarity Selection Register */ - vu16 EMPTY14; - vu16 OPR; /* Output Peripheral Register */ - vu16 EMPTY15; - vu16 IMR; /* Interrupt Mask Register */ - vu16 EMPTY16; - vu16 DTG; /* Dead Time Generator Register */ - vu16 EMPTY17; - vu16 ESC; /* Emergency Stop Clear Register */ - vu16 EMPTY18; -}MC_TypeDef; - -/*------------------------------------- RTC ----------------------------------*/ - -typedef struct -{ - vu32 TR; /* Time Register */ - vu32 DTR; /* Date Register */ - vu32 ATR; /* Alarm time Register */ - vu32 CR; /* Control Register */ - vu32 SR; /* Status Register */ - vu32 MILR; /* Millisec Register */ -}RTC_TypeDef; - -/*------------------------------------- SSP ----------------------------------*/ - -typedef struct -{ - vu16 CR0; /* Control Register 1 */ - vu16 EMPTY1; - vu16 CR1; /* Control Register 2 */ - vu16 EMPTY2; - vu16 DR; /* Data Register */ - vu16 EMPTY3; - vu16 SR; /* Status Register */ - vu16 EMPTY4; - vu16 PR; /* Clock Prescale Register */ - vu16 EMPTY5; - vu16 IMSCR; /* Interrupt Mask Set or Clear Register */ - vu16 EMPTY6; - vu16 RISR; /* Raw Interrupt Status Register */ - vu16 EMPTY7; - vu16 MISR; /* Masked Interrupt Status Register */ - vu16 EMPTY8; - vu16 ICR; /* Interrupt Clear Register */ - vu16 EMPTY9; - vu16 DMACR; /* DMA Control Register */ - vu16 EMPTY10; -}SSP_TypeDef; - -/*------------------------------------ UART ----------------------------------*/ - -typedef struct -{ - vu16 DR; /* Data Register */ - vu16 EMPTY1; - vu16 RSECR; /* Receive Status Register (read)/Error Clear Register (write) */ - vu16 EMPTY2[9]; - vu16 FR; /* Flag Register */ - vu16 EMPTY3[3]; - vu16 ILPR; /* IrDA Low-Power counter Register */ - vu16 EMPTY4; - vu16 IBRD; /* Integer Baud Rate Divisor Register */ - vu16 EMPTY5; - vu16 FBRD; /* Fractional Baud Rate Divisor Register */ - vu16 EMPTY6; - vu16 LCR; /* Line Control Register, High byte */ - vu16 EMPTY7; - vu16 CR; /* Control Register */ - vu16 EMPTY8; - vu16 IFLS; /* Interrupt FIFO Level Select Register */ - vu16 EMPTY9; - vu16 IMSC; /* Interrupt Mask Set/Clear Register */ - vu16 EMPTY10; - vu16 RIS; /* Raw Interrupt Status Register */ - vu16 EMPTY11; - vu16 MIS; /* Masked Interrupt Status Register */ - vu16 EMPTY12; - vu16 ICR; /* Interrupt Clear Register */ - vu16 EMPTY13; - vu16 DMACR; /* DMA Control Register */ - vu16 EMPTY14; -}UART_TypeDef; - -/*------------------------------- Wake-up System -----------------------------*/ - -typedef struct -{ - vu32 CTRL; /* Control Register */ - vu32 MR; /* Mask Register */ - vu32 TR; /* Trigger Register */ - vu32 PR; /* Pending Register */ - vu32 INTR; /* Software Interrupt Register */ -} WIU_TypeDef; - -/*------------------------------- WatchDog Timer -----------------------------*/ - -typedef struct -{ - vu16 CR; /* Control Register */ - vu16 EMPTY1; - vu16 PR; /* Presclar Register */ - vu16 EMPTY2; - vu16 VR; /* Pre-load Value Register */ - vu16 EMPTY3; - vu16 CNT; /* Counter Register */ - vu16 EMPTY4; - vu16 SR; /* Status Register */ - vu16 EMPTY5; - vu16 MR; /* Mask Register */ - vu16 EMPTY6; - vu16 KR; /* Key Register */ - vu16 EMPTY7; -} WDG_TypeDef; - -/******************************************************************************* -* Memory Mapping of STR91x * -*******************************************************************************/ - -#define AHB_APB_BRDG0_U (0x58000000) /* AHB/APB Bridge 0 UnBuffered Space */ -#define AHB_APB_BRDG0_B (0x48000000) /* AHB/APB Bridge 0 Buffered Space */ - -#define AHB_APB_BRDG1_U (0x5C000000) /* AHB/APB Bridge 1 UnBuffered Space */ -#define AHB_APB_BRDG1_B (0x4C000000) /* AHB/APB Bridge 1 Buffered Space */ - -#define AHB_EMI_U (0x74000000) /* EMI UnBuffered Space */ -#define AHB_EMI_B (0x64000000) /* EMI Buffered Space */ - -#define AHB_DMA_U (0x78000000) /* DMA UnBuffered Space */ -#define AHB_DMA_B (0x68000000) /* DMA Buffered Space */ - -#define AHB_ENET_MAC_U (0x7C000400) /* ENET_MAC UnBuffered Space */ -#define AHB_ENET_MAC_B (0x6C000400) /* ENET_MAC Buffered Space */ - -#define AHB_ENET_DMA_U (0x7C000000) /* ENET_DMA Unbuffered Space */ -#define AHB_ENET_DMA_B (0x6C000000) /* ENET_DMA Buffered Space */ - -#define AHB_VIC1_U (0xFC000000) /* Secondary VIC1 UnBuffered Space */ -#define AHB_VIC0_U (0xFFFFF000) /* Primary VIC0 UnBuffered Space */ - -#define AHB_FMI_U (0x54000000) /* FMI Unbuffered Space */ -#define AHB_FMI_B (0x44000000) /* FMI buffered Space */ - -/******************************************************************************* -* Addresses related to the VICs' peripherals * -*******************************************************************************/ - -#define VIC0_BASE (AHB_VIC0_U) -#define VIC1_BASE (AHB_VIC1_U) - -/******************************************************************************* -* Addresses related to the EMI banks * -*******************************************************************************/ - -#define AHB_EMIB3_OFST (0x00000040) /* Offset of EMI bank3 */ -#define AHB_EMIB2_OFST (0x00000020) /* Offset of EMI bank2 */ -#define AHB_EMIB1_OFST (0x00000000) /* Offset of EMI bank1 */ -#define AHB_EMIB0_OFST (0x000000E0) /* Offset of EMI bank0 */ - -/******************************************************************************* -* Addresses related to the DMA peripheral * -*******************************************************************************/ - -#define AHB_DMA_Channel0_OFST (0x00000100) /* Offset of Channel 0 */ -#define AHB_DMA_Channel1_OFST (0x00000120) /* Offset of Channel 1 */ -#define AHB_DMA_Channel2_OFST (0x00000140) /* Offset of Channel 2 */ -#define AHB_DMA_Channel3_OFST (0x00000160) /* Offset of Channel 3 */ -#define AHB_DMA_Channel4_OFST (0x00000180) /* Offset of Channel 4 */ -#define AHB_DMA_Channel5_OFST (0x000001A0) /* Offset of Channel 5 */ -#define AHB_DMA_Channel6_OFST (0x000001C0) /* Offset of Channel 6 */ -#define AHB_DMA_Channel7_OFST (0x000001E0) /* Offset of Channel 7 */ - -/******************************************************************************* -* Addresses related to the APB0 sub-system * -*******************************************************************************/ - -#define APB_WIU_OFST (0x00001000) /* Offset of WIU */ -#define APB_TIM0_OFST (0x00002000) /* Offset of TIM0 */ -#define APB_TIM1_OFST (0x00003000) /* Offset of TIM1 */ -#define APB_TIM2_OFST (0x00004000) /* Offset of TIM2 */ -#define APB_TIM3_OFST (0x00005000) /* Offset of TIM3 */ -#define APB_GPIO0_OFST (0x00006000) /* Offset of GPIO0 */ -#define APB_GPIO1_OFST (0x00007000) /* Offset of GPIO1 */ -#define APB_GPIO2_OFST (0x00008000) /* Offset of GPIO2 */ -#define APB_GPIO3_OFST (0x00009000) /* Offset of GPIO3 */ -#define APB_GPIO4_OFST (0x0000A000) /* Offset of GPIO4 */ -#define APB_GPIO5_OFST (0x0000B000) /* Offset of GPIO5 */ -#define APB_GPIO6_OFST (0x0000C000) /* Offset of GPIO6 */ -#define APB_GPIO7_OFST (0x0000D000) /* Offset of GPIO7 */ -#define APB_GPIO8_OFST (0x0000E000) /* Offset of GPIO8 */ -#define APB_GPIO9_OFST (0x0000F000) /* Offset of GPIO9 */ - -/******************************************************************************* -* Addresses related to the APB1 sub-system * -*******************************************************************************/ - -#define APB_RTC_OFST (0x00001000) /* Offset of RTC */ -#define APB_SCU_OFST (0x00002000) /* Offset of System Controller */ -#define APB_MC_OFST (0x00003000) /* Offset of Motor Control */ -#define APB_UART0_OFST (0x00004000) /* Offset of UART0 */ -#define APB_UART1_OFST (0x00005000) /* Offset of UART1 */ -#define APB_UART2_OFST (0x00006000) /* Offset of UART2 */ -#define APB_SSP0_OFST (0x00007000) /* Offset of SSP0 */ -#define APB_SSP1_OFST (0x00008000) /* Offset of SSPI */ -#define APB_CAN_OFST (0x00009000) /* Offset of CAN */ -#define APB_ADC_OFST (0x0000A000) /* Offset of ADC */ -#define APB_WDG_OFST (0x0000B000) /* Offset of WDG */ -#define APB_I2C0_OFST (0x0000C000) /* Offset of I2C0 */ -#define APB_I2C1_OFST (0x0000D000) /* Offset of I2C1 */ - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Unbuffered Mode ------------------------------*/ -/*----------------------------------------------------------------------------*/ - -#ifndef Buffered - -/******************************************************************************* -* AHBAPB peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define AHBAPB0_BASE (AHB_APB_BRDG0_U) -#define AHBAPB1_BASE (AHB_APB_BRDG1_U) - -/******************************************************************************* -* ENET peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define ENET_MAC_BASE (AHB_ENET_MAC_U) -#define ENET_DMA_BASE (AHB_ENET_DMA_U) - -/******************************************************************************* -* DMA peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define DMA_BASE (AHB_DMA_U) - -/******************************************************************************* -* EMI peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define EMI_BASE (AHB_EMI_U) - -/******************************************************************************* -* FMI peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define FMI_BASE (AHB_FMI_U) - - -#else /* Buffered */ - -/*----------------------------------------------------------------------------*/ -/*------------------------------ Buffered Mode -------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/******************************************************************************* -* AHBAPB peripheral Buffered Base Address * -*******************************************************************************/ - -#define AHBAPB0_BASE (AHB_APB_BRDG0_B) -#define AHBAPB1_BASE (AHB_APB_BRDG1_B) - -/******************************************************************************* -* ENET peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define ENET_MAC_BASE (AHB_ENET_MAC_B) -#define ENET_DMA_BASE (AHB_ENET_DMA_B) - -/******************************************************************************* -* DMA peripheral Buffered Base Address * -*******************************************************************************/ - -#define DMA_BASE (AHB_DMA_B) - -/******************************************************************************* -* EMI peripheral Buffered Base Address * -*******************************************************************************/ - -#define EMI_BASE (AHB_EMI_B) - -/******************************************************************************* -* FMI peripheral Buffered Base Address * -*******************************************************************************/ - -#define FMI_BASE (AHB_FMI_B) - -#endif /* Buffered */ - -/******************************************************************************* -* DMA channels Base Address * -*******************************************************************************/ -#define DMA_Channel0_BASE (DMA_BASE + AHB_DMA_Channel0_OFST) -#define DMA_Channel1_BASE (DMA_BASE + AHB_DMA_Channel1_OFST) -#define DMA_Channel2_BASE (DMA_BASE + AHB_DMA_Channel2_OFST) -#define DMA_Channel3_BASE (DMA_BASE + AHB_DMA_Channel3_OFST) -#define DMA_Channel4_BASE (DMA_BASE + AHB_DMA_Channel4_OFST) -#define DMA_Channel5_BASE (DMA_BASE + AHB_DMA_Channel5_OFST) -#define DMA_Channel6_BASE (DMA_BASE + AHB_DMA_Channel6_OFST) -#define DMA_Channel7_BASE (DMA_BASE + AHB_DMA_Channel7_OFST) - -/******************************************************************************* -* EMI Banks peripheral Base Address * -*******************************************************************************/ - -#define EMI_Bank0_BASE (EMI_BASE + AHB_EMIB0_OFST) -#define EMI_Bank1_BASE (EMI_BASE + AHB_EMIB1_OFST) -#define EMI_Bank2_BASE (EMI_BASE + AHB_EMIB2_OFST) -#define EMI_Bank3_BASE (EMI_BASE + AHB_EMIB3_OFST) - -/******************************************************************************* -* APB0 Peripherals' Base addresses * -*******************************************************************************/ - -#define WIU_BASE (AHBAPB0_BASE + APB_WIU_OFST) -#define TIM0_BASE (AHBAPB0_BASE + APB_TIM0_OFST) -#define TIM1_BASE (AHBAPB0_BASE + APB_TIM1_OFST) -#define TIM2_BASE (AHBAPB0_BASE + APB_TIM2_OFST) -#define TIM3_BASE (AHBAPB0_BASE + APB_TIM3_OFST) -#define GPIO0_BASE (AHBAPB0_BASE + APB_GPIO0_OFST) -#define GPIO1_BASE (AHBAPB0_BASE + APB_GPIO1_OFST) -#define GPIO2_BASE (AHBAPB0_BASE + APB_GPIO2_OFST) -#define GPIO3_BASE (AHBAPB0_BASE + APB_GPIO3_OFST) -#define GPIO4_BASE (AHBAPB0_BASE + APB_GPIO4_OFST) -#define GPIO5_BASE (AHBAPB0_BASE + APB_GPIO5_OFST) -#define GPIO6_BASE (AHBAPB0_BASE + APB_GPIO6_OFST) -#define GPIO7_BASE (AHBAPB0_BASE + APB_GPIO7_OFST) -#define GPIO8_BASE (AHBAPB0_BASE + APB_GPIO8_OFST) -#define GPIO9_BASE (AHBAPB0_BASE + APB_GPIO9_OFST) - -/******************************************************************************* -* APB1 Peripherals' Base addresses * -*******************************************************************************/ - -#define RTC_BASE (AHBAPB1_BASE + APB_RTC_OFST) -#define SCU_BASE (AHBAPB1_BASE + APB_SCU_OFST) -#define MC_BASE (AHBAPB1_BASE + APB_MC_OFST) -#define UART0_BASE (AHBAPB1_BASE + APB_UART0_OFST) -#define UART1_BASE (AHBAPB1_BASE + APB_UART1_OFST) -#define UART2_BASE (AHBAPB1_BASE + APB_UART2_OFST) -#define SSP0_BASE (AHBAPB1_BASE + APB_SSP0_OFST) -#define SSP1_BASE (AHBAPB1_BASE + APB_SSP1_OFST) -#define CAN_BASE (AHBAPB1_BASE + APB_CAN_OFST) -#define ADC_BASE (AHBAPB1_BASE + APB_ADC_OFST) -#define WDG_BASE (AHBAPB1_BASE + APB_WDG_OFST) -#define I2C0_BASE (AHBAPB1_BASE + APB_I2C0_OFST) -#define I2C1_BASE (AHBAPB1_BASE + APB_I2C1_OFST) - -/******************************************************************************* -* IPs' declaration * -*******************************************************************************/ - -/*------------------------------ Non Debug Mode ------------------------------*/ - -#ifndef DEBUG - -/*********************************** AHBAPB ***********************************/ - -#define AHBAPB0 ((AHBAPB_TypeDef *)AHBAPB0_BASE) -#define AHBAPB1 ((AHBAPB_TypeDef *)AHBAPB1_BASE) - -/************************************* EMI ************************************/ - -#define EMI ((EMI_TypeDef *)EMI_BASE) - -/************************************* DMA ************************************/ - -#define DMA ((DMA_TypeDef *)DMA_BASE) -#define DMA_Channel0 ((DMA_Channel_TypeDef *)DMA_Channel0_BASE) -#define DMA_Channel1 ((DMA_Channel_TypeDef *)DMA_Channel1_BASE) -#define DMA_Channel2 ((DMA_Channel_TypeDef *)DMA_Channel2_BASE) -#define DMA_Channel3 ((DMA_Channel_TypeDef *)DMA_Channel3_BASE) -#define DMA_Channel4 ((DMA_Channel_TypeDef *)DMA_Channel4_BASE) -#define DMA_Channel5 ((DMA_Channel_TypeDef *)DMA_Channel5_BASE) -#define DMA_Channel6 ((DMA_Channel_TypeDef *)DMA_Channel6_BASE) -#define DMA_Channel7 ((DMA_Channel_TypeDef *)DMA_Channel7_BASE) - -/************************************* EMI ************************************/ - -#define EMI_Bank0 ((EMI_Bank_TypeDef *)EMI_Bank0_BASE) -#define EMI_Bank1 ((EMI_Bank_TypeDef *)EMI_Bank1_BASE) -#define EMI_Bank2 ((EMI_Bank_TypeDef *)EMI_Bank2_BASE) -#define EMI_Bank3 ((EMI_Bank_TypeDef *)EMI_Bank3_BASE) - -/************************************* ENET_MAC ************************************/ - -#define ENET_MAC ((ENET_MAC_TypeDef *)ENET_MAC_BASE) - -/************************************* ENET_DMA ************************************/ - -#define ENET_DMA ((ENET_DMA_TypeDef *)ENET_DMA_BASE) - -/************************************* FMI ************************************/ - -#define FMI ((FMI_TypeDef *)FMI_BASE) - -/************************************* VIC ************************************/ - -#define VIC0 ((VIC_TypeDef *)VIC0_BASE) -#define VIC1 ((VIC_TypeDef *)VIC1_BASE) - -/******************************************************************************* -* APB0 Peripherals' * -*******************************************************************************/ -#define WIU ((WIU_TypeDef *)WIU_BASE) -#define TIM0 ((TIM_TypeDef *)TIM0_BASE) -#define TIM1 ((TIM_TypeDef *)TIM1_BASE) -#define TIM2 ((TIM_TypeDef *)TIM2_BASE) -#define TIM3 ((TIM_TypeDef *)TIM3_BASE) -#define GPIO0 ((GPIO_TypeDef *)GPIO0_BASE) -#define GPIO1 ((GPIO_TypeDef *)GPIO1_BASE) -#define GPIO2 ((GPIO_TypeDef *)GPIO2_BASE) -#define GPIO3 ((GPIO_TypeDef *)GPIO3_BASE) -#define GPIO4 ((GPIO_TypeDef *)GPIO4_BASE) -#define GPIO5 ((GPIO_TypeDef *)GPIO5_BASE) -#define GPIO6 ((GPIO_TypeDef *)GPIO6_BASE) -#define GPIO7 ((GPIO_TypeDef *)GPIO7_BASE) -#define GPIO8 ((GPIO_TypeDef *)GPIO8_BASE) -#define GPIO9 ((GPIO_TypeDef *)GPIO9_BASE) -/******************************************************************************* -* APB1 Peripherals' * -*******************************************************************************/ -#define RTC ((RTC_TypeDef *)RTC_BASE) -#define SCU ((SCU_TypeDef *)SCU_BASE) -#define MC ((MC_TypeDef *)MC_BASE) -#define UART0 ((UART_TypeDef *)UART0_BASE) -#define UART1 ((UART_TypeDef *)UART1_BASE) -#define UART2 ((UART_TypeDef *)UART2_BASE) -#define SSP0 ((SSP_TypeDef *)SSP0_BASE) -#define SSP1 ((SSP_TypeDef *)SSP1_BASE) -#define CAN ((CAN_TypeDef *)CAN_BASE) -#define ADC ((ADC_TypeDef *)ADC_BASE) -#define WDG ((WDG_TypeDef *)WDG_BASE) -#define I2C0 ((I2C_TypeDef *)I2C0_BASE) -#define I2C1 ((I2C_TypeDef *)I2C1_BASE) -#define ENET_MAC ((ENET_MAC_TypeDef *)ENET_MAC_BASE) -#define ENET_DMA ((ENET_DMA_TypeDef *)ENET_DMA_BASE) - -#else /* DEBUG */ - -/*-------------------------------- Debug Mode --------------------------------*/ - -EXT AHBAPB_TypeDef *AHBAPB0; -EXT AHBAPB_TypeDef *AHBAPB1; -EXT DMA_TypeDef *DMA; -EXT DMA_Channel_TypeDef *DMA_Channel0; -EXT DMA_Channel_TypeDef *DMA_Channel1; -EXT DMA_Channel_TypeDef *DMA_Channel2; -EXT DMA_Channel_TypeDef *DMA_Channel3; -EXT DMA_Channel_TypeDef *DMA_Channel4; -EXT DMA_Channel_TypeDef *DMA_Channel5; -EXT DMA_Channel_TypeDef *DMA_Channel6; -EXT DMA_Channel_TypeDef *DMA_Channel7; -EXT EMI_Bank_TypeDef *EMI_Bank0; -EXT EMI_Bank_TypeDef *EMI_Bank1; -EXT EMI_Bank_TypeDef *EMI_Bank2; -EXT EMI_Bank_TypeDef *EMI_Bank3; -EXT FMI_TypeDef *FMI; -EXT VIC_TypeDef *VIC0; -EXT VIC_TypeDef *VIC1; -EXT WIU_TypeDef *WIU; -EXT TIM_TypeDef *TIM0; -EXT TIM_TypeDef *TIM1; -EXT TIM_TypeDef *TIM2; -EXT TIM_TypeDef *TIM3; -EXT GPIO_TypeDef *GPIO0; -EXT GPIO_TypeDef *GPIO1; -EXT GPIO_TypeDef *GPIO2; -EXT GPIO_TypeDef *GPIO3; -EXT GPIO_TypeDef *GPIO4; -EXT GPIO_TypeDef *GPIO5; -EXT GPIO_TypeDef *GPIO6; -EXT GPIO_TypeDef *GPIO7; -EXT GPIO_TypeDef *GPIO8; -EXT GPIO_TypeDef *GPIO9; -EXT RTC_TypeDef *RTC; -EXT SCU_TypeDef *SCU; -EXT MC_TypeDef *MC; -EXT UART_TypeDef *UART0; -EXT UART_TypeDef *UART1; -EXT UART_TypeDef *UART2; -EXT SSP_TypeDef *SSP0; -EXT SSP_TypeDef *SSP1; -EXT CAN_TypeDef *CAN; -EXT ADC_TypeDef *ADC; -EXT WDG_TypeDef *WDG; -EXT I2C_TypeDef *I2C0; -EXT I2C_TypeDef *I2C1; -EXT ENET_MAC_TypeDef *ENET_MAC; -EXT ENET_DMA_TypeDef *ENET_DMA; - - -#endif /* DEBUG */ - -#endif /* __91x_MAP_H*/ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h deleted file mode 100644 index b9d04f558..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h +++ /dev/null @@ -1,196 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_scu.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides the SCU library software functions -* prototypes & definitions -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_SCU_H -#define __91x_SCU_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" - -/* Exported constants --------------------------------------------------------*/ - -/*MCLK_Source*/ -#define SCU_MCLK_PLL 0x0 -#define SCU_MCLK_RTC 0x1 -#define SCU_MCLK_OSC 0x2 - -/*RCLK_Divisor*/ -#define SCU_RCLK_Div1 0xFFFFFFE3 -#define SCU_RCLK_Div2 0x4 -#define SCU_RCLK_Div4 0x8 -#define SCU_RCLK_Div8 0xC -#define SCU_RCLK_Div16 0x10 -#define SCU_RCLK_Div1024 0x14 - -/*HCLK_Divisor*/ -#define SCU_HCLK_Div1 0xFFFFFF9F -#define SCU_HCLK_Div2 0x20 -#define SCU_HCLK_Div4 0x40 - -/*PCLK_Divisor*/ -#define SCU_PCLK_Div1 0xFFFFFE7F -#define SCU_PCLK_Div2 0x80 -#define SCU_PCLK_Div4 0x100 -#define SCU_PCLK_Div8 0x180 - -/*FMICLK_Divisor*/ -#define SCU_FMICLK_Div1 0xFFFEFFFF -#define SCU_FMICLK_Div2 0x10000 - -/*BRCLK_Divisor*/ -#define SCU_BRCLK_Div1 0xFFFFFDFF -#define SCU_BRCLK_Div2 0x200 - -/*TIMCLK_Source*/ -#define SCU_TIMCLK_EXT 0x1 -#define SCU_TIMCLK_INT 0x0 - -/*TIMx*/ -#define SCU_TIM01 0x0 -#define SCU_TIM23 0x1 - - -/*USBCLK_Source*/ -#define SCU_USBCLK_MCLK 0xFFFFF3FF -#define SCU_USBCLK_MCLK2 0x400 -#define SCU_USBCLK_EXT 0x800 - -/*SCU_EMIBCLK*/ -#define SCU_EMIBCLK_Div1 0xFFF9FFFF -#define SCU_EMIBCLK_Div2 0x20000 - -/*SCU_EMIMODE*/ -#define SCU_EMI_MUX 0xFFFFFFBF -#define SCU_EMI_DEMUX 0x40 - -/*SCU_EMIALE_LEN*/ -#define SCU_EMIALE_LEN1 0xFFFFFEFF -#define SCU_EMIALE_LEN2 0x100 - -/*SCU_EMIALE_POL*/ -#define SCU_EMIALE_POLLow 0xFFFFFF7F -#define SCU_EMIALE_POLHigh 0x80 - -/*UART_IrDA_Mode*/ -#define SCU_UARTMode_IrDA 0x1 -#define SCU_UARTMode_UART 0x0 - -/*APBPeriph*/ -#define __TIM01 0x1 -#define __TIM23 0x2 -#define __MC 0x4 -#define __UART0 0x8 -#define __UART1 0x10 -#define __UART2 0x20 -#define __I2C0 0x40 -#define __I2C1 0x80 -#define __SSP0 0x100 -#define __SSP1 0x200 -#define __CAN 0x400 -#define __ADC 0x800 -#define __WDG 0x1000 -#define __WIU 0x2000 -#define __GPIO0 0x4000 -#define __GPIO1 0x8000 -#define __GPIO2 0x10000 -#define __GPIO3 0x20000 -#define __GPIO4 0x40000 -#define __GPIO5 0x80000 -#define __GPIO6 0x100000 -#define __GPIO7 0x200000 -#define __GPIO8 0x400000 -#define __GPIO9 0x800000 -#define __RTC 0x1000000 - -/*AHBPeriph*/ -#define __FMI 0x1 -#define __FPQBC 0x2 -#define __SRAM 0x8 -#define __SRAM_ARBITER 0x10 -#define __VIC 0x20 -#define __EMI 0x40 -#define __EMI_MEM_CLK 0x80 -#define __DMA 0x100 -#define __USB 0x200 -#define __USB48M 0x400 -#define __ENET 0x800 -#define __PFQBC_AHB 0x1000 - -/*SCU_IT*/ -#define SCU_IT_LVD_RST 0x10 -#define SCU_IT_SRAM_ERROR 0x8 -#define SCU_IT_ACK_PFQBC 0x4 -#define SCU_IT_LOCK_LOST 0x2 -#define SCU_IT_LOCK 0x1 - -/*SCU_FLAG*/ -#define SCU_FLAG_SRAM_ERROR 0x20 -#define SCU_FLAG_ACK_PFQBC 0x10 -#define SCU_FLAG_LVD_RESET 0x8 -#define SCU_FLAG_WDG_RST 0x4 -#define SCU_FLAG_LOCK_LOST 0x2 -#define SCU_FLAG_LOCK 0x1 - - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -ErrorStatus SCU_MCLKSourceConfig(u32 MCLK_Source); -ErrorStatus SCU_PLLFactorsConfig(u8 PLLN, u8 PLLM, u8 PLLP); -ErrorStatus SCU_PLLCmd(FunctionalState NewState); -void SCU_RCLKDivisorConfig(u32 RCLK_Divisor); -void SCU_HCLKDivisorConfig(u32 HCLK_Divisor); -void SCU_PCLKDivisorConfig(u32 PCLK_Divisor); -void SCU_APBPeriphClockConfig(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphClockConfig(u32 AHBPeriph, FunctionalState NewState); -void SCU_APBPeriphReset(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphReset(u32 AHBPeriph, FunctionalState NewState); -void SCU_APBPeriphIdleConfig(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphIdleConfig(u32 AHBPeriph, FunctionalState NewState); -void SCU_APBPeriphDebugConfig(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphDebugConfig(u32 AHBPeriph, FunctionalState NewState); -void SCU_BRCLKDivisorConfig(u32 BRCLK_Divisor); -void SCU_TIMCLKSourceConfig(u8 TIMx, u32 TIMCLK_Source); -void SCU_TIMPresConfig(u8 TIMx, u16 Prescaler); -void SCU_USBCLKConfig(u32 USBCLK_Source); -void SCU_PHYCLKConfig(FunctionalState NewState); -void SCU_FMICLKDivisorConfig(u32 FMICLK_Divisor); -void SCU_EMIBCLKDivisorConfig(u32 SCU_EMIBCLK); -void SCU_EMIModeConfig(u32 SCU_EMIMODE); -void SCU_EMIALEConfig(u32 SCU_EMIALE_LEN, u32 SCU_EMIALE_POL); -void SCU_ITConfig(u32 SCU_IT, FunctionalState NewState); -FlagStatus SCU_GetFlagStatus(u32 SCU_Flag); -void SCU_ClearFlag(u32 SCU_Flag); -u32 SCU_GetPLLFreqValue(void); -u32 SCU_GetMCLKFreqValue(void); -u32 SCU_GetRCLKFreqValue(void); -u32 SCU_GetHCLKFreqValue(void); -u32 SCU_GetPCLKFreqValue(void); -void SCU_WakeUpLineConfig(u8 EXTint); -void SCU_SpecIntRunModeConfig(FunctionalState NewState); -void SCU_EnterIdleMode(void); -void SCU_EnterSleepMode(void); -void SCU_UARTIrDASelect(UART_TypeDef * UARTx, u8 UART_IrDA_Mode); -void SCU_PFQBCCmd(FunctionalState NewState); - -#endif /*__91x_SCU_H*/ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h deleted file mode 100644 index b587c27ac..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h +++ /dev/null @@ -1,155 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_tim.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* TIM software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_TIM_H -#define __91x_TIM_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" -#include "91x_scu.h" - -/* Exported types ----------------------------------------------------------- */ - -/* TIM Init structure define */ -typedef struct -{ - u16 TIM_Mode; /* Timer mode */ - u16 TIM_OC1_Modes; /* Output Compare 1 Mode: Timing or Wave */ - u16 TIM_OC2_Modes; /* Output Compare 2 Mode: Timing or Wave */ - u16 TIM_Clock_Source; /* Timer Clock source APB/SCU/EXTERNAL */ - u16 TIM_Clock_Edge; /* Timer Clock Edge: Rising or Falling Edge */ - u16 TIM_OPM_INPUT_Edge; /* Timer Input Capture 1 Edge used in OPM Mode */ - u16 TIM_ICAP1_Edge; /* Timer Input Capture 1 Edge used in ICAP1 Mode */ - u16 TIM_ICAP2_Edge; /* Timer Input Capture 2 Edge used in ICAP2 Mode */ - u8 TIM_Prescaler; /* Timer Prescaler factor */ - u16 TIM_Pulse_Level_1; /* Level applied on the Output Compare Pin 1 */ - u16 TIM_Pulse_Level_2; /* Level applied on the Output Compare Pin 2 */ - u16 TIM_Period_Level; /* Level applied during the Period of a PWM Mode */ - u16 TIM_Pulse_Length_1; /* Pulse 1 Length used in Output Compare 1 Mode */ - u16 TIM_Pulse_Length_2; /* Pulse 2 Length used in Output Compare 2 Mode */ - u16 TIM_Full_Period; /* Period Length used in PWM Mode */ -} TIM_InitTypeDef; - -typedef enum -{ - TIM_START, - TIM_STOP, - TIM_CLEAR -} TIM_CounterOperations; - -/* Exported constants --------------------------------------------------------*/ - -/* TIM MODE */ -#define TIM_PWMI 0x4000 /* PWM INPUT Mode */ -#define TIM_OCM_CHANNEL_1 0x0040 /* OUTPUT COMPARE CHANNEL 1 Mode */ -#define TIM_OCM_CHANNEL_2 0x0080 /* OUTPUT COMPARE CHANNEL 2 Mode */ -#define TIM_OCM_CHANNEL_12 0x00C0 /* OUTPUT COMPARE CHANNEL 1 & 2 Mode */ -#define TIM_PWM 0x0010 /* PWM Mode */ -#define TIM_OPM 0x0020 /* ONE PULSE Mode */ -#define TIM_ICAP_CHANNEL_1 0x0400 /* INPUT CAPTURE 1 Mode */ -#define TIM_ICAP_CHANNEL_2 0x0500 /* INPUT CAPTURE 2 Mode */ -#define TIM_ICAP_CHANNEL_12 0x0600 /* INPUT CAPTURE 1 & 2 Mode */ - -/* TIM OUTPUT COMPARE MODE */ -#define TIM_WAVE 0x0001 -#define TIM_TIMING 0x0002 - -/* TIM CLOCK SOURCE */ -#define TIM_CLK_APB 0xFFFE -#define TIM_CLK_EXTERNAL 0x0001 -#define TIM_CLK_SCU 0x0001 - -/* TIM CLOCK EDGE */ -#define TIM_CLK_EDGE_FALLING 0xFFFD -#define TIM_CLK_EDGE_RISING 0x0002 - -/* TIM OPM INPUT EDGE */ -#define TIM_OPM_EDGE_FALLING 0xFFFB -#define TIM_OPM_EDGE_RISING 0x0004 - -/* TIM ICAPA INPUT EDGE */ -#define TIM_ICAP1_EDGE_FALLING 0xFFFB -#define TIM_ICAP1_EDGE_RISING 0x0004 - -/* TIM ICAPB INPUT EDGE */ -#define TIM_ICAP2_EDGE_FALLING 0xFFF7 -#define TIM_ICAP2_EDGE_RISING 0x0008 - -/* TIM OUTPUT LEVEL */ -#define TIM_HIGH 0x0200 -#define TIM_LOW 0x0300 - -/* TIM OUTPUT EDGE */ -#define TIM_OUTPUT_EDGE_RISING 0x8000 -#define TIM_OUTPUT_EDGE_FALLING 0x0800 - -/* TIM channels */ -#define TIM_PWM_OC1_Channel 0x1 /* PWM/Output Compare 1 Channel */ -#define TIM_OC2_Channel 0x2 /* Output Compare 2 Channel */ - -/* TIM DMA SOURCE */ -#define TIM_DMA_IC1 0x0000 /* Input Capture Channel 1 DMA Source */ -#define TIM_DMA_OC1 0x1000 /* OUTPUT Compare Channel 1 DMA Source */ -#define TIM_DMA_IC2 0x2000 /* Input Capture Channel 2 DMA Source */ -#define TIM_DMA_OC2 0x3000 /* OUTPUT Compare Channel 2 DMA Source */ - -/* TIM DMA ENABLE or DISABLE */ -#define TIM_DMA_ENABLE 0x0400 /* DMA Enable */ -#define TIM_DMA_DISABLE 0xFBFF /* DMA Disable */ - -/* TIM Interruption Sources*/ -#define TIM_IT_IC1 0x8000 /* Input Capture Channel 1 Interrupt Source */ -#define TIM_IT_OC1 0x4000 /* Output Compare Channel 1 Interrupt Source */ -#define TIM_IT_TO 0x2000 /* Timer OverFlow Interrupt Source */ -#define TIM_IT_IC2 0x1000 /* Input Capture Channel 2 Interrupt Source */ -#define TIM_IT_OC2 0x0800 /* Output Compare Channel 2 Interrupt Source */ - -/* TIM Flags */ -#define TIM_FLAG_IC1 0x8000 /* Input Capture Channel 1 Flag */ -#define TIM_FLAG_OC1 0x4000 /* Output Compare Channel 1 Flag */ -#define TIM_FLAG_TO 0x2000 /* Timer OverFlow Flag */ -#define TIM_FLAG_IC2 0x1000 /* Input Capture Channel 2 Flag */ -#define TIM_FLAG_OC2 0x0800 /* Output Compare Channel 2 Flag */ - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct); -void TIM_DeInit(TIM_TypeDef *TIMx); -void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct); -void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation); -void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler); -u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx); -u16 TIM_GetCounterValue(TIM_TypeDef *TIMx); -u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx); -u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx); -void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse); -FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag); -void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag); -u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx); -u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx); -void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate); -void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources); -void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate); - -#endif /* __91x_TIM_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h deleted file mode 100644 index 916d81c68..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h +++ /dev/null @@ -1,50 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_type.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : It contains common types and constants used in all the -* peripherals' drivers. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -********************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*********************************************************************************/ - -#ifndef __91x_type_H -#define __91x_type_H - - typedef long long u64; - typedef unsigned long u32; - typedef unsigned short u16; - typedef unsigned char u8; - - typedef signed long s32; - typedef signed short s16; - typedef signed char s8; - - typedef volatile unsigned long vu32; - typedef volatile unsigned short vu16; - typedef volatile unsigned char vu8; - - typedef volatile signed long vs32; - typedef volatile signed short vs16; - typedef volatile signed char vs8; - -typedef enum { FALSE = 0, TRUE = !FALSE } bool; - -typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus; - -typedef enum { DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -typedef enum { ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -#endif /* __91x_type_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h deleted file mode 100644 index b979438bb..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h +++ /dev/null @@ -1,174 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_uart.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* UART software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_UART_H -#define __91x_UART_H - -/* Includes ------------------------------------------------------------------*/ -#include <91x_map.h> - -/* Exported types ------------------------------------------------------------*/ -/* UART FIFO Level enumeration */ -typedef enum -{ - UART_FIFOLevel_1_8 = 0x0000, /* FIFO size 16 bytes, FIFO level 2 bytes */ - UART_FIFOLevel_1_4 = 0x0001, /* FIFO size 16 bytes, FIFO level 4 bytes */ - UART_FIFOLevel_1_2 = 0x0002, /* FIFO size 16 bytes, FIFO level 8 bytes */ - UART_FIFOLevel_3_4 = 0x0003, /* FIFO size 16 bytes, FIFO level 12 bytes */ - UART_FIFOLevel_7_8 = 0x0004 /* FIFO size 16 bytes, FIFO level 14 bytes */ -}UART_FIFOLevel; - -/* UART Init Structure definition */ -typedef struct -{ - u16 UART_WordLength; - u16 UART_StopBits; - u16 UART_Parity; - u32 UART_BaudRate; - u16 UART_HardwareFlowControl; - u16 UART_Mode; - u16 UART_FIFO; - UART_FIFOLevel UART_TxFIFOLevel; - UART_FIFOLevel UART_RxFIFOLevel; -}UART_InitTypeDef; - - -/* UART RTS enumeration */ -typedef enum -{ - LowLevel = 0, - HighLevel -}UART_LevelTypeDef; - -/* Exported constants --------------------------------------------------------*/ -/* UART Data Length */ -#define UART_WordLength_5D 0x0000 /* 5 bits Data */ -#define UART_WordLength_6D 0x0020 /* 6 bits Data */ -#define UART_WordLength_7D 0x0040 /* 7 bits Data */ -#define UART_WordLength_8D 0x0060 /* 8 bits Data */ - -/* UART Stop Bits */ -#define UART_StopBits_1 0xFFF7 /* Disable two stop bit is transmitted - at the end of frame */ -#define UART_StopBits_2 0x0008 /* Enable Two stop bits are transmitted - at the end of frame */ -/* UART Parity */ -#define UART_Parity_No 0x0000 /* Parity Disable */ -#define UART_Parity_Even 0x0006 /* Even Parity */ -#define UART_Parity_Odd 0x0002 /* Odd Parity */ -#define UART_Parity_OddStick 0x0082 /* 1 is transmitted as bit parity */ -#define UART_Parity_EvenStick 0x0086 /* 0 is transmitted as bit parity */ - -/* UART Hardware Flow Control */ -#define UART_HardwareFlowControl_None 0x0000 /* HFC Disable */ -#define UART_HardwareFlowControl_RTS 0x4000 /* RTS Enable */ -#define UART_HardwareFlowControl_CTS 0x8000 /* CTS Enable */ -#define UART_HardwareFlowControl_RTS_CTS 0xC000 /* CTS and RTS Enable */ - -/* UART Mode */ -#define UART_Mode_Rx 0x0200 /* UART Rx Enabled */ -#define UART_Mode_Tx 0x0100 /* UART Tx Enbled */ -#define UART_Mode_Tx_Rx 0x0300 /* UART Tx and Rx Enabled */ - -/* UART FIFO */ -#define UART_FIFO_Disable 0xFFEF /* FIFOs Disable */ -#define UART_FIFO_Enable 0x0010 /* FIFOs Enable */ - -/* UART Interrupt definition */ -#define UART_IT_OverrunError 0x0400 /* Overrun Error interrupt mask */ -#define UART_IT_BreakError 0x0200 /* Break Error interrupt mask */ -#define UART_IT_ParityError 0x0100 /* Parity Error interrupt mask */ -#define UART_IT_FrameError 0x0080 /* Frame Error interrupt mask */ -#define UART_IT_ReceiveTimeOut 0x0040 /* Receive Time Out interrupt mask */ -#define UART_IT_Transmit 0x0020 /* Transmit interrupt mask */ -#define UART_IT_Receive 0x0010 /* Receive interrupt mask */ -#define UART_IT_DSR 0x0008 /* DSR interrupt mask */ -#define UART_IT_DCD 0x0004 /* DCD interrupt mask */ -#define UART_IT_CTS 0x0002 /* CTS interrupt mask */ -#define UART_IT_RI 0x0001 /* RI interrupt mask */ - -/* UART DMA On Error */ -#define UART_DMAOnError_Enable 0xFFFB /* DMA receive request enabled - when the UART error interrupt - is asserted. */ -#define UART_DMAOnError_Disable 0x0004 /* DMA receive request disabled - when the UART error interrupt - is asserted. */ -/* UART DMA Request */ -#define UART_DMAReq_Tx 0x02 /* Transmit DMA Enable */ -#define UART_DMAReq_Rx 0x01 /* Receive DMA Enable */ - -/* UART FLAG */ -#define UART_FLAG_OverrunError 0x23 /* Overrun error flag */ -#define UART_FLAG_Break 0x22 /* break error flag */ -#define UART_FLAG_ParityError 0x21 /* parity error flag */ -#define UART_FLAG_FrameError 0x20 /* frame error flag */ -#define UART_FLAG_RI 0x48 /* RI flag */ -#define UART_FLAG_TxFIFOEmpty 0x47 /* Transmit FIFO Empty flag */ -#define UART_FLAG_RxFIFOFull 0x46 /* Receive FIFO Full flag */ -#define UART_FLAG_TxFIFOFull 0x45 /* Transmit FIFO Full flag */ -#define UART_FLAG_RxFIFOEmpty 0x44 /* Receive FIFO Empty flag */ -#define UART_FLAG_Busy 0x43 /* UART Busy flag */ -#define UART_FLAG_DCD 0x42 /* DCD flag */ -#define UART_FLAG_DSR 0x41 /* DSR flag */ -#define UART_FLAG_CTS 0x40 /* CTS flag */ -#define UART_RawIT_OverrunError 0x6A /* Overrun Error Raw IT flag */ -#define UART_RawIT_BreakError 0x69 /* Break Error Raw IT flag */ -#define UART_RawIT_ParityError 0x68 /* Parity Error Raw IT flag */ -#define UART_RawIT_FrameError 0x67 /* Frame Error Raw IT flag */ -#define UART_RawIT_ReceiveTimeOut 0x66 /* ReceiveTimeOut Raw IT flag */ -#define UART_RawIT_Transmit 0x65 /* Transmit Raw IT flag */ -#define UART_RawIT_Receive 0x64 /* Receive Raw IT flag */ -#define UART_RawIT_DSR 0x63 /* DSR Raw IT flag */ -#define UART_RawIT_DCD 0x62 /* DCD Raw IT flag */ -#define UART_RawIT_CTS 0x61 /* CTS Raw IT flag */ -#define UART_RawIT_RI 0x60 /* RI Raw IT flag */ - -/*IrDAx select*/ -#define IrDA0 0x01 /*IrDA0 select*/ -#define IrDA1 0x02 /*IrDA0 select*/ -#define IrDA2 0x03 /*IrDA0 select*/ - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void UART_DeInit(UART_TypeDef* UARTx); -void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct); -void UART_StructInit(UART_InitTypeDef* UART_InitStruct); -void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState); -void UART_ITConfig(UART_TypeDef* UARTx, u16 UART_IT, FunctionalState NewState); -void UART_DMAConfig(UART_TypeDef* UARTx, u16 UART_DMAOnError); -void UART_DMACmd(UART_TypeDef* UARTx, u8 UART_DMAReq, FunctionalState NewState); -void UART_LoopBackConfig(UART_TypeDef* UARTx, FunctionalState NewState); -FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx, u16 UART_FLAG); -void UART_ClearFlag(UART_TypeDef* UARTx); -void UART_ClearITPendingBit(UART_TypeDef* UARTx, u16 UART_IT); -void UART_IrDALowPowerConfig(u8 IrDAx, FunctionalState NewState); -void UART_IrDACmd(u8 IrDAx, FunctionalState NewState); -void UART_IrDASetCounter(u8 IrDAx, u32 IrDA_Counter); -void UART_SendData(UART_TypeDef* UARTx, u8 Data); -u8 UART_ReceiveData(UART_TypeDef* UARTx); -void UART_SendBreak(UART_TypeDef* UARTx); -void UART_DTRConfig(UART_LevelTypeDef LevelState); -void UART_RTSConfig(UART_LevelTypeDef LevelState); -ITStatus UART_GetITStatus(UART_TypeDef* UARTx, u16 UART_IT); - -#endif /* __91x_UART_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h deleted file mode 100644 index 127716a38..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h +++ /dev/null @@ -1,94 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_vic.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* VIC software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Define to prevent recursive inclusion ------------------------------------ */ -#ifndef __91x_VIC_H -#define __91x_VIC_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" -#include "91x_it.h" - -/* Exported types ------------------------------------------------------------*/ -/* Type of interrupt */ -typedef enum -{ - VIC_IRQ, - VIC_FIQ -} VIC_ITLineMode; - -/* Exported constants --------------------------------------------------------*/ - -/* VIC sources*/ - -#define WDG_ITLine 0 -#define SW_ITLine 1 -#define ARMRX_ITLine 2 -#define ARMTX_ITLine 3 -#define TIM0_ITLine 4 -#define TIM1_ITLine 5 -#define TIM2_ITLine 6 -#define TIM3_ITLine 7 -#define USBHP_ITLine 8 -#define USBLP_ITLine 9 -#define SCU_ITLine 10 -#define ENET_ITLine 11 -#define DMA_ITLine 12 -#define CAN_ITLine 13 -#define MC_ITLine 14 -#define ADC_ITLine 15 -#define UART0_ITLine 16 -#define UART1_ITLine 17 -#define UART2_ITLine 18 -#define I2C0_ITLine 19 -#define I2C1_ITLine 20 -#define SSP0_ITLine 21 -#define SSP1_ITLine 22 -#define LVD_ITLine 23 -#define RTC_ITLine 24 -#define WIU_ITLine 25 -#define EXTIT0_ITLine 26 -#define EXTIT1_ITLine 27 -#define EXTIT2_ITLine 28 -#define EXTIT3_ITLine 29 -#define USBWU_ITLine 30 -#define PFQBC_ITLine 31 - - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -void VIC_DeInit(void); -FlagStatus VIC_GetIRQStatus(u16 VIC_Source); -FlagStatus VIC_GetFIQStatus(u16 VIC_Source); -FlagStatus VIC_GetSourceITStatus(u16 VIC_Source); -void VIC_ITCmd(u16 VIC_Source, FunctionalState VIC_NewState); -void VIC_SWITCmd(u16 VIC_Source, FunctionalState VIC_NewState); -void VIC_ProtectionCmd(FunctionalState VIC_NewState); -u32 VIC_GetCurrentISRAdd(VIC_TypeDef* VICx); -u32 VIC_GetISRVectAdd(u16 VIC_Source); -void VIC_Config(u16 VIC_Source, VIC_ITLineMode VIC_LineMode, u8 VIC_Priority); - -#endif /* __91x_VIC_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h deleted file mode 100644 index fc70547ad..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h +++ /dev/null @@ -1,82 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_wdg.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* WDG software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_WDG_H -#define __91x_WDG_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" - -/* Exported types ------------------------------------------------------------*/ -typedef struct -{ -u16 WDG_Mode; -u16 WDG_ClockSource; -u16 WDG_Prescaler; -u16 WDG_Preload; - -} WDG_InitTypeDef; - -/* Exported constants --------------------------------------------------------*/ - -/* WDG_Mode */ -#define WDG_Mode_Wdg 0x0001 /*WDG configured to run in watchdog mode.*/ -#define WDG_Mode_Timer 0xFFFE /*WDG configured to be in Free-running Timer mode.*/ - - -/* WDG_ClockSource */ -#define WDG_ClockSource_Rtc 0x0004 /* External clock ( 32 khz RTC clock ) will be used as counting clock.*/ -#define WDG_ClockSource_Apb 0xFFFB /*The APB clock signal will be used as counting clock.*/ - -/* WDG_Prescaler */ -/*This member must be a number between 0x00 and 0xFF. -Specifies the Prescaler value to divide the clock source. -The clock of the Watchdog Timer Counter is divided by " WDG_Prescaler + 1".*/ - - - -/* WDG_Preload */ -/*This member must be a number between 0x0000 and 0xFFFF. -This value is loaded in the WDG Counter when it starts counting.*/ - - -/* WDG Sequence */ -#define WDG_KeyValue1 0xA55A -#define WDG_KeyValue2 0x5AA5 - -/* Exported macro ------------------------------------------------------------*/ - - -/* Exported functions ------------------------------------------------------- */ - -void WDG_DeInit(void); -void WDG_Init(WDG_InitTypeDef* WDG_InitStruct); -void WDG_StructInit(WDG_InitTypeDef* WDG_InitStruct); -void WDG_Cmd(FunctionalState NewState); -void WDG_ITConfig(FunctionalState NewState); -u16 WDG_GetCounter(void); -FlagStatus WDG_GetFlagStatus(void); -void WDG_ClearFlag(void); -ITStatus WDG_GetITStatus(void); -void WDG_ClearITPendingBit(void); - -#endif /* __WDG_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c deleted file mode 100644 index e560d03c5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c +++ /dev/null @@ -1,768 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_can.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the CAN software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_can.h" -#include "91x_scu.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/*----------------------------------------------------------------------------*/ -/* Macro Name : xxx_ID_MSK, xxx_ID_ARB */ -/* Description : Form the Mask and Arbitration registers value to filter */ -/* a range of identifiers or a fixed identifier, for standard*/ -/* and extended IDs */ -/*----------------------------------------------------------------------------*/ -#define RANGE_ID_MSK(range_start, range_end) (~((range_end) - (range_start))) -#define RANGE_ID_ARB(range_start, range_end) ((range_start) & (range_end)) - -#define FIXED_ID_MSK(id) RANGE_ID_MSK((id), (id)) -#define FIXED_ID_ARB(id) RANGE_ID_ARB((id), (id)) - -#define STD_RANGE_ID_MSK(range_start, range_end) ((u16)((RANGE_ID_MSK((range_start), (range_end)) & 0x7FF) << 2)) -#define STD_RANGE_ID_ARB(range_start, range_end) ((u16)(RANGE_ID_ARB((range_start), (range_end)) << 2)) - -#define STD_FIXED_ID_MSK(id) ((u16)((FIXED_ID_MSK(id) & 0x7FF) << 2)) -#define STD_FIXED_ID_ARB(id) ((u16)(FIXED_ID_ARB(id) << 2)) - -#define EXT_RANGE_ID_MSK_L(range_start, range_end) ((u16)(RANGE_ID_MSK((range_start), (range_end)) >> 11)) -#define EXT_RANGE_ID_MSK_H(range_start, range_end) ((u16)(STD_RANGE_ID_MSK((range_start), (range_end)) | ((RANGE_ID_MSK((range_start), (range_end)) >> 27) & 0x03))) -#define EXT_RANGE_ID_ARB_L(range_start, range_end) ((u16)(RANGE_ID_ARB((range_start), (range_end)) >> 11)) -#define EXT_RANGE_ID_ARB_H(range_start, range_end) ((u16)(STD_RANGE_ID_ARB((range_start), (range_end)) | ((RANGE_ID_ARB((range_start), (range_end)) >> 27) & 0x03))) - -#define EXT_FIXED_ID_MSK_L(id) ((u16)(FIXED_ID_MSK(id) >> 11)) -#define EXT_FIXED_ID_MSK_H(id) ((u16)(STD_FIXED_ID_MSK(id) | ((FIXED_ID_MSK(id) >> 27) & 0x03))) -#define EXT_FIXED_ID_ARB_L(id) ((u16)(FIXED_ID_ARB(id) >> 11)) -#define EXT_FIXED_ID_ARB_H(id) ((u16)(STD_FIXED_ID_ARB(id) | ((FIXED_ID_ARB(id) >> 27) & 0x03))) - -/* macro to format the timing register value from the timing parameters*/ -#define CAN_TIMING(tseg1, tseg2, sjw, brp) ((((tseg2-1) & 0x07) << 12) | (((tseg1-1) & 0x0F) << 8) | (((sjw-1) & 0x03) << 6) | ((brp-1) & 0x3F)) - -/* Private variables ---------------------------------------------------------*/ -/* array of pre-defined timing parameters for standard bitrates*/ -u16 CanTimings[] = { /* value bitrate NTQ TSEG1 TSEG2 SJW BRP */ - CAN_TIMING(11, 4, 4, 5), /* 0x3AC4 100 kbit/s 16 11 4 4 5 */ - CAN_TIMING(11, 4, 4, 4), /* 0x3AC3 125 kbit/s 16 11 4 4 4 */ - CAN_TIMING( 4, 3, 3, 4), /* 0x2383 250 kbit/s 8 4 3 3 4 */ - CAN_TIMING(13, 2, 1, 1), /* 0x1C00 500 kbit/s 16 13 2 1 1 */ - CAN_TIMING( 4, 3, 1, 1), /* 0x2300 1 Mbit/s 8 4 3 1 1 */ -}; - -/* Private function prototypes -----------------------------------------------*/ -static u32 GetFreeIF(void); -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : CAN_DeInit -* Description : Deinitializes the CAN peripheral registers to their default -* reset values. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_DeInit (void) -{ - /* Reset the CAN registers values*/ - - SCU_APBPeriphReset(__CAN,ENABLE); /*CAN peripheral is under Reset */ - SCU_APBPeriphReset(__CAN,DISABLE); /*CAN peripheral Reset off*/ - - -} - -/******************************************************************************* -* Function Name : CAN_Init -* Description : Initializes the CAN peripheral according to the specified -* parameters in the CAN_InitStruct. -* Input : CAN_InitStruct: pointer to a CAN_InitTypeDef structure that -* contains the configuration information for the CAN peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_Init(CAN_InitTypeDef* CAN_InitStruct) -{ - CAN_EnterInitMode(CAN_CR_CCE | CAN_InitStruct->CAN_ConfigParameters); - CAN_SetBitrate(CAN_InitStruct->CAN_Bitrate); - CAN_LeaveInitMode(); - CAN_LeaveTestMode(); -} - -/******************************************************************************* -* Function Name : CAN_StructInit -* Description : Fills each CAN_InitStruct member with its reset value. -* Input : CAN_InitStruct : pointer to a CAN_InitTypeDef structure which -* will be initialized. -* Output : None -* Return : None. -*******************************************************************************/ -void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct) -{ -/* Reset CAN init structure parameters values */ - CAN_InitStruct->CAN_ConfigParameters = 0x0; - CAN_InitStruct->CAN_Bitrate = 0x2301; -} - -/******************************************************************************* -* Function Name : CAN_SetBitrate -* Description : Setups a standard CAN bitrate. -* Input : bitrate: specifies the bit rate. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_SetBitrate(u32 bitrate) -{ - CAN->BTR = CanTimings[bitrate]; /* write the predefined timing value */ - CAN->BRPR = 0; /* clear the Extended Baud Rate Prescaler */ -} - -/******************************************************************************* -* Function Name : CAN_SetTiming -* Description : Setups the CAN timing with specific parameters -* Input : - tseg1: specifies Time Segment before the sample point. -* This parameter must be a number between 1 and 16. -* - tseg2: Time Segment after the sample point. This parameter -* must be a number between 1 and 8. -* - sjw: Synchronisation Jump Width. This parameter must be -* a number between 1 and 4. -* - brp: Baud Rate Prescaler. This parameter must be a number -* between 1 and 1024. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_SetTiming(u32 tseg1, u32 tseg2, u32 sjw, u32 brp) -{ - CAN->BTR = CAN_TIMING(tseg1, tseg2, sjw, brp); - CAN->BRPR = ((brp-1) >> 6) & 0x0F; -} - -/******************************************************************************* -* Function Name : GetFreeIF -* Description : Searchs the first free message interface, starting from 0. -* Input : None -* Output : None -* Return : A free message interface number (0 or 1) if found, else 2 -*******************************************************************************/ -static u32 GetFreeIF(void) -{ - if ((CAN->sMsgObj[0].CRR & CAN_CRR_BUSY) == 0) - return 0; - else if ((CAN->sMsgObj[1].CRR & CAN_CRR_BUSY) == 0) - return 1; - else - return 2; -} - -/******************************************************************************* -* Function Name : CAN_SetUnusedMsgObj -* Description : Configures the message object as unused -* Input : msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_SetUnusedMsgObj(u32 msgobj) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_WRRD - | CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - CAN->sMsgObj[msg_if].M1R = 0; - CAN->sMsgObj[msg_if].M2R = 0; - - CAN->sMsgObj[msg_if].A1R = 0; - CAN->sMsgObj[msg_if].A2R = 0; - - CAN->sMsgObj[msg_if].MCR = 0; - - CAN->sMsgObj[msg_if].DA1R = 0; - CAN->sMsgObj[msg_if].DA2R = 0; - CAN->sMsgObj[msg_if].DB1R = 0; - CAN->sMsgObj[msg_if].DB2R = 0; - - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_SetTxMsgObj -* Description : Configures the message object as TX. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* - idType: specifies the identifier type of the frames that -* will be transmitted using this message object. -* This parameter can be one of the following values: -* - CAN_STD_ID (standard ID, 11-bit) -* - CAN_EXT_ID (extended ID, 29-bit) -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_SetTxMsgObj(u32 msgobj, u32 idType) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_WRRD - | CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - CAN->sMsgObj[msg_if].M1R = 0; - CAN->sMsgObj[msg_if].A1R = 0; - - if (idType == CAN_STD_ID) - { - CAN->sMsgObj[msg_if].M2R = CAN_M2R_MDIR; - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | CAN_A2R_DIR; - } - else - { - CAN->sMsgObj[msg_if].M2R = CAN_M2R_MDIR | CAN_M2R_MXTD; - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | CAN_A2R_DIR | CAN_A2R_XTD; - } - - CAN->sMsgObj[msg_if].MCR = CAN_MCR_TXIE | CAN_MCR_EOB; - - CAN->sMsgObj[msg_if].DA1R = 0; - CAN->sMsgObj[msg_if].DA2R = 0; - CAN->sMsgObj[msg_if].DB1R = 0; - CAN->sMsgObj[msg_if].DB2R = 0; - - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_SetRxMsgObj -* Description : Configures the message object as RX. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* - idType: specifies the identifier type of the frames that -* will be transmitted using this message object. -* This parameter can be one of the following values: -* - CAN_STD_ID (standard ID, 11-bit) -* - CAN_EXT_ID (extended ID, 29-bit) -* - idLow: specifies the low part of the identifier range used -* for acceptance filtering. -* - idHigh: specifies the high part of the identifier range -* used for acceptance filtering. -* - singleOrFifoLast: specifies the end-of-buffer indicator. -* This parameter can be one of the following values: -* - TRUE: for a single receive object or a FIFO receive -* object that is the last one of the FIFO. -* - FALSE: for a FIFO receive object that is not the -* last one. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_SetRxMsgObj(u32 msgobj, u32 idType, u32 idLow, u32 idHigh, bool singleOrFifoLast) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_WRRD - | CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if (idType == CAN_STD_ID) - { - CAN->sMsgObj[msg_if].M1R = 0; - CAN->sMsgObj[msg_if].M2R = STD_RANGE_ID_MSK(idLow, idHigh); - - CAN->sMsgObj[msg_if].A1R = 0; - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | STD_RANGE_ID_ARB(idLow, idHigh); - } - else - { - CAN->sMsgObj[msg_if].M1R = EXT_RANGE_ID_MSK_L(idLow, idHigh); - CAN->sMsgObj[msg_if].M2R = CAN_M2R_MXTD | EXT_RANGE_ID_MSK_H(idLow, idHigh); - - CAN->sMsgObj[msg_if].A1R = EXT_RANGE_ID_ARB_L(idLow, idHigh); - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | CAN_A2R_XTD | EXT_RANGE_ID_ARB_H(idLow, idHigh); - } - - CAN->sMsgObj[msg_if].MCR = CAN_MCR_RXIE | CAN_MCR_UMASK | (singleOrFifoLast ? CAN_MCR_EOB : 0); - - CAN->sMsgObj[msg_if].DA1R = 0; - CAN->sMsgObj[msg_if].DA2R = 0; - CAN->sMsgObj[msg_if].DB1R = 0; - CAN->sMsgObj[msg_if].DB2R = 0; - - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_InvalidateAllMsgObj -* Description : Configures all the message objects as unused. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_InvalidateAllMsgObj(void) -{ - u32 i=0; - for (i = 0; i < 32; i++) - CAN_SetUnusedMsgObj(i); -} - - -/******************************************************************************* -* Function Name : CAN_ReleaseMessage -* Description : Releases the message object -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_ReleaseMessage(u32 msgobj) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_CLRINTPND | CAN_CMR_TXRQSTNEWDAT; - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_SendMessage -* Description : Start transmission of a message -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* : - pCanMsg: pointer to the message structure containing data -* to transmit. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Transmission OK -* - ERROR: No transmission -*******************************************************************************/ -ErrorStatus CAN_SendMessage(u32 msgobj, canmsg* pCanMsg) -{ - if (CAN->sMsgObj[0].CRR & CAN_CRR_BUSY) - { - return ERROR; - } - - CAN->SR &= ~CAN_SR_TXOK; - - /* read the Arbitration and Message Control*/ - CAN->sMsgObj[0].CMR = CAN_CMR_ARB | CAN_CMR_CONTROL; - - CAN->sMsgObj[0].CRR = 1 + msgobj; - - if (CAN->sMsgObj[0].CRR & CAN_CRR_BUSY) - { - return ERROR; - } - - /* update the contents needed for transmission*/ - CAN->sMsgObj[0].CMR = CAN_CMR_WRRD - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if ((CAN->sMsgObj[0].A2R & CAN_A2R_XTD) == 0) - { - /* standard ID*/ - CAN->sMsgObj[0].A1R = 0; - CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | STD_FIXED_ID_ARB(pCanMsg->Id); - } - else - { - /* extended ID*/ - CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id); - CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id); - } - - CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFEF0) | CAN_MCR_NEWDAT | CAN_MCR_TXRQST | pCanMsg->Dlc; - - CAN->sMsgObj[0].DA1R = ((u16)pCanMsg->Data[1]<<8) | pCanMsg->Data[0]; - CAN->sMsgObj[0].DA2R = ((u16)pCanMsg->Data[3]<<8) | pCanMsg->Data[2]; - CAN->sMsgObj[0].DB1R = ((u16)pCanMsg->Data[5]<<8) | pCanMsg->Data[4]; - CAN->sMsgObj[0].DB2R = ((u16)pCanMsg->Data[7]<<8) | pCanMsg->Data[6]; - - CAN->sMsgObj[0].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_ReceiveMessage -* Description : Gets the message, if received. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* - release: specifies the message release indicator. -* This parameter can be one of the following values: -* - TRUE: the message object is released when getting -* the data. -* - FALSE: the message object is not released. -* - pCanMsg: pointer to the message structure where received -* data is copied. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Reception OK -* - ERROR: No message pending -*******************************************************************************/ -ErrorStatus CAN_ReceiveMessage(u32 msgobj, bool release, canmsg* pCanMsg) -{ - if (!CAN_IsMessageWaiting(msgobj)) - { - return ERROR; - } - - CAN->SR &= ~CAN_SR_RXOK; - - /* read the message contents*/ - CAN->sMsgObj[1].CMR = CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_CLRINTPND - | (release ? CAN_CMR_TXRQSTNEWDAT : 0) - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - CAN->sMsgObj[1].CRR = 1 + msgobj; - - if (CAN->sMsgObj[1].CRR & CAN_CRR_BUSY) - { - return ERROR; - } - - if ((CAN->sMsgObj[1].A2R & CAN_A2R_XTD) == 0) - { - /* standard ID*/ - pCanMsg->IdType = CAN_STD_ID; - pCanMsg->Id = (CAN->sMsgObj[1].A2R >> 2) & 0x07FF; - } - else - { - /* extended ID*/ - pCanMsg->IdType = CAN_EXT_ID; - pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF); - pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11); - pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27); - } - - pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F; - - pCanMsg->Data[0] = (u8) CAN->sMsgObj[1].DA1R; - pCanMsg->Data[1] = (u8)(CAN->sMsgObj[1].DA1R >> 8); - pCanMsg->Data[2] = (u8) CAN->sMsgObj[1].DA2R; - pCanMsg->Data[3] = (u8)(CAN->sMsgObj[1].DA2R >> 8); - pCanMsg->Data[4] = (u8) CAN->sMsgObj[1].DB1R; - pCanMsg->Data[5] = (u8)(CAN->sMsgObj[1].DB1R >> 8); - pCanMsg->Data[6] = (u8) CAN->sMsgObj[1].DB2R; - pCanMsg->Data[7] = (u8)(CAN->sMsgObj[1].DB2R >> 8); - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_WaitEndOfTx -* Description : Waits until current transmission is finished. -* Input : None -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Transmission ended -* - ERROR: Transmission did not occur yet -*******************************************************************************/ -ErrorStatus CAN_WaitEndOfTx(void) -{ - if ((CAN->SR & CAN_SR_TXOK) == 0) - { - return ERROR; - } - CAN->SR &= ~CAN_SR_TXOK; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_BasicSendMessage -* Description : Starts transmission of a message in BASIC mode. This mode -* does not use the message RAM. -* Input : pCanMsg: Pointer to the message structure containing data to -* transmit. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Transmission OK -* - ERROR: No transmission -*******************************************************************************/ -ErrorStatus CAN_BasicSendMessage(canmsg* pCanMsg) -{ - /* clear NewDat bit in IF2 to detect next reception*/ - CAN->sMsgObj[1].MCR &= ~CAN_MCR_NEWDAT; - - CAN->SR &= ~CAN_SR_TXOK; - CAN->sMsgObj[0].CMR = CAN_CMR_WRRD - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if (pCanMsg->IdType == CAN_STD_ID) - { - /* standard ID*/ - CAN->sMsgObj[0].A1R = 0; - CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | STD_FIXED_ID_ARB(pCanMsg->Id); - } - else - { - /* extended ID*/ - CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id); - CAN->sMsgObj[0].A2R = ((CAN->sMsgObj[0].A2R) & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id); - } - - CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFCF0) | pCanMsg->Dlc; - - CAN->sMsgObj[0].DA1R = ((u16)pCanMsg->Data[1]<<8) | pCanMsg->Data[0]; - CAN->sMsgObj[0].DA2R = ((u16)pCanMsg->Data[3]<<8) | pCanMsg->Data[2]; - CAN->sMsgObj[0].DB1R = ((u16)pCanMsg->Data[5]<<8) | pCanMsg->Data[4]; - CAN->sMsgObj[0].DB2R = ((u16)pCanMsg->Data[7]<<8) | pCanMsg->Data[6]; - - /* request transmission*/ - if (CAN->sMsgObj[0].CRR == CAN_CRR_BUSY ) - { - return ERROR; - } - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_BasicReceiveMessage -* Description : Gets the message in BASIC mode, if received. This mode does -* not use the message RAM. -* Input : pCanMsg: pointer to the message structure where message is copied. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Reception OK -* - ERROR: No message pending -*******************************************************************************/ -ErrorStatus CAN_BasicReceiveMessage(canmsg* pCanMsg) -{ - if ((CAN->sMsgObj[1].MCR & CAN_MCR_NEWDAT) == 0) - { - return ERROR; - } - - CAN->SR &= ~CAN_SR_RXOK; - - CAN->sMsgObj[1].CMR = CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if ((CAN->sMsgObj[1].A2R & CAN_A2R_XTD) == 0) - { - /* standard ID*/ - pCanMsg->IdType = CAN_STD_ID; - pCanMsg->Id = (CAN->sMsgObj[1].A2R >> 2) & 0x07FF; - } - else - { - /* extended ID*/ - pCanMsg->IdType = CAN_EXT_ID; - pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF); - pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11); - pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27); - } - - pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F; - - pCanMsg->Data[0] = (u8) CAN->sMsgObj[1].DA1R; - pCanMsg->Data[1] = (u8)(CAN->sMsgObj[1].DA1R >> 8); - pCanMsg->Data[2] = (u8) CAN->sMsgObj[1].DA2R; - pCanMsg->Data[3] = (u8)(CAN->sMsgObj[1].DA2R >> 8); - pCanMsg->Data[4] = (u8) CAN->sMsgObj[1].DB1R; - pCanMsg->Data[5] = (u8)(CAN->sMsgObj[1].DB1R >> 8); - pCanMsg->Data[6] = (u8) CAN->sMsgObj[1].DB2R; - pCanMsg->Data[7] = (u8)(CAN->sMsgObj[1].DB2R >> 8); - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_EnterInitMode -* Description : Switchs the CAN into initialization mode. This function must -* be used in conjunction with CAN_LeaveInitMode(). -* Input : InitMask: specifies the CAN configuration in normal mode. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_EnterInitMode(u8 InitMask) -{ - CAN->CR = InitMask | CAN_CR_INIT; - CAN->SR = 0; /* reset the status*/ -} - -/******************************************************************************* -* Function Name : CAN_LeaveInitMode -* Description : Leaves the initialization mode (switch into normal mode). -* This function must be used in conjunction with CAN_EnterInitMode(). -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_LeaveInitMode(void) -{ - CAN->CR &= ~(CAN_CR_INIT | CAN_CR_CCE); -} - -/******************************************************************************* -* Function Name : CAN_EnterTestMode -* Description : Switchs the CAN into test mode. This function must be used in -* conjunction with CAN_LeaveTestMode(). -* Input : TestMask: specifies the configuration in test modes. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_EnterTestMode(u8 TestMask) -{ - CAN->CR |= CAN_CR_TEST; - CAN->TESTR |= TestMask; -} - -/******************************************************************************* -* Function Name : CAN_LeaveTestMode -* Description : Leaves the current test mode (switch into normal mode). -* This function must be used in conjunction with CAN_EnterTestMode(). -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_LeaveTestMode(void) -{ - CAN->CR |= CAN_CR_TEST; - CAN->TESTR &= ~(CAN_TESTR_LBACK | CAN_TESTR_SILENT | CAN_TESTR_BASIC); - CAN->CR &= ~CAN_CR_TEST; -} - -/******************************************************************************* -* Function Name : CAN_ReleaseTxMessage -* Description : Releases the transmit message object. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_ReleaseTxMessage(u32 msgobj) -{ - CAN->sMsgObj[0].CMR = CAN_CMR_CLRINTPND | CAN_CMR_TXRQSTNEWDAT; - CAN->sMsgObj[0].CRR = 1 + msgobj; -} - -/******************************************************************************* -* Function Name : CAN_ReleaseRxMessage -* Description : Releases the receive message object. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_ReleaseRxMessage(u32 msgobj) -{ - CAN->sMsgObj[1].CMR = CAN_CMR_CLRINTPND | CAN_CMR_TXRQSTNEWDAT; - CAN->sMsgObj[1].CRR = 1 + msgobj; -} - -/******************************************************************************* -* Function Name : CAN_IsMessageWaiting -* Description : Tests the waiting status of a received message. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message object has -* received a message waiting to be copied, else 0. -*******************************************************************************/ -u32 CAN_IsMessageWaiting(u32 msgobj) -{ - return (msgobj < 16 ? CAN->ND1R & (1 << msgobj) : CAN->ND2R & (1 << (msgobj-16))); -} - -/******************************************************************************* -* Function Name : CAN_IsTransmitRequested -* Description : Tests the request status of a transmitted message. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message is requested -* to transmit, else 0. -*******************************************************************************/ -u32 CAN_IsTransmitRequested(u32 msgobj) -{ - return (msgobj < 16 ? CAN->TXR1R & (1 << msgobj) : CAN->TXR2R & (1 << (msgobj-16))); -} - -/******************************************************************************* -* Function Name : CAN_IsInterruptPending -* Description : Tests the interrupt status of a message object. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message has an -* interrupt pending, else 0. -*******************************************************************************/ -u32 CAN_IsInterruptPending(u32 msgobj) -{ - return (msgobj < 16 ? CAN->IP1R & (1 << msgobj) : CAN->IP2R & (1 << (msgobj-16))); -} - -/******************************************************************************* -* Function Name : CAN_IsObjectValid -* Description : Tests the validity of a message object (ready to use). -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message object is -* valid, else 0. -*******************************************************************************/ -u32 CAN_IsObjectValid(u32 msgobj) -{ - return (msgobj < 16 ? CAN->MV1R & (1 << msgobj) : CAN->MV2R & (1 << (msgobj-16))); -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c deleted file mode 100644 index 5c2f31078..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c +++ /dev/null @@ -1,588 +0,0 @@ -/******************** -* Original work (C) COPYRIGHT 2006 STMicroelectronics ************************** -* Modifications (C) CopyRight 2006 Richard barry -* File Name : 91x_enet.c -* Author : MCD Application Team -* Date First Issued : May 2006 -* Description : ENET library functions -******************************************************************************** -* History: -* May 2006: v1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Includes ------------------------------------------------------------------*/ -#include "FreeRTOS.h" -#include "task.h" -#include "91x_lib.h" -#include "string.h" //include when using memcpy function - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#ifndef NULL -#define NULL (0) -#endif -/* Function return values */ -#define ENET_OK (1) -#define ENET_NOK (0) - -/* PHY interface constants. */ -#define STE100P_STATUS_REG 0x01 -#define STE100P_CONTROL_REG 0x00 -#define STE100P_LINK_ABILITY 0x05 -#define STE100P_STATUS_LINKED 0x0004 -#define STE100P_AUTO_NEGOTIATE_ABILITY 0x1000 -#define STE100P_AUTO_NEGOTIATE_COMPLETE 0x20 -#define STE100P_10HALF 0x0020 -#define STE100P_10FULL 0x0040 -#define STE100P_100HALF 0x0080 -#define STE100P_100FULL 0x0100 -#define STE100P_CTRL_FULL 0x0100 - - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -#define ENET_NUM_RX_BUFFERS 8 - -static ENET_DMADSCRBase dmaTxDscrBase, dmaRxDscrBase[ ENET_NUM_RX_BUFFERS ]; -static u8 RxBuff[ ENET_NUM_RX_BUFFERS ][ENET_BUFFER_SIZE]; -u8 TxBuff[ENET_BUFFER_SIZE]; - -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : ENET_SetMACConfig(ENET_MACConfig * MAC_Config) -* Description : MAC Control Register Configuration -* Input : MAC_Config structure -* Output : None -* Return : None -*******************************************************************************/ -void ENET_MACControlConfig(ENET_MACConfig *MAC_Config) -{ - /* ReceiveALL bit */ - if (MAC_Config->ReceiveALL==ENABLE) ENET_MAC->MCR |= MAC_MCR_RA; - else ENET_MAC->MCR &=~MAC_MCR_RA; - - /* MIIPrescaler */ - ENET_MAC->MCR &=~(0x3<<24); - if ((MAC_Config->MIIPrescaler) == MIIPrescaler_2) - ENET_MAC->MCR |=0x1<<24; - - /* Loopback mode */ - if (MAC_Config->LoopbackMode==ENABLE) - { - ENET_MAC->MCR &=~MAC_MCR_LM; - ENET_MAC->MCR |=0x1<<21; - ENET_MAC->MCR &=~MAC_MCR_DRO; /*enable frame reception during transmission*/ - } - - /* Address filtering mode */ - ENET_MAC->MCR &=~MAC_MCR_AFM; - ENET_MAC->MCR |= MAC_Config->AddressFilteringMode; - - /* VLAN Filtering Mode */ - ENET_MAC->MCR |= (MAC_Config->VLANFilteringMode)<<15; - - /*Wrong Frame Pass */ - if (MAC_Config->PassWrongFrame == ENABLE) ENET_MAC->MCR |=MAC_MCR_PWF; - else ENET_MAC->MCR &=~MAC_MCR_PWF; - - /* Late Collision Retransmission*/ - if (MAC_Config->LateCollision == ENABLE) ENET_MAC->MCR |=MAC_MCR_ELC; - else ENET_MAC->MCR &=~MAC_MCR_ELC; - - /* Broadcast Frame Reception */ - if (MAC_Config->BroadcastFrameReception == ENABLE) ENET_MAC->MCR &=~MAC_MCR_DBF; - else ENET_MAC->MCR |=MAC_MCR_DBF; - - /* PacketRetry */ - if (MAC_Config->PacketRetry == ENABLE) ENET_MAC->MCR &=~MAC_MCR_DPR; - else ENET_MAC->MCR |=MAC_MCR_DPR; - - /* RxFrameFiltering */ - if (MAC_Config->RxFrameFiltering == ENABLE) ENET_MAC->MCR |=MAC_MCR_RVFF; - else ENET_MAC->MCR &=~MAC_MCR_RVFF; - - /* AutomaticPadRemoval */ - if (MAC_Config->AutomaticPadRemoval == ENABLE) ENET_MAC->MCR |=MAC_MCR_APR; - else ENET_MAC->MCR &=~MAC_MCR_APR; - - /* DefferalCheck */ - if (MAC_Config->DeferralCheck == ENABLE) ENET_MAC->MCR |=MAC_MCR_DCE; - else ENET_MAC->MCR &=~MAC_MCR_DCE; - -} - - - -/******************************************************************************* -* Function Name : ENET_SetOperatingMode -* Description : Sets the Operating mode -* Input : ENET_OperatingMode:(see ENET_OperatingMode in 91x_enet.h) -* Output : None -* Return : None -*******************************************************************************/ -portBASE_TYPE ENET_SetOperatingMode( void ) -{ -unsigned long ulStatusReg, ulControlReg, ulLinkAbilityReg; - - /* Link status is latched, so read twice to get current value */ - ulStatusReg = ENET_MIIReadReg(0, STE100P_STATUS_REG); - ulStatusReg = ENET_MIIReadReg(0, STE100P_STATUS_REG); - - if( !( ulStatusReg & STE100P_STATUS_LINKED ) ) - { - /* No Link. */ - return pdFAIL; - } - - ulControlReg = ENET_MIIReadReg(0, STE100P_CONTROL_REG); - if (ulControlReg & STE100P_AUTO_NEGOTIATE_ABILITY) - { - /* AutoNegotiation is enabled. */ - if (!(ulStatusReg & STE100P_AUTO_NEGOTIATE_COMPLETE)) - { - /* Auto-negotiation in progress. */ - return pdFAIL; - } - - ulLinkAbilityReg = ENET_MIIReadReg(0, STE100P_LINK_ABILITY); - if( ( ulLinkAbilityReg & STE100P_100FULL ) || ( ulLinkAbilityReg & STE100P_10FULL ) ) - { - ENET_MAC->MCR |=MAC_MCR_FDM; /* full duplex mode */ - ENET_MAC->MCR &=~MAC_MCR_DRO; /* enable frame reception during transmission */ - } - else - { - ENET_MAC->MCR &=~MAC_MCR_FDM; /* half duplex mode */ - ENET_MAC->MCR |=MAC_MCR_DRO; /* disable frame reception during transmission */ - } - } - else - { - if( ulStatusReg & STE100P_CTRL_FULL ) - { - ENET_MAC->MCR |=MAC_MCR_FDM; /* full duplex mode */ - ENET_MAC->MCR &=~MAC_MCR_DRO; /* enable frame reception during transmission */ - } - else - { - ENET_MAC->MCR &=~MAC_MCR_FDM; /* half duplex mode */ - ENET_MAC->MCR |=MAC_MCR_DRO; /* disable frame reception during transmission */ - } - } - - return pdPASS; -} - -/******************************************************************************* -* Function Name : ENET_MIIWriteReg -* Description : Writes a value on the PHY registers -* Input : phyDev PHY device address - : phyReg PHY register to be written -* : phyVal PHY register value -* Output : None -* Return : None -*******************************************************************************/ -void ENET_MIIWriteReg (u8 phyDev, u8 phyReg, u32 phyVal) -{ - - volatile u32 addr; - volatile u32 res; /* temporary result for address register status */ - volatile u32 timeout; - - /* Prepare the MII register address */ - addr = 0; - addr |= ((phyDev<<11) & MAC_MII_ADDR_PHY_ADDR); /* set the PHY address */ - addr |= ((phyReg<<6) & MAC_MII_ADDR_MII_REG); /* select the corresponding register */ - addr |= MAC_MII_ADDR_MII_WRITE; /* in write mode */ - addr |= MAC_MII_ADDR_MII_BUSY; - - /* Check for the Busy flag */ - timeout=0; - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_WRITE_TO)); - - /* Give the value to the MII data register */ - ENET_MAC->MIID = (phyVal & 0xFFFF); - - /* write the result value into the MII Address register */ - ENET_MAC->MIIA =addr; - - /* Check for the Busy flag */ - timeout=0; - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_WRITE_TO)); - -} - -/******************************************************************************* -* Function Name : ENET_MIIReadReg -* Description : Writes a value on the PHY -* Input : phyDev PHY device address -* : phyReg PHY register to be read -* Output : None -* Return : The read value (16 bits) -*******************************************************************************/ -u32 ENET_MIIReadReg (u8 phyDev, u32 phyReg ) -{ - - u32 rValue; - u32 addr; - u32 res; /* temporary result for address register status */ - u32 timeout; /* timeout value for read process */ - - /* prepare the MII register address */ - addr = 0; - addr |= ((phyDev<<11) & MAC_MII_ADDR_PHY_ADDR); /* set the PHY address */ - addr |= ((phyReg<<6) & MAC_MII_ADDR_MII_REG); /* select the corresponding register */ - addr &= ~(MAC_MII_ADDR_MII_WRITE); /* ... in read mode */ - addr |= MAC_MII_ADDR_MII_BUSY; - - /* Check for the Busy flag */ - timeout = 0; - - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_READ_TO)); - - /* write the result value into the MII Address register */ - ENET_MAC->MIIA = addr; - - /* Check for the Busy flag */ - timeout = 0; - - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_READ_TO)); - - /* read the result value from data register*/ - rValue = ENET_MAC->MIID; - - return (rValue & 0x0000FFFF); -} - -/******************************************************************************* -* Function Name : ENET_RxDscrInit -* Description : Initializes the Rx ENET descriptor chain. Single Descriptor -* Input : None -* Output : None -* Return : None -*******************************************************************************/ - -void ENET_RxDscrInit(void) -{ -int i; - - for( i = 0; i < ENET_NUM_RX_BUFFERS; i++ ) - { - /* Assign temp Rx array to the ENET buffer */ - dmaRxDscrBase[ i ].dmaAddr = (u32)&(RxBuff[ i ][ 0 ]); - - /* Initialize RX ENET Status and control */ - dmaRxDscrBase[ i ].dmaStatCntl = 0x4000; - - /* Initialize the next descriptor- In our case its single descriptor */ - dmaRxDscrBase[ i ].dmaNext = (u32)&(dmaRxDscrBase[i+1]) | 0x01; - - /* Set the max packet size */ - dmaRxDscrBase[ i ].dmaStatCntl = ENET_MAX_PACKET_SIZE | ENET_NEXT_ENABLE; - - /* Setting the VALID bit */ - dmaRxDscrBase[ i ].dmaPackStatus = DMA_DSCR_RX_STATUS_VALID_MSK; - } - - dmaRxDscrBase[ ENET_NUM_RX_BUFFERS - 1 ].dmaNext = (u32)&(dmaRxDscrBase[ 0 ]); - - /* Setting the RX NEXT Descriptor Register inside the ENET */ - ENET_DMA->RXNDAR = (u32)&(dmaRxDscrBase) | 0x01; -} - -/******************************************************************************* -* Function Name : ENET_TxDscrInit -* Description : Initializes the Tx ENET descriptor chain with single descriptor -* Input : None -* Output : None -* Return : None -*******************************************************************************/ - -void ENET_TxDscrInit(void) -{ - - /* ENET Start Address */ - dmaTxDscrBase.dmaAddr = (u32)TxBuff; - - /* Next Descriptor Address */ - dmaTxDscrBase.dmaNext = (u32)&(dmaTxDscrBase); - - /* Initialize ENET status and control */ - dmaTxDscrBase.dmaStatCntl = 0; - - /* Tx next set to Tx decriptor base */ - ENET_DMA->TXNDAR = (u32)&(dmaTxDscrBase); - - /* Enable next enable */ - ENET_DMA->TXNDAR |= DMA_DSCR_NXT_NPOL_EN; - -} - -/******************************************************************************* -* Function Name : ENET_Init -* Description : ENET MAC, PHY and DMA initializations -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ENET_Init () -{ - - vu32 regValue; - ENET_MACConfig *MAC_Config; - ENET_MACConfig config; - - /* De-assert the SRESET bit of ENET + MAC devices */ - ENET_DMA->SCR &=~DMA_SCR_SRESET; - MAC_Config =&config; - /* Initialize MAC control register with common values */ - MAC_Config->ReceiveALL = DISABLE; - if (SCU_GetHCLKFreqValue() > 50000) - MAC_Config->MIIPrescaler = MIIPrescaler_2; - MAC_Config->LoopbackMode = DISABLE; - MAC_Config->AddressFilteringMode = MAC_Perfect_Multicast_Perfect; - MAC_Config->VLANFilteringMode = VLANfilter_VLTAG; - MAC_Config->PassWrongFrame = DISABLE; - MAC_Config->LateCollision = DISABLE; - MAC_Config->BroadcastFrameReception = ENABLE; - MAC_Config->PacketRetry = ENABLE; - MAC_Config->RxFrameFiltering = ENABLE; - MAC_Config->AutomaticPadRemoval = ENABLE; - MAC_Config->DeferralCheck = ENABLE; - - /* Configure MAC control register */ - ENET_MACControlConfig(MAC_Config); - - /* DMA initialization */ - /* Read the ENET DMA Status and Control Register */ - regValue = ENET_DMA->SCR; - - /* Setup Tx Max burst size */ - regValue &= ~(u32)DMA_SCR_TX_MAX_BURST_SZ; - regValue |= (u32)DMA_SCR_TX_MAX_BURST_SZ_VAL; - - /* Setup Rx Max Burst size */ - regValue &= ~(u32)DMA_SCR_RX_MAX_BURST_SZ; - regValue |= (u32)DMA_SCR_RX_MAX_BURST_SZ_VAL; - - /* Write Tx & Rx burst size to the ENET status and control register */ - ENET_DMA->SCR = regValue; - - /* Put the PHY in reset mode */ - ENET_MIIWriteReg(0x0,MAC_MII_REG_XCR, 0x8000); - - /* Delay to assure PHY reset */ - vTaskDelay( 3000 / portTICK_PERIOD_MS ); - - /* initialize the opearting mode */ - while( ENET_SetOperatingMode() == pdFAIL ) - { - vTaskDelay( 3000 / portTICK_PERIOD_MS ); - } - - /*set MAC physical*/ - //ENET_MAC->MAH = (MAC_ADDR5<<8) + MAC_ADDR4; - //ENET_MAC->MAL = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + (MAC_ADDR1<<8) + MAC_ADDR0; - - /* Initialize Rx and Tx descriptors in memory */ - ENET_TxDscrInit(); - ENET_RxDscrInit(); - - // What's happening ??? -#ifdef DEBUG - //int pippo = 1; // Do NOT remove!!! -#endif -} - -/******************************************************************************** -* Function Name : ENET_HandleRxPkt -* Description : receive a packet and copy it to memory pointed by ppkt. -* Input : ppkt: pointer on application receive buffer. -* Output : None -* Return : ENET_NOK - If there is no packet -* : ENET_OK - If there is a packet -*******************************************************************************/ -u32 ENET_HandleRxPkt ( void *ppkt) -{ -ENET_DMADSCRBase *pDescr; -u16 size; -static int iNextRx = 0; - - if( dmaRxDscrBase[ iNextRx ].dmaPackStatus & DMA_DSCR_RX_STATUS_VALID_MSK ) - { - return 0; - } - - pDescr = &dmaRxDscrBase[ iNextRx ]; - - /*Get the size of the packet*/ - size = ((pDescr->dmaPackStatus & 0x7ff) - 4); - - //MEMCOPY_L2S_BY4((u8*)ppkt, RxBuff, size); /*optimized memcopy function*/ - memcpy(ppkt, RxBuff[iNextRx], size); //string.h library*/ - - /* Give the buffer back to ENET */ - pDescr->dmaPackStatus = DMA_DSCR_RX_STATUS_VALID_MSK; - - iNextRx++; - - if( iNextRx >= ENET_NUM_RX_BUFFERS ) - { - iNextRx = 0; - } - - /* Return no error */ - return size; -} - -/******************************************************************************* -* Function Name : ENET_TxPkt -* Description : Transmit a packet -* Input : ppkt: pointer to application packet Buffer -* : size: Tx Packet size -* Output : None -* Return : None -*******************************************************************************/ - -u8 *pcGetNextBuffer( void ) -{ - if( dmaTxDscrBase.dmaPackStatus & DMA_DSCR_TX_STATUS_VALID_MSK ) - { - return NULL; - } - else - { - return ( unsigned char * ) TxBuff; - } -} - -void ENET_TxPkt(void *ppkt, u16 size) -{ - /* Setting the Frame Length*/ - dmaTxDscrBase.dmaStatCntl = (size&0xFFF); - - /* Start the ENET by setting the VALID bit in dmaPackStatus of current descr*/ - dmaTxDscrBase.dmaPackStatus = DMA_DSCR_TX_STATUS_VALID_MSK; - - /* Start the transmit operation */ - ENET_DMA->TXSTR|= DMA_TX_START_FETCH; -} - -/******************************************************************************* -* Function Name : ENET_Start -* Description : Enables ENET MAC reception / transmission & starts DMA fetch -* Input : None -* Output : None -* Return : None -*******************************************************************************/ - -void ENET_Start ( void) -{ - u32 value; - - /* Force a ENET abort by software for the receive block */ - ENET_DMA->RXSTR &=~ DMA_RX_START_DMA_EN; - - /* Force a ENET abort by software for the transmit block */ - ENET_DMA->TXSTR &=~DMA_TX_START_DMA_EN; - - /* Reset all interrupts */ - ENET_DMA->ISR = 0xFFFFFFFF; - - /* Setup Descriptor Fetch ENET_PhyDelay for Receive Block */ - value = ENET_DMA->RXSTR; - value &= ~( DMA_RX_START_DFETCH_DLY ); - value |= DMA_RX_START_DFETCH_DEFAULT; - ENET_DMA->RXSTR= value; - - /* Setup Descriptor Fetch ENET_PhyDelay for Transmit Block */ - value = ENET_DMA->TXSTR; - value &= ~( DMA_TX_START_DFETCH_DLY ); - value |= DMA_TX_START_DFETCH_DEFAULT; - ENET_DMA->TXSTR= value; - - /* Set Tx underrun bit */ - value &= ~( DMA_TX_START_URUN ); - value |= DMA_TX_START_URUN; - ENET_DMA->TXSTR = value; - - /* Clear the interrupts */ - ENET_DMA->IER = 0x0; - - /* MAC TX enable */ - ENET_MAC->MCR|= MAC_MCR_TE; - - /* MAC RX enable */ - ENET_MAC->MCR|= MAC_MCR_RE; - - /* Start the DMA Fetch */ - ENET_DMA->RXSTR|= DMA_RX_START_FETCH; -} - - -/******************************************************************************* -* Function Name : ENET_InitClocksGPIO -* Description : Reset, clocks & GPIO Ethernet Pin initializations -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ENET_InitClocksGPIO(void) -{ - - GPIO_InitTypeDef GPIO_Struct; - - SCU_AHBPeriphClockConfig(__ENET, ENABLE); - SCU_AHBPeriphReset(__ENET,DISABLE); - SCU_PHYCLKConfig(ENABLE); - - GPIO_DeInit(GPIO1); - GPIO_Struct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_3 |GPIO_Pin_4 |GPIO_Pin_7 ; - GPIO_Struct.GPIO_Type = GPIO_Type_PushPull; - GPIO_Struct.GPIO_Direction = GPIO_PinOutput; - GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable; - GPIO_Struct.GPIO_Alternate=GPIO_OutputAlt2; - GPIO_Init(GPIO1, &GPIO_Struct); - - - GPIO_DeInit(GPIO5); - GPIO_Struct.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; - GPIO_Struct.GPIO_Type = GPIO_Type_PushPull; - GPIO_Struct.GPIO_Direction = GPIO_PinOutput; - GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable; - GPIO_Struct.GPIO_Alternate=GPIO_OutputAlt2; - GPIO_Init(GPIO5, &GPIO_Struct); - -} - -/******************** (C) COPYRIGHT 2006 STMicroelectronics *******************/ - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c deleted file mode 100644 index fb558ada6..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c +++ /dev/null @@ -1,519 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_fmi.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the FMI software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Standard include ----------------------------------------------------------*/ -#include "91x_fmi.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -#define TIMEOUT 0xFFFFFF /* Timeout value */ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - - -/******************************************************************************* -* Function Name : FMI_BankRemapConfig -* Description : Configure the addresses and sizes of bank 0 and bank 1. -* Input1 : FMI_BootBankSize: specifies the boot bank size. -* This parameter can be one of the following values: -* - 0x0: 32KBytes. -* - 0x1: 64KBytes. -* - 0x2: 128KBytes. -* - 0x3: 256KBytes. -* - 0x4: 512KBytes. -* .... -* - 0xB: 64MBytes. -* Input2 : FMI_NonBootBankSize: specifies the non boot bank size. -* This parameter can be one of the following values: -* - 0x0: 8KBytes. -* - 0x1: 16KBytes. -* - 0x2: 32KBytes. -* - 0x3: 64KBytes. -* .... -* - 0xD: 64MBytes. -* Input3 : FMI_BootBankAddress: specifies the address of the boot bank. -* Input4 : FMI_NonBootBankAddress: specifies the address of the non -* boot bank. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_BankRemapConfig(u8 FMI_BootBankSize, u8 FMI_NonBootBankSize, \ - u32 FMI_BootBankAddress, u32 FMI_NonBootBankAddress) -{ - FMI->BBSR = FMI_BootBankSize; - FMI->NBBSR = FMI_NonBootBankSize; - FMI->BBADR = (FMI_BootBankAddress >> 2); - FMI->NBBADR = (FMI_NonBootBankAddress >> 2); - FMI->CR |= 0x18; /* Enable bank 1 */ -} - -/******************************************************************************* -* Function Name : FMI_Config -* Description : Configure the FMI. -* Input1 : FMI_ReadWaitState: specifies the needed read wait states. -* This parameter can be one of the following values: -* - FMI_READ_WAIT_STATE_1: One read wait state. -* - FMI_READ_WAIT_STATE_2: Two read wait states. -* - FMI_READ_WAIT_STATE_3: Three read wait states. -* Input2 : FMI_WriteWaitState: specifies the needed write wait states. -* This parameter can be one of the following values: -* - FMI_WRITE_WAIT_STATE_1: One write wait state. -* - FMI_WRITE_WAIT_STATE_2: Two write wait states. -* Input3 : FMI_PWD: specifies the power down mode status. -* This parameter can be one of the following values: -* - FMI_PWD_ENABLE: Enable the PWD. -* - FMI_PWD_DISABLE: Disable the PWD. -* Input4 : FMI_LVDEN: specifies the low voltage detector status. -* This parameter can be one of the following values: -* - FMI_LVD_ENABLE: Enable the LVD. -* - FMI_LVD_DISABLE: Disable the LVD. -* Input5 : FMI_FreqRange: specifies the working frequency range. -* This parameter can be one of the following values: -* - FMI_FREQ_LOW: Low working frequency (up to 66MHz). -* - FMI_FREQ_HIGH: High working frequency (above 66MHz) . -* Output : None -* Return : None -*******************************************************************************/ -void FMI_Config(u16 FMI_ReadWaitState, u32 FMI_WriteWaitState, u16 FMI_PWD,\ - u16 FMI_LVDEN, u16 FMI_FreqRange) -{ - /* Configure the write wait state value */ - if (FMI_WriteWaitState == FMI_WRITE_WAIT_STATE_1) - { - FMI->CR |= FMI_WRITE_WAIT_STATE_1; - } - else - { - FMI->CR &= FMI_WRITE_WAIT_STATE_0; - } - - /* Write a write flash configuration register command */ - *(vu16 *)FMI_BANK_1 = 0x60; - - /* Configure the flash configuration register */ - *(vu16 *)(FMI_BANK_1|FMI_ReadWaitState|FMI_PWD|FMI_LVDEN|FMI_FreqRange) = 0x03; -} - -/******************************************************************************* -* Function Name : FMI_EraseSector -* Description : Erase the needed sector. -* Input : FMI_Sector: specifies the sector to be erased. -* This parameter can be one of the following values: -* - FMI_B0S0: FMI bank 0 sector 0. -* - FMI_B0S1: FMI bank 0 sector 1. -* - FMI_B0S2: FMI bank 0 sector 2. -* - FMI_B0S3: FMI bank 0 sector 3. -* - FMI_B0S4: FMI bank 0 sector 4. -* - FMI_B0S5: FMI bank 0 sector 5. -* - FMI_B0S6: FMI bank 0 sector 6. -* - FMI_B0S7: FMI bank 0 sector 7. -* - FMI_B1S0: FMI bank 1 sector 0. -* - FMI_B1S1: FMI bank 1 sector 1. -* - FMI_B1S2: FMI bank 1 sector 2. -* - FMI_B1S3: FMI bank 1 sector 3. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_EraseSector(vu32 FMI_Sector) -{ - /* Write an erase set-up command to the sector */ - *(vu16 *)FMI_Sector = 0x20; - - /* Write an erase confirm command to the sector */ - *(vu16 *)FMI_Sector = 0xD0; -} - -/******************************************************************************* -* Function Name : FMI_EraseBank -* Description : Erase the needed bank. -* Input : FMI_Bank: specifies the bank to be erased. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_EraseBank(vu32 FMI_Bank) -{ - /* Write a bank erase set-up command to the bank */ - *(vu16 *)FMI_Bank = 0x80; - - /* Write an erase confirm command to the sector */ - *(vu16 *)FMI_Bank = 0xD0; -} - -/******************************************************************************* -* Function Name : FMI_WriteHalfWord -* Description : Write a halfword to the needed Flash memory address. -* Input 1 : FMI_Address: specifies the address offset where the data will -* be written. -* Input 2 : FMI_Data: the needed data. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_WriteHalfWord(u32 FMI_Address, u16 FMI_Data) -{ - /* Write a program command to the sector to be written */ - *(vu16 *)(FMI_Address & 0xFFFFFFFC) = 0x40; - - /* Write the halfword to the destination address */ - *(vu16 *)FMI_Address = FMI_Data; -} - -/******************************************************************************* -* Function Name : FMI_WriteOTPHalfWord -* Description : Write a halfword to the needed OTP sector address. -* Input 1 : FMI_OTPHWAddress: specifies the halfword address offset -* where the data will be written. -* This parameter can be one of the following values: -* - FMI_OTP_LOW_HALFWORD_0: OTP Low halfword 0. -* - FMI_OTP_HIGH_HALFWORD_0: OTP High halfword 0. -* - FMI_OTP_LOW_HALFWORD_1: OTP Low halfword 1. -* - FMI_OTP_HIGH_HALFWORD_1: OTP High halfword 1. -* - FMI_OTP_LOW_HALFWORD_2: OTP Low halfword 2. -* - FMI_OTP_HIGH_HALFWORD_2: OTP High halfword 2. -* - FMI_OTP_LOW_HALFWORD_3: OTP Low halfword 3. -* - FMI_OTP_HIGH_HALFWORD_3: OTP High halfword 3. -* - FMI_OTP_LOW_HALFWORD_4: OTP Low halfword 4. -* - FMI_OTP_HIGH_HALFWORD_4: OTP High halfword 4. -* - FMI_OTP_LOW_HALFWORD_5: OTP Low halfword 5. -* - FMI_OTP_HIGH_HALFWORD_5: OTP High halfword 5. -* - FMI_OTP_LOW_HALFWORD_6: OTP Low halfword 6. -* - FMI_OTP_HIGH_HALFWORD_6: OTP High halfword 6. -* - FMI_OTP_LOW_HALFWORD_7: OTP Low halfword 7. -* - FMI_OTP_HIGH_HALFWORD_7: OTP High halfword 7. -* Input 2 : FMI_OTPData: The needed OTP data. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_WriteOTPHalfWord(u8 FMI_OTPHWAddress, u16 FMI_OTPData) -{ - /* Write a write OTP command to the needed address */ - *(vu16 *)(FMI_BANK_1) = 0xC0; - - /* Write the halfword to the destination address */ - *(vu16 *)(FMI_BANK_1 + FMI_OTPHWAddress) = FMI_OTPData; -} - -/******************************************************************************* -* Function Name : FMI_ReadWord -* Description : Read the correspondent data. -* Input : FMI_Address: specifies the needed address. -* Output : None -* Return : The data contained in the specified address. -*******************************************************************************/ -u32 FMI_ReadWord(u32 FMI_Address) -{ - return(*(u32*)FMI_Address); -} - -/******************************************************************************* -* Function Name : FMI_ReadOTPData -* Description : Read data from the OTP sector. -* Input : FMI_OTPAddress: specifies the address of the data to be read. -* This parameter can be one of the following values: -* - FMI_OTP_WORD_0: FMI bank 0 sector 0. -* - FMI_OTP_WORD_1: FMI bank 0 sector 1. -* - FMI_OTP_WORD_2: FMI bank 0 sector 2. -* - FMI_OTP_WORD_3: FMI bank 0 sector 3. -* - FMI_OTP_WORD_4: FMI bank 0 sector 4. -* - FMI_OTP_WORD_5: FMI bank 0 sector 5. -* - FMI_OTP_WORD_6: FMI bank 0 sector 6. -* - FMI_OTP_WORD_7: FMI bank 0 sector 7. -* Output : None -* Return : The needed OTP words. -*******************************************************************************/ -u32 FMI_ReadOTPData(u8 FMI_OTPAddress) -{ - u32 OTP_Data = 0x0; - /* write a read OTP sector command */ - *(vu16 *)(FMI_BANK_1) = 0x98; - - /* Read the correspondent data */ - OTP_Data = (*(vu32*)(FMI_BANK_1 + FMI_OTPAddress)); - - /* Write a read array command */ - *(vu16 *)(FMI_BANK_1) = 0xFF; - - return OTP_Data; -} - -/******************************************************************************* -* Function Name : FMI_GetFlagStatus -* Description : Check whether the specified FMI flag is set or not. -* Input1 : FMI_Flag: flag to check. -* This parameter can be one of the following values: -* - FMI_FLAG_SPS: Sector Protection Status Flag. -* - FMI_FLAG_PSS: Program Suspend Status Flag. -* - FMI_FLAG_PS: Program Status Flag. -* - FMI_FLAG_ES: Erase Status Flag. -* - FMI_FLAG_ESS: Erase Suspend Status Flag. -* - FMI_FLAG_PECS: FPEC Status Flag. -* Input2 : FMI_Bank: specifies the needed bank. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -FlagStatus FMI_GetFlagStatus(u8 FMI_Flag, vu32 FMI_Bank) -{ - u16 FMI_Status_Register = 0; - - /* Write a read status register command */ - *(vu16 *)FMI_Bank = 0x70; - - /* Wait until operation completion */ - while(!((*(vu16 *)FMI_Bank) & 0x80)); - - /* Read the status register */ - FMI_Status_Register = *(vu16 *)FMI_Bank; - - /* Write a read array command */ - *(vu16 *)FMI_Bank = 0xFF; - - if((FMI_Status_Register & FMI_Flag) != RESET) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : FMI_GetReadWaitStateValue -* Description : Get the current Read wait state value. -* Input : None -* Output : None -* Return : The current read wait states value. -*******************************************************************************/ -u16 FMI_GetReadWaitStateValue(void) -{ - u16 FMI_Configuration_Register = 0; - /* Write a read flash configuration register command */ - *(vu16 *)FMI_BANK_1 = 0x90; - - /* Read the flash configuration register */ - FMI_Configuration_Register = *(vu16 *)(FMI_BANK_1 + 0x14); - - /* Write a read array command */ - *(vu16 *)FMI_BANK_1 = 0xFF; - - FMI_Configuration_Register = ((FMI_Configuration_Register>>11) + 1) & 0x3; - - /* Return the wait states value */ - return FMI_Configuration_Register; -} - -/******************************************************************************* -* Function Name : FMI_GetWriteWaitStateValue -* Description : Get the current write wait state value. -* Input : None -* Output : None -* Return : The current write wait states value. -*******************************************************************************/ -u16 FMI_GetWriteWaitStateValue(void) -{ - return ((u16)((FMI->CR & 0x100) >> 8)); -} - -/******************************************************************************* -* Function Name : FMI_SuspendEnable -* Description : Suspend command enable. -* Input : FMI_Bank: specifies the bank to be suspended. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_SuspendEnable(vu32 FMI_Bank) -{ - /* Write a suspend command to the bank */ - *(vu16 *)FMI_Bank = 0xB0; -} - -/******************************************************************************* -* Function Name : FMI_ResumeEnable -* Description : Resume the suspended command. -* Input : FMI_Bank: specifies the suspended bank. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_ResumeEnable(vu32 FMI_Bank) -{ - /* Write a resume command to the bank */ - *(vu16 *)FMI_Bank = 0xD0; -} - -/******************************************************************************* -* Function Name : FMI_ClearFlag -* Description : Clear the FMI Flags on the correspondent bank. -* Input : FMI_Bank: specifies the needed bank. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_ClearFlag(vu32 FMI_Bank) -{ - /* Write a clear status register command */ - *(vu16 *)FMI_Bank = 0x50; -} - -/******************************************************************************* -* Function Name : FMI_WriteProtectionCmd -* Description : Enable or disable the write protection for the needed sector. -* Input1 : FMI_Sector: specifies the sector to be protected or -* unprotected. -* This parameter can be one of the following values: -* - FMI_B0S0: FMI bank 0 sector 0. -* - FMI_B0S1: FMI bank 0 sector 1. -* - FMI_B0S2: FMI bank 0 sector 2. -* - FMI_B0S3: FMI bank 0 sector 3. -* - FMI_B0S4: FMI bank 0 sector 4. -* - FMI_B0S5: FMI bank 0 sector 5. -* - FMI_B0S6: FMI bank 0 sector 6. -* - FMI_B0S7: FMI bank 0 sector 7. -* - FMI_B1S0: FMI bank 1 sector 0. -* - FMI_B1S1: FMI bank 1 sector 1. -* - FMI_B1S2: FMI bank 1 sector 2. -* - FMI_B1S3: FMI bank 1 sector 3. -* Input2 : FMI_NewState: specifies the protection status. -* This parameter can be one of the following values: -* - ENABLE: Enable the protection. -* - DISABLE: Disable the protection. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_WriteProtectionCmd(vu32 FMI_Sector, FunctionalState FMI_NewState) -{ - if (FMI_NewState == ENABLE) - { - *(vu16*)FMI_Sector = 0x60; - *(vu16*)FMI_Sector = 0x01; - *(vu16*)FMI_Sector = 0xFF; - } - else /* DISABLE */ - { - *(vu16*)FMI_Sector = 0x60; - *(vu16*)FMI_Sector = 0xD0; - *(vu16*)FMI_Sector = 0xFF; - } -} - -/******************************************************************************* -* Function Name : FMI_GetWriteProtectionStatus -* Description : Get the write protection status for the needed sector. -* Input : FMI_Sector_Mask: specifies the needed sector mask. -* This parameter can be one of the following values: -* - FMI_B0S0_MASK: FMI bank 0 sector 0. -* - FMI_B0S1_MASK: FMI bank 0 sector 1. -* - FMI_B0S2_MASK: FMI bank 0 sector 2. -* - FMI_B0S3_MASK: FMI bank 0 sector 3. -* - FMI_B0S4_MASK: FMI bank 0 sector 4. -* - FMI_B0S5_MASK: FMI bank 0 sector 5. -* - FMI_B0S6_MASK: FMI bank 0 sector 6. -* - FMI_B0S7_MASK: FMI bank 0 sector 7. -* - FMI_B1S0_MASK: FMI bank 1 sector 0. -* - FMI_B1S1_MASK: FMI bank 1 sector 1. -* - FMI_B1S2_MASK: FMI bank 1 sector 2. -* - FMI_B1S3_MASK: FMI bank 1 sector 3. -* Output : None -* Return : The Protection Status of the needed sector. -* - RESET: The needed sector is not write protected. -* - SET : The needed sector is write protected. -*******************************************************************************/ -FlagStatus FMI_GetWriteProtectionStatus(u32 FMI_Sector_Mask) -{ - u16 Protection_Level_1_Register = 0; - /* Write a read flash protection level 1 register command */ - *(vu16 *)FMI_BANK_1 = 0x90; - - /* Read the flash protection level 1 register */ - Protection_Level_1_Register = *(vu16 *)(FMI_BANK_1 + 0x10); - - /* Write a read array command */ - *(vu16 *)FMI_BANK_1 = 0xFF; - - if (Protection_Level_1_Register &= FMI_Sector_Mask) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : FMI_WaitForLastOperation -* Description : Wait until the last operation (Write halfword, Write OTP -* halfword, Erase sector and Erase bank) completion. -* Input : FMI_Bank: specifies the bank where the operation is on going. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : The timeout status. -* This parameter can be one of the following values: -* - FMI_TIME_OUT_ERROR: Timeout error occurred. -* - FMI_NO_TIME_OUT_ERROR: No timeout error. -*******************************************************************************/ -u8 FMI_WaitForLastOperation(vu32 FMI_Bank) -{ - u32 Time_Out = 0; - - /* Write a read status register command */ - *(vu16 *)(FMI_Bank) = 0x70; - - /* Wait until operation compeletion */ - while((!((*(vu16 *)FMI_Bank) & 0x80))&&(Time_Out < TIMEOUT )) - { - Time_Out ++; /* Time Out */ - } - - /* Write a read array command */ - *(vu16 *)FMI_Bank = 0xFF; - - if (Time_Out == TIMEOUT) - { - return FMI_TIME_OUT_ERROR; - } - else - { - return FMI_NO_TIME_OUT_ERROR; - } -} - - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c deleted file mode 100644 index f2d094199..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c +++ /dev/null @@ -1,407 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_gpio.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the GPIO software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_gpio.h" -#include "91x_scu.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ - static u8 GPIO_GetGPIONumber(GPIO_TypeDef* GPIOx); - -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : GPIO_DeInit -* Description : Deinitializes the GPIOx peripheral registers to their default -* reset values. -* Input : GPIOx: where x can be (0..9) to select the GPIO peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_DeInit(GPIO_TypeDef* GPIOx) -{ - - /* Reset the GPIO registers values */ - if(GPIOx == GPIO0) - { - SCU_APBPeriphReset(__GPIO0,ENABLE); - SCU_APBPeriphReset(__GPIO0,DISABLE); - SCU->GPIOTYPE[0x00] = 0x0000 ; - SCU->GPIOOUT[0x00] = 0x0000; - SCU->GPIOIN[0x00] = 0x0000; - } - - if(GPIOx == GPIO1) - { - SCU_APBPeriphReset(__GPIO1,ENABLE); - SCU_APBPeriphReset(__GPIO1,DISABLE); - SCU->GPIOTYPE[0x01] = 0x0000 ; - SCU->GPIOOUT[0x01] = 0x0000; - SCU->GPIOIN[0x01] = 0x0000; - } - - if(GPIOx == GPIO2) - { - SCU_APBPeriphReset(__GPIO2,ENABLE); - SCU_APBPeriphReset(__GPIO2,DISABLE); - SCU->GPIOTYPE[0x02] = 0x0000 ; - SCU->GPIOOUT[0x02] = 0x0000; - SCU->GPIOIN[0x02] = 0x0000; - } - - if(GPIOx == GPIO3) - { - SCU_APBPeriphReset(__GPIO3,ENABLE); - SCU_APBPeriphReset(__GPIO3,DISABLE); - SCU->GPIOTYPE[0x03] = 0x0000 ; - SCU->GPIOOUT[0x03] = 0x0000; - SCU->GPIOIN[0x03] = 0x0000; - } - - if(GPIOx == GPIO4) - { - SCU_APBPeriphReset(__GPIO4,ENABLE); - SCU_APBPeriphReset(__GPIO4,DISABLE); - SCU->GPIOTYPE[0x04] = 0x0000 ; - SCU->GPIOOUT[0x04] = 0x0000; - SCU->GPIOIN[0x04] = 0x0000; - SCU->GPIOANA = 0x00; - } - - if(GPIOx == GPIO5) - { - SCU_APBPeriphReset(__GPIO5,ENABLE); - SCU_APBPeriphReset(__GPIO5,DISABLE); - SCU->GPIOTYPE[0x05] = 0x0000 ; - SCU->GPIOOUT[0x05] = 0x0000; - SCU->GPIOIN[0x05] = 0x0000; - } - - if(GPIOx == GPIO6) - { - SCU_APBPeriphReset(__GPIO6,ENABLE); - SCU_APBPeriphReset(__GPIO6,DISABLE); - SCU->GPIOTYPE[0x06] = 0x0000 ; - SCU->GPIOOUT[0x06] = 0x0000; - SCU->GPIOIN[0x06] = 0x0000; - } - - if(GPIOx == GPIO7) - { - SCU_APBPeriphReset(__GPIO7,ENABLE); - SCU_APBPeriphReset(__GPIO7,DISABLE); - SCU->GPIOOUT[0x07] = 0xAAAA; - SCU->GPIOOUT[0x07] = 0x0000; - SCU->GPIOIN[0x07] = 0x0000; - } - - if(GPIOx == GPIO8) - { - SCU_APBPeriphReset(__GPIO8,ENABLE); - SCU_APBPeriphReset(__GPIO8,DISABLE); - SCU->GPIOEMI = 0x00; - } - - if(GPIOx == GPIO9) - { - SCU_APBPeriphReset(__GPIO9,ENABLE); - SCU_APBPeriphReset(__GPIO9,DISABLE); - SCU->GPIOEMI = 0x00; - } -} -/******************************************************************************* -* Function Name : GPIO_Init -* Description : Initializes the GPIOx peripheral according to the specified -* parameters in the GPIO_InitStruct . -* Input :- GPIOx: where x can be (0..9) to select the GPIO peripheral. -* - GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that -* contains the configuration information for the specified GPIO -* peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) -{ - /* Select pin direction */ - u8 PinNumber = 0; - u8 Counter = 0; - u8 GPIO_Number = 0; - - GPIO_Number = GPIO_GetGPIONumber(GPIOx); - - - if(GPIO_InitStruct->GPIO_Direction == GPIO_PinOutput) - { - GPIOx->DDR |= GPIO_InitStruct->GPIO_Pin; - } - else - { - GPIOx->DDR &= ~GPIO_InitStruct->GPIO_Pin; - } - - for (Counter = 0; Counter < 8;Counter++) - { - /*Search pin number*/ - PinNumber = (GPIO_InitStruct->GPIO_Pin & (1 <> Counter) == 1) - { - /*Output ALternate 0*/ - SCU->GPIOOUT[GPIO_Number] &= ~(0x3 <<(Counter *2)); - if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt1) - { - /*Output ALternate 1*/ - SCU->GPIOOUT[GPIO_Number] |= 1 << (Counter *2); - } - if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt2) - { - /*Output ALternate 2*/ - SCU->GPIOOUT[GPIO_Number] |= 0x2 << (Counter *2); - } - if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt3) - { - /*Output ALternate 3*/ - SCU->GPIOOUT[GPIO_Number] |= 0x3 << (Counter *2); - } - - /*Type configuration: PushPull or Open Collector*/ - SCU->GPIOTYPE[GPIO_Number] &= ~(0x1 << Counter) ; - if(GPIO_InitStruct->GPIO_Type == GPIO_Type_OpenCollector) - { - /*Open Drain configuration*/ - SCU->GPIOTYPE[GPIO_Number] |= 0x1 << Counter; - } - - /*IP Connected disable*/ - SCU->GPIOIN[GPIO_Number] &= ~(0x1 << Counter) ; - if(GPIO_InitStruct->GPIO_IPConnected == GPIO_IPConnected_Enable) - { - /*IP Connected enable*/ - SCU->GPIOIN[GPIO_Number] |= 0x1 << Counter; - } - } - } -} - -/******************************************************************************* -* Function Name : GPIO_StructInit -* Description : Initialize the GPIO Init Structure parameters -* Input : GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure -* which will be initialized. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct) -{ - /* Reset GPIO init structure parameters values */ - GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All; - GPIO_InitStruct->GPIO_Direction = GPIO_PinInput; - GPIO_InitStruct->GPIO_Type = GPIO_Type_PushPull; - GPIO_InitStruct->GPIO_IPConnected = GPIO_IPConnected_Disable; - GPIO_InitStruct->GPIO_Alternate = GPIO_InputAlt1; -} - -/******************************************************************************* -* Function Name : GPIO_ReadBit -* Description : Reads the specified port pin -* Input : - GPIOx: where x can be (0..9) to select the GPIO peripheral. -* : - GPIO_Pin: the Pin number. This parameter can be GPIO_Pin_x -* where x can be (0..7). -* Output : None -* Return : The port pin value -*******************************************************************************/ -u8 GPIO_ReadBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin) -{ - if ((((GPIOx->DR[GPIO_Pin<<2])) & GPIO_Pin) != Bit_RESET ) - { - return Bit_SET; - } - else - { - return Bit_RESET; - } -} - -/******************************************************************************* -* Function Name : GPIO_Read -* Description : Reads the specified GPIO data port -* Input : - GPIOx: where x can be (0..9) to select the GPIO peripheral. -* Output : None -* Return : GPIO data port word value. -*******************************************************************************/ -u8 GPIO_Read(GPIO_TypeDef* GPIOx) -{ - return (GPIOx->DR[0x3FC]); -} - -/******************************************************************************* -* Function Name : GPIO_WriteBit -* Description : Sets or clears the selected data port bit. -* Input : - GPIOx: where x can be (0..9) to select the GPIO peripheral. -* - GPIO_Pin: the Pin number. This parameter can be GPIO_Pin_x -* where x can be (0..7). -* - BitVal: this parameter specifies the value to be written -* to the selected bit. -* BitVal must be one of the BitAction enum values: -* - Bit_RESET: to clear the port pin -* - Bit_SET: to set the port pin -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin, BitAction BitVal) -{ - if(BitVal == Bit_SET) - { - GPIOx->DR[GPIO_Pin <<2] = GPIO_Pin; - } - else - { - GPIOx->DR[GPIO_Pin <<2] = 0x00; - } -} - -/******************************************************************************* -* Function Name : GPIO_Write -* Description : Writes the passed value in the selected data GPIOx port -* register. -* Input :- GPIOx: where x can be (0..9) to select the GPIO peripheral. -* - PortVal: the value to be written to the data port register. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal) -{ - GPIOx->DR[0x3FC] = PortVal; -} - -/******************************************************************************* -* Function Name : GPIO_EMIConfig -* Description : Enables or disables GPIO 8 and 9 in EMI mode. -* Input : - NewState: new state of the EMI. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_EMIConfig(FunctionalState NewState) -{ - if(NewState == ENABLE) - { - SCU->GPIOEMI = 0x01; - } - else - { - SCU->GPIOEMI = 0x00; - } -} - -/******************************************************************************* -* Function Name : GPIO_ANAPinConfig -* Description : Enables or disables pins from GPIO 4 in Analogue mode. -* Input :- GPIO_ANAChannel: selects the ADC channel pin. -* This parameter can be one of the following values: -* GPIO_ANAChannel0 -* GPIO_ANAChannel1 -* GPIO_ANAChannel2 -* GPIO_ANAChannel3 -* GPIO_ANAChannel4 -* GPIO_ANAChannel5 -* GPIO_ANAChannel6 -* GPIO_ANAChannel7 -* GPIO_ANAChannelALL -* - NewState: new state of the port pin. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_ANAPinConfig(u8 GPIO_ANAChannel, FunctionalState NewState) -{ - - if(NewState == ENABLE) - { - if(GPIO_ANAChannel == GPIO_ANAChannelALL) - { - SCU->GPIOOUT[4] = 0x0000; - SCU->GPIOIN[4] = 0x00; - } - else - { - SCU->GPIOOUT[4] &= ~(0x3<<(GPIO_ANAChannel-1)); - SCU->GPIOIN[4] &= ~GPIO_ANAChannel; - } - SCU->GPIOANA |= GPIO_ANAChannel; - - } - else - { - SCU->GPIOANA &= ~GPIO_ANAChannel; - } -} - -/******************************************************************************* -* Function Name : GPIO_GetGPIONumber -* Description : searche the GPIO number. -* Input : GPIOx: where x can be (0..9) to select the GPIO peripheral. -* Output : None -* Return : GPIO number -*******************************************************************************/ -u8 GPIO_GetGPIONumber(GPIO_TypeDef* GPIOx) -{ - - if(GPIOx == GPIO1) - { - return 1; - } - if(GPIOx == GPIO2) - { - return 2; - } - if(GPIOx == GPIO3) - { - return 3; - } - if(GPIOx == GPIO4) - { - return 4; - } - if(GPIOx == GPIO5) - { - return 5; - } - if(GPIOx == GPIO6) - { - return 6; - } - if(GPIOx == GPIO7) - { - return 7; - } - if(GPIOx == GPIO8) - { - return 8; - } - if(GPIOx == GPIO9) - { - return 9; - } - return 0; -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c deleted file mode 100644 index adf5696c9..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c +++ /dev/null @@ -1,387 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_it.c -* Author : MCD Application Team -* Date First Issued : 03/31/2006 : Beta Version V0.1 -* Description : Main Interrupt Service Routines. -******************************************************************************** -* This file can be used to describe all the exceptions subroutines -* that may occur within user application. -* When an interrupt happens, the software will branch automatically -* to the corresponding routine according to the interrupt vector -* loaded in the PC register. -* The following routines are all empty, user can write code for -* exceptions handlers and peripherals IRQ interrupts. -******************************************************************************** -* History: -* 03/31/2006 : Beta Version V0.1 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ -#include "FreeRTOSConfig.h" -#include "91x_it.h" - -/******************************************************************************* -* Function Name : Undefined_Handler -* Description : This function Undefined instruction exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void Undefined_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : SWI_Handler -* Description : This function handles SW exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SWI_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : Prefetch_Handler -* Description : This function handles preftetch abort exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void Prefetch_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : Abort_Handler -* Description : This function handles data abort exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void Abort_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : FIQ_Handler -* Description : This function handles FIQ exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void FIQ_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : SW_IRQHandler -* Description : This function handles the SW interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SW_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : ARMRX_IRQHandler -* Description : This function handles the ARMRX interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ARMRX_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : ARMTX_IRQHandler -* Description : This function handles the ARMTX interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ARMTX_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : TIM0_IRQHandler -* Description : This function handles the TIM0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void TIM0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : TIM1_IRQHandler -* Description : This function handles the TIM1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void TIM1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : TIM2_IRQHandler -* Description : This function handles the TIM2 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -//void TIM2_IRQHandler(void) -//{ -//} -/******************************************************************************* -* Function Name : TIM3_IRQHandler -* Description : This function handles the TIM3 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void TIM3_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : USBHP_IRQHandler -* Description : This function handles the USBHP interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USBHP_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : USBLP_IRQHandler -* Description : This function handles the USBLP interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USBLP_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : SCU_IRQHandler -* Description : This function handles the SCU interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SCU_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : DMA_IRQHandler -* Description : This function handles the DMA interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void DMA_IRQHandler(void) -{ -} - -/******************************************************************************* -* Function Name : CAN_IRQHandler -* Description : This function handles the CAN interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : MC_IRQHandler -* Description : This function handles the MC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void MC_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : ADC_IRQHandler -* Description : This function handles the ADC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ADC_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : UART0_IRQHandler -* Description : This function handles the UART0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void UART0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : UART2_IRQHandler -* Description : This function handles the UART2 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void UART2_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : I2C0_IRQHandler -* Description : This function handles the I2C0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void I2C0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : I2C1_IRQHandler -* Description : This function handles the I2C1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void I2C1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : SSP0_IRQHandler -* Description : This function handles the SSP0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SSP0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : SSP1_IRQHandler -* Description : This function handles the SSP1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SSP1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : LVD_IRQHandler -* Description : This function handles the LVD interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LVD_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : RTC_IRQHandler -* Description : This function handles the RTC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void RTC_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : WIU_IRQHandler -* Description : This function handles the WIU interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WIU_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT0_IRQHandler -* Description : This function handles the EXTIT0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT1_IRQHandler -* Description : This function handles the EXTIT1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT2_IRQHandler -* Description : This function handles the EXTIT2 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT2_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT3_IRQHandler -* Description : This function handles the EXTIT3 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT3_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : USBWU_IRQHandler -* Description : This function handles the USBWU interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USBWU_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : PFQBC_IRQHandler -* Description : This function handles the PFQBC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void PFQBC_IRQHandler(void) -{ -} - -#if configUSE_WATCHDOG_TICK == 0 - /* The kernel is not using the watchdog interrupt so it can be defined here. */ - void WDG_IRQHandler( void ) - { - } -#else - /* The kernel is not using the timer 2 interrupt so it can be defined here. */ - void TIM2_IRQHandler( void ) - { - } -#endif /* configUSE_WATCHDOG_TICK */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c deleted file mode 100644 index c0eadbb94..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c +++ /dev/null @@ -1,281 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_lib.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all peripherals pointers - : initialization. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ -#define EXT - -/* Standard include ----------------------------------------------------------*/ -#include "91x_map.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -#ifdef DEBUG - -/******************************************************************************* -* Function Name : debug -* Description : this function initialize peripherals pointers -* Input : no one -* Output : no one -* Return : no one -*******************************************************************************/ -void debug(void) -{ - - -/************************* DMA *************************/ - -#ifdef _DMA - DMA = (DMA_TypeDef *)DMA_BASE; -#endif /* _DMA */ - -/************************* DMA *************************/ - - -#ifdef _DMA_Channel0 - DMA_Channel0= (DMA_Channel_TypeDef *)DMA_Channel0_BASE; -#endif /* _DMA_Channel0 */ - -#ifdef _DMA_Channel1 - DMA_Channel1= (DMA_Channel_TypeDef *)DMA_Channel1_BASE; -#endif /* _DMA_Channel1 */ - -#ifdef _DMA_Channel2 - DMA_Channel2 = (DMA_Channel_TypeDef *)DMA_Channel2_BASE; -#endif /* _DMA_Channel2 */ - -#ifdef _DMA_Channel3 - DMA_Channel3 = (DMA_Channel_TypeDef *)DMA_Channel3_BASE; -#endif /* _DMA_Channel3 */ - -#ifdef _DMA_Channel4 - DMA_Channel4 = (DMA_Channel_TypeDef *)DMA_Channel4_BASE; -#endif /* _DMA_Channel4 */ - -#ifdef _DMA_Channel5 - DMA_Channel5= (DMA_Channel_TypeDef *)DMA_Channel5_BASE; -#endif /* _DMA_Channel5*/ - - -#ifdef _DMA_Channel6 - DMA_Channel6 = (DMA_Channel_TypeDef *)DMA_Channel6_BASE; -#endif /* _DMA_Channel6 */ - -#ifdef _DMA_Channel7 - DMA_Channel7 = (DMA_Channel_TypeDef *)DMA_Channel7_BASE; -#endif /* _DMA_Channel7 */ - - - - /************************* EMI *************************/ - -#ifdef _EMI_Bank0 - EMI_Bank0= (EMI_Bank_TypeDef *)EMI_Bank0_BASE; -#endif /* _EMI_Bank0 */ - -#ifdef _EMI_Bank1 - EMI_Bank1= (EMI_Bank_TypeDef *)EMI_Bank1_BASE; -#endif /* _EMI_Bank1 */ - -#ifdef _EMI_Bank2 - EMI_Bank2 = (EMI_Bank_TypeDef *)EMI_Bank2_BASE; -#endif /* _EMI_Bank2 */ - -#ifdef _EMI_Bank3 - EMI_Bank3 = (EMI_Bank_TypeDef *)EMI_Bank3_BASE; - #endif /* _EMI_Bank3 */ - - - -/************************* AHBAPB *************************/ - -#ifdef _AHBAPB0 - AHBAPB0 = (AHBAPB_TypeDef *)AHBAPB0_BASE; -#endif /* _AHBAPB0 */ - -#ifdef _AHBAPB1 - AHBAPB1 = (AHBAPB_TypeDef *)AHBAPB1_BASE; -#endif /*_AHBAPB1 */ - - - -/************************* FMI *************************/ - -#ifdef _FMI - FMI = (FMI_TypeDef *)FMI_BASE; -#endif /* _FMI */ - -/************************* VIC *************************/ - -#ifdef _VIC0 - VIC0 = (VIC_TypeDef *)VIC0_BASE; -#endif /* _VIC0 */ - -#ifdef _VIC1 - VIC1 = (VIC_TypeDef *)VIC1_BASE; -#endif /* _VIC1 */ - -/************************* WIU *************************/ - -#ifdef _WIU - WIU = (WIU_TypeDef *)WIU_BASE; -#endif /* _WIU */ - -/************************* TIM *************************/ - -#ifdef _TIM0 - TIM0 = (TIM_TypeDef *)TIM0_BASE; -#endif /* _TIM0 */ - -#ifdef _TIM1 - TIM1 = (TIM_TypeDef *)TIM1_BASE; -#endif /* _TIM1 */ - -#ifdef _TIM2 - TIM2 = (TIM_TypeDef *)TIM2_BASE; -#endif /* _TIM2 */ - -#ifdef _TIM3 - TIM3 = (TIM_TypeDef *)TIM3_BASE; -#endif /* _TIM3 */ - -/************************* GPIO ************************/ - -#ifdef _GPIO0 - GPIO0 = (GPIO_TypeDef *)GPIO0_BASE; -#endif /* _GPIO0 */ - -#ifdef _GPIO1 - GPIO1 = (GPIO_TypeDef *)GPIO1_BASE; -#endif /* _GPIO1 */ - -#ifdef _GPIO2 - GPIO2 = (GPIO_TypeDef *)GPIO2_BASE; -#endif /* _GPIO2 */ - -#ifdef _GPIO3 - GPIO3 = (GPIO_TypeDef *)GPIO3_BASE; -#endif /* _GPIO3 */ - -#ifdef _GPIO4 - GPIO4 = (GPIO_TypeDef *)GPIO4_BASE; -#endif /* _GPIO4 */ - -#ifdef _GPIO5 - GPIO5 = (GPIO_TypeDef *)GPIO5_BASE; -#endif /* _GPIO5 */ - -#ifdef _GPIO6 - GPIO6 = (GPIO_TypeDef *)GPIO6_BASE; -#endif /* _GPIO6 */ - -#ifdef _GPIO7 - GPIO7 = (GPIO_TypeDef *)GPIO7_BASE; -#endif /* _GPIO7 */ - -#ifdef _GPIO8 - GPIO8 = (GPIO_TypeDef *)GPIO8_BASE; -#endif /* _GPIO8 */ - -#ifdef _GPIO9 - GPIO9 = (GPIO_TypeDef *)GPIO9_BASE; -#endif /* _GPIO9 */ - -/************************* RTC *************************/ - -#ifdef _RTC - RTC = (RTC_TypeDef *)RTC_BASE; -#endif /* _RTC */ - -/************************* PRCCU ***********************/ - -#ifdef _SCU - SCU = (SCU_TypeDef *)SCU_BASE; -#endif /* _PRCCU */ - -/************************** MC *************************/ - -#ifdef _MC - MC = (MC_TypeDef *)MC_BASE; -#endif /* _MC */ - -/************************* UART ************************/ - -#ifdef _UART0 - UART0 = (UART_TypeDef *)UART0_BASE; -#endif /* _UART0 */ - -#ifdef _UART1 - UART1 = (UART_TypeDef *)UART1_BASE; -#endif /* _UART1 */ - -#ifdef _UART2 - UART2 = (UART_TypeDef *)UART2_BASE; -#endif /* _UART2 */ - -/************************* SSP *************************/ - -#ifdef _SSP0 - SSP0 = (SSP_TypeDef *)SSP0_BASE; -#endif /* _SSP0 */ - -#ifdef _SSP1 - SSP1 = (SSP_TypeDef *)SSP1_BASE; -#endif /* _SSP1 */ - -/************************* CAN *************************/ - -#ifdef _CAN - CAN = (CAN_TypeDef *)CAN_BASE; -#endif /* _CAN */ - -/************************* ADC *************************/ - -#ifdef _ADC - ADC = (ADC_TypeDef *)ADC_BASE; -#endif /* _ADC */ - -/************************* WDG *************************/ - -#ifdef _WDG - WDG = (WDG_TypeDef *)WDG_BASE; -#endif /* _WDG */ - -/************************* I2C *************************/ - -#ifdef _I2C0 - I2C0 = (I2C_TypeDef *)I2C0_BASE; -#endif /* _I2C0 */ - -#ifdef _I2C1 - I2C1 = (I2C_TypeDef *)I2C1_BASE; -#endif /* _I2C1 */ -/********************** ENET **************************/ -#ifdef _ENET - ENET_MAC = (ENET_MAC_TypeDef *)ENET_MAC_BASE; - ENET_DMA = (ENET_DMA_TypeDef *)ENET_DMA_BASE; -#endif /* _ENET */ -} -#endif /* DEBUG */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c deleted file mode 100644 index 21116b2a3..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c +++ /dev/null @@ -1,661 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_scu.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides the SCU library software functions -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_scu.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define SCU_PLLEN 0x80000 -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : SCU_MCLKSourceConfig -* Description : Configures the MCLK source clock -* Input : MCLK_Source = SCU_MCLK_OSC, SCU_MCLK_PLL or SCU_MCLK_RTC -* Output : None -* Return : ErrorStatus: SUCCESS or ERROR -* Note : this function returns ERROR if trying to select the PLL as -* clock source while the PLL is disabled or not locked. -*******************************************************************************/ -ErrorStatus SCU_MCLKSourceConfig(u32 MCLK_Source) -{ - u32 CLKCNTR_Value; - - CLKCNTR_Value = SCU->CLKCNTR; /*get CLKCNTR register value*/ - CLKCNTR_Value &=~0x3; /*clear field MCLKSEL*/ - if (MCLK_Source == SCU_MCLK_PLL) /*PLL selected as clock source*/ - { - /*check if PLL enabled & locked*/ - if (!((SCU->PLLCONF&SCU_PLLEN)&&(SCU->SYSSTATUS&SCU_FLAG_LOCK))) - return ERROR; - } - else CLKCNTR_Value |=MCLK_Source; /*OSC or RTC selected as clock source*/ - SCU->CLKCNTR = CLKCNTR_Value; /*Update CLKCNTR register value*/ - return SUCCESS; -} - -/******************************************************************************* -* Function Name : SCU_PLLFactorsConfig -* Description : Sets the PLL factors -* Input : PLLN, PLLM and PLLP -* Output : None -* Return : ErrorStatus: ERROR or SUCCESS -* Notes : -The PLL factors must respect the PLL specification requirements -* -The function returns ERROR if trying to change PLL -* factors while PLL is selected as Main Clock source (MCLK) -* -This function disables the PLL, to enable the PLL use -* function" SCU_PLLCmd(ENABLE)" after setting the PLL factors -******************************************************************************/ -ErrorStatus SCU_PLLFactorsConfig(u8 PLLN, u8 PLLM, u8 PLLP) -{ - if (SCU_PLLCmd(DISABLE)==SUCCESS) /*Disable PLL*/ - { - SCU->PLLCONF =0; /*clear PLLCONF register*/ - SCU->PLLCONF |=(PLLN<<8); /*update PLLN field*/ - SCU->PLLCONF |=PLLM; /*update PLLM field*/ - SCU->PLLCONF |=PLLP<<16; /*update PLLP field*/ - return SUCCESS; - } - return ERROR; -} - -/******************************************************************************* -* Function Name : SCU_PLLCmd -* Description : Enable or Disable the PLL -* Input : NewState = ENABLE or DISABLE -* Output : None -* Return : ErrorStatus: SUCCESS or ERROR -* Note : -The function returns ERROR if: -* *trying to disable the PLL while it is selected as the MCLK -* *trying to enable the PLL while it is already enabled and -* locked -*******************************************************************************/ -ErrorStatus SCU_PLLCmd(FunctionalState NewState) -{ - vu32 i; - if (NewState==ENABLE) - { - if (!((SCU->PLLCONF&SCU_PLLEN)&&(SCU->SYSSTATUS&SCU_FLAG_LOCK))) - { - SCU->SYSSTATUS|=SCU_FLAG_LOCK; /*clear LOCK bit*/ - SCU->PLLCONF |=SCU_PLLEN; /*PLL Enable*/ - while(!SCU->SYSSTATUS&SCU_FLAG_LOCK); /*Wait PLL to lock*/ - return SUCCESS; - } - else return ERROR; - } - else /*NewState = DISABLE*/ - { - if(SCU->CLKCNTR&0x3) /*check if PLL not sys CLK*/ - { - for(i=10;i>0;i--); /*delay before PLL disabling*/ - SCU->PLLCONF &=~SCU_PLLEN; /*PLL Disable*/ - return SUCCESS; - } - else return ERROR; - } -} - -/******************************************************************************* -* Function Name : SCU_RCLKDivisorConfig -* Description : Sets the RCLK divisor value -* Input : RCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_RCLKDivisorConfig(u32 RCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_RCLK_Div1; /*clear RCLKDIV[2:0] field*/ - if (RCLK_Divisor!=SCU_RCLK_Div1) - SCU->CLKCNTR |= RCLK_Divisor; /*update field with RCLK divisor*/ -} - -/******************************************************************************* -* Function Name : SCU_HCLKDivisorConfig -* Description : Sets the HCLK divisor value -* Input : HCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_HCLKDivisorConfig(u32 HCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_HCLK_Div1; /*clear AHBDIV[1:0] field*/ - if (HCLK_Divisor!=SCU_HCLK_Div1) - SCU->CLKCNTR |= HCLK_Divisor; /*update field with HCLK divisor*/ -} - -/******************************************************************************* -* Function Name : SCU_PCLKDivisorConfig -* Description : Sets the PCLK divisor value -* Input : PCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_PCLKDivisorConfig(u32 PCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_PCLK_Div1; /*clear APBDIV[1:0] field*/ - if (PCLK_Divisor!=SCU_PCLK_Div1) - SCU->CLKCNTR |= PCLK_Divisor; /*update field with PCLK Divisor*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphClockConfig -* Description : Enable the clock for an APB peripheral -* Input : -APBPerip : APB peripherals(__RTC, __ADC ,...) -* -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphClockConfig(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) /*Enable clock for APB peripheral*/ - SCU->PCGR1 |=APBPeriph; - else - SCU->PCGR1 &=~APBPeriph; /*Disable clock for APB peripheral*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphClockConfig -* Description : Enable the clock for an AHB peripheral -* Input : -AHBPerip: AHB peripherals(__USB, __DMA,...) -* -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphClockConfig(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) /*Enable clock for AHB peripheral*/ - SCU->PCGRO |=AHBPeriph; - else - SCU->PCGRO &=~AHBPeriph; /*Disable clock for AHB peripheral*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphReset -* Description : Assert or deassert Reset on APB peripheral -* Input : -APBPeriph: APB peripherals(__RTC, __ADC,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphReset(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==DISABLE) /*APB peripheral not held in Reset*/ - SCU->PRR1 |=APBPeriph; - else - SCU->PRR1 &=~APBPeriph; /*APB peripheral held in Reset*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphReset -* Description : Assert or deassert Reset on AHB peripheral -* Input : -AHBPeriph: AHB peripherals(__USB, __DMA,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphReset(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==DISABLE) - SCU->PRR0 |=AHBPeriph; /*AHB peripheral not held in Reset*/ - else - SCU->PRR0 &=~AHBPeriph; /*AHB peripheral held in Reset*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphIdleConfig -* Description : Enable or Disable Periph Clock during Idle mode -* Input : -APBPeriph: APB peripherals(__RTC, __ADC,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphIdleConfig(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->MGR1 |=APBPeriph; /*APB peripheral clock enabled during Idle mode*/ - else - SCU->MGR1 &=~APBPeriph; /*APB peripheral clock disabled during Idle mode*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphIdleConfig -* Description : Enable or Disable Periph Clock during Idle mode -* Input : -AHBPeriph: AHB peripherals(__USB, __DMA,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphIdleConfig(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->MGR0 |=AHBPeriph; /*AHB peripheral clock enabled during Idle mode*/ - else - SCU->MGR0 &=~AHBPeriph; /*AHB peripheral clock disabled during Idle mode*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphDebugConfig -* Description : Enable or Disable Periph Clock during ARM debug state -* Input : -APBPeriph: APB peripherals(__RTC, __ADC,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphDebugConfig(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->PECGR1 |=APBPeriph; /*APB peripheral clock enabled during ARM debug state*/ - else - SCU->PECGR1 &=~APBPeriph; /*APB peripheral clock disabled during ARM debug state*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphDebugConfig -* Description : Enable or Disable Periph Clock during ARM debug state -* Input : -AHBPeriph: AHB peripherals(__USB, __DMA,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphDebugConfig(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->PECGR0 |=AHBPeriph; /*AHB peripheral clock enabled during ARM debug state*/ - else - SCU->PECGR0 &=~AHBPeriph; /*AHB peripheral clock disabled during ARM debug state*/ -} -/******************************************************************************* -* Function Name : SCU_BRCLKDivisorConfig -* Description : Sets the BRCLK divisor value -* Input : BRCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_BRCLKDivisorConfig(u32 BRCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_BRCLK_Div1; /*Clear BRSEL bit*/ - if (BRCLK_Divisor!=SCU_BRCLK_Div1) - SCU->CLKCNTR |= SCU_BRCLK_Div2; /*set bit BRSEL*/ -} - -/******************************************************************************* -* Function Name : SCU_TIMCLKSourceConfig -* Description : Sets the TIMx clock source -* Input : - TIMx : SCU_TIM01 or SCU_TIM23 -* - TIMCLK_Source = SCU_TIMCLK_EXT or SCU_TIMCLK_INT -* Output : None -* Return : None -*******************************************************************************/ -void SCU_TIMCLKSourceConfig(u8 TIMx, u32 TIMCLK_Source) -{ - if (TIMx== SCU_TIM01) /*TIM01 clock source configuration*/ - { - SCU->CLKCNTR &=0xFFFFDFFF; - if (TIMCLK_Source == SCU_TIMCLK_EXT) - SCU->CLKCNTR |=0x2000; - } - else - { - SCU->CLKCNTR &=0xFFFFBFFF; /*TIM23 clock source configuration*/ - if (TIMCLK_Source == SCU_TIMCLK_EXT) - SCU->CLKCNTR |=0x4000; - } -} - -/******************************************************************************* -* Function Name : SCU_TIMPresConfig -* Description : Sets the TIMx Prescaler Value -* Input : - TIMx : SCU_TIM01 or SCU_TIM23 -* - Prescaler (16 bit value) -* Output : None -* Return : None -*******************************************************************************/ -void SCU_TIMPresConfig(u8 TIMx, u16 Prescaler) -{ - if (TIMx==SCU_TIM01) /*TIM01 Prescaler configuration*/ - SCU->SCR1 = Prescaler&0xFFFF; - else - SCU->SCR2 = Prescaler&0xFFFF; /*TIM23 Prescaler configuration*/ -} - -/******************************************************************************* -* Function Name : SCU_USBCLKConfig -* Description : Configures the clock source for the 48MHz USBCLK -* Input : USBCLK_Source: SCU_USBCLK_MCLK,SCU_USBCLK_MCLK2 or SCU_USBCLK_EXT -* Output : None -* Return : None -*******************************************************************************/ -void SCU_USBCLKConfig(u32 USBCLK_Source) -{ - SCU->CLKCNTR &=SCU_USBCLK_MCLK; /*clear USBSEL[1:0] field*/ - if (USBCLK_Source!=SCU_USBCLK_MCLK) - SCU->CLKCNTR |= USBCLK_Source; /*update field with USBCLK_Source*/ -} - -/******************************************************************************* -* Function Name : SCU_PHYCLKConfig -* Description : Enable or Disable PHY clock output -* Input : NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_PHYCLKConfig(FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->CLKCNTR |= 0x1000; /*enable MIIPHY clock*/ - else - SCU->CLKCNTR &=~0x1000; /*disable MIIPHY clock*/ -} - -/******************************************************************************* -* Function Name : SCU_FMICLKDivisorConfig -* Description : Set the FMI clock divisor -* Input : FMICLK_Divisor: SCU_FMICLK_Div1 or SCU_FMICLK_DIV2 -* Output : None -* Return : None -*******************************************************************************/ -void SCU_FMICLKDivisorConfig(u32 FMICLK_Divisor) -{ - SCU->CLKCNTR &=SCU_FMICLK_Div1; /*FMICLK = RCLK*/ - if (FMICLK_Divisor!=SCU_FMICLK_Div1) - SCU->CLKCNTR |=SCU_FMICLK_Div2; /*FMICLK = RCLK/2 */ -} - -/******************************************************************************* -* Function Name : SCU_EMIBCLKDivisorConfig -* Description : Set the EMI Bus clock divisor: EMIBCLK = HCLK or HCLK/2 -* Input : SCU_EMICLK: SCU_EMIBCLK_Div1 , SCU_EMIBCLK_Div2 -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EMIBCLKDivisorConfig(u32 SCU_EMIBCLK) -{ - SCU->CLKCNTR &=SCU_EMIBCLK_Div1; /*EMIBCLK = HCLK */ - if (SCU_EMIBCLK!=SCU_EMIBCLK_Div1) - SCU->CLKCNTR |= SCU_EMIBCLK_Div2; /*EMIBCLK = HCLK/2 */ -} - -/******************************************************************************* -* Function Name : SCU_EMIModeConfig -* Description : Configure the EMI as Multiplexed or Demultiplexed -* Input : SCU_EMIMODE : SCU_EMI_MUX or SCU_EMI_DEMUX -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EMIModeConfig(u32 SCU_EMIMODE) -{ - SCU->SCR0 &=SCU_EMI_MUX; /*EMI mode = Multiplexed*/ - if (SCU_EMIMODE!=SCU_EMI_MUX) - SCU->SCR0 |= SCU_EMI_DEMUX; /*EMI mode = Demultiplexed*/ -} - -/******************************************************************************* -* Function Name : SCU_EMIALEConfig -* Description : Configure the ALE signal (length & polarity) -* Input : -SCU_EMIALE_LEN : SCU_EMIALE_LEN1 or SCU_EMIALE_LEN2 -* -SCU_EMIALE_POL : SCU_EMIALE_POLLow or SCU_EMI_POLHigh -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EMIALEConfig(u32 SCU_EMIALE_LEN, u32 SCU_EMIALE_POL) -{ - /*Configure EMI ALE Length*/ - SCU->SCR0 &=SCU_EMIALE_LEN1; - if (SCU_EMIALE_LEN!=SCU_EMIALE_LEN1) - SCU->SCR0 |= SCU_EMIALE_LEN2; - - /*Configure EMI ALE POL*/ - SCU->SCR0 &=SCU_EMIALE_POLLow; - if (SCU_EMIALE_POL!=SCU_EMIALE_POLLow) - SCU->SCR0 |= SCU_EMIALE_POLHigh; -} - -/******************************************************************************* -* Function Name : SCU_ITConfig -* Description : ENBALE or DISABLE an SCU interrupt -* Input : -SCU_IT: interrupt mask -* -NewState: ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_ITConfig(u32 SCU_IT, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->ITCMSK&=~SCU_IT; /*IT enable */ - else - SCU->ITCMSK|=SCU_IT; /*IT disable( mask)*/ -} - -/******************************************************************************* -* Function Name : SCU_GetFlagStatus -* Description : Returns flag status -* Input : SCU_Flag -* Output : NONE -* Return : SET or RESET -*******************************************************************************/ -FlagStatus SCU_GetFlagStatus(u32 SCU_Flag) -{ - if (SCU->SYSSTATUS&SCU_Flag) - return SET; - else return RESET; -} - -/******************************************************************************* -* Function Name : SCU_ClearFlag -* Description : Clears a SYSTATUS Flag -* Input : SCU_Flag -* Output : None -* Return : None -*******************************************************************************/ -void SCU_ClearFlag(u32 SCU_Flag) -{ - SCU->SYSSTATUS = SCU_Flag; -} -/******************************************************************************* -* Function Name : SCU_GetPLLfreqValue -* Description : Gets the current PLL frequency -* Input : None -* Output : None -* Return : PLL frequency (KHz) -*******************************************************************************/ -u32 SCU_GetPLLFreqValue(void) -{ - u8 PLL_M; - u8 PLL_N; - u8 PLL_P; - - PLL_M = SCU->PLLCONF&0xFF; - PLL_N = (SCU->PLLCONF&0xFF00)>>8; - PLL_P = (SCU->PLLCONF&0x70000)>>16; - - if ((PLL_M>0)&&(PLL_N>0)) - return (u32)(((_Main_Crystal*2)*PLL_N)/(PLL_M<CLKCNTR&0x3) == 0x2) return (u32)(_Main_Crystal); - if ((SCU->CLKCNTR&0x3) == 0x1) return (u32)(32); - else return (SCU_GetPLLFreqValue()); -} - -/******************************************************************************* -* Function Name : SCU_GetRCLKFreqValue -* Description : Gets the current RCLK frequency -* Input : None -* Output : None -* Return : RCLK frequency (KHz) -*******************************************************************************/ -u32 SCU_GetRCLKFreqValue(void) -{ - u8 RCLK_Div; - RCLK_Div = (SCU->CLKCNTR&0x1C)>>2; - if (RCLK_Div==0x5) RCLK_Div=10; - return (u32)(SCU_GetMCLKFreqValue() >>RCLK_Div); -} - -/******************************************************************************* -* Function Name : SCU_GetHCLKFreqValue -* Description : Gets the current PCLK frequency -* Input : None -* Output : None -* Return : HCLK frequency (KHz) -*******************************************************************************/ -u32 SCU_GetHCLKFreqValue(void) -{ - u8 HCLK_Div; - HCLK_Div = (SCU->CLKCNTR&0x60)>>5; - return (u32)(SCU_GetRCLKFreqValue() >>HCLK_Div); -} - -/******************************************************************************* -* Function Name : SCU_GetPCLKFreqValue -* Description : Gets the current HCLK frequency -* Input : None -* Output : None -* Return : PCLK frequency (KHz) -*******************************************************************************/ -u32 SCU_GetPCLKFreqValue(void) -{ - u8 PCLK_Div; - PCLK_Div = (SCU->CLKCNTR&0x180)>>7; - return (u32)(SCU_GetRCLKFreqValue() >>PCLK_Div); -} - -/******************************************************************************* -* Function Name : SCU_WakeUpLineConfig -* Description : Configures an External interrupt as WakeUp line -* Input : EXTint : 0 -> 31 -* Output : None -* Return : None -*******************************************************************************/ -void SCU_WakeUpLineConfig(u8 EXTint) -{ - if (EXTint < 8) - { - SCU->WKUPSEL&=~0x7; - SCU->WKUPSEL|=EXTint; - } - else if (EXTint<16) - { - SCU->WKUPSEL&=~0x38; - SCU->WKUPSEL|=(EXTint-8)<<3; - } - else if (EXTint<24) - { - SCU->WKUPSEL&=~0x1C0; - SCU->WKUPSEL|=(EXTint-16)<<6; - } - else - { - SCU->WKUPSEL&=~0xE00; - SCU->WKUPSEL|=(EXTint-24)<<9; - } -} - -/******************************************************************************* -* Function Name : SCU_SpecIntRunModeConfig -* Description : Enables or Disables the Special Run mode -* Input : newstate = ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_SpecIntRunModeConfig(FunctionalState NewState) -{ - if (NewState == ENABLE) - SCU->PWRMNG |=0x8; - else - SCU->PWRMNG &=~0x8; -} -/******************************************************************************* -* Function Name : SCU_EnterIdleMode -* Description : Enters in Idle mode -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EnterIdleMode(void) -{ - SCU->PWRMNG |=0x1; -} -/******************************************************************************* -* Function Name : SCU_EnterSleepMode -* Description : Enters in Sleep mode -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EnterSleepMode(void) -{ - SCU->PWRMNG |=0x2; -} - -/******************************************************************************* -* Function Name : SCU_UARTIrDAConfig -* Description : Enable or Disable the Irda mode for UARTx -* Input : - UARTx :x=0,1 or 2 -* - UART_IrDA_Mode : SCU_UARTMode_IrDA or SCU_UARTMode_UART -* Output : None -* Return : None -*******************************************************************************/ -void SCU_UARTIrDASelect(UART_TypeDef * UARTx, u8 UART_IrDA_Mode) -{ - if (UART_IrDA_Mode == SCU_UARTMode_IrDA) - { - if (UARTx== UART0) SCU->SCR0 |=0x400; - else if (UARTx==UART1) SCU->SCR0 |=0x800; - else SCU->SCR0 |=0x1000; - } - else - { - if (UARTx== UART0) SCU->SCR0 &=~0x400; - else if (UARTx==UART1) SCU->SCR0 &=~0x800; - else SCU->SCR0 &=~0x1000; - } -} -/******************************************************************************* -* Function Name : SCU_PFQBCCmd -* Description : Enable or Disable PFQBC -* Input : NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_PFQBCCmd(FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->SCR0 |=0x1; - else SCU->SCR0 &=~0x1; -} - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c deleted file mode 100644 index a0e78f0fd..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c +++ /dev/null @@ -1,692 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_tim.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the TIM software functions. -******************************************************************************** -* History: -* 05/22/2007 : Version 1.2 -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_tim.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -/* TIM Bits Masks */ - -#define TIM_PWM_MASK 0x0010 -#define TIM_OPM_MASK 0x0020 -#define TIM_OC1_ENABLE_MASK 0x0040 -#define TIM_OC1_DISABLE_MASK 0xFFBF -#define TIM_OC2_ENABLE_MASK 0x0080 -#define TIM_OC2_DISABLE_MASK 0xFF7F - -#define TIM_OLVL1_SET_MASK 0x0100 -#define TIM_OLVL1_RESET_MASK 0xFEFF - -#define TIM_OLVL2_SET_MASK 0x0200 -#define TIM_OLVL2_RESET_MASK 0xFDFF - -#define TIM_ENABLE_MASK 0x8000 -#define TIM_DISABLE_MASK 0x7FFF - -#define TIM_DMA_CLEAR_MASK 0xCFFF - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/******************************************************************************* -* Function Name : TIM_DeInit -* Description : Initializes TIM peripheral control and registers to their -* : default reset values. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_DeInit(TIM_TypeDef *TIMx) -{ - if((TIMx == TIM0)||(TIMx == TIM1)) - { - SCU_APBPeriphReset(__TIM01, DISABLE); /* TIM0 & TIM1 Reset's off */ - } - else - { - SCU_APBPeriphReset(__TIM23, DISABLE); /* TIM2 & TIM3 Reset's off */ - } - - /* Set all the TIMx registers to thier default values */ - TIMx->OC1R = 0x8000; - TIMx->OC2R = 0x8000; - TIMx->CR1 = 0x0; - TIMx->CR2 = 0x1; - TIMx->CNTR = 0x1234; - TIMx->SR = 0x0; -} - -/******************************************************************************* -* Function Name : TIM_StructInit -* Description : Fills in a TIM_InitTypeDef structure with the reset value of -* each parameter. -* Input : TIM_InitStruct : pointer to a TIM_InitTypeDef structure - which will be initialized. -* Output : None -* Return : None. -*******************************************************************************/ -void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct) -{ - TIM_InitStruct->TIM_Mode = 0x0000; - TIM_InitStruct->TIM_OC1_Modes = 0x0000; - TIM_InitStruct->TIM_OC2_Modes = 0x0000; - TIM_InitStruct->TIM_Clock_Source = 0x0000; - TIM_InitStruct->TIM_Clock_Edge = 0x0000; - TIM_InitStruct->TIM_OPM_INPUT_Edge = 0x0000; - TIM_InitStruct->TIM_ICAP1_Edge = 0x0000; - TIM_InitStruct->TIM_ICAP2_Edge = 0x0000; - TIM_InitStruct->TIM_Prescaler = 0x0000; - TIM_InitStruct->TIM_Pulse_Level_1 = 0x0000; - TIM_InitStruct->TIM_Pulse_Level_2 = 0x0000; - TIM_InitStruct->TIM_Period_Level = 0x0000; - TIM_InitStruct->TIM_Pulse_Length_1 = 0x0000; - TIM_InitStruct->TIM_Pulse_Length_2 = 0x0000; - TIM_InitStruct->TIM_Full_Period = 0x0000; -} - -/******************************************************************************* -* Function Name : TIM_Init -* Description : Initializes TIM peripheral according to the specified -* parameters in the TIM_InitTypeDef structure. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_InitStruct: pointer to a TIM_InitTypeDef structure that -* contains the configuration information for the specified -* TIM peripheral. -* Output : None -* Return : None -*******************************************************************************/ - -void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct) -{ -/***************************** Clock configuration ****************************/ - - if (TIM_InitStruct->TIM_Clock_Source == TIM_CLK_APB) - { - /* APB clock */ - TIMx->CR1 &= TIM_CLK_APB; - } - else - { - /* External/SCU clock */ - TIMx->CR1 |= TIM_CLK_EXTERNAL; - if (TIM_InitStruct->TIM_Clock_Edge == TIM_CLK_EDGE_RISING) - { - /* Clock rising edge */ - TIMx->CR1 |= TIM_CLK_EDGE_RISING; - } - else - { - /* Clock falling edge */ - TIMx->CR1 &= TIM_CLK_EDGE_FALLING; - } - } - -/************************** Prescaler configuration ***************************/ - - TIMx->CR2 =( TIMx->CR2 & 0xFF00 )|TIM_InitStruct->TIM_Prescaler ; - -/********************************** TIM Modes *********************************/ - - switch ( TIM_InitStruct->TIM_Mode) - { -/******************************* PWM Input mode *******************************/ - - case TIM_PWMI: - - /* Set the PWMI Bit */ - TIMx->CR1 |= TIM_PWMI; - - /* Set the first edge Level */ - if ( TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP1_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING; - } - - /* Set the Second edge Level ( Opposite of the first level ) */ - if ( TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING; - } - else - { - TIMx->CR1 |= TIM_ICAP2_EDGE_RISING; - } - - break; - -/************************** Output compare channel 1 **************************/ - - case TIM_OCM_CHANNEL_1: - - if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL1_RESET_MASK; - } - - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1; - - if (TIM_InitStruct->TIM_OC1_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC1_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - } - - break; - -/************************** Output compare channel 2 **************************/ - - case TIM_OCM_CHANNEL_2: - - if (TIM_InitStruct->TIM_Pulse_Level_2 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL2_RESET_MASK; - } - - TIMx->OC2R = TIM_InitStruct->TIM_Pulse_Length_2; - - if (TIM_InitStruct->TIM_OC2_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC2_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC2_ENABLE_MASK; - } - - break; - -/************************ Output compare channel 1 & 2 ************************/ - - case TIM_OCM_CHANNEL_12: - - TIMx->OC2R = TIM_InitStruct->TIM_Pulse_Length_2; - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1; - - if (TIM_InitStruct->TIM_OC2_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC2_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC2_ENABLE_MASK; - } - - if (TIM_InitStruct->TIM_OC1_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC1_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - } - - if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL1_RESET_MASK; - } - - if (TIM_InitStruct->TIM_Pulse_Level_2 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL2_RESET_MASK; - } - - break; - -/********************************** PWM mode **********************************/ - - case TIM_PWM: - - /* Set the Level During the pulse */ - if ( TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL2_RESET_MASK; - } - - /* Set the Level after the pulse */ - if (TIM_InitStruct->TIM_Period_Level == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL1_RESET_MASK; - } - - /* Set the OCAE */ - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - - /* Set the PWM Bit */ - TIMx->CR1 |= TIM_PWM_MASK; - - /* Set the Duty Cycle value */ - - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1 ; - - /* Set the Full Period */ - - TIMx->OC2R = TIM_InitStruct->TIM_Full_Period ; - - break; - -/******************************* One pulse mode *******************************/ - - case TIM_OPM: - - /* Set the Level During the pulse */ - if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - - /* Set the Level after the pulse */ - if (TIM_InitStruct->TIM_Period_Level == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - - /* Set the Activation Edge on the ICAP 1 */ - if (TIM_InitStruct->TIM_OPM_INPUT_Edge == TIM_OPM_EDGE_RISING) - { - TIMx->CR1 |= TIM_OPM_EDGE_RISING; - } - - /* Set the Output Compare Function */ - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - - /* Set the One pulse mode */ - TIMx->CR1 |= TIM_OPM_MASK; - - /* Set the Pulse length */ - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1; - - break; - -/*************************** Input capture channel 1 **************************/ - - case TIM_ICAP_CHANNEL_1: - - if (TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP1_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING; - } - - break; - -/*************************** Input capture channel 2 **************************/ - - case TIM_ICAP_CHANNEL_2: - - if (TIM_InitStruct->TIM_ICAP2_Edge == TIM_ICAP2_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP2_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING; - } - - break; - -/************************* Input capture channel 1 & 2 ************************/ - - case TIM_ICAP_CHANNEL_12: - if (TIM_InitStruct->TIM_ICAP2_Edge == TIM_ICAP2_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP2_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING; - } - - if (TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP1_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING; - } - - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name : TIM_CounterCmd -* Description : Enables or disables TIMx Counter peripheral. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_operation: specifies the new state of the TIMx Counter. -* This parameter can be one of the following values: -* - TIM_START: Start the timer counter. -* - TIM_STOP : Stop the timer counter. -* - TIM_CLEAR: Clear the timer counter. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation) -{ - switch (TIM_operation) - { - case TIM_START: - TIMx->CR1 |= TIM_ENABLE_MASK; - break; - - case TIM_STOP: - TIMx->CR1 &= TIM_DISABLE_MASK; - break; - - case TIM_CLEAR: - TIMx->CNTR = 0x1234; - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name : TIM_PrescalerConfig -* Description : This routine is used to configure the TIMx prescaler value -* (when using the APB clock). -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Prescaler: specifies the prescaler value. This parameter -* can be a value from 0x0 to 0xFF. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler) -{ - TIMx->CR2 &= 0xFF00; - TIMx->CR2 |= TIM_Prescaler; - -} -/******************************************************************************* -* Function Name : TIM_GetPrescalerValue -* Description : This routine is used to get the TIMx prescaler value -* (when using the APB clock). -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The prescaler value. -*******************************************************************************/ -u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx) -{ - return TIMx->CR2 & 0x00FF; -} - -/******************************************************************************* -* Function Name : TIM_GetCounterValue -* Description : This routine is used to get the TIMx counter value. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The counter value. -*******************************************************************************/ -u16 TIM_GetCounterValue(TIM_TypeDef *TIMx) -{ - return TIMx->CNTR; -} - -/******************************************************************************* -* Function Name : TIM_GetICAP1Value -* Description : This routine is used to get the Input Capture 1 value. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The Input Capture 1 value. -*******************************************************************************/ -u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx) -{ - return TIMx->IC1R; -} - -/******************************************************************************* -* Function Name : TIM_GetICAP2Value -* Description : This routine is used to get the Input Capture 2 value. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The Input Capture 2 value. -*******************************************************************************/ -u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx) -{ - return TIMx->IC2R; -} - -/******************************************************************************* -* Function Name : TIM_SetPulse -* Description : This routine is used to set the pulse value. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Channel: specifies the needed channel. -* This parameter can be one of the following values: -* - TIM_PWM_OC1_Channel: PWM/Output Compare 1 Channel -* - TIM_OC2_Channel : Output Compare 2 Channel -* Input3 : TIM_Pulse: specifies the new pulse value. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse) -{ - if (TIM_Channel == TIM_PWM_OC1_Channel) - { - TIMx->OC1R = TIM_Pulse; - } - else - { - TIMx->OC2R = TIM_Pulse; - } -} -/******************************************************************************* -* Function Name : TIM_GetFlagStatus -* Description : Checks whether the specified TIMx flag is set or not. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Flag: specifies the flag to check. -* This parameter can be one of the following values: -* - TIM_FLAG_IC1: Input Capture Channel 1 Flag -* - TIM_FLAG_IC2: Input Capture Channel 2 Flag -* - TIM_FLAG_TO : Timer Overflow Flag -* - TIM_FLAG_OC1: Output Compare Channel 1 Flag -* - TIM_FLAG_OC2: Output Compare Channel 2 Flag -* Output : None -* Return : The NewState of the TIM_Flag (SET or RESET). -*******************************************************************************/ -FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag) -{ - if((TIMx->SR & TIM_Flag) == RESET) - { - return RESET; - } - else - { - return SET; - } -} - -/******************************************************************************* -* Function Name : TIM_ClearFlag -* Description : Clears the TIM Flag passed as a parameter. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Flag: specifies the flag to clear. -* This parameter can be one of the following values: -* - TIM_FLAG_IC1: Input Capture Channel 1 Flag -* - TIM_FLAG_IC2: Input Capture Channel 2 Flag -* - TIM_FLAG_TO : Timer Overflow Flag -* - TIM_FLAG_OC1: Output Compare Channel 1 Flag -* - TIM_FLAG_OC2: Output Compare Channel 2 Flag -* Output : None -* Return : None -*******************************************************************************/ -void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag) -{ - /* Clear TIM_Flag */ - TIMx->SR &= ~TIM_Flag; -} - -/******************************************************************************* -* Function Name : TIM_GetPWMIPulse -* Description : This routine is used to get the Pulse value in PWMI Mode. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The pulse value. -*******************************************************************************/ -u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx) -{ - return TIMx->IC2R; -} - -/******************************************************************************* -* Function Name : TIM_GetPWMIPeriod -* Description : This routine is used to get the Period value in PWMI Mode. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The period value. -*******************************************************************************/ -u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx) -{ - return TIMx->IC1R; -} - -/******************************************************************************* -* Function Name : TIM_ITConfig -* Description : Configures the Timer interrupt source. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_IT: specifies the TIM interrupt source to be enabled. -* This parameter can be one of the following values: -* - TIM_IT_IC1: Input Capture 1 Interrupt source. -* - TIM_IT_OC1: Output Compare 1 Interrupt source. -* - TIM_IT_TO : Timer Overflow Interrupt source. -* - TIM_IT_IC2: Input Capture 2 Interrupt source. -* - TIM_IT_OC2: Output Compare 2 Interrupt source. -* Input3 : TIM_Newstate: specifies the new state of the TIMx IT. -* This parameter can be one of the following values: -* - ENABLE : Enable the needed interrupt. -* - DISABLE: Disable the needed interrupt. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate) -{ - if(TIM_Newstate == ENABLE) - { - TIMx->CR2 = (TIMx->CR2 & 0x00FF) | TIM_IT; - } - else - { - TIMx->CR2 &= ~TIM_IT; - } -} - -/******************************************************************************* -* Function Name : TIM_DMAConfig -* Description : Configures the Timer DMA source. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_DMA_Souces: specifies the TIM DMA source to be selected. -* This parameter can be one of the following values: -* - TIM_DMA_IC1: Input Capture 1 DMA source. -* - TIM_DMA_OCA1 Output Compare 1 DMA source. -* - TIM_DMA_TO: Timer Overflow DMA source. -* - TIM_DMA_IC2: Input Capture 2 DMA source. -* - TIM_DMA_OC2: Output Compare 2 DMA source. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources) -{ - /* Reset the DMAS[1:0] bits */ - TIMx->CR1 &= TIM_DMA_CLEAR_MASK; - /* Set the DMAS[1:0] bits according to TIM_DMA_Sources parameter */ - TIMx->CR1 |= TIM_DMA_Sources; -} - -/******************************************************************************* -* Function Name : TIM_DMACmd -* Description : Enables or disables TIMx DMA peripheral. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Newstate: new state of the TIMx DMA peripheral -* This parameter can be one of the following values: -* - ENABLE : Enable the TIMx DMA. -* - DISABLE: Disable the TIMx DMA. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate) -{ - if (TIM_Newstate == ENABLE) - { - TIMx->CR2 |= TIM_DMA_ENABLE; - } - else - { - TIMx->CR2 &= TIM_DMA_DISABLE; - } -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c deleted file mode 100644 index 84ef375a3..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c +++ /dev/null @@ -1,658 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_uart.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the UART software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_uart.h" -#include "91x_scu.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* UART IrDA Mask */ -#define UART_IrDA_Disable_Mask 0xFFFD /* IrDA Disable Mask */ -#define UART_IrDA_Enable_Mask 0x0002 /* IrDA Enable Mask */ -#define IrDA_LowPower_Enable_Mask 0x0004 /*IrDA lower power mode enable*/ -#define IrDA_LowPower_Disable_Mask 0xFFFB /*IrDA lower power mode enable*/ - -/* UART Mask */ -#define UART_Enable_Mask 0x0001 /* UART Enable Mask */ -#define UART_Disable_Mask 0xFFFE /* UART Disable Mask */ - -/* UART LoopBack */ -#define UART_LoopBack_Disable_Mask 0xFF7F /* LoopBack Disable Mask */ -#define UART_LoopBack_Enable_Mask 0x0080 /* LoopBack Enable Mask */ - -#define UART_WordLength_Mask 0xFF9F /* UART Word Length Mask */ -#define UART_Parity_Mask 0xFF79 /* UART Parity Mask */ -#define UART_HardwareFlowControl_Mask 0x3FFF /* UART Hardware Flow Control Mask */ -#define UART_TxRxFIFOLevel_Mask 0xFFC0 /* UART Tx Rx FIFO Level Mask */ -#define UART_BreakChar_Mask 0x0001 /* UART Break Character send Mask*/ -#define UART_FLAG_Mask 0x1F /* UART Flag Mask */ -#define UART_Mode_Mask 0xFCFF /* UART Mode Mask */ -#define UART_RTS_LowLevel_Mask 0x0800 /* RTS signal is low */ -#define UART_RTS_HighLevel_Mask 0xF7FF /* RTS signal is High */ -#define UART_DTR_LowLevel_Mask 0x0400 /* DTR signal is low */ -#define UART_DTR_HighLevel_Mask 0xFBFF /* DTR signal is High */ -#define UART_ClearFlag_Mask 0xAA /* Clear Flag Mask */ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - - /******************************************************************************* -* Function Name : UART_DeInit -* Description : Deinitializes the UARTx peripheral registers -* to their default reset values. -* Input : UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_DeInit(UART_TypeDef* UARTx) -{ - /* Reset the UARTx registers values */ - if(UARTx == UART0) - { - SCU_APBPeriphReset(__UART0,ENABLE); - SCU_APBPeriphReset(__UART0,DISABLE); - } - else if(UARTx == UART1) - { - SCU_APBPeriphReset(__UART1,ENABLE); - SCU_APBPeriphReset(__UART1,DISABLE); - } - else if(UARTx == UART2) - { - SCU_APBPeriphReset(__UART2,ENABLE); - SCU_APBPeriphReset(__UART2,DISABLE); - } -} - -/******************************************************************************* -* Function Name : UART_Init -* Description : Initializes the UARTx peripheral according to the specified -* parameters in the UART_InitStruct . -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* - UART_InitStruct: pointer to a UART_InitTypeDef structure -* that contains the configuration information for the -* specified UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct) -{ - - u64 UART_MainClock = 0; - u32 IntegerDivider = 0; - u32 FractionalDivider = 0; - - /* Clear the LCR[6:5] bits */ - UARTx->LCR &= UART_WordLength_Mask; - /* Set the LCR[6:5] bits according to UART_WordLength value */ - UARTx->LCR |= UART_InitStruct->UART_WordLength; - - /* Choose Stop Bits */ - if(UART_InitStruct->UART_StopBits == UART_StopBits_2) - { - /* 2 Stop Bit */ - UARTx->LCR |= UART_StopBits_2; - } - else - { - /* One Stop Bits */ - UARTx->LCR &= UART_StopBits_1; - } - - /* Configure the Parity */ - /* Clear the LCR[7]and LCR[2:1] bits */ - UARTx->LCR &= UART_Parity_Mask; - /* Set the LCR[7]and LCR[2:1] bits according to UART_Parity value */ - UARTx->LCR |= UART_InitStruct->UART_Parity; - - /* Configure the BaudRate */ - UART_MainClock = (SCU_GetMCLKFreqValue())*1000; - if((SCU->CLKCNTR & 0x200) != 0x200) - { - UART_MainClock = UART_MainClock/2; - } - /* Determine the integer part */ - IntegerDivider = ((100) * (UART_MainClock) / (16 * (UART_InitStruct->UART_BaudRate))); - UARTx->IBRD = IntegerDivider / 100; - - /* Determine the fractional part */ - FractionalDivider = IntegerDivider - (100 * (UARTx->IBRD)); - UARTx->FBRD = ((((FractionalDivider * 64) + 50) / 100)); - - /* Choose the Hardware Flow Control */ - /* Clear the CR[15:14] bits */ - UARTx->CR &= UART_HardwareFlowControl_Mask; - /* Set the CR[15:14] bits according to UART_HardwareFlowControl value */ - UARTx->CR |= UART_InitStruct->UART_HardwareFlowControl; - - /* Configure the UART mode */ - /* Clear the CR[9:8] bits */ - UARTx->CR &= UART_Mode_Mask; - /* Set the CR[9:8] bits according to UART_Mode value */ - UARTx->CR |= UART_InitStruct->UART_Mode; - - /* Enable or disable the FIFOs */ - /* Set the FIFOs Levels */ - if(UART_InitStruct->UART_FIFO == UART_FIFO_Enable) - { - /* Enable the FIFOs */ - UARTx->LCR |= UART_FIFO_Enable; - - /* Clear TXIFLSEL and RXIFLSEL bits */ - UARTx->IFLS &= UART_TxRxFIFOLevel_Mask; - - /* Set RXIFLSEL bits according to UART_RxFIFOLevel value */ - UARTx->IFLS |= (UART_InitStruct->UART_RxFIFOLevel << 3); - - /* Set TXIFLSEL bits according to UART_TxFIFOLevel value */ - UARTx->IFLS |= UART_InitStruct->UART_TxFIFOLevel; - } - else - { - /* Disable the FIFOs */ - UARTx->LCR &= UART_FIFO_Disable; - } -} - -/******************************************************************************* -* Function Name : UART_StructInit -* Description : Fills each UART_InitStruct member with its reset value. -* Input : UART_InitStruct: pointer to a UART_InitTypeDef structure which -* will be initialized. -* Output : None -* Return : None -*******************************************************************************/ -void UART_StructInit(UART_InitTypeDef* UART_InitStruct) -{ - /* Reset the UART_InitStruct members */ - UART_InitStruct->UART_WordLength = UART_WordLength_8D; - UART_InitStruct->UART_StopBits = UART_StopBits_1; - UART_InitStruct->UART_Parity = UART_Parity_Odd ; - UART_InitStruct->UART_BaudRate = 9600; - UART_InitStruct->UART_HardwareFlowControl = UART_HardwareFlowControl_None; - UART_InitStruct->UART_Mode = UART_Mode_Tx_Rx; - UART_InitStruct->UART_FIFO = UART_FIFO_Enable; - UART_InitStruct->UART_TxFIFOLevel = UART_FIFOLevel_1_2; - UART_InitStruct->UART_RxFIFOLevel = UART_FIFOLevel_1_2; -} - -/******************************************************************************* -* Function Name : UART_Cmd -* Description : Enables or disables the specified UART peripheral. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState) -{ - if (NewState == ENABLE) - { - /* Enable the selected UART by setting the UARTEN bit in the CR register */ - UARTx->CR |= UART_Enable_Mask; - } - else - { - /* Disable the selected UART by clearing the UARTEN bit in the CR register */ - UARTx->CR &= UART_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_ITConfig -* Description : Enables or disables the specified UART interrupts. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - UART_IT: specifies the UART interrupts sources to be -* enabled or disabled. This parameter can be any combination -* of the following values: -* - UART_IT_OverrunError: Overrun Error interrupt -* - UART_IT_BreakError: Break Error interrupt -* - UART_IT_ParityError: Parity Error interrupt -* - UART_IT_FrameError: Frame Error interrupt -* - UART_IT_ReceiveTimeOut: Receive Time Out interrupt -* - UART_IT_Transmit: Transmit interrupt -* - UART_IT_Receive: Receive interrupt -* - UART_IT_DSR: DSR interrupt -* - UART_IT_DCD: DCD interrupt -* - UART_IT_CTS: CTS interrupt -* - UART_IT_RI: RI interrupt -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_ITConfig(UART_TypeDef* UARTx, u16 UART_IT, FunctionalState NewState) -{ - if(NewState == ENABLE) - { - /* Enables the selected interrupts */ - UARTx->IMSC |= UART_IT; - } - else - { - /* Disables the selected interrupts */ - UARTx->IMSC &= ~UART_IT; - } -} - -/******************************************************************************* -* Function Name : UART_DMAConfig -* Description : Configures the UARTx’s DMA interface. -* Input : - UARTx: where x can be 1 or 2 to select the UART peripheral -* - UART_DMAOnError: specifies the DMA on error request. -* This parameter can be: -* - UART_DMAOnError_Enable: DMA receive request enabled -* when the UART error interrupt is asserted. -* - UART_DMAOnError_Disable: DMA receive request disabled -* when the UART error interrupt is asserted. -* Output : None -* Return : None -*******************************************************************************/ -void UART_DMAConfig(UART_TypeDef* UARTx, u16 UART_DMAOnError) -{ - if(UART_DMAOnError == UART_DMAOnError_Enable) - { - UARTx->DMACR &= UART_DMAOnError_Enable; - } - else - { - UARTx->DMACR |= UART_DMAOnError_Disable; - } -} - -/******************************************************************************* -* Function Name : UART_DMACmd -* Description : Enables or disables the UARTx’s DMA interface. -* Input : - UARTx: where x can be 1 or 2 to select the UART peripheral -* - UART_DMAReq: enables or disables the request of DMA from UART. -* This parameter can be: -* - UART_DMAReq_Tx: Transmit DMA Enable -* - UART_DMAReq_Rx: Receive DMA Enable -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_DMACmd(UART_TypeDef* UARTx, u8 UART_DMAReq, FunctionalState NewState) -{ - if(UART_DMAReq == UART_DMAReq_Tx) - { - if(NewState == ENABLE) - { - UARTx->DMACR |= UART_DMAReq_Tx; - } - else - { - UARTx->DMACR &= ~UART_DMAReq_Tx; - } - } - - if(UART_DMAReq == UART_DMAReq_Rx) - { - if(NewState == ENABLE) - { - UARTx->DMACR |= UART_DMAReq_Rx; - } - else - { - UARTx->DMACR &= ~UART_DMAReq_Rx; - } - } -} - -/******************************************************************************* -* Function Name : UART_LoopBackConfig -* Description : Enables or disables the LoopBack mode. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_LoopBackConfig(UART_TypeDef* UARTx, FunctionalState NewState) -{ - if (NewState == ENABLE) - { - /* Enable the LoopBack mode of the specified UART */ - UARTx->CR |= UART_LoopBack_Enable_Mask; - } - else - { - /* Disable the LoopBack mode of the specified UART */ - UARTx->CR &= UART_LoopBack_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_GetFlagStatus -* Description : Checks whether the specified UART flag is set or not. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - UART_FLAG: specifies the flag to check. -* This parameter can be one of the following values: -* - UART_FLAG_OverrunError: Overrun error flag -* - UART_FLAG_Break: break error flag -* - UART_FLAG_ParityError: parity error flag -* - UART_FLAG_FrameError: frame error flag -* - UART_FLAG_RI: RI flag -* - UART_FLAG_TxFIFOEmpty: Transmit FIFO Empty flag -* - UART_FLAG_RxFIFOFull: Receive FIFO Full flag -* - UART_FLAG_TxFIFOFull: Transmit FIFO Full flag -* - UART_FLAG_RxFIFOEmpty: Receive FIFO Empty flag -* - UART_FLAG_Busy: UART Busy flag -* - UART_FLAG_CTS: CTS flag -* - UART_FLAG_DCD: DCD flag -* - UART_FLAG_DSR: DSR flag -* - UART_RawIT_OverrunError: Overrun Error interrupt flag -* - UART_RawIT_BreakError: Break Error interrupt flag -* - UART_RawIT_ParityError: Parity Error interrupt flag -* - UART_RawIT_FrameError: Frame Error interrupt flag -* - UART_RawIT_ReceiveTimeOut: ReceiveTimeOut interrupt flag -* - UART_RawIT_Transmit: Transmit interrupt flag -* - UART_RawIT_Receive: Receive interrupt flag -* - UART_RawIT_DSR: DSR interrupt flag -* - UART_RawIT_DCD: DCD interrupt flag -* - UART_RawIT_CTS: CTS interrupt flag -* - UART_RawIT_RI: RI interrupt flag -* Output : None -* Return : The new state of UART_FLAG (SET or RESET). -*******************************************************************************/ -FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx, u16 UART_FLAG) -{ - - u32 UARTReg = 0, FlagPos = 0; - u32 StatusReg = 0; - - /* Get the UART register index */ - UARTReg = UART_FLAG >> 5; - - /* Get the flag position */ - FlagPos = UART_FLAG & UART_FLAG_Mask; - - if(UARTReg == 1) /* The flag to check is in RSR register */ - { - StatusReg = UARTx->RSECR; - } - else if (UARTReg == 2) /* The flag to check is in FR register */ - { - StatusReg = UARTx->FR; - } - else if(UARTReg == 3) /* The flag to check is in RIS register */ - { - StatusReg = UARTx->RIS; - } - - if((StatusReg & (1 << FlagPos))!= RESET) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : UART_ClearFlag -* Description : Clears the UARTx’s flags(Frame, Parity, Break, Overrun error). -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_ClearFlag(UART_TypeDef* UARTx) -{ - /* Clear the flag */ - UARTx->RSECR = UART_ClearFlag_Mask; -} - -/******************************************************************************* -* Function Name : UART_GetITStatus -* Description : Checks whether the specified UART interrupt has occured or not. -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* - UART_IT: specifies the interrupt pending bit to be checked. -* This parameter can be one of the following values: -* - UART_IT_OverrunError: Overrun Error interrupt -* - UART_IT_BreakError: Break Error interrupt -* - UART_IT_ParityError: Parity Error interrupt -* - UART_IT_FrameError: Frame Error interrupt -* - UART_IT_ReceiveTimeOut: Receive Time Out interrupt -* - UART_IT_Transmit: Transmit interrupt -* - UART_IT_Receive: Receive interrupt -* - UART_IT_DSR: DSR interrupt -* - UART_IT_DCD: DCD interrupt -* - UART_IT_CTS: CTS interrupt -* - UART_IT_RI: RI interrupt -* Output : None -* Return : The new state of UART_IT (SET or RESET). -*******************************************************************************/ -ITStatus UART_GetITStatus(UART_TypeDef* UARTx, u16 UART_IT) -{ - if((UARTx->MIS & UART_IT) != RESET) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : UART_ClearITPendingBit -* Description : Clears the UARTx’s interrupt pending bits. -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* - UART_IT: specifies the interrupt pending bit to clear. -* More than one interrupt can be cleared using the “|” operator. -* This parameter can be: -* - UART_IT_OverrunError: Overrun Error interrupt -* - UART_IT_BreakError: Break Error interrupt -* - UART_IT_ParityError: Parity Error interrupt -* - UART_IT_FrameError: Frame Error interrupt -* - UART_IT_ReceiveTimeOut: Receive Time Out interrupt -* - UART_IT_Transmit: Transmit interrupt -* - UART_IT_Receive: Receive interrupt -* - UART_IT_DSR: DSR interrupt -* - UART_IT_DCD: DCD interrupt -* - UART_IT_CTS: CTS interrupt -* - UART_IT_RI: RI interrupt -* Output : None -* Return : None -*******************************************************************************/ -void UART_ClearITPendingBit(UART_TypeDef* UARTx, u16 UART_IT) -{ - /* Clear the specified interrupt */ - UARTx->ICR &= UART_IT; -} - -/******************************************************************************* -* Function Name : UART_IrDALowPowerConfig -* Description : Sets the IrDA low power mode -* Input : - IrDAx: where x can be 0,1 or 2 to select the UART/IrDA peripheral. -* - NewState: new state of the UARTIrDA peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_IrDALowPowerConfig(u8 IrDAx, FunctionalState NewState) -{ - UART_TypeDef* UARTx; - - switch(IrDAx) - { - case IrDA0: UARTx = UART0; - break; - case IrDA1: UARTx = UART1; - break; - case IrDA2: UARTx = UART2; - break; - } - - if (NewState == ENABLE) - { - UARTx->CR |= IrDA_LowPower_Enable_Mask; - } - else - { - UARTx->CR &= IrDA_LowPower_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_IrDASetCounter -* Description : Sets the IrDA counter divisor value. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART/IrDA peripheral. -* - IrDA_Counter: IrDA counter divisor new value n low power mode(Hz). -* Output : None -* Return : None -*******************************************************************************/ -void UART_IrDASetCounter(u8 IrDAx, u32 IrDA_Counter) -{ - UART_TypeDef* UARTx; - u32 APBClock; - switch(IrDAx) - { - case IrDA0: UARTx = UART0; - break; - case IrDA1: UARTx = UART1; - break; - case IrDA2: UARTx = UART2; - break; - } - /* Get the APB frequency */ - APBClock = (SCU_GetPCLKFreqValue())*1000; - /* Determine the Counter Divisor part */ - UARTx->ILPR = (((APBClock*10) / ( IrDA_Counter)) + 5 )/10; - } - -/******************************************************************************* -* Function Name : UART_IrDACmd -* Description : Enables or disables the UARTx’s IrDA interface. -* Input : - IrDAx: where x can be 0,1 or 2 to select the UART/IrDA peripheral -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_IrDACmd(u8 IrDAx, FunctionalState NewState) -{ - UART_TypeDef* UARTx; - - switch(IrDAx) - { - case IrDA0: UARTx = UART0; - break; - case IrDA1: UARTx = UART1; - break; - case IrDA2: UARTx = UART2; - break; - } - if(NewState == ENABLE) - { - /* Enable the IrDA mode of the specified UART */ - UARTx->CR |= UART_IrDA_Enable_Mask; - } - else - { - /* Disable the IrDA mode of the specified UART */ - UARTx->CR &= UART_IrDA_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_SendData -* Description : Transmits signle Byte of data through the UARTx peripheral. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* - Data: the byte to transmit -* Output : None -* Return : None -*******************************************************************************/ -void UART_SendData(UART_TypeDef* UARTx, u8 Data) -{ - /* Transmit one byte */ - UARTx->DR = Data; -} - -/******************************************************************************* -* Function Name : UART_ReceiveData -* Description : Returns the most recent received Byte by the UARTx peripheral. -* Input : UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* Output : None -* Return : The received data -*******************************************************************************/ -u8 UART_ReceiveData(UART_TypeDef* UARTx) -{ - /* Receive one byte */ - return ((u8)UARTx->DR); -} - -/******************************************************************************* -* Function Name : UART_SendBreak -* Description : Transmits break characters. -* Input : UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_SendBreak(UART_TypeDef* UARTx) -{ - /* Send break characters */ - UARTx->LCR |= UART_BreakChar_Mask; -} - -/******************************************************************************* -* Function Name : UART_RTSConfig -* Description : Sets or Resets the RTS signal -* Input : - LevelState: new state of the RTS signal for UART0 only. -* This parameter can be: LowLevel or HighLevel -* Output : None -* Return : None -*******************************************************************************/ -void UART_RTSConfig(UART_LevelTypeDef LevelState) -{ - if(LevelState == LowLevel) - { - UART0->CR |= UART_RTS_LowLevel_Mask; - } - else - { - UART0->CR &= UART_RTS_HighLevel_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_DTRConfig -* Description : Sets or Resets the DTR signal for UART0 only -* Input : - LevelState: new state of the DTR signal. -* This parameter can be: LowLevel or HighLevel -* Output : None -* Return : None -*******************************************************************************/ -void UART_DTRConfig(UART_LevelTypeDef LevelState) -{ - if(LevelState == LowLevel) - { - UART0->CR |= UART_DTR_LowLevel_Mask; - } - else - { - UART0->CR &= UART_DTR_HighLevel_Mask; - } -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c deleted file mode 100644 index fc202e920..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c +++ /dev/null @@ -1,830 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_vic.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the VIC software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Standard include ----------------------------------------------------------*/ -#include "91x_vic.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -#define VIC_REGISTER_NUMBER 16 -#define VIC_PROTECTION_ENABLE_MASK 0x1 -#define VIC_PROTECTION_DISABLE_MASK 0xFFFFFFFE -#define VIC_VECTOR_ENABLE_MASK 0x20 -#define VIC_IT_SOURCE_MASK 0xFFFFFFE0 -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ - -static void VIC_ITModeConfig(u16 VIC_Source, VIC_ITLineMode VIC_LineMode); -static void VIC_ISRVectAddConfig(u16 VIC_Source, u16 VIC_Priority, \ - void (*VIC_VectAddress)(void)); -static void VIC_VectEnableConfig(u16 VIC_Source, u16 VIC_Priority); -static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority); - -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : VIC_DeInit -* Description : Deinitialize the VIC module registers to their default reset -* values. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void VIC_DeInit(void) -{ - SCU_AHBPeriphReset(__VIC, ENABLE); /* VIC peripheral is under Reset */ - SCU_AHBPeriphReset(__VIC, DISABLE); /* VIC peripheral Reset off */ -} - -/******************************************************************************* -* Function Name : VIC_GetIRQStatus -* Description : Get the status of interrupts after IRQ masking. -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The status of the IRQ interrupt after masking (SET or RESET). -*******************************************************************************/ -FlagStatus VIC_GetIRQStatus(u16 VIC_Source) -{ - u32 VIC_Mask = 1; - if (VIC_Source < VIC_REGISTER_NUMBER) - { - if ((VIC0->ISR | VIC_Mask << VIC_Source) != RESET) - return SET; - else - return RESET; - } - else - { - if ((VIC1->ISR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) - return SET; - else - return RESET; - } -} - -/******************************************************************************* -* Function Name : VIC_GetFIQStatus -* Description : Get the status of interrupts after FIQ masking -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The status of the FIQ interrupt after masking (SET or RESET) -*******************************************************************************/ -FlagStatus VIC_GetFIQStatus(u16 VIC_Source) -{ - u32 VIC_Mask = 1; - if (VIC_Source < VIC_REGISTER_NUMBER) - { - if ((VIC0->RINTSR | VIC_Mask << VIC_Source) != RESET) - return SET; - else - return RESET; - } - else - { - if ((VIC1->RINTSR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) - return SET; - else - return RESET; - } -} - -/******************************************************************************* -* Function Name : VIC_GetSourceITStatus -* Description : Get the status of the source interrupts before masking. -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The status of the source interrupt before masking -*******************************************************************************/ -FlagStatus VIC_GetSourceITStatus(u16 VIC_Source) -{ - u32 VIC_Mask = 1; - if (VIC_Source < VIC_REGISTER_NUMBER) - { - if ((VIC0->FSR | VIC_Mask << VIC_Source) != RESET) - return SET; - else - return RESET; - } - else - { - if ((VIC1->FSR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) - return SET; - else - return RESET; - } -} - -/******************************************************************************* -* Function Name : VIC_ITModeConfig -* Description : Select the type of interrupt (IRQ or FIQ) -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_LineMode :specifies the type of interrupt of the source -* line. This parameter can be one of the following values: -* - VIC_IRQ: the correspondent line is configured as IRQ. -* - VIC_FIQ: the correspondent line is configured as FIQ. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_ITModeConfig(u16 VIC_Source, VIC_ITLineMode VIC_LineMode) -{ - u32 VIC_Mask = 1; - - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - { - if (VIC_LineMode == VIC_IRQ) - VIC0->INTSR &= ~(VIC_Mask << VIC_Source); - else /* VIC_LineMode == VIC_FIQ */ - VIC0->INTSR |= (VIC_Mask << VIC_Source); - } - else /* VIC1 */ - { - if (VIC_LineMode == VIC_IRQ) - VIC1->INTSR &= ~(VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - else /* VIC_LineMode == VIC_FIQ */ - VIC1->INTSR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } -} - -/******************************************************************************* -* Function Name : VIC_ITCmd -* Description : Enable or disable the interrupt request lines. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : FMI_NewState: specifies the line status. -* This parameter can be one of the following values: -* - ENABLE: The line is enabled. -* - DISABLE: The line is disabled. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_ITCmd(u16 VIC_Source, FunctionalState VIC_NewState) -{ - u32 VIC_Mask = 1; - - if (VIC_NewState == ENABLE) - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->INTER |= (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->INTER |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } - else /* VIC_NewState == DISABLE */ - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->INTECR |= (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->INTECR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } -} - -/******************************************************************************* -* Function Name : VIC_SWITCmd -* Description : Generate a software interrupt for the specific source -* interrupt. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : FMI_NewState: specifies the software interrupt status. -* This parameter can be one of the following values: -* - ENABLE: The software interrupt is enabled. -* - DISABLE: The software interrupt is disabled. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_SWITCmd(u16 VIC_Source, FunctionalState VIC_NewState) -{ - u32 VIC_Mask = 1; - - if (VIC_NewState == ENABLE) - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->SWINTR |= (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->SWINTR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } - else /* VIC_NewState == DISABLE */ - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->SWINTCR = (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->SWINTCR = (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } -} - -/******************************************************************************* -* Function Name : VIC_ProtectionCmd -* Description : Enable or Disable the register access protection. -* Input : FMI_NewState: specifies the protection status. -* This parameter can be one of the following values: -* - ENABLE: The protection is enabled. -* - DISABLE: The protection is disabled. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_ProtectionCmd(FunctionalState VIC_NewState) -{ - if (VIC_NewState == ENABLE) - { - VIC0->PER |= VIC_PROTECTION_ENABLE_MASK; - VIC1->PER |= VIC_PROTECTION_ENABLE_MASK; - } - else - { - VIC0->PER &= VIC_PROTECTION_DISABLE_MASK; - VIC1->PER &= VIC_PROTECTION_DISABLE_MASK; - } -} - -/******************************************************************************* -* Function Name : VIC_GetCurrentISRAdd -* Description : Get the address of the current active ISR. -* Input : VICx: specifies the VIC peripheral -* This parameter can be one of the following values: -* - VIC0: To select VIC0. -* - VIC1: To select VIC1. -* Output : None -* Return : The Address of the active ISR. -*******************************************************************************/ -u32 VIC_GetCurrentISRAdd(VIC_TypeDef* VICx) -{ - return VICx->VAR; -} - -/******************************************************************************* -* Function Name : VIC_ISRVectAddConfig -* Description : Configuration of the ISR vector address. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Input3 : void (*VIC_VectAddress)(void): specifies the ISR vector -* address pointer. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_ISRVectAddConfig(u16 VIC_Source, u16 VIC_Priority, \ - void (*VIC_VectAddress)(void)) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->VAiR[VIC_Priority] = (u32)VIC_VectAddress; - else /* VIC1 */ - VIC1->VAiR[VIC_Priority] = (u32)VIC_VectAddress; -} - -/******************************************************************************* -* Function Name : VIC_GetISRVectAdd -* Description : Get the ISR vector address of the correspondent line. -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The correspondent ISR vector address. -*******************************************************************************/ -u32 VIC_GetISRVectAdd(u16 VIC_Source) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - return VIC0->VAiR[VIC_Source]; - else /* VIC1 */ - return VIC1->VAiR[VIC_Source - VIC_REGISTER_NUMBER]; -} - -/******************************************************************************* -* Function Name : VIC_VectEnableConfig -* Description : Enable the vector interrupt. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_VectEnableConfig(u16 VIC_Source, u16 VIC_Priority) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->VCiR[VIC_Priority] |= VIC_VECTOR_ENABLE_MASK; - else /* VIC1 */ - VIC1->VCiR[VIC_Priority] |= VIC_VECTOR_ENABLE_MASK; -} - -/******************************************************************************* -* Function Name : VIC_ITSourceConfig -* Description : Select the interrupt source. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - { - VIC0->VCiR[VIC_Priority] &= VIC_IT_SOURCE_MASK; - VIC0->VCiR[VIC_Priority] |= VIC_Source; - } - else /* VIC1 */ - { - VIC1->VCiR[VIC_Priority] &= VIC_IT_SOURCE_MASK; - VIC1->VCiR[VIC_Priority] |= VIC_Source - VIC_REGISTER_NUMBER; - } -} - -/******************************************************************************* -* Function Name : VIC_Config -* Description : Configure the ISR, the line, the mode and the priority for -* each interrupt source line. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_LineMode :specifies the type of interrupt of the source -* line. This parameter can be one of the following values: -* - VIC_IRQ: the correspondent line is configured as IRQ. -* - VIC_FIQ: the correspondent line is configured as FIQ. -* Input3 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_Config(u16 VIC_Source, VIC_ITLineMode VIC_LineMode, u8 VIC_Priority) -{ - switch (VIC_Source) - { - case 0: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, WDG_IRQHandler); - break; - - case 1: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SW_IRQHandler); - break; - - case 2: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ARMRX_IRQHandler); - break; - - case 3: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ARMTX_IRQHandler); - break; - - case 4: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM0_IRQHandler); - break; - - case 5: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM1_IRQHandler); - break; - - case 6: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM2_IRQHandler); - break; - - case 7: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM3_IRQHandler); - break; - - case 8: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBHP_IRQHandler); - break; - - case 9: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBLP_IRQHandler); - break; - - case 10: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SCU_IRQHandler); - break; - - case 11: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ENET_IRQHandler); - break; - - case 12: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, DMA_IRQHandler); - break; - - case 13: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, CAN_IRQHandler); - break; - - case 14: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, MC_IRQHandler); - break; - - case 15: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ADC_IRQHandler); - break; - - case 16: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART0_IRQHandler); - break; - - case 17: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART1_IRQHandler); - break; - - case 18: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART2_IRQHandler); - break; - - case 19: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, I2C0_IRQHandler); - break; - - case 20: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, I2C1_IRQHandler); - break; - - case 21: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SSP0_IRQHandler); - break; - - case 22: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SSP1_IRQHandler); - break; - - case 23: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, LVD_IRQHandler); - break; - - case 24: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, RTC_IRQHandler); - break; - - case 25: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, WIU_IRQHandler); - break; - - case 26: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT0_IRQHandler); - break; - - case 27: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT1_IRQHandler); - break; - - case 28: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT2_IRQHandler); - break; - - case 29: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT3_IRQHandler); - break; - - case 30: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBWU_IRQHandler); - break; - - case 31: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, PFQBC_IRQHandler); - break; - - default: break; - } - VIC_ITModeConfig(VIC_Source, VIC_LineMode); - VIC_VectEnableConfig(VIC_Source, VIC_Priority); - VIC_ITSourceConfig(VIC_Source, VIC_Priority); -} - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c deleted file mode 100644 index f933635d0..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c +++ /dev/null @@ -1,277 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_wdg.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the WDG software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_wdg.h" -#include "91x_scu.h" -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - - -/* WDG End of Count interrupt Flag */ -#define WDG_FLAG_EC 0x0001 - - -/* WDG End of Count interrupt request */ -#define WDG_IT_EC 0x0001 - - - -/* WDG Start/Stop counter */ -#define WDG_Counter_Start 0x0002 -#define WDG_Counter_Stop 0xFFFD - - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Registers reset value */ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/****************************************************************************** -* Function Name : WDG_DeInit -* Description : Deinitializes the WDG peripheral registers to their default -* reset values. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WDG_DeInit(void) -{ - - SCU_APBPeriphReset(__WDG, ENABLE); /*WDG peripheral under Reset */ - SCU_APBPeriphReset(__WDG, DISABLE); /*WDG peripheral Reset off*/ - -} - -/******************************************************************************* -* Function Name : WDG_StructInit -* Description : Fills the WDG_InitTypeDef structure member with its reset -* value. -* Input : WDG_InitStruct : pointer to a WDG_InitTypeDef structure -* which will be initialized. -* Output : None -* Return : None -*******************************************************************************/ -void WDG_StructInit(WDG_InitTypeDef *WDG_InitStruct) -{ - /* Select the Watchdog running mode*/ - WDG_InitStruct->WDG_Mode = WDG_Mode_Timer; - - /* Select the source clock */ - WDG_InitStruct-> WDG_ClockSource = WDG_ClockSource_Apb; - - /* Initialize Prescaler */ - WDG_InitStruct->WDG_Prescaler =0xFF; - - /* Initialize Preload */ - WDG_InitStruct->WDG_Preload =0xFFFF; - - -} - -/******************************************************************************* -* Function Name : WDG_Init -* Description : Initializes WDG peripheral according to the specified -* parameters in the WDG_InitStruct. -* Input : WDG_InitStruct: pointer to a WDG_InitTypeDef structure that -* contains the configuration information for the WDG peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void WDG_Init(WDG_InitTypeDef* WDG_InitStruct) -{ - - - if(WDG_InitStruct->WDG_ClockSource == WDG_ClockSource_Apb) - { - /* Select The APB clock as clock source */ - WDG->CR &= WDG_ClockSource_Apb; - } - - else - { - /* Select the RTC clock as source */ - WDG->CR |= WDG_ClockSource_Rtc ; - } - - - /* Configure WDG Prescaler register value */ - WDG->PR = WDG_InitStruct->WDG_Prescaler; - - /* Configure WDG Pre-load register value */ - WDG->VR = WDG_InitStruct->WDG_Preload ; - - - if(WDG_InitStruct->WDG_Mode == WDG_Mode_Timer) - { - /* Select Timer mode */ - WDG->CR &= WDG_Mode_Timer; - } - else - { - /* Select WDG mode */ - WDG->CR |= WDG_Mode_Wdg ; - } - - -} - -/******************************************************************************* -* Function Name : WDG_Cmd -* Description : Enables or disables the WDG peripheral. -* Input : NewState: new state of the WDG peripheral (Newstate can be -* ENABLE or DISABLE) -* Output : None -* Return : None -*******************************************************************************/ -void WDG_Cmd(FunctionalState NewState ) -{ - if((WDG->CR & WDG_Mode_Wdg) == 0) - { - /* Timer mode */ - if(NewState == ENABLE) - { - /* Start timer by setting SC bit in Control register */ - WDG->CR |= WDG_Counter_Start; - } - else - { - /* Stop timer by clearning SC bit in Control register */ - WDG->CR &= WDG_Counter_Stop; - } - } - else - { - /* Watchdog mode */ - if(NewState == ENABLE) - { - WDG->KR = WDG_KeyValue1; - WDG->KR = WDG_KeyValue2; - } - } -} - -/******************************************************************************* -* Function Name : WDG_ITConfig -* Description : Enables or disables the WDG End of Count(EC) interrupt. -* Input : Newstate: new state of the End of Count(EC) WDG interrupt. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void WDG_ITConfig(FunctionalState NewState) -{ - if(NewState == ENABLE) - { - /* Enable the End of Count interrupt */ - WDG->MR |= WDG_IT_EC; - } - else - { - /* Disable the End of Count interrupt */ - WDG->MR &= ~WDG_IT_EC; - } -} - -/******************************************************************************* -* Function Name : WDG_GetCounter -* Description : Gets the WDG’s current counter value. -* Input : None -* Output : None -* Return : The WDG current counter value -*******************************************************************************/ -u16 WDG_GetCounter(void) -{ - return WDG->CNT; -} - - - - -/******************************************************************************* -* Function Name : WDG_GetITStatus -* Description : Checks whether the WDG End of Count(EC) interrupt is occured or not. -* Input : None -* Output : None -* Return : The new state of WDG_IT (SET or RESET). -*******************************************************************************/ -ITStatus WDG_GetITStatus(void) -{ - if(((WDG->SR & WDG_IT_EC) != RESET )&&((WDG->MR & WDG_IT_EC) != RESET )) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : WDG_ClearITPendingBit -* Description : Clears the WDG's End of Count(EC) interrupt pending bit. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WDG_ClearITPendingBit(void) -{ - /* Clear the EC pending bit */ - WDG->SR &= ~WDG_IT_EC; - -} - -/******************************************************************************* -* Function Name : WDG_ClearFlag -* Description : Clears the WDG's End of Count(EC) Flag. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WDG_ClearFlag(void) -{ - /* Clear the EC Flag */ - - WDG->SR &= ~WDG_FLAG_EC; - -} - - -/******************************************************************************* -* Function Name : WDG_GetFlagStatus -* Description : Checks whether the WDG End of Count(EC) flag is set or not. -* Input : None -* Output : None -* Return : The new state of the WDG_FLAG (SET or RESET). -*******************************************************************************/ -FlagStatus WDG_GetFlagStatus(void) -{ - if((WDG->SR & WDG_FLAG_EC) != RESET ) - { - return SET; - } - else - { - return RESET; - } -} - - - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c deleted file mode 100644 index 97a13f5fb..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Library includes. */ -#include "91x_lib.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstMAX_LEDs 4 -#define partstLED_PORT *( ( unsigned short * ) 0x5800f3fc ) - -/*-----------------------------------------------------------*/ - -static GPIO_InitTypeDef GPIO9_InitStruct; - -void vParTestInitialise( void ) -{ - /* Configure the bits used to flash LED's on port 9 as output. */ - GPIO_StructInit( &GPIO9_InitStruct ); - GPIO9_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; - GPIO9_InitStruct.GPIO_Direction = GPIO_PinOutput; - GPIO_Init( GPIO9, &GPIO9_InitStruct ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned short usLED = 0x0001; - - if( uxLED < partstMAX_LEDs ) - { - usLED <<= uxLED; - - portENTER_CRITICAL(); - { - if( xValue ) - { - partstLED_PORT &= ~usLED; - } - else - { - partstLED_PORT |= usLED; - } - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned short usLED = 0x0001; - - if( uxLED < partstMAX_LEDs ) - { - usLED <<= uxLED; - - portENTER_CRITICAL(); - { - if( partstLED_PORT & usLED ) - { - partstLED_PORT &= ~usLED; - } - else - { - partstLED_PORT |= usLED; - } - } - portEXIT_CRITICAL(); - } -} - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd deleted file mode 100644 index e00a0c08a..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,2443 +0,0 @@ - - - - 1 - - THUMB - - ARM - - 1 - - C-SPY - 2 - - 15 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - ARM - uIP - D - - ARM - - 1 - - C-SPY - 2 - - 15 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - ARM - lwIP - D - - ARM - - 1 - - C-SPY - 2 - - 15 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - ARM - uIP - R - - ARM - - 0 - - C-SPY - 2 - - 15 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 0 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 0 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 0 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 0 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 0 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 0 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 0 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp deleted file mode 100644 index 496c3bc13..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,4166 +0,0 @@ - - - - 1 - - THUMB - - ARM - - 1 - - General - 3 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - ARM - uIP - D - - ARM - - 1 - - General - 3 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - ARM - lwIP - D - - ARM - - 1 - - General - 3 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - ARM - uIP - R - - ARM - - 0 - - General - 3 - - 14 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Demo Source - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\comtest.c - - - $PROJ_DIR$\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\STCode\lcd.c - - - $PROJ_DIR$\main.c - - - $PROJ_DIR$\ParTest\ParTest.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\serial\serial.c - - - $PROJ_DIR$\webserver\uIP_Task.c - - ARM - lwIP - D - - - - - Library Source - - $PROJ_DIR$\Library\include\91x_conf.h - - - $PROJ_DIR$\Library\source\91x_enet.c - - THUMB - - ICCARM - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARM - uIP - D - - ICCARM - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARM - lwIP - D - - ICCARM - - 19 - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARM - uIP - R - - ICCARM - - 19 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $PROJ_DIR$\Library\source\91x_fmi.c - - - $PROJ_DIR$\Library\source\91x_gpio.c - - - $PROJ_DIR$\Library\source\91x_it.c - - - $PROJ_DIR$\Library\source\91x_lib.c - - - $PROJ_DIR$\Library\source\91x_scu.c - - - $PROJ_DIR$\Library\source\91x_tim.c - - - $PROJ_DIR$\Library\source\91x_uart.c - - - $PROJ_DIR$\Library\source\91x_vic.c - - - $PROJ_DIR$\Library\source\91x_wdg.c - - - - lwIP - - THUMB - ARM - uIP - D - ARM - uIP - R - - - api - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\api_lib.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\api_msg.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\err.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\sockets.c - - - $PROJ_DIR$\lwip\api\sys_arch.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\tcpip.c - - - - core - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\dhcp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\inet.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\mem.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\memp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\netif.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\pbuf.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\raw.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\stats.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\sys.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\tcp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\tcp_in.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\tcp_out.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\udp.c - - - - ipv4 - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\icmp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\ip.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\ip_addr.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\ip_frag.c - - - - netif - - $PROJ_DIR$\..\Common\ethernet\lwIP\netif\etharp.c - - - $PROJ_DIR$\lwip\netif\ethernetif.c - - - - snmp - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\asn1_dec.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\asn1_enc.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\mib2.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\mib_structs.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\msg_in.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\msg_out.c - - - - WebServer - - $PROJ_DIR$\lwip\lwipWebServer\BasicWEB.c - - - $PROJ_DIR$\lwip\lwipWebServer\fs.c - - - $PROJ_DIR$\lwip\lwipWebServer\httpd.c - - - - - RTOS Source - - $PROJ_DIR$\FreeRTOSConfig.h - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\STR91x\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\STR91x\portasm.s79 - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - - System Files - - $PROJ_DIR$\91x_init.s - - - $PROJ_DIR$\91x_vect.s - - - - uIP - - ARM - lwIP - D - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\apps\webserver\http-strings.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - $PROJ_DIR$\webserver\httpd-fs.c - - - $PROJ_DIR$\webserver\httpd.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww b/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt b/FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c deleted file mode 100644 index f2f77736f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c +++ /dev/null @@ -1,1409 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : lcd.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file includes the LCD driver for GXM12232-2SL liquid -* Crystal Display Module of STR75x-EVAL. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_lib.h" -#include "lcd.h" -#include "FreeRTOS.h" -#include "task.h" - -/* Private typedef -----------------------------------------------------------*/ -static GPIO_InitTypeDef GPIO_InitStructure; - -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ - /* Global variable to set the written text color: used for LCD_Printf */ - TextColorMode_TypeDef TextMode=BlackText; - - /* ASCII Table: each character is 7 column (7dots large) on two pages (16dots high) */ - /* 7 column character: Two 8bit data to display one column*/ - u8 AsciiDotsTable[1778] = { - /* ASCII 0 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 1 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 2 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 3 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 4 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 5 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 6 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 7 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 8 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 9 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 10 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 11 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 12 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 13 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 14 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 15 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 16 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 17 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 18 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 19 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 20 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 21 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 22 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 23 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 24 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 25 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 26 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 27 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 28 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 29 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 30 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 31 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 32 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 33 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 34 */ 0x00,0x00,0x00,0xe0,0x00,0x20,0x00,0x00,0x00,0xe0,0x00,0x20,0x00,0x00, - /* ASCII 35 */ 0x00,0x00,0x35,0x00,0x0f,0x80,0x35,0x60,0x0f,0x80,0x05,0x60,0x00,0x00, - /* ASCII 36 */ 0x00,0x00,0x0d,0x80,0x0a,0x40,0x3a,0x60,0x06,0x40,0x00,0x00,0x00,0x00, - /* ASCII 37 */ 0x00,0x00,0x02,0x40,0x02,0xa0,0x0a,0x40,0x15,0x00,0x09,0x00,0x00,0x00, - /* ASCII 38 */ 0x00,0x00,0x0c,0x00,0x13,0x00,0x14,0x80,0x08,0x80,0x14,0x00,0x00,0x00, - /* ASCII 39 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 40 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x80,0x60,0x60,0x00,0x00,0x00,0x00, - /* ASCII 41 */ 0x00,0x00,0x00,0x00,0x60,0x60,0x1f,0x80,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 42 */ 0x00,0x00,0x00,0x40,0x03,0x40,0x00,0xe0,0x03,0x40,0x00,0x40,0x00,0x00, - /* ASCII 43 */ 0x02,0x00,0x02,0x00,0x02,0x00,0x1f,0xc0,0x02,0x00,0x02,0x00,0x02,0x00, - /* ASCII 44 */ 0x00,0x00,0x00,0x00,0x60,0x00,0x38,0x00,0x08,0x00,0x00,0x00,0x00,0x00, - /* ASCII 45 */ 0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00, - /* ASCII 46 */ 0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 47 */ 0x00,0x00,0x20,0x00,0x18,0x00,0x06,0x00,0x01,0x80,0x00,0x60,0x00,0x00, - /* ASCII 48 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x0f,0xc0,0x00,0x00, - /* ASCII 49 */ 0x00,0x00,0x10,0x00,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x00,0x00,0x00, - /* ASCII 50 */ 0x00,0x00,0x18,0x40,0x14,0x20,0x12,0x20,0x11,0x20,0x18,0xc0,0x00,0x00, - /* ASCII 51 */ 0x00,0x00,0x08,0x40,0x10,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00, - /* ASCII 52 */ 0x00,0x00,0x06,0x00,0x05,0x00,0x04,0xc0,0x14,0x20,0x1f,0xe0,0x14,0x00, - /* ASCII 53 */ 0x00,0x00,0x08,0x00,0x11,0xe0,0x11,0x20,0x11,0x20,0x0e,0x20,0x00,0x00, - /* ASCII 54 */ 0x00,0x00,0x0f,0x80,0x11,0x40,0x11,0x20,0x11,0x20,0x0e,0x20,0x00,0x00, - /* ASCII 55 */ 0x00,0x00,0x00,0x60,0x00,0x20,0x18,0x20,0x07,0x20,0x00,0xe0,0x00,0x00, - /* ASCII 56 */ 0x00,0x00,0x0e,0xc0,0x11,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00, - /* ASCII 57 */ 0x00,0x00,0x11,0xc0,0x12,0x20,0x12,0x20,0x0a,0x20,0x07,0xc0,0x00,0x00, - /* ASCII 58 */ 0x00,0x00,0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 59 */ 0x00,0x00,0x00,0x00,0x30,0x00,0x19,0x80,0x09,0x80,0x00,0x00,0x00,0x00, - /* ASCII 60 */ 0x02,0x00,0x05,0x00,0x05,0x00,0x08,0x80,0x10,0x40,0x10,0x40,0x00,0x00, - /* ASCII 61 */ 0x00,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00,0x00, - /* ASCII 62 */ 0x10,0x40,0x10,0x40,0x08,0x80,0x05,0x00,0x05,0x00,0x02,0x00,0x00,0x00, - /* ASCII 63 */ 0x00,0x00,0x00,0x00,0x10,0x80,0x14,0x40,0x02,0x40,0x01,0x80,0x00,0x00, - /* ASCII 64 */ 0x00,0x00,0x1f,0xe0,0x20,0x10,0x23,0x10,0x24,0x90,0x17,0xe0,0x00,0x00, - /* ASCII 65 */ 0x10,0x00,0x1c,0x00,0x17,0xa0,0x04,0x60,0x17,0x80,0x1c,0x00,0x10,0x00, - /* ASCII 66 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00, - /* ASCII 67 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x08,0x60,0x00,0x00, - /* ASCII 68 */ 0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00, - /* ASCII 69 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x13,0xa0,0x10,0x20,0x18,0x60,0x00,0x00, - /* ASCII 70 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x11,0x20,0x03,0xa0,0x00,0x20,0x00,0x60, - /* ASCII 71 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x12,0x20,0x0e,0x60,0x02,0x00, - /* ASCII 72 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x01,0x00,0x11,0x20,0x1f,0xe0,0x10,0x20, - /* ASCII 73 */ 0x00,0x00,0x10,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x00,0x00, - /* ASCII 74 */ 0x00,0x00,0x0e,0x00,0x10,0x20,0x10,0x20,0x0f,0xe0,0x00,0x20,0x00,0x00, - /* ASCII 75 */ 0x10,0x20,0x1f,0xe0,0x12,0x20,0x03,0x00,0x04,0xa0,0x18,0x60,0x10,0x20, - /* ASCII 76 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x00,0x1c,0x00,0x00,0x00, - /* ASCII 77 */ 0x10,0x20,0x1f,0xe0,0x10,0xe0,0x03,0x00,0x10,0xe0,0x1f,0xe0,0x10,0x20, - /* ASCII 78 */ 0x10,0x20,0x1f,0xe0,0x10,0xe0,0x07,0x00,0x18,0x20,0x1f,0xe0,0x00,0x20, - /* ASCII 79 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x0f,0xc0,0x00,0x00, - /* ASCII 80 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x12,0x20,0x02,0x20,0x01,0xc0,0x00,0x00, - /* ASCII 81 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x30,0x20,0x30,0x20,0x2f,0xc0,0x00,0x00, - /* ASCII 82 */ 0x10,0x20,0x1f,0xe0,0x12,0x20,0x02,0x20,0x06,0x20,0x09,0xc0,0x10,0x00, - /* ASCII 83 */ 0x00,0x00,0x18,0xc0,0x09,0x20,0x11,0x20,0x11,0x40,0x0e,0x60,0x00,0x00, - /* ASCII 84 */ 0x00,0x60,0x00,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x00,0x20,0x00,0x60, - /* ASCII 85 */ 0x00,0x20,0x0f,0xe0,0x10,0x20,0x10,0x00,0x10,0x20,0x0f,0xe0,0x00,0x20, - /* ASCII 86 */ 0x00,0x20,0x00,0xe0,0x07,0x20,0x18,0x00,0x07,0x20,0x00,0xe0,0x00,0x20, - /* ASCII 87 */ 0x00,0x20,0x0f,0xe0,0x10,0x20,0x0f,0x00,0x10,0x20,0x0f,0xe0,0x00,0x20, - /* ASCII 88 */ 0x10,0x20,0x18,0x60,0x04,0x80,0x03,0x00,0x04,0x80,0x18,0x60,0x10,0x20, - /* ASCII 89 */ 0x00,0x20,0x00,0x60,0x11,0xa0,0x1e,0x00,0x11,0xa0,0x00,0x60,0x00,0x20, - /* ASCII 90 */ 0x00,0x00,0x18,0x60,0x14,0x20,0x13,0x20,0x10,0xa0,0x18,0x60,0x00,0x00, - /* ASCII 91 */ 0x00,0x00,0x00,0x00,0x7f,0xe0,0x40,0x20,0x40,0x20,0x00,0x00,0x00,0x00, - /* ASCII 92 */ 0x00,0x00,0x00,0x20,0x01,0xc0,0x06,0x00,0x38,0x00,0x00,0x00,0x00,0x00, - /* ASCII 93 */ 0x00,0x00,0x00,0x00,0x40,0x20,0x40,0x20,0x7f,0xe0,0x00,0x00,0x00,0x00, - /* ASCII 94 */ 0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x60,0x00,0x80,0x01,0x00,0x00,0x00, - /* ASCII 95 */ 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, - /* ASCII 96 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00, - /* ASCII 97 */ 0x00,0x00,0x0d,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 98 */ 0x10,0x20,0x1f,0xe0,0x11,0x00,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00, - /* ASCII 99 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x09,0x80,0x00,0x00, - /* ASCII 100 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x11,0x20,0x1f,0xe0,0x10,0x00, - /* ASCII 101 */ 0x00,0x00,0x0f,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x13,0x00,0x00,0x00, - /* ASCII 102 */ 0x00,0x00,0x10,0x80,0x1f,0xc0,0x10,0xa0,0x10,0xa0,0x10,0xa0,0x00,0x00, - /* ASCII 103 */ 0x00,0x00,0x0f,0x00,0x50,0x80,0x50,0x80,0x51,0x00,0x3f,0x80,0x00,0x80, - /* ASCII 104 */ 0x10,0x20,0x1f,0xe0,0x11,0x00,0x00,0x80,0x10,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 105 */ 0x00,0x00,0x10,0x80,0x10,0x80,0x1f,0xa0,0x10,0x00,0x10,0x00,0x00,0x00, - /* ASCII 106 */ 0x00,0x00,0x40,0x80,0x40,0x80,0x40,0xa0,0x3f,0x80,0x00,0x00,0x00,0x00, - /* ASCII 107 */ 0x10,0x20,0x1f,0xe0,0x02,0x00,0x16,0x80,0x19,0x80,0x10,0x80,0x00,0x00, - /* ASCII 108 */ 0x00,0x00,0x10,0x00,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x00,0x00,0x00, - /* ASCII 109 */ 0x10,0x80,0x1f,0x80,0x10,0x80,0x1f,0x00,0x10,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 110 */ 0x10,0x80,0x1f,0x80,0x11,0x00,0x00,0x80,0x10,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 111 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00, - /* ASCII 112 */ 0x40,0x80,0x7f,0x80,0x51,0x00,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00, - /* ASCII 113 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x51,0x00,0x7f,0x80,0x40,0x80, - /* ASCII 114 */ 0x00,0x00,0x10,0x80,0x1f,0x80,0x11,0x00,0x10,0x80,0x10,0x80,0x00,0x00, - /* ASCII 115 */ 0x00,0x00,0x19,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x0d,0x80,0x00,0x00, - /* ASCII 116 */ 0x00,0x00,0x00,0x80,0x0f,0xc0,0x10,0x80,0x10,0x80,0x10,0x80,0x08,0x00, - /* ASCII 117 */ 0x00,0x80,0x0f,0x80,0x10,0x00,0x10,0x00,0x08,0x80,0x1f,0x80,0x10,0x00, - /* ASCII 118 */ 0x00,0x80,0x03,0x80,0x0c,0x80,0x10,0x00,0x0c,0x80,0x03,0x80,0x00,0x80, - /* ASCII 119 */ 0x00,0x80,0x0f,0x80,0x10,0x80,0x0e,0x00,0x10,0x80,0x0f,0x80,0x00,0x80, - /* ASCII 120 */ 0x10,0x80,0x19,0x80,0x06,0x00,0x06,0x00,0x19,0x80,0x10,0x80,0x00,0x00, - /* ASCII 121 */ 0x00,0x80,0x41,0x80,0x46,0x80,0x78,0x00,0x4c,0x80,0x03,0x80,0x00,0x80, - /* ASCII 122 */ 0x00,0x00,0x19,0x80,0x14,0x80,0x12,0x80,0x11,0x80,0x18,0x80,0x00,0x00, - /* ASCII 123 */ 0x00,0x00,0x00,0x00,0x04,0x00,0x3b,0xc0,0x40,0x20,0x00,0x00,0x00,0x00, - /* ASCII 124 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 125 */ 0x00,0x00,0x00,0x00,0x40,0x20,0x3b,0xc0,0x04,0x00,0x00,0x00,0x00,0x00, - /* ASCII 126 */ 0x00,0x00,0x04,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x00,0x00}; - -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : LCD_DataLinesConfig -* Description : Configure data lines D0~D7 (P8.0~P8.7) in Input Floating mode -* for read from LCD or in Output Push-Pull mode for write on LCD -* Input : - Mode: specifies the configuration mode for data lines D0~D7 -* - Input: configure in Input Floating mode -* - Output: configure in Output Push-Pul mode -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DataLinesConfig(DataConfigMode_TypeDef Mode) -{ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; - if (Mode == Input) - { - /* Configure D0~D7 lines (P8.0 ->P8.7) as Input */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; - } - else - { - /* Configure D0~D7 lines in Output Push-Pull mode */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput ; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - } - GPIO_Init(GPIO8, &GPIO_InitStructure); -} - -/******************************************************************************* -* Function Name : LCD_DataLinesWrite -* Description : Write a value on D0~D7 (P8.0~P8.7) -* Input : - GPIOx: GPIO port to write on. It could be -* - PortVal: value to write -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DataLinesWrite(GPIO_TypeDef* GPIOx, u32 PortVal) -{ - GPIOx->DR[0x3FC] = PortVal; -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesConfig -* Description : Configure control lines E2, E1, RW, DI (P9.4~P9.7) in -* Output Push-Pull mode. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesConfig(void) -{ - /* Configure E2, E1, RW, DI lines (P9.4~P9.7) in Output Push-Pull mode */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; - GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput ; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - GPIO_Init(GPIO9, &GPIO_InitStructure); -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesWrite -* Description : Set or reset control lines E2, E1, RW, DI (P9.4~P9.7). -* Input : - GPIOx: where x can be 0,1 or 2 to select the GPIO peripheral. -* - CtrlPins: the Control line. This parameter can be: -* - CtrlPin_E2: Enabe clock signal for Slave -* - CtrlPin_E1: Enabe clock signal for Master -* - CtrlPin_RW: Read/Write control line -* - CtrlPin_DI: -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u32 CtrlPins, BitAction BitVal) -{ - /* Set or Reset the control line */ - if(BitVal == Bit_SET) - { - GPIOx->DR[CtrlPins <<2] = CtrlPins; - } - else - { - GPIOx->DR[CtrlPins <<2] = 0x00; - } -} - -/******************************************************************************* -* Function Name : LCD_CheckMasterStatus -* Description : Check whether master LCD is busy or not -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CheckMasterStatus(void) -{ - u8 MasterStatus = 0; - - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the master read sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - MasterStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - - /* Wait until BF is cleared */ - while ((MasterStatus & 0x80)) - { - vTaskDelay( 1 ); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - MasterStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - } -} - -/******************************************************************************* -* Function Name : LCD_CheckSlaveStatus -* Description : Check whether slave LCD is busy or not -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CheckSlaveStatus(void) -{ - u8 SlaveStatus = 0; - - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the slave read sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - SlaveStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - - /* Wait until BF is cleared */ - while ((SlaveStatus & 0x80)) - { - vTaskDelay( 1 ); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - SlaveStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - } -} - -/******************************************************************************* -* Function Name : LCD_SendMasterCmd -* Description : Send one byte command to master LCD. -* Input : - Cmd: the user expected command to send to master LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendMasterCmd(u8 Cmd) -{ - /* Check the master status */ - LCD_CheckMasterStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the master send command sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - /* Write master command */ - LCD_DataLinesWrite(GPIO8, (u32)Cmd); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_SendSlaveCmd -* Description : Send one byte command to slave LCD -* Input : - Cmd: the user expected command to send to slave LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendSlaveCmd(u8 Cmd) -{ - /* Check the slave status */ - LCD_CheckSlaveStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the slave send command sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - /* Write slave command */ - LCD_DataLinesWrite(GPIO8, (u32)Cmd); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_SendMasterData -* Description : Display one byte data to master LCD. -* Input : - Data: the user expected data to display on master LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendMasterData(u8 Data) -{ - /* Check the master status */ - LCD_CheckMasterStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the master send data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - /* Write data to the master */ - LCD_DataLinesWrite(GPIO8, (u32)Data); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_ReadMasterData -* Description : Read master byte data displayed on master LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -u32 LCD_ReadMasterData(void) -{ - u32 MasterData = 0; - - /* Check the master status */ - LCD_CheckMasterStatus(); - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the master read data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - /* Read data from the master */ - MasterData = (GPIO_Read(GPIO8)); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - /* Read the master returned data */ - return MasterData; -} - -/******************************************************************************* -* Function Name : LCD_SendSlaveData -* Description : Display one byte data to slave LCD. -* Input : - Data: the user expected data to display on slave LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendSlaveData(u8 Data) -{ - /* Check the slave status */ - LCD_CheckSlaveStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the slave send data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - /* Write data to the slave */ - LCD_DataLinesWrite(GPIO8, (u32)Data); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_ReadSlaveData -* Description : Read slave byte data displayed on slave LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -u32 LCD_ReadSlaveData(void) -{ - u32 SlaveData = 0; - - /* Check the slave status */ - LCD_CheckSlaveStatus(); - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the slave read data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - /* Read data from the slave */ - SlaveData = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - /* Read the slave returned data */ - return SlaveData; -} - -/******************************************************************************* -* Function Name : LCD_Init -* Description : Initialize master and slave LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Init(void) -{ - /* Enable GPIO Clock */ - - - /* Configure control lines signals as output mode */ - LCD_CtrlLinesConfig(); - - /* Master LCD Init */ - LCD_SendMasterCmd(SOFTWARE_RESET); - LCD_SendMasterCmd(DISPLAY_OFF); - LCD_SendMasterCmd(DYNAMIC_DRIVE); - LCD_SendMasterCmd(DUTY_CYCLE); - LCD_SendMasterCmd(CLOCKWISE_OUTPUT); - LCD_SendMasterCmd(READ_MODIFY_WRITE_OFF); - LCD_SendMasterCmd(START_COLUMN); /* Set master column address to 0 */ - LCD_SendMasterCmd(START_LINE); /* Set master display start line to 0 */ - LCD_SendMasterCmd(DISPLAY_ON ); - - /* Slave LCD Init */ - LCD_SendSlaveCmd(SOFTWARE_RESET); - LCD_SendSlaveCmd(DISPLAY_OFF); - LCD_SendSlaveCmd(DYNAMIC_DRIVE); - LCD_SendSlaveCmd(DUTY_CYCLE); - LCD_SendSlaveCmd(CLOCKWISE_OUTPUT); - LCD_SendSlaveCmd(READ_MODIFY_WRITE_OFF); - LCD_SendSlaveCmd(START_COLUMN ); /* Set slave column address to 0 */ - LCD_SendSlaveCmd(START_LINE); /* Set slave display start line to 0 */ - LCD_SendSlaveCmd(DISPLAY_ON); - - /* Clear LCD */ - LCD_Clear(); - /* Set current Page to 0 for Master and Slave LCDs */ - LCD_SetSlavePage(0); - LCD_SetMasterPage(0); -} - -/******************************************************************************* -* Function Name : LCD_SetSlavePage -* Description : Set the display page of slave LCD, the page range is 0 to 3, -* make sure the input will not exceed this range ,otherwise it -* will reach a undecided result. -* Input : - Page: specifies the expected display page of slave LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetSlavePage(u8 Page) -{ -static u8 ucLastPage = 255; - - /* Set Slave page */ - if( Page != ucLastPage ) - { - LCD_SendSlaveCmd(0xB8|Page); - ucLastPage = Page; - } -} - -/******************************************************************************* -* Function Name : LCD_SetMasterPage -* Description : Set the display page of master LCD, the page range is 0 to 3, -* make sure the input will not exceed this range ,otherwise it -* will reach a undecided result. -* Input : - Page: specifies the expected display page of master LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetMasterPage(u8 Page) -{ -static u8 ulLastPage = 255; - - /* Set Master page */ - if( Page != ulLastPage ) - { - LCD_SendMasterCmd(0xB8|Page); - ulLastPage = Page; - } -} - -/******************************************************************************* -* Function Name : SetAddress -* Description : Set the display column of slave LCD. Column range is 0 to 61. -* Input : - Address: specifies the expected display column of slave LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetSlaveColumn(u8 Address) -{ - /* Set Slave column address */ - LCD_SendSlaveCmd(Address&0x7F); -} - -/******************************************************************************* -* Function Name : LCD_SetMasterColumn -* Description : Set the display column of master LCD. Column range is 0 to 61. -* Input : - Address: specifies the expected display column of slave LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetMasterColumn(u8 Address) -{ - /* Set Master column address */ - LCD_SendMasterCmd(Address&0x7F); -} - -/******************************************************************************* -* Function Name : LCD_SetTextColor -* Description : Set the text color for LCD. -* Input : - TextColor: BlackText: character on black, bottom on white. -* WhiteText: character on white, bottom on black. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetTextColor(TextColorMode_TypeDef TextColor) -{ - if(TextColor) - { - /* Set White Text color */ - TextMode=WhiteText; - } - else - { - /* Set Black Text color */ - TextMode=BlackText; - } -} - -/******************************************************************************* -* Function Name : LCD_Clear -* Description : Clear the Master and Slave LCDs display. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Clear(void) -{ - u8 Page = 0, Column = 0; - - /* Clear master and slave LCDs page by page */ - for (Page=0; Page<4; Page++) - { - /* Set master and slave page by page */ - LCD_SetMasterPage(Page); - LCD_SetSlavePage(Page); - /* Set master and slave column address */ - LCD_SetMasterColumn(0); - LCD_SetSlaveColumn(0); - /* Send empty data to master and slave column address on the selected page */ - for (Column=0; Column<61; Column++) - { - LCD_SendSlaveData(0); - LCD_SendMasterData(0); - } - } -} - -/******************************************************************************* -* Function Name : LCD_ClearLine -* Description : Clear the selected line of the LCD. -* Input : - Line: the Line to clear. -* - Line1 (Page0&1): clear the first line -* - Line2 (Page2&3): clear the second line -* Output : None -* Return : None -*******************************************************************************/ -void LCD_ClearLine(u8 Line) -{ - u8 Page = 0, Column = 0; - - /* Clear the slected master and slave line */ - for (Page=Line; Page 121) - { - /* Return if column exceeded 121 */ - return; - } - if (X > 60) - { - /* To be displayed on slave LCD (Window = 1) */ - Window = 1; - /* Get the Slave relative start column */ -// ActualColumn = X%61; - ActualColumn = X - 61; - } - else - { - /* To be displayed on master LCD (Window = 0) */ - ActualColumn = X; - } - - /* Switch window, display the character upper part */ - if (Window) - { - /* Display it on slave LCD */ - LCD_SetSlavePage(Line); - LCD_SetSlaveColumn(ActualColumn); - LCD_SendSlaveData(Bmp[i]); - } - else - { - /* Display it on master LCD */ - LCD_SetMasterPage(Line); - LCD_SetMasterColumn(ActualColumn); - LCD_SendMasterData(Bmp[i]); - } - /* Switch window, diplay the character lower part */ - if (Window) - { - /* Display it on slave LCD */ - LCD_SetSlavePage(Line+1); - LCD_SetSlaveColumn(ActualColumn); - LCD_SendSlaveData(Bmp[i+1]); - } - else - { - /* Display it on master LCD */ - LCD_SetMasterPage(Line+1); - LCD_SetMasterColumn(ActualColumn); - LCD_SendMasterData(Bmp[i+1]); - } - /* Increment by 2 the character table index */ - i+=2; - } -} - -/******************************************************************************* -* Function Name : LCD_DisplayChar -* Description : Display one character (7dots large, 16dots high). -* Note: -* the LCD can only display two line character,so page 0 and 1 -* is to display the first line, page2 and page 3 is to display -* the second line. -* Input : - Line: the Line where to display the character. -* - Line1 (Page0&1): display character on the first line -* - Line2 (Page2&3): display character on the second line -* - Column: start column address. -* - Ascii: character ascii code. -* - CharMode: BlackText: character on black, bottom on white. -* WhiteText: character on white, bottom on black. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayChar(u8 Line, u8 Column, u8 Ascii, TextColorMode_TypeDef CharMode) -{ - u8 DotBuffer[14], i = 0; - - /* Display the character lower and upper 8bit parts (2*7columns) */ - for (i=0;i<14;i++) - { - /* Character displayed as white Text on black buttom */ - if(CharMode) - { - if( i & 0x01 ) - { - DotBuffer[i] = ~AsciiDotsTable[Ascii*14+i-1]; - } - else - { - DotBuffer[i] = ~AsciiDotsTable[Ascii*14+i+1]; - } - } - /* Character displayed as black Text on white buttom */ - else - { - if( ( u8 ) i & 0x01 ) - { - DotBuffer[i] = AsciiDotsTable[Ascii*14+i-1]; - } - else - { - DotBuffer[i] = AsciiDotsTable[Ascii*14+i+1]; - } - } - } - /* Display the asc code after conversion */ - LCD_DrawChar(Line, Column, 7, DotBuffer); -} - -/******************************************************************************* -* Function Name : LCD_HexToAsciiLow -* Description : This function is used to convert the low nibble of an -* unsigned byte (0-F hex) to ASCII. -* Input : - byte: byte to convert to ASCII. -* Output : None -* Return : ASCII value result of the conversion. -*******************************************************************************/ -char LCD_HexToAsciiLow(u8 byte) -{ - /* Keep lower nibble only */ - byte = byte & 0x0F; - /* If the ascii is a number */ - if (byte <= 0x09) - { - /* Add 0x30 to its ascii */ - return(byte + 0x30); - } - else - { - /* Add 0x37 to its ascii */ - return (byte + 0x37); - } -} - -/******************************************************************************* -* Function Name : LCD_HexToAsciiHigh -* Description : This function is used to convert the high nibble of an -* unsigned byte (0-F hex) to ASCII. -* Input : - byte: byte to convert to ASCII. -* Output : None -* Return : ASCII value result of the conversion. -*******************************************************************************/ -char LCD_HexToAsciiHigh(u8 byte) -{ - /* Keep upper nibble only */ - byte = byte & 0xF0; - byte = byte >> 4; - /* If the ascii is a number */ - if (byte <= 0x09) - { - /* Add 0x30 to display its ascii */ - return(byte + 0x30); - } - else - { - /* Add 0x37 to display its ascii */ - return (byte + 0x37); - } -} - -/******************************************************************************* -* Function Name : LCD_DisplayString -* Description : This function is used to display a 17char max string of -* characters on the LCD display on the selected line. -* Note: -* this function is the user interface to use the LCD driver. -* Input : - *ptr: pointer to string to display on LCD. -* - Line: the Line where to display the character. -* - Line1 (Page0&1): display character on the first line -* - Line2 (Page2&3): display character on the second line -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayString(u8 Line, u8 *ptr, TextColorMode_TypeDef CharMode) -{ - u8 RefColumn = 0, i = 0; - - /* Send the string character by character on lCD */ - while ((*ptr!=0)&(i<17)) - { - vTaskDelay( 1 ); - - /* Display one character on LCD */ - LCD_DisplayChar(Line, RefColumn, *ptr, CharMode); - - /* Increment the column position by 7 */ - RefColumn+=7; - /* Point on the next character */ - ptr++; - /* Increment the character counter */ - i++; - /* If we reach the maximum Line character */ - if(i==17) - { - LCD_DisplayChar(Line, RefColumn-1, 0x1f, CharMode); /* Add missed columns */ - } - } -} - -/******************************************************************************* -* Function Name : LCD_Printf -* Description : This function is used to display a string of characters -* on the LCD display. -* Note: -* this function is the user interface to use the LCD driver. -* Input : - *ptr: pointer to string to display on LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Printf(u8 *ptr, ...) -{ - u8 RefColumn = 0, RefPage = 0, i = 0, c1 = 0; - u16 var = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0; - u32 WordVar = 0; - - /* Store pointer on LCD_Printf second parameter (String) */ - u8 *var_ptr=(u8 *)(&ptr+1); - - /* Send String */ - while (*ptr != 0) - { - c1 = *ptr; - /* Limited to AsciiDotsTable code table */ - if(c1 <= 128) - { - /* Carriage return */ - if ( *ptr == '\r') - { - ptr++; - RefColumn = 0; - } - /* Jump to Line2 */ - else if( *ptr == '\n') - { - /* Point on the string to display */ - ptr++; - /* Clear Line2 */ - LCD_ClearLine(Line2); - /* Point on first Line2 column */ - RefColumn = 0; - /* Increment RefPage by 2 */ - RefPage+=2; - } - /* Display value on the passed format */ - else if( *ptr == '%') - { - ptr++; - /* Display decimal value */ - if (*ptr == 'd') - { - ptr++; - /* Get the word value to display */ - WordVar = ((*var_ptr)|(*(var_ptr+1)<<8)|(*(var_ptr+2)<<16)); - c1=WordVar/10000; - c2=(WordVar%10000)/1000; - c3=(WordVar%1000)/100; - c4=(WordVar%100)/10; - c5=(WordVar%10); - /* Display the ten miles digit */ - if (c1!=0) - { - LCD_DisplayChar(RefPage, RefColumn, c1+0x30, TextMode); - RefColumn+=7; - } - /* Display the miles digit */ - if (!((c1==0)&(c2==0))) - { - LCD_DisplayChar(RefPage, RefColumn, c2+0x30, TextMode); - RefColumn+=7; - } - /* Display the hundred digit */ - if (!((c1==0)&(c2==0)&(c3==0))) - { - LCD_DisplayChar(RefPage, RefColumn, c3+0x30, TextMode); - RefColumn+=7; - } - /* Display the tens digit */ - if (!((c1==0)&(c2==0)&(c3==0)&(c4==0))) - { - LCD_DisplayChar(RefPage, RefColumn, c4+0x30, TextMode); - RefColumn+=7; - } - /* Display the rest */ - LCD_DisplayChar(RefPage, RefColumn, c5+0x30, TextMode); - RefColumn+=7; - } - /* Display 16bits Hex value */ - else if (*ptr == 'x') - { - ptr++; - /* Display 8bits MSB */ - var_ptr = var_ptr +1; - var = *var_ptr; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - /* Display 8bits LSB */ - var_ptr = var_ptr -1; - var = *var_ptr; - var_ptr = var_ptr +4; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - } - /* Display 32bits Hex value */ - else if (*ptr == 'w') - { - ptr++; - /* Display 16bits MSB */ - var_ptr = var_ptr +3; - var = *var_ptr; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - var_ptr = var_ptr -1; - var = *var_ptr; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - /* Display 16bits LSB */ - var_ptr = var_ptr -1; - var = *var_ptr; - var_ptr = var_ptr +4; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - var_ptr = var_ptr -5; - var = *var_ptr; - var_ptr = var_ptr +4; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - } - else - { - /* Display '%' character which is followed by (d, x or w) */ - ptr--; - c1 = *ptr; - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - ptr++; - i++; - if(i==17) - { - /* Add missed columns */ - LCD_DisplayChar(RefPage, RefColumn-1, 0x1f, TextMode); - RefColumn = 0; - RefPage+=2; - } - } - } - else - { - /* Display characters different from (\r, \n, %) */ - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - ptr++; - i++; - if(i==17) - { - /* Add missed columns */ - LCD_DisplayChar(RefPage, RefColumn-1, 0x1f, TextMode); - LCD_ClearLine(Line2); - RefColumn = 0; - RefPage+=2; - } - } - } - } - /* Display spaces if string doesn't reach the max LCD characters size */ - while(RefColumn<119) - { - /* Display Spaces */ - LCD_DisplayChar(RefPage, RefColumn, 0x20, TextMode); - RefColumn+=7; - /* Add missed columns */ - LCD_DisplayChar(RefPage, RefColumn, 0x1f, TextMode); - } -} - -/******************************************************************************* -* Function Name : LCD_DrawMasterGraphic -* Description : Draw a Graphic image on master LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawMasterGraphic(u8 *Bmp) -{ - u8 j = 0, k = 0, ActPage = 0; - - /* Draw graphic on master: 61 Column *4 Pages */ - while(j<244) - { - /* Draw on master page by page */ - LCD_SetMasterPage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetMasterColumn(k); - LCD_SendMasterData(*Bmp++); - j++; - } - ActPage++; - } -} - -/******************************************************************************* -* Function Name : LCD_DrawSlaveGraphic -* Description : Draw a Graphic image on slave LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawSlaveGraphic(u8 *Bmp) -{ - u8 j = 0, k = 0, ActPage = 0; - - /* Draw graphic on slave: 61 Column *4 Pages */ - while(j<244) - { - /* Draw on slave page by page */ - LCD_SetSlavePage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetSlaveColumn(k); - LCD_SendSlaveData(*Bmp++); - j++; - } - ActPage++; - } -} - -/******************************************************************************* -* Function Name : LCD_DrawGraphic -* Description : Draw a Graphic image on LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawGraphic(u8 *Bmp) -{ - u8 Pos = 0, ActPage = 0; - u16 j = 0, k = 0; - - /* Draw graphic on LCD: 122 Column *4 Pages */ - while(j<488) - { - if(!Pos) - { - /* Draw on master page by page */ - LCD_SetMasterPage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetMasterColumn(k); - LCD_SendMasterData(*Bmp++); - j++; - } - Pos=1; - } - else - { - /* Draw on slave page by page */ - LCD_SetSlavePage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetSlaveColumn(k); - LCD_SendSlaveData(*Bmp++); - j++; - } - ActPage++; - Pos=0; - } - } -} - -/******************************************************************************* -* Function Name : LCD_ScrollGraphic -* Description : Scroll a Graphic image on LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* - nCount: specifies the delay time length. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_ScrollGraphic(u8 *Bmp, u32 nCount) -{ - u8 Pos = 0, ActPage = 0; - u16 j = 0, k = 0; - u32 Counter = 0; - - /* Draw graphic on LCD: 122 Column *4 Pages */ - while(j<488) - { - if(!Pos) - { - /* Draw on master page by page */ - LCD_SetMasterPage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetMasterColumn(k); - LCD_SendMasterData(*Bmp++); - Counter = nCount; - /* Set a delay */ - for(; Counter != 0; Counter--); - j++; - } - Pos=1; - } - else - { - /* Draw on slave page by page */ - LCD_SetSlavePage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetSlaveColumn(k); - Counter = nCount; - /* Set a delay */ - for(; Counter != 0; Counter--); - LCD_SendSlaveData(*Bmp++); - j++; - } - ActPage++; - Pos=0; - } - } -} - -/******************************************************************************* -* Function Name : LCD_DrawPixel -* Description : Draw a Graphic image on slave LCD. -* Input : - XPos: the dot line number of the pixel. -* - 1->61 : displayed on master LCD -* - 62->122: displayed on slave LCD -* - YPos: column address of the pixel from 1->32. -* - Mode: Dot_On: Pixel turned on (black). -* Dot_Off: Pixel turned off (black). -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawPixel(u8 XPos, u8 YPos, DotMode_TypeDef Mode) -{ - u8 Page = 0, Position = 0; - u16 Mask = 0; - u32 MasterDataIn = 0, MasterDataOut = 0, SlaveDataIn = 0, SlaveDataOut = 0; - - /* Pixel page */ - Page = (XPos-1)/8; - /* Pixel column */ - Position = (YPos-1)/61; /* 0:Master, 1:Slave */ - /* Mask for the pixel */ - Mask= 1<<((XPos-1)%8); - /* If Position=0 draw pixel on master LCD */ - if(!Position) - { - LCD_SetMasterPage(Page); - LCD_SetMasterColumn(YPos-1); - MasterDataIn = LCD_ReadMasterData(); - MasterDataIn = LCD_ReadMasterData(); - LCD_SetMasterColumn(YPos-1); - if(Mode==Dot_On) - { - MasterDataOut = MasterDataIn | Mask; - } - else - { - MasterDataOut = MasterDataIn & (~Mask); - } - LCD_SendMasterData(MasterDataOut); - } - /* If Position=1 draw pixel on slave LCD */ - else - { - LCD_SetSlavePage(Page); - LCD_SetSlaveColumn(YPos-62); - SlaveDataIn = LCD_ReadSlaveData(); - SlaveDataIn = LCD_ReadSlaveData(); - LCD_SetSlaveColumn(YPos-62); - if(Mode==Dot_On) - { - SlaveDataOut = SlaveDataIn | Mask; - } - else - { - SlaveDataOut = SlaveDataIn & (~Mask); - } - LCD_SendSlaveData(SlaveDataOut); - } -} - -/******************************************************************************* -* Function Name : LCD_DrawLine -* Description : Draw a line on master and slave LCDs. -* Input : - XPos1: the dot line number of the source point . -* - XPos2: the dot line number of the destination point . -* - YPos1: the dot column number of the source point. -* - YPos2: the dot column number of the destination point. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawLine(u8 XPos1, u8 YPos1, u8 XPos2, u8 YPos2) -{ - u8 XPos = 0, YPos = 0; - - /* Use XPos1, YPos1, XPos2 and YPos2 */ - if((XPos2>=XPos1)&(YPos2>=YPos1)) - { - for(XPos=XPos1; XPos<=XPos2; XPos++) - { - for(YPos=YPos1; YPos<=YPos2; YPos++) - { - LCD_DrawPixel(XPos, YPos, Dot_On); - } - } - } - else if((XPos2=YPos1)) - { - for(XPos=XPos2; XPos<=XPos1; XPos++) - { - for(YPos=YPos1; YPos<=YPos2; YPos++) - { - LCD_DrawPixel(XPos, YPos, Dot_On); - } - } - } - else if((XPos2>=XPos1)&(YPos2 - * - */ - -/* lwIP includes. */ -#include "lwip/debug.h" -#include "lwip/def.h" -#include "lwip/sys.h" -#include "lwip/mem.h" - -#include - -/* Message queue constants. */ -#define archMESG_QUEUE_LENGTH ( 6 ) -#define archPOST_BLOCK_TIME_MS ( ( unsigned long ) 10000 ) - -struct timeoutlist -{ - struct sys_timeouts timeouts; - TaskHandle_t pid; -}; - -/* This is the number of threads that can be started with sys_thread_new() */ -#define SYS_THREAD_MAX 4 - -static struct timeoutlist timeoutlist[SYS_THREAD_MAX]; -static u16_t nextthread = 0; -int intlevel = 0; - -static sys_arch_state_t s_sys_arch_state; - -/*-----------------------------------------------------------------------------------*/ -// Creates an empty mailbox. -sys_mbox_t -sys_mbox_new(void) -{ - QueueHandle_t mbox; - - mbox = xQueueCreate( archMESG_QUEUE_LENGTH, sizeof( void * ) ); - - return mbox; -} - -/*-----------------------------------------------------------------------------------*/ -/* - Deallocates a mailbox. If there are messages still present in the - mailbox when the mailbox is deallocated, it is an indication of a - programming error in lwIP and the developer should be notified. -*/ -void -sys_mbox_free(sys_mbox_t mbox) -{ - if( uxQueueMessagesWaiting( mbox ) ) - { - /* Line for breakpoint. Should never break here! */ -// __asm volatile ( "NOP" ); - } - - vQueueDelete( mbox ); -} - -/*-----------------------------------------------------------------------------------*/ -// Posts the "msg" to the mailbox. -void -sys_mbox_post(sys_mbox_t mbox, void *data) -{ - xQueueSend( mbox, &data, ( TickType_t ) ( archPOST_BLOCK_TIME_MS / portTICK_PERIOD_MS ) ); -} - - -/*-----------------------------------------------------------------------------------*/ -/* - Blocks the thread until a message arrives in the mailbox, but does - not block the thread longer than "timeout" milliseconds (similar to - the sys_arch_sem_wait() function). The "msg" argument is a result - parameter that is set by the function (i.e., by doing "*msg = - ptr"). The "msg" parameter maybe NULL to indicate that the message - should be dropped. - - The return values are the same as for the sys_arch_sem_wait() function: - Number of milliseconds spent waiting or SYS_ARCH_TIMEOUT if there was a - timeout. - - Note that a function with a similar name, sys_mbox_fetch(), is - implemented by lwIP. -*/ -u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout) -{ -void *dummyptr; -TickType_t StartTime, EndTime, Elapsed; - - StartTime = xTaskGetTickCount(); - - if( msg == NULL ) - { - msg = &dummyptr; - } - - if( timeout != 0 ) - { - if(pdTRUE == xQueueReceive( mbox, &(*msg), timeout ) ) - { - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - return ( Elapsed ); - } - else // timed out blocking for message - { - *msg = NULL; - return SYS_ARCH_TIMEOUT; - } - } - else // block forever for a message. - { - while( pdTRUE != xQueueReceive( mbox, &(*msg), 10000 ) ) // time is arbitrary - { - ; - } - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - return ( Elapsed ); // return time blocked TBD test - } -} - -/*-----------------------------------------------------------------------------------*/ -// Creates and returns a new semaphore. The "count" argument specifies -// the initial state of the semaphore. TBD finish and test -sys_sem_t -sys_sem_new(u8_t count) -{ - SemaphoreHandle_t xSemaphore; - - portENTER_CRITICAL(); - vSemaphoreCreateBinary( xSemaphore ); - if(count == 0) // Means it can't be taken - { - xSemaphoreTake(xSemaphore,1); - } - portEXIT_CRITICAL(); - - if( xSemaphore == NULL ) - { - return NULL; // TBD need assert - } - else - { - return xSemaphore; - } -} - -/*-----------------------------------------------------------------------------------*/ -/* - Blocks the thread while waiting for the semaphore to be - signaled. If the "timeout" argument is non-zero, the thread should - only be blocked for the specified time (measured in - milliseconds). - - If the timeout argument is non-zero, the return value is the number of - milliseconds spent waiting for the semaphore to be signaled. If the - semaphore wasn't signaled within the specified time, the return value is - SYS_ARCH_TIMEOUT. If the thread didn't have to wait for the semaphore - (i.e., it was already signaled), the function may return zero. - - Notice that lwIP implements a function with a similar name, - sys_sem_wait(), that uses the sys_arch_sem_wait() function. -*/ -u32_t -sys_arch_sem_wait(sys_sem_t sem, u32_t timeout) -{ -TickType_t StartTime, EndTime, Elapsed; - - StartTime = xTaskGetTickCount(); - - if( timeout != 0) - { - if( xSemaphoreTake( sem, timeout ) == pdTRUE ) - { - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - return (Elapsed); // return time blocked TBD test - } - else - { - return SYS_ARCH_TIMEOUT; - } - } - else // must block without a timeout - { - while( xSemaphoreTake( sem, 10000 ) != pdTRUE ) - { - ; - } - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - - return ( Elapsed ); // return time blocked - - } -} - -/*-----------------------------------------------------------------------------------*/ -// Signals a semaphore -void -sys_sem_signal(sys_sem_t sem) -{ - xSemaphoreGive( sem ); -} - -/*-----------------------------------------------------------------------------------*/ -// Deallocates a semaphore -void -sys_sem_free(sys_sem_t sem) -{ - vQueueDelete( sem ); -} - -/*-----------------------------------------------------------------------------------*/ -// Initialize sys arch -void -sys_init(void) -{ - - int i; - - // Initialize the the per-thread sys_timeouts structures - // make sure there are no valid pids in the list - for(i = 0; i < SYS_THREAD_MAX; i++) - { - timeoutlist[i].pid = 0; - } - - // keep track of how many threads have been created - nextthread = 0; - - s_sys_arch_state.nTaskCount = 0; - sys_set_default_state(); -} - -/*-----------------------------------------------------------------------------------*/ -/* - Returns a pointer to the per-thread sys_timeouts structure. In lwIP, - each thread has a list of timeouts which is represented as a linked - list of sys_timeout structures. The sys_timeouts structure holds a - pointer to a linked list of timeouts. This function is called by - the lwIP timeout scheduler and must not return a NULL value. - - In a single threaded sys_arch implementation, this function will - simply return a pointer to a global sys_timeouts variable stored in - the sys_arch module. -*/ -struct sys_timeouts * -sys_arch_timeouts(void) -{ -int i; -TaskHandle_t pid; -struct timeoutlist *tl; - - pid = xTaskGetCurrentTaskHandle( ); - - for(i = 0; i < nextthread; i++) - { - tl = &timeoutlist[i]; - if(tl->pid == pid) - { - return &(tl->timeouts); - } - } - - // Error - return NULL; -} - -/*-----------------------------------------------------------------------------------*/ -/*-----------------------------------------------------------------------------------*/ -// TBD -/*-----------------------------------------------------------------------------------*/ -/* - Starts a new thread with priority "prio" that will begin its execution in the - function "thread()". The "arg" argument will be passed as an argument to the - thread() function. The id of the new thread is returned. Both the id and - the priority are system dependent. -*/ -sys_thread_t sys_thread_new(void (* thread)(void *arg), void *arg, int prio) -{ -TaskHandle_t CreatedTask; -int result; - - result = xTaskCreate(thread, s_sys_arch_state.cTaskName, s_sys_arch_state.nStackDepth, arg, prio, &CreatedTask ); - - // For each task created, store the task handle (pid) in the timers array. - // This scheme doesn't allow for threads to be deleted - timeoutlist[nextthread++].pid = CreatedTask; - - if(result == pdPASS) - { - ++s_sys_arch_state.nTaskCount; - - return CreatedTask; - } - else - { - return NULL; - } -} - -/* - This optional function does a "fast" critical region protection and returns - the previous protection level. This function is only called during very short - critical regions. An embedded system which supports ISR-based drivers might - want to implement this function by disabling interrupts. Task-based systems - might want to implement this by using a mutex or disabling tasking. This - function should support recursive calls from the same task or interrupt. In - other words, sys_arch_protect() could be called while already protected. In - that case the return value indicates that it is already protected. - - sys_arch_protect() is only required if your port is supporting an operating - system. -*/ -sys_prot_t sys_arch_protect(void) -{ - vPortEnterCritical(); - return 1; -} - -/* - This optional function does a "fast" set of critical region protection to the - value specified by pval. See the documentation for sys_arch_protect() for - more information. This function is only required if your port is supporting - an operating system. -*/ -void sys_arch_unprotect(sys_prot_t pval) -{ - ( void ) pval; - vPortExitCritical(); -} - -void sys_set_default_state() -{ - s_sys_arch_state.nStackDepth = configMINIMAL_STACK_SIZE; - sprintf(s_sys_arch_state.cTaskName, "thread%d", s_sys_arch_state.nTaskCount); -} - -void sys_set_state(signed char *pTaskName, unsigned short nStackSize) -{ - s_sys_arch_state.nStackDepth = nStackSize; - sprintf(s_sys_arch_state.cTaskName, "%s", pTaskName); -} diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h deleted file mode 100644 index 1e401b04c..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Author: Stefano Oliveri - * - */ -#ifndef __CC_H__ -#define __CC_H__ - -#include "cpu.h" - -//#define LWIP_PROVIDE_ERRNO 1 -#include "lwip_errno.h" - -// Typedefs for the types used by lwip - -typedef unsigned char u8_t; -typedef signed char s8_t; -typedef unsigned short u16_t; -typedef signed short s16_t; -typedef unsigned long u32_t; -typedef signed long s32_t; -typedef u32_t mem_ptr_t; -typedef int sys_prot_t; - -// Compiler hints for packing lwip's structures - -#define PACK_STRUCT_BEGIN -//#define PACK_STRUCT_BEGIN _Pragma("pack(2)") -#define PACK_STRUCT_STRUCT -#define PACK_STRUCT_END -//#define PACK_STRUCT_END _Pragma("pack()") -#define PACK_STRUCT_FIELD(x) x - -// Platform specific diagnostic output - -// non-fatal, print a message. -#define LWIP_PLATFORM_DIAG(x) -// fatal, print message and abandon execution. -#define LWIP_PLATFORM_ASSERT(x) - -// "lightweight" synchronization mechanisms - -// declare a protection state variable. -#define SYS_ARCH_DECL_PROTECT(x) -// enter protection mode. -#define SYS_ARCH_PROTECT(x) -// leave protection mode. -#define SYS_ARCH_UNPROTECT(x) - - -#endif /* __CC_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h deleted file mode 100644 index 2af31a864..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __CPU_H__ -#define __CPU_H__ - -#define BYTE_ORDER LITTLE_ENDIAN - -#endif /* __CPU_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h deleted file mode 100644 index bae240779..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h +++ /dev/null @@ -1,153 +0,0 @@ -#ifndef __LWIP_ERRNO_H_ -#define __LWIP_ERRNO_H_ - -#define EPERM 1 /* Operation not permitted */ -#define ENOENT 2 /* No such file or directory */ -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* I/O error */ -#define ENXIO 6 /* No such device or address */ -#define E2BIG 7 /* Arg list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file number */ -#define ECHILD 10 /* No child processes */ -#define EAGAIN 11 /* Try again */ -#define ENOMEM 12 /* Out of memory */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device or resource busy */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* No such device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* File table overflow */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Not a typewriter */ -#define ETXTBSY 26 /* Text file busy */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ -//#define EDOM 33 /* Math argument out of domain of func */ -//#define ERANGE 34 /* Math result not representable */ -#define EDEADLK 35 /* Resource deadlock would occur */ -#define ENAMETOOLONG 36 /* File name too long */ -#define ENOLCK 37 /* No record locks available */ -#define ENOSYS 38 /* Function not implemented */ -#define ENOTEMPTY 39 /* Directory not empty */ -#define ELOOP 40 /* Too many symbolic links encountered */ -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#define ENOMSG 42 /* No message of desired type */ -#define EIDRM 43 /* Identifier removed */ -#define ECHRNG 44 /* Channel number out of range */ -#define EL2NSYNC 45 /* Level 2 not synchronized */ -#define EL3HLT 46 /* Level 3 halted */ -#define EL3RST 47 /* Level 3 reset */ -#define ELNRNG 48 /* Link number out of range */ -#define EUNATCH 49 /* Protocol driver not attached */ -#define ENOCSI 50 /* No CSI structure available */ -#define EL2HLT 51 /* Level 2 halted */ -#define EBADE 52 /* Invalid exchange */ -#define EBADR 53 /* Invalid request descriptor */ -#define EXFULL 54 /* Exchange full */ -#define ENOANO 55 /* No anode */ -#define EBADRQC 56 /* Invalid request code */ -#define EBADSLT 57 /* Invalid slot */ - -#define EDEADLOCK EDEADLK - -#define EBFONT 59 /* Bad font file format */ -#define ENOSTR 60 /* Device not a stream */ -#define ENODATA 61 /* No data available */ -#define ETIME 62 /* Timer expired */ -#define ENOSR 63 /* Out of streams resources */ -#define ENONET 64 /* Machine is not on the network */ -#define ENOPKG 65 /* Package not installed */ -#define EREMOTE 66 /* Object is remote */ -#define ENOLINK 67 /* Link has been severed */ -#define EADV 68 /* Advertise error */ -#define ESRMNT 69 /* Srmount error */ -#define ECOMM 70 /* Communication error on send */ -#define EPROTO 71 /* Protocol error */ -#define EMULTIHOP 72 /* Multihop attempted */ -#define EDOTDOT 73 /* RFS specific error */ -#define EBADMSG 74 /* Not a data message */ -#define EOVERFLOW 75 /* Value too large for defined data type */ -#define ENOTUNIQ 76 /* Name not unique on network */ -#define EBADFD 77 /* File descriptor in bad state */ -#define EREMCHG 78 /* Remote address changed */ -#define ELIBACC 79 /* Can not access a needed shared library */ -#define ELIBBAD 80 /* Accessing a corrupted shared library */ -#define ELIBSCN 81 /* .lib section in a.out corrupted */ -#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ -#define ELIBEXEC 83 /* Cannot exec a shared library directly */ -// #define EILSEQ 84 /* Illegal byte sequence */ -#define ERESTART 85 /* Interrupted system call should be restarted */ -#define ESTRPIPE 86 /* Streams pipe error */ -#define EUSERS 87 /* Too many users */ -#define ENOTSOCK 88 /* Socket operation on non-socket */ -#define EDESTADDRREQ 89 /* Destination address required */ -#define EMSGSIZE 90 /* Message too long */ -#define EPROTOTYPE 91 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 92 /* Protocol not available */ -#define EPROTONOSUPPORT 93 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ -#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ -#define EPFNOSUPPORT 96 /* Protocol family not supported */ -#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ -#define EADDRINUSE 98 /* Address already in use */ -#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ -#define ENETDOWN 100 /* Network is down */ -#define ENETUNREACH 101 /* Network is unreachable */ -#define ENETRESET 102 /* Network dropped connection because of reset */ -#define ECONNABORTED 103 /* Software caused connection abort */ -#define ECONNRESET 104 /* Connection reset by peer */ -#define ENOBUFS 105 /* No buffer space available */ -#define EISCONN 106 /* Transport endpoint is already connected */ -#define ENOTCONN 107 /* Transport endpoint is not connected */ -#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ -#define ETOOMANYREFS 109 /* Too many references: cannot splice */ -#define ETIMEDOUT 110 /* Connection timed out */ -#define ECONNREFUSED 111 /* Connection refused */ -#define EHOSTDOWN 112 /* Host is down */ -#define EHOSTUNREACH 113 /* No route to host */ -#define EALREADY 114 /* Operation already in progress */ -#define EINPROGRESS 115 /* Operation now in progress */ -#define ESTALE 116 /* Stale NFS file handle */ -#define EUCLEAN 117 /* Structure needs cleaning */ -#define ENOTNAM 118 /* Not a XENIX named type file */ -#define ENAVAIL 119 /* No XENIX semaphores available */ -#define EISNAM 120 /* Is a named type file */ -#define EREMOTEIO 121 /* Remote I/O error */ -#define EDQUOT 122 /* Quota exceeded */ - -#define ENOMEDIUM 123 /* No medium found */ -#define EMEDIUMTYPE 124 /* Wrong medium type */ - - -#define ENSROK 0 /* DNS server returned answer with no data */ -#define ENSRNODATA 160 /* DNS server returned answer with no data */ -#define ENSRFORMERR 161 /* DNS server claims query was misformatted */ -#define ENSRSERVFAIL 162 /* DNS server returned general failure */ -#define ENSRNOTFOUND 163 /* Domain name not found */ -#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */ -#define ENSRREFUSED 165 /* DNS server refused query */ -#define ENSRBADQUERY 166 /* Misformatted DNS query */ -#define ENSRBADNAME 167 /* Misformatted domain name */ -#define ENSRBADFAMILY 168 /* Unsupported address family */ -#define ENSRBADRESP 169 /* Misformatted DNS reply */ -#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */ -#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */ -#define ENSROF 172 /* End of file */ -#define ENSRFILE 173 /* Error reading file */ -#define ENSRNOMEM 174 /* Out of memory */ -#define ENSRDESTRUCTION 175 /* Application terminated lookup */ -#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */ -#define ENSRCNAMELOOP 177 /* Domain name is too long */ - -#endif // __LWIP_ERRNO_H_ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h deleted file mode 100644 index 68afdb56f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __PERF_H__ -#define __PERF_H__ - -#define PERF_START /* null definition */ -#define PERF_STOP(x) /* null definition */ - -#endif /* __PERF_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h deleted file mode 100644 index 890ac7605..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __SYS_RTXC_H__ -#define __SYS_RTXC_H__ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -#define SYS_MBOX_NULL (QueueHandle_t)0 -#define SYS_SEM_NULL (SemaphoreHandle_t)0 -#define SYS_DEFAULT_THREAD_STACK_DEPTH configMINIMAL_STACK_SIZE - -typedef SemaphoreHandle_t sys_sem_t; -typedef QueueHandle_t sys_mbox_t; -typedef TaskHandle_t sys_thread_t; - -typedef struct _sys_arch_state_t -{ - // Task creation data. - char cTaskName[configMAX_TASK_NAME_LEN]; - unsigned short nStackDepth; - unsigned short nTaskCount; -} sys_arch_state_t; - -//extern sys_arch_state_t s_sys_arch_state; - -void sys_set_default_state(); -void sys_set_state(signed char *pTaskName, unsigned short nStackSize); - -#endif /* __SYS_RTXC_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h deleted file mode 100644 index 409950dc2..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef BASIC_WEB_SERVER_H -#define BASIC_WEB_SERVER_H - -#include <91x_type.h> - -/*------------------------------------------------------------------------------*/ -/* MACROS */ -/*------------------------------------------------------------------------------*/ -#define basicwebWEBSERVER_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The port on which we listen. */ -#define webHTTP_PORT ( 80 ) - -/* Delay on close error. */ -#define webSHORT_DELAY ( 10 / portTICK_PERIOD_MS ) - -/* The IP address being used. */ -#define emacIPADDR0 172 -#define emacIPADDR1 25 -#define emacIPADDR2 218 -#define emacIPADDR3 17 - -/* The gateway address being used. */ -#define emacGATEWAY_ADDR0 10 -#define emacGATEWAY_ADDR1 52 -#define emacGATEWAY_ADDR2 156 -#define emacGATEWAY_ADDR3 254 - -/* The network mask being used. */ -#define emacNET_MASK0 255 -#define emacNET_MASK1 255 -#define emacNET_MASK2 255 -#define emacNET_MASK3 0 - -#define STATIC_IP 1 -#define DHCP_IP 2 - -#define lwipBASIC_SERVER_STACK_SIZE 250 - -/*------------------------------------------------------------------------------*/ -/* PROTOTYPES */ -/*------------------------------------------------------------------------------*/ -/* The function that implements the WEB server task. */ -void vBasicWEBServer( void *pvParameters ); - -/* Initialisation required by lwIP. */ -void vlwIPInit( void ); - -void PrintIPOnLCD(unsigned int ipAddr); - -void ToDoAfterGettingIP(bool dhcpStaticFlag); - -void InitializeStaticIP(void); - -void DelayForDHCPToCome(void); - -#endif - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h deleted file mode 100644 index dc848a12f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __FS_H__ -#define __FS_H__ - -struct fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int fs_open(char *name, struct fs_file *file); - -#endif /* __FS_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h deleted file mode 100644 index a8cbc84a5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __FSDATA_H__ -#define __FSDATA_H__ - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const unsigned char *name; - const unsigned char *data; - const int len; -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - unsigned char *name; - unsigned char *data; - int len; -}; - -#endif /* __FSDATA_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h deleted file mode 100644 index 60f74a9ab..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -void httpd_init(void); - -#endif /* __HTTPD_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h deleted file mode 100644 index 6fb319d25..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#define LWIP_NOASSERT 1 // To suppress some errors for now (no debug output) -#define SYS_LIGHTWEIGHT_PROT 1 - -#define TCPIP_THREAD_PRIO 3 - -#define ETH_PAD_SIZE 2 - -/* ---------- Memory options ---------- */ -/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which - lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 - byte alignment -> define MEM_ALIGNMENT to 2. */ -#define MEM_ALIGNMENT 4 - -/* MEM_SIZE: the size of the heap memory. If the application will send -a lot of data that needs to be copied, this should be set high. */ -#define MEM_SIZE 8000 - -/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application - sends a lot of data out of ROM (or other static memory), this - should be set high. */ -#define MEMP_NUM_PBUF 40 -/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - per active UDP "connection". */ -#define MEMP_NUM_UDP_PCB 4 -/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP - connections. */ -#define MEMP_NUM_TCP_PCB 10 -/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP - connections. */ -#define MEMP_NUM_TCP_PCB_LISTEN 8 -/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP - segments. */ -#define MEMP_NUM_TCP_SEG 8 -/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active - timeouts. */ -#define MEMP_NUM_SYS_TIMEOUT 3 - - -/* The following four are used only with the sequential API and can be - set to 0 if the application only will use the raw API. */ -/* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#define MEMP_NUM_NETBUF 4 -/* MEMP_NUM_NETCONN: the number of struct netconns. */ -#define MEMP_NUM_NETCONN 4 -/* MEMP_NUM_APIMSG: the number of struct api_msg, used for - communication between the TCP/IP stack and the sequential - programs. */ -#define MEMP_NUM_API_MSG 8 -/* MEMP_NUM_TCPIPMSG: the number of struct tcpip_msg, which is used - for sequential API communication and incoming packets. Used in - src/api/tcpip.c. */ -#define MEMP_NUM_TCPIP_MSG 8 - -/* These two control is reclaimer functions should be compiled - in. Should always be turned on (1). */ -#define MEM_RECLAIM 1 -#define MEMP_RECLAIM 1 - -/* ---------- Pbuf options ---------- */ -/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ -#define PBUF_POOL_SIZE 8 - -/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ -#define PBUF_POOL_BUFSIZE 1500 - -/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a - link level header. */ -#define PBUF_LINK_HLEN 16 - -/* ---------- TCP options ---------- */ -#define LWIP_TCP 1 -#define TCP_TTL 255 - -/* Controls if TCP should queue segments that arrive out of - order. Define to 0 if your device is low on memory. */ -#define TCP_QUEUE_OOSEQ 1 - -/* TCP Maximum segment size. */ -#define TCP_MSS 1500 - -/* TCP sender buffer space (bytes). */ -#define TCP_SND_BUF 1500 - -/* TCP sender buffer space (pbufs). This must be at least = 2 * - TCP_SND_BUF/TCP_MSS for things to work. */ -#define TCP_SND_QUEUELEN 6 * TCP_SND_BUF/TCP_MSS - -/* TCP receive window. */ -#define TCP_WND 1500 - -/* Maximum number of retransmissions of data segments. */ -#define TCP_MAXRTX 12 - -/* Maximum number of retransmissions of SYN segments. */ -#define TCP_SYNMAXRTX 4 - -/* ---------- ARP options ---------- */ -#define ARP_TABLE_SIZE 10 -#define ARP_QUEUEING 1 - -/* ---------- IP options ---------- */ -/* Define IP_FORWARD to 1 if you wish to have the ability to forward - IP packets across network interfaces. If you are going to run lwIP - on a device with only one network interface, define this to 0. */ -#define IP_FORWARD 1 - -/* If defined to 1, IP options are allowed (but not parsed). If - defined to 0, all packets with IP options are dropped. */ -#define IP_OPTIONS 1 - -/** IP reassembly and segmentation. Even if they both deal with IP - * fragments, note that these are orthogonal, one dealing with incoming - * packets, the other with outgoing packets - */ - -/** Reassemble incoming fragmented IP packets */ -#define IP_REASSEMBLY 0 - -/** Fragment outgoing IP packets if their size exceeds MTU */ -#define IP_FRAG 1 - -/* IP reassemly default age in seconds */ -#define IP_REASS_MAXAGE 30 - - -/* ---------- ICMP options ---------- */ -#define ICMP_TTL 255 - - -/* ---------- DHCP options ---------- */ -/* Define LWIP_DHCP to 1 if you want DHCP configuration of - interfaces. DHCP is not implemented in lwIP 0.5.1, however, so - turning this on does currently not work. */ -#define LWIP_DHCP 0 - -/* 1 if you want to do an ARP check on the offered address - (recommended). */ -#define DHCP_DOES_ARP_CHECK 1 - -/* ---------- UDP options ---------- */ -#define LWIP_UDP 1 -#define UDP_TTL 255 - - -/* ---------- Statistics options ---------- */ -#define STATS - -#ifdef STATS -#define LINK_STATS 1 -#define IP_STATS 1 -#define ICMP_STATS 1 -#define UDP_STATS 1 -#define TCP_STATS 1 -#define MEM_STATS 1 -#define MEMP_STATS 1 -#define PBUF_STATS 1 -#define SYS_STATS 1 -#endif /* STATS */ - -#endif /* __LWIPOPTS_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h deleted file mode 100644 index 48b999629..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h +++ /dev/null @@ -1,722 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_OPT_H__ -#define __LWIP_OPT_H__ - -/* Include user defined options first */ -#include "lwipopts.h" -#include "lwip/debug.h" - -/* Define default values for unconfigured parameters. */ - -/* Platform specific locking */ - -/* - * enable SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#ifndef SYS_LIGHTWEIGHT_PROT -#define SYS_LIGHTWEIGHT_PROT 0 -#endif - -#ifndef NO_SYS -#define NO_SYS 0 -#endif -/* ---------- Memory options ---------- */ -#ifndef MEM_LIBC_MALLOC -#define MEM_LIBC_MALLOC 0 -#endif - -/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which - lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 - byte alignment -> define MEM_ALIGNMENT to 2. */ - -#ifndef MEM_ALIGNMENT -#define MEM_ALIGNMENT 1 -#endif - -/* MEM_SIZE: the size of the heap memory. If the application will send -a lot of data that needs to be copied, this should be set high. */ -#ifndef MEM_SIZE -#define MEM_SIZE 1600 -#endif - -#ifndef MEMP_SANITY_CHECK -#define MEMP_SANITY_CHECK 0 -#endif - -/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application - sends a lot of data out of ROM (or other static memory), this - should be set high. */ -#ifndef MEMP_NUM_PBUF -#define MEMP_NUM_PBUF 16 -#endif - -/* Number of raw connection PCBs */ -#ifndef MEMP_NUM_RAW_PCB -#define MEMP_NUM_RAW_PCB 4 -#endif - -/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - per active UDP "connection". */ -#ifndef MEMP_NUM_UDP_PCB -#define MEMP_NUM_UDP_PCB 4 -#endif -/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP - connections. */ -#ifndef MEMP_NUM_TCP_PCB -#define MEMP_NUM_TCP_PCB 5 -#endif -/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP - connections. */ -#ifndef MEMP_NUM_TCP_PCB_LISTEN -#define MEMP_NUM_TCP_PCB_LISTEN 8 -#endif -/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP - segments. */ -#ifndef MEMP_NUM_TCP_SEG -#define MEMP_NUM_TCP_SEG 16 -#endif -/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active - timeouts. */ -#ifndef MEMP_NUM_SYS_TIMEOUT -#define MEMP_NUM_SYS_TIMEOUT 3 -#endif - -/* The following four are used only with the sequential API and can be - set to 0 if the application only will use the raw API. */ -/* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#ifndef MEMP_NUM_NETBUF -#define MEMP_NUM_NETBUF 2 -#endif -/* MEMP_NUM_NETCONN: the number of struct netconns. */ -#ifndef MEMP_NUM_NETCONN -#define MEMP_NUM_NETCONN 4 -#endif -/* MEMP_NUM_APIMSG: the number of struct api_msg, used for - communication between the TCP/IP stack and the sequential - programs. */ -#ifndef MEMP_NUM_API_MSG -#define MEMP_NUM_API_MSG 8 -#endif -/* MEMP_NUM_TCPIPMSG: the number of struct tcpip_msg, which is used - for sequential API communication and incoming packets. Used in - src/api/tcpip.c. */ -#ifndef MEMP_NUM_TCPIP_MSG -#define MEMP_NUM_TCPIP_MSG 8 -#endif - -/* ---------- Pbuf options ---------- */ -/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ - -#ifndef PBUF_POOL_SIZE -#define PBUF_POOL_SIZE 16 -#endif - -/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ - -#ifndef PBUF_POOL_BUFSIZE -#define PBUF_POOL_BUFSIZE 128 -#endif - -/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a - link level header. Defaults to 14 for Ethernet. */ - -#ifndef PBUF_LINK_HLEN -#define PBUF_LINK_HLEN 14 -#endif - - - -/* ---------- ARP options ---------- */ - -/** Number of active hardware address, IP address pairs cached */ -#ifndef ARP_TABLE_SIZE -#define ARP_TABLE_SIZE 10 -#endif - -/** - * If enabled, outgoing packets are queued during hardware address - * resolution. - * - * This feature has not stabilized yet. Single-packet queueing is - * believed to be stable, multi-packet queueing is believed to - * clash with the TCP segment queueing. - * - * As multi-packet-queueing is currently disabled, enabling this - * _should_ work, but we need your testing feedback on lwip-users. - * - */ -#ifndef ARP_QUEUEING -#define ARP_QUEUEING 1 -#endif - -/* This option is deprecated */ -#ifdef ETHARP_QUEUE_FIRST -#error ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h. -#endif - -/* This option is removed to comply with the ARP standard */ -#ifdef ETHARP_ALWAYS_INSERT -#error ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h. -#endif - -/* ---------- IP options ---------- */ -/* Define IP_FORWARD to 1 if you wish to have the ability to forward - IP packets across network interfaces. If you are going to run lwIP - on a device with only one network interface, define this to 0. */ -#ifndef IP_FORWARD -#define IP_FORWARD 0 -#endif - -/* If defined to 1, IP options are allowed (but not parsed). If - defined to 0, all packets with IP options are dropped. */ -#ifndef IP_OPTIONS -#define IP_OPTIONS 1 -#endif - -/** IP reassembly and segmentation. Even if they both deal with IP - * fragments, note that these are orthogonal, one dealing with incoming - * packets, the other with outgoing packets - */ - -/** Reassemble incoming fragmented IP packets */ -#ifndef IP_REASSEMBLY -#define IP_REASSEMBLY 1 -#endif - -/** Fragment outgoing IP packets if their size exceeds MTU */ -#ifndef IP_FRAG -#define IP_FRAG 1 -#endif - -/* IP reassemly default age in seconds */ -#ifndef IP_REASS_MAXAGE -#define IP_REASS_MAXAGE 3 -#endif - -/* IP reassembly buffer size (minus IP header) */ -#ifndef IP_REASS_BUFSIZE -#define IP_REASS_BUFSIZE 5760 -#endif - -/* Assumed max MTU on any interface for IP frag buffer */ -#ifndef IP_FRAG_MAX_MTU -#define IP_FRAG_MAX_MTU 1500 -#endif - -/** Global default value for Time To Live used by transport layers. */ -#ifndef IP_DEFAULT_TTL -#define IP_DEFAULT_TTL 255 -#endif - -/* ---------- ICMP options ---------- */ - -#ifndef ICMP_TTL -#define ICMP_TTL (IP_DEFAULT_TTL) -#endif - -/* ---------- RAW options ---------- */ - -#ifndef LWIP_RAW -#define LWIP_RAW 1 -#endif - -#ifndef RAW_TTL -#define RAW_TTL (IP_DEFAULT_TTL) -#endif - -/* ---------- DHCP options ---------- */ - -#ifndef LWIP_DHCP -#define LWIP_DHCP 0 -#endif - -/* 1 if you want to do an ARP check on the offered address - (recommended). */ -#ifndef DHCP_DOES_ARP_CHECK -#define DHCP_DOES_ARP_CHECK 1 -#endif - -/* ---------- SNMP options ---------- */ -/** @note UDP must be available for SNMP transport */ -#ifndef LWIP_SNMP -#define LWIP_SNMP 0 -#endif - -/** @note At least one request buffer is required. */ -#ifndef SNMP_CONCURRENT_REQUESTS -#define SNMP_CONCURRENT_REQUESTS 1 -#endif - -/** @note At least one trap destination is required */ -#ifndef SNMP_TRAP_DESTINATIONS -#define SNMP_TRAP_DESTINATIONS 1 -#endif - -#ifndef SNMP_PRIVATE_MIB -#define SNMP_PRIVATE_MIB 0 -#endif - -/* ---------- UDP options ---------- */ -#ifndef LWIP_UDP -#define LWIP_UDP 1 -#endif - -#ifndef UDP_TTL -#define UDP_TTL (IP_DEFAULT_TTL) -#endif - -/* ---------- TCP options ---------- */ -#ifndef LWIP_TCP -#define LWIP_TCP 1 -#endif - -#ifndef TCP_TTL -#define TCP_TTL (IP_DEFAULT_TTL) -#endif - -#ifndef TCP_WND -#define TCP_WND 2048 -#endif - -#ifndef TCP_MAXRTX -#define TCP_MAXRTX 12 -#endif - -#ifndef TCP_SYNMAXRTX -#define TCP_SYNMAXRTX 6 -#endif - - -/* Controls if TCP should queue segments that arrive out of - order. Define to 0 if your device is low on memory. */ -#ifndef TCP_QUEUE_OOSEQ -#define TCP_QUEUE_OOSEQ 1 -#endif - -/* TCP Maximum segment size. */ -#ifndef TCP_MSS -#define TCP_MSS 128 /* A *very* conservative default. */ -#endif - -/* TCP sender buffer space (bytes). */ -#ifndef TCP_SND_BUF -#define TCP_SND_BUF 256 -#endif - -/* TCP sender buffer space (pbufs). This must be at least = 2 * - TCP_SND_BUF/TCP_MSS for things to work. */ -#ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN 4 * TCP_SND_BUF/TCP_MSS -#endif - - -/* Maximum number of retransmissions of data segments. */ - -/* Maximum number of retransmissions of SYN segments. */ - -/* TCP writable space (bytes). This must be less than or equal - to TCP_SND_BUF. It is the amount of space which must be - available in the tcp snd_buf for select to return writable */ -#ifndef TCP_SNDLOWAT -#define TCP_SNDLOWAT TCP_SND_BUF/2 -#endif - -/* Support loop interface (127.0.0.1) */ -#ifndef LWIP_HAVE_LOOPIF -#define LWIP_HAVE_LOOPIF 0 -#endif - -#ifndef LWIP_EVENT_API -#define LWIP_EVENT_API 0 -#define LWIP_CALLBACK_API 1 -#else -#define LWIP_EVENT_API 1 -#define LWIP_CALLBACK_API 0 -#endif - -#ifndef LWIP_COMPAT_SOCKETS -#define LWIP_COMPAT_SOCKETS 1 -#endif - - -#ifndef TCPIP_THREAD_PRIO -#define TCPIP_THREAD_PRIO 1 -#endif - -#ifndef SLIPIF_THREAD_PRIO -#define SLIPIF_THREAD_PRIO 1 -#endif - -#ifndef PPP_THREAD_PRIO -#define PPP_THREAD_PRIO 1 -#endif - -#ifndef DEFAULT_THREAD_PRIO -#define DEFAULT_THREAD_PRIO 1 -#endif - - -/* ---------- Socket Options ---------- */ -/* Enable SO_REUSEADDR and SO_REUSEPORT options */ -#ifdef SO_REUSE -/* I removed the lot since this was an ugly hack. It broke the raw-API. - It also came with many ugly goto's, Christiaan Simons. */ -#error "SO_REUSE currently unavailable, this was a hack" -#endif - - -/* ---------- Statistics options ---------- */ -#ifndef LWIP_STATS -#define LWIP_STATS 1 -#endif - -#if LWIP_STATS - -#ifndef LWIP_STATS_DISPLAY -#define LWIP_STATS_DISPLAY 0 -#endif - -#ifndef LINK_STATS -#define LINK_STATS 1 -#endif - -#ifndef IP_STATS -#define IP_STATS 1 -#endif - -#ifndef IPFRAG_STATS -#define IPFRAG_STATS 1 -#endif - -#ifndef ICMP_STATS -#define ICMP_STATS 1 -#endif - -#ifndef UDP_STATS -#define UDP_STATS 1 -#endif - -#ifndef TCP_STATS -#define TCP_STATS 1 -#endif - -#ifndef MEM_STATS -#define MEM_STATS 1 -#endif - -#ifndef MEMP_STATS -#define MEMP_STATS 1 -#endif - -#ifndef PBUF_STATS -#define PBUF_STATS 1 -#endif - -#ifndef SYS_STATS -#define SYS_STATS 1 -#endif - -#ifndef RAW_STATS -#define RAW_STATS 0 -#endif - -#else - -#define LINK_STATS 0 -#define IP_STATS 0 -#define IPFRAG_STATS 0 -#define ICMP_STATS 0 -#define UDP_STATS 0 -#define TCP_STATS 0 -#define MEM_STATS 0 -#define MEMP_STATS 0 -#define PBUF_STATS 0 -#define SYS_STATS 0 -#define RAW_STATS 0 -#define LWIP_STATS_DISPLAY 0 - -#endif /* LWIP_STATS */ - -/* ---------- PPP options ---------- */ - -#ifndef PPP_SUPPORT -#define PPP_SUPPORT 0 /* Set for PPP */ -#endif - -#if PPP_SUPPORT - -#define NUM_PPP 1 /* Max PPP sessions. */ - - - -#ifndef PAP_SUPPORT -#define PAP_SUPPORT 0 /* Set for PAP. */ -#endif - -#ifndef CHAP_SUPPORT -#define CHAP_SUPPORT 0 /* Set for CHAP. */ -#endif - -#define MSCHAP_SUPPORT 0 /* Set for MSCHAP (NOT FUNCTIONAL!) */ -#define CBCP_SUPPORT 0 /* Set for CBCP (NOT FUNCTIONAL!) */ -#define CCP_SUPPORT 0 /* Set for CCP (NOT FUNCTIONAL!) */ - -#ifndef VJ_SUPPORT -#define VJ_SUPPORT 0 /* Set for VJ header compression. */ -#endif - -#ifndef MD5_SUPPORT -#define MD5_SUPPORT 0 /* Set for MD5 (see also CHAP) */ -#endif - - -/* - * Timeouts. - */ -#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */ -#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ -#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ -#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ - -#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */ -#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ - -#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */ -#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ - - -/* Interval in seconds between keepalive echo requests, 0 to disable. */ -#if 1 -#define LCP_ECHOINTERVAL 0 -#else -#define LCP_ECHOINTERVAL 10 -#endif - -/* Number of unanswered echo requests before failure. */ -#define LCP_MAXECHOFAILS 3 - -/* Max Xmit idle time (in jiffies) before resend flag char. */ -#define PPP_MAXIDLEFLAG 100 - -/* - * Packet sizes - * - * Note - lcp shouldn't be allowed to negotiate stuff outside these - * limits. See lcp.h in the pppd directory. - * (XXX - these constants should simply be shared by lcp.c instead - * of living in lcp.h) - */ -#define PPP_MTU 1500 /* Default MTU (size of Info field) */ -#if 0 -#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) -#else -#define PPP_MAXMTU 1500 /* Largest MTU we allow */ -#endif -#define PPP_MINMTU 64 -#define PPP_MRU 1500 /* default MRU = max length of info field */ -#define PPP_MAXMRU 1500 /* Largest MRU we allow */ -#define PPP_DEFMRU 296 /* Try for this */ -#define PPP_MINMRU 128 /* No MRUs below this */ - - -#define MAXNAMELEN 256 /* max length of hostname or name for auth */ -#define MAXSECRETLEN 256 /* max length of password or secret */ - -#endif /* PPP_SUPPORT */ - -/* checksum options - set to zero for hardware checksum support */ - -#ifndef CHECKSUM_GEN_IP -#define CHECKSUM_GEN_IP 1 -#endif - -#ifndef CHECKSUM_GEN_UDP -#define CHECKSUM_GEN_UDP 1 -#endif - -#ifndef CHECKSUM_GEN_TCP -#define CHECKSUM_GEN_TCP 1 -#endif - -#ifndef CHECKSUM_CHECK_IP -#define CHECKSUM_CHECK_IP 1 -#endif - -#ifndef CHECKSUM_CHECK_UDP -#define CHECKSUM_CHECK_UDP 1 -#endif - -#ifndef CHECKSUM_CHECK_TCP -#define CHECKSUM_CHECK_TCP 1 -#endif - -/* Debugging options all default to off */ - -#ifndef DBG_TYPES_ON -#define DBG_TYPES_ON 0 -#endif - -#ifndef ETHARP_DEBUG -#define ETHARP_DEBUG DBG_OFF -#endif - -#ifndef NETIF_DEBUG -#define NETIF_DEBUG DBG_OFF -#endif - -#ifndef PBUF_DEBUG -#define PBUF_DEBUG DBG_OFF -#endif - -#ifndef API_LIB_DEBUG -#define API_LIB_DEBUG DBG_OFF -#endif - -#ifndef API_MSG_DEBUG -#define API_MSG_DEBUG DBG_OFF -#endif - -#ifndef SOCKETS_DEBUG -#define SOCKETS_DEBUG DBG_OFF -#endif - -#ifndef ICMP_DEBUG -#define ICMP_DEBUG DBG_OFF -#endif - -#ifndef INET_DEBUG -#define INET_DEBUG DBG_OFF -#endif - -#ifndef IP_DEBUG -#define IP_DEBUG DBG_OFF -#endif - -#ifndef IP_REASS_DEBUG -#define IP_REASS_DEBUG DBG_OFF -#endif - -#ifndef RAW_DEBUG -#define RAW_DEBUG DBG_OFF -#endif - -#ifndef MEM_DEBUG -#define MEM_DEBUG DBG_OFF -#endif - -#ifndef MEMP_DEBUG -#define MEMP_DEBUG DBG_OFF -#endif - -#ifndef SYS_DEBUG -#define SYS_DEBUG DBG_OFF -#endif - -#ifndef TCP_DEBUG -#define TCP_DEBUG DBG_OFF -#endif - -#ifndef TCP_INPUT_DEBUG -#define TCP_INPUT_DEBUG DBG_OFF -#endif - -#ifndef TCP_FR_DEBUG -#define TCP_FR_DEBUG DBG_OFF -#endif - -#ifndef TCP_RTO_DEBUG -#define TCP_RTO_DEBUG DBG_OFF -#endif - -#ifndef TCP_REXMIT_DEBUG -#define TCP_REXMIT_DEBUG DBG_OFF -#endif - -#ifndef TCP_CWND_DEBUG -#define TCP_CWND_DEBUG DBG_OFF -#endif - -#ifndef TCP_WND_DEBUG -#define TCP_WND_DEBUG DBG_OFF -#endif - -#ifndef TCP_OUTPUT_DEBUG -#define TCP_OUTPUT_DEBUG DBG_OFF -#endif - -#ifndef TCP_RST_DEBUG -#define TCP_RST_DEBUG DBG_OFF -#endif - -#ifndef TCP_QLEN_DEBUG -#define TCP_QLEN_DEBUG DBG_OFF -#endif - -#ifndef UDP_DEBUG -#define UDP_DEBUG DBG_OFF -#endif - -#ifndef TCPIP_DEBUG -#define TCPIP_DEBUG DBG_OFF -#endif - -#ifndef PPP_DEBUG -#define PPP_DEBUG DBG_OFF -#endif - -#ifndef SLIP_DEBUG -#define SLIP_DEBUG DBG_OFF -#endif - -#ifndef DHCP_DEBUG -#define DHCP_DEBUG DBG_OFF -#endif - -#ifndef SNMP_MSG_DEBUG -#define SNMP_MSG_DEBUG DBG_OFF -#endif - -#ifndef SNMP_MIB_DEBUG -#define SNMP_MIB_DEBUG DBG_OFF -#endif - -#ifndef DBG_MIN_LEVEL -#define DBG_MIN_LEVEL DBG_LEVEL_OFF -#endif - -#endif /* __LWIP_OPT_H__ */ - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c deleted file mode 100644 index d852d2070..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c +++ /dev/null @@ -1,116 +0,0 @@ - -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - Implements a simplistic WEB server. Every time a connection is made and - data is received a dynamic page that shows the current TCP/IP statistics - is generated and returned. The connection is then closed. -*/ - - -/*------------------------------------------------------------------------------*/ -/* PROTOTYPES */ -/*------------------------------------------------------------------------------*/ - -/* Standard includes. */ -#include -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Demo includes. */ -#include "BasicWEB.h" - -/* lwIP includes. */ -#include "lwip/api.h" -#include "lwip/tcpip.h" -#include "lwip/memp.h" -#include "lwip/stats.h" -#include "netif/loopif.h" -#include "lcd.h" -#include "httpd.h" - -#define lwipTCP_STACK_SIZE 600 - - -/*------------------------------------------------------------------------------*/ -/* GLOBALS */ -/*------------------------------------------------------------------------------*/ -static struct netif EMAC_if; - -/*------------------------------------------------------------------------------*/ -/* FUNCTIONS */ -/*------------------------------------------------------------------------------*/ - - -void vlwIPInit( void ) -{ - /* Initialize lwIP and its interface layer. */ - sys_init(); - mem_init(); - memp_init(); - pbuf_init(); - netif_init(); - ip_init(); - sys_set_state(( signed char * ) "lwIP", lwipTCP_STACK_SIZE); - tcpip_init( NULL, NULL ); - sys_set_default_state(); -} -/*------------------------------------------------------------*/ - -void vBasicWEBServer( void *pvParameters ) -{ -struct ip_addr xIpAddr, xNetMast, xGateway; -extern err_t ethernetif_init( struct netif *netif ); - - /* Parameters are not used - suppress compiler error. */ - ( void ) pvParameters; - - /* Create and configure the EMAC interface. */ - IP4_ADDR( &xIpAddr, emacIPADDR0, emacIPADDR1, emacIPADDR2, emacIPADDR3 ); - IP4_ADDR( &xNetMast, emacNET_MASK0, emacNET_MASK1, emacNET_MASK2, emacNET_MASK3 ); - IP4_ADDR( &xGateway, emacGATEWAY_ADDR0, emacGATEWAY_ADDR1, emacGATEWAY_ADDR2, emacGATEWAY_ADDR3 ); - netif_add( &EMAC_if, &xIpAddr, &xNetMast, &xGateway, NULL, ethernetif_init, tcpip_input ); - - /* make it the default interface */ - netif_set_default( &EMAC_if ); - - /* bring it up */ - netif_set_up(&EMAC_if); - - /* Initialize HTTP */ - httpd_init(); - - /* Nothing else to do. No point hanging around. */ - vTaskDelete( NULL ); -} - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c deleted file mode 100644 index 677155c22..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#include "lwip/def.h" -#include "fs.h" -#include "fsdata.h" -#include "fsdata.c" - -// Standard lib include -#include - -/*-----------------------------------------------------------------------------------*/ - - -/*-----------------------------------------------------------------------------------*/ -int -fs_open(char *name, struct fs_file *file) -{ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - if (!strcmp(name, (char *)f->name)) { - file->data = (char *)f->data; - file->len = f->len; - return 1; - } - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -
-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html deleted file mode 100644 index a41dad2a3..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - FreeRTOS.org STR9 lwIP WEB server demo - - -




- - FreeRTOS.org lwIP WEB server example running on an STR912 from STMicroelectronics. Page will refresh every 2 seconds (or there abouts).

- - -
- FreeRTOS.orgTM is a portable, open source, mini Real Time Kernel - a free to download and royalty free RTOS - that can be used in commercial applications. -

- Ports exist for many different processor architectures and development tools. Each official port includes a pre-configured - example application demonstrating the kernel features, expediting learning, and permitting 'out of the box' development.

- - Free support is provided by an active user community. - Commercial support along with a - full development service is also provided.

- - SafeRTOSTM is a version that has been certified for use - in safety critical applications. It is a functionally similar product for which complete - IEC 61508 compliant development/safety lifecyle documentation is available - (conformance certified by TÜV SÜD, including compiler verification evidence). - While FreeRTOS.org does not contain the same safety features as SafeRTOS there is still commonality - allowing FreeRTOS.org to benefit directly from the - very rigorous SafeRTOS testing and validation activities. -

- - Here are some reasons why FreeRTOS.org is a good choice for your next application - FreeRTOS.org... - -

    -
  • Provides one solution for many different architectures and development tools.
  • -
  • Is known to be reliable. Confidence is assured by the activities undertaken by the SafeRTOS sister project.
  • -
  • Is undergoing continuous active development.
  • -
  • Has a minimal ROM, RAM and processing overhead.
  • -
  • Is truly free for use in commercial applications (see license conditions for details).
  • -
  • Comes with a porting, platform development, or application development service should it be required.
  • -
  • Is well established with a large and ever growing user base.
  • -
  • Contains a pre-configured example for each port. No need to figure out how to setup a project - just download and compile!
  • -
  • Has an excellent and active free support forum.
  • -
  • Has the assurance that commercial support is available should it be required.
  • -
  • Provides ample documentation.
  • -
  • Is very scalable, simple and easy to use.
  • -
- - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif deleted file mode 100644 index 1ca6d2ec43cbd6a84c6c0d788cb5e987d8135b5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5741 zcmbW(`#;l<_WagFIbwa7V(1A#Jb>@OUvM}ag+gI4 z7(5gpOA8rs_0_>Zr>CbAdFuE@ zyu47Jut?D0>Jjcq@gF&(-vt{gcKI5?arM$+G1_0kZQ@dBa6u;B_)do!;>H2!w;ybsqt9!uv@kB5eCp!X?1mVE~_pzH9Xf;XTNi-OpBhDEZ7+{G?5;hWI zz?d4|FiXtJSX{N>J^v+=Jaqy1EcGetCcK}HNX{fx!exE@D6xqbQB!su9tu%&Ek&x;C&vC zR|!@&tT)tvHGDq54y2E^Qs^$wv>*bFugi}`I}+raw3@G7qZ>=<4j9$n=v zE-vguWx6fS~`;tjC~6s@nXi$U=! zxVo{iu@0_pfEyqP{%?i<|3UR990CAO0PX*c`0pkF6bN{um8@!u+v8BOn(lqIC7nrl zHJd`KC#Bu7E#?uiP8NsLZxSt1m8|RT_21HPs&wzKyFZvm_Abp*+C2hNwi<2lLfPA$o9Tv^`SjZtL4q*Ux0Yv($XWwlPdYJ4)^%T%+KxKUQ;qqHyb zkEQB8rz+iIi#*m^)6w>kCtQx85}K4_90%<$vVYO=X{zz^2ma8D=bvZUaZ=lkPUFiR z?q*$A=uWbJQ=_rJyFkE(Fhn@3YzTuPkOGKaPrwsjrft-{`L704)WcA$h!W5123R3EO%h*ozf$Cyn95g3}jZnhG14x26!Cd-rmBs?oQqFfF(~7hU zLnvq>d&i;VM?AFmx&!7nO?NriX1QNkewRm2^u@^8o4I<2Z91CQo%6(bQdZ_<;;yB_ z5U%x7zK_Ui{@l!*ylt3&a|*QZik#p3lH{!92gi zITchXvyF2FIc-~arY=S8!|K$0^h{4)?gBMGRMm4e9~mtd=i`hT)=%Hh%te&1tcX|Ncp5+o8J2zZ%7`6y-RSFDYin^fs{e(ZU$8nv?l9+#eIUha+4Z=cM%!i_R$(^s#9-?EHKSfqStToOmB4bn0$P`dkK zzl)lmiuHHC#MB5WL+^vFXS-jB_4V3L?vY;H(F~1Qy1T7(SVf9h4bgec&>J`69SP%NgK(iN0tJY|E9ci__Jx1{HLeK4~k`O!$% z?OQA<{#H8$0tAP%cDM<@H=EcqA~gZY zx-=&1u)ht}XUh>YeAdRd+Pjb(YjuF_eQ(qV#d@DNk7OvCocVC(;FANXj(8UW)9_lm z}}TK837FTFZUmA#htzAVY{ob9yfQ#}9I+1X@ds_&JGJls#8fE5Obr4)lPVaSWP`ykm-P8=TRNW)pNT1BUxBvH{y=M-haZvNTGq1+J zaZZqq698YyJ_z{_%})O#1Xc!P|1kF*_RO|0h3O&(Ge**;4sF^T52G1m=-j9)_*T_Q zix(?=NqgEHDlhZlA0z*{_EYY0_aV?;UAqz5w7z++VrAly%WqH~&SgqO&0hV~5-FQ{ z=o2Qv51L{_@;M>6tiS;jkyHrE(gkoP-=Us-+ib2qZ?RY*aXJl|TAP7V@*PyxSkWZ; zgP7c64x=imQB`VGI4oC#zyChbiz~6*6yF= zTNY=q`g8$g6N6f0%&y1jIK4oKX*%P6!`Qs!_Bt2cq-KaD{Cd7+uY9l=gDrNGJ0^F? z%&}0Gq_G>ltW+%VE$HNQ`Qe zt&CXk^vq-B)D3^L*s5-4#DK%RY?D!MtsEyt+3mFF7lnS-V$kD%|3SG@;}l2!aaM0n zu-NvKPH2OT81@~^@YPT|{Y~vz?y(Q5A@s75W~sx?Ta?do(|=kt_toX5+mckSKTm{2 zUa@QCrk!1vv!lC>gK{?M8>2+QvH|Y9c&^(RUSefe{%7P_s`OH5YQ7Z!`CMzIFOU&dp;q56X5z6GA=4^MmPI*p#^ou8ft-5n9izX@jy zXQE|kbii5*7}GtNu!9y8<=m|-2=Pp-n=+TnW9lRx??wN!t$8u(g<;ab$jO;!vCGPi z;U5xXj-Lm97bH--_tuPDK4sL}M0@?C8RrQ>Mqcz?C^msD*xWs@)Y#)eUP;BB6gXZ#@gm;yi&;>d^DklQPH7#cp@(F%=Kz3eH$8II zisjf*BfU-f{rvFSg>Zwgm_5>>tF0T@(C^=rTP*i>HMv`pRK7bN=mq8POMi-+PYfi?4}$S!o#A@#2h41%Alt{*q~nMC?G&v>F&^(|ehbDzb5ZtTpFi*09A z1xHASCk_*8LxUGgLl&q53)h_BlH<&%O9tM`8pLfC#m|`00_&$sL z!wmj8h7N_arU&gBw-&8nw*xkEC@Td-`~Wg+&44sbm+W@JIQFWlB^%f0p6I4a?uw6o zUxu=s49Rl2h_w2z(N0ur?T*4IFzp7_FZFmQjn1E1J(s8i_JzEoOR*jp(C?Gx1j(^9 zRKyR}$y%LV^+ykX_fCACw0AP;M7TAHZWIIu{=J90j5jk4NxoHKusPK1HtMW7DkZDJ zxR4h9>|0p+*ZpTS48~VadjL4+o^lNM0bSJ097{fjDf3G_vEW zyd~Rdj@$23Mqp^|3X-A*$|BsTGt>cYK+4?joeh|4c;ViVF%29i0EH^wNql96AI`r@ zGRI8C>EX%HZGq0PTF6#GI0S&r3evxF9fxY&nq{M_6H`9O6B8^0c4gt-?6^FUOL|Ac zzGS3aEt5+4eiJ6mbUcDP!U(m#>{WCbxJsno0?)fC{a4DkRQD}|l$D`~CiXHNn>rJ} z<;PclJz?pH;{;xBjFVJbzL|6`;k8DbH0N}Y8lahYYs=>7Wm+~)pP`qRW`@l1T1?w! zj%80$n#nf~a&x1`t_+^Yx#g4k`Wxa%Sq_8_fo#vb>g@-W!F{TT3}l5Vq=daIPP~9P zvEA`(a~aCYRecd)#p{QBK9d&}o*;D(Ax*qB?F1;SAWISX^~sqc4(9N((db%4iYqB0 z#kh_U24rD_n+(=M)t8G4R;_MEo?wLav$jJqy8wt3{-7iWAaLNHdsKTDy(+fiavyq# z5=iFOxBcHXKoqms@HFnl#IS|GB4UkEg5EmEVqZ zH+$&ul9L#$S-C?OHx^;rRA83MzMBU)4VEV#wM0))4YLZ$0xGb(fG8{t$|}Z)nrlRU z*u11F)@1p`0XM(?OX`uN$>PKbg#)L`E)lb;yN{!S`X0H+7oOQTb8iJ9N4y0GAcU1# z{J*tofj;@)bC%EE-Y0>cFf6sM)cQG4>a?)G6Ufdfua0y^H4sZ!5k)_?*Qo1aRcZkV z>aB4E~-2B#%m|EV()c`9SA+TyFWHN4M(urK~m{G>sTKP|R@a zH{E}s;7h^9WpaS-&QgObk2ef3X=Smx36c{)-du6EG8`2Rpj!pcw5A@tM~6C`bag)Y z%=+@PvI+VlwZ|eh)?&(t&_L%%*1y41r<<$yxwxxmVN>x5YVrE%Y&28zqPCXTvg>m- z-Dlw+3?tJbqO?#)+;sdDAI0K}2EuM1*!*CdBle+W-Q%YQ=?uwE;CXeLuwe`(ZYc(@i z9n{4&uv_^jTlF>71!PPeN3xiCRQ^6H9gy7rw0IX3*Bf}Hy0{XP;P9I8vKqht%&wrL z#?QArXo7lSlNiX$3?w}a_sATBS8A8hZXaXbU8dpW3)>ZLv^$=|DgJ7g#}vb$9f}{f zzh`25SEMvsIM%o(Z690XJH~ZO5*|QC+e| z?A^vKN~_464VW}blS{|)R?4iRx=(2D>=^7+3Pzcz12j9!1GNxE8r1Pt_xZw}!1AvA z!7fE%_ofiIbbk|23|uVk2`}tz@9DA6Z8Dwj+60IF)WvRQ=t+^0k%fJ!pnp^Fi!S$H zJqR>FSV1jOd$0I+rxo_6wRF>__Vp56AROQT6IKWZ-~x!-3Zk-Qpy~$F*KIHQ_CS@% zV7>cbL)2hn;b3#iV9WGi+pj^k`=B3y$$!-^p+w}7p?cO&T@)b(ww9seO`|45slVi)!z^ z;Wtsk%b3@He!T{iIUl2duS(Am#^t@*#On-*1R2;c8Tz<|$fZGFX>;VFN8~@fM$kAf zBRI!ybD*(O_6(*B4JbAN5X@1{)=>lvGJ_&=nJ^?3&;~um_D7FV?u;3=j+xAinf)H4 zDvuiv0jH_2)2DlG{!;z4jyeFONvuGe@e_`w6VB9hh&k?FF~YfZ!hL4q)b9zpGS|zL zd&Yx%Hu}FrqLDtXV$Z(wtIqimkX+RtQr+L9{cJPY2t$4oI`bwn>W#Y0m|`(RZ6)to z^yGQWq?BIwEVV27_vDePNv7%B=-qF#qu<`f45K0N$zB*r^KT< z*>iYo$qdi05Z6H`nyISEI-pGeHH}(W*~+%jSX|rhDYo)-hv{^e$8=Bhbo-}v^_J;Z zGtye?~b%>J?V*jK$GsH zB996-o9)?r>d!m6%Ayy4v)-vi@-^5oyhLrSlw3RJ1|DHblnpjp3OTiOWsl53GCZz?avZJ<$bK#`|Dw@6D>QY9?O%h{)vbFVGu7cCdGEf?~a wi~cMZtB7vzkqDrP%CCtkibR!dqAI?qCPU - * - */ - -#include "lwip/debug.h" -#include "lwip/stats.h" -#include "httpd.h" -#include "lwip/tcp.h" -#include "fs.h" - -#include - -#pragma pack(2) -struct http_state { - char *file; - u32_t left; - u8_t retries; -}; -#pragma pack() - -/*-----------------------------------------------------------------------------------*/ -void conn_err(void *arg, err_t err) -{ - struct http_state *hs; - - hs = arg; - mem_free(hs); -} -/*-----------------------------------------------------------------------------------*/ -static void -close_conn(struct tcp_pcb *pcb, struct http_state *hs) -{ - tcp_arg(pcb, NULL); - tcp_sent(pcb, NULL); - tcp_recv(pcb, NULL); - mem_free(hs); - tcp_close(pcb); -} -/*-----------------------------------------------------------------------------------*/ -static void -send_data(struct tcp_pcb *pcb, struct http_state *hs) -{ - err_t err; - u16_t len; - - /* We cannot send more data than space available in the send - buffer. */ - if (tcp_sndbuf(pcb) < hs->left) { - len = tcp_sndbuf(pcb); - } else { - len = hs->left; - } - - do { - err = tcp_write(pcb, hs->file, len, 0); - if (err == ERR_MEM) { - len /= 2; - } - } while (err == ERR_MEM && len > 1); - - if (err == ERR_OK) { - hs->file += len; - hs->left -= len; - /* } else { - printf("send_data: error %s len %d %d\n", lwip_strerr(err), len, tcp_sndbuf(pcb));*/ - } -} -/*-----------------------------------------------------------------------------------*/ -err_t http_poll(void *arg, struct tcp_pcb *pcb) -{ - struct http_state *hs; - - hs = arg; - - /* printf("Polll\n");*/ - if (hs == NULL) { - /* printf("Null, close\n");*/ - tcp_abort(pcb); - return ERR_ABRT; - } else { - ++hs->retries; - if (hs->retries == 4) { - tcp_abort(pcb); - return ERR_ABRT; - } - send_data(pcb, hs); - } - - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -err_t http_sent(void *arg, struct tcp_pcb *pcb, u16_t len) -{ - struct http_state *hs; - - hs = arg; - - hs->retries = 0; - - if (hs->left > 0) { - send_data(pcb, hs); - } else { - close_conn(pcb, hs); - } - - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - int i; - char *data; - struct fs_file file; - struct http_state *hs; - - hs = arg; - - if (err == ERR_OK && p != NULL) { - - /* Inform TCP that we have taken the data. */ - tcp_recved(pcb, p->tot_len); - - if (hs->file == NULL) { - data = p->payload; - - if (strncmp(data, "GET ", 4) == 0) { - for(i = 0; i < 40; i++) { - if (((char *)data + 4)[i] == ' ' || - ((char *)data + 4)[i] == '\r' || - ((char *)data + 4)[i] == '\n') { - ((char *)data + 4)[i] = 0; - } - } - - if (*(char *)(data + 4) == '/' && - *(char *)(data + 5) == 0) { - fs_open("/index.html", &file); - } - else { - if (!fs_open((char *)data + 4, &file)) { - fs_open("/404.html", &file); - } - } - hs->file = file.data; - hs->left = file.len; - /* printf("data %p len %ld\n", hs->file, hs->left);*/ - - pbuf_free(p); - send_data(pcb, hs); - - /* Tell TCP that we wish be to informed of data that has been - successfully sent by a call to the http_sent() function. */ - tcp_sent(pcb, http_sent); - } else { - pbuf_free(p); - close_conn(pcb, hs); - } - } else { - pbuf_free(p); - } - } - - if (err == ERR_OK && p == NULL) { - close_conn(pcb, hs); - } - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err) -{ - struct http_state *hs; - - tcp_setprio(pcb, TCP_PRIO_MIN); - - /* Allocate memory for the structure that holds the state of the - connection. */ - hs = mem_malloc(sizeof(struct http_state)); - - if (hs == NULL) { -// printf("http_accept: Out of memory\n"); - return ERR_MEM; - } - - /* Initialize the structure. */ - hs->file = NULL; - hs->left = 0; - hs->retries = 0; - - /* Tell TCP that this is the structure we wish to be passed for our - callbacks. */ - tcp_arg(pcb, hs); - - - /* Tell TCP that we wish to be informed of incoming data by a call - to the http_recv() function. */ - tcp_recv(pcb, http_recv); - - tcp_err(pcb, conn_err); - - tcp_poll(pcb, http_poll, 4); - - return ERR_OK; -} - -/*-----------------------------------------------------------------------------------*/ -void httpd_init(void) -{ - struct tcp_pcb *pcb; - - pcb = tcp_new(); - tcp_bind(pcb, NULL, 80); - pcb = tcp_listen(pcb); - tcp_accept(pcb, http_accept); -} -/*-----------------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c deleted file mode 100644 index 900749d97..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* - * This file is a skeleton for developing Ethernet network interface - * drivers for lwIP. Add code to the low_level functions and do a - * search-and-replace for the word "ethernetif" to replace it with - * something that better describes your network interface. - */ - -#include "lwip/opt.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/sys.h" -#include - -#include "netif/etharp.h" -#include "91x_enet.h" - -// Standard library include -#include - -#define netifMTU ( 1500 ) -#define netifINTERFACE_TASK_STACK_SIZE ( 350 ) -#define netifINTERFACE_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define netifGUARD_BLOCK_TIME ( 250 ) -#define IFNAME0 'e' -#define IFNAME1 'm' - -/* The time to block waiting for input. */ -#define emacBLOCK_TIME_WAITING_FOR_INPUT ( ( TickType_t ) 100 ) - -/* Interrupt status bit definition. */ -#define DMI_RX_CURRENT_DONE 0x8000 - -extern u8 TxBuff[1520]; - -static u8_t s_rxBuff[1520]; - -/* The semaphore used by the ISR to wake the lwIP task. */ -static SemaphoreHandle_t s_xSemaphore = NULL; - -struct ethernetif { - struct eth_addr *ethaddr; - /* Add whatever per-interface state that is needed here. */ -}; - -static struct netif *s_pxNetIf = NULL; - -/* Forward declarations. */ -static err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr); -static void ethernetif_input( void * pvParameters ); -static void vEMACWaitForInput( void ); - - - -static void low_level_init(struct netif *netif) -{ - /* set MAC hardware address length */ - netif->hwaddr_len = 6; - - /* set MAC hardware address */ - netif->hwaddr[0] = MAC_ADDR0; - netif->hwaddr[1] = MAC_ADDR1; - netif->hwaddr[2] = MAC_ADDR2; - netif->hwaddr[3] = MAC_ADDR3; - netif->hwaddr[4] = MAC_ADDR4; - netif->hwaddr[5] = MAC_ADDR5; - - /* maximum transfer unit */ - netif->mtu = netifMTU; - - /* broadcast capability */ - netif->flags = NETIF_FLAG_BROADCAST; - - s_pxNetIf = netif; - - if( s_xSemaphore == NULL ) - { - vSemaphoreCreateBinary( s_xSemaphore ); - xSemaphoreTake( s_xSemaphore, 0); - } - - /* Do whatever else is needed to initialize interface. */ - /* Initialise the MAC. */ - ENET_InitClocksGPIO(); - ENET_Init(); - ENET_Start(); - - portENTER_CRITICAL(); - { - /*set MAC physical*/ - ENET_MAC->MAH = (MAC_ADDR5<<8) + MAC_ADDR4; - ENET_MAC->MAL = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + (MAC_ADDR1<<8) + MAC_ADDR0; - - VIC_Config( ENET_ITLine, VIC_IRQ, 1 ); - VIC_ITCmd( ENET_ITLine, ENABLE ); - ENET_DMA->ISR = DMI_RX_CURRENT_DONE; - ENET_DMA->IER = DMI_RX_CURRENT_DONE; - } - portEXIT_CRITICAL(); - - /* Create the task that handles the EMAC. */ - xTaskCreate( ethernetif_input, "ETH_INT", netifINTERFACE_TASK_STACK_SIZE, NULL, netifINTERFACE_TASK_PRIORITY, NULL ); -} - - -/* - * low_level_output(): - * - * Should do the actual transmission of the packet. The packet is - * contained in the pbuf that is passed to the function. This pbuf - * might be chained. - * - */ - -static err_t low_level_output(struct netif *netif, struct pbuf *p) -{ - static SemaphoreHandle_t xTxSemaphore = NULL; - struct pbuf *q; - u32_t l = 0; - - if( xTxSemaphore == NULL ) - { - vSemaphoreCreateBinary( xTxSemaphore ); - } - - -#if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ -#endif - - - /* Access to the EMAC is guarded using a semaphore. */ - if( xSemaphoreTake( xTxSemaphore, netifGUARD_BLOCK_TIME ) ) - { - for(q = p; q != NULL; q = q->next) { - /* Send the data from the pbuf to the interface, one pbuf at a - time. The size of the data in each pbuf is kept in the ->len - variable. */ - memcpy(&TxBuff[l], (u8_t*)q->payload, q->len); - l += q->len; - } - - ENET_TxPkt(0, l); - - #if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ - #endif - - #if LINK_STATS - lwip_stats.link.xmit++; - #endif /* LINK_STATS */ - - xSemaphoreGive( xTxSemaphore ); - } - - return ERR_OK; -} - -/* - * low_level_input(): - * - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - */ - -static struct pbuf * -low_level_input(struct netif *netif) -{ - static SemaphoreHandle_t xRxSemaphore = NULL; - struct pbuf *p, *q; - u16_t len, l; - - l = 0; - p = NULL; - - if( xRxSemaphore == NULL ) - { - vSemaphoreCreateBinary( xRxSemaphore ); - } - - /* Access to the emac is guarded using a semaphore. */ - if( xSemaphoreTake( xRxSemaphore, netifGUARD_BLOCK_TIME ) ) - { - /* Obtain the size of the packet and put it into the "len" - variable. */ - len = ENET_HandleRxPkt(s_rxBuff); - - if(len) - { - #if ETH_PAD_SIZE - len += ETH_PAD_SIZE; /* allow room for Ethernet padding */ - #endif - - /* We allocate a pbuf chain of pbufs from the pool. */ - p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL); - - if (p != NULL) { - - #if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ - #endif - - /* We iterate over the pbuf chain until we have read the entire - * packet into the pbuf. */ - for(q = p; q != NULL; q = q->next) { - /* Read enough bytes to fill this pbuf in the chain. The - * available data in the pbuf is given by the q->len - * variable. */ - memcpy((u8_t*)q->payload, &s_rxBuff[l], q->len); - l = l + q->len; - } - - - #if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ - #endif - - #if LINK_STATS - lwip_stats.link.recv++; - #endif /* LINK_STATS */ - } else { - #if LINK_STATS - lwip_stats.link.memerr++; - lwip_stats.link.drop++; - #endif /* LINK_STATS */ - } /* End else */ - } /* End if */ - - xSemaphoreGive( xRxSemaphore ); - } - - return p; -} - -/* - * ethernetif_output(): - * - * This function is called by the TCP/IP stack when an IP packet - * should be sent. It calls the function called low_level_output() to - * do the actual transmission of the packet. - * - */ - -static err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr) -{ - - /* resolve hardware address, then send (or queue) packet */ - return etharp_output(netif, ipaddr, p); - -} - -/* - * ethernetif_input(): - * - * This function should be called when a packet is ready to be read - * from the interface. It uses the function low_level_input() that - * should handle the actual reception of bytes from the network - * interface. - * - */ - -static void ethernetif_input( void * pvParameters ) -{ - struct ethernetif *ethernetif; - struct eth_hdr *ethhdr; - struct pbuf *p; - - for( ;; ) - { - do - { - ethernetif = s_pxNetIf->state; - - /* move received packet into a new pbuf */ - p = low_level_input( s_pxNetIf ); - - if( p == NULL ) - { - /* No packet could be read. Wait a for an interrupt to tell us - there is more data available. */ - vEMACWaitForInput(); - } - - } while( p == NULL ); - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - - #if LINK_STATS - lwip_stats.link.recv++; - #endif /* LINK_STATS */ - - ethhdr = p->payload; - - switch (htons(ethhdr->type)) - { - /* IP packet? */ - case ETHTYPE_IP: - /* update ARP table */ - etharp_ip_input(s_pxNetIf, p); - /* skip Ethernet header */ - pbuf_header(p, (s16_t)-sizeof(struct eth_hdr)); - /* pass to network layer */ - s_pxNetIf->input(p, s_pxNetIf); - break; - - case ETHTYPE_ARP: - /* pass p to ARP module */ - etharp_arp_input(s_pxNetIf, ethernetif->ethaddr, p); - break; - - default: - pbuf_free(p); - p = NULL; - break; - } - } -} - -static void -arp_timer(void *arg) -{ - etharp_tmr(); - sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); -} - -/* - * ethernetif_init(): - * - * Should be called at the beginning of the program to set up the - * network interface. It calls the function low_level_init() to do the - * actual setup of the hardware. - * - */ - -err_t -ethernetif_init(struct netif *netif) -{ - struct ethernetif *ethernetif; - - ethernetif = mem_malloc(sizeof(struct ethernetif)); - - if (ethernetif == NULL) - { - LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_init: out of memory\n")); - return ERR_MEM; - } - -#if LWIP_SNMP - /* ifType ethernetCsmacd(6) @see RFC1213 */ - netif->link_type = 6; - /* your link speed here */ - netif->link_speed = ; - netif->ts = 0; - netif->ifinoctets = 0; - netif->ifinucastpkts = 0; - netif->ifinnucastpkts = 0; - netif->ifindiscards = 0; - netif->ifoutoctets = 0; - netif->ifoutucastpkts = 0; - netif->ifoutnucastpkts = 0; - netif->ifoutdiscards = 0; -#endif - - netif->state = ethernetif; - netif->name[0] = IFNAME0; - netif->name[1] = IFNAME1; - netif->output = ethernetif_output; - netif->linkoutput = low_level_output; - - ethernetif->ethaddr = (struct eth_addr *)&(netif->hwaddr[0]); - - low_level_init(netif); - - etharp_init(); - - sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); - - return ERR_OK; -} -/*-----------------------------------------------------------*/ - -void ENET_IRQHandler(void) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Give the semaphore in case the lwIP task needs waking. */ - xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt. */ - ENET_DMA->ISR = DMI_RX_CURRENT_DONE; - - /* Switch tasks if necessary. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vEMACWaitForInput( void ) -{ - /* Just wait until we are signled from an ISR that data is available, or - we simply time out. */ - xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT ); -} diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/main.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/main.c deleted file mode 100644 index 089ec2091..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/main.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode. - The processor MUST be in supervisor mode when vTaskStartScheduler is - called. The demo applications included in the FreeRTOS.org download switch - to supervisor mode prior to main being called. If you are not using one of - these demo application projects then ensure Supervisor mode is used. -*/ - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the demo application tasks. - * - * A few tasks are created that are not part of the standard demo. These are - * the 'LCD' task, the 'LCD Message' task, a WEB server task and the 'Check' - * task. - * - * The LCD task is the only task that accesses the LCD directly, so mutual - * exclusion is ensured. Any task wishing to display text sends the LCD task - * a message containing a pointer to the string that should be displayed. - * The LCD task itself just blocks on a queue waiting for such a message to - * arrive - processing each in turn. - * - * The LCD Message task does nothing other than periodically send messages to - * the LCD task. The messages originating from the LCD Message task are - * displayed on the top row of the LCD. - * - * The Check task only executes every three seconds but has the highest - * priority so is guaranteed to get processor time. Its main function is to - * check that all the other tasks are still operational. Most tasks maintain - * a unique count that is incremented each time the task successfully completes - * a cycle of its function. Should any error occur within such a task the - * count is permanently halted. The check task sets a bit in an error status - * flag should it find any counter variable at a value that indicates an - * error has occurred. The error flag value is converted to a string and sent - * to the LCD task for display on the bottom row on the LCD. - */ - -/* Standard includes. */ -#include - -/* Library includes. */ -#include "91x_lib.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo application includes. */ -#include "lcd.h" -#include "flash.h" -#include "integer.h" -#include "PollQ.h" -#include "BlockQ.h" -#include "semtest.h" -#include "dynamic.h" -#include "partest.h" -#include "flop.h" -#include "comtest2.h" -#include "serial.h" -#include "GenQTest.h" -#include "QPeek.h" - -#ifdef STACK_LWIP - #include "BasicWEB.h" - #include "sys.h" -#endif - -/* Priorities for the demo application tasks. */ -#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainMSG_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainGENERIC_QUEUE_PRIORITY ( tskIDLE_PRIORITY ) - -/* Delays used by the various tasks defined in this file. */ -#define mainCHECK_PERIOD ( ( TickType_t ) 3000 / portTICK_PERIOD_MS ) -#define mainSTRING_WRITE_DELAY ( 500 / portTICK_PERIOD_MS ) -#define mainLCD_DELAY ( 20 / portTICK_PERIOD_MS ) - -/* Constants for the ComTest tasks. */ -#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 ) -#define mainCOM_TEST_LED ( 3 ) - -/* The maximum number of messages that can be pending to be written to the LCD. */ -#define mainLCD_QUEUE_LEN ( 6 ) - -/* Dimension the buffer used to write the error flag string. */ -#define mainMAX_FLAG_STRING_LEN ( 32 ) - -/* The structure that is passed on the LCD message queue. */ -typedef struct -{ - char **ppcMessageToDisplay; /*<< Points to a char* pointing to the message to display. */ - portBASE_TYPE xRow; /*<< The row on which the message should be displayed. */ -} xLCDMessage; -/*-----------------------------------------------------------*/ - -/* - * The task that executes at the highest priority and calls - * prvCheckOtherTasksAreStillRunning(). See the description at the top - * of the file. - */ -static void vErrorChecks( void *pvParameters ); - -/* - * Configure the processor clock and ports. - */ -static void prvSetupHardware( void ); - -/* - * Checks that all the demo application tasks are still executing without error - * - as described at the top of the file. Called by vErrorChecks(). - */ -static void prvCheckOtherTasksAreStillRunning( void ); - -#ifdef STACK_UIP - /* - * The WEB server task prototype. The task is created in this file but defined - * elsewhere. STACK_UIP is defined when the uIP stack is used in preference - * to the lwIP stack. - */ - extern void vuIP_Task(void *pvParameters); -#endif - -/* - * The task that displays text on the LCD. - */ -static void prvLCDTask( void * pvParameters ); - -/* - * The task that sends messages to be displayed on the top row of the LCD. - */ -static void prvLCDMessageTask( void * pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The queue used to pass messages to the LCD task. */ -static QueueHandle_t xLCDQueue; - -/* Error status flag. */ -static unsigned long ulErrorFlags = 0; - -/*-----------------------------------------------------------*/ - -/* - * Starts all the other tasks, then starts the scheduler. - */ -void main( void ) -{ - #ifdef DEBUG - debug(); - #endif - - /* Setup any hardware that has not already been configured by the low - level init routines. */ - prvSetupHardware(); - /* Create the queue used to send data to the LCD task. */ - xLCDQueue = xQueueCreate( mainLCD_QUEUE_LEN, sizeof( xLCDMessage ) ); - - /* Start all the standard demo application tasks. */ - vStartIntegerMathTasks( tskIDLE_PRIORITY ); - vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vStartDynamicPriorityTasks(); - vStartMathTasks( tskIDLE_PRIORITY ); - vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED ); - vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); - vStartQueuePeekTasks(); - - /* Start the tasks which are defined in this file. */ - xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - xTaskCreate( prvLCDTask, "LCD", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainLCD_TASK_PRIORITY, NULL ); - xTaskCreate( prvLCDMessageTask, "MSG", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainMSG_TASK_PRIORITY, NULL ); - - /* Start either the uIP TCP/IP stack or the lwIP TCP/IP stack. */ - #ifdef STACK_UIP - /* Finally, create the WEB server task. */ - xTaskCreate( vuIP_Task, "uIP", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - #endif - - #ifdef STACK_LWIP - /* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/ - vlwIPInit(); - sys_set_state( ( signed char * ) "httpd", lwipBASIC_SERVER_STACK_SIZE ); - sys_thread_new( vBasicWEBServer, ( void * ) NULL, basicwebWEBSERVER_PRIORITY ); - sys_set_default_state(); - #endif - - /* Start the scheduler. - - NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode. - The processor MUST be in supervisor mode when vTaskStartScheduler is - called. The demo applications included in the FreeRTOS.org download switch - to supervisor mode prior to main being called. If you are not using one of - these demo application projects then ensure Supervisor mode is used here. */ - - vTaskStartScheduler(); - - /* We should never get here as control is now taken by the scheduler. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Configuration taken from the ST code. - - Set Flash banks size & address */ - FMI_BankRemapConfig( 4, 2, 0, 0x80000 ); - - /* FMI Waite States */ - FMI_Config( FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE, FMI_LVD_ENABLE, FMI_FREQ_HIGH ); - - /* Configure the FPLL = 96MHz, and APB to 48MHz. */ - SCU_PCLKDivisorConfig( SCU_PCLK_Div2 ); - SCU_PLLFactorsConfig( 192, 25, 2 ); - SCU_PLLCmd( ENABLE ); - SCU_MCLKSourceConfig( SCU_MCLK_PLL ); - - WDG_Cmd( DISABLE ); - VIC_DeInit(); - - /* GPIO8 clock source enable, used by the LCD. */ - SCU_APBPeriphClockConfig(__GPIO8, ENABLE); - GPIO_DeInit(GPIO8); - - /* GPIO 9 clock source enable, used by the LCD. */ - SCU_APBPeriphClockConfig(__GPIO9, ENABLE); - GPIO_DeInit(GPIO9); - - /* Enable VIC clock */ - SCU_AHBPeriphClockConfig(__VIC, ENABLE); - SCU_AHBPeriphReset(__VIC, DISABLE); - - /* Peripheral initialisation. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -static void vErrorChecks( void *pvParameters ) -{ -static char cCheckVal[ mainMAX_FLAG_STRING_LEN ]; -char *pcFlagString; -xLCDMessage xMessageToSend; -TickType_t xLastWakeTime; -char *pcStringsToDisplay[] = { - "Check status flag" - }; - - /* The parameters are not used in this task. */ - ( void ) pvParameters; - - pcFlagString = &cCheckVal[ 0 ]; - - /* Initialise xLastWakeTime to ensure the first call to vTaskDelayUntil() - functions correctly. */ - xLastWakeTime = xTaskGetTickCount(); - - /* Cycle for ever, delaying then checking all the other tasks are still - operating without error. */ - for( ;; ) - { - /* Delay until it is time to execute again. */ - vTaskDelayUntil( &xLastWakeTime, mainCHECK_PERIOD ); - - /* Check all the other tasks to see if the error flag needs updating. */ - prvCheckOtherTasksAreStillRunning(); - - /* Create a string indicating the error flag status. */ - sprintf( cCheckVal, "equals 0x%x ", ulErrorFlags ); - xMessageToSend.xRow = Line2; - - /* Send the first part of the message to the LCD task. */ - xMessageToSend.ppcMessageToDisplay = &pcStringsToDisplay[ 0 ]; - xQueueSend( xLCDQueue, ( void * ) &xMessageToSend, 0 ); - vTaskDelay( mainSTRING_WRITE_DELAY ); - - /* Send the second part of the message to the LCD task. */ - xMessageToSend.ppcMessageToDisplay = &pcFlagString; - xQueueSend( xLCDQueue, ( void * ) &xMessageToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvCheckOtherTasksAreStillRunning( void ) -{ - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x01; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x02; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x04; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x08; - } - - if( xAreComTestTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x10; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x20; - } - - if( xAreMathsTaskStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x40; - } - - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x80; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x100; - } - -} -/*-----------------------------------------------------------*/ - -static void prvLCDMessageTask( void * pvParameters ) -{ -QueueHandle_t *pxLCDQueue; -xLCDMessage xMessageToSend; -portBASE_TYPE xIndex = 0; - -/* The strings that are written to the LCD. */ -char *pcStringsToDisplay[] = { - "IAR ", - "STR912 ", - "Demo ", - "www.FreeRTOS.org", - "" - }; - - - /* To test the parameter passing mechanism, the queue on which messages are - posted is passed in as a parameter even though it is available as a file - scope variable anyway. */ - pxLCDQueue = ( QueueHandle_t * ) pvParameters; - - for( ;; ) - { - /* Wait until it is time to move onto the next string. */ - vTaskDelay( mainSTRING_WRITE_DELAY ); - - /* Configure the message object to send to the LCD task. */ - xMessageToSend.ppcMessageToDisplay = &pcStringsToDisplay[ xIndex ]; - xMessageToSend.xRow = Line1; - - /* Post the message to be displayed. */ - xQueueSend( *pxLCDQueue, ( void * ) &xMessageToSend, 0 ); - - /* Move onto the next message, wrapping when necessary. */ - xIndex++; - if( *( pcStringsToDisplay[ xIndex ] ) == 0x00 ) - { - xIndex = 0; - - /* Delay longer before going back to the start of the messages. */ - vTaskDelay( mainSTRING_WRITE_DELAY * 2 ); - } - } -} -/*-----------------------------------------------------------*/ - -void prvLCDTask( void * pvParameters ) -{ -QueueHandle_t *pxLCDQueue; -xLCDMessage xReceivedMessage; -char *pcString; - - /* To test the parameter passing mechanism, the queue on which messages are - received is passed in as a parameter even though it is available as a file - scope variable anyway. */ - pxLCDQueue = ( QueueHandle_t * ) pvParameters; - - LCD_Init(); - - for( ;; ) - { - /* Wait for a message to arrive. */ - if( xQueueReceive( *pxLCDQueue, &xReceivedMessage, portMAX_DELAY ) ) - { - /* Where is the string we are going to display? */ - pcString = *xReceivedMessage.ppcMessageToDisplay; - LCD_DisplayString(xReceivedMessage.xRow, pcString, BlackText); - - /* The delay here is just to ensure the LCD task does not starve - out lower priority tasks as writing to the LCD can take a long - time. */ - vTaskDelay( mainLCD_DELAY ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c deleted file mode 100644 index 4bad2f11e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART1. -*/ - -/* Library includes. */ -#include "91x_lib.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "queue.h" -#include "semphr.h" - -/* Demo application includes. */ -#include "serial.h" -/*-----------------------------------------------------------*/ - -/* Misc defines. */ -#define serINVALID_QUEUE ( ( QueueHandle_t ) 0 ) -#define serNO_BLOCK ( ( TickType_t ) 0 ) -#define serTX_BLOCK_TIME ( 40 / portTICK_PERIOD_MS ) - -/* Interrupt and status bit definitions. */ -#define mainTXRIS 0x20 -#define mainRXRIS 0x50 -#define serTX_FIFO_FULL 0x20 -#define serCLEAR_ALL_INTERRUPTS 0x3ff -/*-----------------------------------------------------------*/ - -/* The queue used to hold received characters. */ -static QueueHandle_t xRxedChars; - -/* The semaphore used to wake a task waiting for space to become available -in the FIFO. */ -static SemaphoreHandle_t xTxFIFOSemaphore; - -/*-----------------------------------------------------------*/ - -/* UART interrupt handler. */ -void UART1_IRQHandler( void ); - -/* The interrupt service routine - called from the assembly entry point. */ -__arm void UART1_IRQHandler( void ); - -/*-----------------------------------------------------------*/ - -/* Flag to indicate whether or not a task is blocked waiting for space on -the FIFO. */ -static long lTaskWaiting = pdFALSE; - -/* - * See the serial2.h header file. - */ -xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength ) -{ -xComPortHandle xReturn; -UART_InitTypeDef xUART1_Init; -GPIO_InitTypeDef GPIO_InitStructure; - - /* Create the queues used to hold Rx characters. */ - xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) ); - - /* Create the semaphore used to wake a task waiting for space to become - available in the FIFO. */ - vSemaphoreCreateBinary( xTxFIFOSemaphore ); - - /* If the queue/semaphore was created correctly then setup the serial port - hardware. */ - if( ( xRxedChars != serINVALID_QUEUE ) && ( xTxFIFOSemaphore != serINVALID_QUEUE ) ) - { - /* Pre take the semaphore so a task will block if it tries to access - it. */ - xSemaphoreTake( xTxFIFOSemaphore, 0 ); - - /* Configure the UART. */ - xUART1_Init.UART_WordLength = UART_WordLength_8D; - xUART1_Init.UART_StopBits = UART_StopBits_1; - xUART1_Init.UART_Parity = UART_Parity_No; - xUART1_Init.UART_BaudRate = ulWantedBaud; - xUART1_Init.UART_HardwareFlowControl = UART_HardwareFlowControl_None; - xUART1_Init.UART_Mode = UART_Mode_Tx_Rx; - xUART1_Init.UART_FIFO = UART_FIFO_Enable; - - /* Enable the UART1 Clock */ - SCU_APBPeriphClockConfig( __UART1, ENABLE ); - - /* Enable the GPIO3 Clock */ - SCU_APBPeriphClockConfig( __GPIO3, ENABLE ); - - /* Configure UART1_Rx pin GPIO3.2 */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; - GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ; - GPIO_Init( GPIO3, &GPIO_InitStructure ); - - /* Configure UART1_Tx pin GPIO3.3 */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput; - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; - GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ; - GPIO_Init( GPIO3, &GPIO_InitStructure ); - - - portENTER_CRITICAL(); - { - /* Configure the UART itself. */ - UART_DeInit( UART1 ); - UART_Init( UART1, &xUART1_Init ); - UART_ITConfig( UART1, UART_IT_Receive | UART_IT_Transmit, ENABLE ); - UART1->ICR = serCLEAR_ALL_INTERRUPTS; - UART_LoopBackConfig( UART1, DISABLE ); - UART_IrDACmd( IrDA1, DISABLE ); - - /* Configure the VIC for the UART interrupts. */ - VIC_Config( UART1_ITLine, VIC_IRQ, 9 ); - VIC_ITCmd( UART1_ITLine, ENABLE ); - - UART_Cmd( UART1, ENABLE ); - lTaskWaiting = pdFALSE; - } - portEXIT_CRITICAL(); - } - else - { - xReturn = ( xComPortHandle ) 0; - } - - /* This demo file only supports a single port but we have to return - something to comply with the standard demo header file. */ - return xReturn; -} -/*-----------------------------------------------------------*/ - -signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime ) -{ - /* The port handle is not required as this driver only supports one port. */ - ( void ) pxPort; - - /* Get the next character from the buffer. Return false if no characters - are available, or arrive before xBlockTime expires. */ - if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) ) - { - return pdTRUE; - } - else - { - return pdFALSE; - } -} -/*-----------------------------------------------------------*/ - -void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength ) -{ -signed char *pxNext; - - /* A couple of parameters that this port does not use. */ - ( void ) usStringLength; - ( void ) pxPort; - - /* NOTE: This implementation does not handle the queue being full as no - block time is used! */ - - /* The port handle is not required as this driver only supports UART1. */ - ( void ) pxPort; - - /* Send each character in the string, one at a time. */ - pxNext = ( signed char * ) pcString; - while( *pxNext ) - { - xSerialPutChar( pxPort, *pxNext, serNO_BLOCK ); - pxNext++; - } -} -/*-----------------------------------------------------------*/ - -signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime ) -{ -portBASE_TYPE xReturn; - - portENTER_CRITICAL(); - { - /* Can we write to the FIFO? */ - if( UART1->FR & serTX_FIFO_FULL ) - { - /* Wait for the interrupt letting us know there is space on the - FIFO. It is ok to block in a critical section, interrupts will be - enabled for other tasks once we force a switch. */ - lTaskWaiting = pdTRUE; - - /* Just to be a bit different this driver uses a semaphore to - block the sending task when the FIFO is full. The standard COMTest - task assumes a queue of adequate length exists so does not use - a block time. For this demo the block time is therefore hard - coded. */ - xReturn = xSemaphoreTake( xTxFIFOSemaphore, serTX_BLOCK_TIME ); - if( xReturn ) - { - UART1->DR = cOutChar; - } - } - else - { - UART1->DR = cOutChar; - xReturn = pdPASS; - } - } - portEXIT_CRITICAL(); - - return xReturn; -} -/*-----------------------------------------------------------*/ - -void vSerialClose( xComPortHandle xPort ) -{ - /* Not supported as not required by the demo application. */ -} -/*-----------------------------------------------------------*/ - -void UART1_IRQHandler( void ) -{ -signed char cChar; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - while( UART1->RIS & mainRXRIS ) - { - /* The interrupt was caused by a character being received. Grab the - character from the DR and place it in the queue of received - characters. */ - cChar = UART1->DR; - xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken ); - } - - if( UART1->RIS & mainTXRIS ) - { - if( lTaskWaiting == pdTRUE ) - { - /* This interrupt was caused by space becoming available on the Tx - FIFO, wake any task that is waiting to post (if any). */ - xSemaphoreGiveFromISR( xTxFIFOSemaphore, &xHigherPriorityTaskWoken ); - lTaskWaiting = pdFALSE; - } - - UART1->ICR = mainTXRIS; - } - - /* If a task was woken by either a character being received or a character - being transmitted then we may need to switch to another task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt deleted file mode 100644 index c72818da9..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 208272727 - - - - - - - 30020100426766 - - 300BuildFind-in-FilesBreakpoints - - - - - 300BuildDebug-LogBreakpoints48268826 - 100300BuildFind-in-FilesDebug-Log - - - - - - - TabID-19472-27051 - Workspace - Workspace - - - RTOSDemoRTOSDemo/Demo Source - - - - 0TabID-17576-32349BuildBuild0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\port.c026282728272TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect_IAR.s09949794979TextEditorC:\E\Dev\FreeRTOS\Source\queue.c04201760317603TextEditorC:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\portasm.s7902124702470TextEditorC:\E\Dev\FreeRTOS\Source\tasks.c010183428134281TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\FreeRTOSConfig.h0919681968TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init_IAR.s070373237326TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\source\91x_enet.c14091399713997TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c025673177317TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\include\91x_enet.h0126548154810100000010000001 - - - - - - - iaridepm1-2-2695282-2-2200200142857205761202857717078-2-22311402-2-214042331002857239712142857205761 - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index 7259709f7..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,32 +0,0 @@ -@REM This bat file has been generated by the IAR Embeddded Workbench -@REM C-SPY interactive debugger,as an aid to preparing a command -@REM line for running the cspybat command line utility with the -@REM appropriate settings. -@REM -@REM After making some adjustments to this file, you can launch cspybat -@REM by typing the name of this file followed by the name of the debug -@REM file (usually an ubrof file). Note that this file is generated -@REM every time a new debug session is initialized, so you may want to -@REM move or rename the file before making changes. -@REM -@REM Note: some command line arguments cannot be properly generated -@REM by this process. Specifically, the plugin which is responsible -@REM for the Terminal I/O window (and other C runtime functionality) -@REM comes in a special version for cspybat, and the name of that -@REM plugin dll is not known when generating this file. It resides in -@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or -@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding -@REM tool chain. Replace the '' parameter -@REM below with the appropriate file name. Other plugins loaded by -@REM C-SPY are usually not needed by, or will not work in, cspybat -@REM but they are listed at the end of this file for reference. - - -"C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\bin\cspybat" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\bin\armproc.dll" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\bin\armjlink.dll" %1 --plugin "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\bin\" --backend -B "--endian" "little" "--cpu" "ARM966E-S" "--fpu" "None" "--proc_device_desc_file" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\CONFIG\debugger\ST\iostr912f.ddf" "--drv_verify_download" "all" "--proc_no_semihosting" "--proc_driver" "jlink" "--jlink_connection" "USB:0" "--jlink_initial_speed" "32" "--jlink_catch_exceptions" "0x000" - - -@REM Loaded plugins: -@REM armlibsupport.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\CodeCoverage\CodeCoverage.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\Profiling\Profiling.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\stack\stack.dll diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index 985ff1079..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - 20100626867 - - - - - - - 268272727 - - - - - - - - 200 - - - - 010 - 20048268826 - - - - - - - TabID-874-7293 - Debug Log - Debug-Log - - - - TabID-11099-7306 - Build - Build - - - TabID-4501-4793Find in FilesFind-in-FilesTabID-19328-10860BreakpointsBreakpoints - - 0 - - - TabID-11622-7296 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect.s04527852785TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init.s06537043704TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\main.c0170695269522TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c03600TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\lwip\include\lwIPWebServer\BasicWEB.h03420792079TextEditorC:\E\Dev\FreeRTOS\Demo\Common\ethernet\lwIP\core\tcp_in.c028410447104470100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2740342-2-2200200142857203666245714755601-2-21981402-2-214042001002857203666142857203666 - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni deleted file mode 100644 index c18ff2915..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,37 +0,0 @@ -[JLinkDriver] -WatchCond=_ 0 -Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0 -Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[BreakpointUsageDialog] -Placement=_ 144 186 919 647 -[CodeCoverage] -Enabled=_ 0 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[Disassemble mode] -mode=0 -[Breakpoints] -Count=0 -[TraceHelper] -Enabled=0 -ShowSource=1 diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index 32b6915d1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - RTOSDemo/ARM - uIP - R - - - - - - - - - 328272727 - - - - - - - 20100626867 - - - 68268826100 - - - - - - - TabID-13420-7058 - Workspace - Workspace - - - RTOSDemoRTOSDemo/System Files - - - - 0 - - - TabID-22078-7100 - Build - Build - - - TabID-3326-16295Debug LogDebug-LogTabID-12949-6886Find in FilesFind-in-Files - - 0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect.s04527852785TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init.s06537043704TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\main.c0170695269522TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c03600TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\lwip\include\lwIPWebServer\BasicWEB.h03420792079TextEditorC:\E\Dev\FreeRTOS\Demo\Common\ethernet\lwIP\core\tcp_in.c028410447104470100000010000001 - - - - - - - iaridepm.enu1-2-2606402-2-2200200142857203666288571619145-2-23321402-2-214043341002857340122142857203666 - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c deleted file mode 100644 index ecbe93822..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,233 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); -// for( s->count = 0; s->count < 4; ++s->count ) -// { - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); -// } - PSOCK_END(&s->sout); -} - -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 37afd33a5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage -

-


-

-

Task statistics

-Page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index 3cc2df397..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 4ed468a88..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index d4017cd19..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,363 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, - 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, - 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, - 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, - 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, - 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, - 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, - 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, - 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, - 0x68, 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, - 0x30, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, - 0x22, 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, - 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, - 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, - 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, - 0x74, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, - 0x20, 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, - 0x65, 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, - 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, - 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, - 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, - 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_index_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 5 diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c deleted file mode 100644 index e808688d2..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c +++ /dev/null @@ -1,338 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c deleted file mode 100644 index b9eff82fc..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c +++ /dev/null @@ -1,308 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Library includes. */ -#include "91x_lib.h" -#include "91x_enet.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/*-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define uipMAC_ADDR0 0x00 -#define uipMAC_ADDR1 0x12 -#define uipMAC_ADDR2 0x13 -#define uipMAC_ADDR3 0x14 -#define uipMAC_ADDR4 0x15 -#define uipMAC_ADDR5 0x20 - -/* IP address configuration. */ -#define uipIP_ADDR0 172 -#define uipIP_ADDR1 25 -#define uipIP_ADDR2 218 -#define uipIP_ADDR3 11 - -/* Netmask configuration. */ -#define uipNET_MASK0 255 -#define uipNET_MASK1 255 -#define uipNET_MASK2 255 -#define uipNET_MASK3 0 - -/* Gateway address configuration. */ -#define uipGATEWAY_ADDR0 172 -#define uipGATEWAY_ADDR1 25 -#define uipGATEWAY_ADDR2 218 -#define uipGATEWAY_ADDR3 1 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* uIP update frequencies. */ -#define uipMAX_BLOCK_TIME (configTICK_RATE_HZ / 4) - -/* Interrupt status bit definition. */ -#define uipDMI_RX_CURRENT_DONE 0x8000 - -/* If no buffers are available, then wait this long before looking again. */ -#define uipBUFFER_WAIT_DELAY ( 10 / portTICK_PERIOD_MS ) -#define uipBUFFER_WAIT_ATTEMPTS ( 10 ) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Used to return a pointer to the next buffer to be used. - */ -extern unsigned char *pcGetNextBuffer( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, uipNET_MASK0, uipNET_MASK1, uipNET_MASK2, uipNET_MASK3 ); - uip_setnetmask( xIPAddr ); - uip_ipaddr( xIPAddr, uipGATEWAY_ADDR0, uipGATEWAY_ADDR1, uipGATEWAY_ADDR2, uipGATEWAY_ADDR3 ); - uip_setdraddr( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - ENET_InitClocksGPIO(); - ENET_Init(); - portENTER_CRITICAL(); - { - ENET_Start(); - prvSetMACAddress(); - VIC_Config( ENET_ITLine, VIC_IRQ, 1 ); - VIC_ITCmd( ENET_ITLine, ENABLE ); - ENET_DMA->ISR = uipDMI_RX_CURRENT_DONE; - ENET_DMA->IER = uipDMI_RX_CURRENT_DONE; - } - portEXIT_CRITICAL(); - - - while(1) - { - /* Is there received data ready to be processed? */ - uip_len = ENET_HandleRxPkt( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ -portBASE_TYPE i; -static unsigned char *pcTxData; - - /* Get a DMA buffer into which we can write the data to send. */ - for( i = 0; i < uipBUFFER_WAIT_ATTEMPTS; i++ ) - { - pcTxData = pcGetNextBuffer(); - - if( pcTxData ) - { - break; - } - else - { - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - if( pcTxData ) - { - /* Copy the header into the Tx buffer. */ - memcpy( ( void * ) pcTxData, ( void * ) uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - memcpy( ( void * ) &( pcTxData[ uipTOTAL_FRAME_HEADER_SIZE ] ), ( void * ) uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - ENET_TxPkt( &pcTxData, uip_len ); - } -} -/*-----------------------------------------------------------*/ - -void ENET_IRQHandler(void) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Give the semaphore in case the uIP task needs waking. */ - xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt. */ - ENET_DMA->ISR = uipDMI_RX_CURRENT_DONE; - - /* Switch tasks if necessary. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = uipMAC_ADDR0; - xAddr.addr[ 1 ] = uipMAC_ADDR1; - xAddr.addr[ 2 ] = uipMAC_ADDR2; - xAddr.addr[ 3 ] = uipMAC_ADDR3; - xAddr.addr[ 4 ] = uipMAC_ADDR4; - xAddr.addr[ 5 ] = uipMAC_ADDR5; - uip_setethaddr( xAddr ); - - /* Write the MAC address to the MAC. */ - ENET_MAC->MAL = ( uipMAC_ADDR3 << 24 ) | ( uipMAC_ADDR2 << 16 ) | ( uipMAC_ADDR1 << 8 ) | ( uipMAC_ADDR0 ); - ENET_MAC->MAH = ( uipMAC_ADDR5 << 8 ) | ( uipMAC_ADDR4 ); -} - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h deleted file mode 100644 index d514d14d2..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h deleted file mode 100644 index 82ae09f48..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Use a guard to ensure the following few definitions are'nt included in -assembly files that include this header file. */ -#ifndef __IASMARM__ - #include - #include - extern uint32_t SystemFrequency; - void vMainConfigureTimerForRunTimeStats( void ); - unsigned long ulGetRunTimeCounterValue( void ); -#endif - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( SystemFrequency ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 0 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 31 priority levels */ -#endif - -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x1f -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -#define vPortSVCHandler SVC_Handler -#define xPortPendSVHandler PendSV_Handler -#define vPortSVCHandler SVC_Handler -#define xPortSysTickHandler SysTick_Handler - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf deleted file mode 100644 index a40542708..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf +++ /dev/null @@ -1,42 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x0; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0xc0; -define symbol __ICFEDIT_region_ROM_end__ = 0x40000; -define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x2800; -define symbol __ICFEDIT_size_svcstack__ = 0x400; -define symbol __ICFEDIT_size_irqstack__ = 0x400; -define symbol __ICFEDIT_size_fiqstack__ = 0x400; -define symbol __ICFEDIT_size_undstack__ = 0x400; -define symbol __ICFEDIT_size_abtstack__ = 0x400; -define symbol __ICFEDIT_size_heap__ = 0x7000; -/**** End of ICF editor section. ###ICF###*/ - - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { }; -define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { }; -define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; -define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { }; -define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -initialize by copy { readwrite }; -do not initialize { section .noinit }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; - -place in ROM_region { readonly }; -place in RAM_region { readwrite, - block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, - block UND_STACK, block ABT_STACK, block HEAP }; \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h deleted file mode 100644 index ab389e05d..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h +++ /dev/null @@ -1,1102 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 Cortex Microcontroller Software Interface - Peripheral - * Access Layer. - * - * This file describes the interrupt assignment and peripheral registers for - * the SmartFusion A2FxxxM3 familly of devices. - * - * SVN $Revision: 2331 $ - * SVN $Date: 2010-02-26 12:02:06 +0000 (Fri, 26 Feb 2010) $ - */ -#ifndef __A2FXXXM3_H__ -#define __A2FXXXM3_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers *********************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /*!< 2 Hard Fault Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** SmartFusion specific Interrupt Numbers *********************************************************/ - WdogWakeup_IRQn = 0, /*!< WatchDog wakeup interrupt */ - BrownOut_1_5V_IRQn = 1, /*!< Supply dropped below 1.5V */ - BrownOut_3_3V_IRQn = 2, /*!< Supply dropped below 1.5V */ - RTC_Match_IRQn = 3, /*!< RTC match interrupt */ - RTCIF_Pub_IRQn = 4, /*!< RTC interface push button interrupt */ - EthernetMAC_IRQn = 5, /*!< Ethernet MAC interrupt */ - IAP_IRQn = 6, /*!< In Application Programming (IAP) interrupt */ - ENVM0_IRQn = 7, /*!< eNVM0 operation completion interrupt */ - ENVM1_IRQn = 8, /*!< eNVM1 operation completion interrupt */ - DMA_IRQn = 9, /*!< Peripheral DMA interrupt */ - UART0_IRQn = 10, /*!< UART0 interrupt */ - UART1_IRQn = 11, /*!< UART1 interrupt */ - SPI0_IRQn = 12, /*!< SPI0 interrupt */ - SPI1_IRQn = 13, /*!< SP1 interrupt */ - I2C0_IRQn = 14, /*!< I2C0 interrupt */ - I2C0_SMBAlert_IRQn = 15, /*!< I2C0 SMBus Alert interrupt */ - I2C0_SMBus_IRQn = 16, /*!< I2C0 SMBus Suspend interrupt */ - I2C1_IRQn = 17, /*!< I2C1 interrupt */ - I2C1_SMBAlert_IRQn = 18, /*!< I2C1 SMBus Alert interrupt */ - I2C1_SMBus_IRQn = 19, /*!< I2C1 SMBus Suspend interrupt */ - Timer1_IRQn = 20, /*!< Timer1 interrupt */ - Timer2_IRQn = 21, /*!< Timer2 interrupt */ - PLL_Lock_IRQn = 22, /*!< PLL lock interrupt */ - PLL_LockLost_IRQn = 23, /*!< PLL loss of lock interrupt */ - CommError_IRQn = 24, /*!< Communications Matrix error interrupt */ - Fabric_IRQn = 31, /*!< FPGA fabric interrupt */ - GPIO0_IRQn = 32, /*!< GPIO 0 interrupt */ - GPIO1_IRQn = 33, /*!< GPIO 1 interrupt */ - GPIO2_IRQn = 34, /*!< GPIO 2 interrupt */ - GPIO3_IRQn = 35, /*!< GPIO 3 interrupt */ - GPIO4_IRQn = 36, /*!< GPIO 4 interrupt */ - GPIO5_IRQn = 37, /*!< GPIO 5 interrupt */ - GPIO6_IRQn = 38, /*!< GPIO 6 interrupt */ - GPIO7_IRQn = 39, /*!< GPIO 7 interrupt */ - GPIO8_IRQn = 40, /*!< GPIO 8 interrupt */ - GPIO9_IRQn = 41, /*!< GPIO 9 interrupt */ - GPIO10_IRQn = 42, /*!< GPIO 10 interrupt */ - GPIO11_IRQn = 43, /*!< GPIO 11 interrupt */ - GPIO12_IRQn = 44, /*!< GPIO 12 interrupt */ - GPIO13_IRQn = 45, /*!< GPIO 13 interrupt */ - GPIO14_IRQn = 46, /*!< GPIO 14 interrupt */ - GPIO15_IRQn = 47, /*!< GPIO 15 interrupt */ - GPIO16_IRQn = 48, /*!< GPIO 16 interrupt */ - GPIO17_IRQn = 49, /*!< GPIO 17 interrupt */ - GPIO18_IRQn = 50, /*!< GPIO 18 interrupt */ - GPIO19_IRQn = 51, /*!< GPIO 19 interrupt */ - GPIO20_IRQn = 52, /*!< GPIO 20 interrupt */ - GPIO21_IRQn = 53, /*!< GPIO 21 interrupt */ - GPIO22_IRQn = 54, /*!< GPIO 22 interrupt */ - GPIO23_IRQn = 55, /*!< GPIO 23 interrupt */ - GPIO24_IRQn = 56, /*!< GPIO 24 interrupt */ - GPIO25_IRQn = 57, /*!< GPIO 25 interrupt */ - GPIO26_IRQn = 58, /*!< GPIO 26 interrupt */ - GPIO27_IRQn = 59, /*!< GPIO 27 interrupt */ - GPIO28_IRQn = 60, /*!< GPIO 28 interrupt */ - GPIO29_IRQn = 61, /*!< GPIO 29 interrupt */ - GPIO30_IRQn = 62, /*!< GPIO 30 interrupt */ - GPIO31_IRQn = 63, /*!< GPIO 31 interrupt */ - ACE_PC0_Flag0_IRQn = 64, /*!< ACE SSE program counter 0 flag 0 interrupt */ - ACE_PC0_Flag1_IRQn = 65, /*!< ACE SSE program counter 0 flag 1 interrupt */ - ACE_PC0_Flag2_IRQn = 66, /*!< ACE SSE program counter 0 flag 2 interrupt */ - ACE_PC0_Flag3_IRQn = 67, /*!< ACE SSE program counter 0 flag 3 interrupt */ - ACE_PC1_Flag0_IRQn = 68, /*!< ACE SSE program counter 1 flag 0 interrupt */ - ACE_PC1_Flag1_IRQn = 69, /*!< ACE SSE program counter 1 flag 1 interrupt */ - ACE_PC1_Flag2_IRQn = 70, /*!< ACE SSE program counter 1 flag 2 interrupt */ - ACE_PC1_Flag3_IRQn = 71, /*!< ACE SSE program counter 1 flag 3 interrupt */ - ACE_PC2_Flag0_IRQn = 72, /*!< ACE SSE program counter 2 flag 0 interrupt */ - ACE_PC2_Flag1_IRQn = 73, /*!< ACE SSE program counter 2 flag 1 interrupt */ - ACE_PC2_Flag2_IRQn = 74, /*!< ACE SSE program counter 2 flag 2 interrupt */ - ACE_PC2_Flag3_IRQn = 75, /*!< ACE SSE program counter 2 flag 3 interrupt */ - ACE_ADC0_DataValid_IRQn = 76, /*!< ACE ADC0 data valid interrupt */ - ACE_ADC1_DataValid_IRQn = 77, /*!< ACE ADC1 data valid interrupt */ - ACE_ADC2_DataValid_IRQn = 78, /*!< ACE ADC2 data valid interrupt */ - ACE_ADC0_CalDone_IRQn = 79, /*!< ACE ADC0 calibration done interrupt */ - ACE_ADC1_CalDone_IRQn = 80, /*!< ACE ADC1 calibration done interrupt */ - ACE_ADC2_CalDone_IRQn = 81, /*!< ACE ADC2 calibration done interrupt */ - ACE_ADC0_CalStart_IRQn = 82, /*!< ACE ADC0 calibration start interrupt */ - ACE_ADC1_CalStart_IRQn = 83, /*!< ACE ADC1 calibration start interrupt */ - ACE_ADC2_CalStart_IRQn = 84, /*!< ACE ADC2 calibration start interrupt */ - ACE_Comp0_Fall_IRQn = 85, /*!< ACE comparator 0 falling under reference interrupt */ - ACE_Comp1_Fall_IRQn = 86, /*!< ACE comparator 1 falling under reference interrupt */ - ACE_Comp2_Fall_IRQn = 87, /*!< ACE comparator 2 falling under reference interrupt */ - ACE_Comp3_Fall_IRQn = 88, /*!< ACE comparator 3 falling under reference interrupt */ - ACE_Comp4_Fall_IRQn = 89, /*!< ACE comparator 4 falling under reference interrupt */ - ACE_Comp5_Fall_IRQn = 90, /*!< ACE comparator 5 falling under reference interrupt */ - ACE_Comp6_Fall_IRQn = 91, /*!< ACE comparator 6 falling under reference interrupt */ - ACE_Comp7_Fall_IRQn = 92, /*!< ACE comparator 7 falling under reference interrupt */ - ACE_Comp8_Fall_IRQn = 93, /*!< ACE comparator 8 falling under reference interrupt */ - ACE_Comp9_Fall_IRQn = 94, /*!< ACE comparator 9 falling under reference interrupt */ - ACE_Comp10_Fall_IRQn = 95, /*!< ACE comparator 10 falling under reference interrupt */ - ACE_Comp11_Fall_IRQn = 96, /*!< ACE comparator 11 falling under reference interrupt */ - ACE_Comp0_Rise_IRQn = 97, /*!< ACE comparator 0 rising over reference interrupt */ - ACE_Comp1_Rise_IRQn = 98, /*!< ACE comparator 1 rising over reference interrupt */ - ACE_Comp2_Rise_IRQn = 99, /*!< ACE comparator 2 rising over reference interrupt */ - ACE_Comp3_Rise_IRQn = 100, /*!< ACE comparator 3 rising over reference interrupt */ - ACE_Comp4_Rise_IRQn = 101, /*!< ACE comparator 4 rising over reference interrupt */ - ACE_Comp5_Rise_IRQn = 102, /*!< ACE comparator 5 rising over reference interrupt */ - ACE_Comp6_Rise_IRQn = 103, /*!< ACE comparator 6 rising over reference interrupt */ - ACE_Comp7_Rise_IRQn = 104, /*!< ACE comparator 7 rising over reference interrupt */ - ACE_Comp8_Rise_IRQn = 105, /*!< ACE comparator 8 rising over reference interrupt */ - ACE_Comp9_Rise_IRQn = 106, /*!< ACE comparator 9 rising over reference interrupt */ - ACE_Comp10_Rise_IRQn = 107, /*!< ACE comparator 10 rising over reference interrupt */ - ACE_Comp11_Rise_IRQn = 108, /*!< ACE comparator 11 rising over reference interrupt */ - ACE_ADC0_FifoFull_IRQn = 109, /*!< ACE ADC0 FIFO full interrupt */ - ACE_ADC0_FifoAFull_IRQn = 110, /*!< ACE ADC0 FIFO almost full interrupt */ - ACE_ADC0_FifoEmpty_IRQn = 111, /*!< ACE ADC0 FIFO empty interrupt */ - ACE_ADC1_FifoFull_IRQn = 112, /*!< ACE ADC1 FIFO full interrupt */ - ACE_ADC1_FifoAFull_IRQn = 113, /*!< ACE ADC1 FIFO almost full interrupt */ - ACE_ADC1_FifoEmpty_IRQn = 114, /*!< ACE ADC1 FIFO empty interrupt */ - ACE_ADC2_FifoFull_IRQn = 115, /*!< ACE ADC2 FIFO full interrupt */ - ACE_ADC2_FifoAFull_IRQn = 116, /*!< ACE ADC2 FIFO almost full interrupt */ - ACE_ADC2_FifoEmpty_IRQn = 117, /*!< ACE ADC2 FIFO empty interrupt */ - ACE_PPE_Flag0_IRQn = 118, /*!< ACE post processing engine flag 0 interrupt */ - ACE_PPE_Flag1_IRQn = 119, /*!< ACE post processing engine flag 1 interrupt */ - ACE_PPE_Flag2_IRQn = 120, /*!< ACE post processing engine flag 2 interrupt */ - ACE_PPE_Flag3_IRQn = 121, /*!< ACE post processing engine flag 3 interrupt */ - ACE_PPE_Flag4_IRQn = 122, /*!< ACE post processing engine flag 4 interrupt */ - ACE_PPE_Flag5_IRQn = 123, /*!< ACE post processing engine flag 5 interrupt */ - ACE_PPE_Flag6_IRQn = 124, /*!< ACE post processing engine flag 6 interrupt */ - ACE_PPE_Flag7_IRQn = 125, /*!< ACE post processing engine flag 7 interrupt */ - ACE_PPE_Flag8_IRQn = 126, /*!< ACE post processing engine flag 8 interrupt */ - ACE_PPE_Flag9_IRQn = 127, /*!< ACE post processing engine flag 9 interrupt */ - ACE_PPE_Flag10_IRQn = 128, /*!< ACE post processing engine flag 10 interrupt */ - ACE_PPE_Flag11_IRQn = 129, /*!< ACE post processing engine flag 11 interrupt */ - ACE_PPE_Flag12_IRQn = 130, /*!< ACE post processing engine flag 12 interrupt */ - ACE_PPE_Flag13_IRQn = 131, /*!< ACE post processing engine flag 13 interrupt */ - ACE_PPE_Flag14_IRQn = 132, /*!< ACE post processing engine flag 14 interrupt */ - ACE_PPE_Flag15_IRQn = 133, /*!< ACE post processing engine flag 15 interrupt */ - ACE_PPE_Flag16_IRQn = 134, /*!< ACE post processing engine flag 16 interrupt */ - ACE_PPE_Flag17_IRQn = 135, /*!< ACE post processing engine flag 17 interrupt */ - ACE_PPE_Flag18_IRQn = 136, /*!< ACE post processing engine flag 18 interrupt */ - ACE_PPE_Flag19_IRQn = 137, /*!< ACE post processing engine flag 19 interrupt */ - ACE_PPE_Flag20_IRQn = 138, /*!< ACE post processing engine flag 20 interrupt */ - ACE_PPE_Flag21_IRQn = 139, /*!< ACE post processing engine flag 21 interrupt */ - ACE_PPE_Flag22_IRQn = 140, /*!< ACE post processing engine flag 22 interrupt */ - ACE_PPE_Flag23_IRQn = 141, /*!< ACE post processing engine flag 23 interrupt */ - ACE_PPE_Flag24_IRQn = 142, /*!< ACE post processing engine flag 24 interrupt */ - ACE_PPE_Flag25_IRQn = 143, /*!< ACE post processing engine flag 25 interrupt */ - ACE_PPE_Flag26_IRQn = 144, /*!< ACE post processing engine flag 26 interrupt */ - ACE_PPE_Flag27_IRQn = 145, /*!< ACE post processing engine flag 27 interrupt */ - ACE_PPE_Flag28_IRQn = 146, /*!< ACE post processing engine flag 28 interrupt */ - ACE_PPE_Flag29_IRQn = 147, /*!< ACE post processing engine flag 29 interrupt */ - ACE_PPE_Flag30_IRQn = 148, /*!< ACE post processing engine flag 30 interrupt */ - ACE_PPE_Flag31_IRQn = 149 /*!< ACE post processing engine flag 31 interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< SmartFusion includes a MPU */ -#define __NVIC_PRIO_BITS 5 /*!< SmartFusion uses 5 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -#include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "system_a2fxxxm3.h" /* SmartFusion System */ - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ -#if defined ( __CC_ARM ) - /* Enable anonymous unions when building using Keil-MDK */ - #pragma anon_unions -#endif -/*----------------------------------------------------------------------------*/ -/*----------------------------------- UART -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - union - { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLR; - uint32_t RESERVED0; - }; - - union - { - __IO uint8_t DMR; - __IO uint8_t IER; - uint32_t RESERVED1; - }; - - union - { - __IO uint8_t IIR; - __IO uint8_t FCR; - uint32_t RESERVED2; - }; - - __IO uint8_t LCR; - uint8_t RESERVED3; - uint16_t RESERVED4; - __IO uint8_t MCR; - uint8_t RESERVED5; - uint16_t RESERVED6; - __I uint8_t LSR; - uint8_t RESERVED7; - uint16_t RESERVED8; - __I uint8_t MSR; - uint8_t RESERVED9; - uint16_t RESERVED10; - __IO uint8_t SR; - uint8_t RESERVED11; - uint16_t RESERVED12; -} UART_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t RESERVED0[32]; - - __IO uint32_t IER_ERBFI; - __IO uint32_t IER_ETBEI; - __IO uint32_t IER_ELSI; - __IO uint32_t IER_EDSSI; - - uint32_t RESERVED1[28]; - - __IO uint32_t FCR_ENABLE; - __IO uint32_t FCR_CLEAR_RX_FIFO; - __IO uint32_t FCR_CLEAR_TX_FIFO; - __IO uint32_t FCR_RXRDY_TXRDYN_EN; - __IO uint32_t FCR_RESERVED0; - __IO uint32_t FCR_RESERVED1; - __IO uint32_t FCR_RX_TRIG0; - __IO uint32_t FCR_RX_TRIG1; - - uint32_t RESERVED2[24]; - - __IO uint32_t LCR_WLS0; - __IO uint32_t LCR_WLS1; - __IO uint32_t LCR_STB; - __IO uint32_t LCR_PEN; - __IO uint32_t LCR_EPS; - __IO uint32_t LCR_SP; - __IO uint32_t LCR_SB; - __IO uint32_t LCR_DLAB; - - uint32_t RESERVED3[24]; - - __IO uint32_t MCR_DTR; - __IO uint32_t MCR_RTS; - __IO uint32_t MCR_OUT1; - __IO uint32_t MCR_OUT2; - __IO uint32_t MCR_LOOP; - - uint32_t RESERVED4[27]; - - __I uint32_t LSR_DR; - __I uint32_t LSR_OE; - __I uint32_t LSR_PE; - __I uint32_t LSR_FE; - __I uint32_t LSR_BI; - __I uint32_t LSR_THRE; - __I uint32_t LSR_TEMT; - __I uint32_t LSR_FIER; - - uint32_t RESERVED5[24]; - - __I uint32_t MSR_DCTS; - __I uint32_t MSR_DDSR; - __I uint32_t MSR_TERI; - __I uint32_t MSR_DDCD; - __I uint32_t MSR_CTS; - __I uint32_t MSR_DSR; - __I uint32_t MSR_RI; - __I uint32_t MSR_DCD; - -} UART_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- I2C ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint8_t CTRL; - uint8_t RESERVED0; - uint16_t RESERVED1; - uint8_t STATUS; - uint8_t RESERVED2; - uint16_t RESERVED3; - __IO uint8_t DATA; - uint8_t RESERVED4; - uint16_t RESERVED5; - __IO uint8_t ADDR; - uint8_t RESERVED6; - uint16_t RESERVED7; - __IO uint8_t SMBUS; - uint8_t RESERVED8; - uint16_t RESERVED9; - __IO uint8_t FREQ; - uint8_t RESERVED10; - uint16_t RESERVED11; - __IO uint8_t GLITCHREG; - uint8_t RESERVED12; - uint16_t RESERVED13; -} I2C_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CTRL_CR0; - uint32_t CTRL_CR1; - uint32_t CTRL_AA; - uint32_t CTRL_SI; - uint32_t CTRL_STO; - uint32_t CTRL_STA; - uint32_t CTRL_ENS1; - uint32_t CTRL_CR2; - uint32_t RESERVED0[56]; - uint32_t DATA_DIR; - uint32_t RESERVED1[31]; - uint32_t ADDR_GC; -} I2C_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- SPI ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CONTROL; - __IO uint32_t TXRXDF_SIZE; - __I uint32_t STATUS; - __O uint32_t INT_CLEAR; - __I uint32_t RX_DATA; - __O uint32_t TX_DATA; - __IO uint32_t CLK_GEN; - __IO uint32_t SLAVE_SELECT; - __I uint32_t MIS; - __I uint32_t RIS; -} SPI_TypeDef; - -typedef struct -{ - __IO uint32_t CTRL_ENABLE; - __IO uint32_t CTRL_MASTER; - __IO uint32_t CTRL_MODE[2]; - __IO uint32_t CTRL_RX_INT_EN; - __IO uint32_t CTRL_TX_INT_EN; - __IO uint32_t CTRL_RX_OVERFLOW_INT_EN; - __IO uint32_t CTRL_TX_UNDERRUN_INT_EN; - __IO uint32_t CTRL_TXRXDFCOUNT[16]; - __IO uint32_t CTRL_SPO; - __IO uint32_t CTRL_SPH; - __IO uint32_t CTRL_RESERVED[6]; - - __IO uint32_t TXRXDF_SIZE[32]; - - __I uint32_t STATUS_TX_DONE; - __I uint32_t STATUS_RX_RDY; - __I uint32_t STATUS_RX_CH_OV; - __I uint32_t STATUS_TX_CH_UV; - __I uint32_t STATUS_RX_FIFO_FULL; - __I uint32_t STATUS_RX_FIFO_FULL_NEXT; - __I uint32_t STATUS_RX_FIFO_EMPTY; - __I uint32_t STATUS_RX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_TX_FIFO_FULL; - __I uint32_t STATUS_TX_FIFO_FULL_NEXT; - __I uint32_t STATUS_TX_FIFO_EMPTY; - __I uint32_t STATUS_TX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_RESERVED[20]; - - __O uint32_t INT_CLEAR_TX_DONE; - __O uint32_t INT_CLEAR_RX_RDY; - __O uint32_t INT_CLEAR_RX_OVER; - __O uint32_t INT_CLEAR_TX_UNDER; - __O uint32_t INT_CLEAR[28]; - - __I uint32_t RX_DATA[32]; - __O uint32_t TX_DATA[32]; - __IO uint32_t CLK_GEN[32]; - __IO uint32_t SLAVE_SELECT[32]; - __I uint32_t MIS_TX_DONE; - __I uint32_t MIS_RX_RDY; - __I uint32_t MIS_RX_OVER; - __I uint32_t MIS_TX_UNDER; - __I uint32_t MIS[28]; - __I uint32_t RIS[32]; -} SPI_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- GPIO -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t GPIO_0_CFG; - __IO uint32_t GPIO_1_CFG; - __IO uint32_t GPIO_2_CFG; - __IO uint32_t GPIO_3_CFG; - __IO uint32_t GPIO_4_CFG; - __IO uint32_t GPIO_5_CFG; - __IO uint32_t GPIO_6_CFG; - __IO uint32_t GPIO_7_CFG; - __IO uint32_t GPIO_8_CFG; - __IO uint32_t GPIO_9_CFG; - __IO uint32_t GPIO_10_CFG; - __IO uint32_t GPIO_11_CFG; - __IO uint32_t GPIO_12_CFG; - __IO uint32_t GPIO_13_CFG; - __IO uint32_t GPIO_14_CFG; - __IO uint32_t GPIO_15_CFG; - __IO uint32_t GPIO_16_CFG; - __IO uint32_t GPIO_17_CFG; - __IO uint32_t GPIO_18_CFG; - __IO uint32_t GPIO_19_CFG; - __IO uint32_t GPIO_20_CFG; - __IO uint32_t GPIO_21_CFG; - __IO uint32_t GPIO_22_CFG; - __IO uint32_t GPIO_23_CFG; - __IO uint32_t GPIO_24_CFG; - __IO uint32_t GPIO_25_CFG; - __IO uint32_t GPIO_26_CFG; - __IO uint32_t GPIO_27_CFG; - __IO uint32_t GPIO_28_CFG; - __IO uint32_t GPIO_29_CFG; - __IO uint32_t GPIO_30_CFG; - __IO uint32_t GPIO_31_CFG; - __IO uint32_t GPIO_IRQ; - __I uint32_t GPIO_IN; - __IO uint32_t GPIO_OUT; -} GPIO_TypeDef; - -typedef struct -{ - __IO uint32_t GPIO_0_CFG[32]; - __IO uint32_t GPIO_1_CFG[32]; - __IO uint32_t GPIO_2_CFG[32]; - __IO uint32_t GPIO_3_CFG[32]; - __IO uint32_t GPIO_4_CFG[32]; - __IO uint32_t GPIO_5_CFG[32]; - __IO uint32_t GPIO_6_CFG[32]; - __IO uint32_t GPIO_7_CFG[32]; - __IO uint32_t GPIO_8_CFG[32]; - __IO uint32_t GPIO_9_CFG[32]; - __IO uint32_t GPIO_10_CFG[32]; - __IO uint32_t GPIO_11_CFG[32]; - __IO uint32_t GPIO_12_CFG[32]; - __IO uint32_t GPIO_13_CFG[32]; - __IO uint32_t GPIO_14_CFG[32]; - __IO uint32_t GPIO_15_CFG[32]; - __IO uint32_t GPIO_16_CFG[32]; - __IO uint32_t GPIO_17_CFG[32]; - __IO uint32_t GPIO_18_CFG[32]; - __IO uint32_t GPIO_19_CFG[32]; - __IO uint32_t GPIO_20_CFG[32]; - __IO uint32_t GPIO_21_CFG[32]; - __IO uint32_t GPIO_22_CFG[32]; - __IO uint32_t GPIO_23_CFG[32]; - __IO uint32_t GPIO_24_CFG[32]; - __IO uint32_t GPIO_25_CFG[32]; - __IO uint32_t GPIO_26_CFG[32]; - __IO uint32_t GPIO_27_CFG[32]; - __IO uint32_t GPIO_28_CFG[32]; - __IO uint32_t GPIO_29_CFG[32]; - __IO uint32_t GPIO_30_CFG[32]; - __IO uint32_t GPIO_31_CFG[32]; - __IO uint32_t GPIO_IRQ[32]; - __I uint32_t GPIO_IN[32]; - __IO uint32_t GPIO_OUT[32]; -} GPIO_BitBand_TypeDef; - - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- RTC ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t COUNTER0_REG; - __IO uint32_t COUNTER1_REG; - __IO uint32_t COUNTER2_REG; - __IO uint32_t COUNTER3_REG; - __IO uint32_t COUNTER4_REG; - - __IO uint32_t RESERVED0[3]; - - __IO uint32_t MATCHREG0_REG; - __IO uint32_t MATCHREG1_REG; - __IO uint32_t MATCHREG2_REG; - __IO uint32_t MATCHREG3_REG; - __IO uint32_t MATCHREG4_REG; - - __IO uint32_t RESERVED1[3]; - - __IO uint32_t MATCHBITS0_REG; - __IO uint32_t MATCHBITS1_REG; - __IO uint32_t MATCHBITS2_REG; - __IO uint32_t MATCHBITS3_REG; - __IO uint32_t MATCHBITS4_REG; - - __IO uint32_t RESERVED2[3]; - - __IO uint32_t CTRL_STAT_REG; -} RTC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------------------- Timer -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t TIM1_VAL; - __IO uint32_t TIM1_LOADVAL; - __IO uint32_t TIM1_BGLOADVAL; - __IO uint32_t TIM1_CTRL; - __IO uint32_t TIM1_RIS; - __I uint32_t TIM1_MIS; - - __I uint32_t TIM2_VAL; - __IO uint32_t TIM2_LOADVAL; - __IO uint32_t TIM2_BGLOADVAL; - __IO uint32_t TIM2_CTRL; - __IO uint32_t TIM2_RIS; - __I uint32_t TIM2_MIS; - - __I uint32_t TIM64_VAL_U; - __I uint32_t TIM64_VAL_L; - __IO uint32_t TIM64_LOADVAL_U; - __IO uint32_t TIM64_LOADVAL_L; - __IO uint32_t TIM64_BGLOADVAL_U; - __IO uint32_t TIM64_BGLOADVAL_L; - __IO uint32_t TIM64_CTRL; - __IO uint32_t TIM64_RIS; - __I uint32_t TIM64_MIS; - __IO uint32_t TIM64_MODE; -} TIMER_TypeDef; - -/*------------------------------------------------------------------------------ - * Timer bit band - */ -typedef struct -{ - __I uint32_t TIM1_VALUE_BIT[32]; - __IO uint32_t TIM1_LOADVAL[32]; - __IO uint32_t TIM1_BGLOADVAL[32]; - - __IO uint32_t TIM1ENABLE; - __IO uint32_t TIM1MODE; - __IO uint32_t TIM1INTEN; - __IO uint32_t TIM1_CTRL_RESERVED[29]; - __IO uint32_t TIM1_RIS[32]; - __I uint32_t TIM1_MIS[32]; - - __I uint32_t TIM2_VALUE[32]; - __IO uint32_t TIM2_LOADVAL[32]; - __IO uint32_t TIM2_BGLOADVAL[32]; - - __IO uint32_t TIM2ENABLE; - __IO uint32_t TIM2MODE; - __IO uint32_t TIM2INTEN; - __IO uint32_t TIM2_CTRL[29]; - __IO uint32_t TIM2_RIS[32]; - __I uint32_t TIM2_MIS[32]; - - __I uint32_t TIM64VALUEU[32]; - __I uint32_t TIM64VALUEL[32]; - __IO uint32_t TIM64LOADVALUEU[32]; - __IO uint32_t TIM64LOADVALUEL[32]; - __IO uint32_t TIM64BGLOADVALUEU[32]; - __IO uint32_t TIM64BGLOADVALUEL[32]; - __IO uint32_t TIM64ENABLE; - __IO uint32_t TIM64MODE; - __IO uint32_t TIM64INTEN; - __IO uint32_t TIM64_CTRL[29]; - __IO uint32_t TIM64_RIS[32]; - __I uint32_t TIM64_MIS[32]; - __IO uint32_t TIM64_MODE[32]; -} TIMER_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*--------------------------------- Watchdog ---------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t WDOGVALUE; - __IO uint32_t WDOGLOAD; - __IO uint32_t WDOGMVRP; - __O uint32_t WDOGREFRESH; - __IO uint32_t WDOGENABLE; - __IO uint32_t WDOGCONTROL; - __I uint32_t WDOGSTATUS; - __IO uint32_t WDOGRIS; - __I uint32_t WDOGMIS; -} WATCHDOG_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Real Time Clock ------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Peripherals DMA ------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CRTL; - __IO uint32_t STATUS; - __IO uint32_t BUFFER_A_SRC_ADDR; - __IO uint32_t BUFFER_A_DEST_ADDR; - __IO uint32_t BUFFER_A_TRANSFER_COUNT; - __IO uint32_t BUFFER_B_SRC_ADDR; - __IO uint32_t BUFFER_B_DEST_ADDR; - __IO uint32_t BUFFER_B_TRANSFER_COUNT; -} PDMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t RATIO_HIGH_LOW; - __IO uint32_t BUFFER_STATUS; - uint32_t RESERVED[6]; - PDMA_Channel_TypeDef CHANNEL[8]; -} PDMA_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ Ethernet MAC --------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CSR0; - uint32_t RESERVED0; - __IO uint32_t CSR1; - uint32_t RESERVED1; - __IO uint32_t CSR2; - uint32_t RESERVED2; - __IO uint32_t CSR3; - uint32_t RESERVED3; - __IO uint32_t CSR4; - uint32_t RESERVED4; - __IO uint32_t CSR5; - uint32_t RESERVED5; - __IO uint32_t CSR6; - uint32_t RESERVED6; - __IO uint32_t CSR7; - uint32_t RESERVED7; - __IO uint32_t CSR8; - uint32_t RESERVED8; - __IO uint32_t CSR9; - uint32_t RESERVED9; - uint32_t RESERVED10; - uint32_t RESERVED11; - __IO uint32_t CSR11; -} MAC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- Analog Conversion Engine (ACE) ----------------------*/ -/*----------------------------------------------------------------------------*/ -/* Analog quad configuration */ -typedef struct -{ - __IO uint8_t b0; - uint8_t reserved0_0; - uint16_t reserved0_1; - __IO uint8_t b1; - uint8_t reserved1_0; - uint16_t reserved1_1; - __IO uint8_t b2; - uint8_t reserved2_0; - uint16_t reserved2_1; - __IO uint8_t b3; - uint8_t reserved3_0; - uint16_t reserved3_1; - __IO uint8_t b4; - uint8_t reserved4_0; - uint16_t reserved4_1; - __IO uint8_t b5; - uint8_t reserved5_0; - uint16_t reserved5_1; - __IO uint8_t b6; - uint8_t reserved6_0; - uint16_t reserved6_1; - __IO uint8_t b7; - uint8_t reserved7_0; - uint16_t reserved7_1; - __IO uint8_t b8; - uint8_t reserved8_0; - uint16_t reserved8_1; - __IO uint8_t b9; - uint8_t reserved9_0; - uint16_t reserved9_1; - __IO uint8_t b10; - uint8_t reserved10_0; - uint16_t reserved10_1; - __IO uint8_t b11; - uint8_t reserved11_0; - uint16_t reserved11_1; -} AQ_config_t; - -/* ACE memory map layout */ -typedef struct -{ - __O uint32_t NOP; - __IO uint32_t SSE_TS_CTRL; - __IO uint32_t ADC_SYNC_CONV; - __IO uint32_t ANA_COMM_CTRL; - __IO uint32_t DAC_SYNC_CTRL; - __IO uint32_t PDMA_REQUEST; - uint32_t RESERVED0[10]; - __O uint32_t PC0_LO; - __O uint32_t PC0_HI; - __IO uint32_t PC0_CTRL; - __IO uint32_t PC0_DLY; - __IO uint32_t ADC0_CONV_CTRL; - __IO uint32_t ADC0_STC; - __IO uint32_t ADC0_TVC; - __IO uint32_t ADC0_MISC_CTRL; - __IO uint32_t DAC0_CTRL; - __IO uint32_t DAC0_BYTE0; - __IO uint32_t DAC0_BYTE1; - __IO uint32_t DAC0_BYTE2; - __IO uint32_t LC0; - __O uint32_t LC0_JMP_LO; - __O uint32_t LC0_JMP_HI; - __O uint32_t PC0_FLAGS; - __O uint32_t PC1_LO; - __O uint32_t PC1_HI; - __IO uint32_t PC1_CTRL; - __IO uint32_t PC1_DLY; - __IO uint32_t ADC1_CONV_CTRL; - __IO uint32_t ADC1_STC; - __IO uint32_t ADC1_TVC; - __IO uint32_t ADC1_MISC_CTRL; - __IO uint32_t DAC1_CTRL; - __IO uint32_t DAC1_BYTE0; - __IO uint32_t DAC1_BYTE1; - __IO uint32_t DAC1_BYTE2; - __IO uint32_t LC1; - __O uint32_t LC1_JMP_LO; - __O uint32_t LC1_JMP_HI; - __O uint32_t PC1_FLAGS; - __O uint32_t PC2_LO; - __O uint32_t PC2_HI; - __IO uint32_t PC2_CTRL; - __IO uint32_t PC2_DLY; - __IO uint32_t ADC2_CONV_CTRL; - __IO uint32_t ADC2_STC; - __IO uint32_t ADC2_TVC; - __IO uint32_t ADC2_MISC_CTRL; - __IO uint32_t DAC2_CTRL; - __IO uint32_t DAC2_BYTE0; - __IO uint32_t DAC2_BYTE1; - __IO uint32_t DAC2_BYTE2; - __IO uint32_t LC2; - __O uint32_t LC2_JMP_LO; - __O uint32_t LC2_JMP_HI; - __O uint32_t PC2_FLAGS; - uint32_t RESERVED1; - uint32_t RESERVED2; - __IO uint32_t SSE_RAM_LO_IDATA; - __IO uint32_t SSE_RAM_HI_IDATA; - uint32_t RESERVED3[61]; - AQ_config_t ACB_DATA[6]; - uint32_t RESERVED4[59]; - __IO uint32_t SSE_PC0; - __IO uint32_t SSE_PC1; - __IO uint32_t SSE_PC2; - uint32_t RESERVED5[57]; - __IO uint32_t SSE_DAC0_BYTES01; - __IO uint32_t SSE_DAC1_BYTES01; - __IO uint32_t SSE_DAC2_BYTES01; - uint32_t RESERVED6[61]; - __O uint32_t SSE_ADC0_RESULTS; - __O uint32_t SSE_ADC1_RESULTS; - __O uint32_t SSE_ADC2_RESULTS; - uint32_t RESERVED7[61]; - __O uint32_t SSE_PDMA_DATAIN; - uint32_t RESERVED8[63]; - __IO uint32_t SSE_RAM_DATA[512]; - __I uint32_t ADC0_STATUS; - __I uint32_t ADC1_STATUS; - __I uint32_t ADC2_STATUS; - __I uint32_t COMPARATOR_STATUS; - uint32_t RESERVED9[124]; - __IO uint32_t SSE_IRQ_EN; - __I uint32_t SSE_IRQ; - __O uint32_t SSE_IRQ_CLR; - __IO uint32_t COMP_IRQ_EN; - __I uint32_t COMP_IRQ; - __O uint32_t COMP_IRQ_CLR; - __IO uint32_t PPE_FIFO_IRQ_EN; - __I uint32_t PPE_FIFO_IRQ; - __O uint32_t PPE_FIFO_IRQ_CLR; - __IO uint32_t PPE_FLAGS0_IRQ_EN; - __I uint32_t PPE_FLAGS0_IRQ; - __O uint32_t PPE_FLAGS0_IRQ_CLR; - __IO uint32_t PPE_FLAGS1_IRQ_EN; - __I uint32_t PPE_FLAGS1_IRQ; - __O uint32_t PPE_FLAGS1_IRQ_CLR; - __IO uint32_t PPE_FLAGS2_IRQ_EN; - __I uint32_t PPE_FLAGS2_IRQ; - __O uint32_t PPE_FLAGS2_IRQ_CLR; - __IO uint32_t PPE_FLAGS3_IRQ_EN; - __I uint32_t PPE_FLAGS3_IRQ; - __O uint32_t PPE_FLAGS3_IRQ_CLR; - __IO uint32_t PPE_SFFLAGS_IRQ_EN; - __I uint32_t PPE_SFFLAGS_IRQ; - __O uint32_t PPE_SFFLAGS_IRQ_CLR; - __IO uint32_t FPGA_FLAGS_SEL; - uint32_t RESERVED10[39]; - __IO uint32_t PPE_PDMA_CTRL; - __I uint32_t PDMA_STATUS; - __IO uint32_t PPE_PDMA_DATAOUT; - uint32_t RESERVED11[61]; - __I uint32_t PPE_NOP; - __IO uint32_t PPE_CTRL; - __IO uint32_t PPE_PC_ETC; - __IO uint32_t PPE_SF; - __IO uint32_t PPE_SCRATCH; - uint32_t RESERVED12; - __IO uint32_t ALU_CTRL; - __I uint32_t ALU_STATUS; - __IO uint32_t ALU_A; - uint32_t RESERVED50; - __IO uint32_t ALU_B; - uint32_t RESERVED53; - __IO uint32_t ALU_C; - uint32_t RESERVED51; - __IO uint32_t ALU_D; - uint32_t RESERVED52; - __IO uint32_t ALU_E; - uint32_t RESERVED54; - __IO uint32_t PPE_FPTR; - uint32_t RESERVED55; - __IO uint32_t PPE_FLAGS0; - __IO uint32_t PPE_FLAGS1; - __IO uint32_t PPE_FLAGS2; - __IO uint32_t PPE_FLAGS3; - __IO uint32_t PPE_SFFLAGS; - uint32_t RESERVED13[11]; - __IO uint32_t ADC0_FIFO_CTRL; - __I uint32_t ADC0_FIFO_STATUS; - __IO uint32_t ADC0_FIFO_DATA; - __IO uint32_t ADC1_FIFO_CTRL; - __I uint32_t ADC1_FIFO_STATUS; - __IO uint32_t ADC1_FIFO_DATA; - __IO uint32_t ADC2_FIFO_CTRL; - __I uint32_t ADC2_FIFO_STATUS; - __IO uint32_t ADC2_FIFO_DATA; - uint32_t RESERVED14[19]; - __I uint32_t ADC0_FIFO_DATA_PEEK; - __I uint32_t ADC0_FIFO_DATA0; - __I uint32_t ADC0_FIFO_DATA1; - __I uint32_t ADC0_FIFO_DATA2; - __I uint32_t ADC0_FIFO_DATA3; - __I uint32_t ADC1_FIFO_DATA_PEEK; - __I uint32_t ADC1_FIFO_DATA0; - __I uint32_t ADC1_FIFO_DATA1; - __I uint32_t ADC1_FIFO_DATA2; - __I uint32_t ADC1_FIFO_DATA3; - __I uint32_t ADC2_FIFO_DATA_PEEK; - __I uint32_t ADC2_FIFO_DATA0; - __I uint32_t ADC2_FIFO_DATA1; - __I uint32_t ADC2_FIFO_DATA2; - __I uint32_t ADC2_FIFO_DATA3; - uint32_t RESERVED15[177]; - __IO uint32_t PPE_RAM_DATA[512]; -} ACE_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------ In Application Programming ------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IAP_IR; - __IO uint32_t IAP_DR2; - __IO uint32_t IAP_DR3; - __IO uint32_t IAP_DR5; - __IO uint32_t IAP_DR26; - __IO uint32_t IAP_DR32; - __IO uint32_t IAP_DR; - __IO uint32_t IAP_DR_LENGTH; - __IO uint32_t IAP_TAP_NEW_STATE; - __IO uint32_t IAP_TAP_CONTROL; - __I uint32_t IAP_STATUS; -} IAP_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t STATUS; - __IO uint32_t CONTROL; - __IO uint32_t ENABLE; - uint32_t RESERVED0; - __IO uint32_t CONFIG_0; - __IO uint32_t CONFIG_1; - __IO uint32_t PAGE_STATUS_0; - __IO uint32_t PAGE_STATUS_1; - __IO uint32_t SEGMENT; - __IO uint32_t ENVM_SELECT; -} NVM_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t MSSIRQ_EN0; - __IO uint32_t MSSIRQ_EN1; - __IO uint32_t MSSIRQ_EN2; - __IO uint32_t MSSIRQ_EN3; - __IO uint32_t MSSIRQ_EN4; - __IO uint32_t MSSIRQ_EN5; - __IO uint32_t MSSIRQ_EN6; - __IO uint32_t MSSIRQ_EN7; - __I uint32_t MSSIRQ_SRC0; - __I uint32_t MSSIRQ_SRC1; - __I uint32_t MSSIRQ_SRC2; - __I uint32_t MSSIRQ_SRC3; - __I uint32_t MSSIRQ_SRC4; - __I uint32_t MSSIRQ_SRC5; - __I uint32_t MSSIRQ_SRC6; - __I uint32_t MSSIRQ_SRC7; - __IO uint32_t FIIC_MR; -} MSS_IRQ_CTRL_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ System Registers ----------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t ESRAM_CR; - __IO uint32_t ENVM_CR; - __IO uint32_t ENVM_REMAP_SYS_CR; - __IO uint32_t ENVM_REMAP_FAB_CR; - __IO uint32_t FAB_PROT_SIZE_CR; - __IO uint32_t FAB_PROT_BASE_CR; - __IO uint32_t AHB_MATRIX_CR; - __IO uint32_t MSS_SR; - __IO uint32_t CLR_MSS_SR; - __IO uint32_t EFROM_CR; - __IO uint32_t IAP_CR; - __IO uint32_t SOFT_IRQ_CR; - __IO uint32_t SOFT_RST_CR; - __IO uint32_t DEVICE_SR; - __IO uint32_t SYSTICK_CR; - __IO uint32_t EMC_MUX_CR; - __IO uint32_t EMC_CS_0_CR; - __IO uint32_t EMC_CS_1_CR; - __IO uint32_t MSS_CLK_CR; - __IO uint32_t MSS_CCC_DIV_CR; - __IO uint32_t MSS_CCC_MUX_CR; - __IO uint32_t MSS_CCC_PLL_CR; - __IO uint32_t MSS_CCC_DLY_CR; - __IO uint32_t MSS_CCC_SR; - __IO uint32_t MSS_RCOSC_CR; - __IO uint32_t VRPSM_CR; - __IO uint32_t RESERVED; - __IO uint32_t FAB_IF_CR; - __IO uint32_t FAB_APB_HIWORD_DR; - __IO uint32_t LOOPBACK_CR; - __IO uint32_t MSS_IO_BANK_CR; - __IO uint32_t GPIN_SOURCE_CR; - __IO uint32_t TEST_SR; - __IO uint32_t RED_REP_ADDR0; - __I uint32_t RED_REP_LOW_LOCS0; - __I uint32_t RED_REP_HIGH_LOCS0; - __IO uint32_t RED_REP_ADDR1; - __I uint32_t RED_REP_LOW_LOCS1; - __I uint32_t RED_REP_HIGH_LOCS1; - __IO uint32_t FABRIC_CR; - uint32_t RESERVED1[24]; - __IO uint32_t IOMUX_CR[83]; -} SYSREG_TypeDef; - -#define SYSREG_ENVM_SOFTRESET_MASK (uint32_t)0x00000001 -#define SYSREG_ESRAM0_SOFTRESET_MASK (uint32_t)0x00000002 -#define SYSREG_ESRAM1_SOFTRESET_MASK (uint32_t)0x00000004 -#define SYSREG_EMC_SOFTRESET_MASK (uint32_t)0x00000008 -#define SYSREG_MAC_SOFTRESET_MASK (uint32_t)0x00000010 -#define SYSREG_PDMA_SOFTRESET_MASK (uint32_t)0x00000020 -#define SYSREG_TIMER_SOFTRESET_MASK (uint32_t)0x00000040 -#define SYSREG_UART0_SOFTRESET_MASK (uint32_t)0x00000080 -#define SYSREG_UART1_SOFTRESET_MASK (uint32_t)0x00000100 -#define SYSREG_SPI0_SOFTRESET_MASK (uint32_t)0x00000200 -#define SYSREG_SPI1_SOFTRESET_MASK (uint32_t)0x00000400 -#define SYSREG_I2C0_SOFTRESET_MASK (uint32_t)0x00000800 -#define SYSREG_I2C1_SOFTRESET_MASK (uint32_t)0x00001000 -#define SYSREG_ACE_SOFTRESET_MASK (uint32_t)0x00002000 -#define SYSREG_GPIO_SOFTRESET_MASK (uint32_t)0x00004000 -#define SYSREG_IAP_SOFTRESET_MASK (uint32_t)0x00008000 -#define SYSREG_EXT_SOFTRESET_MASK (uint32_t)0x00010000 -#define SYSREG_FPGA_SOFTRESET_MASK (uint32_t)0x00020000 -#define SYSREG_F2M_RESET_ENABLE_MASK (uint32_t)0x00040000 -#define SYSREG_PADRESET_ENABLE_MASK (uint32_t)0x00080000 - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -#define UART0_BASE 0x40000000U -#define SPI0_BASE 0x40001000U -#define I2C0_BASE 0x40002000U -#define MAC_BASE 0x40003000U -#define PDMA_BASE 0x40004000U -#define TIMER_BASE 0x40005000U -#define WATCHDOG_BASE 0x40006000U -#define H2F_IRQ_CTRL_BASE 0x40007000U -#define UART1_BASE 0x40010000U -#define SPI1_BASE 0x40011000U -#define I2C1_BASE 0x40012000U -#define GPIO_BASE 0x40013000U -#define RTC_BASE 0x40014100U -#define FROM_BASE 0x40015000U -#define IAP_BASE 0x40016000U -#define ACE_BASE 0x40020000U -#define FPGA_FABRIC_RAM_BASE 0x40040000U -#define FPGA_FABRIC_BASE 0x40050000U -#define ENVM_BASE 0x60000000U -#define ENVM_REGS_BASE 0x60100000U -#define SYSREG_BASE 0xE0042000U - -/******************************************************************************/ -/* bitband address calcualtion macro */ -/******************************************************************************/ -#define BITBAND_ADDRESS(X) ((X & 0xF0000000U) + 0x02000000U + ((X & 0xFFFFFU) << 5)) - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define UART0 ((UART_TypeDef *) UART0_BASE) -#define UART0_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART0_BASE)) -#define SPI0 ((SPI_TypeDef *) SPI0_BASE) -#define SPI0_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI0_BASE)) -#define I2C0 ((I2C_TypeDef *) I2C0_BASE) -#define I2C0_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C0_BASE)) -#define MAC ((MAC_TypeDef *) MAC_BASE) -#define PDMA ((PDMA_TypeDef *) PDMA_BASE) -#define TIMER ((TIMER_TypeDef *) TIMER_BASE) -#define TIMER_BITBAND ((TIMER_BitBand_TypeDef *) BITBAND_ADDRESS(TIMER_BASE)) -#define WATCHDOG ((WATCHDOG_TypeDef *) WATCHDOG_BASE) -#define MSS_IRQ_CTRL ((MSS_IRQ_CTRL_TypeDef *) H2F_IRQ_CTRL_BASE) -#define UART1 ((UART_TypeDef *) UART1_BASE) -#define UART1_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART1_BASE)) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define SPI1_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI1_BASE)) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C1_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C1_BASE)) -#define GPIO ((GPIO_TypeDef *) GPIO_BASE) -#define GPIO_BITBAND ((GPIO_BitBand_TypeDef *) BITBAND_ADDRESS(GPIO_BASE)) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define FROM ((void *) FROM_BASE) -#define IAP ((IAP_TypeDef *) IAP_BASE) -#define ACE ((ACE_TypeDef *) ACE_BASE) -#define FPGA_FABRIC_RAM ((void *) FPGA_FABRIC_RAM_BASE) -#define FPGA_FABRIC ((void *) FPGA_FABRIC_BASE) -#define ENVM ((void *) ENVM_BASE) -#define ENVM_REGS ((NVM_TypeDef *) ENVM_REGS_BASE) -#define SYSREG ((SYSREG_TypeDef *) SYSREG_BASE) - -#ifdef __cplusplus -} -#endif - -#endif /* __A2FXXXM3_H__ */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c deleted file mode 100644 index 0e8c3c43c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c +++ /dev/null @@ -1,784 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.c - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#include - -/* define compiler specific symbols */ -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -__ASM uint32_t __get_PSP(void) -{ - mrs r0, psp - bx lr -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -__ASM void __set_PSP(uint32_t topOfProcStack) -{ - msr psp, r0 - bx lr -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -__ASM uint32_t __get_MSP(void) -{ - mrs r0, msp - bx lr -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -__ASM void __set_MSP(uint32_t mainStackPointer) -{ - msr msp, r0 - bx lr -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -__ASM uint32_t __REV16(uint16_t value) -{ - rev16 r0, r0 - bx lr -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -__ASM int32_t __REVSH(int16_t value) -{ - revsh r0, r0 - bx lr -} - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -__ASM void __CLREX(void) -{ - clrex -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -__ASM uint32_t __get_BASEPRI(void) -{ - mrs r0, basepri - bx lr -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -__ASM void __set_BASEPRI(uint32_t basePri) -{ - msr basepri, r0 - bx lr -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -__ASM uint32_t __get_PRIMASK(void) -{ - mrs r0, primask - bx lr -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -__ASM void __set_PRIMASK(uint32_t priMask) -{ - msr primask, r0 - bx lr -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -__ASM uint32_t __get_FAULTMASK(void) -{ - mrs r0, faultmask - bx lr -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -__ASM void __set_FAULTMASK(uint32_t faultMask) -{ - msr faultmask, r0 - bx lr -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -__ASM uint32_t __get_CONTROL(void) -{ - mrs r0, control - bx lr -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -__ASM void __set_CONTROL(uint32_t control) -{ - msr control, r0 - bx lr -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ -#pragma diag_suppress=Pe940 - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) -{ - __ASM("mrs r0, psp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM("msr psp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) -{ - __ASM("mrs r0, msp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM("msr msp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - __ASM("rev16 r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - __ASM("rbit r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -uint8_t __LDREXB(uint8_t *addr) -{ - __ASM("ldrexb r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - __ASM("ldrexh r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - __ASM("ldrex r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - __ASM("strexb r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - __ASM("strexh r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - __ASM("strex r0, r0, [r1]"); - __ASM("bx lr"); -} - -#pragma diag_default=Pe940 - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) __attribute__( ( naked ) ); -uint32_t __get_PSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, psp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0\n\t" - "BX lr \n\t" : : "r" (topOfProcStack) ); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) __attribute__( ( naked ) ); -uint32_t __get_MSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, msp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0\n\t" - "BX lr \n\t" : : "r" (topOfMainStack) ); -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -uint32_t __get_BASEPRI(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) ); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -uint32_t __get_PRIMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -uint32_t __get_FAULTMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); -} - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -uint32_t __get_CONTROL(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) ); -} - - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -uint32_t __REV(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -int32_t __REVSH(int16_t value) -{ - uint32_t result=0; - - __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -uint8_t __LDREXB(uint8_t *addr) -{ - uint8_t result=0; - - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - uint16_t result=0; - - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); - return(result); -} - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h deleted file mode 100644 index 4725d2132..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Assertion implementation. - * - * This file provides the implementation of the ASSERT macro. This file can be - * modified to cater for project specific requirements regarding the way - * assertions are handled. - * - * SVN $Revision: 1676 $ - * SVN $Date: 2009-12-02 16:47:03 +0000 (Wed, 02 Dec 2009) $ - */ -#ifndef __MSS_ASSERT_H_ -#define __MSS_ASSERT_H_ - -#include - -#if defined ( __GNUC__ ) - -#if defined(NDEBUG) - -#define ASSERT(CHECK) - -#else /* NDEBUG */ -/* - * SoftConsole assertion handling - */ -#define ASSERT(CHECK) \ - do { \ - if (!(CHECK)) \ - { \ - __asm volatile ("BKPT\n\t"); \ - } \ - } while (0); - -#endif /* NDEBUG */ - -#else -/* - * IAR Embedded Workbench or Keil assertion handling. - * Call C library assert function which should result in error message - * displayed in debugger. - */ -#define ASSERT(X) assert(X) - -#endif - -#endif /* __MSS_ASSERT_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s deleted file mode 100644 index 0aa80dffa..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s +++ /dev/null @@ -1,973 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Startup code for SmartFusion A2FM3Fxxx - * - * SVN $Revision: 2068 $ - * SVN $Date: 2010-01-27 17:27:41 +0000 (Wed, 27 Jan 2010) $ - */ - - MODULE ?cstartup - - ;; Forward declaration of sections. - SECTION CSTACK:DATA:NOROOT(3) - - SECTION .intvec:CODE:NOROOT(2) - - EXTERN __iar_program_start -; EXTERN SystemInit - PUBLIC __vector_table - - DATA -__vector_table - DCD sfe(CSTACK) - DCD Reset_Handler - - DCD NMI_Handler - DCD HardFault_Handler - DCD MemManage_Handler - DCD BusFault_Handler - DCD UsageFault_Handler - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD SVC_Handler - DCD DebugMon_Handler - DCD 0 - DCD PendSV_Handler - DCD SysTick_Handler - - ; External Interrupts - DCD WdogWakeup_IRQHandler - DCD BrownOut_1_5V_IRQHandler - DCD BrownOut_3_3V_IRQHandler - DCD RTC_Match_IRQHandler - DCD RTCIF_Pub_IRQHandler - DCD EthernetMAC_IRQHandler - DCD IAP_IRQHandler - DCD ENVM0_IRQHandler - DCD ENVM1_IRQHandler - DCD DMA_IRQHandler - DCD UART0_IRQHandler - DCD UART1_IRQHandler - DCD SPI0_IRQHandler - DCD SPI1_IRQHandler - DCD I2C0_IRQHandler - DCD I2C0_SMBAlert_IRQHandler - DCD I2C0_SMBus_IRQHandler - DCD I2C1_IRQHandler - DCD I2C1_SMBAlert_IRQHandler - DCD I2C1_SMBus_IRQHandler - DCD Timer1_IRQHandler - DCD Timer2_IRQHandler - DCD PLL_Lock_IRQHandler - DCD PLL_LockLost_IRQHandler - DCD CommError_IRQHandler - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD Fabric_IRQHandler - DCD GPIO0_IRQHandler - DCD GPIO1_IRQHandler - DCD GPIO2_IRQHandler - DCD GPIO3_IRQHandler - DCD GPIO4_IRQHandler - DCD GPIO5_IRQHandler - DCD GPIO6_IRQHandler - DCD GPIO7_IRQHandler - DCD GPIO8_IRQHandler - DCD GPIO9_IRQHandler - DCD GPIO10_IRQHandler - DCD GPIO11_IRQHandler - DCD GPIO12_IRQHandler - DCD GPIO13_IRQHandler - DCD GPIO14_IRQHandler - DCD GPIO15_IRQHandler - DCD GPIO16_IRQHandler - DCD GPIO17_IRQHandler - DCD GPIO18_IRQHandler - DCD GPIO19_IRQHandler - DCD GPIO20_IRQHandler - DCD GPIO21_IRQHandler - DCD GPIO22_IRQHandler - DCD GPIO23_IRQHandler - DCD GPIO24_IRQHandler - DCD GPIO25_IRQHandler - DCD GPIO26_IRQHandler - DCD GPIO27_IRQHandler - DCD GPIO28_IRQHandler - DCD GPIO29_IRQHandler - DCD GPIO30_IRQHandler - DCD GPIO31_IRQHandler - DCD ACE_PC0_Flag0_IRQHandler - DCD ACE_PC0_Flag1_IRQHandler - DCD ACE_PC0_Flag2_IRQHandler - DCD ACE_PC0_Flag3_IRQHandler - DCD ACE_PC1_Flag0_IRQHandler - DCD ACE_PC1_Flag1_IRQHandler - DCD ACE_PC1_Flag2_IRQHandler - DCD ACE_PC1_Flag3_IRQHandler - DCD ACE_PC2_Flag0_IRQHandler - DCD ACE_PC2_Flag1_IRQHandler - DCD ACE_PC2_Flag2_IRQHandler - DCD ACE_PC2_Flag3_IRQHandler - DCD ACE_ADC0_DataValid_IRQHandler - DCD ACE_ADC1_DataValid_IRQHandler - DCD ACE_ADC2_DataValid_IRQHandler - DCD ACE_ADC0_CalDone_IRQHandler - DCD ACE_ADC1_CalDone_IRQHandler - DCD ACE_ADC2_CalDone_IRQHandler - DCD ACE_ADC0_CalStart_IRQHandler - DCD ACE_ADC1_CalStart_IRQHandler - DCD ACE_ADC2_CalStart_IRQHandler - DCD ACE_Comp0_Fall_IRQHandler - DCD ACE_Comp1_Fall_IRQHandler - DCD ACE_Comp2_Fall_IRQHandler - DCD ACE_Comp3_Fall_IRQHandler - DCD ACE_Comp4_Fall_IRQHandler - DCD ACE_Comp5_Fall_IRQHandler - DCD ACE_Comp6_Fall_IRQHandler - DCD ACE_Comp7_Fall_IRQHandler - DCD ACE_Comp8_Fall_IRQHandler - DCD ACE_Comp9_Fall_IRQHandler - DCD ACE_Comp10_Fall_IRQHandler - DCD ACE_Comp11_Fall_IRQHandler - DCD ACE_Comp0_Rise_IRQHandler - DCD ACE_Comp1_Rise_IRQHandler - DCD ACE_Comp2_Rise_IRQHandler - DCD ACE_Comp3_Rise_IRQHandler - DCD ACE_Comp4_Rise_IRQHandler - DCD ACE_Comp5_Rise_IRQHandler - DCD ACE_Comp6_Rise_IRQHandler - DCD ACE_Comp7_Rise_IRQHandler - DCD ACE_Comp8_Rise_IRQHandler - DCD ACE_Comp9_Rise_IRQHandler - DCD ACE_Comp10_Rise_IRQHandler - DCD ACE_Comp11_Rise_IRQHandler - DCD ACE_ADC0_FifoFull_IRQHandler - DCD ACE_ADC0_FifoAFull_IRQHandler - DCD ACE_ADC0_FifoEmpty_IRQHandler - DCD ACE_ADC1_FifoFull_IRQHandler - DCD ACE_ADC1_FifoAFull_IRQHandler - DCD ACE_ADC1_FifoEmpty_IRQHandler - DCD ACE_ADC2_FifoFull_IRQHandler - DCD ACE_ADC2_FifoAFull_IRQHandler - DCD ACE_ADC2_FifoEmpty_IRQHandler - DCD ACE_PPE_Flag0_IRQHandler - DCD ACE_PPE_Flag1_IRQHandler - DCD ACE_PPE_Flag2_IRQHandler - DCD ACE_PPE_Flag3_IRQHandler - DCD ACE_PPE_Flag4_IRQHandler - DCD ACE_PPE_Flag5_IRQHandler - DCD ACE_PPE_Flag6_IRQHandler - DCD ACE_PPE_Flag7_IRQHandler - DCD ACE_PPE_Flag8_IRQHandler - DCD ACE_PPE_Flag9_IRQHandler - DCD ACE_PPE_Flag10_IRQHandler - DCD ACE_PPE_Flag11_IRQHandler - DCD ACE_PPE_Flag12_IRQHandler - DCD ACE_PPE_Flag13_IRQHandler - DCD ACE_PPE_Flag14_IRQHandler - DCD ACE_PPE_Flag15_IRQHandler - DCD ACE_PPE_Flag16_IRQHandler - DCD ACE_PPE_Flag17_IRQHandler - DCD ACE_PPE_Flag18_IRQHandler - DCD ACE_PPE_Flag19_IRQHandler - DCD ACE_PPE_Flag20_IRQHandler - DCD ACE_PPE_Flag21_IRQHandler - DCD ACE_PPE_Flag22_IRQHandler - DCD ACE_PPE_Flag23_IRQHandler - DCD ACE_PPE_Flag24_IRQHandler - DCD ACE_PPE_Flag25_IRQHandler - DCD ACE_PPE_Flag26_IRQHandler - DCD ACE_PPE_Flag27_IRQHandler - DCD ACE_PPE_Flag28_IRQHandler - DCD ACE_PPE_Flag29_IRQHandler - DCD ACE_PPE_Flag30_IRQHandler - DCD ACE_PPE_Flag31_IRQHandler - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Default interrupt handlers. -;; - THUMB - - PUBWEAK Reset_Handler - SECTION .text:CODE:REORDER(2) -Reset_Handler -; LDR R0, =SystemInit -; BLX R0 - LDR R0, =__iar_program_start - BX R0 - - PUBWEAK NMI_Handler - SECTION .text:CODE:REORDER(1) -NMI_Handler - B NMI_Handler - - PUBWEAK HardFault_Handler - SECTION .text:CODE:REORDER(1) -HardFault_Handler - B HardFault_Handler - - PUBWEAK MemManage_Handler - SECTION .text:CODE:REORDER(1) -MemManage_Handler - B MemManage_Handler - - PUBWEAK BusFault_Handler - SECTION .text:CODE:REORDER(1) -BusFault_Handler - B BusFault_Handler - - PUBWEAK UsageFault_Handler - SECTION .text:CODE:REORDER(1) -UsageFault_Handler - B UsageFault_Handler - - PUBWEAK SVC_Handler - SECTION .text:CODE:REORDER(1) -SVC_Handler - B SVC_Handler - - PUBWEAK DebugMon_Handler - SECTION .text:CODE:REORDER(1) -DebugMon_Handler - B DebugMon_Handler - - PUBWEAK PendSV_Handler - SECTION .text:CODE:REORDER(1) -PendSV_Handler - B PendSV_Handler - - PUBWEAK SysTick_Handler - SECTION .text:CODE:REORDER(1) -SysTick_Handler - B SysTick_Handler - - PUBWEAK WdogWakeup_IRQHandler - SECTION .text:CODE:REORDER(1) -WdogWakeup_IRQHandler - B WdogWakeup_IRQHandler - - PUBWEAK BrownOut_1_5V_IRQHandler - SECTION .text:CODE:REORDER(1) -BrownOut_1_5V_IRQHandler - B BrownOut_1_5V_IRQHandler - - PUBWEAK BrownOut_3_3V_IRQHandler - SECTION .text:CODE:REORDER(1) -BrownOut_3_3V_IRQHandler - B BrownOut_3_3V_IRQHandler - - PUBWEAK RTC_Match_IRQHandler - SECTION .text:CODE:REORDER(1) -RTC_Match_IRQHandler - B RTC_Match_IRQHandler - - PUBWEAK RTCIF_Pub_IRQHandler - SECTION .text:CODE:REORDER(1) -RTCIF_Pub_IRQHandler - B RTCIF_Pub_IRQHandler - - PUBWEAK EthernetMAC_IRQHandler - SECTION .text:CODE:REORDER(1) -EthernetMAC_IRQHandler - B EthernetMAC_IRQHandler - - PUBWEAK IAP_IRQHandler - SECTION .text:CODE:REORDER(1) -IAP_IRQHandler - B IAP_IRQHandler - - PUBWEAK ENVM0_IRQHandler - SECTION .text:CODE:REORDER(1) -ENVM0_IRQHandler - B ENVM0_IRQHandler - - PUBWEAK ENVM1_IRQHandler - SECTION .text:CODE:REORDER(1) -ENVM1_IRQHandler - B ENVM1_IRQHandler - - PUBWEAK DMA_IRQHandler - SECTION .text:CODE:REORDER(1) -DMA_IRQHandler - B DMA_IRQHandler - - PUBWEAK UART0_IRQHandler - SECTION .text:CODE:REORDER(1) -UART0_IRQHandler - B UART0_IRQHandler - - PUBWEAK UART1_IRQHandler - SECTION .text:CODE:REORDER(1) -UART1_IRQHandler - B UART1_IRQHandler - - PUBWEAK SPI0_IRQHandler - SECTION .text:CODE:REORDER(1) -SPI0_IRQHandler - B SPI0_IRQHandler - - PUBWEAK SPI1_IRQHandler - SECTION .text:CODE:REORDER(1) -SPI1_IRQHandler - B SPI1_IRQHandler - - PUBWEAK I2C0_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_IRQHandler - B I2C0_IRQHandler - - PUBWEAK I2C0_SMBAlert_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_SMBAlert_IRQHandler - B I2C0_SMBAlert_IRQHandler - - PUBWEAK I2C0_SMBus_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_SMBus_IRQHandler - B I2C0_SMBus_IRQHandler - - PUBWEAK I2C1_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_IRQHandler - B I2C1_IRQHandler - - PUBWEAK I2C1_SMBAlert_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_SMBAlert_IRQHandler - B I2C1_SMBAlert_IRQHandler - - PUBWEAK I2C1_SMBus_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_SMBus_IRQHandler - B I2C1_SMBus_IRQHandler - - PUBWEAK Timer1_IRQHandler - SECTION .text:CODE:REORDER(1) -Timer1_IRQHandler - B Timer1_IRQHandler - - PUBWEAK Timer2_IRQHandler - SECTION .text:CODE:REORDER(1) -Timer2_IRQHandler - B Timer2_IRQHandler - - PUBWEAK PLL_Lock_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL_Lock_IRQHandler - B PLL_Lock_IRQHandler - - PUBWEAK PLL_LockLost_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL_LockLost_IRQHandler - B PLL_LockLost_IRQHandler - - PUBWEAK CommError_IRQHandler - SECTION .text:CODE:REORDER(1) -CommError_IRQHandler - B CommError_IRQHandler - - PUBWEAK Fabric_IRQHandler - SECTION .text:CODE:REORDER(1) -Fabric_IRQHandler - B Fabric_IRQHandler - - PUBWEAK GPIO0_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO0_IRQHandler - B GPIO0_IRQHandler - - PUBWEAK GPIO1_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO1_IRQHandler - B GPIO1_IRQHandler - - PUBWEAK GPIO2_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO2_IRQHandler - B GPIO2_IRQHandler - - PUBWEAK GPIO3_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO3_IRQHandler - B GPIO3_IRQHandler - - PUBWEAK GPIO4_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO4_IRQHandler - B GPIO4_IRQHandler - - PUBWEAK GPIO5_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO5_IRQHandler - B GPIO5_IRQHandler - - PUBWEAK GPIO6_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO6_IRQHandler - B GPIO6_IRQHandler - - PUBWEAK GPIO7_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO7_IRQHandler - B GPIO7_IRQHandler - - PUBWEAK GPIO8_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO8_IRQHandler - B GPIO8_IRQHandler - - PUBWEAK GPIO9_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO9_IRQHandler - B GPIO9_IRQHandler - - PUBWEAK GPIO10_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO10_IRQHandler - B GPIO10_IRQHandler - - PUBWEAK GPIO11_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO11_IRQHandler - B GPIO11_IRQHandler - - PUBWEAK GPIO12_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO12_IRQHandler - B GPIO12_IRQHandler - - PUBWEAK GPIO13_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO13_IRQHandler - B GPIO13_IRQHandler - - PUBWEAK GPIO14_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO14_IRQHandler - B GPIO14_IRQHandler - - PUBWEAK GPIO15_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO15_IRQHandler - B GPIO15_IRQHandler - - PUBWEAK GPIO16_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO16_IRQHandler - B GPIO16_IRQHandler - - PUBWEAK GPIO17_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO17_IRQHandler - B GPIO17_IRQHandler - - PUBWEAK GPIO18_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO18_IRQHandler - B GPIO18_IRQHandler - - PUBWEAK GPIO19_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO19_IRQHandler - B GPIO19_IRQHandler - - PUBWEAK GPIO20_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO20_IRQHandler - B GPIO20_IRQHandler - - PUBWEAK GPIO21_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO21_IRQHandler - B GPIO21_IRQHandler - - PUBWEAK GPIO22_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO22_IRQHandler - B GPIO22_IRQHandler - - PUBWEAK GPIO23_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO23_IRQHandler - B GPIO23_IRQHandler - - PUBWEAK GPIO24_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO24_IRQHandler - B GPIO24_IRQHandler - - PUBWEAK GPIO25_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO25_IRQHandler - B GPIO25_IRQHandler - - PUBWEAK GPIO26_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO26_IRQHandler - B GPIO26_IRQHandler - - PUBWEAK GPIO27_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO27_IRQHandler - B GPIO27_IRQHandler - - PUBWEAK GPIO28_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO28_IRQHandler - B GPIO28_IRQHandler - - PUBWEAK GPIO29_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO29_IRQHandler - B GPIO29_IRQHandler - - PUBWEAK GPIO30_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO30_IRQHandler - B GPIO30_IRQHandler - - PUBWEAK GPIO31_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO31_IRQHandler - B GPIO31_IRQHandler - - PUBWEAK ACE_PC0_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag0_IRQHandler - B ACE_PC0_Flag0_IRQHandler - - PUBWEAK ACE_PC0_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag1_IRQHandler - B ACE_PC0_Flag1_IRQHandler - - PUBWEAK ACE_PC0_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag2_IRQHandler - B ACE_PC0_Flag2_IRQHandler - - PUBWEAK ACE_PC0_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag3_IRQHandler - B ACE_PC0_Flag3_IRQHandler - - PUBWEAK ACE_PC1_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag0_IRQHandler - B ACE_PC1_Flag0_IRQHandler - - PUBWEAK ACE_PC1_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag1_IRQHandler - B ACE_PC1_Flag1_IRQHandler - - PUBWEAK ACE_PC1_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag2_IRQHandler - B ACE_PC1_Flag2_IRQHandler - - PUBWEAK ACE_PC1_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag3_IRQHandler - B ACE_PC1_Flag3_IRQHandler - - PUBWEAK ACE_PC2_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag0_IRQHandler - B ACE_PC2_Flag0_IRQHandler - - PUBWEAK ACE_PC2_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag1_IRQHandler - B ACE_PC2_Flag1_IRQHandler - - PUBWEAK ACE_PC2_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag2_IRQHandler - B ACE_PC2_Flag2_IRQHandler - - PUBWEAK ACE_PC2_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag3_IRQHandler - B ACE_PC2_Flag3_IRQHandler - - PUBWEAK ACE_ADC0_DataValid_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_DataValid_IRQHandler - B ACE_ADC0_DataValid_IRQHandler - - PUBWEAK ACE_ADC1_DataValid_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_DataValid_IRQHandler - B ACE_ADC1_DataValid_IRQHandler - - PUBWEAK ACE_ADC2_DataValid_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_DataValid_IRQHandler - B ACE_ADC2_DataValid_IRQHandler - - PUBWEAK ACE_ADC0_CalDone_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_CalDone_IRQHandler - B ACE_ADC0_CalDone_IRQHandler - - PUBWEAK ACE_ADC1_CalDone_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_CalDone_IRQHandler - B ACE_ADC1_CalDone_IRQHandler - - PUBWEAK ACE_ADC2_CalDone_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_CalDone_IRQHandler - B ACE_ADC2_CalDone_IRQHandler - - PUBWEAK ACE_ADC0_CalStart_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_CalStart_IRQHandler - B ACE_ADC0_CalStart_IRQHandler - - PUBWEAK ACE_ADC1_CalStart_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_CalStart_IRQHandler - B ACE_ADC1_CalStart_IRQHandler - - PUBWEAK ACE_ADC2_CalStart_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_CalStart_IRQHandler - B ACE_ADC2_CalStart_IRQHandler - - PUBWEAK ACE_Comp0_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp0_Fall_IRQHandler - B ACE_Comp0_Fall_IRQHandler - - PUBWEAK ACE_Comp1_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp1_Fall_IRQHandler - B ACE_Comp1_Fall_IRQHandler - - PUBWEAK ACE_Comp2_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp2_Fall_IRQHandler - B ACE_Comp2_Fall_IRQHandler - - PUBWEAK ACE_Comp3_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp3_Fall_IRQHandler - B ACE_Comp3_Fall_IRQHandler - - PUBWEAK ACE_Comp4_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp4_Fall_IRQHandler - B ACE_Comp4_Fall_IRQHandler - - PUBWEAK ACE_Comp5_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp5_Fall_IRQHandler - B ACE_Comp5_Fall_IRQHandler - - PUBWEAK ACE_Comp6_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp6_Fall_IRQHandler - B ACE_Comp6_Fall_IRQHandler - - PUBWEAK ACE_Comp7_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp7_Fall_IRQHandler - B ACE_Comp7_Fall_IRQHandler - - PUBWEAK ACE_Comp8_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp8_Fall_IRQHandler - B ACE_Comp8_Fall_IRQHandler - - PUBWEAK ACE_Comp9_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp9_Fall_IRQHandler - B ACE_Comp9_Fall_IRQHandler - - PUBWEAK ACE_Comp10_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp10_Fall_IRQHandler - B ACE_Comp10_Fall_IRQHandler - - PUBWEAK ACE_Comp11_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp11_Fall_IRQHandler - B ACE_Comp11_Fall_IRQHandler - - PUBWEAK ACE_Comp0_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp0_Rise_IRQHandler - B ACE_Comp0_Rise_IRQHandler - - PUBWEAK ACE_Comp1_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp1_Rise_IRQHandler - B ACE_Comp1_Rise_IRQHandler - - PUBWEAK ACE_Comp2_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp2_Rise_IRQHandler - B ACE_Comp2_Rise_IRQHandler - - PUBWEAK ACE_Comp3_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp3_Rise_IRQHandler - B ACE_Comp3_Rise_IRQHandler - - PUBWEAK ACE_Comp4_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp4_Rise_IRQHandler - B ACE_Comp4_Rise_IRQHandler - - PUBWEAK ACE_Comp5_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp5_Rise_IRQHandler - B ACE_Comp5_Rise_IRQHandler - - PUBWEAK ACE_Comp6_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp6_Rise_IRQHandler - B ACE_Comp6_Rise_IRQHandler - - PUBWEAK ACE_Comp7_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp7_Rise_IRQHandler - B ACE_Comp7_Rise_IRQHandler - - PUBWEAK ACE_Comp8_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp8_Rise_IRQHandler - B ACE_Comp8_Rise_IRQHandler - - PUBWEAK ACE_Comp9_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp9_Rise_IRQHandler - B ACE_Comp9_Rise_IRQHandler - - PUBWEAK ACE_Comp10_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp10_Rise_IRQHandler - B ACE_Comp10_Rise_IRQHandler - - PUBWEAK ACE_Comp11_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp11_Rise_IRQHandler - B ACE_Comp11_Rise_IRQHandler - - PUBWEAK ACE_ADC0_FifoFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_FifoFull_IRQHandler - B ACE_ADC0_FifoFull_IRQHandler - - PUBWEAK ACE_ADC0_FifoAFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_FifoAFull_IRQHandler - B ACE_ADC0_FifoAFull_IRQHandler - - PUBWEAK ACE_ADC0_FifoEmpty_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_FifoEmpty_IRQHandler - B ACE_ADC0_FifoEmpty_IRQHandler - - PUBWEAK ACE_ADC1_FifoFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_FifoFull_IRQHandler - B ACE_ADC1_FifoFull_IRQHandler - - PUBWEAK ACE_ADC1_FifoAFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_FifoAFull_IRQHandler - B ACE_ADC1_FifoAFull_IRQHandler - - PUBWEAK ACE_ADC1_FifoEmpty_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_FifoEmpty_IRQHandler - B ACE_ADC1_FifoEmpty_IRQHandler - - PUBWEAK ACE_ADC2_FifoFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_FifoFull_IRQHandler - B ACE_ADC2_FifoFull_IRQHandler - - PUBWEAK ACE_ADC2_FifoAFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_FifoAFull_IRQHandler - B ACE_ADC2_FifoAFull_IRQHandler - - PUBWEAK ACE_ADC2_FifoEmpty_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_FifoEmpty_IRQHandler - B ACE_ADC2_FifoEmpty_IRQHandler - - PUBWEAK ACE_PPE_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag0_IRQHandler - B ACE_PPE_Flag0_IRQHandler - - PUBWEAK ACE_PPE_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag1_IRQHandler - B ACE_PPE_Flag1_IRQHandler - - PUBWEAK ACE_PPE_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag2_IRQHandler - B ACE_PPE_Flag2_IRQHandler - - PUBWEAK ACE_PPE_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag3_IRQHandler - B ACE_PPE_Flag3_IRQHandler - - PUBWEAK ACE_PPE_Flag4_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag4_IRQHandler - B ACE_PPE_Flag4_IRQHandler - - PUBWEAK ACE_PPE_Flag5_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag5_IRQHandler - B ACE_PPE_Flag5_IRQHandler - - PUBWEAK ACE_PPE_Flag6_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag6_IRQHandler - B ACE_PPE_Flag6_IRQHandler - - PUBWEAK ACE_PPE_Flag7_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag7_IRQHandler - B ACE_PPE_Flag7_IRQHandler - - PUBWEAK ACE_PPE_Flag8_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag8_IRQHandler - B ACE_PPE_Flag8_IRQHandler - - PUBWEAK ACE_PPE_Flag9_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag9_IRQHandler - B ACE_PPE_Flag9_IRQHandler - - PUBWEAK ACE_PPE_Flag10_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag10_IRQHandler - B ACE_PPE_Flag10_IRQHandler - - PUBWEAK ACE_PPE_Flag11_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag11_IRQHandler - B ACE_PPE_Flag11_IRQHandler - - PUBWEAK ACE_PPE_Flag12_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag12_IRQHandler - B ACE_PPE_Flag12_IRQHandler - - PUBWEAK ACE_PPE_Flag13_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag13_IRQHandler - B ACE_PPE_Flag13_IRQHandler - - PUBWEAK ACE_PPE_Flag14_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag14_IRQHandler - B ACE_PPE_Flag14_IRQHandler - - PUBWEAK ACE_PPE_Flag15_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag15_IRQHandler - B ACE_PPE_Flag15_IRQHandler - - PUBWEAK ACE_PPE_Flag16_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag16_IRQHandler - B ACE_PPE_Flag16_IRQHandler - - PUBWEAK ACE_PPE_Flag17_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag17_IRQHandler - B ACE_PPE_Flag17_IRQHandler - - PUBWEAK ACE_PPE_Flag18_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag18_IRQHandler - B ACE_PPE_Flag18_IRQHandler - - PUBWEAK ACE_PPE_Flag19_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag19_IRQHandler - B ACE_PPE_Flag19_IRQHandler - - PUBWEAK ACE_PPE_Flag20_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag20_IRQHandler - B ACE_PPE_Flag20_IRQHandler - - PUBWEAK ACE_PPE_Flag21_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag21_IRQHandler - B ACE_PPE_Flag21_IRQHandler - - PUBWEAK ACE_PPE_Flag22_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag22_IRQHandler - B ACE_PPE_Flag22_IRQHandler - - PUBWEAK ACE_PPE_Flag23_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag23_IRQHandler - B ACE_PPE_Flag23_IRQHandler - - PUBWEAK ACE_PPE_Flag24_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag24_IRQHandler - B ACE_PPE_Flag24_IRQHandler - - PUBWEAK ACE_PPE_Flag25_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag25_IRQHandler - B ACE_PPE_Flag25_IRQHandler - - PUBWEAK ACE_PPE_Flag26_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag26_IRQHandler - B ACE_PPE_Flag26_IRQHandler - - PUBWEAK ACE_PPE_Flag27_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag27_IRQHandler - B ACE_PPE_Flag27_IRQHandler - - PUBWEAK ACE_PPE_Flag28_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag28_IRQHandler - B ACE_PPE_Flag28_IRQHandler - - PUBWEAK ACE_PPE_Flag29_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag29_IRQHandler - B ACE_PPE_Flag29_IRQHandler - - PUBWEAK ACE_PPE_Flag30_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag30_IRQHandler - B ACE_PPE_Flag30_IRQHandler - - PUBWEAK ACE_PPE_Flag31_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag31_IRQHandler - B ACE_PPE_Flag31_IRQHandler - - END diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h deleted file mode 100644 index e0565d7d4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h +++ /dev/null @@ -1,1818 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration - * - * List of Lint messages which will be suppressed and not shown: - * - Error 10: \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' - * . - * - Error 530: \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized - * . - * - Error 550: \n - * __regBasePri = (basePri & 0x1ff); \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed - * . - * - Error 754: \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced - * . - * - Error 750: \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced - * . - * - Error 528: \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced - * . - * - Error 751: \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced - * . - * Note: To re-enable a Message, insert a space before 'lint' * - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions - This file defines all structures and symbols for CMSIS core: - - CMSIS version number - - Cortex-M core registers and bitfields - - Cortex-M core peripheral base address - @{ - */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus - #define __I volatile /*!< defines 'read only' permissions */ -#else - #define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ -/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register - @{ -*/ - - -/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC - memory mapped structure for Nested Vectored Interrupt Controller (NVIC) - @{ - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ -} NVIC_Type; -/*@}*/ /* end of group CMSIS_CM3_NVIC */ - - -/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB - memory mapped structure for System Control Block (SCB) - @{ - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ -/*@}*/ /* end of group CMSIS_CM3_SCB */ - - -/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick - memory mapped structure for SysTick - @{ - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ -/*@}*/ /* end of group CMSIS_CM3_SysTick */ - - -/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM - memory mapped structure for Instrumentation Trace Macrocell (ITM) - @{ - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ - __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ - __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ -/*@}*/ /* end of group CMSIS_CM3_ITM */ - - -/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type - memory mapped structure for Interrupt Type - @{ - */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - -/* Interrupt Controller Type Register Definitions */ -#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ -#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ -#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ - -#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ -#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ - -#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ -#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ -/*@}*/ /* end of group CMSIS_CM3_InterruptType */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU - memory mapped structure for Memory Protection Unit (MPU) - @{ - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ -#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ -#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ -#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ -#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ -#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ -#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@}*/ /* end of group CMSIS_CM3_MPU */ -#endif - - -/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug - memory mapped structure for Core Debug Register - @{ - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ -/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_register */ - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq(void) { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq(void) { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq(void) { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq(void) { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP(void) { __ASM volatile ("nop"); } -static __INLINE void __WFI(void) { __ASM volatile ("wfi"); } -static __INLINE void __WFE(void) { __ASM volatile ("wfe"); } -static __INLINE void __SEV(void) { __ASM volatile ("sev"); } -static __INLINE void __ISB(void) { __ASM volatile ("isb"); } -static __INLINE void __DSB(void) { __ASM volatile ("dsb"); } -static __INLINE void __DMB(void) { __ASM volatile ("dmb"); } -static __INLINE void __CLREX(void) { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - -/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface - Core Function Interface containing: - - Core NVIC Functions - - Core SysTick Functions - - Core Reset Functions -*/ -/*@{*/ - -/* ########################## NVIC functions #################################### */ - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param PriorityGroup is priority grouping field - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - (0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @return priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn The positive number of the external interrupt to enable - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn The positive number of the external interrupt to disable - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn The number of the device specifc interrupt - * @return 1 = interrupt pending, 0 = interrupt not pending - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for set pending - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for clear pending - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn The number of the interrupt for read active bit - * @return 1 = interrupt active, 0 = interrupt not active - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn The number of the interrupt for set priority - * @param priority The priority to set - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn The number of the interrupt for get priority - * @return The priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param PriorityGroup The used priority group - * @param PreemptPriority The preemptive priority value (starting from 0) - * @param SubPriority The sub priority value (starting from 0) - * @return The encoded priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param Priority The priority for the interrupt - * @param PriorityGroup The used priority group - * @param pPreemptPriority The preemptive priority value (starting from 0) - * @param pSubPriority The sub priority value (starting from 0) - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param ticks number of ticks between two interrupts - * @return 1 = failed, 0 = successful - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - - - - -/* ################################## Reset function ############################################ */ - -/** - * @brief Initiate a system reset request. - * - * Initiate a system reset request to reset the MCU - */ -static __INLINE void NVIC_SystemReset(void) -{ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ - - - -/* ##################################### Debug In/Output function ########################################### */ - -/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface - Core Debug Interface containing: - - Core Debug Receive / Transmit Functions - - Core Debug Defines - - Core Debug Variables -*/ -/*@{*/ - -extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ - - -/** - * @brief Outputs a character via the ITM channel 0 - * - * @param ch character to output - * @return character to output - * - * The function outputs a character via the ITM channel 0. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ - (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** - * @brief Inputs a character via variable ITM_RxBuffer - * - * @return received character, -1 = no character received - * - * The function inputs a character via variable ITM_RxBuffer. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE int ITM_ReceiveChar (void) { - int ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** - * @brief Check if a character via variable ITM_RxBuffer is available - * - * @return 1 = character available, 0 = no character available - * - * The function checks variable ITM_RxBuffer whether a character is available or not. - * The function returns '1' if a character is available and '0' if no character is available. - */ -static __INLINE int ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ - - -#ifdef __cplusplus -} -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_definitions */ - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s deleted file mode 100644 index cdd3ebc82..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s +++ /dev/null @@ -1,610 +0,0 @@ -;/******************************************************************************* -; * SmartFusion startup code for Keil-MDK. -; * -; * This file is based on an ARM provided example. -; * -; * SVN $Revision: 2536 $ -; * SVN $Date: 2010-04-08 16:57:12 +0100 (Thu, 08 Apr 2010) $ -; */ - -; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ - - -; Stack Configuration -; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - -Stack_Size EQU 0x00002000 - - AREA STACK, NOINIT, READWRITE, ALIGN=3 -Stack_Mem SPACE Stack_Size -__initial_sp - - -; Heap Configuration -; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - -Heap_Size EQU 0x00000000 - - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -Heap_Mem SPACE Heap_Size -__heap_limit - - - PRESERVE8 - THUMB - - -;------------------------------------------------------------------------------- -; Vector Table Mapped to Address 0 at Reset - AREA RESET, DATA, READONLY - EXPORT __Vectors - EXPORT __Vectors_End - EXPORT __Vectors_Size - - -__Vectors DCD __initial_sp ; Top of Stack - DCD Reset_Handler ; Reset Handler - DCD NMI_Handler ; NMI Handler - DCD HardFault_Handler ; Hard Fault Handler - DCD MemManage_Handler ; MPU Fault Handler - DCD BusFault_Handler ; Bus Fault Handler - DCD UsageFault_Handler ; Usage Fault Handler - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD SVC_Handler ; SVCall Handler - DCD DebugMon_Handler ; Debug Monitor Handler - DCD 0 ; Reserved - DCD PendSV_Handler ; PendSV Handler - DCD SysTick_Handler ; SysTick Handler - - ; External Interrupts - DCD WdogWakeup_IRQHandler - DCD BrownOut_1_5V_IRQHandler - DCD BrownOut_3_3V_IRQHandler - DCD RTC_Match_IRQHandler - DCD RTCIF_Pub_IRQHandler - DCD EthernetMAC_IRQHandler - DCD IAP_IRQHandler - DCD ENVM0_IRQHandler - DCD ENVM1_IRQHandler - DCD DMA_IRQHandler - DCD UART0_IRQHandler - DCD UART1_IRQHandler - DCD SPI0_IRQHandler - DCD SPI1_IRQHandler - DCD I2C0_IRQHandler - DCD I2C0_SMBAlert_IRQHandler - DCD I2C0_SMBus_IRQHandler - DCD I2C1_IRQHandler - DCD I2C1_SMBAlert_IRQHandler - DCD I2C1_SMBus_IRQHandler - DCD Timer1_IRQHandler - DCD Timer2_IRQHandler - DCD PLL_Lock_IRQHandler - DCD PLL_LockLost_IRQHandler - DCD CommError_IRQHandler - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD Fabric_IRQHandler - DCD GPIO0_IRQHandler - DCD GPIO1_IRQHandler - DCD GPIO2_IRQHandler - DCD GPIO3_IRQHandler - DCD GPIO4_IRQHandler - DCD GPIO5_IRQHandler - DCD GPIO6_IRQHandler - DCD GPIO7_IRQHandler - DCD GPIO8_IRQHandler - DCD GPIO9_IRQHandler - DCD GPIO10_IRQHandler - DCD GPIO11_IRQHandler - DCD GPIO12_IRQHandler - DCD GPIO13_IRQHandler - DCD GPIO14_IRQHandler - DCD GPIO15_IRQHandler - DCD GPIO16_IRQHandler - DCD GPIO17_IRQHandler - DCD GPIO18_IRQHandler - DCD GPIO19_IRQHandler - DCD GPIO20_IRQHandler - DCD GPIO21_IRQHandler - DCD GPIO22_IRQHandler - DCD GPIO23_IRQHandler - DCD GPIO24_IRQHandler - DCD GPIO25_IRQHandler - DCD GPIO26_IRQHandler - DCD GPIO27_IRQHandler - DCD GPIO28_IRQHandler - DCD GPIO29_IRQHandler - DCD GPIO30_IRQHandler - DCD GPIO31_IRQHandler - DCD ACE_PC0_Flag0_IRQHandler - DCD ACE_PC0_Flag1_IRQHandler - DCD ACE_PC0_Flag2_IRQHandler - DCD ACE_PC0_Flag3_IRQHandler - DCD ACE_PC1_Flag0_IRQHandler - DCD ACE_PC1_Flag1_IRQHandler - DCD ACE_PC1_Flag2_IRQHandler - DCD ACE_PC1_Flag3_IRQHandler - DCD ACE_PC2_Flag0_IRQHandler - DCD ACE_PC2_Flag1_IRQHandler - DCD ACE_PC2_Flag2_IRQHandler - DCD ACE_PC2_Flag3_IRQHandler - DCD ACE_ADC0_DataValid_IRQHandler - DCD ACE_ADC1_DataValid_IRQHandler - DCD ACE_ADC2_DataValid_IRQHandler - DCD ACE_ADC0_CalDone_IRQHandler - DCD ACE_ADC1_CalDone_IRQHandler - DCD ACE_ADC2_CalDone_IRQHandler - DCD ACE_ADC0_CalStart_IRQHandler - DCD ACE_ADC1_CalStart_IRQHandler - DCD ACE_ADC2_CalStart_IRQHandler - DCD ACE_Comp0_Fall_IRQHandler - DCD ACE_Comp1_Fall_IRQHandler - DCD ACE_Comp2_Fall_IRQHandler - DCD ACE_Comp3_Fall_IRQHandler - DCD ACE_Comp4_Fall_IRQHandler - DCD ACE_Comp5_Fall_IRQHandler - DCD ACE_Comp6_Fall_IRQHandler - DCD ACE_Comp7_Fall_IRQHandler - DCD ACE_Comp8_Fall_IRQHandler - DCD ACE_Comp9_Fall_IRQHandler - DCD ACE_Comp10_Fall_IRQHandler - DCD ACE_Comp11_Fall_IRQHandler - DCD ACE_Comp0_Rise_IRQHandler - DCD ACE_Comp1_Rise_IRQHandler - DCD ACE_Comp2_Rise_IRQHandler - DCD ACE_Comp3_Rise_IRQHandler - DCD ACE_Comp4_Rise_IRQHandler - DCD ACE_Comp5_Rise_IRQHandler - DCD ACE_Comp6_Rise_IRQHandler - DCD ACE_Comp7_Rise_IRQHandler - DCD ACE_Comp8_Rise_IRQHandler - DCD ACE_Comp9_Rise_IRQHandler - DCD ACE_Comp10_Rise_IRQHandler - DCD ACE_Comp11_Rise_IRQHandler - DCD ACE_ADC0_FifoFull_IRQHandler - DCD ACE_ADC0_FifoAFull_IRQHandler - DCD ACE_ADC0_FifoEmpty_IRQHandler - DCD ACE_ADC1_FifoFull_IRQHandler - DCD ACE_ADC1_FifoAFull_IRQHandler - DCD ACE_ADC1_FifoEmpty_IRQHandler - DCD ACE_ADC2_FifoFull_IRQHandler - DCD ACE_ADC2_FifoAFull_IRQHandler - DCD ACE_ADC2_FifoEmpty_IRQHandler - DCD ACE_PPE_Flag0_IRQHandler - DCD ACE_PPE_Flag1_IRQHandler - DCD ACE_PPE_Flag2_IRQHandler - DCD ACE_PPE_Flag3_IRQHandler - DCD ACE_PPE_Flag4_IRQHandler - DCD ACE_PPE_Flag5_IRQHandler - DCD ACE_PPE_Flag6_IRQHandler - DCD ACE_PPE_Flag7_IRQHandler - DCD ACE_PPE_Flag8_IRQHandler - DCD ACE_PPE_Flag9_IRQHandler - DCD ACE_PPE_Flag10_IRQHandler - DCD ACE_PPE_Flag11_IRQHandler - DCD ACE_PPE_Flag12_IRQHandler - DCD ACE_PPE_Flag13_IRQHandler - DCD ACE_PPE_Flag14_IRQHandler - DCD ACE_PPE_Flag15_IRQHandler - DCD ACE_PPE_Flag16_IRQHandler - DCD ACE_PPE_Flag17_IRQHandler - DCD ACE_PPE_Flag18_IRQHandler - DCD ACE_PPE_Flag19_IRQHandler - DCD ACE_PPE_Flag20_IRQHandler - DCD ACE_PPE_Flag21_IRQHandler - DCD ACE_PPE_Flag22_IRQHandler - DCD ACE_PPE_Flag23_IRQHandler - DCD ACE_PPE_Flag24_IRQHandler - DCD ACE_PPE_Flag25_IRQHandler - DCD ACE_PPE_Flag26_IRQHandler - DCD ACE_PPE_Flag27_IRQHandler - DCD ACE_PPE_Flag28_IRQHandler - DCD ACE_PPE_Flag29_IRQHandler - DCD ACE_PPE_Flag30_IRQHandler - DCD ACE_PPE_Flag31_IRQHandler - -__Vectors_End - -__Vectors_Size EQU __Vectors_End - __Vectors - - AREA |.text|, CODE, READONLY - - - -;------------------------------------------------------------------------------- -; Reset Handler -; -Reset_Handler PROC - EXPORT Reset_Handler [WEAK] - IMPORT SystemInit - IMPORT __main - LDR R0, =SystemInit - BLX R0 - LDR R0, =__main - BX R0 - ENDP - -;------------------------------------------------------------------------------- -; Dummy Exception Handlers (infinite loops which can be modified) - -NMI_Handler PROC - EXPORT NMI_Handler [WEAK] - B . - ENDP -HardFault_Handler\ - PROC - EXPORT HardFault_Handler [WEAK] - B . - ENDP -MemManage_Handler\ - PROC - EXPORT MemManage_Handler [WEAK] - B . - ENDP -BusFault_Handler\ - PROC - EXPORT BusFault_Handler [WEAK] - B . - ENDP -UsageFault_Handler\ - PROC - EXPORT UsageFault_Handler [WEAK] - B . - ENDP -SVC_Handler PROC - EXPORT SVC_Handler [WEAK] - B . - ENDP -DebugMon_Handler\ - PROC - EXPORT DebugMon_Handler [WEAK] - B . - ENDP -PendSV_Handler PROC - EXPORT PendSV_Handler [WEAK] - B . - ENDP -SysTick_Handler PROC - EXPORT SysTick_Handler [WEAK] - B . - ENDP - -Default_Handler PROC - - EXPORT WdogWakeup_IRQHandler [WEAK] - EXPORT BrownOut_1_5V_IRQHandler [WEAK] - EXPORT BrownOut_3_3V_IRQHandler [WEAK] - EXPORT RTC_Match_IRQHandler [WEAK] - EXPORT RTCIF_Pub_IRQHandler [WEAK] - EXPORT EthernetMAC_IRQHandler [WEAK] - EXPORT IAP_IRQHandler [WEAK] - EXPORT ENVM0_IRQHandler [WEAK] - EXPORT ENVM1_IRQHandler [WEAK] - EXPORT DMA_IRQHandler [WEAK] - EXPORT UART0_IRQHandler [WEAK] - EXPORT UART1_IRQHandler [WEAK] - EXPORT SPI0_IRQHandler [WEAK] - EXPORT SPI1_IRQHandler [WEAK] - EXPORT I2C0_IRQHandler [WEAK] - EXPORT I2C0_SMBAlert_IRQHandler [WEAK] - EXPORT I2C0_SMBus_IRQHandler [WEAK] - EXPORT I2C1_IRQHandler [WEAK] - EXPORT I2C1_SMBAlert_IRQHandler [WEAK] - EXPORT I2C1_SMBus_IRQHandler [WEAK] - EXPORT Timer1_IRQHandler [WEAK] - EXPORT Timer2_IRQHandler [WEAK] - EXPORT PLL_Lock_IRQHandler [WEAK] - EXPORT PLL_LockLost_IRQHandler [WEAK] - EXPORT CommError_IRQHandler [WEAK] - EXPORT Fabric_IRQHandler [WEAK] - EXPORT GPIO0_IRQHandler [WEAK] - EXPORT GPIO1_IRQHandler [WEAK] - EXPORT GPIO2_IRQHandler [WEAK] - EXPORT GPIO3_IRQHandler [WEAK] - EXPORT GPIO4_IRQHandler [WEAK] - EXPORT GPIO5_IRQHandler [WEAK] - EXPORT GPIO6_IRQHandler [WEAK] - EXPORT GPIO7_IRQHandler [WEAK] - EXPORT GPIO8_IRQHandler [WEAK] - EXPORT GPIO9_IRQHandler [WEAK] - EXPORT GPIO10_IRQHandler [WEAK] - EXPORT GPIO11_IRQHandler [WEAK] - EXPORT GPIO12_IRQHandler [WEAK] - EXPORT GPIO13_IRQHandler [WEAK] - EXPORT GPIO14_IRQHandler [WEAK] - EXPORT GPIO15_IRQHandler [WEAK] - EXPORT GPIO16_IRQHandler [WEAK] - EXPORT GPIO17_IRQHandler [WEAK] - EXPORT GPIO18_IRQHandler [WEAK] - EXPORT GPIO19_IRQHandler [WEAK] - EXPORT GPIO20_IRQHandler [WEAK] - EXPORT GPIO21_IRQHandler [WEAK] - EXPORT GPIO22_IRQHandler [WEAK] - EXPORT GPIO23_IRQHandler [WEAK] - EXPORT GPIO24_IRQHandler [WEAK] - EXPORT GPIO25_IRQHandler [WEAK] - EXPORT GPIO26_IRQHandler [WEAK] - EXPORT GPIO27_IRQHandler [WEAK] - EXPORT GPIO28_IRQHandler [WEAK] - EXPORT GPIO29_IRQHandler [WEAK] - EXPORT GPIO30_IRQHandler [WEAK] - EXPORT GPIO31_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag0_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag1_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag2_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag3_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag0_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag1_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag2_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag3_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag0_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag1_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag2_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag3_IRQHandler [WEAK] - EXPORT ACE_ADC0_DataValid_IRQHandler [WEAK] - EXPORT ACE_ADC1_DataValid_IRQHandler [WEAK] - EXPORT ACE_ADC2_DataValid_IRQHandler [WEAK] - EXPORT ACE_ADC0_CalDone_IRQHandler [WEAK] - EXPORT ACE_ADC1_CalDone_IRQHandler [WEAK] - EXPORT ACE_ADC2_CalDone_IRQHandler [WEAK] - EXPORT ACE_ADC0_CalStart_IRQHandler [WEAK] - EXPORT ACE_ADC1_CalStart_IRQHandler [WEAK] - EXPORT ACE_ADC2_CalStart_IRQHandler [WEAK] - EXPORT ACE_Comp0_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp1_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp2_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp3_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp4_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp5_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp6_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp7_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp8_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp9_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp10_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp11_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp0_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp1_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp2_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp3_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp4_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp5_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp6_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp7_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp8_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp9_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp10_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp11_Rise_IRQHandler [WEAK] - EXPORT ACE_ADC0_FifoFull_IRQHandler [WEAK] - EXPORT ACE_ADC0_FifoAFull_IRQHandler [WEAK] - EXPORT ACE_ADC0_FifoEmpty_IRQHandler [WEAK] - EXPORT ACE_ADC1_FifoFull_IRQHandler [WEAK] - EXPORT ACE_ADC1_FifoAFull_IRQHandler [WEAK] - EXPORT ACE_ADC1_FifoEmpty_IRQHandler [WEAK] - EXPORT ACE_ADC2_FifoFull_IRQHandler [WEAK] - EXPORT ACE_ADC2_FifoAFull_IRQHandler [WEAK] - EXPORT ACE_ADC2_FifoEmpty_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag0_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag1_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag2_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag3_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag4_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag5_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag6_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag7_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag8_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag9_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag10_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag11_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag12_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag13_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag14_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag15_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag16_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag17_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag18_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag19_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag20_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag21_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag22_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag23_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag24_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag25_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag26_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag27_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag28_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag29_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag30_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag31_IRQHandler [WEAK] - - -WdogWakeup_IRQHandler -BrownOut_1_5V_IRQHandler -BrownOut_3_3V_IRQHandler -RTC_Match_IRQHandler -RTCIF_Pub_IRQHandler -EthernetMAC_IRQHandler -IAP_IRQHandler -ENVM0_IRQHandler -ENVM1_IRQHandler -DMA_IRQHandler -UART0_IRQHandler -UART1_IRQHandler -SPI0_IRQHandler -SPI1_IRQHandler -I2C0_IRQHandler -I2C0_SMBAlert_IRQHandler -I2C0_SMBus_IRQHandler -I2C1_IRQHandler -I2C1_SMBAlert_IRQHandler -I2C1_SMBus_IRQHandler -Timer1_IRQHandler -Timer2_IRQHandler -PLL_Lock_IRQHandler -PLL_LockLost_IRQHandler -CommError_IRQHandler -Fabric_IRQHandler -GPIO0_IRQHandler -GPIO1_IRQHandler -GPIO2_IRQHandler -GPIO3_IRQHandler -GPIO4_IRQHandler -GPIO5_IRQHandler -GPIO6_IRQHandler -GPIO7_IRQHandler -GPIO8_IRQHandler -GPIO9_IRQHandler -GPIO10_IRQHandler -GPIO11_IRQHandler -GPIO12_IRQHandler -GPIO13_IRQHandler -GPIO14_IRQHandler -GPIO15_IRQHandler -GPIO16_IRQHandler -GPIO17_IRQHandler -GPIO18_IRQHandler -GPIO19_IRQHandler -GPIO20_IRQHandler -GPIO21_IRQHandler -GPIO22_IRQHandler -GPIO23_IRQHandler -GPIO24_IRQHandler -GPIO25_IRQHandler -GPIO26_IRQHandler -GPIO27_IRQHandler -GPIO28_IRQHandler -GPIO29_IRQHandler -GPIO30_IRQHandler -GPIO31_IRQHandler -ACE_PC0_Flag0_IRQHandler -ACE_PC0_Flag1_IRQHandler -ACE_PC0_Flag2_IRQHandler -ACE_PC0_Flag3_IRQHandler -ACE_PC1_Flag0_IRQHandler -ACE_PC1_Flag1_IRQHandler -ACE_PC1_Flag2_IRQHandler -ACE_PC1_Flag3_IRQHandler -ACE_PC2_Flag0_IRQHandler -ACE_PC2_Flag1_IRQHandler -ACE_PC2_Flag2_IRQHandler -ACE_PC2_Flag3_IRQHandler -ACE_ADC0_DataValid_IRQHandler -ACE_ADC1_DataValid_IRQHandler -ACE_ADC2_DataValid_IRQHandler -ACE_ADC0_CalDone_IRQHandler -ACE_ADC1_CalDone_IRQHandler -ACE_ADC2_CalDone_IRQHandler -ACE_ADC0_CalStart_IRQHandler -ACE_ADC1_CalStart_IRQHandler -ACE_ADC2_CalStart_IRQHandler -ACE_Comp0_Fall_IRQHandler -ACE_Comp1_Fall_IRQHandler -ACE_Comp2_Fall_IRQHandler -ACE_Comp3_Fall_IRQHandler -ACE_Comp4_Fall_IRQHandler -ACE_Comp5_Fall_IRQHandler -ACE_Comp6_Fall_IRQHandler -ACE_Comp7_Fall_IRQHandler -ACE_Comp8_Fall_IRQHandler -ACE_Comp9_Fall_IRQHandler -ACE_Comp10_Fall_IRQHandler -ACE_Comp11_Fall_IRQHandler -ACE_Comp0_Rise_IRQHandler -ACE_Comp1_Rise_IRQHandler -ACE_Comp2_Rise_IRQHandler -ACE_Comp3_Rise_IRQHandler -ACE_Comp4_Rise_IRQHandler -ACE_Comp5_Rise_IRQHandler -ACE_Comp6_Rise_IRQHandler -ACE_Comp7_Rise_IRQHandler -ACE_Comp8_Rise_IRQHandler -ACE_Comp9_Rise_IRQHandler -ACE_Comp10_Rise_IRQHandler -ACE_Comp11_Rise_IRQHandler -ACE_ADC0_FifoFull_IRQHandler -ACE_ADC0_FifoAFull_IRQHandler -ACE_ADC0_FifoEmpty_IRQHandler -ACE_ADC1_FifoFull_IRQHandler -ACE_ADC1_FifoAFull_IRQHandler -ACE_ADC1_FifoEmpty_IRQHandler -ACE_ADC2_FifoFull_IRQHandler -ACE_ADC2_FifoAFull_IRQHandler -ACE_ADC2_FifoEmpty_IRQHandler -ACE_PPE_Flag0_IRQHandler -ACE_PPE_Flag1_IRQHandler -ACE_PPE_Flag2_IRQHandler -ACE_PPE_Flag3_IRQHandler -ACE_PPE_Flag4_IRQHandler -ACE_PPE_Flag5_IRQHandler -ACE_PPE_Flag6_IRQHandler -ACE_PPE_Flag7_IRQHandler -ACE_PPE_Flag8_IRQHandler -ACE_PPE_Flag9_IRQHandler -ACE_PPE_Flag10_IRQHandler -ACE_PPE_Flag11_IRQHandler -ACE_PPE_Flag12_IRQHandler -ACE_PPE_Flag13_IRQHandler -ACE_PPE_Flag14_IRQHandler -ACE_PPE_Flag15_IRQHandler -ACE_PPE_Flag16_IRQHandler -ACE_PPE_Flag17_IRQHandler -ACE_PPE_Flag18_IRQHandler -ACE_PPE_Flag19_IRQHandler -ACE_PPE_Flag20_IRQHandler -ACE_PPE_Flag21_IRQHandler -ACE_PPE_Flag22_IRQHandler -ACE_PPE_Flag23_IRQHandler -ACE_PPE_Flag24_IRQHandler -ACE_PPE_Flag25_IRQHandler -ACE_PPE_Flag26_IRQHandler -ACE_PPE_Flag27_IRQHandler -ACE_PPE_Flag28_IRQHandler -ACE_PPE_Flag29_IRQHandler -ACE_PPE_Flag30_IRQHandler -ACE_PPE_Flag31_IRQHandler - - B . - - ENDP - - - ALIGN - - -;------------------------------------------------------------------------------- -; User Initial Stack & Heap - - IF :DEF:__MICROLIB - - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - - ELSE - - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - - LDR R0, = Heap_Mem - LDR R1, =(Stack_Mem + Stack_Size) - LDR R2, = (Heap_Mem + Heap_Size) - LDR R3, = Stack_Mem - BX LR - - ALIGN - - ENDIF - - - END diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c deleted file mode 100644 index 1b3798f3e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2069 $ - * SVN $Date: 2010-01-28 00:23:48 +0000 (Thu, 28 Jan 2010) $ - */ -#include "a2fxxxm3.h" -#include "mss_assert.h" - -/* System frequency (FCLK) coming out of reset is 25MHz. */ -#define RESET_SYSCLCK_FREQ 25000000uL - -/* - * SmartFusion Microcontroller Subsystem FLCK frequency. - * The value of SMARTFUSION_FCLK_FREQ is used to report the system's clock - * frequency in system's which either do not use the Actel System Boot or - * a version of the Actel System Boot older than 1.3.1. In eitehr of these cases - * SMARTFUSION_FCLK_FREQ should be defined in the projects settings to reflect - * the FCLK frequency selected in the Libero MSS configurator. - * Systems using the Actel System Boot version 1.3.1 or later do not require this - * define since the system's frequency is retrieved from eNVM spare pages where - * the MSS Configurator stored the frequency selected during hardware design/configuration. - */ -#ifdef SMARTFUSION_FCLK_FREQ -#define SMARTFUSION_FCLK_FREQ_DEFINED 1 -#else -#define SMARTFUSION_FCLK_FREQ_DEFINED 0 -#define SMARTFUSION_FCLK_FREQ RESET_SYSCLCK_FREQ -#endif - -/* Divider values for APB0, APB1 and ACE clocks. */ -#define RESET_PCLK0_DIV 4uL -#define RESET_PCLK1_DIV 4uL -#define RESET_ACE_DIV 4uL -#define RESET_FPGA_CLK_DIV 4uL - -/* System register clock control mask and shift for PCLK dividers. */ -#define PCLK_DIV_MASK 0x00000003uL -#define PCLK0_DIV_SHIFT 2uL -#define PCLK1_DIV_SHIFT 4uL -#define ACE_DIV_SHIFT 6uL - -/* System register MSS_CCC_DIV_CR mask and shift for GLB (FPGA fabric clock). */ -#define OBDIV_SHIFT 8uL -#define OBDIV_MASK 0x0000001FuL -#define OBDIVHALF_SHIFT 13uL -#define OBDIVHALF_MASK 0x00000001uL - -/* - * Actel system boot version defines used to extract the system clock from eNVM - * spare pages. - * These defines allow detecting the presence of Actel system boot in eNVM spare - * pages and the version of that system boot executable and associated - * configuration data. - */ -#define SYSBOOT_KEY_ADDR (uint32_t *)0x6008081C -#define SYSBOOT_KEY_VALUE 0x4C544341uL -#define SYSBOOT_VERSION_ADDR (uint32_t *)0x60080840 -#define SYSBOOT_1_3_FCLK_ADDR (uint32_t *)0x6008162C -#define SYSBOOT_2_x_FCLK_ADDR (uint32_t *)0x60081EAC - -/* - * The system boot version is stored in the least significant 24 bits of a word. - * The FCLK is stored in eNVM from version 1.3.1 of the system boot. We expect - * that the major version number of the system boot version will change if the - * system boot configuration data layout needs to change. - */ -#define SYSBOOT_VERSION_MASK 0x00FFFFFFuL -#define MIN_SYSBOOT_VERSION 0x00010301uL -#define SYSBOOT_VERSION_2_X 0x00020000uL -#define MAX_SYSBOOT_VERSION 0x00030000uL - -/* Standard CMSIS global variables. */ -uint32_t SystemFrequency = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ -uint32_t SystemCoreClock = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -uint32_t g_FrequencyPCLK0 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK0_DIV); /*!< Clock frequency of APB bus 0. */ -uint32_t g_FrequencyPCLK1 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK1_DIV); /*!< Clock frequency of APB bus 1. */ -uint32_t g_FrequencyACE = (SMARTFUSION_FCLK_FREQ / RESET_ACE_DIV); /*!< Clock frequency of Analog Compute Engine. */ -uint32_t g_FrequencyFPGA = (SMARTFUSION_FCLK_FREQ / RESET_FPGA_CLK_DIV); /*!< Clock frequecny of FPGA fabric */ - -/* Local functions */ -static uint32_t GetSystemClock( void ); - -/***************************************************************************//** - * See system_a2fm3fxxx.h for details. - */ -void SystemInit(void) -{ -} - -/***************************************************************************//** - * - */ -void SystemCoreClockUpdate (void) -{ - uint32_t PclkDiv0; - uint32_t PclkDiv1; - uint32_t AceDiv; - uint32_t FabDiv; - - const uint32_t pclk_div_lut[4] = { 1uL, 2uL, 4uL, 1uL }; - - /* Read PCLK dividers from system registers. Multiply the value read from - * system register by two to get actual divider value. */ - PclkDiv0 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK0_DIV_SHIFT) & PCLK_DIV_MASK)]; - PclkDiv1 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK1_DIV_SHIFT) & PCLK_DIV_MASK)]; - AceDiv = pclk_div_lut[((SYSREG->MSS_CLK_CR >> ACE_DIV_SHIFT) & PCLK_DIV_MASK)]; - { - /* Compute the FPGA fabric frequency divider. */ - uint32_t obdiv; - uint32_t obdivhalf; - - obdiv = (SYSREG->MSS_CCC_DIV_CR >> OBDIV_SHIFT) & OBDIV_MASK; - obdivhalf = (SYSREG->MSS_CCC_DIV_CR >> OBDIVHALF_SHIFT) & OBDIVHALF_MASK; - FabDiv = obdiv + 1uL; - if ( obdivhalf != 0uL ) - { - FabDiv = FabDiv * 2uL; - } - } - - /* Retrieve FCLK from eNVM spare pages if Actel system boot programmed as part of the system. */ - - /* Read system clock from eNVM spare pages. */ - SystemCoreClock = GetSystemClock(); - g_FrequencyPCLK0 = SystemCoreClock / PclkDiv0; - g_FrequencyPCLK1 = SystemCoreClock / PclkDiv1; - g_FrequencyACE = SystemCoreClock / AceDiv; - g_FrequencyFPGA = SystemCoreClock / FabDiv; - - /* Keep SystemFrequency as well as SystemCoreClock for legacy reasons. */ - SystemFrequency = SystemCoreClock; -} - -/***************************************************************************//** - * Retrieve the system clock frequency from eNVM spare page if available. - * Returns the frequency defined through SMARTFUSION_FCLK_FREQ if FCLK cannot be - * retrieved from eNVM spare pages. - * The FCLK frequency value selected in the MSS Configurator software tool is - * stored in eNVM spare pages as part of the Actel system boot configuration data. - */ -uint32_t GetSystemClock( void ) -{ - uint32_t fclk = 0uL; - - uint32_t * p_sysboot_key = SYSBOOT_KEY_ADDR; - - if ( SYSBOOT_KEY_VALUE == *p_sysboot_key ) - { - /* Actel system boot programmed, check if it has the FCLK value stored. */ - uint32_t *p_sysboot_version = SYSBOOT_VERSION_ADDR; - uint32_t sysboot_version = *p_sysboot_version; - - sysboot_version &= SYSBOOT_VERSION_MASK; - - if ( sysboot_version >= MIN_SYSBOOT_VERSION ) - { - /* Handle change of eNVM location of FCLK between 1.3.x and 2.x.x versions of the system boot. */ - if ( sysboot_version < SYSBOOT_VERSION_2_X ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 1.3.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_1_3_FCLK_ADDR; - fclk = *p_fclk; - } - else if ( sysboot_version < MAX_SYSBOOT_VERSION ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 2.x.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_2_x_FCLK_ADDR; - fclk = *p_fclk; - } - else - { - fclk = 0uL; - } - } - } - - if ( 0uL == fclk ) - { - /* - * Could not retrieve FCLK from system boot configuration data. Fall back - * to using SMARTFUSION_FCLK_FREQ which must then be defined as part of - * project settings. - */ - ASSERT( SMARTFUSION_FCLK_FREQ_DEFINED ); - fclk = SMARTFUSION_FCLK_FREQ; - } - - return fclk; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h deleted file mode 100644 index 6ae0ad5b7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2064 $ - * SVN $Date: 2010-01-27 15:05:58 +0000 (Wed, 27 Jan 2010) $ - */ - -#ifndef __SYSTEM_A2FM3FXX_H__ -#define __SYSTEM_A2FM3FXX_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Standard CMSIS global variables. */ -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -extern uint32_t g_FrequencyPCLK0; /*!< Clock frequency of APB bus 0. */ -extern uint32_t g_FrequencyPCLK1; /*!< Clock frequency of APB bus 1. */ -extern uint32_t g_FrequencyACE; /*!< Clock frequency of Analog Compute Engine. */ -extern uint32_t g_FrequencyFPGA; /*!< Clock frequecny of FPGA fabric */ - -/***************************************************************************//** - * The SystemInit() is a standard CMSIS function called during system startup. - * It is meant to perform low level hardware setup such as configuring PLLs. In - * the case of SmartFusion these hardware setup operations are performed by the - * chip boot which executed before the application started. Therefore this - * function does not need to perform any hardware setup. - */ -void SystemInit(void); - -/***************************************************************************//** - * The SystemCoreClockUpdate() is a standard CMSIS function which can be called - * by the application in order to ensure that the SystemCoreClock global - * variable contains the up to date Cortex-M3 core frequency. Calling this - * function also updates the global variables containing the frequencies of the - * APB busses connecting the peripherals and the ACE frequency. - */ -void SystemCoreClockUpdate(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c deleted file mode 100644 index 595e71844..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c +++ /dev/null @@ -1,835 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver - * implementation. - * - * SVN $Revision: 2152 $ - * SVN $Date: 2010-02-11 14:44:11 +0000 (Thu, 11 Feb 2010) $ - */ - - -#include "i2c.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*------------------------------------------------------------------------------ - * I2C transaction direction. - */ -#define WRITE_DIR 0 -#define READ_DIR 1 - -/* -- TRANSACTIONS TYPES -- */ -#define NO_TRANSACTION 0 -#define MASTER_WRITE_TRANSACTION 1 -#define MASTER_READ_TRANSACTION 2 -#define MASTER_RANDOM_READ_TRANSACTION 3 -#define WRITE_SLAVE_TRANSACTION 4 -#define READ_SLAVE_TRANSACTION 5 -#define RANDOM_READ_SLAVE_TRANSACTION 6 - - -/* -- SMBUS H/W STATES -- */ -/* -- MASTER STATES -- */ -#define ST_START 0x08 /* start condition sent */ -#define ST_RESTART 0x10 /* repeated start */ -#define ST_SLAW_ACK 0x18 /* SLA+W sent, ack received */ -#define ST_SLAW_NACK 0x20 /* SLA+W sent, nack received */ -#define ST_TX_DATA_ACK 0x28 /* Data sent, ACK'ed */ -#define ST_TX_DATA_NACK 0x30 /* Data sent, NACK'ed */ -#define ST_LOST_ARB 0x38 /* Master lost arbitration */ -#define ST_SLAR_ACK 0x40 /* SLA+R sent, ACK'ed */ -#define ST_SLAR_NACK 0x48 /* SLA+R sent, NACK'ed */ -#define ST_RX_DATA_ACK 0x50 /* Data received, ACK sent */ -#define ST_RX_DATA_NACK 0x58 /* Data received, NACK sent */ - -/* -- SLAVE STATES -- */ -#define ST_SLAVE_SLAW 0x60 /* SLA+W received */ -#define ST_SLAVE_SLAR_ACK 0xA8 /* SLA+R received, ACK returned */ -#define ST_SLV_LA 0x68 /* Slave lost arbitration */ -#define ST_GCA 0x70 /* GCA received */ -#define ST_GCA_LA 0x78 /* GCA lost arbitration */ -#define ST_RDATA 0x80 /* Data received */ -#define ST_SLA_NACK 0x88 /* Slave addressed, NACK returned */ -#define ST_GCA_ACK 0x90 /* Previously addresses with GCA, data ACKed */ -#define ST_GCA_NACK 0x98 /* GCA addressed, NACK returned */ -#define ST_RSTOP 0xA0 /* Stop received */ -#define ST_REPEAT 0xA0 /* Repeated start received */ -#define ST_SLAR_ACKS 0xA8 /* Slave read received, ACKed */ -#define ST_SLARW_LA 0xB0 /* Arbitration lost */ -#define ST_RACK 0xB8 /* Byte sent, ACK received */ -#define ST_SLAVE_RNACK 0xC0 /* Byte sent, NACK received */ -#define ST_FINAL 0xC8 /* Final byte sent, ACK received */ -#define ST_BERR 0x00 /* Error on the bus */ -#define ST_SLV_RST 0xD8 /* Slave reset state */ - -/*------------------------------------------------------------------------------ - * - */ -static uint32_t disable_interrupts( void ); -static void restore_interrupts( uint32_t primask ); -static void mss_i2c_isr( mss_i2c_instance_t * this_i2c ); - -/*------------------------------------------------------------------------------ - * - *------------------------------------------------------------------------------ - * - */ -mss_i2c_instance_t g_mss_i2c0; -mss_i2c_instance_t g_mss_i2c1; - -/*------------------------------------------------------------------------------ - * MSS_I2C_init() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -) -{ - uint_fast16_t clock_speed = ser_clock_speed; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( this_i2c == &g_mss_i2c0 ) - { - this_i2c->irqn = I2C0_IRQn; - this_i2c->hw_reg = I2C0; - this_i2c->hw_reg_bit = I2C0_BITBAND; - - /* reset I2C0 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C0_SOFTRESET_MASK; - /* Clear any previously pended I2C0 interrupt */ - NVIC_ClearPendingIRQ( I2C0_IRQn ); - /* Take I2C0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C0_SOFTRESET_MASK; - } - else - { - this_i2c->irqn = I2C1_IRQn; - this_i2c->hw_reg = I2C1; - this_i2c->hw_reg_bit = I2C1_BITBAND; - - /* reset I2C1 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C1_SOFTRESET_MASK; - /* Clear any previously pended I2C1 interrupt */ - NVIC_ClearPendingIRQ( I2C1_IRQn ); - /* Take I2C1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C1_SOFTRESET_MASK; - } - - this_i2c->transaction = NO_TRANSACTION; - - this_i2c->ser_address = ser_address; - - this_i2c->tx_buffer = 0; - this_i2c->tx_size = 0; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = 0; - this_i2c->rx_size = 0; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_SUCCESS; - - this_i2c->random_read_addr = 0; - - this_i2c->slave_write_handler = 0; - this_i2c->slave_mem_offset_length = 0; - - this_i2c->hw_reg_bit->CTRL_ENS1 = 0x01; /* set enable bit */ - this_i2c->hw_reg_bit->CTRL_CR2 = (clock_speed >> 2) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR1 = (clock_speed >> 1) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR0 = clock_speed & 0x01; - this_i2c->hw_reg->ADDR = this_i2c->ser_address; - - /* The interrupt can cause a context switch, so ensure its priority is - between configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY. */ - NVIC_SetPriority( this_i2c->irqn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - vSemaphoreCreateBinary( ( this_i2c->xI2CCompleteSemaphore ) ); - xSemaphoreTake( ( this_i2c->xI2CCompleteSemaphore ), 0 ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_mem_offset_length() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_mem_offset_length = offset_length; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_register_write_handler() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_write_handler = handler; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_WRITE_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = write_buffer; - this_i2c->tx_size = write_size; - this_i2c->tx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( read_size > 0 ) - { - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_READ_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = READ_DIR; - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); - } -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_RANDOM_READ_TRANSACTION; - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = addr_offset; - this_i2c->tx_size = offset_size; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_rx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->rx_buffer = rx_buffer; - this_i2c->rx_size = rx_size; - this_i2c->rx_idx = 0; - - restore_interrupts( primask ); -} - - -/*------------------------------------------------------------------------------ - * MSS_I2C_get_status() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_tx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->tx_buffer = tx_buffer; - this_i2c->tx_size = tx_size; - this_i2c->tx_idx = 0; - - restore_interrupts( primask ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_enable_slave_rx() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - /* accept GC addressing. */ - this_i2c->hw_reg_bit->ADDR_GC = 0x01; - - NVIC_EnableIRQ( this_i2c->irqn ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_wait_complete() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - -#ifdef USE_OLD_I2C_POLLING_CODE - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } -#else - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - if( xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED ) - { - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } - } - else - { - xSemaphoreTake( this_i2c->xI2CCompleteSemaphore, portMAX_DELAY ); - } -#endif - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS I2C interrupt service routine. - *------------------------------------------------------------------------------ - * Parameters: - * - * mss_i2c_instance_t * this_i2c: - * Pointer to the mss_i2c_instance_t data structure holding all data related to - * the MSS I2C instance that generated the interrupt. - */ -static void mss_i2c_isr -( - mss_i2c_instance_t * this_i2c - ) -{ - volatile uint8_t status; - uint8_t data; - uint8_t hold_bus; - uint8_t clear_irq = 1; - long lHigherPriorityTaskWoken = pdFALSE; - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - status = this_i2c->hw_reg->STATUS; - - switch( status ) - { - /************** MASTER TRANSMITTER / RECEIVER *******************/ - - case ST_START: /* start has been xmt'd */ - case ST_RESTART: /* repeated start has been xmt'd */ - this_i2c->hw_reg_bit->CTRL_STA = 0x0; - this_i2c->hw_reg->DATA = this_i2c->target_addr; - this_i2c->hw_reg_bit->DATA_DIR = this_i2c->dir; - - this_i2c->tx_idx = 0; - this_i2c->rx_idx = 0; - break; - - case ST_LOST_ARB: - /* Set start bit. Let's keep trying! Don't give up! */ - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - break; - - /******************* MASTER TRANSMITTER *************************/ - case ST_SLAW_ACK: - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_SLAW_NACK: -#if 0 - /* SLA+W has been transmitted; not ACK has been received - let's stop. */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_TX_DATA_ACK: - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - case ST_TX_DATA_NACK: -#if 0 - /* data byte SENT, ACK to be received - * In fact, this means we've received a NACK (This may not be - * obvious, but if we've rec'd an ACK then we would be in state - * 0x28!) hence, let's send a stop bit - */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - /********************* MASTER (or slave?) RECEIVER *************************/ - - /* STATUS codes 08H, 10H, 38H are all covered in MTX mode */ - case ST_SLAR_ACK: /* SLA+R tx'ed. */ - /* Let's make sure we ACK the first data byte received (set AA bit in CTRL) unless - * the next byte is the last byte of the read transaction. - */ - if( this_i2c->rx_size > 1 ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_SLAR_NACK: /* SLA+R tx'ed; let's release the bus (send a stop condition) */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_RX_DATA_ACK: /* Data byte received, ACK returned */ - /* First, get the data */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - if( this_i2c->rx_idx >= this_i2c->rx_size - 1) - { - /* If we're at the second last byte, let's set AA to 0 so - * we return a NACK at the last byte. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_RX_DATA_NACK: /* Data byte received, NACK returned */ - /* Get the data, then send a stop condition */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - /******************** SLAVE RECEIVER **************************/ - case ST_GCA_NACK: /* NACK after, GCA addressing */ - case ST_SLA_NACK: /* Get Data, but also re-enable AA (assert ack) bit for future transmissions */ - if ( this_i2c->rx_buffer != 0 ) - { - this_i2c->rx_buffer[this_i2c->rx_idx] = this_i2c->hw_reg->DATA; - } - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - break; - - case ST_SLAVE_SLAW: /* SLA+W received, ACK returned */ - this_i2c->transaction = WRITE_SLAVE_TRANSACTION; - this_i2c->rx_idx = 0; - this_i2c->random_read_addr = 0; -#ifndef INCLUDE_SLA_IN_RX_PAYLOAD - /* Only break from this case if the slave address must NOT be included at the - * beginning of the received write data. */ - break; -#endif - case ST_GCA_ACK: /* DATA received; ACK sent after GCA */ - case ST_RDATA: /* DATA received; must clear DATA register */ - if (this_i2c->rx_idx >= this_i2c->rx_size - 2) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; /* send a NACK when done (next reception) */ - } - data = this_i2c->hw_reg->DATA; - this_i2c->rx_buffer[this_i2c->rx_idx++] = data; - this_i2c->random_read_addr = (this_i2c->random_read_addr << 8) + data; - - break; - - case ST_RSTOP: - /* STOP or repeated START occured. */ - /* We cannot be sure if the transaction has actually completed as - * this hardware state reports that either a STOP or repeated START - * condition has occured. We assume that this is a repeated START - * if the transaction was a write from the master to this point.*/ - if ( this_i2c->transaction == WRITE_SLAVE_TRANSACTION ) - { - if ( this_i2c->rx_idx == this_i2c->slave_mem_offset_length ) - { - this_i2c->transaction = RANDOM_READ_SLAVE_TRANSACTION; - this_i2c->tx_idx = this_i2c->random_read_addr; - } - else - { - /* Call the slave's write transaction handler if it exists. */ - if ( this_i2c->slave_write_handler != 0 ) - { - mss_i2c_slave_handler_ret_t h_ret; - h_ret = this_i2c->slave_write_handler( this_i2c->rx_buffer, (uint16_t)this_i2c->rx_idx ); - if ( MSS_I2C_REENABLE_SLAVE_RX == h_ret ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - } - } - } - /* Mark any previous master write transaction as complete. */ - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_SLV_RST: /* SMBUS ONLY: timeout state. must clear interrupt */ - case ST_SLV_LA: /* Arbitr. lost (SLA rec'd) */ - case ST_GCA: /* General call address received, ACK returned */ - case ST_GCA_LA: /* Arbitr. lost (GCA rec'd) */ - /* do nothing */ - break; - - /****************** SLAVE TRANSMITTER **************************/ - case ST_SLAVE_SLAR_ACK: /* SLA+R received, ACK returned */ - case ST_SLARW_LA: /* Arbitration lost, and: */ - case ST_RACK: /* Data tx'ed, ACK received */ - if ( status == ST_SLAVE_SLAR_ACK ) - { - this_i2c->transaction = READ_SLAVE_TRANSACTION; - this_i2c->random_read_addr = 0; - } - /* Load the data, and determine if it is the last one */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - if (this_i2c->tx_idx >= this_i2c->tx_size - 1) /* last byte? */ - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - /* Next read transaction will result in slave's transmit buffer - * being sent from the first byte. */ - this_i2c->tx_idx = 0; - } - break; - - case ST_SLAVE_RNACK: /* Data byte has been transmitted; not-ACK has been received. */ - /* We assume that the transaction will be stopped by the master. - * Reset tx_idx so that a subsequent read will result in the slave's - * transmit buffer being sent from the first byte. */ - this_i2c->tx_idx = 0; - break; - - case ST_FINAL: /* Last Data byte tx'ed, ACK recieved */ - default: - /* do nothing */ - break; - } - - if ( clear_irq ) - { - /* clear interrupt. */ - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - } - - /* Read the status register to ensure the last I2C registers write took place - * in a system built around a bus making use of posted writes. */ - status = this_i2c->hw_reg->STATUS; - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - -/*------------------------------------------------------------------------------ - * - */ -uint32_t disable_interrupts( void ) -{ - uint32_t primask; - primask = __get_PRIMASK(); - return primask; -} - -/*------------------------------------------------------------------------------ - * - */ -void restore_interrupts( uint32_t primask ) -{ - __set_PRIMASK( primask ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C0_IRQHandler( void ) -#else -void I2C0_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c0 ); - NVIC_ClearPendingIRQ( I2C0_IRQn ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C1_IRQHandler( void ) -#else -void I2C1_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c1 ); - NVIC_ClearPendingIRQ( I2C1_IRQn ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h deleted file mode 100644 index 6c80cf343..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h +++ /dev/null @@ -1,783 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver public - * API. - * - * SVN $Revision: 2150 $ - * SVN $Date: 2010-02-11 14:39:24 +0000 (Thu, 11 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS I2C Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes two I2C peripherals - for serial communication. This driver provides a set of functions for - controlling the MSS I2Cs as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS I2Cs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS I2Cs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are automatically configured correctly by the MSS - configurator tool in the hardware flow when the MSS I2Cs are enabled in that - tool. You must ensure that the MSS I2Cs are enabled by the MSS configurator - tool in the hardware flow; otherwise the serial inputs and outputs will not be - connected to the chip's external pins. For more information on IOMUX, refer to - the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the - MSS I2C blocks are defined as constants in the SmartFusion CMSIS-PAL. You must - ensure that the SmartFusion CMSIS-PAL is either included in the software tool - chain used to build your project or is included in your project. - - @section theory_op Theory of Operation - The MSS I2C driver functions are grouped into the following categories: - • Initialization and configuration functions - • Interrupt control - • I2C master operations – functions to handle write, read and write-read transactions - • I2C slave operations – functions to handle write, read and write-read transactions - - Initialization and Configuration - The MSS I2C driver is initialized through a call to the MSS_I2C_init() - function. This function takes the MSS I2C's configuration as parameters. The - MSS_I2C_init() function must be called before any other MSS I2C driver - functions can be called. The first parameter of the MSS_I2C_init() function - is a pointer to one of two global data structures used by the driver to - store state information for each MSS I2C. A pointer to these data structures - is also used as first parameter to any of the driver functions to identify - which MSS I2C will be used by the called function. The names of these two - data structures are g_mss_i2c0 and g_mss_i2c1. Therefore any call to an MSS - I2C driver function should be of the form MSS_I2C_function_name( &g_mss_i2c0, ... ) - or MSS_I2C_function_name( &g_mss_i2c1, ... ). - The MSS_I2C_init() function call for each MSS I2C also takes the I2C serial - address assigned to the MSS I2C and the serial clock divider to be used to - generate its I2C clock as configuration parameters. - - Interrupt Control - The MSS I2C driver is interrupt driven and it enables and disables the - generation of interrupts by MSS I2C at various times when it is operating. - The driver automatically handles MSS I2C interrupts internally, including - enabling disabling and clearing MSS I2C interrupts in the Cortex-M3 - interrupt controller when required. - The function MSS_I2C_register_write_handler() is used to register a write - handler function with the MSS I2C driver that it will call on completion of - an I2C write transaction by the MSS I2C slave. It is your responsibility to - create and register the implementation of this handler function that will - process or trigger the processing of the received data. - Transaction Types - The MSS I2C driver is designed to handle three types of I2C transaction: - • Write transactions - • Read transactions - • Write-read transactions - - Write transaction - The master I2C device initiates a write transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s address with an acknowledge bit. The master sends data one byte at - a time to the slave, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a STOP bit to complete the transaction. - The slave can abort the transaction by replying with a non-acknowledge bit - instead of an acknowledge. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Read transaction - The master I2C device initiates a read transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s slave address with an acknowledge bit. The slave sends data one byte - at a time to the master, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a non-acknowledge bit following the - last byte it wishes to read followed by a STOP bit. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Write-read transaction - The write-read transaction is a combination of a write transaction - immediately followed by a read transaction. There is no STOP bit between - the write and read phases of a write-read transaction. A repeated START - bit is sent between the write and read phases. - The write-read transaction is typically used to send a command or offset - in the write transaction specifying the logical data to be transferred - during the read phase. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Master Operations - The application can use the MSS_I2C_write(), MSS_I2C_read() and MSS_I2C_write_read() - functions to initiate an I2C bus transaction. The application can then wait - for the transaction to complete using the MSS_I2C_wait_complete() function - or poll the status of the I2C transaction using the MSS_I2C_get_status() - function until it returns a value different from MSS_I2C_IN_PROGRESS. - - Slave Operations - The configuration of the MSS I2C driver to operate as an I2C slave requires - the use of the following functions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - Use of all functions is not required if the slave I2C does not need to support - all types of I2C read transactions. The subsequent sections list the functions - that must be used to support each transaction type. - - Responding to read transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_tx_buffer() specifies the data buffer that - will be transmitted when the I2C slave is the target of an I2C read - transaction. It is then up to the application to manage the content of that - buffer to control the data that will be transmitted to the I2C master as a - result of the read transaction. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C write transactions: - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave when it is the - target an I2C write transaction. - The function MSS_I2C_register_write_handler() specifies the handler function - that must be called on completion of the I2C write transaction. It is this - handler function that will process or trigger the processing of the received - data. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write-read transactions - The following functions are used to configure the MSS I2C driver to respond - to write-read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_mem_offset_length() specifies the number of - bytes expected by the I2C slave during the write phase of the write-read - transaction. - The function MSS_I2C_set_slave_tx_buffer() specifies the data that will be - transmitted to the I2C master during the read phase of the write-read - transaction. The value received by the I2C slave during the write phase of - the transaction will be used as an index into the transmit buffer specified - by this function to decide which part of the transmit buffer will be - transmitted to the I2C master as part of the read phase of the write-read - transaction. - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave during the write - phase of the write-read transaction. This buffer must be at least large - enough to accommodate the number of bytes specified through the - MSS_I2C_set_slave_mem_offset_length() function. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware - instance to respond to I2C transactions. It must be called after the MSS - I2C driver has been configured to respond to the required transaction types. - *//*=========================================================================*/ -#ifndef I2C_H_ -#define I2C_H_ - -#include "../../CMSIS/a2fxxxm3.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - The mss_i2c_clock_divider_t type is used to specify the divider to be applied - to the MSS I2C BCLK signal in order to generate the I2C clock. - */ -typedef enum mss_i2c_clock_divider { - MSS_I2C_PCLK_DIV_256 = 0, - MSS_I2C_PCLK_DIV_224, - MSS_I2C_PCLK_DIV_192, - MSS_I2C_PCLK_DIV_160, - MSS_I2C_PCLK_DIV_960, - MSS_I2C_PCLK_DIV_120, - MSS_I2C_PCLK_DIV_60, - MSS_I2C_BCLK_DIV_8 -} mss_i2c_clock_divider_t; - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_RELEASE_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must be generated at the end of the I2C transaction to release - the bus. - */ -#define MSS_I2C_RELEASE_BUS 0x00 - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_HOLD_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must not be generated at the end of the I2C transaction in - order to retain the bus ownership. This will cause the next transaction to - begin with a repeated START bit and no STOP bit between the transactions. - */ -#define MSS_I2C_HOLD_BUS 0x01 - -/*-------------------------------------------------------------------------*//** - The mss_i2c_status_t type is used to report the status of I2C transactions. - */ -typedef enum mss_i2c_status -{ - MSS_I2C_SUCCESS = 0, - MSS_I2C_IN_PROGRESS, - MSS_I2C_FAILED -} mss_i2c_status_t; - -/*-------------------------------------------------------------------------*//** - The mss_i2c_slave_handler_ret_t type is used by slave write handler functions - to indicate whether the received data buffer should be released or not. - */ -typedef enum mss_i2c_slave_handler_ret { - MSS_I2C_REENABLE_SLAVE_RX = 0, - MSS_I2C_PAUSE_SLAVE_RX = 1 -} mss_i2c_slave_handler_ret_t; - -/*-------------------------------------------------------------------------*//** - Slave write handler functions prototype. - ------------------------------------------------------------------------------ - This defines the function prototype that must be followed by MSS I2C slave - write handler functions. These functions are registered with the MSS I2C driver - through the MSS_I2C_register_write_handler() function. - - Declaring and Implementing Slave Write Handler Functions: - Slave write handler functions should follow the following prototype: - mss_i2c_slave_handler_ret_t write_handler( uint8_t * data, uint16_t size ); - - The data parameter is a pointer to a buffer (received data buffer) holding - the data written to the MSS I2C slave. - The size parameter is the number of bytes held in the received data buffer. - Handler functions must return one of the following values: - • MSS_I2C_REENABLE_SLAVE_RX - • MSS_I2C_PAUSE_SLAVE_RX. - If the handler function returns MSS_I2C_REENABLE_SLAVE_RX, the driver will - release the received data buffer and allow further I2C write transactions to - the MSS I2C slave to take place. - If the handler function returns MSS_I2C_PAUSE_SLAVE_RX, the MSS I2C slave - will respond to subsequent write requests with a non-acknowledge bit (NACK), - until the received data buffer content has been processed by some other part - of the software application. - A call to MSS_I2C_enable_slave_rx() is required at some point after - returning MSS_I2C_PAUSE_SLAVE_RX in order to release the received data - buffer so it can be used to store data received by subsequent I2C write - transactions. - */ -typedef mss_i2c_slave_handler_ret_t (*mss_i2c_slave_wr_handler_t)( uint8_t *, uint16_t ); - -/*-------------------------------------------------------------------------*//** - mss_i2c_instance_t - ------------------------------------------------------------------------------ - There is one instance of this structure for each of the microcontroller - subsystem's I2Cs. Instances of this structure are used to identify a specific - I2C. A pointer to an instance of the mss_i2c_instance_t structure is passed as - the first parameter to MSS I2C driver functions to identify which I2C should - perform the requested operation. - */ -typedef struct mss_i2c_instance -{ - uint_fast8_t ser_address; - /* Transmit related info:*/ - uint_fast8_t target_addr; - - /* Current transaction type (WRITE, READ, RANDOM_READ)*/ - uint8_t transaction; - - uint_fast16_t random_read_addr; - - uint8_t options; - - /* I2C hardware instance identification */ - IRQn_Type irqn; - I2C_TypeDef * hw_reg; - I2C_BitBand_TypeDef * hw_reg_bit; - - /* TX INFO: */ - const uint8_t * tx_buffer; - uint_fast16_t tx_size; - uint_fast16_t tx_idx; - uint_fast8_t dir; - - /* RX INFO: */ - uint8_t * rx_buffer; - uint_fast16_t rx_size; - uint_fast16_t rx_idx; - - /* status variable: */ - volatile mss_i2c_status_t status; - - /* Slave data: */ - uint_fast8_t slave_mem_offset_length; - mss_i2c_slave_wr_handler_t slave_write_handler; - - /* Used to get access to and wait for completion of an I2C transaction. */ - SemaphoreHandle_t xI2CCompleteSemaphore; - -} mss_i2c_instance_t; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 0. A pointer to g_mss_i2c0 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 0 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c0; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 1. A pointer to g_mss_i2c1 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 1 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c1; - -/*-------------------------------------------------------------------------*//** - MSS I2C initialisation routine. - ------------------------------------------------------------------------------ - The MSS_I2C_init() function initializes and configures hardware and data - structures of one of the SmartFusion MSS I2Cs. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block to be initialized. There are two such - data structures, g_mss_i2c0 and g_mss_i2c1, associated with MSS I2C 0 and - MSS I2C 1 respectively. This parameter must point to either the g_mss_i2c0 - or g_mss_i2c1 global data structure defined within the I2C driver. - - @param ser_address: - This parameter sets the I2C serial address being initialized. It is the I2C - bus address to which the MSS I2C instance will respond. Any 8 bit address is - allowed. - - @param ser_clock_speed: - This parameter sets the I2C serial clock frequency. It selects the divider - that will be used to generate the serial clock from the APB clock. It can be - one of the following: - • MSS_I2C_PCLK_DIV_256 - • MSS_I2C_PCLK_DIV_224 - • MSS_I2C_PCLK_DIV_192 - • MSS_I2C_PCLK_DIV_160 - • MSS_I2C_PCLK_DIV_960 - • MSS_I2C_PCLK_DIV_120 - • MSS_I2C_PCLK_DIV_60 - • MSS_I2C_BCLK_DIV_8 - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -); - -/******************************************************************************* - ******************************************************************************* - * - * Master specific functions - * - * The following functions are only used within an I2C master's implementation. - */ - -/*-------------------------------------------------------------------------*//** - I2C master write function. - ------------------------------------------------------------------------------ - This function initiates an I2C master write transaction. This function returns - immediately after initiating the transaction. The content of the write buffer - passed as parameter should not be modified until the write transaction - completes. It also means that the memory allocated for the write buffer should - not be freed or go out of scope before the write completes. You can check for - the write transaction completion using the MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param write_buffer: - This parameter is a pointer to a buffer holding the data to be written to - the target I2C device. - Care must be taken not to release the memory used by this buffer before the - write transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the write - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reused and modified causing unexpected data to be - written to the target I2C device. - - @param write_size: - Number of bytes held in the write_buffer to be written to the target I2C - device. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master read. - ------------------------------------------------------------------------------ - This function initiates an I2C master read transaction. This function returns - immediately after initiating the transaction. - The content of the read buffer passed as parameter should not be modified - until the read transaction completes. It also means that the memory allocated - for the read buffer should not be freed or go out of scope before the read - completes. You can check for the read transaction completion using the - MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param read_buffer - Pointer to a buffer where the data received from the target device will be - stored. - Care must be taken not to release the memory used by this buffer before the - read transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the read - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reallocated resulting in the read transaction - corrupting the newly allocated memory. - - @param read_size: - This parameter is the number of bytes to read from the target device. This - size must not exceed the size of the read_buffer buffer. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the read transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the read transaction, - preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master write-read - ------------------------------------------------------------------------------ - This function initiates an I2C write-read transaction where data is first - written to the target device before issuing a restart condition and changing - the direction of the I2C transaction in order to read from the target device. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param addr_offset: - This parameter is a pointer to the buffer containing the data that will be - sent to the slave during the write phase of the write-read transaction. This - data is typically used to specify an address offset specifying to the I2C - slave device what data it must return during the read phase of the - write-read transaction. - - @param offset_size: - This parameter specifies the number of offset bytes to be written during the - write phase of the write-read transaction. This is typically the size of the - buffer pointed to by the addr_offset parameter. - - @param read_buffer: - This parameter is a pointer to the buffer where the data read from the I2C - slave will be stored. - - @param read_size: - This parameter specifies the number of bytes to read from the target I2C - slave device. This size must not exceed the size of the buffer pointed to by - the read_buffer parameter. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write-read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write-read transaction causing the bus to be released for other - I2C devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write-read - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C status - ------------------------------------------------------------------------------ - This function indicates the current state of a MSS I2C instance. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the current state of a MSS I2C instance or the - outcome of the previous transaction if no transaction is in progress. - Possible return values are: - SUCCESS - The last I2C transaction has completed successfully. - IN_PROGRESS - There is an I2C transaction in progress. - FAILED - The last I2C transaction failed. - - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -); - -/*-------------------------------------------------------------------------*//** - Wait for I2C transaction completion. - ------------------------------------------------------------------------------ - This function waits for the current I2C transaction to complete. The return - value indicates whether the last I2C transaction was successful, or is still - in progress, or failed. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the outcome of the last I2C transaction. It can - be one of the following: - MSS_I2C_SUCCESS - The last I2C transaction has completed successfully. - MSS_I2C_IN_PROGRESS - The current I2C transaction is still in progress. - MSS_I2C_FAILED - The last I2C transaction failed. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -); - - -/******************************************************************************* - ******************************************************************************* - * - * Slave specific functions - * - * The following functions are only used within the implementation of an I2C - * slave device. - */ - -/*-------------------------------------------------------------------------*//** - I2C slave transmit buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer holding the data that will be sent - to the I2C master when this MSS I2C instance is the target of an I2C read or - write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param tx_buffer: - This parameter is a pointer to the memory buffer holding the data to be - returned to the I2C master when this MSS I2C instance is the target of an - I2C read or write-read transaction. - - @param tx_size: - Size of the transmit buffer pointed to by the tx_buffer parameter. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer that will be used by the MSS I2C - instance to receive data when it is a slave. This buffer is the memory where - data will be stored when the MSS I2C is the target of an I2C master write - transaction (i.e. when it is the slave). - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param rx_buffer: - This parameter is a pointer to the memory buffer allocated by the caller - software to be used as a slave receive buffer. - - @param rx_size: - Size of the slave receive buffer. This is the amount of memory that is - allocated to the buffer pointed to by rx_buffer. - Note: This buffer size will indirectly specify the maximum I2C write - transaction length this MSS I2C instance can be the target of. This - is because this MSS I2C instance will respond to further received - bytes with a non-acknowledge bit (NACK) as soon as its receive - buffer is full. This will cause the write transaction to fail. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave memory offset length configuration. - ------------------------------------------------------------------------------ - This function is used as part of the configuration of a MSS I2C instance for - operation as a slave supporting write-read transactions. It specifies the - number of bytes expected as part of the write phase of a write-read - transaction. The bytes received during the write phase of a write-read - transaction will be interpreted as an offset into the slave’s transmit buffer. - This allows random access into the I2C slave transmit buffer from a remote - I2C master. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param offset_length: - The offset_length parameter configures the number of bytes to be interpreted - by the MSS I2C slave as a memory offset value during the write phase of - write-read transactions. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -); - -/*-------------------------------------------------------------------------*//** - I2C write handler registration. - ------------------------------------------------------------------------------ - Register the function that will be called to process the data written to this - MSS I2C instance when it is the slave in an I2C write transaction. - Note: The write handler is not called as a result of a write-read transaction. - The write data of a write read transaction is interpreted as an offset - into the slave’s transmit buffer and handled by the driver. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param handler: - Pointer to the function that will process the I2C write request. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive enable. - ------------------------------------------------------------------------------ - Enables the MSS I2C instance identified through the this_i2c parameter to - receive data when it is the target of an I2C write or write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -); - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_I2C_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c deleted file mode 100644 index faa199d9a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c +++ /dev/null @@ -1,536 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * Implementation of sample basic driver for OLED display found on Actel - * SmartFusion development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - *****************************************************************************/ - - #include "oled.h" -#include "../bsp_config.h" - -/***************************************************************************//** - Command definitions for the SSD300 controller inside the OLED display module. - */ -#define CMD_DISPLAY_OFF_SET 0xD3 -#define CMD_PANEL_ON 0xAF -#define CMD_PANEL_OFF 0xAE -#define CMD_DC_DC 0xAD -#define CMD_DC_DC_DEFAULT_ON 0x8B -#define CMD_DC_DC_OFF 0x8A -#define CMD_DISPLAY_ALL_ON 0xA5 -#define CMD_DISPLAY_ALL_OFF 0xA4 -#define CMD_DISPLAY_NON_INV 0xA6 -#define CMD_DISPLAY_INV 0xA7 -#define CMD_ARECOL_LPM 0xD8 -#define CMD_ARECOL_MONO 0x00 -#define CMD_ARECOL_COLOR 0x30 -#define CMD_LPM_ON 0x05 -#define CMD_LPM_OFF 0x00 -#define CMD_CONTRAST 0x81 -#define CMD_MIRROR_HORI_ON 0xC8 -#define CMD_MIRROR_HORI_OFF 0xC0 -#define CMD_MIRROR_VERT_ON 0xA1 -#define CMD_MIRROR_VERT_OFF 0xA0 -#define CMD_HORI_SCRL 0x26 -#define CMD_HORI_SCRL_ON 0x2F -#define CMD_HORI_SCRL_OFF 0x2E -#define CMD_MUX_RATIO 0xA8 -#define CMD_MUX_RATIO_31 0x23 - -#define CMD_PAGE_0 0xB0 -#define CMD_PAGE_1 0xB1 -#define CMD_PAGE_2 0xB2 -#define CMD_PAGE_3 0xB3 -#define CMD_PAGE_4 0xB4 -#define CMD_PAGE_5 0xB5 - -#define CMD_LOW_NIB_COL 0x00 -#define CMD_HIGH_NIB_COL 0x10 - -#define CMD_START_LINE 0x50 -#define CONTRAST_DEFAULT 0xFF -#define CONTRAST_25_PERC 0x40 -#define CONTRAST_100_PERC 0xFF -#define CONTRAST_0_PERC 0x00 -#define SCROLL_1_COLUMN 0x01 -#define SCROLL_2_COLUMN 0x02 -#define SCROLL_3_COLUMN 0x03 -#define SCROLL_4_COLUMN 0x04 -#define SCROLL_PAGE_0 0x00 -#define SCROLL_PAGE_1 0x01 -#define SCROLL_PAGE_2 0x02 -#define SCROLL_PAGE_3 0x03 -#define SCROLL_PAGE_4 0x04 -#define SCROLL_PAGE_5 0x05 -#define SCROLL_12_FRAMES 0x00 -#define SCROLL_64_FRAMES 0x01 -#define SCROLL_128_FRAMES 0x02 -#define SCROLL_256_FRAMES 0x03 -#define SCROLL_PER_STEP 0x01 -#define PAGE0_COLOR_BAG 0x92 -#define PAGE1_COLOR_BAG 0x93 - -/***************************************************************************//** - OLED display I2C communication protocol control byte values. Used to indicate - whether the byte following the control byte is to be interpreted by the OLED - display as a command or data byte. - */ -#define OLED_COMMAND_CODE 0x80 -#define OLED_DATA_CODE 0xC0 - -/***************************************************************************//** - I2C serial address of OLED display. - */ -#define OLED_SLAVE_ADDRESS 0x78 - -/***************************************************************************//** - Bitmaps of the character set. - Each character is 5 pixels wide and 7 pixels high. - The table is indexed on ASCII character codes. - */ -#define CHARACTER_WIDTH 5 - -const unsigned char oled_ascii_character_set[255][CHARACTER_WIDTH] = -{ - {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, 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, 0x5F, 0x00, 0x00}, - {0x00, 0x07, 0x00, 0x07, 0x00}, - {0x14, 0x7F, 0x14, 0x7F, 0x14}, - {0x24, 0x2A, 0x7F, 0x2A, 0x12}, - {0x23, 0x13, 0x08, 0x64, 0x62}, - {0x36, 0x49, 0x55, 0x22, 0x50}, - {0x00, 0x05, 0x03, 0x00, 0x00}, - {0x00, 0x1C, 0x22, 0x41, 0x00}, - {0x00, 0x41, 0x22, 0x1C, 0x00}, - {0x14, 0x08, 0x3E, 0x08, 0x14}, - {0x08, 0x08, 0x3E, 0x08, 0x08}, - {0x00, 0x50, 0x30, 0x00, 0x00}, - {0x08, 0x08, 0x08, 0x08, 0x08}, - {0x00, 0x60, 0x60, 0x00, 0x00}, - {0x20, 0x10, 0x08, 0x04, 0x02}, - {0x3E, 0x51, 0x49, 0x45, 0x3E}, - {0x00, 0x42, 0x7F, 0x40, 0x00}, - {0x42, 0x61, 0x51, 0x49, 0x46}, - {0x21, 0x41, 0x45, 0x4B, 0x31}, - {0x18, 0x14, 0x12, 0x7F, 0x10}, - {0x27, 0x45, 0x45, 0x45, 0x39}, - {0x3C, 0x4A, 0x49, 0x49, 0x30}, - {0x01, 0x71, 0x09, 0x05, 0x03}, - {0x36, 0x49, 0x49, 0x49, 0x36}, - {0x06, 0x49, 0x49, 0x29, 0x1E}, - {0x00, 0x36, 0x36, 0x00, 0x00}, - {0x00, 0x56, 0x36, 0x00, 0x00}, - {0x08, 0x14, 0x22, 0x41, 0x00}, - {0x14, 0x14, 0x14, 0x14, 0x14}, - {0x00, 0x41, 0x22, 0x14, 0x08}, - {0x02, 0x01, 0x51, 0x09, 0x06}, - {0x32, 0x49, 0x79, 0x41, 0x3E}, - {0x7E, 0x11, 0x11, 0x11, 0x7E}, - {0x7F, 0x49, 0x49, 0x49, 0x36}, - {0x3E, 0x41, 0x41, 0x41, 0x22}, - {0x7F, 0x41, 0x41, 0x22, 0x1C}, - {0x7F, 0x49, 0x49, 0x49, 0x41}, - {0x7F, 0x09, 0x09, 0x09, 0x01}, - {0x3E, 0x41, 0x49, 0x49, 0x7A}, - {0x7F, 0x08, 0x08, 0x08, 0x7F}, - {0x00, 0x41, 0x7F, 0x41, 0x00}, - {0x20, 0x40, 0x41, 0x3F, 0x01}, - {0x7F, 0x08, 0x14, 0x22, 0x41}, - {0x3F, 0x40, 0x40, 0x40, 0x40}, - {0x7F, 0x02, 0x0C, 0x02, 0x7F}, - {0x7F, 0x04, 0x08, 0x10, 0x7F}, - {0x3E, 0x41, 0x41, 0x41, 0x3E}, - {0x7F, 0x09, 0x09, 0x09, 0x06}, - {0x3E, 0x41, 0x51, 0x21, 0x5E}, - {0x7F, 0x09, 0x19, 0x29, 0x46}, - {0x46, 0x49, 0x49, 0x49, 0x31}, - {0x01, 0x01, 0x7F, 0x01, 0x01}, - {0x3F, 0x40, 0x40, 0x40, 0x3F}, - {0x1F, 0x20, 0x40, 0x20, 0x1F}, - {0x3F, 0x40, 0x38, 0x40, 0x3F}, - {0x63, 0x14, 0x08, 0x14, 0x63}, - {0x07, 0x08, 0x70, 0x08, 0x07}, - {0x61, 0x51, 0x49, 0x45, 0x43}, - {0x00, 0x7F, 0x41, 0x41, 0x00}, - {0x02, 0x04, 0x08, 0x10, 0x20}, - {0x00, 0x41, 0x41, 0x7F, 0x00}, - {0x04, 0x02, 0x01, 0x02, 0x04}, - {0x40, 0x40, 0x40, 0x40, 0x40}, - {0x00, 0x01, 0x02, 0x04, 0x00}, - {0x20, 0x54, 0x54, 0x54, 0x78}, - {0x7F, 0x48, 0x44, 0x44, 0x38}, - {0x38, 0x44, 0x44, 0x44, 0x20}, - {0x30, 0x48, 0x48, 0x50, 0x7F}, - {0x38, 0x54, 0x54, 0x54, 0x18}, - {0x10, 0x7E, 0x11, 0x01, 0x02}, - {0x0C, 0x52, 0x52, 0x52, 0x3E}, - {0x7F, 0x08, 0x04, 0x04, 0x78}, - {0x00, 0x44, 0x7D, 0x40, 0x00}, - {0x20, 0x40, 0x44, 0x3D, 0x00}, - {0x7F, 0x10, 0x28, 0x44, 0x00}, - {0x00, 0x41, 0x7F, 0x40, 0x00}, - {0x7C, 0x04, 0x18, 0x04, 0x78}, - {0x7C, 0x08, 0x04, 0x04, 0x78}, - {0x38, 0x44, 0x44, 0x44, 0x38}, - {0x7C, 0x14, 0x14, 0x14, 0x08}, - {0x08, 0x14, 0x14, 0x18, 0x7C}, - {0x7C, 0x08, 0x04, 0x04, 0x08}, - {0x48, 0x54, 0x54, 0x54, 0x20}, - {0x04, 0x3F, 0x44, 0x40, 0x20}, - {0x3C, 0x40, 0x40, 0x20, 0x7C}, - {0x1C, 0x20, 0x40, 0x20, 0x1C}, - {0x3C, 0x40, 0x30, 0x40, 0x3C}, - {0x44, 0x28, 0x10, 0x28, 0x44}, - {0x0C, 0x50, 0x50, 0x50, 0x3C}, - {0x44, 0x64, 0x54, 0x4C, 0x44}, - - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x07, 0x05, 0x07, 0x00, 0x00}, - {0x12, 0x19, 0x16, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00} - -}; - -#define FIRST_CHARACTER 0 - -/***************************************************************************//** - The g_p_oled_i2c global variable is only used inside the OLED driver. It - identifies the MSS I2C block used to communicate with the OLED display. - */ -static mss_i2c_instance_t * g_p_oled_i2c = OLED_I2C_INSTANCE; - -/***************************************************************************//** - The OLED_set_cursor function sets the cursor position. - - @param line - The line parameter specifies the line at which to set the cursor. It can - take the values: - - FIRST_LINE - - SECOND_LINE - - @param char_offset - The char_offset paraemter specifies the character offset on a line where to - set the cursor location. It can be set to FIRST_CHARACTER to set the cursor - at the start of a line. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -); -/***************************************************************************//** - The OLED_write_string function displays the input string to the OLED panel. - - @param string - The string parameter is a pointer to the zero-terminated to display on the - OLED. - */ -void OLED_write_string( const char *string); - -/***************************************************************************//** - The OLED_write_char function displays a single character to the display. - - @param data_char - The data_char parameter is the ASCII code of the character to display. -*/ -void OLED_write_char( const uint8_t data_char ); -/***************************************************************************//** - OLED_init() - See "oled.h" for details of how to use this function. - */ -void OLED_init(void ) -{ - uint8_t oled_init_sequence1[] = - { - OLED_COMMAND_CODE, CMD_DISPLAY_NON_INV, - OLED_COMMAND_CODE, CMD_DISPLAY_ALL_OFF, - OLED_COMMAND_CODE, CMD_MIRROR_HORI_ON, - OLED_COMMAND_CODE, CMD_MIRROR_VERT_OFF, - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - OLED_COMMAND_CODE, CMD_ARECOL_LPM, - OLED_COMMAND_CODE, CMD_ARECOL_MONO^CMD_LPM_OFF - }; - - uint8_t oled_init_sequence2[] = - { - OLED_COMMAND_CODE, CMD_START_LINE, - OLED_COMMAND_CODE, CMD_PANEL_ON - }; - - MSS_I2C_init( g_p_oled_i2c, OLED_SLAVE_ADDRESS, MSS_I2C_PCLK_DIV_60 ); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence1, sizeof(oled_init_sequence1), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_clear_display(BOTH_LINES); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence2, sizeof(oled_init_sequence2), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_set_cursor( FIRST_LINE, FIRST_CHARACTER ); -} - -/***************************************************************************//** - OLED_clear_display() - See "oled.h" for details of how to use this function. - */ -void OLED_clear_display( oled_no_of_line LINES ) -{ - uint8_t i, j,start_line = 0,end_line = 0; - uint8_t clear_8_columns[] = - { - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00 - }; - - switch(LINES) - { - case FIRST_LINE: - { - start_line = FIRST_LINE; - end_line = FIRST_LINE; - } - - case SECOND_LINE: - { - start_line = SECOND_LINE; - end_line = SECOND_LINE; - } - - case BOTH_LINES: - { - start_line = FIRST_LINE; - end_line = SECOND_LINE; - } - - } - - for( j = start_line; j <= end_line; ++j ) - { - OLED_set_cursor( j, FIRST_CHARACTER ); - for( i = 0; i < 13; ++i ) - { - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, clear_8_columns, sizeof(clear_8_columns), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } - } -} - -/***************************************************************************//** - OLED_set_cursor() - See definition of OLED_set_cursor() for details of how to use this function. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -) -{ - uint8_t command_sequence[] = - { - OLED_COMMAND_CODE, CMD_LOW_NIB_COL, - OLED_COMMAND_CODE, CMD_HIGH_NIB_COL, - OLED_COMMAND_CODE, CMD_PAGE_0 - }; - uint8_t low_nib, high_nib; - - ++char_offset; - char_offset *= CHARACTER_WIDTH; - low_nib = 0x0F & char_offset; - high_nib = (0xF0 & char_offset) >> 4; - line += 2; - - command_sequence[1] |= low_nib; - command_sequence[3] |= high_nib; - command_sequence[5] |= line; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, command_sequence, sizeof(command_sequence), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_write_string() - See definition of OLED_write_string for details of how to use this function. - */ -void OLED_write_string -( - const char *string -) -{ - while (*string != 0) - { - OLED_write_char( *string ); - ++string; - } -} - -/***************************************************************************//** - OLED_write_char() - See definition of OLED_write_char() for details of how to use this function. - */ -void OLED_write_char -( - const uint8_t data_char -) -{ - uint8_t txbuff[10]; - uint8_t i; - - for ( i = 0; i < CHARACTER_WIDTH; ++i ) - { - txbuff[i * 2] = OLED_DATA_CODE; - txbuff[(i * 2) + 1] = oled_ascii_character_set[data_char][i]; - } - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, txbuff, sizeof(txbuff), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_horizontal_scroll() - See "oled.h" for details of how to use this function. - */ -void OLED_horizontal_scroll(struct oled_data * horiz_scroll) -{ - uint8_t horiz_scroll_on_off[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - }; - - uint8_t horiz_scroll_setup_data[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL, - OLED_COMMAND_CODE, SCROLL_PER_STEP, - OLED_COMMAND_CODE, SCROLL_PAGE_0, - OLED_COMMAND_CODE, SCROLL_12_FRAMES, - OLED_COMMAND_CODE, SCROLL_PAGE_1, - }; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - if(horiz_scroll->on_off == 1) - { - horiz_scroll_setup_data[3] = horiz_scroll->column_scrool_per_step; - horiz_scroll_setup_data[5] = horiz_scroll->start_page; - horiz_scroll_setup_data[7] = horiz_scroll->time_intrval_btw_scroll_step; - horiz_scroll_setup_data[9] = horiz_scroll->end_page; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_setup_data, sizeof(horiz_scroll_setup_data), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - horiz_scroll_on_off[1] = CMD_HORI_SCRL_ON; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } -} - -/***************************************************************************//** - OLED_contrast() - See "oled.h" for details of how to use this function. - */ -void OLED_contrast(uint8_t color_contrast) -{ - uint8_t oled_contrast[] = - { - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - }; - - oled_contrast[3] = color_contrast; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_contrast, sizeof(oled_contrast), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - -} - -/***************************************************************************//** - OLED_write_data() - See "oled.h" for details of how to use this function. - */ -void OLED_write_data(struct oled_data* data, oled_no_of_line LINES) -{ - uint8_t line; - uint8_t char_offset; - char *string; - - switch(LINES) - { - - case FIRST_LINE: - { - OLED_clear_display(FIRST_LINE); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - } - - case SECOND_LINE: - { - OLED_clear_display(SECOND_LINE); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - case BOTH_LINES: - { - OLED_clear_display(BOTH_LINES); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - OLED_contrast(data->contrast_val); - } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h deleted file mode 100644 index 17ab4a71c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h +++ /dev/null @@ -1,210 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * API of sample basic driver for OLED display found on Actel SmartFusion - * development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - * - */ -#ifndef OLED_H_ -#define OLED_H_ - -#include "i2c.h" - -#define OLED_HORIZ_SCROLL_ON 0x01 -#define OLED_HORIZ_SCROLL_OFF 0x00 -#define OLED_HORIZ_SCROLL_STEP 0x08 -#define OLED_CONTRAST_VAL 0xFF -#define OLED_START_PAGE 0x01 -#define OLED_HORIZ_SCROLL_TINVL 0x00 -#define OLED_END_PAGE 0x05 -/*-------------------------------------------------------------------------*/ -/* The oled_no_of_line type represents number of lines to be written on OLED. - FIRST LINE : The OLED cursor is set to line number 1 and only 1 line is - printed on OLED - SECOND_LINE : The OLED cursor is set to line number 2 and only 1 line is - printed on OLED - BOTH_LINES : The OLED cursor is set to line number 1 and line 1 and line 2 - are printed on OLED -*/ -typedef enum { - FIRST_LINE = 0, - SECOND_LINE, - BOTH_LINES -} oled_no_of_line; - -/*-------------------------------------------------------------------------*//** - oled_data - ------------------------------------------------------------------------------ - There is one instance of this structure for OLED data. Instances of this - structure is used to provide the data to OLED. A pointer to an instance of - the oled_data structure is passed as the parameter OLED driver functions. - */ -struct oled_data -{ - /* Represents line number, where String 1 has to be printed */ - uint8_t line1; - /* Represents character offset within the line1, from where String 1 has to be - * printed */ - uint8_t char_offset1; - /* Represents line number, where String 2 has to be printed */ - uint8_t line2; - /* Represents character offset within the line2, from where String 2 has to be - * printed */ - uint8_t char_offset2; - /* String 1 holds the data to be displayed on line 1 of OLED, It has to be - * less that 49 characters*/ - char *string1; - /* String 1 holds the data to be displayed on line 2 of OLED, It has to be - * less that 49 characters*/ - char *string2; - /* Holds the contrast value to be set for String 1 and String 2 */ - uint8_t contrast_val; - /* Represents ON or OFF for horizontal scrolling */ - uint8_t on_off; - /* Represents number of coumns scrolls per step for horizontal scroll*/ - unsigned char column_scrool_per_step; - /* Represents start page for horizontal scroll*/ - unsigned char start_page; - /* Represents time interval for horizontal scroll*/ - unsigned char time_intrval_btw_scroll_step; - /* Represents end page for horizontal scroll*/ - unsigned char end_page; - -}; -/***************************************************************************//** - The following defines can be used as parameter to the OLED_set_cursor() - function. - */ - -/***************************************************************************//** - The OLED_init function initializes the OLED display. - */ -void vOLEDInit( void ); -void OLED_init( void ); - -/***************************************************************************//** - This function(OLED_clear_display) clears the content of the display RAM - based on the LINES input. - ------------------------------------------------------------------------------ - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - clears only First line that is 0 - If SECOND_LINE is passed as parameter to this function thnen, this functions - clears only Second line that is 1 - If BOTH_LINE is passed as parameter to this function thnen, this functions - clears entire OLED display. - */ -void OLED_clear_display( oled_no_of_line LINES ); - -/*-------------------------------------------------------------------------*//** - OLED Write data. - ------------------------------------------------------------------------------ - This function (OLED_write_data ) writes the data to OLED basedon the - parameters passed to this function. - ------------------------------------------------------------------------------ - @param data: - The data parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). - - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at FIRST LINE - If SECOND_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at SECOND LINE - If BOTH_LINE is passed as parameter to this function thnen, this functions - wtites string 1 and string 2 at FIRST LINE and SECOND LINE respectively. -Example: - @code -#include "drivers/mss_watchdog/mss_watchdog.h" -#include "oled.h" -#define FIRST_CHARACTER 0 - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - return 0; -} - @endcode - */ - -void OLED_write_data(struct oled_data * data, oled_no_of_line flag); - -/*-------------------------------------------------------------------------*//** - OLED Horizontal scrolling. - ------------------------------------------------------------------------------ - This function (OLED_horizontal_scroll ) enbles the Horizontal scrolling. - ------------------------------------------------------------------------------ - @param data: - The horiz_scroll parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). -Example: - @code - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - write_data.on_off = 0x01; - write_data.column_scrool_per_step = 0x08; - write_data.start_page = 0x01; - write_data.time_intrval_btw_scroll_step = 0x00; - write_data.end_page = 0x05; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - OLED_horizontal_scroll(&write_data); - return 0; -} - @endcode - */ - -void OLED_horizontal_scroll(struct oled_data * horiz_scroll); - -/***************************************************************************//** - This function(OLED_contrast) sets ths conrtast to the data displayed on the - OLED. - ------------------------------------------------------------------------------ - @param color_contrast: - The color_contrast parameter that holds contrast value. - The color_contrast values should be in the range of 1 to 256. - */ -void OLED_contrast(uint8_t color_contrast); - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h deleted file mode 100644 index 79f456e1a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Configuration for the ON-BOARD peripherals for SmartFusion KITS. - * - *******************************************************************************/ -#ifndef BSP_CONFIG_H_ -#define BSP_CONFIG_H_ - -#include "i2c.h" -/* Configuration for OLED */ -#define OLED_I2C_INSTANCE &g_mss_i2c0 - -/* Configuration for the SPI Flash */ -#define SPI_FLASH_ON_SF_DEV_KIT 0 -#define SPI_FLASH_ON_SF_EVAL_KIT 1 - -#define USE_DMA_FOR_SPI_FLASH 1 -#define SPI_FLASH_DMA_CHANNEL 0 - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c deleted file mode 100644 index dbe1205ba..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c +++ /dev/null @@ -1,831 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ -#include "mss_ace.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_handles.h" -#include "../../drivers_config/mss_ace/ace_config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * - */ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; -extern ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC]; -extern const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS]; - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - * - */ -#define VOLTAGE_CHANNEL 0u -#define CURRENT_CHANNEL 1u -#define TEMPERATURE_CHANNEL 2u -#define INVALID_CHANNEL 0xFFu - -static const uint8_t channel_type_lut[] = -{ - VOLTAGE_CHANNEL, /* ADC0_1P5V = 0 */ - VOLTAGE_CHANNEL, /* ABPS0 = 1 */ - VOLTAGE_CHANNEL, /* ABPS1 = 2 */ - CURRENT_CHANNEL, /* CM0 = 3 */ - TEMPERATURE_CHANNEL, /* TM0 = 4 */ - VOLTAGE_CHANNEL, /* ABPS2 = 5 */ - VOLTAGE_CHANNEL, /* ABPS3 = 6 */ - CURRENT_CHANNEL, /* CM1 = 7 */ - TEMPERATURE_CHANNEL, /* TM1 = 8 */ - VOLTAGE_CHANNEL, /* ADC0 = 9 */ - VOLTAGE_CHANNEL, /* ADC1 = 10 */ - VOLTAGE_CHANNEL, /* ADC2 = 11 */ - VOLTAGE_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD0_IN = 15 */ - - VOLTAGE_CHANNEL, /* ADC1_1P5V = 16 */ - VOLTAGE_CHANNEL, /* ABPS4 = 17 */ - VOLTAGE_CHANNEL, /* ABPS5 = 18 */ - CURRENT_CHANNEL, /* CM2 = 19 */ - TEMPERATURE_CHANNEL, /* TM2 = 20 */ - VOLTAGE_CHANNEL, /* ABPS6 = 21 */ - VOLTAGE_CHANNEL, /* ABPS7 = 22 */ - CURRENT_CHANNEL, /* CM3 = 23 */ - TEMPERATURE_CHANNEL, /* TM3 = 24 */ - VOLTAGE_CHANNEL, /* ADC4 = 25 */ - VOLTAGE_CHANNEL, /* ADC5 = 26 */ - VOLTAGE_CHANNEL, /* ADC6 = 27 */ - VOLTAGE_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD1_IN = 31 */ - - VOLTAGE_CHANNEL, /* ADC2_1P5V = 32 */ - VOLTAGE_CHANNEL, /* ABPS8 = 33 */ - VOLTAGE_CHANNEL, /* ABPS9 = 34 */ - CURRENT_CHANNEL, /* CM4 = 35 */ - TEMPERATURE_CHANNEL, /* TM4 = 36 */ - VOLTAGE_CHANNEL, /* ABPS10 = 37 */ - VOLTAGE_CHANNEL, /* ABPS11 = 38 */ - CURRENT_CHANNEL, /* CM5 = 39 */ - TEMPERATURE_CHANNEL, /* TM5 = 40 */ - VOLTAGE_CHANNEL, /* ADC8 = 41 */ - VOLTAGE_CHANNEL, /* ADC9 = 42 */ - VOLTAGE_CHANNEL, /* ADC10 = 43 */ - VOLTAGE_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t channel_quad_lut[] = -{ - 0xFFu, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - 0u, /* CM0 = 3 */ - 0u, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - 1u, /* CM1 = 7 */ - 1u, /* TM1 = 8 */ - 0xFFu, /* ADC0 = 9 */ - 0xFFu, /* ADC1 = 10 */ - 0xFFu, /* ADC2 = 11 */ - 0xFFu, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD0_IN = 15 */ - - 0xFFu, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - 2u, /* CM2 = 19 */ - 2u, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - 3u, /* CM3 = 23 */ - 3u, /* TM3 = 24 */ - 0xFFu, /* ADC4 = 25 */ - 0xFFu, /* ADC5 = 26 */ - 0xFFu, /* ADC6 = 27 */ - 0xFFu, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD1_IN = 31 */ - - 0xFFu, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - 4u, /* CM4 = 35 */ - 4u, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - 5u, /* CM5 = 39 */ - 5u, /* TM5 = 40 */ - 0xFFu, /* ADC8 = 41 */ - 0xFFu, /* ADC9 = 42 */ - 0xFFu, /* ADC10 = 43 */ - 0xFFu, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -#define NON_ABPS_CHANNEL 0xFFu -#define MAX_NB_OF_APBS 12u - -/*-------------------------------------------------------------------------*//** - * Lookup of the quad to which an ABPS belongs - */ -static const uint8_t abps_channel_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t abps_idx_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 1u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 2u, /* ABPS2 = 5 */ - 3u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 4u, /* ABPS4 = 17 */ - 5u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 6u, /* ABPS6 = 21 */ - 7u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 8u, /* ABPS8 = 33 */ - 9u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 10u, /* ABPS10 = 37 */ - 11u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -static const int8_t apbs_gain_lut[] = -{ - 12, - 8, - 4, - 2 -}; - -static const int16_t apbs_range[] = -{ - 15360, - 10240, - 5120, - 2560 -}; - -static uint8_t g_gdec_lut[MAX_NB_OF_APBS]; -static channel_type_t channel_type_lut_h[ACE_NB_OF_INPUT_CHANNELS]; - - -/*-------------------------------------------------------------------------*//** - * - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -) -{ - channel_type_t channel_type = VOLTAGE; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - channel_type = channel_type_lut_h[channel_handle]; - } - else - { - channel_type = VOLTAGE; - } - - return channel_type; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / g_ace_adc_config[adc_id].adc_resolution; - - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -#define PPE_SAMPLES_RESOLUTION 4095u - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void) -{ - uint8_t abps_idx; - int32_t channel; - uint32_t saved_pc2_ctrl; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Populate the g_gdec_lut look-up table. */ - for(abps_idx = 0u; abps_idx < MAX_NB_OF_APBS; ++abps_idx) - { - uint8_t quad_id; - uint8_t acb_config_byte; - uint32_t channel_is_abps2; - - quad_id = abps_idx / 2u; - acb_config_byte = ACE->ACB_DATA[quad_id].b8; - channel_is_abps2 = abps_idx & 0x01uL; - if(channel_is_abps2) - { - /* ABPS2 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 5u) & 0x03u; - } - else - { - /* ABPS1 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 1u) & 0x03u; - } - } - - /* Populate the channel_type_lut_h look-up table. */ - for(channel = 0; channel < ACE_NB_OF_INPUT_CHANNELS; ++channel) - { - uint8_t quad_id; - uint8_t acb_config_byte; - adc_channel_id_t channel_id; - channel_type_t channel_type; - - channel_id = g_ace_channel_desc_table[channel].signal_id; - quad_id = channel_quad_lut[channel_id]; - - switch (channel_type_lut[channel_id]) - { - case VOLTAGE_CHANNEL: - channel_type = VOLTAGE; - break; - - case CURRENT_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b9; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = CURRENT; - } - break; - - case TEMPERATURE_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b10; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = TEMPERATURE; - } - break; - - default: - ASSERT(0); - channel_type = VOLTAGE; - break; - } - - channel_type_lut_h[channel] = channel_type; - } - - /* Restore SSE PC2 operations. */ - ACE->PC2_CTRL = saved_pc2_ctrl; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t adc_voltage; - int32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint8_t apbs_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - adc_voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / PPE_SAMPLES_RESOLUTION; - voltage = (int32_t)adc_voltage; - - apbs_idx = abps_idx_lut[channel_id]; - if ( abps_channel_lut[channel_id] != NON_ABPS_CHANNEL ) - { - uint8_t gdec; - gdec = g_gdec_lut[apbs_idx]; - voltage = (voltage * apbs_gain_lut[gdec]) - apbs_range[gdec]; - } - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t current = 0u; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - adc_channel_id_t channel_id; - uint8_t current_monitor_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - ASSERT(channel_id < sizeof(channel_type_lut)); - if(CURRENT_CHANNEL == channel_type_lut[channel_id]) - { - uint32_t resistor; - uint32_t voltage; - - /* Compute index into g_ace_current_resistors[] from the current - * channel number. This uses bit 2, 4 and 5 of the channel number - * to derive the index as follows: - * channel name : channel number : index - * CM0 : 0x03 : 0 - * CM1 : 0x07 : 1 - * CM2 : 0x13 : 2 - * CM3 : 0x17 : 3 - * CM4 : 0x23 : 4 - * CM5 : 0x27 : 5 - */ - current_monitor_idx - = (((uint8_t)channel_id & 0x04u) >> 2u) + (((uint8_t)channel_id & 0x30u) >> 3u); - - if(current_monitor_idx < (uint8_t)ACE_NB_OF_CURRENT_MONITORS) - { - /* Retrieve the current sensing external resistor value from - * the ACE configuration data generated by the ACE configurator. */ - resistor = g_ace_current_resistors[current_monitor_idx]; - - /* Compute mA current value taking into account the amplication - * factor of 50 used within the current monitor hardware. */ - voltage = ACE_convert_adc_input_to_mV(channel_handle, sample_value); - current = (voltage * (1000u / 50u)) / resistor; -; - } - } - } - - return current; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t temperature; - uint32_t voltage; - - voltage = ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - temperature = (voltage * 10u) / 25u; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - int32_t voltage; - - voltage = (int32_t)ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - /* Tc = Tk - 273.15 */ - temperature = (voltage * 4) - 2731; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - - temperature = (int32_t)ACE_convert_to_Kelvin( channel_handle, sample_value ); - - /* F = (K * 9/5) - 459.67 */ - temperature = ((temperature * 9) / 5) - 459; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -) -{ - const uint8_t * p_channel_name = 0; - - if ( channel_handle < NB_OF_ACE_CHANNEL_HANDLES) - { - p_channel_name = g_ace_channel_desc_table[channel_handle].p_sz_channel_name; - } - - return p_channel_name; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = g_ace_adc_config[adc_id].adc_resolution - 1u; - } - else - { - sample_value = (uint16_t)((voltage * (g_ace_adc_config[adc_id].adc_resolution - 1)) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = PPE_SAMPLES_RESOLUTION; - } - else - { - sample_value = (uint16_t)((voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -#define MAX_PPE_SAMPLE_VALUE 0x0FFFu - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint32_t adc_voltage; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if ( abps_channel_lut[channel_id] == NON_ABPS_CHANNEL ) - { - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - } - else - { - adc_voltage = 0u; - } - } - else - { - uint8_t apbs_idx; - uint8_t gdec; - - apbs_idx = abps_idx_lut[channel_id]; - gdec = g_gdec_lut[apbs_idx]; - voltage = voltage + apbs_range[gdec]; - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - adc_voltage = adc_voltage / (uint8_t)apbs_gain_lut[gdec]; - } - else - { - adc_voltage = 0; - } - } - - sample_value = (uint16_t)((adc_voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -) -{ - uint16_t sample_value; - uint32_t voltage; - uint32_t resistor = 1u; - - voltage = current * 50u * resistor; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - voltage = (temperature * 25u) / 10u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - temperature = temperature + 2731; - voltage = (uint32_t)temperature / 4u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t kelvin; - - temperature = temperature + 459; - kelvin = (uint32_t)temperature; - kelvin = (kelvin * 5u) / 9u; - - sample_value = ACE_convert_from_Kelvin( channel_handle, kelvin ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -) -{ - uint16_t ppe_value; - - ppe_value = (pdma_value >> 8u) & 0xFFFFu; - if ( channel_id != 0 ) - { - *channel_id = (adc_channel_id_t)((pdma_value >> 24u) & 0xFFu); - } - - return ppe_value; -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h deleted file mode 100644 index 0081310d7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * This file contains the addresses and size of the various blocks of data - * stored in eNVM. - * - * SVN $Revision: 1113 $ - * SVN $Date: 2009-07-01 11:11:29 +0100 (Wed, 01 Jul 2009) $ - */ -#ifndef ENVM_LAYOUT_HEADER -#define ENVM_LAYOUT_HEADER - -#ifdef __cplusplus -extern "C" { -#endif - -/*============================================================================== - * Address of the manufacturing test data. - */ -#define MTD_ADDRESS 0x60080010 - -/*============================================================================== - * MSS configuration location. - */ -#define MSS_CONFIG_ADDRESS 0x60081618 - -/*============================================================================== - * Analog configuration location and size. - */ -#define ANALOG_CONFIG_ADDRESS 0x60081600 -#define ANALOG_CONFIG_BYTE_SIZE 24 - -#ifdef __cplusplus -} -#endif - -#endif /* ENVM_LAYOUT_HEADER */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c deleted file mode 100644 index ebd1e8dde..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c +++ /dev/null @@ -1,746 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ - -#include "mss_ace.h" -#include "mtd_data.h" -#include "envm_layout.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_config.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define START_ADC_CONVERSION 0x80uL - - -/**/ -void ace_init_flags( void ); -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_init( void ) -{ - /* Initialize driver's internal data. */ - #if (ACE_NB_OF_PPE_FLAGS > 0) - ace_init_flags(); - #endif - - /* Initialize the data structures used by conversion functions. */ - ace_init_convert(); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -) -{ - ACE->ADC0_CONV_CTRL = (uint32_t)channel_id | START_ADC_CONVERSION; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define ADC_DATAVALID_MASK 0x00001000uL -#define ADC_RESULT_MASK 0x00000FFFuL - -static const uint32_t volatile * const adc_status_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->ADC0_STATUS, - &ACE->ADC1_STATUS, - &ACE->ADC2_STATUS -}; - -uint16_t ACE_get_adc_result -( - uint8_t adc_id -) -{ - uint16_t result = 0u; - uint32_t data_valid; - - ASSERT( adc_id < NB_OF_ANALOG_MODULES ); - - if ( adc_id < (uint8_t)NB_OF_ANALOG_MODULES ) - { - do { - data_valid = *adc_status_reg_lut[adc_id] & ADC_DATAVALID_MASK; - } while ( !data_valid ); - - result = (uint16_t)(*adc_status_reg_lut[adc_id] & ADC_RESULT_MASK); - } - return result; -} - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ - -#define SDD_ENABLE_MASK 0x20uL -#define SDD_REG_SEL_MASK 0x40uL - -#define DAC0_SYNC_EN_MASK 0x10uL -#define DAC1_SYNC_EN_MASK 0x20uL -#define DAC2_SYNC_EN_MASK 0x40uL - -#define DAC0_SYNC_UPDATE 0x01uL -#define DAC1_SYNC_UPDATE 0x02uL -#define DAC2_SYNC_UPDATE 0x04uL - -/*-------------------------------------------------------------------------*//** - * - */ -static volatile uint32_t * const dac_ctrl_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_CTRL, - &ACE->DAC1_CTRL, - &ACE->DAC1_CTRL -}; - -static const uint32_t dac_enable_masks_lut[NB_OF_ANALOG_MODULES] = -{ - DAC0_SYNC_EN_MASK, - DAC1_SYNC_EN_MASK, - DAC2_SYNC_EN_MASK -}; - -static volatile uint32_t * const dac_byte01_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->SSE_DAC0_BYTES01, - &ACE->SSE_DAC1_BYTES01, - &ACE->SSE_DAC2_BYTES01, -}; - -static volatile uint32_t * const dac_byte2_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_BYTE2, - &ACE->DAC1_BYTE2, - &ACE->DAC2_BYTE2 -}; - -/*------------------------------------------------------------------------------ - * Pointer to the manufacturing test data containing trimming information - * generated during manufacturing. - */ -static const mtd_data_t * const p_mtd_data = (mtd_data_t *)MTD_ADDRESS; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define OBD_MODE_MASK (uint8_t)0x01 -#define OBD_CHOPPING_MASK (uint8_t)0x02 - -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - const uint8_t sdd_2_quad_lut[NB_OF_SDD] = {0u, 2u, 4u}; - uint8_t quad_id; - uint8_t obd_mode_idx = 1u; - uint8_t chopping_mode_idx = 0u; - uint32_t saved_pc2_ctrl; - - quad_id = sdd_2_quad_lut[sdd_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Select between voltage/current and RTZ modes.*/ - ACE->ACB_DATA[quad_id].b6 = mode; - - /* Load manufacturing generated trim value. */ - if ( (mode & OBD_MODE_MASK) > 0u ) - { - obd_mode_idx = 0u; - } - if ( (mode & OBD_CHOPPING_MASK) > 0u ) - { - chopping_mode_idx = 1u; - } - ACE->ACB_DATA[quad_id].b4 - = p_mtd_data->odb_trimming[sdd_id][obd_mode_idx][chopping_mode_idx]; - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - - /* Set SDD resolution. */ - *dac_ctrl_reg_lut[sdd_id] = (uint32_t)resolution; - - /* Update SDD value through SSE_DACn_BYTES01. */ - *dac_ctrl_reg_lut[sdd_id] |= SDD_REG_SEL_MASK; - - /* Synchronous or individual SDD update. */ - if ( INDIVIDUAL_UPDATE == sync_update ) - { - ACE->DAC_SYNC_CTRL &= ~dac_enable_masks_lut[sdd_id]; - } - else - { - ACE->DAC_SYNC_CTRL |= dac_enable_masks_lut[sdd_id]; - } - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] |= SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] &= ~SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_byte2_reg_lut[sdd_id] = sdd_value >> 16; - *dac_byte01_reg_lut[sdd_id] = sdd_value; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -) -{ - uint32_t dac_sync_ctrl; - - dac_sync_ctrl = ACE->DAC_SYNC_CTRL; - - if ( SDD_NO_UPDATE != sdd0_value ) - { - ACE->DAC0_BYTE2 = sdd0_value >> 16; - ACE->SSE_DAC0_BYTES01 = sdd0_value; - dac_sync_ctrl |= DAC0_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd1_value ) - { - ACE->DAC1_BYTE2 = sdd1_value >> 16; - ACE->SSE_DAC1_BYTES01 = sdd1_value; - dac_sync_ctrl |= DAC1_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd2_value ) - { - ACE->DAC2_BYTE2 = sdd2_value >> 16; - ACE->DAC2_BYTE1 = sdd2_value >> 8; - ACE->SSE_DAC2_BYTES01 = sdd2_value; - dac_sync_ctrl |= DAC2_SYNC_UPDATE; - } - - ACE->DAC_SYNC_CTRL = dac_sync_ctrl; -} - -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ - - /* - * SDD Analog switch mask. ACB byte 10. - * 0: TMB comparator reference voltage is an ADC direct input - * 1: TMB comparator reference voltage is one of the SDD outputs as - * selected by DAC_MUXSEL[1:0] - */ -#define B10_COMP_VREF_SW_MASK 0x20u - -/* - * Comparator reference voltage multiplexer. - * Used to select which SDD output will be used as reference voltage for TMB - * comparator. These bits are only meaningful when COMP_VREF_SW is set to 1. - */ -#define B11_DAC_MUXSEL_MASK 0x03u - -/* - * Number of bits to shift a value of type comp_hysteresis_t to get the - * hysteresis to program into ACB b9 or b10. - */ -#define HYSTERESIS_SHIFT 6u - -/* - * Mask of hysteresis bits within ACB b9 or b10. - */ -#define HYSTERESIS_MASK 0xC0u - -/* - * Mask of the comparator enable bit within ACB b9 and b10. - */ -#define COMPARATOR_ENABLE_MASK 0x10u - -/* - * Comparator ID to Signal Conditioning Block (SCB) lookup table. - * USe to find which SCB a comparator belongs to. - */ -const uint8_t comp_id_2_scb_lut[NB_OF_COMPARATORS] = -{ - 0u, /* CMP0 */ - 0u, /* CMP1 */ - 1u, /* CMP2 */ - 1u, /* CMP3 */ - 2u, /* CMP4 */ - 2u, /* CMP5 */ - 3u, /* CMP6 */ - 3u, /* CMP7 */ - 4u, /* CMP8 */ - 4u, /* CMP9 */ - 5u, /* CMP10 */ - 5u /* CMP11 */ -}; - -/*-------------------------------------------------------------------------*//** - * This function is requred to configure comparators included in temperature - * monitor blocks. - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -) -{ - uint8_t scb_id; - uint32_t odd; - - odd = (uint32_t)comp_id & 0x01uL; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( reference < NB_OF_COMP_REF ); - ASSERT( odd ); /* Only Temperature block comparators have configurable reference input. */ - - if ( (comp_id < NB_OF_COMPARATORS) && (reference < NB_OF_COMP_REF) && (odd) ) - { - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( ADC_IN_COMP_REF == reference ) - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 &= (uint8_t)~B11_DAC_MUXSEL_MASK; - } - else - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 = (ACE->ACB_DATA[scb_id].b11 & (uint8_t)~B11_DAC_MUXSEL_MASK) + (uint8_t)reference; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * Set analog block comparators hysteresis. - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( hysteresis < NB_OF_HYSTERESIS ); - - if ( (comp_id < NB_OF_COMPARATORS) && (hysteresis < NB_OF_HYSTERESIS) ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 = (ACE->ACB_DATA[scb_id].b10 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 = (ACE->ACB_DATA[scb_id].b9 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - - */ -void ACE_enable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 |= COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 |= COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * - */ -void ACE_disable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/* - * Bit mask of comparator 0 rise interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear rise interrupts from that comparator. - */ -#define FIRST_RISE_IRQ_MASK 0x00000800uL - -/* - * Bit mask of comparator 0 fall interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear fall interrupts from that comparator. - */ -#define FIRST_FALL_IRQ_MASK 0x00000001uL - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - * Returns the raw analog quad comparator status. - */ -uint32_t ACE_get_comp_status( void ) -{ - return ACE->COMP_IRQ; -} - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint32_t -ACE_get_channel_count -( - void -) -{ - return (uint32_t)ACE_NB_OF_INPUT_CHANNELS; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -) -{ - ace_channel_handle_t channel_handle; - - channel_handle = (ace_channel_handle_t)0; - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -) -{ - ++channel_handle; - - if ( channel_handle >= NB_OF_ACE_CHANNEL_HANDLES ) - { - channel_handle = (ace_channel_handle_t)0; - } - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].p_sz_channel_name != 0 ) - { - int32_t diff; - diff = strncmp( (const char*)p_sz_channel_name, (const char*)g_ace_channel_desc_table[channel_idx].p_sz_channel_name, MAX_CHANNEL_NAME_LENGTH ); - if ( 0 == diff ) - { - /* channel name found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].signal_id == channel_id ) - { - /* channel ID found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -) -{ - uint16_t sample; - uint16_t ppe_offset; - - ppe_offset = g_ace_channel_desc_table[channel_handle].signal_ppe_offset; - sample = (uint16_t)(ACE->PPE_RAM_DATA[ppe_offset] >> 16u); - - return sample; -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h deleted file mode 100644 index 2acc01b1e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h +++ /dev/null @@ -1,2816 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion ACE driver public API. - * - * SVN $Revision: 2884 $ - * SVN $Date: 2010-08-13 16:16:59 +0100 (Fri, 13 Aug 2010) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion Analog Compute Engine driver public API. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes the Analog Compute - Engine (ACE) which provides access to the analog capabilities of SmartFusion - from the Cortex™-M3 microcontroller. This driver provides a set of functions - for controlling the MSS ACE as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. The ACE includes: - • A Sample Sequencing Engine (SSE) controlling the operations of up to - three analog to digital converters (ADC) - • A Post Processing Engine (PPE) processing the analog inputs samples - generated as a result of the SSE operations - • An interface for controlling Sigma Delta DACs (SDD) - • An interface for controlling high speed comparators - - The Sample Sequencing Engine controls the sampling of the various analog - inputs based on a predefined sampling sequence without requiring intervention - from the Cortex-M3. The sampling sequence is defined using the ACE Configurator - provided as part of the MSS Configurator software tool. - Available analog inputs are: - • Active bipolar prescaler inputs (ABPS) allowing to measure voltages within - four possible ranges: - o -15V to +15V - o -10V to +10V - o -5V to +5V - o -2.5V to +2.5V - • Current inputs - • Temperature inputs - • Direct ADC inputs allowing to measure a voltage between zero volts and - the ADC’s reference voltage (VAREF) - Please refer to the Analog Front End section of the SmartFusion datasheet for - further details about analog inputs. - - The Post Processing Engine can perform the following operations on the analog - input samples generated as a result of the SSE operations: - • Calibration adjustment - • Averaging - • Threshold detection - • DMA transfer of most recent sample result to RAM or FPGA fabric - The result of analog input sampling is read from the PPE rather than directly - from the ADC. This ensures more accurate sample results thought the factory - calibration adjustment performed by the PPE. - The PPE can be set to generate interrupts when specific threshold values are - reached on analog inputs through the ACE Configurator software tool. These - thresholds can also be dynamically adjusted through the ACE driver. - - The ACE provides an interface to the Sigma Delta DACs included within the - Analog Front End (AFE). This interface allows control of the DAC’s output - value. Dynamic configuration of the DAC is also possible. - - The ACE provides an interface to the high speed comparators included within - the Analog Front End. This interface allows dynamic configuration of the - comparators and controlling interrupts based on the comparators’ state. - - @section theory_op Theory of Operation - The configuration of the ACE is set though the use of the ACE Configurator - included in the SmartFusion MSS Configurator software tool provided as part of - the Libero Integrated Design Environment tool suite. The ACE Configurator - offers an easy to use graphical method of selecting the configuration of the - following ACE characteristics: - • Analog input channels configuration - • ADC configuration - • Analog input channels sampling sequence - • Filtering applied to analog input samples - • Threshold flags configuration including hysteresis or state filtering properties - • Selection of post processing results transferred though DMA - • Sigma Delta DACs configuration - • Analog comparators configuration - The selected configuration hardware settings, SSE microcode and PPE microcode - are stored in the SmartFusion eNVM. This configuration data is used by the - system boot to configure the ACE after the system come out of reset and before - control is passed to the application. This results in the ACE being fully - operational by the time the application starts executing. - The ACE Configurator also generates a set of C files containing information - about the ACE’s configuration. These C files must be copied into the - drivers_config/mss_ace folder of you r software project for consumption by the - ACE driver. The ACE driver uses the content of these configuration files to - interact with the configured ACE hardware. - - The ACE driver functions are grouped into the following categories: - • Initialization - • Reading analog input channels values and properties - • Post Processing Engine flags - • Conversion functions between sample value and real world units - • Sample Sequencing Engine control - • Sample Sequencing Engine Interrupts Control - • Comparators control - • Sigma Delta Digital to Analog Converters (SDD) control - • Direct analog block configuration and usage - - - Initialization - The ACE driver is initialized through a call to the ACE_init() function. The - ACE_init() function must be called before any other ACE driver functions can - be called. It initializes the ACE’s internal data. - - - Reading analog input channels values and properties - The ACE driver allows retrieving the most recent post processed sample value - for each analog input. It also allows retrieving the name of the analog input - channel assigned in the ACE Configurator and whether the input channel samples - a voltage, current or temperature. - Each individual analog input channel is identified using a channel handle which - is passed as parameter to the ACE input channel driver functions. The channel - handles are design specific. The list of channel handles is generated by the - ACE Configurator based on the names given to the input signals. The channel - handles can be found in the drivers_config\mss_ace\ace_handles.h file. The - channel handle can be obtained from the channel name using the ACE_get_channel_handle() - function. It is also possible to iterate through all the channels using the - ACE_get_first_channel() and ACE_get_next_channel() functions. - - Reading analog input samples from the post processing engine is done the following function: - • uint16_t ACE_get_ppe_sample( ace_channel_handle_t channel_handle ) - - Information about an input channel can be retrieved using the following functions: - • const uint8_t * ACE_get_channel_name( ace_channel_handle_t channel_handle ) - • channel_type_t ACE_get_channel_type( ace_channel_handle_t channel_handle ) - - - Post Processing Engine flags - The SmartFusion ACE Post Processing Engine (PPE) provides the ability to monitor - the state of analog input channels and detect when certain threshold values are - crossed. Flags are raised by the PPE when these thresholds are crossed. Interrupts - can optionally be generated when flags are raised. - The flags are defined using the ACE Configurator software tool. The flag’s name, - threshold value and hysteresis settings are specified in the ACE Configurator. - The ACE Configurator generates microcode based on the selected configuration which - is executed at system run time by the PPE. The PPE microcode is loaded into the - ACE at chip boot time by the Actel provided system boot code. No ACE driver - intervention is required to load up the PPE microcode. - The ACE driver allows: - • Retrieving the current state of the post processing engine flags - • Assigning a handler function to individual flag assertions - • Assigning a handler function to flags generated based on the value of a - specific channel - • Controlling flag interrupts - • Dynamically modify a flag’s threshold value - • Dynamically modify a flag’s hysteresis - - Each individual flag is identified using a flag handle which is passed as parameter - to the ACE driver functions controlling the flags. The flag handles are design - specific. They are defined in the drivers_config\mss_ace\ace_handles.h file which - is generated by the ACE Configurator based on the names selected for the signal - and flag names. A flag handle can be obtained from the driver using the name of - the flag entered in the ACE Configurator software when the flag was created. A - flag handle can also be obtained using the functions ACE_get_channel_first_flag() - and ACE_get_channel_next_flag() when iterating through the flags associated with - an analog input channel. The functions available for retrieving flag handles are: - • ace_flag_handle_t ACE_get_flag_handle (const uint8_t *p_sz_full_flag_name) - • ace_flag_handle_t ACE_get_channel_first_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - • ace_flag_handle_t ACE_get_channel_next_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - - The current status of a flag can be polled using the following function: - • int32_t ACE_get_flag_status (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle individual - flags. These interrupt handlers will be called by the ACE driver when a specific - flag is raised. The flag interrupt control functions are: - • void ACE_register_flag_isr (ace_flag_handle_t flag_handle, flag_isr_t flag_isr) - • void ACE_enable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_disable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_clear_flag_irq (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle all flags - associated with one specific analog input channel. These interrupt handlers will - be called by the ACE driver when one of the flags, generated based on the state of - the specified analog input channel, is raised. The channel flag interrupt control - functions are: - • void ACE_register_channel_flags_isr (ace_channel_handle_t channel_handle, channel_flag_isr_t channel_flag_isr) - • void ACE_enable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_disable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_clear_channel_flags_irq (ace_channel_handle_t channel_handle) - - A single global interrupt handler can be registered with the ACE driver. The global - flag interrupt handler function will be called by the ACE driver when any of the - interrupt enabled flag is raised. The handle of the flag causing the interrupt and - the handle of the associated analog input channel is passed as parameter to the - registered global flag handler. - • void ACE_register_global_flags_isr (global_flag_isr_t global_flag_isr) - - The configuration of a flag can be dynamically modified using the following functions: - • void ACE_set_flag_threshold (ace_flag_handle_t flag_handle, uint16_t new_threshold) - • void ACE_set_flag_hysteresis (ace_flag_handle_t flag_handle, uint16_t adc_hysteresis) - • void ACE_set_channel_hysteresis (ace_channel_handle_t channel_handle, uint16_t adc_hysteresis) - • void ACE_set_flag_assertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - • void ACE_set_flag_deassertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - - Information about a flag can be retrieved using the following functions once - the flag handle is known: - • const uint8_t * ACE_get_flag_name (ace_flag_handle_t flag_handle) - • ace_channel_handle_t ACE_get_flag_channel (ace_flag_handle_t flag_handle) - - - Conversion to and from real world units - The ACE driver provides a set of conversion functions to convert sample values - read from the post processing engine into real world units: - • millivolts - • milliamps - • Degrees Kelvin - • Degrees Celsius - • Degrees Fahrenheit - Conversion functions are also available to convert from real world units into - PPE sample values. These functions are typically used for dynamically adjusting - flags threshold values. - - - Sample Sequencing Engine control - The ACE driver provides a set of functions for dynamically controlling the - Sample Sequencing Engine. These functions are only required for managing multiple - sampling sequences. The use of these functions is not required for most applications - since the SSE is already configured and running by the time the application starts. - - - Sample Sequencing Engine Interrupts Control - The ACE driver provides a set of functions for managing interrupts generated by - the Sample Sequencing Engine. These functions allow enabling, disabling and clearing - interrupt defined as part of the sampling sequence. These functions also allow - controlling interrupts generated by the ADCs. - - - Comparators control - The ACE driver provides a set of functions for managing interrupts generated based - on the change of state of the high speed comparators. Functions are also provided - to dynamically modify the comparators configuration. - - - Sigma Delta Digital to Analog Converters (SDD) control - The ACE driver provides functions for controlling the output value of the Sigma - Delta DACs (SDD). Functions are also provided for dynamically adjusting the - configuration of the SDDs. - - *//*=========================================================================*/ -#ifndef __MSS_ACE_H_ -#define __MSS_ACE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ace_handles.h" - -/*-------------------------------------------------------------------------*//** - Analog to Digital Converter channel IDs. - This enumeration is used to identify the ADC's analog inputs. It caters for up - to three ADCs/Analog Modules as can be found on the larger parts of the - SmartFusion family. The channel ID numbering is designed to allow easy - extraction of the ADC number and also the individual ADC input number by simple - shifting and masking. This enumeration is used as parameter to the - ACE_get_input_channel_handle() function retrieving the channel handle associated - with a specific analog input signal. - */ -typedef enum -{ - ADC0_1P5V = 0, /*!< Analog Module 0, 1.5V/GND */ - ABPS0 = 1, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS1 = 2, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM0 = 3, /*!< Analog Module 0, Quad0 Current Monitor Block */ - TM0 = 4, /*!< Analog Module 0, Quad0 Temperature Monitor Block */ - ABPS2 = 5, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS3 = 6, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM1 = 7, /*!< Analog Module 0, Quad1 Current Monitor Block */ - TM1 = 8, /*!< Analog Module 0, Quad1 Temperature Monitor Block */ - ADC0 = 9, /*!< Analog Module 0 Direct Input 0 */ - ADC1 = 10, /*!< Analog Module 0 Direct Input 1 */ - ADC2 = 11, /*!< Analog Module 0 Direct Input 2 */ - ADC3 = 12, /*!< Analog Module 0 Direct Input 3 */ - SDD0_IN = 15, /*!< Analog Module 0 Sigma-Delta DAC output */ - - ADC1_1P5V = 16, /*!< Analog Module 1, 1.5V/GND */ - ABPS4 = 17, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS5 = 18, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM2 = 19, /*!< Analog Module 1, Quad0 Current Monitor Block */ - TM2 = 20, /*!< Analog Module 1, Quad0 Temperature Monitor Block */ - ABPS6 = 21, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS7 = 22, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM3 = 23, /*!< Analog Module 1, Quad1 Current Monitor Block */ - TM3 = 24, /*!< Analog Module 1, Quad1 Temperature Monitor Block */ - ADC4 = 25, /*!< Analog Module 1 Direct Input 0 */ - ADC5 = 26, /*!< Analog Module 1 Direct Input 1 */ - ADC6 = 27, /*!< Analog Module 1 Direct Input 2 */ - ADC7 = 28, /*!< Analog Module 1 Direct Input 3 */ - SDD1_IN = 31, /*!< Analog Module 1 Sigma-Delta DAC output */ - - ADC2_1P5V = 32, /*!< Analog Module 2, 1.5V/GND */ - ABPS8 = 33, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS9 = 34, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM4 = 35, /*!< Analog Module 2, Quad0 Current Monitor Block */ - TM4 = 36, /*!< Analog Module 2, Quad0 Temperature Monitor Block */ - ABPS10 = 37, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS11 = 38, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM5 = 39, /*!< Analog Module 2, Quad1 Current Monitor Block */ - TM5 = 40, /*!< Analog Module 2, Quad1 Temperature Monitor Block */ - ADC8 = 41, /*!< Analog Module 2 Direct Input 0 */ - ADC9 = 42, /*!< Analog Module 2 Direct Input 1 */ - ADC10 = 43, /*!< Analog Module 2 Direct Input 2 */ - ADC11 = 44, /*!< Analog Module 2 Direct Input 3 */ - SDD2_IN = 47, /*!< Analog Module 2 Sigma-Delta DAC output */ - INVALID_CHANNEL = 255 /*!< Used to indicate errors */ -} adc_channel_id_t; - - -/*-------------------------------------------------------------------------*//** - The ACE_init() function initializes the SmartFusion MSS ACE driver. It - initializes the ACE driver’s internal data structures. The ACE_init() function - must be called before any other MSS ACE driver functions can be called. - */ -void ACE_init( void ); - - -/*============================================================================== - ============== Direct Analog Block Configuration and Usage ==================== - =============================================================================*/ - -/*=========================================================================*//** - @defgroup group1 Direct Analog Block Configuration and Usage - These functions are intended for using the SmartFusion analog block hardware - without relying on the Sampling Sequence Engine or Post Processing engine. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_start_adc() function initiates the sampling of the analog input - channel identified by the channel_id parameter. This function is provided for - test purposes. It must not be used while the Sample Sequencing Engine is - running. - - @param channel_id - The channel_id parameter identifies the analog input channel to sample. - - @return - This function does not return a value. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_adc_result () function reads the result of the last input channel - sampling performed by the ADC identified as parameter. - - @param adc_id - The adc_id parameter identifies which of the possible three ADC to read the - sample result from. - - @return - The ACE_start_adc_sync() function returns the ADC result from the ADC - specified as parameter. - */ -uint16_t ACE_get_adc_result -( - uint8_t adc_id -); - -/** @} */ - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group2 Sigma Delta Digital to Analog Converters (SDD) Control - The following functions are used to control the Sigma Delta DACs included - within the SmartFusion analog block. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sdd_id_t enumeration is used to identify the Sigma Delta DACs to the SDD - control functions, ACE_configure_sdd(), ACE_enable_sdd(), ACE_disable_sdd() - and ACE_set_sdd_value(). There is one SDD per analog module. - */ -typedef enum -{ - SDD0_OUT = 0, /*!< Analog Module 0 Sigma Delta DAC */ - SDD1_OUT = 1, /*!< Analog Module 1 Sigma Delta DAC */ - SDD2_OUT = 2, /*!< Analog Module 2 Sigma Delta DAC */ - NB_OF_SDD = 3 -} sdd_id_t; - -/*-------------------------------------------------------------------------*//** - The sdd_resolution_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify DAC resolution of the Sigma Delta DAC. - */ -typedef enum -{ - SDD_8_BITS = 0, - SDD_16_BITS = 4, - SDD_24_BITS = 8 -} sdd_resolution_t; - -/*-------------------------------------------------------------------------*//** - These constant definitions are used as an argument to the ACE_configure_sdd() - function to specify operating mode of the Sigma Delta DAC. - */ -#define SDD_CURRENT_MODE 1 -#define SDD_VOLTAGE_MODE 0 -#define SDD_RETURN_TO_ZERO 0 -#define SDD_NON_RTZ 2 - -/*-------------------------------------------------------------------------*//** - The sdd_update_method_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify individual or synchronous updating of - the Sigma Delta DACs. - */ -typedef enum -{ - INDIVIDUAL_UPDATE = 0, - SYNC_UPDATE = 1 -} sdd_update_method_t; - -/*-------------------------------------------------------------------------*//** - The ACE_configure_sdd() function is used to configure the operating mode of - the Sigma Delta DAC (SDD) specified as parameter. It allows selecting whether the - SDD will output a voltage or a current. A current between 0 and 256uA is - generated in current mode. A voltage between 0 and 2.56V is generated in - voltage mode. - This function also allows selecting whether Return To Zero (RTZ) mode is - enabled or not. Enabling Return To Zero mode improves linearity of the SDD - output at the detriment of accuracy. This mode should be used if linearity is - more important than accuracy. - A call to this function is not required if relying on the configuration - selected in the ACE configurator being loaded after reset by the system boot. - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is configured by this - function. Allowed values are: - - SDD0_OUT - - SDD1_OUT - - SDD2_OUT - - @param resolution - The resolution parameter specifies the desired resolution of the Sigma Delta DAC. - Allowed values are: - - SDD_8_BITS - - SDD_16_BITS - - SDD_24_BITS - - @param mode - The mode parameter specifies the operating mode of the Sigma Delta DAC. It - specifies whether a current or voltage should be generated and whether - Return to Zero mode should be used. It is a logical OR of the following - defines: - - SDD_CURRENT_MODE - - SDD_VOLTAGE_MODE - - SDD_RETURN_TO_ZERO - - SDD_NON_RTZ - - @param sync_update - The sync_update parameter specifies whether the SDD output will be updated - individually though a call to ACE_set_sdd_value() or synchronously with one - or more other SDD outputs via a call to ACE_set_sdd_value_sync(). - - Example - @code - ACE_configure_sdd - ( - SDD1_OUT, - SDD_24_BITS, - SDD_VOLTAGE_MODE | SDD_RETURN_TO_ZERO, - INDIVIDUAL_UPDATE - ); - @endcode - */ -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sdd() function is used to enable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to enable. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sdd() function is used to disable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to disable. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value() function is used to set the value of the output of - a Sigma Delta DAC. It uses the ACE's phase accumulator to generate the one bit - input bit stream into the SDD which will in turn define the voltage or - current generated at the SDD output. - The SDD output is proportional to the sdd_value passed to this function taking - the SDD resolution into account. A maximum voltage of 2.56V or a maximum - current of 256uA will be generated when the sdd_value is set the maximum value - allowed by the SDD resolution - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is being set. - - @param sdd_value - The sdd_value parameter specifies the value of the Sigma Delta DAC output. - It is a fraction of SDD resolution. The voltage/current value generated from - the sdd_value paramenter can be determined using the following equation where - sdd_resolution is the resolution of the SDD as set through function - ACE_configure_sdd() and sdd_rangSDD configuration: - sdd_output = (sdd_value / sdd_resolution) * sdd_range - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -); - - -/*-------------------------------------------------------------------------*//** - This constant definition is used as an argument to the ACE_set_sdd_value_sync() - function to specify that the output value of SDD0, or SDD1, or SDD2 should not - be modified. - */ -#define SDD_NO_UPDATE 0xFFFFFFFF - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value_sync() function is used to synchronize the update of - multiple Sigma Delta DAC outputs. - - @param sdd0_value - The sdd0_value parameter specifies the value that will be used to set the - output of SDD0. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD0 should not be modified. - - @param sdd1_value - The sdd1_value parameter specifies the value that will be used to set the - output of SDD1. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD1 should not be modified. - - @param sdd2_value - The sdd2_value parameter specifies the value that will be used to set the - output of SDD2. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD2 should not be modified. - - For example the code below will change the output value of SDD0 and SDD2 so - that the voltage/current generate by SDD0 and ADD2 will change at the same - time. This function call will not affect the output value of SDD1. - @code - uint32_t sdd0_value = 0x1234; - uint32_t sdd2_value = 0x5678; - ACE_set_sdd_value_sync( sdd0_value, SDD_NO_UPDATE, sdd2_value ); - @endcode - */ - -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -); - -/** @} */ - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group9 Reading Analog Input Channels Values and Properties - The following functions are used to access analog input channels properties - and sampled values. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - This constant returned by the ACE_get_flag_channel(), ACE_get_channel_handle() - and ACE_get_input_channel_handle() functions when the driver can’t find a - valid handle for the ADC input channel. - */ -#define INVALID_CHANNEL_HANDLE NB_OF_ACE_CHANNEL_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_handle() function returns the channel handle associated - with an analog input channel name. The retrieved channel handle will be - subsequently used as parameter to function ACE_get_ppe_sample() used to read - the most recent post processed sample for the analog input identified through - the channel/service name passed as argument to this function. - - @param p_sz_channel_name - The p_sz_channel_name parameter is a zero-terminated string containing the - name of the channel/service as entered in the ACE configurator. - - @return - This function returns a channel handle. This channel handle is required as - parameter to function ACE_get_ppe_sample(). - It will return INVALID_CHANNEL_HANDLE if the channel/service name is not - recognized. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_input_channel_handle() function returns the channel handle for - the hardware analog input channel specified as parameter. - - @param channel_id - The channel_id parameter identifies a hardware analog input of the ACE. - - @return - This function returns a channel handle. This channel handle is required as - parameter to other ACE driver functions dealing with analog inputs. - It will return INVALID_CHANNEL_HANDLE if the channel ID passed as parameter - is invalid. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_ppe_sample() function is used to read the most recent post - processed sample for the analog input channel associated with the channel - handle passed as parameter. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - this function will return the most recent ADC conversion result adjusted for - calibration and user provided coefficients as provided through the ACE - configurator. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a 16 bit value representing the adjusted value of the - ADC conversion result for the analog input channel identified by the channel - handle passed as parameter. The return value is actually a 12, 10 or 8 bits - number depending on the configuration of the ADC. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_name() function provides the name of the channel - associated with the channel handle passed as parameter. The channel name is - the name used in the ACE configurator software tool when adding a service to - the ACE. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - we want to retrieve the channel name. The available channel handle values can - be found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a pointer to a zero-terminated string containing the - name of the channel. It returns 0 if the channel handle passed as parameter - is not recognized. - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The channel_type_t enumeration is used to identify the type of quantity - measured by an analog input channel. It is typically used to figure out the - type of conversion that must be applied to the ADC value generated from - sampling a channel in order to yield real world units such millivolts, - milliamps or degrees. - */ -typedef enum -{ - VOLTAGE, - CURRENT, - TEMPERATURE -} channel_type_t; - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_type() function returns the type of input channel of the - analog input channel identified by the channel handle passed as parameter. - This function allows determining whether the quantity measured through the ADC - is a voltage, current or temperature. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns one of the following values to report the type of - quantity measure throught the channel: - - VOLTAGE - - CURRENT - - TEMPERATURE - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_count() function returns the total number of configured - analog input channels. It is the number of channels available for use as - opposed to the theorical number of physical channels supported by the device. - - @return - The ACE_get_channel_count() function returns the total number of input - channels that were configured in the ACE configurator. - The ACE_get_channel_count() function returns 0 if no input channels were - configured. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -uint32_t -ACE_get_channel_count -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_first_channel() function returns the channel handle of one of the - channel controlled by the ACE. This function is used to start iterating though - the list of analog input channels handled by the ACE. - - @return - The ACE_get_first_channel() function returns the first channel handle found - in the ACE driver's internal channel handles list or INVALID_CHANNEL_HANDLE - if there are no channels defined in the ACE configuration. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_next_channel() returns the channel handle of the channel following - the one passed as parameter. This function is used to iterate through the list - of analog input channels handled by the ACE. - - @param channel_handle - The channel_handle parameter identifies from which channel the driver should - look in its channel handle list to return the next channel handle. The - channel_handle parameter would typically be the channel handle returned by a - call to ACE_get_first_channel() or a previous call to ACE_get_next_channel(). - Note: - The first call to ACE_get_next_channel() would typically use the - channel_handle returned by a previous call to ACE_get_first_channel(). The - second and subsequent calls to ACE_get_next_channel() would typically use - the channel_handle returned by a previous call to ACE_get_next_channel(). - - @return - The ACE_get_next_channel() function returns the channel handle of the channel - following the one passed as parameter or INVALID_CHANNEL_HANDLE if the end of - the channels list has been reached. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -); - - /** @} */ - -/*============================================================================== - =============================== SSE Control ================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group3 Sample Sequencing Engine Control - Sample Sequencing Engine control. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The Sample Sequencing Engine control functions use a parameter of this type as - a handle to identify the Sample Sequencing Engine (SSE) sequences configured - using the ACE configurator. The ACE_get_sse_seq_handle() function retrieves the - handle of the SSE sequence identified by the sequence name passed as parameter. - Note: The ACE configurator generates ACE driver configuration files into the - .\drivers_config\mss_ace folder of the firmware project. These files - contain the details of the SSE sequence handles for your ACE configuration. - The ACE driver automatically includes these files when the - .\drivers_config\mss_ace folder is present in the firmware project. - */ -typedef uint16_t sse_sequence_handle_t; - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_sse_seq_handle() function when the - driver can’t find a valid handle for the Sample Sequencing Engine (SSE) sequence. -*/ -#define INVALID_SSE_SEQ_HANDLE 0xFFFFu - -/*-------------------------------------------------------------------------*//** - The ACE_get_sse_seq_handle() function retrieves the handle of the Sample - Sequencing Engine sequence identified by the sequence name passed as parameter. - The sequence handler can then be used as parameter to other SSE sequence control - functions to identify the sequence to control. - - @param p_sz_sequence_name - The p_sz_sequence_name parameter is a pointer to a zero-terminated string - containing the name of the sampling sequence for which we want to retrieve - the handle. - - @return - The ACE_get_sse_seq_handle() function returns the handle used to identify - the sequence passed as parameter with other ACE driver sampling sequence - control functions. It returns INVALID_SSE_SEQ_HANDLE if the sequence name - passed as parameter is not recognized. - - @code - sse_sequence_handle_t sse_seq_handle; - sse_seq_handle = ACE_get_sse_seq_handle("ProcedureA"); - if ( sse_seq_handle != INVALID_SSE_SEQ_HANDLE ) - { - ACE_load_sse( sse_seq_handle ); - ACE_start_sse( sse_seq_handle ); - } - @endcode - */ -sse_sequence_handle_t -ACE_get_sse_seq_handle -( - const uint8_t * p_sz_sequence_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_load_sse() function loads the ACE Sample Sequencing Engine (SSE) RAM - with the microcode implementing the sampling sequence identified by the SSE - sequence handler passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_load_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_start_sse() function causes the Sampling Sequence Engine (SSE) to start - executing the sequence identified by the sequence handler passed as parameter. - It causes the initiailization part of the sampling sequence to be executed - before the loop part of the sequence is started. - You must ensure that the sampling sequence has been loaded into the ACE's SSE - before calling this function. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_start_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_restart_sse() function restarts the loop part of the sampling sequence - loaded into the ACE's Sampling Sequence Engine (SSE). The sampling sequence - will be restarted from the beginning of the sequence but omiting the - intialization phase of the sequence. - This function would typically be called after stopping the sampling sequence - using the ACE_stop_see() function or with non-repeating sequences. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_restart_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_stop_sse() function stops execution of the Sample Sequencing Engine - (SSE) sequence indentified by the sequence handle passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handle identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_stop_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_resume_sse() function causes the Sampling Sequencing Engine (SSE) - sampling sequence identified by the sequence handle passed as parameter to - resume execution. This function is typically used to restart execution of - a sequence at the point where it was stopped through a call to ACE_stop_sse(). - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_resume_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sample_pipeline() function clears the ACE hardware of samples - being processed. It clear the various stages involved in the production of - post processed samples within the ACE hardware. It is intended for use when - switching between sampling sequences and using peripheral DMA. It avoids - receiving stale samples generated as a result of a previous sampling sequence. - - The example below shows how this function can be used to ensure that no sample - generated as a result of sampling sequence sequence_a will be generated once - sampling sequence_b is started. Please note that it is important to stop the - SSE using function ACE_stop_sse() before calling ACE_clear_sample_pipeline() - to ensure sequence_a is not restarted after the sample pipeline is cleared. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_start_sse(sequence_b); - @endcode - - The example below shows how to ensure that the first sample read through PDMA - will be from the first channel in the sampling sequence. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_restart_sse(sequence_a); - PDMA_start - ( - PDMA_CHANNEL_0, - PDMA_ACE_PPE_DATAOUT, - (uint32_t)g_samples_buffer[g_pdma_buffer_idx], - SAMPLES_BUFFER_SIZE - ); - @endcode - */ -void ACE_clear_sample_pipeline(void); - -/** @} */ -/*============================================================================== - ======================== SSE Interrupts Control =============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group4 Sample Sequencing Engine Interrupts Control - The following functions are used to control interrupts generated from the - ACE's Sample Sequencing Engine. These interrupts would typically be used to - detect when valid data is available from the ADCs controlled by the SSE or to - detect the complete or partial completion of the sampling sequence through the - insertion of SSE program counter general purpose interrupt assertion as part - of the sequence. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sse_irq_id_t enumeration is used to identify the Sample Sequencing Engine - (SSE) interrupt sources to the SSE interrupt control functions. - */ -typedef enum -{ - PC0_FLAG0 = 0, - PC0_FLAG1 = 1, - PC0_FLAG2 = 2, - PC0_FLAG3 = 3, - PC1_FLAG0 = 4, - PC1_FLAG1 = 5, - PC1_FLAG2 = 6, - PC1_FLAG3 = 7, - PC2_FLAG0 = 8, - PC2_FLAG1 = 9, - PC2_FLAG2 = 10, - PC2_FLAG3 = 11, - ADC0_DATAVALID = 12, - ADC1_DATAVALID = 13, - ADC2_DATAVALID = 14, - ADC0_CALIBRATION_COMPLETE = 15, - ADC1_CALIBRATION_COMPLETE = 16, - ADC2_CALIBRATION_COMPLETE = 17, - ADC0_CALIBRATION_START = 18, - ADC1_CALIBRATION_START = 19, - ADC2_CALIBRATION_START = 20, - NB_OF_SSE_FLAG_IRQS = 21 -} sse_irq_id_t; - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sse_irq() function enables the Sample Sequencing Engine (SSE) - interrupt source specified as parameter to generate interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_enable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sse_irq() function disables the Sample Sequencing Engine - (SSE) interrupt source specified as parameter from generating interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_disable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sse_irq() function clears the Sampling Sequencing Engine (SSE) - interrupt specified as parameter. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_clear_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/** @} */ -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group5 Comparators Control - The following functions are used to control the analog comparators included - in the SmartFusion analog block. - The comparator configuration functions can be used to directly configure the - comparators. Their use is only required when the ACE is not configured using - the ACE configurator software tool. - The comparator interrupt control functions are used regardless of the way the - ACE was configured to enable, disable and clear interrupts generated when the - positive input of a comparator rises above or falls below the negative input. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The comparator_id_t enumeration is used by the comparator control functions - to identify the analog comparators included in the SmartFusion analog block. - */ -typedef enum -{ - CMP0 = 0, /*!< Analog module 0, Quad 0, CMB comparator */ - CMP1 = 1, /*!< Analog module 0, Quad 0, TMB comparator */ - CMP2 = 2, /*!< Analog module 0, Quad 1, CMB comparator */ - CMP3 = 3, /*!< Analog module 0, Quad 1, TMB comparator */ - CMP4 = 4, /*!< Analog module 1, Quad 0, CMB comparator */ - CMP5 = 5, /*!< Analog module 1, Quad 0, TMB comparator */ - CMP6 = 6, /*!< Analog module 1, Quad 1, CMB comparator */ - CMP7 = 7, /*!< Analog module 1, Quad 1, TMB comparator */ - CMP8 = 8, /*!< Analog module 2, Quad 0, CMB comparator */ - CMP9 = 9, /*!< Analog module 2, Quad 0, TMB comparator */ - CMP10 = 10, /*!< Analog module 2, Quad 1, CMB comparator */ - CMP11 = 11, /*!< Analog module 2, Quad 1, TMB comparator */ - NB_OF_COMPARATORS = 12 -} comparator_id_t; - -/*-------------------------------------------------------------------------*//** - The comp_hysteresis_t enumeration is used by the ACE_set_comp_hysteresis() - function to set the hysteresis of the analog comparators included in the - SmartFusion analog block. This enumeration provides the allowed values of the - hysteresis parameter of the ACE_set_comp_hysteresis() function. - */ -typedef enum -{ - NO_HYSTERESIS = 0, - HYSTERESIS_10_MV = 1, - HYSTERESIS_30_MV = 2, - HYSTERESIS_100_MV = 3, - NB_OF_HYSTERESIS = 4 -} comp_hysteresis_t ; - -/*-------------------------------------------------------------------------*//** - The comp_reference_t enumeration is used by the ACE_set_comp_reference() - function to select the reference input of the odd numbered analog comparators - included in the SmartFusion analog block. This enumeration provides the allowed - values of the reference parameter of the ACE_set_comp_reference () function. - */ -typedef enum -{ - SDD0_COMP_REF = 0, - SDD1_COMP_REF = 1, - SDD2_COMP_REF = 2, - ADC_IN_COMP_REF = 3, - NB_OF_COMP_REF = 4 -} comp_reference_t; - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_reference() function is used to select the reference input - of a temperature monitor block comparator. The reference input of a temperature - monitor can be an ADC direct input or one of the SDD's output. - - @param comp_id - The comp_id parameter specifies the comparator for which to select the - reference input. Since only temperature monitor block comparators have a - selectable reference input, allowed values are: - - CMP1 - - CMP3 - - CMP5 - - CMP7 - - CMP9 - - CMP11 - - @param reference - The reference parameter specify the signal that will be used as reference - by the comparator. Allowed values are: - - SDD0_COMP_REF - - SDD1_COMP_REF - - SDD2_COMP_REF - - ADC_IN_COMP_REF - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_hysteresis() function is used to set the hysteresis of a - comparator. There are four possible hystereris settings: no hysteresis, - +/-10mV, +/-30mV or +/-100mV. - - @param comp_id - The comp_id parameter specifies the comparator for which this function will - set the hyteresis. - - @param hysteresis - The hysteresis parameter specifies the hysteresis that will be applied to - the comparator's input. Allowed values are: - - NO_HYSTERESIS - - HYSTERESIS_10_MV - - HYSTERESIS_30_MV - - HYSTERESIS_100_MV - - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp() function is used to enable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be enabled by a call - to this function. - */ -void ACE_enable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp() function is used to disable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled by a call - to this function. - */ -void ACE_disable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_rise_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - The function prototypes for the comparator rise interrupt service routines are: - - void ACE_Comp0_Rise_IRQHandler( void ); - - void ACE_Comp1_Rise_IRQHandler( void ); - - void ACE_Comp2_Rise_IRQHandler( void ); - - void ACE_Comp3_Rise_IRQHandler( void ); - - void ACE_Comp4_Rise_IRQHandler( void ); - - void ACE_Comp5_Rise_IRQHandler( void ); - - void ACE_Comp6_Rise_IRQHandler( void ); - - void ACE_Comp7_Rise_IRQHandler( void ); - - void ACE_Comp8_Rise_IRQHandler( void ); - - void ACE_Comp9_Rise_IRQHandler( void ); - - void ACE_Comp10_Rise_IRQHandler( void ); - - void ACE_Comp11_Rise_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - rising interrupts. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_rise_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating rising interrupts. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_rise_irq() function is used to clear rise interrupts. This - function is typically called as part of the rise interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the rise - interrupt. - - Example: - @code - void ACE_Comp1_Rise_IRQHandler( void ) - { - process_rise_irq(); - ACE_clear_comp_rise_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Rise_IRQn ); - } - @endcode - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_fall_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - The function prototypes for the comparator fall interrupt service routines are: - - void ACE_Comp0_Fall_IRQHandler( void ); - - void ACE_Comp1_Fall_IRQHandler( void ); - - void ACE_Comp2_Fall_IRQHandler( void ); - - void ACE_Comp3_Fall_IRQHandler( void ); - - void ACE_Comp4_Fall_IRQHandler( void ); - - void ACE_Comp5_Fall_IRQHandler( void ); - - void ACE_Comp6_Fall_IRQHandler( void ); - - void ACE_Comp7_Fall_IRQHandler( void ); - - void ACE_Comp8_Fall_IRQHandler( void ); - - void ACE_Comp9_Fall_IRQHandler( void ); - - void ACE_Comp10_Fall_IRQHandler( void ); - - void ACE_Comp11_Fall_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - fall interrupts. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_fall_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating fall interrupts. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_fall_irq() function is used to clear fall interrupts. This - function is typically called as part of the fall interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the fall - interrupt. - - Example: - @code - void ACE_Comp1_Fall_IRQHandler( void ) - { - process_fall_irq(); - ACE_clear_comp_fall_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Fall_IRQn ); - } - @endcode - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_comp_status() function returns the current comparator interrupt - status. It returns a 32 bit value indicating which comparators experienced a - fall and/or rise event. These status bits can be cleared using the - ACE_clear_comp_rise_irq() and ACE_clear_comp_fall_irq() functions. - - @return - The return value is a 32 bit numnber where bits 0 to 11 indicate which - comparator experienced a fall event and bits 21 to 23 indicate which - comparator experienced a rise event. - */ -uint32_t ACE_get_comp_status( void ); - -/** @} */ - -/*============================================================================== - ========================== Controlling Thresholds ============================= - =============================================================================*/ -/*=========================================================================*//** - @defgroup group8 Controlling Flags Thresholds - The following functions are used to dynamically control Post Processing Engine - (PPE) flags threshholds. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_is_hysteresis_flag() function indicates if an hysteresis is applied - to the analog input sample value when determining the state of the flag - identified as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if a hysteresis is applied to the channel - sample values as part of determining the state of the flag identified as - parameter. It returns zero if no hysteresis is applied. - */ -uint32_t ACE_is_hysteresis_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_is_under_flag() function indicates whether a flag is triggered when the - monitored analog input falls below the flag's threshold level or above the - flag's threshold level. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if the flag identified as parameter - triggers as a result of the monitored input falling below the flag's - threshold value. - It returns zero if the flag triggers as a result of the monitored input - exceeding the flag's threshold value. - */ -uint32_t ACE_is_under_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_threshold() function is used to adjust the threshold for a - specific post processing engine generated flag. The flag is identified through - the name selected in the ACE configurator software tool. - This function will set a new flag’s threshold value while preserving the - hysteresis specified at configuration time or through a call to - ACE_set_flag_hysteresis(). For example, requesting a 1 volt threshold for an - over flag configured with a 100 millivolts hysteresis will result in the flag - being asserted when the voltage reaches 1.1 volts and deasserted when the - voltage falls below 0.9 volt. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param new_threshold - The new_threshold parameter specifies the new threshold level that must be - reached in order for the flag to be raised. The value of this parameter is - the sample value resulting from a post processing engine conversion of the - desired analog input threshold level. - - Example: - The function below sets the threshold of the flag specified as parameter to - 1 volt. - @code - void set_threshold_to_1V - ( - ace_flag_handle_t flag_handle - ) - { - uint16_t new_threshold; - ace_channel_handle_t channel_handle; - - channel_handle = ACE_get_flag_channel(flag_handle); - new_threshold = ACE_convert_from_mV(channel_handle, 1000); - ACE_set_flag_threshold(flag_handle, new_threshold); - } - @endcode - */ -void ACE_set_flag_threshold -( - ace_flag_handle_t flag_handle, - uint16_t new_threshold -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_hysteresis() function modifies the hysteresis applied to the - analog input channel sample values used to generate the flag specified as - parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - - Example - The example below demonstrates the use of the ACE_set_flag_hysteresis() - function to set a 100mV hysteresis on the OVER_1V flag of the VoltageMonitor - input channel. VoltageMonitor and OVER_1V are names selected in the ACE - configurator for one of the analog inputs and one of the flags associated - with that input. - The method used to compute the adc_hysteresis value will work for all - input types including ABPS inputs where zero Volts is not equivalent to a - PPE sample value of zero. - - @code - ace_channel_handle_t channel_handle; - ace_flag_handle_t flag_handle; - uint16_t adc_hysteresis; - uint16_t upper_limit; - uint16_t lower_limit; - - channel_handle = VoltageMonitor; - flag_handle = VoltageMonitor_OVER_1V; - - upper_limit = ACE_convert_from_mV(channel_handle, 100); - lower_limit = ACE_convert_from_mV(channel_handle, 0); - - if (upper_limit > lower_limit) - { - adc_hysteresis = upper_limit - lower_limit; - } - else - { - adc_hysteresis = lower_limit - upper_limit; - } - - ACE_set_flag_hysteresis(flag_handle, adc_hysteresis); - @endcode - */ -void -ACE_set_flag_hysteresis -( - ace_flag_handle_t flag_handle, - uint16_t adc_hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_assertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become asserted. It is - used in conjunction with the ACE_set_flag_deassertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value that - must be reached for the flag, identified through the flag_handle parameter, - to become asserted. The PPE sample value is always a 12 bits sample value - regardless of the configuration of the ADC used to sample the input channel. - */ -void ACE_set_flag_assertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_deassertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become deasserted. It - is used in conjunction with the ACE_set_flag_assertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value - that must be reached for the flag, identified through the flag_handle - parameter, to become de-asserted. The PPE sample value is always a 12 bits - sample value regardless of the configuration of the ADC used to sample the - input channel. - */ -void ACE_set_flag_deassertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_channel_hysteresis() function sets the hysteresis applied to - analog input channel sample values when generating flags. It sets the - hysteresis for all flags generated based on the value of the analog input - channel identified by the channel handle passed as first parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - */ -void -ACE_set_channel_hysteresis -( - ace_channel_handle_t channel_handle, - uint16_t adc_hysteresis -); - - -/** @} */ -/*-------------------------------------------------------------------------*//** - * - */ - -/*============================================================================== - ================================== Flags ====================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group6 Post Processing Engine Flags - The following functions are used to control interrupts generated by the ACE's - Post Processing Engine (PPE) when monitored inputs rise above or fall below - thresholds specified in the ACE configurator software tool. - @{ - *//*=========================================================================*/ - - /*-------------------------------------------------------------------------*//** - These constant definitions are the return values of the ACE_get_flag_status() - function. They specify the status of the Post Processing Engine (PPE) flag. - */ -#define UNKNOWN_FLAG (int32_t)(-1) -#define FLAG_ASSERTED (int32_t)1 -#define FLAG_NOT_ASSERTED (int32_t)0 - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_flag_handle function when the driver - can’t find a valid handle for the Post Processing Engine (PPE) flag. - */ -#define INVALID_FLAG_HANDLE NB_OF_ACE_FLAG_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_handle() function returns the handle of the flag identified - by the flag name passed as parameter. The flag handle obtained through this - function is then used as parameter to other flag control functions to identify - which flag is to be controlled by the called function. - - @param p_sz_full_flag_name - The p_sz_full_flag_name parameter is a pointer to a zero-terminated string - holding the name of the flag as specified in the ACE configurator. The full - name of a flag contains both the name of the monitored input channel and the - name of the flag generated based the level of that input separated by ":". - For example, the full name for the flag called "CriticalOver" raised when - the input channel called "MainSupply" reaches a critical level would be - named "MainSupply:CriticalOver". - - @return - The ACE_get_flag_handle() returns the flag handle associated with the flag - name passed as parameter. It returns INVALID_FLAG_HANDLE when the flag name - is invalid and not recognized by the ACE driver. - */ -ace_flag_handle_t -ACE_get_flag_handle -( - const uint8_t * p_sz_full_flag_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_status() function returns the current status of the flag - specified as parameter. The flag is identified through the name specified in - the ACE configurator when the flag was created. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_status() function returns one of the following values - depending on the current status of the flag: - - FLAG_ASSERTED if the flag is raised/asserted. - - FLAG_NOT_ASSERTED if the flag is not asserted. - - UNKNOWN_FLAG if the flag name is not recognized by the driver. -*/ -int32_t -ACE_get_flag_status -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_channel_flags_irq() function enables all flags generated based - on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are enabled to - generate interrupts by this function. It enables flag interrupts both at the - ACE PEE flag and Cortex-M3 interrupt controller levels. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_enable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_channel_flags_irq() function disables all flags generated - based on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are disabled from - generating interrupts by this function. The interrupt is only disabled at the - ACE PPE flag level in order to avoid disabling other cahnnel's flag interrupts - which may happen to use the same ACE threshold interrupt line. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_disable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_channel_flags_irq() function clears all interrupts generated by - flags associated with the analog input channel passed as parameter. Interrupt - generated by flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are cleared by - this function. This function would typically be used before enabling the flag - interrupts in order to ignore past events. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_clear_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_flag_irq() function enables the ACE post processing engine (PPE) - generated flags specified as parameter to interrupt the Cortex-M3 processor. - It enables flag interrupts both at the ACE PPE flag and Cortex-M3 interrupt - controller levels. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_enable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_flag_irq() function disables ACE post processing engine (PPE) - generated flags from interrupting the Cortex-M3. The interrupt is only - disabled at the ACE PPE flag level in order to avoid disabling other flags - interrupts which may happen to use the same ACE threshold interrupt line. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_disable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_flag_irq() function clears the interrupt for the flag specified - as parameter. This function would typically be used before enabling the flag - interrupt in order to ignore past events. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_clear_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_name() function returns the name of the flag identified by - the flag handle passed as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_name() function returns a pointer to a zero-terminated - string containing the name of the flag identified by the flag handle passed - as parameter. It returns 0 if the flag handle passed as parameter is invalid. - */ -const uint8_t * -ACE_get_flag_name -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_channel() function returns the handle of the channel - monitored in order to generate the flag identified by the flag handle passed - as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_channel() function returns a channel handle identifying the - analog input channel monitored by the flag passed as parameter. - */ -ace_channel_handle_t -ACE_get_flag_channel -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_flag_count() function returns the total number of flags - associated with the input channel specified by the channel_handle parameter. - It indicates how many flags are generated based on the value of the specified - analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_channel_flag_count() function returns the total number of flags - that are generated based on the value of the specified analog input channel. - The ACE_get_channel_flag_count() function returns 0 if no input channels were - configured. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -uint32_t -ACE_get_channel_flag_count -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_first_flag() function retrieves the handle of the first - flag associated with the analog input channel identified by the channel handle - passed as parameter. It also initialises the value of the iterator variable - pointed to by the second function parameter. The iterator can be used - subsequently as a parameter to the ACE_get_channel_next_flag() function to - iterate through all flags associated with the analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The - value of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the - list of flags associated with the analog input channel. - - @return - The ACE_get_channel_first_flag() function returns a flag handle identifying - one of the flags generated based on the value of the analog input channel - identified by the channel_handle parameter. It returns INVALID_FLAG_HANDLE - if no flags are generated based on the analog input channel input or if the - channel handle is invalid. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_first_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_next_flag() function retrieves the handle of a flag - associated with the analog input channel identified by the channel handle - passed as parameter. The retrieved flag handle is the next one in the driver's - internal flag list based on the iterator parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The value - of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the list - of flags associated with the analog input channel. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_next_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) flag handler functions. These functions are registered - with the ACE driver and associated with a particular flag through the - ACE_register_flag_isr() function. The ACE driver will call the flag handler - function when the associated flag is raised. - - Declaring and Implementing PPE Flag Handler Functions - PPE flag handler functions should follow the following prototype: - void my_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE flag handler is unimportant. You can use any name of - your choice for the PPE flag handler. - The flag_handle parameter passes the handle of the raised flag to the flag - handler function. - */ -typedef void (*flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_flag_isr() function is used to register a handler function - with the ACE driver. The registered function will be called by the ACE driver - when the associated flag is raised by the ACE post processing engine. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param flag_isr - The flag_isr parameter is a pointer to a flag handler function with the - following prototype: - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - - @code - void my_critical_handler( void ); - - void system_init( void ) - { - ace_flag_handle_t flag_handle; - - flag_handle = ACE_get_flag_handle( "MainSupply:CriticalLevel" ); - ACE_register_flag_isr( flag_handle, my_critical_handler ); - ACE_enable_flag_irq( flag_handle ); - } - - void my_critical_handler( ace_flag_handle_t flag_handle ) - { - panic( flag_handle ); - } - - @endcode - */ -void ACE_register_flag_isr -( - ace_flag_handle_t flag_handle, - flag_isr_t flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) channel flag handler functions. These functions are - registered with the ACE driver and associated with a particular ADC input - channel through the ACE_register_channel_flags_isr() function. The ACE driver - will call the channel flags handler function when one of the flags for the - associated ADC input channel is raised. - - Declaring and Implementing PPE Channel Flag Handler Functions - PPE channel flag handler functions should follow the following prototype: - void my_channel_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE channel flag handler is unimportant. You can use - any name of your choice for the PPE channel flag handler. The flag_handle - parameter passes the handle of the raised flag to the channel flag handler - function. - */ -typedef void (*channel_flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_channel_flags_isr() function is used to register a flag - interrupt handler function with the ACE driver. The registered interrupt - handler will be called by the ACE driver when one of the flag generated based - on the value of the analog input channel identified by the channel handle - passed as parameter is asserted. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param channel_flag_isr - The channel_flag_isr parameter is pointer to a function taking a flag handle - as parameter. - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - Example - The example below demonstrates the use of the ACE_register_channel_flags_isr() - function in a system where the ACE is configured to have an analog input - channels named "MainSupply" with one flag named "Critical" generated based - on the value of "MainSupply" channel. The names "MainSupply" and "Critical" - were user selected in the ACE configurator. - @code - void main_supply_handler (ace_flag_handle_t flag_handle); - - void system_init(void) - { - ACE_register_channel_flag_isr(MainSupply, main_supply_handler); - ACE_enable_channel_flags_irq(MainSupply); - } - - void main_supply_handler (ace_flag_handle_t flag_handle) - { - if (MainSupply_Critical == flag_handle) - { - panic(flag_handle); - } - } - - @endcode -*/ -void ACE_register_channel_flags_isr -( - ace_channel_handle_t channel_handle, - channel_flag_isr_t channel_flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) global flag handler functions. These functions are - registered with the ACE driver through the ACE_register_global_flags_isr() - function. The ACE driver will call the global flags handler function when any - flag for any ADC input channel is raised. - - Declaring and Implementing Global Flag Handler Functions - PPE global flag handler functions should follow the following prototype: - void my_global_flag_handler( - ace_flag_handle_t flag_handle, - ace_channel_handle_t channel_handle - ); - The actual name of the PPE global flag handler is unimportant. You can use any - name of your choice for the PPE global flag handler. The flag_handle parameter - passes the handle of the raised flag to the global flag handler function. The - channel_handle parameter passes the handle of the channel for which the flag - was raised to the global flag handler function. - - */ -typedef void (*global_flag_isr_t)( ace_flag_handle_t flag_handle, ace_channel_handle_t channel_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_global_flags_isr() function is used to register a global - flag handler function with the ACE driver. The registered global handler will - be called when any flag interrupt is generated. - - @param global_flag_isr - The global_flag_isr parameter is a pointer to a function taking a flag - handle and channel handle as parameter. - */ -void ACE_register_global_flags_isr -( - global_flag_isr_t global_flag_isr -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group11 Conversion Functions - The following functions are used to convert an ADC sample value to a real - world unit. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_convert_adc_input_to_mV() function converts an ADC sample value into - the value in millivolts of the voltage seen at ADC input. It does not account - for prescaling taking place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_adc_input_to_mV() returns the number of millivolts derived - from the ADC sample value passed as parameter. - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mV() function converts a PPE sample value into milli-Volts. - It handles prescaling adjusments based on ACE configuration for ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_to_mV() returns the number of millivolts derived from the - PPE sample value passed as parameter. The returned value can be either - positive or negative since prescaling is accounted for in the conversion. - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mA() function converts a PPE sample value into milli-Amps. - The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a current monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a current monitor analog block. - - @return - The ACE_convert_to_mA() returns the number of milliamps derived from the - PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Kelvin() function converts a PPE sample value into degrees - Kelvin. The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Kelvin() returns the number of degrees Kelvin derived - from the PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Celsius() function converts a PPE sample value into tenths - of degrees Celsius. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Celsius() returns the number of tenths of degrees Celsius - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Fahrenheit() function converts a PPE sample value into - degrees Fahrenheit. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Fahrenheit() returns the number of degrees Fahrenheit - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_mV_to_adc_value() function converts a voltage value given in - milli-Volts into the ADC sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function is intended for use when directly controlling the ADC, not when - using samples read from the PPE. It does not account for prescaling taking - place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated ADC sample result value. - - @return - The ACE_convert_mV_to_adc_value() returns the ADC sample value that would be - produced if the analog input channel identified by channel_handle was set to - the voltage value passed as second parameter. - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mV() function converts a voltage value given in - milli-Volts into the PPE sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function handles prescaling adjusments based on ACE configuration for - ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mV() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - voltage value passed as second parameter. - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mA() function converts a current value given in - milli-Amps into the PPE sample value that would result from sampling this - current value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a current monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param current - The current parameter is the milli-Amps current value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mA() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - current value passed as second parameter. - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Kelvin() function converts a temperature value given in - degrees Kelvin into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Kelvin temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Kelvin() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Celsius() function converts a temperature value given in - degrees Celsius into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Celsius temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Celsius() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Fahrenheit() function converts a temperature value given - in degrees Fahrenheit into the PPE sample value that would result from sampling - this temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Fahrenheit temperature value for - which we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Fahrenheit() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_translate_pdma_value() function translates PDMA sampling values, - received from the ACE via PDMA transfers, into input channel ID and PPE - sample value. - The PDMA sampling values are generated by the ACE as a result of selecting - "Send result to DMA" in the ACE configurator analog input configuration. The - PDMA sampling values can be either raw ADC values, filtered values or the - result of a linear transformation. - The PDMA sampling values are obtained by configuring the PDMA controller to - transfer data from the ACE into a memory buffer. The ACE_translate_pdma_value() - function is used to interpret the content of that memory buffer. - - Please note that the translation of PDMA data containing raw ADC values from - ABPS inputs will result in sample values with an unexpected polarity. - The returned sample value will have the opposite polarity to the actual analog - value seen on the ABPS input. This is due to the internal characteristics of - the analog front end that are normally hidden by the PPE processing of ADC raw - samples. The translation of raw ADC values from analog inputs other than ABPS - inputs will result in correct sample values. - - @param pdma_value - The pdma_value parameter is a 32-bit value received from the ACE through a - peripheral DMA transfer. - - @param channel_id - The channel_id parameter is a pointer to an ADC channel ID variable. It is - used to return the ID of the ADC channel from which the PPE sample value - was generated from. This parameter can be set to zero if retrieving the - channel ID is not required. - - @return - The ACE_translate_pdma_value() returns the PPE sample value extracted from - the PDMA sampling value. - - Example: - @code - uint16_t ppe_value; - uint16_t pdma_value; - adc_channel_id_t channel_id; - ace_channel_handle_t channel_handle; - - pdma_value = get_next_pdma_ace_sample(); - ppe_value = ACE_translate_pdma_value(pdma_value, &channel_id); - channel_handle = ACE_get_input_channel_handle(channel_id); - if (channel_handle != INVALID_CHANNEL_HANDLE) - { - display_value(channel_handle, ppe_value); - } - @endcode - - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group12 Dynamic Linear Transform Control Functions - The following functions are used to dynamically adjust the linear transform - applied to analog input samples by the post processing engine: - - ACE_get_default_m_factor() - - ACE_get_default_c_offset() - - ACE_set_linear_transform() - The post processing engine performs a linear transform on analog input samples - obtained from the sample sequencing engine. The main purpose of this linear - transform is to apply part specific factory calibration to the analog samples - in order to achieve high accuracy. A second user specified linear transform - can also be optionally applied to the analog samples. This second linear - transform can be used to adjust for board level calibration or application - specific tuning. The functions described in this section apply to the user - defined transform. Factory calibration will not be affected by the use of the - ACE_set_linear_transform() function. - Note: - The post processing engine actually only performs one single linear - transform on analog samples. This transform takes into account factory - calibration and the user defined transform. The applied y = m.x + c - transform uses an m factor equal to m1.m2.mext and c offset equal to - (m2.c1.mext) + (c2.mext) where m1 and c1 are the factory calibration factor - and offset; m2 and c2 are the user defined transform factor and offset; and - mext is a factory calibration factor depending on the reference voltage - used by the ADC generating the sample. - @{ - *//*=========================================================================*/ - - -/*------------------------------------------------------------------------*//** - The ACE_get_default_m_factor() function retrieves the default value of the m - factor of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform m factor default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_m_factor() function returns the user transform m factor - default value. It is a signed 16-bit number representing a factor in the - range -2 to +1.99993896484375. The value of the m factor is obtained by - multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_m_factor -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_get_default_c_offset() function retrieves the default value of the c - offset of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform c offset default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_c_offset() function returns the user linear transform’s - c offset default value. It is a signed 16-bit number representing a factor - in the range -2 to +1.99993896484375. The value of the c offset is obtained - by multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_c_offset -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_set_linear_transform() function allows adjusting the user defined - linear transform applied to analog input samples by the post processing - engine. The linear transform is of the form y = m.x + b where the m factor - and c offset are in the range -2 to +1.99993896484375. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param m2 - The m2 parameter specifies the user defined transform’s m factor. It is a - signed 16-bit number representing a factor in the range -2 to - +1.99993896484375. The value of the m2 factor is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x7000 - represents a 1.75 factor and a value of 0xE000 represents a -0.5 factor. - - @param c2 - The c2 parameter specifies the user defined transform’s c offset. It is a - signed 16-bit number representing an offset in the range -2 to - +1.99993896484375. The value of the c2 offset is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x1000 represents - a 0.25 offset and a value of 0xB000 represents a -1.25 offset. - - @code - void reset_to_default(ace_channel_handle_t channel_handle) - { - int16_t m; - int16_t c; - - m = ACE_get_default_m_factor(channel_handle); - c = ACE_get_default_c_offset(channel_handle); - ACE_set_linear_transform(channel_handle, m, c); - } - @endcode - */ -void ACE_set_linear_transform -( - ace_channel_handle_t channel_handle, - int16_t m2, - int16_t c2 -); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h deleted file mode 100644 index 2621f5375..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h +++ /dev/null @@ -1,622 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2841 $ - * SVN $Date: 2010-07-20 18:10:00 +0100 (Tue, 20 Jul 2010) $ - */ - -/*=========================================================================*//** - @mainpage ACE Configurator data provided to ACE Driver. - - @section intro_sec Introduction - This file contains the definition of data structures used by the ACE - Configurator software tool for sharing information about the ACE configuration - with the ACE driver. It also contains the API for accessor functions used by - the ACE driver to extract relevant information from these data structures. - *//*=========================================================================*/ -#ifndef __MSS_ACE_CONFIGURATOR_H_ -#define __MSS_ACE_CONFIGURATOR_H_ - -#include "mss_ace.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - Post Processing Engine (PPE) flags IDs. - */ -typedef enum -{ - PPE_FLAGS0_0 = 0, - PPE_FLAGS0_1 = 1, - PPE_FLAGS0_2 = 2, - PPE_FLAGS0_3 = 3, - PPE_FLAGS0_4 = 4, - PPE_FLAGS0_5 = 5, - PPE_FLAGS0_6 = 6, - PPE_FLAGS0_7 = 7, - PPE_FLAGS0_8 = 8, - PPE_FLAGS0_9 = 9, - PPE_FLAGS0_10 = 10, - PPE_FLAGS0_11 = 11, - PPE_FLAGS0_12 = 12, - PPE_FLAGS0_13 = 13, - PPE_FLAGS0_14 = 14, - PPE_FLAGS0_15 = 15, - PPE_FLAGS0_16 = 16, - PPE_FLAGS0_17 = 17, - PPE_FLAGS0_18 = 18, - PPE_FLAGS0_19 = 19, - PPE_FLAGS0_20 = 20, - PPE_FLAGS0_21 = 21, - PPE_FLAGS0_22 = 22, - PPE_FLAGS0_23 = 23, - PPE_FLAGS0_24 = 24, - PPE_FLAGS0_25 = 25, - PPE_FLAGS0_26 = 26, - PPE_FLAGS0_27 = 27, - PPE_FLAGS0_28 = 28, - PPE_FLAGS0_29 = 29, - PPE_FLAGS0_30 = 30, - PPE_FLAGS0_31 = 31, - PPE_FLAGS1_0 = 32, - PPE_FLAGS1_1 = 33, - PPE_FLAGS1_2 = 34, - PPE_FLAGS1_3 = 35, - PPE_FLAGS1_4 = 36, - PPE_FLAGS1_5 = 37, - PPE_FLAGS1_6 = 38, - PPE_FLAGS1_7 = 39, - PPE_FLAGS1_8 = 40, - PPE_FLAGS1_9 = 41, - PPE_FLAGS1_10 = 42, - PPE_FLAGS1_11 = 43, - PPE_FLAGS1_12 = 44, - PPE_FLAGS1_13 = 45, - PPE_FLAGS1_14 = 46, - PPE_FLAGS1_15 = 47, - PPE_FLAGS1_16 = 48, - PPE_FLAGS1_17 = 49, - PPE_FLAGS1_18 = 50, - PPE_FLAGS1_19 = 51, - PPE_FLAGS1_20 = 52, - PPE_FLAGS1_21 = 53, - PPE_FLAGS1_22 = 54, - PPE_FLAGS1_23 = 55, - PPE_FLAGS1_24 = 56, - PPE_FLAGS1_25 = 57, - PPE_FLAGS1_26 = 58, - PPE_FLAGS1_27 = 59, - PPE_FLAGS1_28 = 60, - PPE_FLAGS1_29 = 61, - PPE_FLAGS1_30 = 62, - PPE_FLAGS1_31 = 63, - PPE_FLAGS2_0 = 64, - PPE_FLAGS2_1 = 65, - PPE_FLAGS2_2 = 66, - PPE_FLAGS2_3 = 67, - PPE_FLAGS2_4 = 68, - PPE_FLAGS2_5 = 69, - PPE_FLAGS2_6 = 70, - PPE_FLAGS2_7 = 71, - PPE_FLAGS2_8 = 72, - PPE_FLAGS2_9 = 73, - PPE_FLAGS2_10 = 74, - PPE_FLAGS2_11 = 75, - PPE_FLAGS2_12 = 76, - PPE_FLAGS2_13 = 77, - PPE_FLAGS2_14 = 78, - PPE_FLAGS2_15 = 79, - PPE_FLAGS2_16 = 80, - PPE_FLAGS2_17 = 81, - PPE_FLAGS2_18 = 82, - PPE_FLAGS2_19 = 83, - PPE_FLAGS2_20 = 84, - PPE_FLAGS2_21 = 85, - PPE_FLAGS2_22 = 86, - PPE_FLAGS2_23 = 87, - PPE_FLAGS2_24 = 88, - PPE_FLAGS2_25 = 89, - PPE_FLAGS2_26 = 90, - PPE_FLAGS2_27 = 91, - PPE_FLAGS2_28 = 92, - PPE_FLAGS2_29 = 93, - PPE_FLAGS2_30 = 94, - PPE_FLAGS2_31 = 95, - PPE_FLAGS3_0 = 96, - PPE_FLAGS3_1 = 97, - PPE_FLAGS3_2 = 98, - PPE_FLAGS3_3 = 99, - PPE_FLAGS3_4 = 100, - PPE_FLAGS3_5 = 101, - PPE_FLAGS3_6 = 102, - PPE_FLAGS3_7 = 103, - PPE_FLAGS3_8 = 104, - PPE_FLAGS3_9 = 105, - PPE_FLAGS3_10 = 106, - PPE_FLAGS3_11 = 107, - PPE_FLAGS3_12 = 108, - PPE_FLAGS3_13 = 109, - PPE_FLAGS3_14 = 110, - PPE_FLAGS3_15 = 111, - PPE_FLAGS3_16 = 112, - PPE_FLAGS3_17 = 113, - PPE_FLAGS3_18 = 114, - PPE_FLAGS3_19 = 115, - PPE_FLAGS3_20 = 116, - PPE_FLAGS3_21 = 117, - PPE_FLAGS3_22 = 118, - PPE_FLAGS3_23 = 119, - PPE_FLAGS3_24 = 120, - PPE_FLAGS3_25 = 121, - PPE_FLAGS3_26 = 122, - PPE_FLAGS3_27 = 123, - PPE_FLAGS3_28 = 124, - PPE_FLAGS3_29 = 125, - PPE_FLAGS3_30 = 126, - PPE_FLAGS3_31 = 127, - PPE_SFFLAGS_0 = 128, - PPE_SFFLAGS_1 = 129, - PPE_SFFLAGS_2 = 130, - PPE_SFFLAGS_3 = 131, - PPE_SFFLAGS_4 = 132, - PPE_SFFLAGS_5 = 133, - PPE_SFFLAGS_6 = 134, - PPE_SFFLAGS_7 = 135, - PPE_SFFLAGS_8 = 136, - PPE_SFFLAGS_9 = 137, - PPE_SFFLAGS_10 = 138, - PPE_SFFLAGS_11 = 139, - PPE_SFFLAGS_12 = 140, - PPE_SFFLAGS_13 = 141, - PPE_SFFLAGS_14 = 142, - PPE_SFFLAGS_15 = 143, - PPE_SFFLAGS_16 = 144, - PPE_SFFLAGS_17 = 145, - PPE_SFFLAGS_18 = 146, - PPE_SFFLAGS_19 = 147, - PPE_SFFLAGS_20 = 148, - PPE_SFFLAGS_21 = 149, - PPE_SFFLAGS_22 = 150, - PPE_SFFLAGS_23 = 151, - PPE_SFFLAGS_24 = 152, - PPE_SFFLAGS_25 = 153, - PPE_SFFLAGS_26 = 154, - PPE_SFFLAGS_27 = 155, - PPE_SFFLAGS_28 = 156, - PPE_SFFLAGS_29 = 157, - PPE_SFFLAGS_30 = 158, - PPE_SFFLAGS_31 = 159, - NB_OF_PPE_FLAGS = 160 -} ppe_flag_id_t; - -/*-------------------------------------------------------------------------*//** - Flag types. - The following defines are used to indicate the type of flag selected in the - ACE configurator. - */ -/** - A flag configured as BASIC_THRESHOLD_OVER will be asserted when the value of - the input channel exceeds the value of the flag threshold. The flag will be - de-asserted once the value of the input channel falls back under the threshold - value. No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_OVER 0u - -/** - A flag configured as BASIC_THRESHOLD_UNDER will be asserted when the value of - the input channel falls under the value of the flag threshold. The flag will be - de-asserted once the value of the input channel exceeds the threshold value. - No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_UNDER 1u - -/** - A flag configured as STATE_FILTERED_OVER will be asserted when n consecutive - samples of the analog input are seen to exceed the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen below the flag - threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_OVER 2u - -/** - A flag configured as STATE_FILTERED_UNDER will be asserted when n consecutive - samples of the analog input are seen below the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen to exceed the - flag threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_UNDER 3u - -/** - A flag configured as DUAL_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value plus the hysteresis value. - The flag will be deasserted when the value of the input channel falls under the - threshold value minus the hysteresis value. - */ -#define DUAL_HYSTERESIS_OVER 4u - -/** - A flag configured as DUAL_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value minus the hysteresis value. - The flag will be deasserted when the value of the input channel exceeds the - threshold value plus the hysteresis value. - */ -#define DUAL_HYSTERESIS_UNDER 5u - -/** - A flag configured as IPMI_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value. The flag will be deasserted - when the value of the input channel falls under the threshold value minus the - hysteresis value. - */ -#define IPMI_HYSTERESIS_OVER 6u - -/** - A flag configured as IPMI_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value. The flag will be - deasserted when the value of the input channel exceeds the threshold value - plus the hysteresis value. - */ -#define IPMI_HYSTERESIS_UNDER 7u - -/*-------------------------------------------------------------------------*//** - State filtered flag configuration. - */ -typedef struct __state_filtering_cfg -{ - /** - Number of consecutive samples required for flag assertion. - */ - uint8_t assert_samples; - - /** - Number of consecutive samples required for flag deassertion. - */ - uint8_t deassert_samples; -} state_filtering_cfg_t; - -/*-------------------------------------------------------------------------*//** - Post Processing Engine generated flag descriptor. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying the flag described by this - structure. This unique flag name is the name selected in the ACE configurator - software tool when creating a flag. - The flag unique name contains both the name of the monitored input channel - and the name of the flag generated based the level of that input separated - by ":". For example, the unique name for the flag called "CriticalOver" - raised when the input channel called "MainSupply" reaches a critical level - would be named "MainSupply:CriticalOver". - */ - const uint8_t * p_sz_flag_name; - - /** - The flag_id element identifies which PPE hardware flag will be asserted - when the flag conditions are found to be met by the Post Processing Engine. - This flag_id is typically used by the ACE driver to determine which ACE - register is used to enable, disable and clear interrupts on the associated - flag. - */ - ppe_flag_id_t flag_id; - - /** - The flag_type element specifies the type of the described flag. It is - specified using one of the following: - - BASIC_THRESHOLD_OVER - - BASIC_THRESHOLD_UNDER - - STATE_FILTERED_OVER - - STATE_FILTERED_UNDER - - DUAL_HYSTERESIS_OVER - - DUAL_HYSTERESIS_UNDER - - IPMI_HYSTERESIS_OVER - - IPMI_HYSTERESIS_UNDER - */ - uint8_t flag_type; - - /** - PPE RAM offset of flag threshold level. - This is the 32-bit word offset within the Post Processing Engine RAM where - the threshold associated with this flag is stored. This is used to allow - the ACE driver dynamically modifying the threshold beyond which a flag is - asserted. - In the case of hysteresis flags, threshold_ppe_offset indicates the - start location of two consecutive PPE RAM words containing the ADC value - of the hysteresis low limit followed by the ADC value for the high - hysteresis limit. - */ - uint16_t threshold_ppe_offset; - - /** - The default_threshold element specifies the value of the flag's threshold - selected in the ACE Configurator. It is the ADC value for which the flag - would be raised if hysteresis was not applied. - */ - uint16_t default_threshold; - - /** - The flag_properties takes a different meaning depending whether the flag is - an hysteresis flag or a state filtered flag. - - Hysteresis flags: - The flag_properties element specifies the ADC value to be applied as - hysteresis to the threshold value that was selected in the ACE Configurator. - A non-zero value indicates that an hysteresis must be applied and that - threshold_ppe_offset refers to the first of the two ADC values defining - the hysteresis applied to the input signal. - - State filtered flags: - The flag_properties element specifies the number of consecutive samples that - must be over or under the threshold value for the flag state to change. - */ - uint16_t flag_properties; - - /** - The channel_handle element specifies the monitored analog input channel. - It can be used as parameter to a call to function ACE_get_ppe_sample() in - order to read the current value of the analog input channel which caused - the flag described by this structure to be raised. - */ - ace_channel_handle_t channel_handle; - -} ppe_flag_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_procedure_desc_t structure is used as a procedure descriptor. It - contains all information required by the ACE driver to use and manage an ACE - procedure that was created using the ACE Configurator software tool. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying an ACE procedure. - This procedure name is the one selected when created procedures using the - ACE Configurator software tool. - */ - const uint8_t * p_sz_proc_name; - - /** - Sample Sequencing Engine procedure loop start program counter value. - */ - uint16_t sse_loop_pc; - - /** - Sample Sequencing Engine microcode offset. - This is the 16-bit instruction offset from which the SSE microcode for the - procedure must be loaded at into the ACE SSE RAM. - This is also the value that must be writtent into one of the ACE's SSE program - counter registers in order to start the procedure after having loaded its - microcode into SSE RAM. The actual program counter register written depends - on the analog module used by the procedure. It is determined by the value - of this structure's sse_pc_id element. - */ - uint16_t sse_load_offset; - - /** - Sample Sequencing Engine microcode length. - This is the number of 16-bit SSE instructions that must be loaded into - SSE RAM in order to load the procedure into the ACE. - */ - uint16_t sse_ucode_length; - - /** - Pointer to ucode. - */ - const uint16_t * sse_ucode; - - /** - SSE program counter ID. - This value identifies whether the procedure is used to control analog - module 0, 1 or 2. It is used to know which SSE program counter should - be set when starting the procedure. - */ - uint8_t sse_pc_id; -} ace_procedure_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_channel_desc_t structure is used as an analog input channel - descriptor. It contains the name of a channel as selected in the ACE - Configurator software tool and the identifier used to identify the ADC channel - to which the analog input signal is connected. - */ -typedef struct -{ - /** - Analog input signal name as selected in the ACE Configurator software tool. - */ - const uint8_t * p_sz_channel_name; - - /** - Analog block input channel connected to the input signal. - */ - adc_channel_id_t signal_id; - - /** - Offset into Post Processing Engine RAM where the result of post processing - on sample for the signal will be stored. - */ - uint16_t signal_ppe_offset; - - /** - Number of PPE generated flags associated with the analog input channel - described by this structure. The nb_of_flags specifies the number of items - found in the p_flags_array array. - */ - uint16_t nb_of_flags; - - /** - The p_flags_array element is a pointer to an array of indexes into the - g_ppe_flags_desc_table flag descriptors table. The array it points to - lists the flags generated base don the value of the analog input channel - described by this structure. - */ - const uint16_t * p_flags_array; - -} ace_channel_desc_t; - -/*-------------------------------------------------------------------------*//** - struct ace_config_desc_t - The ace_config_descr_t structure is used to provide information about the - configuration of the ACE and analog block. A single instance of this structure - is intended to be used to inform the ACE driver of the ACE configuration - seleted using the ACE Configurator software tool and programmed into the ACE - hardware at system boot time. - */ -typedef struct -{ - /*-------------------------------------------------------------------------- - * Procedures information - */ - /** - Procedure descriptors table location. - This is a pointer to an array of procedure descriptors. - @see nb_of_procedures - */ - ace_procedure_desc_t * proc_descr_table; - - /** - Total number of available procedures. This indicates the number of elements - of the procedure descriptor array. - @see proc_descr_table - */ - uint16_t nb_of_procedures; - - /** - Number of procedures loaded into the ACE hardware at system boot time. - @see boot_loaded_proc_idx_list - */ - uint16_t nb_boot_loaded_proc; - /** - Pointer to list of procedures loaded into the ACE hardware at system boot - time. That list contains the indexes into the procedure descriptors array - of the procedures loaded into the ACE hardware. - @see nb_boot_loaded_proc - */ - uint16_t * boot_loaded_proc_idx_list; - - /*-------------------------------------------------------------------------- - * Analog to Digital Converter signals - */ - /** - Total number of configured analog input signals. - This is the number of analog input signals that were added to the ACE - configuration using the ACE Configurator software tool. It is also the - number of elements in the signal descriptor table pointed to by this - structure's signals_descr_table field. - @see signals_descr_table - */ - uint16_t nb_of_signals; - - /** - Signal descriptors table location. - This is a pointer to an array of signal descriptors describing every - configured analog input signals. - @see nb_of_signals - */ - ace_channel_desc_t * signals_descr_table; - - /*-------------------------------------------------------------------------- - * One Bit DACs - */ - /** - One Bit DAC (OBD) names as specified in ACE configurator software tool. - This array is indexed on the analog block number. i.e. sz_obd_names[0] - contains the name used to identify the OBD contained in analog module 0. - A value of 0 in this array indicates that no name was assigned to the - associated OBD. - */ - const uint8_t * sz_obd_names[3]; - - /*-------------------------------------------------------------------------- - * PPE generated flags - */ - /** - Flag descriptors array location. - This is a pointer to an array of ppe_flag_desc_t structures describing the - properties of each of the flags generated by the Post Processing Engine. - The size of that array is specified by the nb_of_flags element of this - structure. - */ - ppe_flag_desc_t * flags_descr_table; - - /** - Number of flags used in the ACE Configurator generated configuration. - */ - uint8_t nb_of_flags; - - /*-------------------------------------------------------------------------- - * Analog comparators - */ - /** - * - */ -} ace_config_desc_t; - - -/*-------------------------------------------------------------------------*//** - The ace_adc_config_t data structure is used by the ACE configurator to inform - the ACE driver of an analog to digital converter's configuration. - */ -typedef struct -{ - /** - ADC resolution. Values can be 256, 1024 or 4096 depending whether the ADC - is configured for 8, 10 or 12 bits. - */ - uint16_t adc_resolution; - - /** - VA_REF value in milli-Volts. This should be set to 2560 if internal VAREF - is used. - */ - uint16_t va_ref; - -} ace_adc_config_t; - -/*-------------------------------------------------------------------------*//** - The ppe_transforms_desc_t data structure is used by the ACE configurator to - inform the ACE driver of the location of the "m" factor and "c" offset used - by the PPE to perform a linear transform of the form y = m*x + c. This linear - transform is used to apply calibration to the ADC samples. It can also include - a user defined linear transform specified by the user using the ACE - configurator. The factor and offset of the user defined transform is included - in the default_m2 and default_c2 items. - */ -typedef struct -{ - /** - Offset into Post Processing Engine RAM where the linear transform m factor - is stored. - */ - uint16_t m_ppe_offset; - - /** - Offset into Post Processing Engine RAM where the linear transform c offset - is stored. - */ - uint16_t c_ppe_offset; - - /** - Default value of the user defined linear transform m2 factor. - */ - int16_t default_m2; - - /** - Default value of the user defined linear transform c2 offset. - */ - int16_t default_c2; -} ppe_transforms_desc_t; - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_CONFIGURATOR_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h deleted file mode 100644 index 431f28f78..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * Manufacturing Test Data data structures. - * This header files specified the layout of the various data structures used - * to store manaufacturing test data within eNVM. - * - * SVN $Revision: 700 $ - * SVN $Date: 2009-03-13 13:22:03 +0000 (Fri, 13 Mar 2009) $ - */ -#ifndef MTD_DATA_H -#define MTD_DATA_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Analog block specifications - */ -#define NB_OF_QUADS 6 -#define NB_OF_ABPS_PER_QUAD 2 -#define TOTAL_NB_OF_ABPS (NB_OF_QUADS * NB_OF_ABPS_PER_QUAD) -#define NB_OF_ABPS_RANGES 4 -#define NB_OF_ANALOG_MODULES 3 -#define NB_OF_OBD_MODES 2 -#define NB_OF_QUADS_PER_MODULE 2 -#define NB_OF_CHOPPING_OPTIONS 2 -#define NB_OF_DIRECT_INPUTS_PER_ADC 4 - -#define NB_OF_ADC_CHANNELS 13 - -/*------------------------------------------------------------------------------ - * mtd_global_settings_t - *------------------------------------------------------------------------------ - * This typedef specifies the layout of the data structure holding the - * manufacturing test data global settings. - */ -typedef struct __mtd_global_settings_t -{ - uint16_t crc16; - uint8_t serial[6]; - uint32_t revision; - uint16_t sram_repair[8]; - uint16_t varef_m; - uint16_t spare; - uint8_t big_dec; - uint8_t reserved0; - uint16_t reserved1; -} mtd_global_settings_t; - -/*------------------------------------------------------------------------------ - * mtd_abps_trim_t - *------------------------------------------------------------------------------ - * The following data structure is used to store ABPS trimming information. - */ -typedef struct __mtd_abps_trim_t -{ - uint8_t dacdec; - uint8_t negtrim_per4_per3b_gtdec; -} mtd_abps_trim_t; - - -/*------------------------------------------------------------------------------ - * mtd_calibration_mc_t - *------------------------------------------------------------------------------ - * The following data structure is used to store M and C calibration - * coefficients. - */ -typedef struct __mtd_calibration_mc_t -{ - uint16_t m; - uint16_t c; -} mtd_calibration_mc_t; - - -/*------------------------------------------------------------------------------ - * mtd_data_t - *------------------------------------------------------------------------------ - * The following data structure is used to hold the full set of manufacturing - * test data. - */ -typedef struct __mtd_data_t -{ - mtd_global_settings_t global_settings; - mtd_abps_trim_t abps_trimming[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - uint8_t odb_trimming[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t abps_calibration[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - mtd_calibration_mc_t obd_calibration[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t cm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t tm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t quads_direct_input_cal[NB_OF_QUADS][2]; - mtd_calibration_mc_t adc_direct_input_cal[NB_OF_ANALOG_MODULES][NB_OF_DIRECT_INPUTS_PER_ADC]; - uint16_t comparators_offsets[NB_OF_QUADS]; - uint32_t ccc_delays_cal; -} mtd_data_t; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c deleted file mode 100644 index fc17e5298..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 source file. - * - * CRC-32-IEEE 802.3 - * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + - * x^4 + x^2 + x + 1 - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - - #ifdef __cplusplus -extern "C" { -#endif - -#include "crc32.h" - -static const uint32_t crc32_table[] = { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, 0x706af48fUL, - 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, 0xe0d5e91eUL, 0x97d2d988UL, - 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, - 0xf3b97148UL, 0x84be41deUL, 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, - 0x136c9856UL, 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, 0xa2677172UL, - 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, 0x35b5a8faUL, 0x42b2986cUL, - 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, - 0x26d930acUL, 0x51de003aUL, 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, - 0xcfba9599UL, 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, 0x01db7106UL, - 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, 0x9fbfe4a5UL, 0xe8b8d433UL, - 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, - 0x91646c97UL, 0xe6635c01UL, 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, - 0x6c0695edUL, 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, 0xfbd44c65UL, - 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, 0x4adfa541UL, 0x3dd895d7UL, - 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, - 0x44042d73UL, 0x33031de5UL, 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, - 0xbe0b1010UL, 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, 0x2eb40d81UL, - 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, 0x03b6e20cUL, 0x74b1d29aUL, - 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, - 0x0d6d6a3eUL, 0x7a6a5aa8UL, 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, - 0xf00f9344UL, 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, 0x67dd4accUL, - 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, 0xd6d6a3e8UL, 0xa1d1937eUL, - 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, - 0xd80d2bdaUL, 0xaf0a1b4cUL, 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, - 0x316e8eefUL, 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, 0xb2bd0b28UL, - 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, 0x2cd99e8bUL, 0x5bdeae1dUL, - 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, - 0x72076785UL, 0x05005713UL, 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, - 0x92d28e9bUL, 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, 0x18b74777UL, - 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, 0x8f659effUL, 0xf862ae69UL, - 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, - 0xa7672661UL, 0xd06016f7UL, 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, - 0x40df0b66UL, 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, 0xcdd70693UL, - 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, 0x5d681b02UL, 0x2a6f2b94UL, - 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, 0x2d02ef8dUL -}; - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -) -{ - uint32_t a; - - for(a=0; a> 8); - } - - return value; -} - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -) -{ - return mss_mac_crc32( 0xffffffffUL, data, data_length ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h deleted file mode 100644 index ce500a6f2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_CRC32_H -#define __MSS_ETHERNET_MAC_CRC32_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -); - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CRC32_H */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c deleted file mode 100644 index 2b73d0657..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c +++ /dev/null @@ -1,1575 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC driver implementation. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - * - ******************************************************************************/ - -/* - * - * - * NOTE: This driver has been modified specifically for use with the* uIP stack. - * It is no longer a generic driver. - * - * - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "FreeRTOS.h" -#include "task.h" - -#include "crc32.h" - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac_desc.h" -#include "mss_ethernet_mac_conf.h" -#include "../../CMSIS/mss_assert.h" - -#include "phy.h" - -/**************************** INTERNAL DEFINES ********************************/ - -#define MAC_CHECK(CHECK,ERRNO) \ - {if(!(CHECK)){g_mss_mac.last_error=(ERRNO); configASSERT((CHECK));}} - -/* - * Flags - */ -#define FLAG_MAC_INIT_DONE 1u -#define FLAG_PERFECT_FILTERING 2u -#define FLAG_CRC_DISABLE 4u -#define FLAG_EXCEED_LIMIT 8u - -/* - * Return types - */ -#define MAC_OK 0 -#define MAC_FAIL (-1) -#define MAC_WRONG_PARAMETER (-2) -#define MAC_TOO_BIG_PACKET (-3) -#define MAC_BUFFER_IS_FULL (-4) -#define MAC_NOT_ENOUGH_SPACE (-5) -#define MAC_TIME_OUT (-6) -#define MAC_TOO_SMALL_PACKET (-7) - -/* Allocating this many buffers will always ensure there is one free as, even -though TX_RING_SIZE is set to two, the two Tx descriptors will only ever point -to the same buffer. */ -#define macNUM_BUFFERS RX_RING_SIZE + TX_RING_SIZE -#define macBUFFER_SIZE 1488 - -/***************************************************************/ -MAC_instance_t g_mss_mac; - -/**************************** INTERNAL DATA ***********************************/ -#define ERROR_MESSAGE_COUNT 8 -#define MAX_ERROR_MESSAGE_WIDTH 40 -static const int8_t unknown_error[] = "Unknown error"; -static const int8_t ErrorMessages[][MAX_ERROR_MESSAGE_WIDTH] = { - "No error occured", - "Method failed", - "Wrong parameter pased to function", - "Frame is too long", - "Not enough space in buffer", - "Not enough space in buffer", - "Timed out", - "Frame is too small" -}; - -/* - * Null variables - */ -static uint8_t* NULL_buffer; -static MSS_MAC_callback_t NULL_callback; - -/* Declare the uip_buf as a pointer, rather than the traditional array, as this -is a zero copy driver. uip_buf just gets set to whichever buffer is being -processed. */ -unsigned char *uip_buf = NULL; - -/**************************** INTERNAL FUNCTIONS ******************************/ - -static int32_t MAC_dismiss_bad_frames( void ); -static int32_t MAC_send_setup_frame( void ); - -static int32_t MAC_stop_transmission( void ); -static void MAC_start_transmission( void ); -static int32_t MAC_stop_receiving( void ); -static void MAC_start_receiving( void ); - -static void MAC_set_time_out( uint32_t time_out ); -static uint32_t MAC_get_time_out( void ); - -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n); -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n); -static void MAC_memset_All(MAC_instance_t *s, uint32_t c); - -static unsigned char *MAC_obtain_buffer( void ); -static void MAC_release_buffer( unsigned char *pcBufferToRelease ); - -#if( TX_RING_SIZE != 2 ) - #error This uIP Ethernet driver required TX_RING_SIZE to be set to 2 -#endif - -/* Buffers that will dynamically be allocated to/from the Tx and Rx descriptors. -The union is used for alignment only. */ -static union xMAC_BUFFERS -{ - unsigned long ulAlignmentVariable; /* For alignment only, not used anywhere. */ - unsigned char ucBuffer[ macNUM_BUFFERS ][ macBUFFER_SIZE ]; -} xMACBuffers; - -/* Each array position indicates whether or not the buffer of the same index -is currently allocated to a descriptor (pdTRUE) or is free for use (pdFALSE). */ -static unsigned char ucMACBufferInUse[ macNUM_BUFFERS ] = { 0 }; - -/***************************************************************************//** - * Initializes the Ethernet Controller. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicats/multicast)/hash init - */ -void -MSS_MAC_init -( - uint8_t phy_address -) -{ - const uint8_t mac_address[6] = { DEFAULT_MAC_ADDRESS }; - int32_t a; - - /* To start with all buffers are free. */ - for( a = 0; a < macNUM_BUFFERS; a++ ) - { - ucMACBufferInUse[ a ] = pdFALSE; - } - - /* Try to reset chip */ - MAC_BITBAND->CSR0_SWR = 1u; - - do - { - vTaskDelay( 10 ); - } while ( 1u == MAC_BITBAND->CSR0_SWR ); - - /* Check reset values of some registers to constrol - * base address validity */ - configASSERT( MAC->CSR0 == 0xFE000000uL ); - configASSERT( MAC->CSR5 == 0xF0000000uL ); - configASSERT( MAC->CSR6 == 0x32000040uL ); - - /* Instance setup */ - MAC_memset_All( &g_mss_mac, 0u ); - - g_mss_mac.base_address = MAC_BASE; - g_mss_mac.phy_address = phy_address; - - for( a=0; aCSR0_DBO = DESCRIPTOR_BYTE_ORDERING_MODE; - MAC->CSR0 = (MAC->CSR0 & ~CSR0_PBL_MASK) | ((uint32_t)PROGRAMMABLE_BURST_LENGTH << CSR0_PBL_SHIFT); - MAC_BITBAND->CSR0_BLE = BUFFER_BYTE_ORDERING_MODE; - MAC_BITBAND->CSR0_BAR = (uint32_t)BUS_ARBITRATION_SCHEME; - - /* Fixed settings */ - /* No space between descriptors */ - MAC->CSR0 = MAC->CSR0 &~ CSR0_DSL_MASK; - /* General-purpose timer works in continuous mode */ - MAC_BITBAND->CSR11_CON = 1u; - /* Start general-purpose */ - MAC->CSR11 = (MAC->CSR11 & ~CSR11_TIM_MASK) | (0x0000FFFFuL << CSR11_TIM_SHIFT); - - /* Ensure promiscous mode is off (it should be by default anyway). */ - MAC_BITBAND->CSR6_PR = 0; - - /* Perfect filter. */ - MAC_BITBAND->CSR6_HP = 1; - - /* Pass multcast. */ - MAC_BITBAND->CSR6_PM = 1; - - /* Set descriptors */ - MAC->CSR3 = (uint32_t)&(g_mss_mac.rx_descriptors[0].descriptor_0); - MAC->CSR4 = (uint32_t)&(g_mss_mac.tx_descriptors[0].descriptor_0); - - /* enable normal interrupts */ - MAC_BITBAND->CSR7_NIE = 1u; - - /* Set default MAC address and reset mac filters */ - MAC_memcpy( g_mss_mac.mac_address, mac_address, 6u ); - MSS_MAC_set_mac_address((uint8_t *)mac_address); - - /* Detect PHY */ - if( g_mss_mac.phy_address > MSS_PHY_ADDRESS_MAX ) - { - PHY_probe(); - configASSERT( g_mss_mac.phy_address <= MSS_PHY_ADDRESS_MAX ); - } - - /* Reset PHY */ - PHY_reset(); - - /* Configure chip according to PHY status */ - MSS_MAC_auto_setup_link(); - - /* Ensure uip_buf starts by pointing somewhere. */ - uip_buf = MAC_obtain_buffer(); -} - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the EthernetInit function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @param config The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -) -{ - int32_t ret; - - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - MAC_BITBAND->CSR6_RA = (uint32_t)(((configuration & MSS_MAC_CFG_RECEIVE_ALL) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_TTM = (((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_SF = (uint32_t)(((configuration & MSS_MAC_CFG_STORE_AND_FORWARD) != 0u) ? 1u : 0u ); - - switch( configuration & MSS_MAC_CFG_THRESHOLD_CONTROL_11 ) { - case MSS_MAC_CFG_THRESHOLD_CONTROL_00: - MAC->CSR6 = MAC->CSR6 & ~CSR6_TR_MASK; - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_01: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)1 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_10: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)2 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_11: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)3 << CSR6_TR_SHIFT ); - break; - default: - break; - } - MAC_BITBAND->CSR6_FD = (uint32_t)(((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PM = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_ALL_MULTICAST) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PR = (uint32_t)(((configuration & MSS_MAC_CFG_PROMISCUOUS_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PB = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_BAD_FRAMES) != 0u) ? 1u : 0u ); - PHY_set_link_type( (uint8_t) - ((((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? MSS_MAC_LINK_STATUS_100MB : 0u ) | - (((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? MSS_MAC_LINK_STATUS_FDX : 0u )) ); - - MSS_MAC_auto_setup_link(); -} - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration( void ) -{ - uint32_t configuration; - - configuration = 0u; - if( MAC_BITBAND->CSR6_RA != 0u ) { - configuration |= MSS_MAC_CFG_RECEIVE_ALL; - } - - if( MAC_BITBAND->CSR6_TTM != 0u ) { - configuration |= MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE; - } - - if( MAC_BITBAND->CSR6_SF != 0u ) { - configuration |= MSS_MAC_CFG_STORE_AND_FORWARD; - } - - switch( (MAC->CSR6 & CSR6_TR_MASK) >> CSR6_TR_SHIFT ) { - case 1: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_01; break; - case 2: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_10; break; - case 3: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_11; break; - default: break; - } - if( MAC_BITBAND->CSR6_FD != 0u ) { - configuration |= MSS_MAC_CFG_FULL_DUPLEX_MODE; - } - - if( MAC_BITBAND->CSR6_PM != 0u ) { - configuration |= MSS_MAC_CFG_PASS_ALL_MULTICAST; - } - - if( MAC_BITBAND->CSR6_PR != 0u ) { - configuration |= MSS_MAC_CFG_PROMISCUOUS_MODE; - } - - if( MAC_BITBAND->CSR6_IF != 0u ) { - configuration |= MSS_MAC_CFG_INVERSE_FILTERING; - } - - if( MAC_BITBAND->CSR6_PB != 0u ) { - configuration |= MSS_MAC_CFG_PASS_BAD_FRAMES; - } - - if( MAC_BITBAND->CSR6_HO != 0u ) { - configuration |= MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE; - } - - if( MAC_BITBAND->CSR6_HP != 0u ) { - configuration |= MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE; - } - - return (int32_t)configuration; -} - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -) -{ - uint32_t desc; - unsigned long ulDescriptor; - int32_t error = MAC_OK; - - configASSERT( uip_buf != NULL_buffer ); - - configASSERT( usLength >= 12 ); - - if( (g_mss_mac.flags & FLAG_EXCEED_LIMIT) == 0u ) - { - configASSERT( usLength <= MSS_MAX_PACKET_SIZE ); - } - - taskENTER_CRITICAL(); - { - /* Check both Tx descriptors are free, meaning the double send has completed. */ - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) || ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) ) - { - error = MAC_BUFFER_IS_FULL; - } - } - taskEXIT_CRITICAL(); - - configASSERT( ( g_mss_mac.tx_desc_index == 0 ) ); - - if( error == MAC_OK ) - { - /* Ensure nothing is going to get sent until both descriptors are ready. - This is done to prevent a Tx end occurring prior to the second descriptor - being ready. */ - MAC_BITBAND->CSR6_ST = 0u; - - /* Assumed TX_RING_SIZE == 2. A #error directive checks this is the - case. */ - taskENTER_CRITICAL(); - { - for( ulDescriptor = 0; ulDescriptor < TX_RING_SIZE; ulDescriptor++ ) - { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 = 0u; - - if( (g_mss_mac.flags & FLAG_CRC_DISABLE) != 0u ) { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_AC; - } - - /* Every buffer can hold a full frame so they are always first and last - descriptor */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_LS | TDES1_FS; - - /* set data size */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= usLength; - - /* reset end of ring */ - g_mss_mac.tx_descriptors[TX_RING_SIZE-1].descriptor_1 |= TDES1_TER; - - if( usLength > MSS_TX_BUFF_SIZE ) /* FLAG_EXCEED_LIMIT */ - { - usLength = (uint16_t)MSS_TX_BUFF_SIZE; - } - - /* The data buffer is assigned to the Tx descriptor. */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].buffer_1 = ( unsigned long ) uip_buf; - - /* update counters */ - desc = g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0; - if( (desc & TDES0_LO) != 0u ) { - g_mss_mac.statistics.tx_loss_of_carrier++; - } - if( (desc & TDES0_NC) != 0u ) { - g_mss_mac.statistics.tx_no_carrier++; - } - if( (desc & TDES0_LC) != 0u ) { - g_mss_mac.statistics.tx_late_collision++; - } - if( (desc & TDES0_EC) != 0u ) { - g_mss_mac.statistics.tx_excessive_collision++; - } - if( (desc & TDES0_UF) != 0u ) { - g_mss_mac.statistics.tx_underflow_error++; - } - g_mss_mac.statistics.tx_collision_count += - (desc >> TDES0_CC_OFFSET) & TDES0_CC_MASK; - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0 = TDES0_OWN; - - g_mss_mac.tx_desc_index = (g_mss_mac.tx_desc_index + 1u) % (uint32_t)TX_RING_SIZE; - } - } - taskEXIT_CRITICAL(); - } - - if (error == MAC_OK) - { - error = (int32_t)usLength; - - /* Start sending now both descriptors are set up. This is done to - prevent a Tx end occurring prior to the second descriptor being - ready. */ - MAC_BITBAND->CSR6_ST = 1u; - MAC->CSR1 = 1u; - - /* The buffer pointed to by uip_buf is now assigned to a Tx descriptor. - Find anothere free buffer for uip_buf. */ - uip_buf = MAC_obtain_buffer(); - } - else - { - error = 0; - } - return ( error ); -} - - -/***************************************************************************//** - * Returns available packet size. - * - * @param instance Pointer to a MAC_instance_t structure - * @return size of packet, bigger than 0, if a packet is available. - * If not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -) -{ - int32_t retval; - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) != 0u ) - { - /* Current descriptor is empty */ - retval = 0; - } - else - { - uint32_t frame_length; - frame_length = ( g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> RDES0_FL_OFFSET ) & RDES0_FL_MASK; - retval = (int32_t)( frame_length ); - } - return retval; -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -) -{ - uint16_t frame_length=0u; - - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) == 0u ) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - if( frame_length > macBUFFER_SIZE ) { - return MAC_NOT_ENOUGH_SPACE; - } - - /* uip_buf is about to point to the buffer that contains the received - data, mark the buffer that uip_buf is currently pointing to as free - again. */ - MAC_release_buffer( uip_buf ); - uip_buf = ( unsigned char * ) g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1; - - /* The buffer the Rx descriptor was pointing to is now in use by the - uIP stack - allocate a new buffer to the Rx descriptor. */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 = ( unsigned long ) MAC_obtain_buffer(); - - MSS_MAC_prepare_rx_descriptor(); - } - return ((int32_t)frame_length); -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller. - * This function reads a packet from the receive FIFO of the controller and - * sets the address of pacData to the received data. - * If time_out parameter is zero the function will return - * immediately (after the copy operation if data is available. Otherwise the function - * will keep trying to read till time_out expires or data is read, if MSS_MAC_BLOCKING - * value is given as time_out, function will wait for the reception to complete. - * - * @param pacData The pointer to the packet data. - * @param time_out Time out value in milli seconds for receiving. - * if value is #MSS_MAC_BLOCKING, there will be no time out. - * if value is #MSS_MAC_NONBLOCKING, function will return immediately - * if there is no packet waiting. - * Otherwise value must be greater than 0 and smaller than - * 0x01000000. - * @return Size of packet if packet fits in pacData. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -) -{ - uint16_t frame_length = 0u; - int8_t exit = 0; - - configASSERT( (time_out == MSS_MAC_BLOCKING) || - (time_out == MSS_MAC_NONBLOCKING) || - ((time_out >= 1) && (time_out <= 0x01000000UL)) ); - - MAC_dismiss_bad_frames(); - - /* wait for a packet */ - if( time_out != MSS_MAC_BLOCKING ) { - if( time_out == MSS_MAC_NONBLOCKING ) { - MAC_set_time_out( 0u ); - } else { - MAC_set_time_out( time_out ); - } - } - - while( ((g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) != 0u) && (exit == 0) ) - { - if( time_out != MSS_MAC_BLOCKING ) - { - if( MAC_get_time_out() == 0u ) { - exit = 1; - } - } - } - - if(exit == 0) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - /* Here we are setting the buffer 'pacData' address to the address - RX descriptor address. After this is called, the following function - must be called 'MAC_prepare_rx_descriptor' - to prepare the current rx descriptor for receiving the next packet. - */ - *pacData = (uint8_t *)g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 ; - - } - return ((int32_t)frame_length); -} - -/***************************************************************************//** - * Returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -) -{ - uint32_t link; - - link = PHY_link_status(); - if( link == MSS_MAC_LINK_STATUS_LINK ) { - link |= PHY_link_type(); - } - - return ((int32_t)link); -} - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -) -{ - int32_t link; - - PHY_auto_negotiate(); - - link = MSS_MAC_link_status(); - - if( (link & MSS_MAC_LINK_STATUS_LINK) != 0u ) { - int32_t ret; - ret = MAC_stop_transmission(); - MAC_CHECK( ret == MAC_OK, ret ); - - ret = MAC_stop_receiving(); - MAC_CHECK( ret == MAC_OK, ret ); - MAC_BITBAND->CSR6_TTM = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_100MB) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_FD = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_FDX) != 0u) ? 1u : 1u ); - MAC_start_transmission(); - MAC_start_receiving(); - } - - return link; -} - - -/***************************************************************************//** - * Sets mac address. New address must be unicast. - * - * @param new_address Pointer to a MAC_instance_t structure - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -) -{ - /* Check if the new address is unicast */ - configASSERT( (new_address[0]&1) == 0 ); - - MAC_memcpy( g_mss_mac.mac_address, new_address, 6u ); - - if((g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - int32_t a; - /* set unused filters to the new mac address */ - for( a=14*6; a>=0; a-=6 ) { - if( (g_mss_mac.mac_filter_data[a] & 1u) != 0u ) { - /* Filters with multicast addresses are used */ - a = -1; - } else { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a]), - g_mss_mac.mac_address, 6u ); - } - } - } - - MAC_send_setup_frame(); -} - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to receive the MAC address - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -) -{ - MAC_memcpy( address, g_mss_mac.mac_address, 6u ); -} - - -/***************************************************************************//** - * Sets mac address filters. Addresses must be multicast. - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -) -{ - configASSERT( (filter_count==0) || (filters != NULL_buffer) ); - /* Check if the mac addresses is multicast */ - { - int32_t a; - for( a = 0u; a < filter_count; a++ ) { - configASSERT( (filters[a*6]&1) == 1 ); - } - } - - if( filter_count <= 15 ){ - int32_t a; - g_mss_mac.flags |= FLAG_PERFECT_FILTERING; - - /* copy new filters */ - MAC_memcpy( g_mss_mac.mac_filter_data, filters, (uint32_t)(filter_count*6)); - - /* set unused filters to our mac address */ - for( a=filter_count; a<15; a++ ) { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a*6]), - g_mss_mac.mac_address, 6 ); - } - } else { - int32_t a,b; - uint32_t hash; - - g_mss_mac.flags &= ~FLAG_PERFECT_FILTERING; - - /* reset hash table */ - MAC_memset( g_mss_mac.mac_filter_data, 0u, 64u ); - - for( a=0, b=0; aCSR5; - - if( (intr_status & CSR5_NIS_MASK) != 0u ) { - if( (intr_status & CSR5_TI_MASK) != 0u ) { /* Transmit */ - g_mss_mac.statistics.tx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_SEND; - } - - if( (intr_status & CSR5_RI_MASK) != 0u ) { /* Receive */ - g_mss_mac.statistics.rx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_RECEIVED; - } - } - - /* Clear interrupts */ - MAC->CSR5 = CSR5_INT_BITS; - - if( (events != 0u) && (g_mss_mac.listener != NULL_callback) ) { - g_mss_mac.listener( events ); - } -} - - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param instance Pointer to a MAC_instance_t structure - * @param listener function pointer to a MAC_callback_t function - * @return #MAC_OK if everything is OK - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -) -{ - /* disable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 0u; - MAC_BITBAND->CSR7_TIE = 0u; - - g_mss_mac.listener = listener; - - if( listener != NULL_callback ) { - /* enable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 1u; - MAC_BITBAND->CSR7_TIE = 1u; - } -} - - -/***************************************************************************//** - * Returns description of last error. - * - * @param instance Pointer to a MAC_instance_t structure - * @return A string describing the error. This string must not be - * modified by the application. - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - */ -const int8_t* -MSS_MAC_last_error -( - void -) -{ - int8_t error_msg_nb; - const int8_t* returnvalue; - - error_msg_nb = -(g_mss_mac.last_error); - if( error_msg_nb >= ERROR_MESSAGE_COUNT ) { - returnvalue = unknown_error; - } else { - returnvalue = ErrorMessages[error_msg_nb]; - } - return returnvalue; -} - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param instance Pointer to a MAC_instance_t structure - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -) -{ - uint32_t returnval = 0u; - - switch( stat_id ) { - case MSS_MAC_RX_INTERRUPTS: - returnval = g_mss_mac.statistics.rx_interrupts; - break; - case MSS_MAC_RX_FILTERING_FAIL: - returnval = g_mss_mac.statistics.rx_filtering_fail; - break; - case MSS_MAC_RX_DESCRIPTOR_ERROR: - returnval = g_mss_mac.statistics.rx_descriptor_error; - break; - case MSS_MAC_RX_RUNT_FRAME: - returnval = g_mss_mac.statistics.rx_runt_frame; - break; - case MSS_MAC_RX_NOT_FIRST: - returnval = g_mss_mac.statistics.rx_not_first; - break; - case MSS_MAC_RX_NOT_LAST: - returnval = g_mss_mac.statistics.rx_not_last; - break; - case MSS_MAC_RX_FRAME_TOO_LONG: - returnval = g_mss_mac.statistics.rx_frame_too_long; - break; - case MSS_MAC_RX_COLLISION_SEEN: - returnval = g_mss_mac.statistics.rx_collision_seen; - break; - case MSS_MAC_RX_CRC_ERROR: - returnval = g_mss_mac.statistics.rx_crc_error; - break; - case MSS_MAC_RX_FIFO_OVERFLOW: - returnval = g_mss_mac.statistics.rx_fifo_overflow; - break; - case MSS_MAC_RX_MISSED_FRAME: - returnval = g_mss_mac.statistics.rx_missed_frame; - break; - case MSS_MAC_TX_INTERRUPTS: - returnval = g_mss_mac.statistics.tx_interrupts; - break; - case MSS_MAC_TX_LOSS_OF_CARRIER: - returnval = g_mss_mac.statistics.tx_loss_of_carrier; - break; - case MSS_MAC_TX_NO_CARRIER: - returnval = g_mss_mac.statistics.tx_no_carrier; - break; - case MSS_MAC_TX_LATE_COLLISION: - returnval = g_mss_mac.statistics.tx_late_collision; - break; - case MSS_MAC_TX_EXCESSIVE_COLLISION: - returnval = g_mss_mac.statistics.tx_excessive_collision; - break; - case MSS_MAC_TX_COLLISION_COUNT: - returnval = g_mss_mac.statistics.tx_collision_count; - break; - case MSS_MAC_TX_UNDERFLOW_ERROR: - returnval = g_mss_mac.statistics.tx_underflow_error; - break; - default: - break; - } - - return returnval; -} - - -/**************************** INTERNAL FUNCTIONS ******************************/ - - -/***************************************************************************//** - * Prepares current rx descriptor for receiving. - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -) -{ - uint32_t desc; - - /* update counters */ - desc = g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0; - if( (desc & RDES0_FF) != 0u ) { - g_mss_mac.statistics.rx_filtering_fail++; - } - if( (desc & RDES0_DE) != 0u ) { - g_mss_mac.statistics.rx_descriptor_error++; - } - if( (desc & RDES0_RF) != 0u ) { - g_mss_mac.statistics.rx_runt_frame++; - } - if( (desc & RDES0_FS) == 0u ) { - g_mss_mac.statistics.rx_not_first++; - } - if( (desc & RDES0_LS) == 0u ) { - g_mss_mac.statistics.rx_not_last++; - } - if( (desc & RDES0_TL) != 0u ) { - g_mss_mac.statistics.rx_frame_too_long++; - } - if( (desc & RDES0_CS) != 0u ) { - g_mss_mac.statistics.rx_collision_seen++; - } - if( (desc & RDES0_CE) != 0u ) { - g_mss_mac.statistics.rx_crc_error++; - } - - desc = MAC->CSR8; - g_mss_mac.statistics.rx_fifo_overflow += - (desc & (CSR8_OCO_MASK|CSR8_FOC_MASK)) >> CSR8_FOC_SHIFT; - g_mss_mac.statistics.rx_missed_frame += - (desc & (CSR8_MFO_MASK|CSR8_MFC_MASK)); - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 = RDES0_OWN; - g_mss_mac.rx_desc_index = (g_mss_mac.rx_desc_index + 1u) % RX_RING_SIZE; - - /* Start receive */ - MAC_start_receiving(); -} - - -/***************************************************************************//** - * Prepares a setup frame and sends it to MAC. - * This function is blocking. - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out before packet send. - */ -static int32_t -MAC_send_setup_frame -( - void -) -{ - volatile MAC_descriptor_t descriptor; - uint8_t frame_data[192]; - uint8_t *data; - int32_t a,b,c,d; - int32_t ret; - - /* prepare descriptor */ - descriptor.descriptor_0 = TDES0_OWN; - descriptor.descriptor_1 = TDES1_SET | TDES1_TER | - (sizeof(frame_data) << TDES1_TBS1_OFFSET); - - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) == 0u ) { - descriptor.descriptor_1 |= TDES1_FT0; - } - - descriptor.buffer_1 = (uint32_t)frame_data; - descriptor.buffer_2 = 0u; - - /* prepare frame */ - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - b = 0; - d = 12; - c = 90; - } else { - b = 156; - d = 0; - c = 64; - } - - data = g_mss_mac.mac_address; - frame_data[b] = data[0]; - frame_data[b+1] = data[1]; - frame_data[b+4] = data[2]; - frame_data[b+5] = data[3]; - frame_data[b+8] = data[4]; - frame_data[b+9] = data[5]; - - data = g_mss_mac.mac_filter_data; - for( a = 0; a < c; ) { - frame_data[d] = data[a++]; - frame_data[d+1] = data[a++]; - frame_data[d+4] = data[a++]; - frame_data[d+5] = data[a++]; - frame_data[d+8] = data[a++]; - frame_data[d+9] = data[a++]; - d += 12; - } - - /* Stop transmission */ - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - /* Set descriptor */ - MAC->CSR4 = (uint32_t)&descriptor; - - /* Start transmission */ - MAC_start_transmission(); - - /* Wait until transmission over */ - ret = MAC_OK; - MAC_set_time_out( (uint32_t)SETUP_FRAME_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_SUSPENDED) && (MAC_OK == ret) ) - { - /* transmit poll demand */ - MAC->CSR1 = 1u; - if( MAC_get_time_out() == 0u ) { - ret = MAC_TIME_OUT; - } - } - - MAC_CHECK( MAC_stop_transmission() == MAC_OK, MAC_FAIL ); - - /* Set tx descriptor */ - MAC->CSR4 = (uint32_t)g_mss_mac.tx_descriptors; - - /* Start receiving and transmission */ - MAC_start_receiving(); - MAC_start_transmission(); - - return ret; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_transmission -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_STOPPED) && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_ST = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_transmission -( - void -) -{ - MAC_BITBAND->CSR6_ST = 1u; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_receiving -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_RS_MASK) >> CSR5_RS_SHIFT) != CSR5_RS_STOPPED) - && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_SR = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_receiving -( - void -) -{ - MAC_BITBAND->CSR6_SR = 1u; -} - - -/***************************************************************************//** - * Dismisses bad frames. - * - * @return dismissed frame count. - */ -static int32_t -MAC_dismiss_bad_frames -( - void -) -{ - int32_t dc = 0; - int8_t cont = 1; - - if( MAC_BITBAND->CSR6_PB != 0u ) { - /* User wants bad frames too, don't dismiss anything */ - cont = 0; - } - - while( ( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) == 0u) && (cont == 1) ) /* Host owns this descriptor */ - { - /* check error summary */ - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - (RDES0_ES | RDES0_LS | RDES0_FS)) != (RDES0_LS | RDES0_FS) ) - { - MSS_MAC_prepare_rx_descriptor(); - dc++; - } - else - { - cont = 0; - } - } - - return dc; -} - -/***************************************************************************//** - * Sets time out value. - * #MAC_get_time_out must be called frequently to make time out value updated. - * Because of user may not be using ISR, we can not update time out in ISR. - * - * @time_out time out value in milli seconds. - * Must be smaller than 0x01000000. - */ -static void -MAC_set_time_out -( - uint32_t time_out -) -{ - g_mss_mac.time_out_value = (time_out * 122u) / 10u; - - g_mss_mac.last_timer_value = (uint16_t)( MAC->CSR11 & CSR11_TIM_MASK ); -} - -/***************************************************************************//** - * Returns time out value. - * - * @return timer out value in milli seconds. - */ -static uint32_t -MAC_get_time_out -( - void -) -{ - uint32_t timer; - uint32_t time = 0u; - - timer = ( MAC->CSR11 & CSR11_TIM_MASK ); - - if( timer > g_mss_mac.last_timer_value ) { - time = 0x0000ffffUL; - } - time += g_mss_mac.last_timer_value - timer; - - if( MAC_BITBAND->CSR6_TTM == 0u ) { - time *= 10u; - } - if( g_mss_mac.time_out_value <= time ){ - g_mss_mac.time_out_value = 0u; - } else { - g_mss_mac.time_out_value -= time; - } - - g_mss_mac.last_timer_value = (uint16_t)timer; - - return ((g_mss_mac.time_out_value * 10u) / 122u); -} - -/***************************************************************************//** - * Fills the first n bytes of the memory area pointed to by s with the constant - * byte c. - */ -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n) -{ - uint8_t *sb = s; - - while( n > 0u ) { - n--; - sb[n] = c; - } -} - -/***************************************************************************//** - * Fills all fields of MAC_instance_t with c. - * - * @return a pointer to the given MAC_instance_t s. - */ -static void MAC_memset_All(MAC_instance_t *s, uint32_t c) -{ - int32_t count; - s->base_address = (addr_t)c; - s->flags = (uint8_t)c; - s->last_error = (int8_t)c; - s->last_timer_value = (uint16_t)c; - s->listener = NULL_callback; - MAC_memset( s->mac_address, (uint8_t)c, 6u ); - MAC_memset( s->mac_filter_data, (uint8_t)c, 90u ); - s->phy_address = (uint8_t)c; - s->rx_desc_index =c; - for(count = 0; countrx_descriptors[count].buffer_1 = c; - s->rx_descriptors[count].buffer_2 = c; - s->rx_descriptors[count].descriptor_0 = c; - s->rx_descriptors[count].descriptor_1 = c; - } - s->statistics.rx_collision_seen =c; - s->statistics.rx_crc_error = c; - s->statistics.rx_descriptor_error = c; - s->statistics.rx_fifo_overflow = c; - s->statistics.rx_filtering_fail = c; - s->statistics.rx_frame_too_long = c; - s->statistics.rx_interrupts = c; - s->statistics.rx_missed_frame = c; - s->statistics.rx_not_first = c; - s->statistics.rx_not_last = c; - s->statistics.rx_runt_frame = c; - s->statistics.tx_collision_count = c; - s->statistics.tx_excessive_collision = c; - s->statistics.tx_interrupts = c; - s->statistics.tx_late_collision = c; - s->statistics.tx_loss_of_carrier = c; - s->statistics.tx_no_carrier = c; - s->statistics.tx_underflow_error = c; - s->time_out_value = c; - s->tx_desc_index = c; - for(count = 0; count < TX_RING_SIZE ;count++) - { - s->tx_descriptors[count].buffer_1 = c; - s->tx_descriptors[count].buffer_2 = c; - s->tx_descriptors[count].descriptor_0 = c; - s->tx_descriptors[count].descriptor_1 = c; - } -} - -/***************************************************************************//** - * Copies n bytes from memory area src to memory area dest. - * The memory areas should not overlap. - * - * @return a pointer to the memory area dest. - */ -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n) -{ - uint8_t *d = dest; - - while( n > 0u ) { - n--; - d[n] = src[n]; - } -} - -/***************************************************************************//** - * Tx has completed, mark the buffers that were assigned to the Tx descriptors - * as free again. - * - */ -void MSS_MAC_FreeTxBuffers( void ) -{ - /* Check the buffers have not already been freed in the first of the - two Tx interrupts - which could potentially happen if the second Tx completed - during the interrupt for the first Tx. */ - if( g_mss_mac.tx_descriptors[ 0 ].buffer_1 != NULL ) - { - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == 0 ) && ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == 0 ) ) - { - configASSERT( g_mss_mac.tx_descriptors[ 0 ].buffer_1 == g_mss_mac.tx_descriptors[ 1 ].buffer_1 ); - MAC_release_buffer( ( unsigned char * ) g_mss_mac.tx_descriptors[ 0 ].buffer_1 ); - - /* Just to mark the fact that the buffer has already been released. */ - g_mss_mac.tx_descriptors[ 0 ].buffer_1 = NULL; - } - } -} - -/***************************************************************************//** - * Look through the array of buffers until one is found that is free for use - - * that is, not currently assigned to an Rx or a Tx descriptor. Mark the buffer - * as in use, then return its address. - * - * @return a pointer to a free buffer. - */ -unsigned char *MAC_obtain_buffer( void ) -{ -long lIndex, lAttempt = 0, lDescriptor, lBufferIsInUse; -unsigned char *pcReturn = NULL; -unsigned char *pcBufferAddress; - - /* Find and return the address of a buffer that is not being used. Mark - the buffer as now in use. */ - while( ( lAttempt <= 1 ) && ( pcReturn == NULL ) ) - { - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( ucMACBufferInUse[ lIndex ] == pdFALSE ) - { - pcReturn = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - ucMACBufferInUse[ lIndex ] = pdTRUE; - break; - } - } - - if( pcReturn == NULL ) - { - /* Did not find a buffer. That should not really happen, but could if - an interrupt was missed. See if any buffers are marked as in use, but - are not actually in use. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - pcBufferAddress = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - lBufferIsInUse = pdFALSE; - - /* Is the buffer used by an Rx descriptor? */ - for( lDescriptor = 0; lDescriptor < RX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.rx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Rx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - - if( lBufferIsInUse != pdTRUE ) - { - /* Is the buffer used by an Tx descriptor? */ - for( lDescriptor = 0; lDescriptor < TX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.tx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Tx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - } - - /* If the buffer was not found to be in use by either a Tx or an - Rx descriptor, but the buffer is marked as in use, then mark the - buffer to be in it's correct state of "not in use". */ - if( ( lBufferIsInUse == pdFALSE ) && ( ucMACBufferInUse[ lIndex ] == pdTRUE ) ) - { - ucMACBufferInUse[ lIndex ] = pdFALSE; - } - } - } - - /* If any buffer states were changed it might be that a buffer can now - be obtained. Try again, but only one more time. */ - lAttempt++; - } - - configASSERT( pcReturn ); - return pcReturn; -} - -/***************************************************************************//** - * Return a buffer to the list of free buffers, it was in use, but is not now. - * - */ -void MAC_release_buffer( unsigned char *pucBufferToRelease ) -{ -long lIndex; - - /* uip_buf is going to point to a different buffer - first ensure the buffer - it is currently pointing to is marked as being free again. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( pucBufferToRelease == &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ) ) - { - /* This is the buffer in use, mark it as being free. */ - ucMACBufferInUse[ lIndex ] = pdFALSE; - break; - } - } - - configASSERT( lIndex < macNUM_BUFFERS ); -} - - - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h deleted file mode 100644 index 9482bb762..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h +++ /dev/null @@ -1,573 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_H -#define __MSS_ETHERNET_MAC_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************** DEFINES *************************************/ - -/******************************************************************************* - * Configure values. - */ -/** - * Receive all. - * When set, all incoming frames are received, regardless of their destination address. - * An address check is performed, and the result of the check is written into the receive - * descriptor. - */ -#define MSS_MAC_CFG_RECEIVE_ALL 0x00000001u - -/** - * Transmit threshold mode. - * 1 - Transmit FIFO threshold set for 100 Mbps mode - * 0 - Transmit FIFO threshold set for 10 Mbps mode - * This bit can be changed only when a transmit process is in a stopped state. - */ -#define MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE 0x00000002u - -/** - * Store and forward. - * When set, the transmission starts after a full packet is written into the transmit - * FIFO, regardless of the current FIFO threshold level. - * This bit can be changed only when the transmit process is in the stopped state. - */ -#define MSS_MAC_CFG_STORE_AND_FORWARD 0x00000004u - -/** - * Threshold control bits. - * These bits, together with TTM, SF, and PS, control the threshold level for the - * transmit FIFO. - */ -#define MSS_MAC_CFG_THRESHOLD_CONTROL_00 0x00000000u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_01 0x00000008u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_10 0x00000010u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_11 0x00000018u - -/** - * Full-duplex mode. - * 0 - Half-duplex mode
- * 1 - Forcing full-duplex mode
- * Changing of this bit is allowed only when both the transmitter and receiver processes - * are in the stopped state. - */ -#define MSS_MAC_CFG_FULL_DUPLEX_MODE 0x00000020u - -/** - * Pass all multicast. - * When set, all frames with multicast destination addresses will be received, regardless - * of the address check result. - */ -#define MSS_MAC_CFG_PASS_ALL_MULTICAST 0x00000040u - -/** - * Promiscuous mode. - * When set, all frames will be received regardless of the address check result. An - * address check is not performed. - */ -#define MSS_MAC_CFG_PROMISCUOUS_MODE 0x00000080u - -/** - * Inverse filtering (read-only). - * If this bit is set when working in a perfect filtering mode, the receiver performs an - * inverse filtering during the address check process. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_INVERSE_FILTERING 0x00000100u - -/** - * Pass bad frames. - * When set, Core10/100 transfers all frames into the data buffers, regardless of the - * receive errors. This allows the runt frames, collided fragments, and truncated frames - * to be received. - */ -#define MSS_MAC_CFG_PASS_BAD_FRAMES 0x00000200u - -/** - * Hash-only filtering mode (read-only). - * When set, Core10/100 performs an imperfect filtering over both the multicast and - * physical addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE 0x00000400u - -/** - * Hash/perfect receive filtering mode (read-only). - * 0 - Perfect filtering of the incoming frames is performed according to the physical - * addresses specified in a setup frame.
- * 1 - Imperfect filtering over the frames with the multicast addresses is performed - * according to the hash table specified in a setup frame.
- * A physical address check is performed according to the CSR6.2 (HO, hash-only) bit. - * When both the HO and HP bits are set, an imperfect filtering is performed on all of - * the addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE 0x00000800u - - -/******************************************************************************* - * Link status values. - */ -#define MSS_MAC_LINK_STATUS_LINK 0x0001u /**< Link up/down */ -#define MSS_MAC_LINK_STATUS_100MB 0x0002u /**< Connection is 100Mb/10Mb */ -#define MSS_MAC_LINK_STATUS_FDX 0x0004u /**< Connection is full/half duplex */ - - -/** - * Size of the max packet that can be received/transmited. - */ -#define MSS_MAX_PACKET_SIZE 1514uL - -/** - * Size of a receive/transmit buffer. - * Buffer size must be enough big to hold a full frame and must be multiple of - * four. For rx buffer +4 bytes allocated for crc values. These bytes doesn't - * copied to the user buffer. - */ -#define MSS_TX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 3u) & (~(uint32_t)3)) -#define MSS_RX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 7u) & (~(uint32_t)3)) - -/******************************************************************************* - * Time out values. - */ -#define MSS_MAC_NONBLOCKING 0u -#define MSS_MAC_BLOCKING 0xFFFFFFFFUL - -/***************************************************************************//** - * MAC events. - */ -#define MSS_MAC_EVENT_PACKET_SEND 1u -#define MSS_MAC_EVENT_PACKET_RECEIVED 2u - -/***************************************************************************//** - * PHY addresses. - */ -#define MSS_PHY_ADDRESS_MIN 0u -#define MSS_PHY_ADDRESS_MAX 31u -#define MSS_PHY_ADDRESS_AUTO_DETECT 255u - -/***************************************************************************//** - * Listener function type defines the function prototype that might be followed - * by MAC_isr which is triggered with each receive and transmit related interrupts. - * Listener functions should follow the following prototype: - * void MAC_Listener( uint32_t events ); - * The parameter is used to inform the listener function about the triggering event - * or events. Events input to the system are: - * #define MSS_MAC_EVENT_PACKET_SEND 1 - * #define MSS_MAC_EVENT_PACKET_RECEIVED 2 - * Listener function should be defined by the application using this driver if - * needed. This function may be assigned to the driver using MAC_set_callback - * routine and may be un assigned again by using the same routine with a NULL pointer - * as the event listener function. It is recommended to use this property for interrupt - * triggered systems and it is not recommended for polling mechanisms. - */ -typedef void (*MSS_MAC_callback_t)(uint32_t events); - -/***************************************************************************//** - * Statistics counter identifiers are used with MAC_get_statistics routine to - * receive the count of the requested errors/interrupts occurrences. - * - * MSS_MAC_RX_INTERRUPTS - * Used to receive the number of receive interrupts occurred. - * - * MSS_MAC_RX_FILTERING_FAIL - * Used to receive the number of received frames which did not pass the - * address recognition process. - * - * MSS_MAC_RX_DESCRIPTOR_ERROR - * Used to receive the number of occurrences of; no receive buffer was - * available when trying to store the received data. - * - * MSS_MAC_RX_RUNT_FRAME - * Used to receive the number of occurrences of; the frame is damaged by a - * collision or by a premature termination before the end of a collision - * window. - * - * MSS_MAC_RX_NOT_FIRST - * Used to receive the number of occurrences of; start of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_NOT_LAST - * Used to receive the number of occurrences of; end of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_FRAME_TOO_LONG - * Used to receive the number of occurrences of; a current frame is longer - * than maximum size of 1,518 bytes, as specified by 802.3. - * - * MSS_MAC_RX_COLLISION_SEEN - * Used to receive the number of occurrences of; a late collision was seen - * (collision after 64 bytes following SFD). - * - * MSS_MAC_RX_CRC_ERROR - * Used to receive the number of occurrences of; a CRC error has occurred - * in the received frame. - * - * MSS_MAC_RX_FIFO_OVERFLOW - * Used to receive the number of frames not accepted due to the receive - * FIFO overflow. - * - * MSS_MAC_RX_MISSED_FRAME - * Used to receive the number of frames not accepted due to the - * unavailability of the receive descriptor. - * - * MSS_MAC_TX_INTERRUPTS - * Used to receive the number of transmit interrupts occurred. - * - * MSS_MAC_TX_LOSS_OF_CARRIER - * Used to receive the number of occurrences of; a loss of the carrier - * during a transmission. - * - * MSS_MAC_TX_NO_CARRIER - * Used to receive the number of occurrences of; the carrier was not asserted - * by an external transceiver during the transmission. - * - * MSS_MAC_TX_LATE_COLLISION - * Used to receive the number of occurrences of; a collision was detected - * after transmitting 64 bytes. - * - * MSS_MAC_TX_EXCESSIVE_COLLISION - * Used to receive the number of occurrences of; the transmission was aborted - * after 16 retries. - * - * MSS_MAC_TX_COLLISION_COUNT - * Used to receive the number of collisions occurred. - * - * MSS_MAC_TX_UNDERFLOW_ERROR - * Used to receive the number of occurrences of; the FIFO was empty during - * the frame transmission. - */ -typedef enum { - MSS_MAC_RX_INTERRUPTS, - MSS_MAC_RX_FILTERING_FAIL, - MSS_MAC_RX_DESCRIPTOR_ERROR, - MSS_MAC_RX_RUNT_FRAME, - MSS_MAC_RX_NOT_FIRST, - MSS_MAC_RX_NOT_LAST, - MSS_MAC_RX_FRAME_TOO_LONG, - MSS_MAC_RX_COLLISION_SEEN, - MSS_MAC_RX_CRC_ERROR, - MSS_MAC_RX_FIFO_OVERFLOW, - MSS_MAC_RX_MISSED_FRAME, - - MSS_MAC_TX_INTERRUPTS, - MSS_MAC_TX_LOSS_OF_CARRIER, - MSS_MAC_TX_NO_CARRIER, - MSS_MAC_TX_LATE_COLLISION, - MSS_MAC_TX_EXCESSIVE_COLLISION, - MSS_MAC_TX_COLLISION_COUNT, - MSS_MAC_TX_UNDERFLOW_ERROR -} mss_mac_statistics_id_t; - -/******************************* FUNCTIONS ************************************/ - -/***************************************************************************//** - * Initializes an Ethernet MAC controller and data structures. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicast/multicast)/hash init - * - */ -void -MSS_MAC_init -( - uint8_t phy_address -); - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param configuration The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -); - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be used to - * get the configuration of the Ethernet Controller. - * - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration -( - void -); - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -); - -/***************************************************************************//** - * Returns available packet's size. - * - * @return Size of packet, bigger than 0, if a packet is available, - * if not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -); - - - -/***************************************************************************//** - * Prepares the RX descriptor for receiving packets. - * - * @return void - * @see MAC_rx_packet() - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -); - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -); - - -/***************************************************************************//** - Receives a packet from the Ethernet Controller. - The MSS_MAC_rx_packet_ptrset() function is very similar to the MSS_MAC_rx_packet() - function, in that it receives data from the MSS Ethernet MAC. The difference - is that it sets pacData to point to the memory buffer where the MSS Ethernet - MAC copied the received packet instead of copying the received packet into a - buffer provided by the application. After this function is called and data is - used by the user application or copied to another buffer, the - MSS_MAC_prepare_rx_descriptor() function must be called to free up the receive - memory buffer used by the MSS Ethernet MAC - - @param pacData - The pacData parameter is a pointer to a memory buffer pointer. The uint8_t - pointer pointed to by the pacData parameter will contain the address of the - memory buffer containing the received packet after this function returns. The - value of pacData is only valid if the return value is larger than zero, - indicating that a packet was received. - - @param time_out - The time_out parameter is the timeout value for the transmission in milliseconds. - The time_out parameter value can be one of the following values: - • Unsigned integer greater than 0 and less than 0x01000000 - • MSS_MAC_BLOCKING – there will be no timeout. - • MSS_MAC_NONBLOCKING – the function will return immediately if no packets - have been received. - - @return - The function returns the size of the packet if the packet fits in pacData. - Returns zero if there is no received packet. - - @see MAC_rx_pckt_size() - @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -); - -/***************************************************************************//** - * Returns the status of connection by reading it from the PHY. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -); - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -); - - -/***************************************************************************//** - * Sets mac address. - * - * @param new_address Pointer to then new address value (6 bytes of data) - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -); - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to the parameter to receive the MAC address. - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -); - - -/***************************************************************************//** - * Sets mac address filters. - * If less than 15 addresses are subscribed, system works on perfect filtering mode - * else system works in hash table mode - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -); - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param listener function pointer to a MSS_MAC_callback_t function - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -); - - -/***************************************************************************//** - * Returns description of latest error happened. - * - * @return A string describing the error. This string must not be - * modified by the application. - */ -const int8_t* -MSS_MAC_last_error -( - void -); - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -); - -/* - * The double Tx has completed. Hand back the Tx buffer to the control of - * the MAC hardware. - */ -void MSS_MAC_FreeTxBuffers( void ); -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h deleted file mode 100644 index ac144b36b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h +++ /dev/null @@ -1,43 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethenet MAC configuration header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_CONF_H -#define __MSS_ETHERNET_MAC_CONF_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Default MAC address - */ -#define DEFAULT_MAC_ADDRESS configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 -#define BROADCAST_MAC_ADDRESS 0xFFu,0xFFu,0xFFu,0xFFu,0xFFu,0xFFu - -/** - * Descriptor byte ordering mode. - * 1 - Big-endian mode used for data descriptors
- * 0 - Little-endian mode used for data descriptors
- */ -#define DESCRIPTOR_BYTE_ORDERING_MODE LITTLEENDIAN - -/** - * Big/little endian. - * Selects the byte-ordering mode used by the data buffers. - * 1 - Big-endian mode used for the data buffers - * 0 - Little-endian mode used for the data buffers - */ -#define BUFFER_BYTE_ORDERING_MODE LITTLEENDIAN - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CONF_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h deleted file mode 100644 index dc697f11a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h +++ /dev/null @@ -1,346 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC internal defines header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_DESC_H -#define __MSS_ETHERNET_MAC_DESC_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * Receive descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor.
- * 0 - The host owns the descriptor.
- * Core10/100 will clear this bit when it completes a current frame reception or - * when the data buffers associated with a given descriptor are already full. - */ -#define RDES0_OWN 0x80000000UL - -/***************************************************************************//** - * Filtering fail. - * When set, indicates that a received frame did not pass the address recognition process. - * This bit is valid only for the last descriptor of the frame (RDES0.8 set), when the CSR6.30 (receive all) bit - * is set and the frame is at least 64 bytes long. - */ -#define RDES0_FF 0x40000000UL - -/***************************************************************************//** - * Frame length. - * Indicates the length, in bytes, of the data transferred into a host memory for a given frame - * This bit is valid only when RDES0.8 (last descriptor) is set and RDES0.14 (descriptor error) is cleared. - */ -#define RDES0_FL_MASK 0x00003FFFUL -#define RDES0_FL_OFFSET 16 - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * RDES0.1 - CRC error - * RDES0.6 - Collision seen - * RDES0.7 - Frame too long - * RDES0.11 - Runt frame - * RDES0.14 - Descriptor error - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_ES 0x00008000UL - -/***************************************************************************//** - * Descriptor error. - * Set by Core10/100 when no receive buffer was available when trying to store the received data. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DE 0x00004000UL - -/***************************************************************************//** - * Runt frame. - * When set, indicates that the frame is damaged by a collision or by a premature termination before the end - * of a collision window. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RF 0x00000800UL - -/***************************************************************************//** - * Multicast frame. - * When set, indicates that the frame has a multicast address. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_MF 0x00000400UL - -/***************************************************************************//** - * First descriptor. - * When set, indicates that this is the first descriptor of a frame. - */ -#define RDES0_FS 0x00000200UL - -/***************************************************************************//** - * Last descriptor. - * When set, indicates that this is the last descriptor of a frame. - */ -#define RDES0_LS 0x00000100UL - -/***************************************************************************//** - * Frame too long. - * When set, indicates that a current frame is longer than maximum size of 1,518 bytes, as specified by 802.3. - * TL (frame too long) in the receive descriptor has been set when the received frame is longer than - * 1,518 bytes. This flag is valid in all receive descriptors when multiple descriptors are used for one frame. - */ -#define RDES0_TL 0x00000080UL - -/***************************************************************************//** - * Collision seen. - * When set, indicates that a late collision was seen (collision after 64 bytes following SFD). - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_CS 0x00000040UL - -/***************************************************************************//** - * Frame type. - * When set, indicates that the frame has a length field larger than 1,500 (Ethernet-type frame). When - * cleared, indicates an 802.3-type frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, FT is invalid for runt frames shorter than 14 bytes. - */ -#define RDES0_FT 0x00000020UL - -/***************************************************************************//** - * Report on MII error. - * When set, indicates that an error has been detected by a physical layer chip connected through the MII - * interface. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RE 0x00000008UL - -/***************************************************************************//** - * Dribbling bit. - * When set, indicates that the frame was not byte-aligned. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DB 0x00000004UL - -/***************************************************************************//** - * CRC error. - * When set, indicates that a CRC error has occurred in the received frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, CE is not valid when the received frame is a runt frame. - */ -#define RDES0_CE 0x00000002UL - -/***************************************************************************//** - * This bit is reset for frames with a legal length. - */ -#define RDES0_ZERO 0x00000001UL - -/***************************************************************************//** - * Receive end of ring. - * When set, indicates that this is the last descriptor in the receive descriptor ring. Core10/100 returns to the - * first descriptor in the ring, as specified by CSR3 (start of receive list address). - */ -#define RDES1_RER 0x02000000UL - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second buffer's address points to the next descriptor and not to the data buffer. - * Note that RER takes precedence over RCH. - */ -#define RDES1_RCH 0x01000000UL - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. This number must be a - * multiple of four. If it is 0, Core10/100 ignores the second data buffer and fetches the next data descriptor. - * This number is valid only when RDES1.24 (second address chained) is cleared. - */ -#define RDES1_RBS2_MASK 0x7FF -#define RDES1_RBS2_OFFSET 11 - -/***************************************************************************//** - * Buffer 1 size - * Indicates the size, in bytes, of memory space used by the first data buffer. This number must be a multiple of - * four. If it is 0, Core10/100 ignores the first data buffer and uses the second data buffer. - */ -#define RDES1_RBS1_MASK 0x7FF -#define RDES1_RBS1_OFFSET 0 - - -/******************************************************************************* - * Transmit descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor. - * 0 - The host owns the descriptor. - * Core10/100 will clear this bit when it completes a current frame transmission or when the data buffers - * associated with a given descriptor are empty. - */ -#define TDES0_OWN 0x80000000uL - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * TDES0.1 - Underflow error - * TDES0.8 - Excessive collision error - * TDES0.9 - Late collision - * TDES0.10 - No carrier - * TDES0.11 - Loss of carrier - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_ES ((uint32_t)1 << 15) - -/***************************************************************************//** - * Loss of carrier. - * When set, indicates a loss of the carrier during a transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LO ((uint32_t)1 << 11) - -/***************************************************************************//** - * No carrier. - * When set, indicates that the carrier was not asserted by an external transceiver during the transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_NC ((uint32_t)1 << 10) - -/***************************************************************************//** - * Late collision. - * When set, indicates that a collision was detected after transmitting 64 bytes. - * This bit is not valid when TDES0.1 (underflow error) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LC ((uint32_t)1 << 9) - -/***************************************************************************//** - * Excessive collisions. - * When set, indicates that the transmission was aborted after 16 retries. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_EC ((uint32_t)1 << 8) - -/***************************************************************************//** - * Collision count. - * This field indicates the number of collisions that occurred before the end of a frame transmission. - * This value is not valid when TDES0.8 (excessive collisions bit) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_CC_MASK 0xFu -#define TDES0_CC_OFFSET 3u - -/***************************************************************************//** - * Underflow error. - * When set, indicates that the FIFO was empty during the frame transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_UF ((uint32_t)1 << 1) - -/***************************************************************************//** - * Deferred. - * When set, indicates that the frame was deferred before transmission. Deferring occurs if the carrier is detected - * when the transmission is ready to start. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_DE (1) - -/***************************************************************************//** - * Interrupt on completion. - * Setting this flag instructs Core10/100 to set CSR5.0 (transmit interrupt) immediately after processing a - * current frame. - * This bit is valid when TDES1.30 (last descriptor) is set or for a setup packet. - */ -#define TDES1_IC ((uint32_t)1 << 31) - -/***************************************************************************//** - * Last descriptor. - * When set, indicates the last descriptor of the frame. - */ -#define TDES1_LS ((uint32_t)1 << 30) - -/***************************************************************************//** - * First descriptor. - * When set, indicates the first descriptor of the frame. - */ -#define TDES1_FS ((uint32_t)1 << 29) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.22 (FT0), controls a current filtering mode. - * This bit is valid only for the setup frames. - */ -#define TDES1_FT1 ((uint32_t)1 << 28) - -/***************************************************************************//** - * Setup packet. - * When set, indicates that this is a setup frame descriptor. - */ -#define TDES1_SET ((uint32_t)1 << 27) - -/***************************************************************************//** - * Add CRC disable. - * When set, Core10/100 does not append the CRC value at the end of the frame. The exception is when the - * frame is shorter than 64 bytes and automatic byte padding is enabled. In that case, the CRC field is added, - * despite the state of the AC flag. - */ -#define TDES1_AC ((uint32_t)1 << 26) - -/***************************************************************************//** - * Transmit end of ring. - * When set, indicates the last descriptor in the descriptor ring. - */ -#define TDES1_TER ((uint32_t)1 << 25) - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second descriptor's address points to the next descriptor and not to the data - * buffer. - * This bit is valid only when TDES1.25 (transmit end of ring) is reset. - */ -#define TDES1_TCH ((uint32_t)1 << 24) - -/***************************************************************************//** - * Disabled padding. - * When set, automatic byte padding is disabled. Core10/100 normally appends the PAD field after the INFO - * field when the size of an actual frame is less than 64 bytes. After padding bytes, the CRC field is also - * inserted, despite the state of the AC flag. When DPD is set, no padding bytes are appended. - */ -#define TDES1_DPD ((uint32_t)1 << 23) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.28 (FT1), controls the current filtering mode. - * This bit is valid only when the TDES1.27 (SET) bit is set. - */ -#define TDES1_FT0 ((uint32_t)1 << 22) - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. If it is zero, Core10/100 ignores - * the second data buffer and fetches the next data descriptor. - * This bit is valid only when TDES1.24 (second address chained) is cleared. - */ -#define TDES1_TBS2_MASK 0x7FF -#define TDES1_TBS2_OFFSET 11u - -/***************************************************************************//** - * Buffer 1 size. - * Indicates the size, in bytes, of memory space used by the first data buffer. If it is 0, Core10/100 ignores the - * first data buffer and uses the second data buffer. - */ -#define TDES1_TBS1_MASK 0x7FF -#define TDES1_TBS1_OFFSET 0u - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_DESC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h deleted file mode 100644 index 0a8578f97..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h +++ /dev/null @@ -1,1205 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC registers. - * - * (c) Copyright 2007 Actel Corporation - * - * IP core registers definitions. This file contains the definitions required - * for accessing the IP core through the hardware abstraction layer (HAL). - * This file was automatically generated, using "get_header.exe" version 0.4.0, - * from the IP-XACT description for: - * - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ -#ifndef MSS_ETHERNET_MAC_REGISTERS_H_ -#define MSS_ETHERNET_MAC_REGISTERS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_user_cfg.h" - -typedef uint32_t addr_t; - - -/***************************************************************************//** - * Descriptor structure - */ -#include "pack_struct_start.h" -typedef struct { - volatile uint32_t descriptor_0; - volatile uint32_t descriptor_1; - volatile uint32_t buffer_1; - volatile uint32_t buffer_2; -} MAC_descriptor_t -#include "pack_struct_end.h" - - -/***************************************************************************//** - * There should be one instance of this structure for each instance of - * the MAC in your system. MSS_MAC_init routine initializes this structure. - * It is used to identify the various MACs in your system and an initilized - * MAC instance's structure should be passed as first parameter to MAC functions - * to identify which MAC should perform the requested operation. - * Software using the MAC driver should only need to create one single - * instance of this data structure for each MAC hardware instance in - * the system. Using MAC_get_configuration routine, latest status of the driver - * may be read by receiving its flags field, similarly MAC_configure routine lets - * you modify some of these flags. - */ -#include "net/pack_struct_start.h" -typedef struct { - addr_t base_address; /**< Register base address of the driver*/ - uint8_t flags; /**< Configuration of the driver*/ - int8_t last_error; /**< Index of last error happened inside the driver*/ - uint8_t mac_address[6]; /**< MAC address of the drived instance*/ - uint8_t mac_filter_data[90]; /**< MAC filter data, 15 addresses to be used for - received data filtering*/ - uint16_t last_timer_value; /**< Last read value of timer */ - uint32_t time_out_value; /**< Time out value */ - MSS_MAC_callback_t listener; /**< Pointer to the call-back function to be triggered - when a package is received*/ - - /* transmit related info: */ - uint32_t tx_desc_index; /**< index of the transmit descriptor getting used*/ - MAC_descriptor_t tx_descriptors[TX_RING_SIZE];/**< array of transmit descriptors*/ - - /* receive related info: */ - uint32_t rx_desc_index; /**< index of the receive descriptor getting used*/ - MAC_descriptor_t rx_descriptors[RX_RING_SIZE];/**< array of receive descriptors*/ - - uint8_t phy_address; /**< MII address of the connected PHY*/ - - #include "pack_struct_start.h" - struct { - uint32_t rx_interrupts; /**< Number of receive interrupts occurred.*/ - uint32_t rx_filtering_fail; /**< Number of received frames which did not pass - the address recognition process.*/ - uint32_t rx_descriptor_error; /**< Number of occurrences of; no receive buffer was - available when trying to store the received data.*/ - uint32_t rx_runt_frame; /**< Number of occurrences of; the frame is damaged by - a collision or by a premature termination before - the end of a collision window.*/ - uint32_t rx_not_first; /**< Number of occurrences of; start of the frame is - not the first descriptor of a frame.*/ - uint32_t rx_not_last; /**< Number of occurrences of; end of the frame is not - the first descriptor of a frame.*/ - uint32_t rx_frame_too_long; /**< Number of occurrences of; a current frame is - longer than maximum size of 1,518 bytes, as specified - by 802.3.*/ - uint32_t rx_collision_seen; /**< Number of occurrences of; a late collision was seen - (collision after 64 bytes following SFD).*/ - uint32_t rx_crc_error; /**< Number of occurrences of; a CRC error has occurred - in the received frame.*/ - uint32_t rx_fifo_overflow; /**< Number of frames not accepted due to the receive - FIFO overflow.*/ - uint32_t rx_missed_frame; /**< Number of frames not accepted due to the - unavailability of the receive descriptor.*/ - - uint32_t tx_interrupts; /**< Number of transmit interrupts occurred.*/ - uint32_t tx_loss_of_carrier; /**< Number of occurrences of; a loss of the carrier - during a transmission.*/ - uint32_t tx_no_carrier; /**< Number of occurrences of; the carrier was not asserted - by an external transceiver during the transmission.*/ - uint32_t tx_late_collision; /**< Number of occurrences of; a collision was detected - after transmitting 64 bytes.*/ - uint32_t tx_excessive_collision;/**< Number of occurrences of; the transmission was - aborted after 16 retries.*/ - uint32_t tx_collision_count; /**< Number of collisions occurred.*/ - uint32_t tx_underflow_error; /**< Number of occurrences of; the FIFO was empty during - the frame transmission.*/ - } statistics - #include "pack_struct_end.h" -} MAC_instance_t -#include "net/pack_struct_end.h" - - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CSR0_SWR; - uint32_t CSR0_BAR; - uint32_t CSR0_DSL[5]; - uint32_t CSR0_BLE; - uint32_t CSR0_PBL[6]; - uint32_t CSR0_RESERVED0[3]; - uint32_t CSR0_TAP[3]; - uint32_t CSR0_DBO; - uint32_t CSR0_RESERVED1[11]; - - uint32_t MAC_CSR_RESERVED0[32]; - - uint32_t CSR1[32]; - - uint32_t MAC_CSR_RESERVED1[32]; - - uint32_t CSR2[32]; - - uint32_t MAC_CSR_RESERVED2[32]; - - uint32_t CSR3[32]; - - uint32_t MAC_CSR_RESERVED3[32]; - - uint32_t CSR4[32]; - - uint32_t MAC_CSR_RESERVED4[32]; - - uint32_t CSR5_TI; - uint32_t CSR5_TPS; - uint32_t CSR5_TU; - uint32_t CSR5_RESERVED0[2]; - uint32_t CSR5_UNF; - uint32_t CSR5_RI; - uint32_t CSR5_RU; - uint32_t CSR5_RPS; - uint32_t CSR5_RESERVED1; - uint32_t CSR5_ETI; - uint32_t CSR5_GTE; - uint32_t CSR5_RESERVED2[2]; - uint32_t CSR5_ERI; - uint32_t CSR5_AIS; - uint32_t CSR5_NIS; - uint32_t CSR5_RS[3]; - uint32_t CSR5_TS[3]; - uint32_t CSR5_RESERVED3[9]; - - uint32_t MAC_CSR_RESERVED5[32]; - - uint32_t CSR6_HP; - uint32_t CSR6_SR; - uint32_t CSR6_HO; - uint32_t CSR6_PB; - uint32_t CSR6_IF; - uint32_t CSR6_RESERVED0; - uint32_t CSR6_PR; - uint32_t CSR6_PM; - uint32_t CSR6_RESERVED1; - uint32_t CSR6_FD; - uint32_t CSR6_RESERVED2[3]; - uint32_t CSR6_ST; - uint32_t CSR6_TR[2]; - uint32_t CSR6_RESERVED3[5]; - uint32_t CSR6_SF; - uint32_t CSR6_TTM; - uint32_t CSR6_RESERVED4[7]; - uint32_t CSR6_RA; - uint32_t CSR6_RESERVED5; - - uint32_t MAC_CSR_RESERVED6[32]; - - uint32_t CSR7_TIE; - uint32_t CSR7_TSE; - uint32_t CSR7_TUE; - uint32_t CSR7_RESERVED0[2]; - uint32_t CSR7_UNE; - uint32_t CSR7_RIE; - uint32_t CSR7_RUE; - uint32_t CSR7_RSE; - uint32_t CSR7_RESERVED1; - uint32_t CSR7_ETE; - uint32_t CSR7_GTE; - uint32_t CSR7_RESERVED2[2]; - uint32_t CSR7_ERE; - uint32_t CSR7_AIE; - uint32_t CSR7_NIE; - uint32_t CSR7[15]; - - uint32_t MAC_CSR_RESERVED7[32]; - - uint32_t CSR8[32]; - - uint32_t MAC_CSR_RESERVED8[32]; - - uint32_t CSR9_SCS; - uint32_t CSR9_SCLK; - uint32_t CSR9_SDI; - uint32_t CSR9_SDO; - uint32_t CSR9_RESERVED0[12]; - uint32_t CSR9_MDC; - uint32_t CSR9_MDO; - uint32_t CSR9_MDEN; - uint32_t CSR9_MDI; - uint32_t CSR9_RESERVED1[12]; - - uint32_t MAC_CSR_RESERVED9[32]; - - uint32_t CSR10[32]; - - uint32_t MAC_CSR_RESERVED10[32]; - - uint32_t CSR11_TIM[16]; - uint32_t CSR11_CON; - uint32_t CSR11_NRP[3]; - uint32_t CSR11_RT[4]; - uint32_t CSR11_NTP[3]; - uint32_t CSR11_TT[4]; - uint32_t CSR11_CS; -} MAC_BitBand_TypeDef; - -#define MAC_BITBAND ((MAC_BitBand_TypeDef *) BITBAND_ADDRESS(MAC_BASE)) - -/******************************************************************************* - * CSR0 register: - *------------------------------------------------------------------------------ - * CSR0 - Bus Mode Register - */ -#define CSR0_REG_OFFSET 0x00 - -/*------------------------------------------------------------------------------ - * CSR0_DBO: - * DBO field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor byte ordering mode - */ -#define CSR0_DBO_OFFSET 0x00 -#define CSR0_DBO_MASK 0x00100000UL -#define CSR0_DBO_SHIFT 20 - -/* - * Allowed values for CSR0_DBO: - *------------------------------------------------------------------------------ - * LITTLEENDIAN: Little endian mode used for data descriptors - * BIGENDIAN: Big endian mode used for data descriptors - */ -#define LITTLEENDIAN 0u -#define BIGENDIAN 1u - -/*------------------------------------------------------------------------------ - * CSR0_TAP: - * TAP field of register CSR0. - *------------------------------------------------------------------------------ - * Transmit automatic polling - */ -#define CSR0_TAP_OFFSET 0x00 -#define CSR0_TAP_MASK 0x000E0000UL -#define CSR0_TAP_SHIFT 17 - -/* - * Allowed values for CSR0_TAP: - *------------------------------------------------------------------------------ - * TAP_DISABLED: TAP disabled - * TAP_819US: TAP 819/81.9us - * TAP_2450US: TAP 2450/245us - * TAP_5730US: TAP 5730/573us - * TAP_51_2US: TAP 51.2/5.12us - * TAP_102_4US: TAP 102.4/10.24us - * TAP_153_6US: TAP 156.6/15.26us - * TAP_358_4US: TAP 358.4/35.84us - */ -#define TAP_DISABLED 0x0 -#define TAP_819US 0x1 -#define TAP_2450US 0x2 -#define TAP_5730US 0x3 -#define TAP_51_2US 0x4 -#define TAP_102_4US 0x5 -#define TAP_153_6US 0x6 -#define TAP_358_4US 0x7 - -/*------------------------------------------------------------------------------ - * CSR0_PBL: - * PBL field of register CSR0. - *------------------------------------------------------------------------------ - * Programmable burst length - */ -#define CSR0_PBL_OFFSET 0x00 -#define CSR0_PBL_MASK 0x00003F00uL -#define CSR0_PBL_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR0_BLE: - * BLE field of register CSR0. - *------------------------------------------------------------------------------ - * Big/little endian - */ -#define CSR0_BLE_OFFSET 0x00 -#define CSR0_BLE_MASK 0x00000080uL -#define CSR0_BLE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR0_DSL: - * DSL field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor skip length - */ -#define CSR0_DSL_OFFSET 0x00 -#define CSR0_DSL_MASK 0x0000007CuL -#define CSR0_DSL_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR0_BAR: - * BAR field of register CSR0. - *------------------------------------------------------------------------------ - * Bus arbitration scheme - */ -#define CSR0_BAR_OFFSET 0x00 -#define CSR0_BAR_MASK 0x00000002uL -#define CSR0_BAR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR0_SWR: - * SWR field of register CSR0. - *------------------------------------------------------------------------------ - * Software reset - */ -#define CSR0_SWR_OFFSET 0x00 -#define CSR0_SWR_MASK 0x00000001uL -#define CSR0_SWR_SHIFT 0 - -/******************************************************************************* - * CSR1 register: - *------------------------------------------------------------------------------ - * CSR1 - Transmit Poll Demand Register - */ -#define CSR1_REG_OFFSET 0x08 - -/*------------------------------------------------------------------------------ - * CSR1_TPD3: - * TPD3 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(31..24) - */ -#define CSR1_TPD3_OFFSET 0x08 -#define CSR1_TPD3_MASK 0xFF000000uL -#define CSR1_TPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR1_TPD2: - * TPD2 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(23..16) - */ -#define CSR1_TPD2_OFFSET 0x08 -#define CSR1_TPD2_MASK 0x00FF0000uL -#define CSR1_TPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR1_TPD1: - * TPD1 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(15..8) - */ -#define CSR1_TPD1_OFFSET 0x08 -#define CSR1_TPD1_MASK 0x0000FF00uL -#define CSR1_TPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR1_TPD0: - * TPD0 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(7..0) - */ -#define CSR1_TPD0_OFFSET 0x08 -#define CSR1_TPD0_MASK 0x000000FFuL -#define CSR1_TPD0_SHIFT 0 - -/******************************************************************************* - * CSR2 register: - *------------------------------------------------------------------------------ - * CSR2 - Receive Poll Demand Register - */ -#define CSR2_REG_OFFSET 0x10 - -/*------------------------------------------------------------------------------ - * CSR2_RPD3: - * RPD3 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(31..24) - */ -#define CSR2_RPD3_OFFSET 0x10 -#define CSR2_RPD3_MASK 0xFF000000uL -#define CSR2_RPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR2_RPD2: - * RPD2 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(23..16) - */ -#define CSR2_RPD2_OFFSET 0x10 -#define CSR2_RPD2_MASK 0x00FF0000uL -#define CSR2_RPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR2_RPD1: - * RPD1 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(15..8) - */ -#define CSR2_RPD1_OFFSET 0x10 -#define CSR2_RPD1_MASK 0x0000FF00uL -#define CSR2_RPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR2_RPD0: - * RPD0 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(7..0) - */ -#define CSR2_RPD0_OFFSET 0x10 -#define CSR2_RPD0_MASK 0x000000FFuL -#define CSR2_RPD0_SHIFT 0 - -/******************************************************************************* - * CSR3 register: - *------------------------------------------------------------------------------ - * CSR3 - Receive Descriptor List Base Address Register - */ -#define CSR3_REG_OFFSET 0x18 - -/*------------------------------------------------------------------------------ - * CSR3_RLA3: - * RLA3 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(31..24) - */ -#define CSR3_RLA3_OFFSET 0x18 -#define CSR3_RLA3_MASK 0xFF000000uL -#define CSR3_RLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR3_RLA2: - * RLA2 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(23..16) - */ -#define CSR3_RLA2_OFFSET 0x18 -#define CSR3_RLA2_MASK 0x00FF0000uL -#define CSR3_RLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR3_RLA1: - * RLA1 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(15..8) - */ -#define CSR3_RLA1_OFFSET 0x18 -#define CSR3_RLA1_MASK 0x0000FF00uL -#define CSR3_RLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR3_RLA0: - * RLA0 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(7..0) - */ -#define CSR3_RLA0_OFFSET 0x18 -#define CSR3_RLA0_MASK 0x000000FFuL -#define CSR3_RLA0_SHIFT 0 - -/******************************************************************************* - * CSR4 register: - *------------------------------------------------------------------------------ - * CSR4 - Transmit Descriptor List Base Address Register - */ -#define CSR4_REG_OFFSET 0x20 - -/*------------------------------------------------------------------------------ - * CSR4_TLA3: - * TLA3 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(31..24) - */ -#define CSR4_TLA3_OFFSET 0x20 -#define CSR4_TLA3_MASK 0xFF000000uL -#define CSR4_TLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR4_TLA2: - * TLA2 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(23..16) - */ -#define CSR4_TLA2_OFFSET 0x20 -#define CSR4_TLA2_MASK 0x00FF0000uL -#define CSR4_TLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR4_TLA1: - * TLA1 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(15..8) - */ -#define CSR4_TLA1_OFFSET 0x20 -#define CSR4_TLA1_MASK 0x0000FF00uL -#define CSR4_TLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR4_TLA0: - * TLA0 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(7..0) - */ -#define CSR4_TLA0_OFFSET 0x20 -#define CSR4_TLA0_MASK 0x000000FFuL -#define CSR4_TLA0_SHIFT 0 - -/******************************************************************************* - * CSR5 register: - *------------------------------------------------------------------------------ - * CSR5 - Status Register - */ -#define CSR5_REG_OFFSET 0x28 -#define CSR5_INT_BITS (CSR5_NIS_MASK | CSR5_AIS_MASK | CSR5_ERI_MASK | \ - CSR5_GTE_MASK | CSR5_ETI_MASK | CSR5_RPS_MASK | CSR5_RU_MASK | \ - CSR5_RI_MASK | CSR5_UNF_MASK | CSR5_TU_MASK | CSR5_TPS_MASK | CSR5_TI_MASK) - -/*------------------------------------------------------------------------------ - * CSR5_TS: - * TS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process state - */ -#define CSR5_TS_OFFSET 0x28 -#define CSR5_TS_MASK 0x00700000uL -#define CSR5_TS_SHIFT 20 - -/** 000 - Stopped; RESET or STOP TRANSMIT command issued. */ -#define CSR5_TS_STOPPED 0u -/** 001 - Running, fetching the transmit descriptor. */ -#define CSR5_TS_RUNNING_FD 1u -/** 010 - Running, waiting for end of transmission. */ -#define CSR5_TS_RUNNING_WT 2u -/** 011 - Running, transferring data buffer from host memory to FIFO. */ -#define CSR5_TS_RUNNING_TD 3u -/** 101 - Running, setup packet. */ -#define CSR5_TS_RUNNING_SP 5u -/** 110 - Suspended; FIFO underflow or unavailable descriptor. */ -#define CSR5_TS_SUSPENDED 6u -/** 111 - Running, closing transmit descriptor. */ -#define CSR5_TS_RUNNING_CD 7u - -/*------------------------------------------------------------------------------ - * CSR5_RS: - * RS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process state - */ -#define CSR5_RS_OFFSET 0x28 -#define CSR5_RS_MASK 0x00060000uL -#define CSR5_RS_SHIFT 17 - -/** 000 - Stopped; RESET or STOP RECEIVE command issued. */ -#define CSR5_RS_STOPPED 0u -/** 001 - Running, fetching the receive descriptor. */ -#define CSR5_RS_RUNNING_FD 1u -/** 010 - Running, waiting for the end-of-receive packet before prefetch of the - *next descriptor. */ -#define CSR5_RS_RUNNING_WR 2u -/** 011 - Running, waiting for the receive packet. */ -#define CSR5_RS_RUNNING_RB 3u -/** 100 - Suspended, unavailable receive buffer. */ -#define CSR5_RS_SUSPENDED 4u -/** 101 - Running, closing the receive descriptor. */ -#define CSR5_RS_RUNNING_CD 5u -/** 111 - Running, transferring data from FIFO to host memory. */ -#define CSR5_RS_RUNNING_TD 7u - -/*------------------------------------------------------------------------------ - * CSR5_NIS: - * NIS field of register CSR5. - *------------------------------------------------------------------------------ - * Normal interrupt summary - */ -#define CSR5_NIS_OFFSET 0x28 -#define CSR5_NIS_MASK 0x00010000uL -#define CSR5_NIS_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR5_AIS: - * AIS field of register CSR5. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary - */ -#define CSR5_AIS_OFFSET 0x28 -#define CSR5_AIS_MASK 0x00008000UL -#define CSR5_AIS_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR5_ERI: - * ERI field of register CSR5. - *------------------------------------------------------------------------------ - * Early receive interrupt - */ -#define CSR5_ERI_OFFSET 0x28 -#define CSR5_ERI_MASK 0x00004000UL -#define CSR5_ERI_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR5_GTE: - * GTE field of register CSR5. - *------------------------------------------------------------------------------ - * General-purpose timer expiration - */ -#define CSR5_GTE_OFFSET 0x28 -#define CSR5_GTE_MASK 0x00000800UL -#define CSR5_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR5_ETI: - * ETI field of register CSR5. - *------------------------------------------------------------------------------ - * Early transmit interrupt - */ -#define CSR5_ETI_OFFSET 0x28 -#define CSR5_ETI_MASK 0x00000400UL -#define CSR5_ETI_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR5_RPS: - * RPS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process stopped - */ -#define CSR5_RPS_OFFSET 0x28 -#define CSR5_RPS_MASK 0x00000100UL -#define CSR5_RPS_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR5_RU: - * RU field of register CSR5. - *------------------------------------------------------------------------------ - * Receive buffer unavailable - */ -#define CSR5_RU_OFFSET 0x28 -#define CSR5_RU_MASK 0x00000080UL -#define CSR5_RU_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR5_RI: - * RI field of register CSR5. - *------------------------------------------------------------------------------ - * Receive interrupt - */ -#define CSR5_RI_OFFSET 0x28 -#define CSR5_RI_MASK 0x00000040UL -#define CSR5_RI_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR5_UNF: - * UNF field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit underflow - */ -#define CSR5_UNF_OFFSET 0x28 -#define CSR5_UNF_MASK 0x00000020UL -#define CSR5_UNF_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR5_TU: - * TU field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable - */ -#define CSR5_TU_OFFSET 0x28 -#define CSR5_TU_MASK 0x00000004UL -#define CSR5_TU_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR5_TPS: - * TPS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process stopped - */ -#define CSR5_TPS_OFFSET 0x28 -#define CSR5_TPS_MASK 0x00000002UL -#define CSR5_TPS_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR5_TI: - * TI field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit interrupt - */ -#define CSR5_TI_OFFSET 0x28 -#define CSR5_TI_MASK 0x00000001UL -#define CSR5_TI_SHIFT 0 - -/******************************************************************************* - * CSR6 register: - *------------------------------------------------------------------------------ - * CSR6 - Operation Mode Register - */ -#define CSR6_REG_OFFSET 0x30 - -/*------------------------------------------------------------------------------ - * CSR6_RA: - * RA field of register CSR6. - *------------------------------------------------------------------------------ - * Receive all - */ -#define CSR6_RA_OFFSET 0x30 -#define CSR6_RA_MASK 0x40000000UL -#define CSR6_RA_SHIFT 30 - -/*------------------------------------------------------------------------------ - * CSR6_TTM: - * TTM field of register CSR6. - *------------------------------------------------------------------------------ - * Transmit threshold mode - */ -#define CSR6_TTM_OFFSET 0x30 -#define CSR6_TTM_MASK 0x00400000UL -#define CSR6_TTM_SHIFT 22 - -/*------------------------------------------------------------------------------ - * CSR6_SF: - * SF field of register CSR6. - *------------------------------------------------------------------------------ - * Store and forward - */ -#define CSR6_SF_OFFSET 0x30 -#define CSR6_SF_MASK 0x00200000UL -#define CSR6_SF_SHIFT 21 - -/*------------------------------------------------------------------------------ - * CSR6_TR: - * TR field of register CSR6. - *------------------------------------------------------------------------------ - * Threshold control bits - */ -#define CSR6_TR_OFFSET 0x30 -#define CSR6_TR_MASK 0x0000C000UL -#define CSR6_TR_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR6_ST: - * ST field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop transmit command - */ -#define CSR6_ST_OFFSET 0x30 -#define CSR6_ST_MASK 0x00002000UL -#define CSR6_ST_SHIFT 13 - -/*------------------------------------------------------------------------------ - * CSR6_FD: - * FD field of register CSR6. - *------------------------------------------------------------------------------ - * Full-duplex mode - */ -#define CSR6_FD_OFFSET 0x30 -#define CSR6_FD_MASK 0x00000200UL -#define CSR6_FD_SHIFT 9 - -/*------------------------------------------------------------------------------ - * CSR6_PM: - * PM field of register CSR6. - *------------------------------------------------------------------------------ - * Pass all multicast - */ -#define CSR6_PM_OFFSET 0x30 -#define CSR6_PM_MASK 0x00000080UL -#define CSR6_PM_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR6_PR: - * PR field of register CSR6. - *------------------------------------------------------------------------------ - * Promiscuous mode - */ -#define CSR6_PR_OFFSET 0x30 -#define CSR6_PR_MASK 0x00000040UL -#define CSR6_PR_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR6_IF: - * IF field of register CSR6. - *------------------------------------------------------------------------------ - * Inverse filtering - */ -#define CSR6_IF_OFFSET 0x30 -#define CSR6_IF_MASK 0x00000010UL -#define CSR6_IF_SHIFT 4 - -/*------------------------------------------------------------------------------ - * CSR6_PB: - * PB field of register CSR6. - *------------------------------------------------------------------------------ - * Pass bad frames - */ -#define CSR6_PB_OFFSET 0x30 -#define CSR6_PB_MASK 0x00000008UL -#define CSR6_PB_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR6_HO: - * HO field of register CSR6. - *------------------------------------------------------------------------------ - * Hash-only filtering mode - */ -#define CSR6_HO_OFFSET 0x30 -#define CSR6_HO_MASK 0x00000004UL -#define CSR6_HO_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR6_SR: - * SR field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop receive command - */ -#define CSR6_SR_OFFSET 0x30 -#define CSR6_SR_MASK 0x00000002UL -#define CSR6_SR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR6_HP: - * HP field of register CSR6. - *------------------------------------------------------------------------------ - * Hash/perfect receive filtering mode - */ -#define CSR6_HP_OFFSET 0x30 -#define CSR6_HP_MASK 0x00000001UL -#define CSR6_HP_SHIFT 0 - -/******************************************************************************* - * CSR7 register: - *------------------------------------------------------------------------------ - * CSR7 - Interrupt Enable Register - */ -#define CSR7_REG_OFFSET 0x38 - -/*------------------------------------------------------------------------------ - * CSR7_NIE: - * NIE field of register CSR7. - *------------------------------------------------------------------------------ - * Normal interrupt summary enable - */ -#define CSR7_NIE_OFFSET 0x38 -#define CSR7_NIE_MASK 0x00010000UL -#define CSR7_NIE_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR7_AIE: - * AIE field of register CSR7. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary enable - */ -#define CSR7_AIE_OFFSET 0x38 -#define CSR7_AIE_MASK 0x00008000UL -#define CSR7_AIE_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR7_ERE: - * ERE field of register CSR7. - *------------------------------------------------------------------------------ - * Early receive interrupt enable - */ -#define CSR7_ERE_OFFSET 0x38 -#define CSR7_ERE_MASK 0x00004000UL -#define CSR7_ERE_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR7_GTE: - * GTE field of register CSR7. - *------------------------------------------------------------------------------ - * General-purpose timer overflow enable - */ -#define CSR7_GTE_OFFSET 0x38 -#define CSR7_GTE_MASK 0x00000800UL -#define CSR7_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR7_ETE: - * ETE field of register CSR7. - *------------------------------------------------------------------------------ - * Early transmit interrupt enable - */ -#define CSR7_ETE_OFFSET 0x38 -#define CSR7_ETE_MASK 0x00000400UL -#define CSR7_ETE_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR7_RSE: - * RSE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive stopped enable - */ -#define CSR7_RSE_OFFSET 0x38 -#define CSR7_RSE_MASK 0x00000100UL -#define CSR7_RSE_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR7_RUE: - * RUE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive buffer unavailable enable - */ -#define CSR7_RUE_OFFSET 0x38 -#define CSR7_RUE_MASK 0x00000080UL -#define CSR7_RUE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR7_RIE: - * RIE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive interrupt enable - */ -#define CSR7_RIE_OFFSET 0x38 -#define CSR7_RIE_MASK 0x00000040UL -#define CSR7_RIE_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR7_UNE: - * UNE field of register CSR7. - *------------------------------------------------------------------------------ - * Underflow interrupt enable - */ -#define CSR7_UNE_OFFSET 0x38 -#define CSR7_UNE_MASK 0x00000020UL -#define CSR7_UNE_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR7_TUE: - * TUE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable enable - */ -#define CSR7_TUE_OFFSET 0x38 -#define CSR7_TUE_MASK 0x00000004UL -#define CSR7_TUE_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR7_TSE: - * TSE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit stopped enable - */ -#define CSR7_TSE_OFFSET 0x38 -#define CSR7_TSE_MASK 0x00000002UL -#define CSR7_TSE_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR7_TIE: - * TIE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit interrupt enable - */ -#define CSR7_TIE_OFFSET 0x38 -#define CSR7_TIE_MASK 0x00000001UL -#define CSR7_TIE_SHIFT 0 - -/******************************************************************************* - * CSR8 register: - *------------------------------------------------------------------------------ - * CSR8 - Missed Frames and Overflow Counter Register - */ -#define CSR8_REG_OFFSET 0x40 - -/*------------------------------------------------------------------------------ - * CSR8_OCO: - * OCO field of register CSR8. - *------------------------------------------------------------------------------ - * Overflow counter overflow - */ -#define CSR8_OCO_OFFSET 0x40 -#define CSR8_OCO_MASK 0x10000000UL -#define CSR8_OCO_SHIFT 28 - -/*------------------------------------------------------------------------------ - * CSR8_FOC: - * FOC field of register CSR8. - *------------------------------------------------------------------------------ - * FIFO overflow counter - */ -#define CSR8_FOC_OFFSET 0x40 -#define CSR8_FOC_MASK 0x0FFE0000UL -#define CSR8_FOC_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR8_MFO: - * MFO field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame overflow - */ -#define CSR8_MFO_OFFSET 0x40 -#define CSR8_MFO_MASK 0x00010000UL -#define CSR8_MFO_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR8_MFC: - * MFC field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame counter - */ -#define CSR8_MFC_OFFSET 0x40 -#define CSR8_MFC_MASK 0x0000FFFFUL -#define CSR8_MFC_SHIFT 0 - -/******************************************************************************* - * CSR9 register: - *------------------------------------------------------------------------------ - * CSR9 - MII Management and Serial ROM Interface Register - */ -#define CSR9_REG_OFFSET 0x48 - -/*------------------------------------------------------------------------------ - * CSR9_MDI: - * MDI field of register CSR9. - *------------------------------------------------------------------------------ - * MII management data in signal - */ -#define CSR9_MDI_OFFSET 0x48 -#define CSR9_MDI_MASK 0x00080000UL -#define CSR9_MDI_SHIFT 19 - -/*------------------------------------------------------------------------------ - * CSR9_MII: - * MII field of register CSR9. - *------------------------------------------------------------------------------ - * MII management operation mode - */ -#define CSR9_MII_OFFSET 0x48 -#define CSR9_MII_MASK 0x00040000UL -#define CSR9_MII_SHIFT 18 - -/*------------------------------------------------------------------------------ - * CSR9_MDO: - * MDO field of register CSR9. - *------------------------------------------------------------------------------ - * MII management write data - */ -#define CSR9_MDO_OFFSET 0x48 -#define CSR9_MDO_MASK 0x00020000UL -#define CSR9_MDO_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR9_MDC: - * MDC field of register CSR9. - *------------------------------------------------------------------------------ - * MII management clock - */ -#define CSR9_MDC_OFFSET 0x48 -#define CSR9_MDC_MASK 0x00010000UL -#define CSR9_MDC_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR9_SDO: - * SDO field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data output - */ -#define CSR9_SDO_OFFSET 0x48 -#define CSR9_SDO_MASK 0x00000008UL -#define CSR9_SDO_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR9_SDI: - * SDI field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data input - */ -#define CSR9_SDI_OFFSET 0x48 -#define CSR9_SDI_MASK 0x00000004UL -#define CSR9_SDI_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR9_SCLK: - * SCLK field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM clock - */ -#define CSR9_SCLK_OFFSET 0x48 -#define CSR9_SCLK_MASK 0x00000002UL -#define CSR9_SCLK_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR9_SCS: - * SCS field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM chip select - */ -#define CSR9_SCS_OFFSET 0x48 -#define CSR9_SCS_MASK 0x00000001UL -#define CSR9_SCS_SHIFT 0 - -/******************************************************************************* - * CSR11 register: - *------------------------------------------------------------------------------ - * CSR11 - General-Purpose Timer and Interrupt Mitigation Control Register - */ -#define CSR11_REG_OFFSET 0x58 - -/*------------------------------------------------------------------------------ - * CSR11_CS: - * CS field of register CSR11. - *------------------------------------------------------------------------------ - * Cycle size - */ -#define CSR11_CS_OFFSET 0x58 -#define CSR11_CS_MASK 0x80000000UL -#define CSR11_CS_SHIFT 31 - -/*------------------------------------------------------------------------------ - * CSR11_TT: - * TT field of register CSR11. - *------------------------------------------------------------------------------ - * Transmit timer - */ -#define CSR11_TT_OFFSET 0x58 -#define CSR11_TT_MASK 0x78000000UL -#define CSR11_TT_SHIFT 27 - -/*------------------------------------------------------------------------------ - * CSR11_NTP: - * NTP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of transmit packets - */ -#define CSR11_NTP_OFFSET 0x58 -#define CSR11_NTP_MASK 0x07000000UL -#define CSR11_NTP_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR11_RT: - * RT field of register CSR11. - *------------------------------------------------------------------------------ - * Receive timer - */ -#define CSR11_RT_OFFSET 0x58 -#define CSR11_RT_MASK 0x00F00000UL -#define CSR11_RT_SHIFT 20 - -/*------------------------------------------------------------------------------ - * CSR11_NRP: - * NRP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of receive packets - */ -#define CSR11_NRP_OFFSET 0x58 -#define CSR11_NRP_MASK 0x000E0000UL -#define CSR11_NRP_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR11_CON: - * CON field of register CSR11. - *------------------------------------------------------------------------------ - * Continuous mode - */ -#define CSR11_CON_OFFSET 0x58 -#define CSR11_CON_MASK 0x00010000UL -#define CSR11_CON_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR11_TIM: - * TIM field of register CSR11. - *------------------------------------------------------------------------------ - * Timer value - */ -#define CSR11_TIM_OFFSET 0x58 -#define CSR11_TIM_MASK 0x0000FFFFUL -#define CSR11_TIM_SHIFT 0 - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_ETHERNET_MAC_REGISTERS_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h deleted file mode 100644 index 8711243f4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * Actel:Firmware:MSS_Ethernet_MAC_Driver:2.0.103 configuration. - * - */ - - -#ifndef ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER -#define ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - - -#define CORE_VENDOR "Actel" -#define CORE_LIBRARY "Firmware" -#define CORE_NAME "MSS_Ethernet_MAC_Driver" -#define CORE_VERSION "2.0.103" - -#define BUS_ARBITRATION_SCHEME 0 -#define PROGRAMMABLE_BURST_LENGTH 0 -#define RX_RING_SIZE 5 -#define SETUP_FRAME_TIME_OUT 10000 -#define STATE_CHANGE_TIME_OUT 10000 -#define TX_RING_SIZE 2 - -#endif // ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c deleted file mode 100644 index e0433bace..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c +++ /dev/null @@ -1,390 +0,0 @@ -/***************************************************************************//** - * PHY access methods for DP83848C. - * The implementation in this file is specific to the DP83848C, - * If a different PHY support is required the PHY specific registers must - * be updated. - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2324 $ - * SVN $Date: 2010-02-26 10:47:36 +0000 (Fri, 26 Feb 2010) $ - * - ******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" - -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" - -extern MAC_instance_t g_mss_mac; - -/***************************** MDIO FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ -#define MDIO_START 0x00004000UL -#define MDIO_READ 0x00002000UL -#define MDIO_WRITE 0x00001002UL -#define MDIO_ADDR_OFFSET 7UL -#define MDIO_ADDR_MASK 0x00000f80UL -#define MDIO_REG_ADDR_OFFSET 2UL -#define MDIO_REG_ADDR_MASK 0x0000007cUL -#define PREAMBLECOUNT 32UL -#define ONEMICROSECOND 20UL - -typedef enum { - MDIO_CMD_READ, - MDIO_CMD_WRITE -}mdio_cmd_t; - - - -/***************************************************************************//** - * Set clock high or low. - */ -static void -MDIO_management_clock -( - int32_t clock -) -{ - int32_t volatile a; - - MAC_BITBAND->CSR9_MDC = (uint32_t)clock; - - /* delay for 1us */ - for( a = 0; a < ONEMICROSECOND; a++ ){} -} - - -/***************************************************************************//** - * Send read or write command to PHY. - */ -static void -MDIO_send_cmd -( - uint8_t regad, - mdio_cmd_t mdio_cmd -) -{ - int32_t i; - uint16_t mask, data; - - /* enable MII output */ - MAC_BITBAND->CSR9_MDEN = 1; - - /* send 32 1's preamble */ - MAC_BITBAND->CSR9_MDO = 1; - for (i = 0; i < PREAMBLECOUNT; i++) { - MDIO_management_clock( 0 ); - MDIO_management_clock( 1 ); - } - - /* calculate data bits */ - data = MDIO_START | - (( mdio_cmd == MDIO_CMD_READ ) ? MDIO_READ : MDIO_WRITE ) | - ((g_mss_mac.phy_address << MDIO_ADDR_OFFSET) & MDIO_ADDR_MASK) | - ((regad << MDIO_REG_ADDR_OFFSET) & MDIO_REG_ADDR_MASK); - - /* sent out */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - if ((mask == 0x2) && (mdio_cmd == MDIO_CMD_READ)) { - /* enable MII input */ - MAC_BITBAND->CSR9_MDEN = 0; - } - - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } -} - - -/***************************************************************************//** - * Reads a PHY register. - */ -static uint16_t -MDIO_read -( - uint8_t regad -) -{ - uint16_t mask; - uint16_t data; - - MDIO_send_cmd( regad, MDIO_CMD_READ); - - /* read data */ - data = 0; - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* read MDI */ - if(MAC_BITBAND-> CSR9_MDI != 0){ - data |= mask; - } - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); - - return data; -} - - -/***************************************************************************//** - * Writes to a PHY register. - */ -static void -MDIO_write -( - uint8_t regad, - uint16_t data -) -{ - uint16_t mask; - - MDIO_send_cmd(regad, MDIO_CMD_WRITE); - - /* write data */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); -} - - -/****************************** PHY FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ - -/* Base registers */ -#define PHYREG_MIIMCR 0x00 /**< MII Management Control Register */ -#define MIIMCR_RESET (1<<15) -#define MIIMCR_LOOPBACK (1<<14) -#define MIIMCR_SPEED_SELECT (1<<13) -#define MIIMCR_ENABLE_AUTONEGOTIATION (1<<12) -#define MIIMCR_RESTART_AUTONEGOTIATION (1<<9) -#define MIIMCR_DUPLEX_MODE (1<<8) -#define MIIMCR_COLLISION_TEST (1<<7) - -#define PHYREG_MIIMSR 0x01 /**< MII Management Status Register */ -#define MIIMSR_ANC (1<<5) /**< Auto-Negotiation Completed. */ -#define MIIMSR_LINK (1<<2) /**< Link is established. */ - -#define PHYREG_PHYID1R 0x02 /**< PHY Identifier 1 Register */ -#define PHYREG_PHYID2R 0x03 /**< PHY Identifier 2 Register */ - -#define PHYREG_ANAR 0x04 /**< Auto-Negotiation Advertisement Register */ -#define ANAR_100FD (1<<8) -#define ANAR_100HD (1<<7) -#define ANAR_10FD (1<<6) -#define ANAR_10HD (1<<5) - -#define PHYREG_ANLPAR 0x05 /**< Auto-Negotiation Link Partner Ability Register */ -#define PHYREG_ANER 0x06 /**< Auto-Negotiation Expansion Register */ -#define PHYREG_NPAR 0x07 /**< Next Page Advertisement Register */ -/* 0x08- 0x0F Reserved */ -#define PHYREG_MFR 0x10 /**< Miscellaneous Features Register */ -#define PHYREG_ICSR 0x11 /**< Interrupt Control/Status Register */ - -#define PHYREG_DR 0x12 /**< Diagnostic Register */ -#define DR_DPLX (1<<11) -#define DR_DATA_RATE (1<<10) - -#define PHYREG_PMLR 0x13 /**< Power Management & Loopback Register */ -/* 0x14 Reserved */ -#define PHYREG_MCR 0x15 /**< Mode Control Register */ -#define MCR_LED_SEL (1<<9) -/* 0x16 Reserved */ -#define PHYREG_DCR 0x17 /**< Disconnect Counter */ -#define PHYREG_RECR 0x18 /**< Receive Error Counter */ -/* 0x19-0x1F Reserved */ - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ) -{ - uint8_t phy; - uint8_t phy_found; - uint16_t reg; - - phy_found = 0; - for (phy = MSS_PHY_ADDRESS_MIN; phy <= MSS_PHY_ADDRESS_MAX; phy++) { - g_mss_mac.phy_address = phy; - - reg = MDIO_read( PHYREG_PHYID1R ); - - if ((reg != 0x0000ffffUL) && (reg != 0x00000000UL)) { - phy_found = 1; - phy = MSS_PHY_ADDRESS_MAX + 1; - } - } - - if( phy_found == 0 ) { - g_mss_mac.phy_address = MSS_PHY_ADDRESS_AUTO_DETECT; - } - return g_mss_mac.phy_address; -} - - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ) -{ - MDIO_write( PHYREG_MIIMCR, MIIMCR_RESET ); - MDIO_write( PHYREG_MIIMCR, - MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - MIIMCR_COLLISION_TEST ); -} - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_MIIMCR ); - MDIO_write( PHYREG_MIIMCR, - (uint16_t)( MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - reg) ); - - for( ;; ) { - reg = MDIO_read( PHYREG_MIIMSR ); - if( (reg & MIIMSR_ANC) != 0 ) { - break; - } else { - vTaskDelay( 200 ); - } - } -} - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ) -{ - uint8_t retval = 0; - if(( MDIO_read( PHYREG_MIIMSR ) & MIIMSR_LINK ) != 0 ){ - retval = MSS_MAC_LINK_STATUS_LINK; - } - return retval; -} - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ) -{ - uint16_t diagnostic; - uint8_t type = 0; - - diagnostic = MDIO_read( PHYREG_DR ); - - if( (diagnostic & DR_DPLX) != 0 ) { - type = MSS_MAC_LINK_STATUS_FDX; - } - - if( (diagnostic & DR_DATA_RATE) != 0 ) { - type |= MSS_MAC_LINK_STATUS_100MB; - } - - return type; -} - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_ANAR ); - reg |= ANAR_100FD | ANAR_100HD | ANAR_10FD | ANAR_10HD; - - if( (type & MSS_MAC_LINK_STATUS_100MB) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_100HD); - } - - if( (type & MSS_MAC_LINK_STATUS_FDX) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_10FD); - } - - MDIO_write( PHYREG_ANAR, reg ); -} - - -/***************************************************************************//** - * Puts the Phy in Loopback mode - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -) -{ - - uint16_t reg = 0; - - - reg = MDIO_read( PHYREG_MIIMCR ); - // If set to one we need to set the LOCAL Phy loopback - if(enable == 1) - reg |= MIIMCR_LOOPBACK; - else // else we want to clear the bit.. - reg ^= MIIMCR_LOOPBACK; - - - MDIO_write( PHYREG_MIIMCR,reg ); - reg = MDIO_read( PHYREG_MIIMCR ); - - return reg; - -} - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h deleted file mode 100644 index e61daaed2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h +++ /dev/null @@ -1,78 +0,0 @@ -/***************************************************************************//** - * PHY access methods. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2293 $ - * SVN $Date: 2010-02-24 13:52:02 +0000 (Wed, 24 Feb 2010) $ - * - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_PHY_H -#define __MSS_ETHERNET_MAC_PHY_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ); - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ); - - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ); - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ); - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ); - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -); - -/***************************************************************************//** - * Sets/Clears the phy loop back mode, based on the enable value - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -); - -#ifdef __cplusplus -} -#endif - -#endif /*__MSS_ETHERNET_MAC_PHY_H*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c deleted file mode 100644 index e3be9aaa0..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c +++ /dev/null @@ -1,283 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem GPIO bare metal driver implementation. - * - * SVN $Revision: 1753 $ - * SVN $Date: 2009-12-11 15:12:18 +0000 (Fri, 11 Dec 2009) $ - */ -#include "mss_gpio.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** -* -*/ -#define GPIO_INT_ENABLE_MASK (uint32_t)0x00000008UL -#define OUTPUT_BUFFER_ENABLE_MASK 0x00000004UL - -#define NB_OF_GPIO (uint32_t)32 - -/*-------------------------------------------------------------------------*//** - * Lookup table of GPIO configuration registers address indexed on GPIO ID. - */ -static uint32_t volatile * const g_config_reg_lut[NB_OF_GPIO] = -{ - &(GPIO->GPIO_0_CFG), - &(GPIO->GPIO_1_CFG), - &(GPIO->GPIO_2_CFG), - &(GPIO->GPIO_3_CFG), - &(GPIO->GPIO_4_CFG), - &(GPIO->GPIO_5_CFG), - &(GPIO->GPIO_6_CFG), - &(GPIO->GPIO_7_CFG), - &(GPIO->GPIO_8_CFG), - &(GPIO->GPIO_9_CFG), - &(GPIO->GPIO_10_CFG), - &(GPIO->GPIO_11_CFG), - &(GPIO->GPIO_12_CFG), - &(GPIO->GPIO_13_CFG), - &(GPIO->GPIO_14_CFG), - &(GPIO->GPIO_15_CFG), - &(GPIO->GPIO_16_CFG), - &(GPIO->GPIO_17_CFG), - &(GPIO->GPIO_18_CFG), - &(GPIO->GPIO_19_CFG), - &(GPIO->GPIO_20_CFG), - &(GPIO->GPIO_21_CFG), - &(GPIO->GPIO_22_CFG), - &(GPIO->GPIO_23_CFG), - &(GPIO->GPIO_24_CFG), - &(GPIO->GPIO_25_CFG), - &(GPIO->GPIO_26_CFG), - &(GPIO->GPIO_27_CFG), - &(GPIO->GPIO_28_CFG), - &(GPIO->GPIO_29_CFG), - &(GPIO->GPIO_30_CFG), - &(GPIO->GPIO_31_CFG) -}; - -/*-------------------------------------------------------------------------*//** - * Lookup table of Cortex-M3 GPIO interrupt number indexed on GPIO ID. - */ -static const IRQn_Type g_gpio_irqn_lut[NB_OF_GPIO] = -{ - GPIO0_IRQn, - GPIO1_IRQn, - GPIO2_IRQn, - GPIO3_IRQn, - GPIO4_IRQn, - GPIO5_IRQn, - GPIO6_IRQn, - GPIO7_IRQn, - GPIO8_IRQn, - GPIO9_IRQn, - GPIO10_IRQn, - GPIO11_IRQn, - GPIO12_IRQn, - GPIO13_IRQn, - GPIO14_IRQn, - GPIO15_IRQn, - GPIO16_IRQn, - GPIO17_IRQn, - GPIO18_IRQn, - GPIO19_IRQn, - GPIO20_IRQn, - GPIO21_IRQn, - GPIO22_IRQn, - GPIO23_IRQn, - GPIO24_IRQn, - GPIO25_IRQn, - GPIO26_IRQn, - GPIO27_IRQn, - GPIO28_IRQn, - GPIO29_IRQn, - GPIO30_IRQn, - GPIO31_IRQn -}; - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_init - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_init( void ) -{ - uint32_t i; - - /* reset MSS GPIO hardware */ - SYSREG->SOFT_RST_CR |= SYSREG_GPIO_SOFTRESET_MASK; - /* Clear any previously pended MSS GPIO interrupt */ - for ( i = 0U; i < NB_OF_GPIO; ++i ) - { - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[i] ); - } - /* Take MSS GPIO hardware out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_GPIO_SOFTRESET_MASK; -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_config - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - *(g_config_reg_lut[gpio_idx]) = config; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_set_output - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO_BITBAND->GPIO_OUT[gpio_idx] = (uint32_t)value; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_drive_inout - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -) -{ - uint32_t outputs_state; - uint32_t config; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - switch( inout_state ) - { - case MSS_GPIO_DRIVE_HIGH: - /* Set output high */ - outputs_state = GPIO->GPIO_OUT; - outputs_state |= (uint32_t)1 << gpio_idx; - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_DRIVE_LOW: - /* Set output low */ - outputs_state = GPIO->GPIO_OUT; - outputs_state &= ~((uint32_t)((uint32_t)1 << gpio_idx)); - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_HIGH_Z: - /* Disable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config &= ~OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - default: - ASSERT(0); - break; - } - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_enable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value | GPIO_INT_ENABLE_MASK); - NVIC_EnableIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_disable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value & ~GPIO_INT_ENABLE_MASK); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_clear_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO->GPIO_IRQ = ((uint32_t)1) << gpio_idx; - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h deleted file mode 100644 index 60220f128..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h +++ /dev/null @@ -1,488 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem GPIO bare metal software driver public - * API. - * - * SVN $Revision: 1751 $ - * SVN $Date: 2009-12-11 15:05:48 +0000 (Fri, 11 Dec 2009) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion MSS GPIO Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a block of 32 general - purpose input/outputs (GPIO). - This software driver provides a set of functions for controlling the MSS GPIO - block as part of a bare metal system where no operating system is available. - This driver can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS GPIOs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent use of some external pins through IOMUX configuration. - This feature allows optimizing external pin usage by assigning external pins - for usage by either the microcontroller subsystem or the FPGA fabric. - The MSS GPIO ports 0 to 15 are always connected to external pins but GPIO ports - 16 to 31 are routed through IOMUX to the SmartFusion device external pins. - These IOMUX are configured using the MSS Configurator tool. - Make sure the MSS GPIOs 16 to 31 are enabled in the MSS Configurator tool if - you wish to use them - - @section theory_op Theory of Operation - The MSS GPIO driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access MSS hardware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS GPIO driver functions are grouped into the following categories: - - Initiliazation - - Configuration - - Reading and setting GPIO state - - Interrupt control - - The MSS GPIO driver is initialized through a call to the GPIO_init() function. - The GPIO_init() function must be called before any other GPIO driver functions - can be called. - - Each GPIO port is individually configured through a call to the - MSS_GPIO_config() function. Configuration includes deciding if a GPIO port - will be used as an input, an output or both. GPIO ports configured as inputs can be - further configured to generate interrupts based on the input's state. - Interrupts can be level or edge sensitive. - - The state of the GPIO ports can be read and set using the following functions: - - MSS_GPIO_get_inputs() - - MSS_GPIO_get_outputs() - - MSS_GPIO_set_outputs() - - MSS_GPIO_set_output() - - MSS_GPIO_drive_inout() - - Interrupts generated by GPIO ports configured as inputs are controlled using - the following functions: - - MSS_GPIO_enable_irq() - - MSS_GPIO_disable_irq() - - MSS_GPIO_clear_irq() - - *//*=========================================================================*/ -#ifndef MSS_GPIO_H_ -#define MSS_GPIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/*-------------------------------------------------------------------------*//** - The mss_gpio_id_t enumeration is used to identify GPIOs as part of the - parameter to functions: - - MSS_GPIO_config(), - - MSS_GPIO_drive_inout(), - - MSS_GPIO_enable_irq(), - - MSS_GPIO_disable_irq(), - - MSS_GPIO_clear_irq() - */ -typedef enum __mss_gpio_id_t -{ - MSS_GPIO_0 = 0, - MSS_GPIO_1 = 1, - MSS_GPIO_2 = 2, - MSS_GPIO_3 = 3, - MSS_GPIO_4 = 4, - MSS_GPIO_5 = 5, - MSS_GPIO_6 = 6, - MSS_GPIO_7 = 7, - MSS_GPIO_8 = 8, - MSS_GPIO_9 = 9, - MSS_GPIO_10 = 10, - MSS_GPIO_11 = 11, - MSS_GPIO_12 = 12, - MSS_GPIO_13 = 13, - MSS_GPIO_14 = 14, - MSS_GPIO_15 = 15, - MSS_GPIO_16 = 16, - MSS_GPIO_17 = 17, - MSS_GPIO_18 = 18, - MSS_GPIO_19 = 19, - MSS_GPIO_20 = 20, - MSS_GPIO_21 = 21, - MSS_GPIO_22 = 22, - MSS_GPIO_23 = 23, - MSS_GPIO_24 = 24, - MSS_GPIO_25 = 25, - MSS_GPIO_26 = 26, - MSS_GPIO_27 = 27, - MSS_GPIO_28 = 28, - MSS_GPIO_29 = 29, - MSS_GPIO_30 = 30, - MSS_GPIO_31 = 31 -} mss_gpio_id_t; - -/*-------------------------------------------------------------------------*//** - GPIO ports definitions used to identify GPIOs as part of the parameter to - function MSS_GPIO_set_outputs(). - These definitions can also be used to identity GPIO through logical - operations on the return value of function MSS_GPIO_get_inputs(). - */ -#define MSS_GPIO_0_MASK 0x00000001UL -#define MSS_GPIO_1_MASK 0x00000002UL -#define MSS_GPIO_2_MASK 0x00000004UL -#define MSS_GPIO_3_MASK 0x00000008UL -#define MSS_GPIO_4_MASK 0x00000010UL -#define MSS_GPIO_5_MASK 0x00000020UL -#define MSS_GPIO_6_MASK 0x00000040UL -#define MSS_GPIO_7_MASK 0x00000080UL -#define MSS_GPIO_8_MASK 0x00000100UL -#define MSS_GPIO_9_MASK 0x00000200UL -#define MSS_GPIO_10_MASK 0x00000400UL -#define MSS_GPIO_11_MASK 0x00000800UL -#define MSS_GPIO_12_MASK 0x00001000UL -#define MSS_GPIO_13_MASK 0x00002000UL -#define MSS_GPIO_14_MASK 0x00004000UL -#define MSS_GPIO_15_MASK 0x00008000UL -#define MSS_GPIO_16_MASK 0x00010000UL -#define MSS_GPIO_17_MASK 0x00020000UL -#define MSS_GPIO_18_MASK 0x00040000UL -#define MSS_GPIO_19_MASK 0x00080000UL -#define MSS_GPIO_20_MASK 0x00100000UL -#define MSS_GPIO_21_MASK 0x00200000UL -#define MSS_GPIO_22_MASK 0x00400000UL -#define MSS_GPIO_23_MASK 0x00800000UL -#define MSS_GPIO_24_MASK 0x01000000UL -#define MSS_GPIO_25_MASK 0x02000000UL -#define MSS_GPIO_26_MASK 0x04000000UL -#define MSS_GPIO_27_MASK 0x08000000UL -#define MSS_GPIO_28_MASK 0x10000000UL -#define MSS_GPIO_29_MASK 0x20000000UL -#define MSS_GPIO_30_MASK 0x40000000UL -#define MSS_GPIO_31_MASK 0x80000000UL - -/*-------------------------------------------------------------------------*//** - * GPIO modes - */ -#define MSS_GPIO_INPUT_MODE 0x0000000002UL -#define MSS_GPIO_OUTPUT_MODE 0x0000000005UL -#define MSS_GPIO_INOUT_MODE 0x0000000003UL - -/*-------------------------------------------------------------------------*//** - * Possible GPIO inputs interrupt configurations. - */ -#define MSS_GPIO_IRQ_LEVEL_HIGH 0x0000000000UL -#define MSS_GPIO_IRQ_LEVEL_LOW 0x0000000020UL -#define MSS_GPIO_IRQ_EDGE_POSITIVE 0x0000000040UL -#define MSS_GPIO_IRQ_EDGE_NEGATIVE 0x0000000060UL -#define MSS_GPIO_IRQ_EDGE_BOTH 0x0000000080UL - -/*-------------------------------------------------------------------------*//** - * Possible states for GPIO configured as INOUT. - */ -typedef enum mss_gpio_inout_state -{ - MSS_GPIO_DRIVE_LOW = 0, - MSS_GPIO_DRIVE_HIGH, - MSS_GPIO_HIGH_Z -} mss_gpio_inout_state_t; - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_init() function initializes the SmartFusion MSS GPIO block. It - resets the MSS GPIO hardware block and it also clears any pending MSS GPIO - interrupts in the Cortex-M3 interrupt controller. - - @return - none. - */ -void MSS_GPIO_init( void ); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_config() function is used to configure an individual - GPIO port. - - @param port_id - The port_id parameter identifies the GPIO port to be configured. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param config - The config parameter specifies the configuration to be applied to the GPIO - port identified by the port_id parameter. It is a logical OR of the required - I/O mode and the required interrupt mode. The interrupt mode is not relevant - if the GPIO is configured as an output only. - These I/O mode constants are allowed: - - MSS_GPIO_INPUT_MODE - - MSS_GPIO_OUTPUT_MODE - - MSS_GPIO_INOUT_MODE - These interrupt mode constants are allowed: - - MSS_GPIO_IRQ_LEVEL_HIGH - - MSS_GPIO_IRQ_LEVEL_LOW - - MSS_GPIO_IRQ_EDGE_POSITIVE - - MSS_GPIO_IRQ_EDGE_NEGATIVE - - MSS_GPIO_IRQ_EDGE_BOTH - - @return - none. - - Example: - The following call will configure GPIO 4 as an input generating interrupts on - a low to high transition of the input: - @code - MSS_GPIO_config( MSS_GPIO_4, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_POSITIVE ); - @endcode - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_outputs() function is used to set the state of all GPIO - ports configured as outputs. - - @param value - The value parameter specifies the state of the GPIO ports configured as - outputs. It is a bit mask of the form (MSS_GPIO_n_MASK | MSS_GPIO_m_MASK) where n - and m are numbers identifying GPIOs. - For example (MSS_GPIO_0_MASK | MSS_GPIO_1_MASK | MSS_GPIO_2_MASK ) specifies - that the first, second and third GPIOs' must be set high and all other - outputs set low. - The driver provides 32 mask constants, MSS_GPIO_0_MASK to MSS_GPIO_31_MASK - inclusive, for this purpose. - - @return - none. - - Example 1: - Set GPIOs outputs 0 and 8 high and all other GPIO outputs low. - @code - MSS_GPIO_set_outputs( MSS_GPIO_0_MASK | MSS_GPIO_8_MASK ); - @endcode - - Example 2: - Set GPIOs outputs 2 and 4 low without affecting other GPIO outputs. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - gpio_outputs &= ~( MSS_GPIO_2_MASK | MSS_GPIO_4_MASK ); - MSS_GPIO_set_outputs( gpio_outputs ); - @endcode - - @see MSS_GPIO_get_outputs() - */ -static __INLINE void -MSS_GPIO_set_outputs -( - uint32_t value -) -{ - GPIO->GPIO_OUT = value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_output() function is used to set the state of a single GPIO - port configured as output. - - @param port_id - The port_id parameter identifies the GPIO port that is to have its output set. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @param value - The value parameter specifies the desired state for the GPIO output. A value - of 0 will set the output low and a value of 1 will set the output high. - - @return - none. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_inputs() function is used to read the current state of all - GPIO ports confgured as inputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO input. The least significant bit represents the state of - GPIO input 0 and the most significant bit the state of GPIO input 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_inputs; - gpio_inputs = MSS_GPIO_get_inputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_inputs( void ) -{ - return GPIO->GPIO_IN; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_outputs() function is used to read the current state of all - GPIO ports confgured as outputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO output. The least significant bit represents the state - of GPIO output 0 and the most significant bit the state of GPIO output 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_outputs( void ) -{ - return GPIO->GPIO_OUT; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_drive_inout() function is used to set the output state of a single - GPIO port configured as an INOUT. An INOUT GPIO can be in one of three states: - - high - - low - - high impedance - An INOUT output would typically be used where several devices can drive the - state of a shared signal line. The high and low states are equivalent to the - high and low states of a GPIO configured as output. The high impedance state - is used to prevent the GPIO from driving its output state onto the signal line, - while at the same time allowing the input state of the GPIO to be read - - @param port_id - The port_id parameter identifies the GPIO port for which you want to change - the output state. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param inout_state - The inout_state parameter specifies the state of the GPIO port identified by - the port_id parameter. Allowed values of type mss_gpio_inout_state_t are: - - MSS_GPIO_DRIVE_HIGH - - MSS_GPIO_DRIVE_LOW - - MSS_GPIO_HIGH_Z (high impedance) - - @return - none. - - Example: - The call to MSS_GPIO_drive_inout() below will set the GPIO 7 output to the - high impedance state. - @code - MSS_GPIO_drive_inout( MSS_GPIO_7, MSS_GPIO_HIGH_Z ); - @endcode - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_enable_irq() function is used to enable interrupt generation - for the specified GPIO input. Interrupts are generated based on the state of - the GPIO input and the interrupt mode configured for it by MSS_GPIO_config(). - - @param port_id - The port_id parameter identifies the GPIO port for which you want to enable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_enable_irq() below will allow GPIO 8 to generate - interrupts. - @code - MSS_GPIO_enable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_disable_irq() function is used to disable interrupt generation - for the specified GPIO input. - - @param port_id - The port_id parameter identifies the GPIO port for which you want to disable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_disable_irq() below will prevent GPIO 8 from generating - interrupts. - @code - MSS_GPIO_disable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_clear_irq() function is used to clear a pending interrupt from - the specified GPIO input. - Note: The MSS_GPIO_clear_irq() function must be called as part of any GPIO - interrupt service routine (ISR) in order to prevent the same interrupt event - retriggering a call to the GPIO ISR. The function also clears the interrupt - in the Cortex-M3 interrupt controller through a call to NVIC_ClearPendingIRQ(). - - @param port_id - The port_id parameter identifies the GPIO input for which you want to clear the - interrupt. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The example below demonstrates the use of the MSS_GPIO_clear_irq() function - as part of the GPIO 9 interrupt service routine. - @code - void GPIO9_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_GPIO_clear_irq( MSS_GPIO_9 ); - } - @endcode - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -); - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_GPIO_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c deleted file mode 100644 index b49dca4ea..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c +++ /dev/null @@ -1,413 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem Peripheral DMA bare metal software - * driver implementation. - * - * SVN $Revision: 2110 $ - * SVN $Date: 2010-02-05 15:24:19 +0000 (Fri, 05 Feb 2010) $ - */ -#include "mss_pdma.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(__GNUC__) -__attribute__((__interrupt__)) void DMA_IRQHandler( void ); -#else -void DMA_IRQHandler( void ); -#endif - -/***************************************************************************//** - Offset of the posted writes WRITE_ADJ bits in a PDMA channel's configuration - register. - */ -#define CHANNEL_N_POSTED_WRITE_ADJUST_SHIFT 14 - -/*-------------------------------------------------------------------------*//** - * Look-up table use to derice a channel's control register value from the - * requested source/destination. This table is incexed on the pdma_src_dest_t - * enumeration. - */ -#define CHANNEL_N_CTRL_PDMA_MASK (uint32_t)0x00000001 -#define CHANNEL_N_PERIPH_SELECT_SHIFT (uint32_t)23 -#define CHANNEL_N_DIRECTION_MASK (uint32_t)0x00000002 - -const uint32_t src_dest_to_ctrl_reg_lut[] = -{ - CHANNEL_N_CTRL_PDMA_MASK, /* PDMA_FROM_UART_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)1 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_UART_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)2 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_UART_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)3 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_UART_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)4 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_SPI_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)5 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_SPI_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)6 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_SPI_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)7 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_SPI_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)8 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_FPGA_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)8 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_FPGA_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)9 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_FPGA_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)9 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_FPGA_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)10 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_ACE */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)11 << CHANNEL_N_PERIPH_SELECT_SHIFT) /* PDMA_FROM_ACE */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -#define PDMA_MASTER_ENABLE (uint32_t)0x04 -#define PDMA_SOFT_RESET (uint32_t)0x20 - -/*-------------------------------------------------------------------------*//** - * - */ -#define NB_OF_PDMA_CHANNELS 8 - -#define NEXT_CHANNEL_A 0U -#define NEXT_CHANNEL_B 1U - -#define CHANNEL_STOPPED 0U -#define CHANNEL_STARTED 1U - -static uint8_t g_pdma_next_channel[NB_OF_PDMA_CHANNELS]; -static uint8_t g_pdma_started_a[NB_OF_PDMA_CHANNELS]; -static uint8_t g_pdma_started_b[NB_OF_PDMA_CHANNELS]; -static pdma_channel_isr_t g_pdma_isr_table[NB_OF_PDMA_CHANNELS]; -static const uint16_t g_pdma_status_mask[NB_OF_PDMA_CHANNELS] = -{ - (uint16_t)0x0003, /* PDMA_CHANNEL_0 */ - (uint16_t)0x000C, /* PDMA_CHANNEL_1 */ - (uint16_t)0x0030, /* PDMA_CHANNEL_2 */ - (uint16_t)0x00C0, /* PDMA_CHANNEL_3 */ - (uint16_t)0x0300, /* PDMA_CHANNEL_4 */ - (uint16_t)0x0C00, /* PDMA_CHANNEL_5 */ - (uint16_t)0x3000, /* PDMA_CHANNEL_6 */ - (uint16_t)0xC000, /* PDMA_CHANNEL_7 */ -}; - - - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_init( void ) -{ - int32_t i; - - /* Enable PDMA master access to comms matrix. */ - SYSREG->AHB_MATRIX_CR |= PDMA_MASTER_ENABLE; - - /* Reset PDMA block. */ - SYSREG->SOFT_RST_CR |= PDMA_SOFT_RESET; - - /* Clear any previously pended MSS PDMA interrupt */ - NVIC_ClearPendingIRQ( DMA_IRQn ); - - /* Take PDMA controller out of reset*/ - SYSREG->SOFT_RST_CR &= ~PDMA_SOFT_RESET; - - /* Initialize channels state information. */ - for ( i = 0; i < NB_OF_PDMA_CHANNELS; ++i ) - { - g_pdma_next_channel[i] = NEXT_CHANNEL_A; - g_pdma_started_a[i] = CHANNEL_STOPPED; - g_pdma_started_b[i] = CHANNEL_STOPPED; - g_pdma_isr_table[i] = 0; - } -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -#define CHANNEL_RESET_MASK (uint32_t)0x00000020 - -void PDMA_configure -( - pdma_channel_id_t channel_id, - pdma_src_dest_t src_dest, - uint32_t channel_cfg, - uint8_t write_adjust -) -{ - /* Reset the channel. */ - PDMA->CHANNEL[channel_id].CRTL |= CHANNEL_RESET_MASK; - PDMA->CHANNEL[channel_id].CRTL &= ~CHANNEL_RESET_MASK; - - /* Configure PDMA channel's data source and destination. */ - if ( src_dest != PDMA_MEM_TO_MEM ) - { - PDMA->CHANNEL[channel_id].CRTL |= src_dest_to_ctrl_reg_lut[src_dest]; - } - - /* Configure PDMA channel trnasfer size, priority, source and destination address increment. */ - PDMA->CHANNEL[channel_id].CRTL |= channel_cfg; - - /* Posted write adjust. */ - PDMA->CHANNEL[channel_id].CRTL |= ((uint32_t)write_adjust << CHANNEL_N_POSTED_WRITE_ADJUST_SHIFT); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -#define PAUSE_MASK (uint32_t)0x00000010 - -#define BUFFER_B_SELECT_MASK (uint32_t)0x00000004 - -#define CLEAR_PORT_A_DONE_MASK (uint32_t)0x00000080 -#define CLEAR_PORT_B_DONE_MASK (uint32_t)0x00000100 - -#define PORT_A_COMPLETE_MASK (uint32_t)0x00000001 -#define PORT_B_COMPLETE_MASK (uint32_t)0x00000002 - -void PDMA_start -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -) -{ - /* Pause transfer. */ - PDMA->CHANNEL[channel_id].CRTL |= PAUSE_MASK; - - /* Clear complete transfers. */ - if ( PDMA->CHANNEL[channel_id].STATUS & PORT_A_COMPLETE_MASK ) - { - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_A_DONE_MASK; - g_pdma_started_a[channel_id] = CHANNEL_STOPPED; - } - if ( PDMA->CHANNEL[channel_id].STATUS & PORT_B_COMPLETE_MASK ) - { - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_B_DONE_MASK; - g_pdma_started_b[channel_id] = CHANNEL_STOPPED; - } - - /* Load source, destination and transfer count. */ - if ( PDMA->CHANNEL[channel_id].STATUS & BUFFER_B_SELECT_MASK ) - { - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_A; - g_pdma_started_b[channel_id] = CHANNEL_STARTED; - - PDMA->CHANNEL[channel_id].BUFFER_B_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_TRANSFER_COUNT = transfer_count; - } - else - { - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_B; - g_pdma_started_a[channel_id] = CHANNEL_STARTED; - - PDMA->CHANNEL[channel_id].BUFFER_A_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_TRANSFER_COUNT = transfer_count; - } - - /* Start transfer */ - PDMA->CHANNEL[channel_id].CRTL &= ~PAUSE_MASK; -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_load_next_buffer -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -) -{ - if ( NEXT_CHANNEL_A == g_pdma_next_channel[channel_id] ) - { - /* Wait for channel A current transfer completion. */ - if ( CHANNEL_STARTED == g_pdma_started_a[channel_id] ) - { - uint32_t completed; - uint32_t channel_mask; - channel_mask = (uint32_t)1 << ((uint32_t)channel_id * 2U); - do { - completed = PDMA->BUFFER_STATUS & channel_mask; - } while( !completed ); - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_A_DONE_MASK; - } - /* Load source, destination and transfer count. */ - PDMA->CHANNEL[channel_id].BUFFER_A_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_TRANSFER_COUNT = transfer_count; - - /* Update channel state information. */ - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_B; - g_pdma_started_a[channel_id] = CHANNEL_STARTED; - } - else - { - /* Wait for channel B current transfer completion. */ - if ( CHANNEL_STARTED == g_pdma_started_b[channel_id] ) - { - uint32_t completed; - uint32_t channel_mask; - channel_mask = (uint32_t)1 << (((uint32_t)channel_id * 2U) + 1U); - do { - completed = PDMA->BUFFER_STATUS & channel_mask; - } while( !completed ); - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_B_DONE_MASK; - } - /* Load source, destination and transfer count. */ - PDMA->CHANNEL[channel_id].BUFFER_B_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_TRANSFER_COUNT = transfer_count; - - /* Update channel state information. */ - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_A; - g_pdma_started_b[channel_id] = CHANNEL_STARTED; - } -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -uint32_t PDMA_status -( - pdma_channel_id_t channel_id -) -{ - uint32_t status; - - status = PDMA->CHANNEL[channel_id].STATUS & (PORT_A_COMPLETE_MASK | PORT_B_COMPLETE_MASK); - - return status; -} - -/***************************************************************************//** - * - */ -#define CHANNEL_0_STATUS_BITS_MASK (uint16_t)0x0003 -#define CHANNEL_1_STATUS_BITS_MASK (uint16_t)0x000C -#define CHANNEL_2_STATUS_BITS_MASK (uint16_t)0x0030 -#define CHANNEL_3_STATUS_BITS_MASK (uint16_t)0x00C0 -#define CHANNEL_4_STATUS_BITS_MASK (uint16_t)0x0300 -#define CHANNEL_5_STATUS_BITS_MASK (uint16_t)0x0C00 -#define CHANNEL_6_STATUS_BITS_MASK (uint16_t)0x3000 -#define CHANNEL_7_STATUS_BITS_MASK (uint16_t)0xC000 - -static pdma_channel_id_t get_channel_id_from_status -( - uint16_t status -) -{ - pdma_channel_id_t channel_id = PDMA_CHANNEL_0; - - if ( status & CHANNEL_0_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_0; - } - else if ( status & CHANNEL_1_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_1; - } - else if ( status & CHANNEL_2_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_2; - } - else if ( status & CHANNEL_3_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_3; - } - else if ( status & CHANNEL_4_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_4; - } - else if ( status & CHANNEL_5_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_5; - } - else if ( status & CHANNEL_6_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_6; - } - else if ( status & CHANNEL_7_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_7; - } - else - { - ASSERT(0); - } - return channel_id; -} - -/***************************************************************************//** - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void DMA_IRQHandler( void ) -#else -void DMA_IRQHandler( void ) -#endif -{ - uint16_t status; - pdma_channel_id_t channel_id; - - status = (uint16_t)PDMA->BUFFER_STATUS; - - do { - channel_id = get_channel_id_from_status( status ); - status &= (uint16_t)~g_pdma_status_mask[channel_id]; - if ( 0 != g_pdma_isr_table[channel_id]) - { - g_pdma_isr_table[channel_id](); - } - } while ( 0U != status ); - - NVIC_ClearPendingIRQ( DMA_IRQn ); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_set_irq_handler -( - pdma_channel_id_t channel_id, - pdma_channel_isr_t handler -) -{ - /* Save address of handler function in PDMA driver ISR lookup table. */ - g_pdma_isr_table[channel_id] = handler; - - /* Enable PDMA channel's interrupt. */ - PDMA->CHANNEL[channel_id].CRTL |= PDMA_IRQ_ENABLE_MASK; - - /* Enable PDMA interrupt in Cortex-M3 NVIC. */ - NVIC_EnableIRQ( DMA_IRQn ); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_enable_irq( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL |= PDMA_IRQ_ENABLE_MASK; - NVIC_EnableIRQ( DMA_IRQn ); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_clear_irq -( - pdma_channel_id_t channel_id -) -{ - /* Clear interrupt in PDMA controller. */ - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_A_DONE_MASK; - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_B_DONE_MASK; - - /* Clear interrupt in Cortex-M3 NVIC. */ - NVIC_ClearPendingIRQ( DMA_IRQn ); -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h deleted file mode 100644 index 6f79226c3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h +++ /dev/null @@ -1,703 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem Peripheral DMA bare metal software - * driver public API. - * - * SVN $Revision: 2110 $ - * SVN $Date: 2010-02-05 15:24:19 +0000 (Fri, 05 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS GPIO Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes an 8 channel - Peripheral DMA (PDMA) controller. - This software driver provides a set of functions for controlling the MSS PDMA - controller as part of a bare metal system where no operating system is available. - This driver can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section theory_op Theory of Operation - The MSS PDMA driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access MSS hardware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS PDMA driver functions are grouped into the following categories: - - Initialization - - Configuration - - DMA transfer control - - Interrupt control - - The MSS PDMA driver is initialized through a call to the PDMA_init() function. - The PDMA_init() function must be called before any other PDMA driver functions - can be called. - - Each PDMA channel is individually configured through a call to the PDMA_configure() - function. Configuration includes: - - channel priority - - transfer size - - source and/or destination address increment - - source or destination of the DMA transfer - PDMA channels can be divided into high and low priority channels. High priority - channels are given more opportunities to perform transfers than low priority - channels when there are continuous high priority channels requests. The ratio - of high priority to low priority PDMA transfers is configurable through the - PDMA_set_priority() function. - PDMA channels can be configured to perform byte (8 bits), half-word (16 bits) - or word (32 bits) transfers. - The source and destination address of a PDMA channel’s transfers can be - independently configured to increment by 0, 1, 2 or 4 bytes. For example, the - content of a byte buffer located in RAM can be transferred into a peripheral’s - transmit register by configuring the source address increment to one byte and - no increment of the destination address. - The source or destination of a PDMA channel’s transfers can be configured to - be one of the MSS peripherals. This allows the PDMA controller to use some - hardware flow control signaling with the peripheral to avoid overrunning the - peripheral’s data buffer when the peripheral is the destination of the DMA - transfer, or attempting to read data from the peripheral while it is not ready - when the peripheral is the source of the transfer. - A PDMA channel can also be configured to transfer data between two memory - mapped locations (memory to memory). No hardware flow control is used by the - PDMA controller for data transfer in this configuration. - - A DMA transfer can be initiated by a call to the PDMA_start() function after a - PDMA channel has been configured. Once started, further data can be pushed - through the PDMA channel by calling the PDMA_load_next_buffer() function. The - PDMA_load_next_buffer() function can be called every time a call to the - PDMA_status() function indicates that the PDMA channel used for the transfer - has a free buffer or it can be called as a result of a PDMA interrupt. - - A DMA transfer can be paused and resumed through calls to functions PDMA_pause() - and PDMA_resume(). - - Your application can manage DMA transfers using interrupts through the use of - the following functions: - - PDMA_set_irq_handler() - - PDMA_enable_irq() - - PDMA_clear_irq() - - PDMA_disable_irq() - The PDMA_set_irq_handler() function is used to register PDMA channel interrupt - handler functions with the driver. You must create and register an interrupt - handler function for each interrupt driven PDMA channel used by the application. - Use the PDMA_enable_irq() function to enable interrupts for the PDMA channels. - Every time a PDMA channel completes the transfer of a buffer it causes a PDMA - interrupt to occur and the PDMA driver will call the interrupt handler - registered by the application for that PDMA channel. - - *//*=========================================================================*/ -#ifndef __MSS_PERIPHERAL_DMA_H_ -#define __MSS_PERIPHERAL_DMA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/***************************************************************************//** - The pdma_channel_id_t enumeration is used to identify peripheral DMA channels. - It is used as function parameter to specify the PDMA channel used. - */ -typedef enum __pdma_channel_id -{ - PDMA_CHANNEL_0 = 0, - PDMA_CHANNEL_1, - PDMA_CHANNEL_2, - PDMA_CHANNEL_3, - PDMA_CHANNEL_4, - PDMA_CHANNEL_5, - PDMA_CHANNEL_6, - PDMA_CHANNEL_7 -} pdma_channel_id_t; - -/***************************************************************************//** - The pdma_src_dest_t enumeration is used to specify the source or destination - of transfers on a PDMA channel. It specifies which hardware peripheral will be - the source or destination of DMA transfers. This allows the PDMA controller - to use hardware flow control signals to avoid overrunning a - destination peripheral with data it is not ready to receive, or attempting to - transfer data from a peripheral while it has no data ready to transfer. - The pdma_src_dest_t enumeration can also be used to specify that a PDMA channel - is configured to transfer data between two memory mapped locations - (memory to memory). No hardware data flow control is used by the PDMA - controller in this configuration. - This enumeration is used as parameter to function PDMA_configure(). - */ -typedef enum __pdma_src_dest -{ - PDMA_FROM_UART_0 = 0, - PDMA_TO_UART_0, - PDMA_FROM_UART_1, - PDMA_TO_UART_1, - PDMA_FROM_SPI_0, - PDMA_TO_SPI_0, - PDMA_FROM_SPI_1, - PDMA_TO_SPI_1, - PDMA_FROM_FPGA_1, - PDMA_TO_FPGA_1, - PDMA_FROM_FPGA_0, - PDMA_TO_FPGA_0, - PDMA_TO_ACE, - PDMA_FROM_ACE, - PDMA_MEM_TO_MEM -} pdma_src_dest_t; - -/***************************************************************************//** - The pdma_priority_ratio_t enumeration is used to configure the ratio of high - priority to low priority PDMA channels. This ratio specifies how many DMA - transfer opportunities will be given to high priority channels before a DMA - transfer opportunity is given to a low priority channel when there are - continuous requests from high priority channels. This enumeration is used as - parameter to function PDMA_set_priority_ratio(). - */ -typedef enum __pdma_priority_ratio_t -{ - PDMA_ROUND_ROBIN = 0, - PDMA_RATIO_HIGH_LOW_1_TO_1 = 1, - PDMA_RATIO_HIGH_LOW_3_TO_1 = 3, - PDMA_RATIO_HIGH_LOW_7_TO_1 = 7, - PDMA_RATIO_HIGH_LOW_15_TO_1 = 15, - PDMA_RATIO_HIGH_LOW_31_TO_1 = 31, - PDMA_RATIO_HIGH_LOW_63_TO_1 = 63, - PDMA_RATIO_HIGH_LOW_127_TO_1 = 127, - PDMA_RATIO_HIGH_LOW_255_TO_1 = 255 -} pdma_priority_ratio_t; - - -/***************************************************************************//** - The pdma_channel_isr_t type is a pointer to a PDMA channel interrupt handler - function. It specifies the function prototype of functions that can be - registered as PDMA channel interrupt handlers. It is used as parameter to - function PDMA_set_irq_handler(). - */ -typedef void (*pdma_channel_isr_t)( void ); -/***************************************************************************//** - These constants are used to build the channel_cfg parameter of the - PDMA_configure() function. They specify whether a channel is a high or low - priority channel. - */ -#define PDMA_LOW_PRIORITY 0x0000 -#define PDMA_HIGH_PRIORITY 0x0200 - -/***************************************************************************//** - These constants are used to build the channel_cfg parameter of the - PDMA_configure() function. They specify the data width of the transfers - performed by a PDMA channel. - */ -#define PDMA_BYTE_TRANSFER 0x0000 /* Byte transfers (8 bits) */ -#define PDMA_HALFWORD_TRANSFER 0x0004 /* Half-word transfers (16 bits) */ -#define PDMA_WORD_TRANSFER 0x0008 /* Word transfers (32 bits) */ - -/***************************************************************************//** - These constants are used to build the channel_cfg parameter of the - PDMA_configure() function. They specify the PDMA channel’s source and - destination address increment. - */ -#define PDMA_NO_INC 0 -#define PDMA_INC_SRC_ONE_BYTE 0x0400 -#define PDMA_INC_SRC_TWO_BYTES 0x0800 -#define PDMA_INC_SRC_FOUR_BYTES 0x0C00 -#define PDMA_INC_DEST_ONE_BYTE 0x1000 -#define PDMA_INC_DEST_TWO_BYTES 0x2000 -#define PDMA_INC_DEST_FOUR_BYTES 0x3000 - -/***************************************************************************//** - * Mask for various control register bits. - */ -#define PDMA_IRQ_ENABLE_MASK (uint32_t)0x00000040 -#define PDMA_PAUSE_MASK (uint32_t)0x00000010 - -/***************************************************************************//** - These constants are used to specify the src_addr parameter to the PDMA_start() - and PDMA_load_next_buffer() functions. They specify the receive register - address of peripherals that can be the source of a DMA transfer. - When a PDMA channel is configured for DMA transfers from a peripheral to memory, - the constant specifying that peripheral’s receive register address must be used - as the src_addr parameter. - */ -#define PDMA_SPI0_RX_REGISTER 0x40001010uL -#define PDMA_SPI1_RX_REGISTER 0x40011010uL -#define PDMA_UART0_RX_REGISTER 0x40000000uL -#define PDMA_UART1_RX_REGISTER 0x40010000uL -#define PDMA_ACE_PPE_DATAOUT 0x40021308uL - -/***************************************************************************//** - These constants are used to specify the dest_addr parameter to the PDMA_start() - and PDMA_load_next_buffer() functions. They specify the transmit register - address of peripherals that can be the destination of a DMA transfer. - When a PDMA channel is configured for DMA transfers from memory to a peripheral, - the constant specifying that peripheral’s transmit register address must be used - as the dest_addr parameter. - */ -#define PDMA_SPI0_TX_REGISTER 0x40001014uL -#define PDMA_SPI1_TX_REGISTER 0x40011014uL -#define PDMA_UART0_TX_REGISTER 0x40000000uL -#define PDMA_UART1_TX_REGISTER 0x40010000uL -#define PDMA_ACE_SSE_DATAIN 0x40020700uL - -/***************************************************************************//** - The PDMA_DEFAULT_WRITE_ADJ constant provides a suitable default value for the - PDMA_configure() function write_adjust parameter. - */ -#define PDMA_DEFAULT_WRITE_ADJ 10u - -/***************************************************************************//** - The PDMA_init() function initializes the peripheral DMA hardware and driver - internal data. It resets the PDMA and it also clears any pending PDMA - interrupts in the Cortex-M3 interrupt controller. When the function exits, it - takes the PDMA block out of reset. - */ -void PDMA_init( void ); - -/***************************************************************************//** - The PDMA_configure() function configures a PDMA channel. - It specifies: - - The peripheral which will be the source or destination of the DMA transfer. - - Whether the DMA channel will be a high or low priority channel - - The source and destination address increment that will take place after - each transfer. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param src_dest - The src_dest parameter specifies the source or destination of the DMA - transfers that will be performed. It can be one of the following: - - PDMA_FROM_UART_0 - - PDMA_TO_UART_0 - - PDMA_FROM_UART_1 - - PDMA_TO_UART_1 - - PDMA_FROM_SPI_0 - - PDMA_TO_SPI_0 - - PDMA_FROM_SPI_1 - - PDMA_TO_SPI_1 - - PDMA_FROM_FPGA_1 - - PDMA_TO_FPGA_1 - - PDMA_FROM_FPGA_0 - - PDMA_TO_FPGA_0 - - PDMA_TO_ACE - - PDMA_FROM_ACE - - PDMA_MEM_TO_MEM - - @param channel_cfg - The channel_cfg parameter specifies the configuration of the PDMA channel. - The configuration includes: - - channel priority - - transfer size - - source and/or destination address increment - The channel_cfg parameter value is a logical OR of: - One of the following to specify the channel priority: - - PDMA_LOW_PRIORITY - - PDMA_HIGH_PRIORITY - One of the following to specify the transfer size: - - PDMA_BYTE_TRANSFER - - PDMA_HALFWORD_TRANSFER - - PDMA_WORD_TRANSFER - One or two of the following to specify the source and/or destination address - increment: - - PDMA_NO_INC - - PDMA_INC_SRC_ONE_BYTE - - PDMA_INC_SRC_TWO_BYTES - - PDMA_INC_SRC_FOUR_BYTES - - PDMA_INC_DEST_ONE_BYTE - - PDMA_INC_DEST_TWO_BYTES - - PDMA_INC_DEST_FOUR_BYTES - - @param write_adjust - The write_adjust parameter specifies the number of Cortex-M3 clock cycles - the PDMA controller will wait before attempting another transfer cycle. This - delay is necessary when peripherals are used as destination of a DMA transfer - to ensure the DMA controller interprets the state of the peripheral’s ready - signal only after data has actually been written to the peripheral. This delay - accounts for posted writes (dump and run) for write accesses to peripherals. - The effect of posted writes is that if the PDMA performs a write operation to - a peripheral, the data is not actually written into the peripheral until - sometime after the PDMA controller thinks it is written. - A suitable value for write_adjust depends on the target of the DMA transfer. - Guidelines for choosing this value are as follows: - • The PDMA_DEFAULT_WRITE_ADJ constant provides a suitable default value - for the write_adjust parameter when the PDMA channel is configured for - transfers with MSS peripherals. - • The PDMA_DEFAULT_WRITE_ADJ constant can also be used for DMA transfers - with FPGA fabric implemented peripherals making use of the DMAREADY0 or - DMAREADY1fabric interface signal to indicate that the peripheral is - ready for another DMA transfer. - • The write_adjust parameter can be set to zero to achieve maximum transfer - speed for genuine memory to memory transfers. - • The internal latency of FPGA implemented peripherals will decide the - write_adjust value for fabric peripherals that do not use the DMAREADY0 - or DMAREADY1 fabric interface signals. You need to check the fabric - peripheral documentation for the value to use. - - Example: - @code - PDMA_configure - ( - PDMA_CHANNEL_0, - PDMA_TO_SPI_1, - PDMA_LOW_PRIORITY | PDMA_BYTE_TRANSFER | PDMA_INC_SRC_ONE_BYTE, - PDMA_DEFAULT_WRITE_ADJ - ); - @endcode - */ -void PDMA_configure -( - pdma_channel_id_t channel_id, - pdma_src_dest_t src_dest, - uint32_t channel_cfg, - uint8_t write_adjust -); - - -/***************************************************************************//** - The PDMA_set_priority_ratio() function sets the ratio of high priority to low - priority DMA access opportunities. This ratio is used by the PDMA controller - arbiter to decide which PDMA channel will be given the opportunity to perform - a transfer when multiple PDMA channels are requesting to transfer data at the - same time. The priority ratio specifies how many DMA transfer opportunities - will be given to high priority channels before a DMA transfer opportunity is - given to a low priority channel when there are continuous requests from high - priority channels. - - @param priority_ratio - The priority_ratio parameter specifies the ratio of DMA access opportunities - given to high priority channels versus low priority channels. - Allowed values for this parameter are: - - PDMA_ROUND_ROBIN - - PDMA_RATIO_HIGH_LOW_1_TO_1 - - PDMA_RATIO_HIGH_LOW_3_TO_1 - - PDMA_RATIO_HIGH_LOW_7_TO_1 - - PDMA_RATIO_HIGH_LOW_15_TO_1 - - PDMA_RATIO_HIGH_LOW_31_TO_1 - - PDMA_RATIO_HIGH_LOW_63_TO_1 - - PDMA_RATIO_HIGH_LOW_127_TO_1 - - PDMA_RATIO_HIGH_LOW_255_TO_1 - - Example: - @code - PDMA_set_priority_ratio( PDMA_ROUND_ROBIN ); - @endcode - */ -static __INLINE void PDMA_set_priority_ratio -( - pdma_priority_ratio_t priority_ratio -) -{ - PDMA->RATIO_HIGH_LOW = (uint32_t)priority_ratio; -} - -/***************************************************************************//** - The PDMA_start() function initiates a DMA transfer. It specifies the source - and destination address of the transfer as well as the number of transfers - that must take place. The source and destination addresses can be the address - of peripheral registers. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param src_addr - The src_addr parameter specifies the address location of the data to be - transferred. You must ensure that this source address is consistent with the - DMA source configured for the selected channel using the PDMA_configure() - function. - For DMA transfers from MSS peripheral to memory, the following src_addr - parameter values are allowed: - • PDMA_SPI0_RX_REGISTER - • PDMA_SPI1_RX_REGISTER - • PDMA_UART0_RX_REGISTER - • PDMA_UART1_RX_REGISTER - • PDMA_ACE_PPE_DATAOUT - For DMA transfers from FPGA fabric peripheral to memory, the following - src_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from memory to MSS peripheral, or from memory to FPGA - fabric peripheral, or from memory to memory, the following src_addr - parameter values are allowed: - • Any memory mapped address. - - @param dest_addr - The dest_addr parameter specifies the destination address of the PDMA - transfer. You must ensure that this matches with the DMA destination - configured for the selected channel. - For DMA transfers from memory to MSS peripheral, the following dest_addr parameter values are allowed: - • PDMA_SPI0_TX_REGISTER - • PDMA_SPI1_TX_REGISTER - • PDMA_UART0_TX_REGISTER - • PDMA_UART1_TX_REGISTER - • PDMA_ACE_SSE_DATAIN - For DMA transfers from memory to FPGA fabric peripheral, the following - dest_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from MSS peripheral to memory, or from FPGA fabric - peripheral to memory, or from memory to memory, the following dest_addr - parameter values are allowed: - • Any memory mapped address. - - @param transfer_count - The transfer_count parameter specifies the number of transfers to be - performed. It is the number of bytes to transfer if the PDMA channel is - configured for byte transfer, the number of half-words to transfer if the - PDMA channel is configured for half-word transfer, or the number of words - to transfer if the PDMA channel is configured for word transfer. - - Example: - @code - PDMA_start - ( - PDMA_CHANNEL_3, - PDMA_SPI1_RX_REGISTER, - (uint32_t)slave_rx_buffer, - sizeof(slave_rx_buffer) - ); - @endcode - */ -void PDMA_start -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -); - -/***************************************************************************//** - The PDMA_load_next_buffer() function sets the next buffer to be transferred. - This function is called after a transfer has been initiated using the - PDMA_start() function. Its purpose is to keep feeding a PDMA channel with data - buffers. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param src_addr - The src_addr parameter specifies the address location of the data to be - transferred. You must ensure that this source address is consistent with the - DMA source configured for the selected channel using the PDMA_configure() - function. - For DMA transfers from MSS peripheral to memory, the following src_addr parameter values are allowed: - • PDMA_SPI0_RX_REGISTER - • PDMA_SPI1_RX_REGISTER - • PDMA_UART0_RX_REGISTER - • PDMA_UART1_RX_REGISTER - • PDMA_ACE_PPE_DATAOUT - For DMA transfers from FPGA fabric peripheral to memory, the following src_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from memory to MSS peripheral, or from memory to FPGA fabric peripheral, or from memory to memory, the following src_addr parameter values are allowed: - • Any memory mapped address. - - @param dest_addr - The dest_addr parameter specifies the destination address of the PDMA - transfer. You must ensure that this matches with the DMA destination - configured for the selected channel. - For DMA transfers from memory to MSS peripheral, the following dest_addr parameter values are allowed: - • PDMA_SPI0_TX_REGISTER - • PDMA_SPI1_TX_REGISTER - • PDMA_UART0_TX_REGISTER - • PDMA_UART1_TX_REGISTER - • PDMA_ACE_SSE_DATAIN - For DMA transfers from memory to FPGA fabric peripheral, the following dest_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from MSS peripheral to memory, or from FPGA fabric peripheral to memory, or from memory to memory, the following dest_addr parameter values are allowed: - • Any memory mapped address. - - @param transfer_count - The transfer_count parameter specifies the number of transfers to be - performed. It is the number of bytes to transfer if the PDMA channel is - configured for byte transfer, the number of half-words to transfer if the - PDMA channel is configured for half-word transfer or the number of words to - transfer if the PDMA channel is configured for word transfer. - - Example: - @code - void write_cmd_data - ( - mss_spi_instance_t * this_spi, - const uint8_t * cmd_buffer, - uint16_t cmd_byte_size, - uint8_t * data_buffer, - uint16_t data_byte_size - ) - { - uint32_t transfer_size; - - transfer_size = cmd_byte_size + data_byte_size; - - MSS_SPI_disable( this_spi ); - MSS_SPI_set_transfer_byte_count( this_spi, transfer_size ); - - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)cmd_buffer, - PDMA_SPI1_TX_REGISTER, - cmd_byte_size - ); - - PDMA_load_next_buffer - ( - PDMA_CHANNEL_0, - (uint32_t)data_buffer, - PDMA_SPI1_TX_REGISTER, - data_byte_size - ); - - MSS_SPI_enable( this_spi ); - - while ( !MSS_SPI_tx_done(this_spi) ) - { - ; - } - } - @endcode - */ -void PDMA_load_next_buffer -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -); - -/***************************************************************************//** - The PDMA_status() function returns the status of a DMA channel. - The returned value indicates if transfers have been completed using buffer A - or buffer B of the PDMA hardware block. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @return - bit 0 of the return value indicates if buffer A has been trasnfered. It is - set to 1 if the transfer has completed. - bit 1 of the return value indicates if buffer B has been transfered. It is - set to 1 if the transfer has completed. - */ -uint32_t PDMA_status -( - pdma_channel_id_t channel_id -); - -/***************************************************************************//** - The PDMA_pause() function temporarily pauses a PDMA transfer taking place on - the specified PDMA channel. The transfer can later be resumed by using the - PDMA_resume() function. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -static __INLINE void PDMA_pause( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL |= PDMA_PAUSE_MASK; -} - -/***************************************************************************//** - The PDMA_resume() function resumes a transfer previously paused using the - PDMA_pause() function. - - @param channel_id The channel_id parameter identifies the PDMA channel - used by the function. - */ -static __INLINE void PDMA_resume( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL &= ~PDMA_PAUSE_MASK; -} - -/***************************************************************************//** - The PDMA_enable_irq() enables the PDMA hardware to generate an interrupt when - a DMA transfer completes on the specified PDMA channel. This function also - enables the PDMA interrupt in the Cortex-M3 interrupt controller. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -void PDMA_enable_irq( pdma_channel_id_t channel_id ); - -/***************************************************************************//** - The PDMA_disable_irq() disables interrupts for a specific PDMA channel. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -static __INLINE void PDMA_disable_irq( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL &= ~PDMA_IRQ_ENABLE_MASK; -} - -/***************************************************************************//** - The PDMA_set_irq_handler() function registers a handler function for - interrupts generated on the completion of a transfer on a specific PDMA - channel. This function also enables the PDMA interrupt both in the PDMA - controller and in the Cortex-M3 interrupt controller. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param handler - The handler parameter is a pointer to the function that will be called when - a transfer completes on the PDMA channel identified by channel_id and the - interrupt is enabled for that channel. - - Example: - @code - void slave_dma_irq_handler( void ) - { - if ( g_spi1_rx_buffer[2] == 0x99 ) - { - PDMA_load_next_buffer - ( - PDMA_CHANNEL_0, - (uint32_t)g_spi1_tx_buffer_b, - PDMA_SPI1_TX_REGISTER, - sizeof(g_spi1_tx_buffer_b) - ); - } - PDMA_disable_irq( PDMA_CHANNEL_3 ); - } - - void setup_dma( void ) - { - PDMA_init(); - PDMA_configure - ( - PDMA_CHANNEL_0, - PDMA_TO_SPI_1, - PDMA_LOW_PRIORITY | PDMA_BYTE_TRANSFER | PDMA_INC_SRC_ONE_BYTE - ); - PDMA_configure - ( - PDMA_CHANNEL_3, - PDMA_FROM_SPI_1, - PDMA_HIGH_PRIORITY | PDMA_BYTE_TRANSFER | PDMA_INC_DEST_ONE_BYTE - ); - PDMA_set_irq_handler( PDMA_CHANNEL_3, slave_dma_irq_handler ); - PDMA_start( PDMA_CHANNEL_3, PDMA_SPI1_RX_REGISTER, (uint32_t)g_spi1_rx_buffer, 3 ); - } - @endcode - */ -void PDMA_set_irq_handler -( - pdma_channel_id_t channel_id, - pdma_channel_isr_t handler -); - -/***************************************************************************//** - The PDMA_clear_irq() function clears interrupts for a specific PDMA channel. - This function also clears the PDMA interrupt in the Cortex-M3 NVIC. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -void PDMA_clear_irq -( - pdma_channel_id_t channel_id -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_PERIPHERAL_DMA_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c deleted file mode 100644 index e5992301f..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c +++ /dev/null @@ -1,610 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem SPI bare metal software driver - * implementation. - * - * SVN $Revision: 2176 $ - * SVN $Date: 2010-02-15 21:04:22 +0000 (Mon, 15 Feb 2010) $ - */ -#include "mss_spi.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - MSS SPI can operate as master or slave. - */ -#define MSS_SPI_MODE_SLAVE (uint32_t)0 -#define MSS_SPI_MODE_MASTER (uint32_t)1 - -/***************************************************************************//** - * Mask of transfer protocol and SPO, SPH bits within control register. - */ -#define PROTOCOL_MODE_MASK (uint32_t)0x030000C0 - -/***************************************************************************//** - * Mask of theframe count bits within the SPI control register. - */ -#define TXRXDFCOUNT_MASK (uint32_t)0x00FFFF00 -#define TXRXDFCOUNT_SHIFT (uint32_t)8 - -/***************************************************************************//** - * SPI hardware FIFO depth. - */ -#define RX_FIFO_SIZE 4u - -/***************************************************************************//** - Marker used to detect that the configuration has not been selected for a - specific slave when operating as a master. - */ -#define NOT_CONFIGURED 0xFFFFFFFF - -/***************************************************************************//** - * SPI instance data structures for SPI0 and SPI1. A pointer to these data - * structures must be used as first parameter to any of the SPI driver functions - * to identify the SPI hardware block that will perform the requested operation. - */ -mss_spi_instance_t g_mss_spi0; -mss_spi_instance_t g_mss_spi1; - -/***************************************************************************//** - SPI0 interrupt service routine - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI0_IRQHandler( void ); -#else -void SPI0_IRQHandler( void ); -#endif - -/***************************************************************************//** - SPI1 interrupt service routine - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI1_IRQHandler( void ); -#else -void SPI1_IRQHandler( void ); -#endif - -/***************************************************************************//** - * MSS_SPI_init() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_init -( - mss_spi_instance_t * this_spi -) -{ - uint16_t i; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - if (this_spi == &g_mss_spi0) - { - this_spi->hw_reg = SPI0; - this_spi->hw_reg_bit = SPI0_BITBAND; - this_spi->irqn = SPI0_IRQn; - - /* reset SPI0 */ - SYSREG->SOFT_RST_CR |= SYSREG_SPI0_SOFTRESET_MASK; - /* Clear any previously pended SPI0 interrupt */ - NVIC_ClearPendingIRQ( SPI0_IRQn ); - /* Take SPI0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_SPI0_SOFTRESET_MASK; - } - else - { - this_spi->hw_reg = SPI1; - this_spi->hw_reg_bit = SPI1_BITBAND; - this_spi->irqn = SPI1_IRQn; - - /* reset SPI1 */ - SYSREG->SOFT_RST_CR |= SYSREG_SPI1_SOFTRESET_MASK; - /* Clear any previously pended SPI1 interrupt */ - NVIC_ClearPendingIRQ( SPI1_IRQn ); - /* Take SPI1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_SPI1_SOFTRESET_MASK; - } - - this_spi->frame_rx_handler = 0U; - this_spi->slave_tx_frame = 0U; - - this_spi->block_rx_handler = 0U; - - this_spi->slave_tx_buffer = 0U; - this_spi->slave_tx_size = 0U; - this_spi->slave_tx_idx = 0U; - - for ( i = 0u; i < (uint16_t)MSS_SPI_MAX_NB_OF_SLAVES; ++i ) - { - this_spi->slaves_cfg[i].ctrl_reg = NOT_CONFIGURED; - } -} - -/***************************************************************************//** - * MSS_SPI_configure_slave_mode() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_configure_slave_mode -( - mss_spi_instance_t * this_spi, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - ASSERT( frame_bit_length <= 32 ); - - /* Set the mode. */ - this_spi->hw_reg_bit->CTRL_MASTER = MSS_SPI_MODE_SLAVE; - - /* Set the clock rate. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~PROTOCOL_MODE_MASK) | (uint32_t)protocol_mode; - this_spi->hw_reg->CLK_GEN = (uint32_t)clk_rate; - - /* Set default frame size to byte size and number of data frames to 1. */ - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | ((uint32_t)1 << TXRXDFCOUNT_SHIFT); - this_spi->hw_reg->TXRXDF_SIZE = frame_bit_length; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; -} - -/***************************************************************************//** - * MSS_SPI_configure_master_mode() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_configure_master_mode -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - ASSERT( slave < MSS_SPI_MAX_NB_OF_SLAVES ); - ASSERT( frame_bit_length <= 32 ); - - /* Set the mode. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg_bit->CTRL_MASTER = MSS_SPI_MODE_MASTER; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* - * Keep track of the required register configuration for this slave. These - * values will be used by the MSS_SPI_set_slave_select() function to configure - * the master to match the slave being selected. - */ - if ( slave < MSS_SPI_MAX_NB_OF_SLAVES ) - { - this_spi->slaves_cfg[slave].ctrl_reg = 0x00000002uL | (uint32_t)protocol_mode | ((uint32_t)1 << TXRXDFCOUNT_SHIFT); - this_spi->slaves_cfg[slave].txrxdf_size_reg = frame_bit_length; - this_spi->slaves_cfg[slave].clk_gen = (uint8_t)clk_rate; - } -} - -/***************************************************************************//** - * MSS_SPI_set_slave_select() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - ASSERT( this_spi->slaves_cfg[slave].ctrl_reg != NOT_CONFIGURED ); - - /* Set the clock rate. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = this_spi->slaves_cfg[slave].ctrl_reg; - this_spi->hw_reg->CLK_GEN = this_spi->slaves_cfg[slave].clk_gen; - this_spi->hw_reg->TXRXDF_SIZE = this_spi->slaves_cfg[slave].txrxdf_size_reg; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* Set slave select */ - this_spi->hw_reg->SLAVE_SELECT |= ((uint32_t)1 << (uint32_t)slave); -} - -/***************************************************************************//** - * MSS_SPI_clear_slave_select() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_clear_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - - this_spi->hw_reg->SLAVE_SELECT &= ~((uint32_t)1 << (uint32_t)slave); -} - -/***************************************************************************//** - * MSS_SPI_transfer_frame() - * See "mss_spi.h" for details of how to use this function. - */ -uint32_t MSS_SPI_transfer_frame -( - mss_spi_instance_t * this_spi, - uint32_t tx_bits -) -{ - volatile uint32_t dummy; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - - /* Flush Rx FIFO. */ - while ( this_spi->hw_reg_bit->STATUS_RX_RDY == 1U ) - { - dummy = this_spi->hw_reg->RX_DATA; - dummy = dummy; /* Prevent Lint warning. */ - } - - /* Send frame. */ - this_spi->hw_reg->TX_DATA = tx_bits; - - /* Wait for frame Tx to complete. */ - while ( this_spi->hw_reg_bit->STATUS_TX_DONE == 0U ) - { - ; - } - - /* Read received frame. */ - /* Wait for Rx complete. */ - while ( this_spi->hw_reg_bit->STATUS_RX_RDY == 0U ) - { - ; - } - /* Return Rx data. */ - return( this_spi->hw_reg->RX_DATA ); -} - - -/***************************************************************************//** - * MSS_SPI_transfer_block() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_transfer_block -( - mss_spi_instance_t * this_spi, - const uint8_t * cmd_buffer, - uint16_t cmd_byte_size, - uint8_t * rd_buffer, - uint16_t rd_byte_size -) -{ - uint16_t transfer_idx = 0U; - uint16_t tx_idx; - uint16_t rx_idx; - uint32_t frame_count; - volatile uint32_t rx_raw; - uint16_t transit = 0U; - - uint16_t transfer_size; /* Total number of bytes transfered. */ - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - - /* Compute number of bytes to transfer. */ - transfer_size = cmd_byte_size + rd_byte_size; - - /* Adjust to 1 byte transfer to cater for DMA transfers. */ - if ( transfer_size == 0U ) - { - frame_count = 1U; - } - else - { - frame_count = transfer_size; - } - - /* Set frame size to 8 bits and the frame count to the tansfer size. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | ( (frame_count << TXRXDFCOUNT_SHIFT) & TXRXDFCOUNT_MASK); - this_spi->hw_reg->TXRXDF_SIZE = 8U; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* Flush the receive FIFO. */ - while ( !this_spi->hw_reg_bit->STATUS_RX_FIFO_EMPTY ) - { - rx_raw = this_spi->hw_reg->RX_DATA; - } - - tx_idx = 0u; - rx_idx = 0u; - if ( tx_idx < cmd_byte_size ) - { - this_spi->hw_reg->TX_DATA = cmd_buffer[tx_idx]; - ++tx_idx; - ++transit; - } - else - { - if ( tx_idx < transfer_size ) - { - this_spi->hw_reg->TX_DATA = 0x00U; - ++tx_idx; - ++transit; - } - } - /* Perform the remainder of the transfer by sending a byte every time a byte - * has been received. This should ensure that no Rx overflow can happen in - * case of an interrupt occurs during this function. */ - while ( transfer_idx < transfer_size ) - { - if ( !this_spi->hw_reg_bit->STATUS_RX_FIFO_EMPTY ) - { - /* Process received byte. */ - rx_raw = this_spi->hw_reg->RX_DATA; - if ( transfer_idx >= cmd_byte_size ) - { - if ( rx_idx < rd_byte_size ) - { - rd_buffer[rx_idx] = (uint8_t)rx_raw; - } - ++rx_idx; - } - ++transfer_idx; - --transit; - } - - if ( !this_spi->hw_reg_bit->STATUS_TX_FIFO_FULL ) - { - if (transit < RX_FIFO_SIZE) - { - /* Send another byte. */ - if ( tx_idx < cmd_byte_size ) - { - this_spi->hw_reg->TX_DATA = cmd_buffer[tx_idx]; - ++tx_idx; - ++transit; - } - else - { - if ( tx_idx < transfer_size ) - { - this_spi->hw_reg->TX_DATA = 0x00U; - ++tx_idx; - ++transit; - } - } - } - } - } -} - -/***************************************************************************//** - * MSS_SPI_set_frame_rx_handler() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_frame_rx_handler -( - mss_spi_instance_t * this_spi, - mss_spi_frame_rx_handler_t rx_handler -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI slave. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_SLAVE ); - - /* Disable block Rx handler as they are mutually exclusive. */ - this_spi->block_rx_handler = 0U; - - /* Keep a copy of the pointer to the rx hnadler function. */ - this_spi->frame_rx_handler = rx_handler; - - /* Enable Rx interrupt. */ - this_spi->hw_reg_bit->CTRL_RX_INT_EN = 1U; - NVIC_EnableIRQ( this_spi->irqn ); -} - -/***************************************************************************//** - * MSS_SPI_set_slave_tx_frame() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_slave_tx_frame -( - mss_spi_instance_t * this_spi, - uint32_t frame_value -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI slave. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_SLAVE ); - - /* Disable slave block tx buffer as it is mutually exclusive with frame - * level handling. */ - this_spi->slave_tx_buffer = 0U; - this_spi->slave_tx_size = 0U; - this_spi->slave_tx_idx = 0U; - - /* Keep a copy of the slave tx frame value. */ - this_spi->slave_tx_frame = frame_value; - - /* Load frame into Tx data register. */ - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_frame; - - /* Enable Tx Done interrupt in order to reload the slave Tx frame after each - * time it has been sent. */ - this_spi->hw_reg_bit->CTRL_TX_INT_EN = 1U; - NVIC_EnableIRQ( this_spi->irqn ); -} - -/***************************************************************************//** - * MSS_SPI_set_slave_block_buffers() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_slave_block_buffers -( - mss_spi_instance_t * this_spi, - const uint8_t * tx_buffer, - uint32_t tx_buff_size, - uint8_t * rx_buffer, - uint32_t rx_buff_size, - mss_spi_block_rx_handler_t block_rx_handler -) -{ - uint32_t frame_count; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI slave. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_SLAVE ); - - /* Disable Rx frame handler as it is mutually exclusive with block rx handler. */ - this_spi->frame_rx_handler = 0U; - - /* Keep a copy of the pointer to the block rx handler function. */ - this_spi->block_rx_handler = block_rx_handler; - - this_spi->slave_rx_buffer = rx_buffer; - this_spi->slave_rx_size = rx_buff_size; - this_spi->slave_rx_idx = 0U; - - /**/ - this_spi->slave_tx_buffer = tx_buffer; - this_spi->slave_tx_size = tx_buff_size; - this_spi->slave_tx_idx = 0U; - - frame_count = rx_buff_size; - - /**/ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | (frame_count << TXRXDFCOUNT_SHIFT); - this_spi->hw_reg->TXRXDF_SIZE = 8U; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* Load the transmit FIFO. */ - while ( !(this_spi->hw_reg_bit->STATUS_TX_FIFO_FULL) && ( this_spi->slave_tx_idx < this_spi->slave_tx_size ) ) - { - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_buffer[this_spi->slave_tx_idx]; - ++this_spi->slave_tx_idx; - } - - /* Enable Rx interrupt. */ - this_spi->hw_reg_bit->CTRL_RX_INT_EN = 1U; - NVIC_EnableIRQ( this_spi->irqn ); -} - -/***************************************************************************//** - * SPI interrupt service routine. - */ -static void mss_spi_isr -( - mss_spi_instance_t * this_spi -) -{ - uint32_t rx_frame; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - if ( this_spi->hw_reg_bit->MIS_RX_RDY ) - { - while( !this_spi->hw_reg_bit->STATUS_RX_FIFO_EMPTY ) - { - rx_frame = this_spi->hw_reg->RX_DATA; - if ( this_spi->frame_rx_handler != 0U ) - { - /* Single frame handling mode. */ - this_spi->frame_rx_handler( rx_frame ); - } - else - { - if ( this_spi->block_rx_handler != 0U ) - { - /* Block handling mode. */ - if ( this_spi->slave_rx_idx < this_spi->slave_rx_size ) - { - this_spi->slave_rx_buffer[this_spi->slave_rx_idx] = (uint8_t)rx_frame; - ++this_spi->slave_rx_idx; - if ( this_spi->slave_rx_idx == this_spi->slave_rx_size ) - { - (*this_spi->block_rx_handler)( this_spi->slave_rx_buffer, this_spi->slave_rx_size ); - } - } - } - } - - /* Feed transmit FIFO. */ - if ( !(this_spi->hw_reg_bit->STATUS_TX_FIFO_FULL) && ( this_spi->slave_tx_idx < this_spi->slave_tx_size ) ) - { - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_buffer[this_spi->slave_tx_idx]; - ++this_spi->slave_tx_idx; - } - } - this_spi->hw_reg_bit->INT_CLEAR_RX_RDY = 1U; - } - - if ( this_spi->hw_reg_bit->MIS_TX_DONE ) - { - if ( this_spi->slave_tx_buffer != 0U ) - { - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_buffer[this_spi->slave_tx_idx]; - ++this_spi->slave_tx_idx; - if ( this_spi->slave_tx_idx >= this_spi->slave_tx_size ) - { - this_spi->slave_tx_idx = 0U; - } - } - else - { - /* Reload slave tx frame into Tx data register. */ - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_frame; - } - } -} - -/***************************************************************************//** - * SPIO interrupt service routine. - * Please note that the name of this ISR is defined as part of the SmartFusion - * CMSIS startup code. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI0_IRQHandler( void ) -#else -void SPI0_IRQHandler( void ) -#endif -{ - mss_spi_isr( &g_mss_spi0 ); - NVIC_ClearPendingIRQ( SPI0_IRQn ); -} - -/***************************************************************************//** - * SPI1 interrupt service routine. - * Please note that the name of this ISR is defined as part of the SmartFusion - * CMSIS startup code. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI1_IRQHandler( void ) -#else -void SPI1_IRQHandler( void ) -#endif -{ - mss_spi_isr( &g_mss_spi1 ); - NVIC_ClearPendingIRQ( SPI1_IRQn ); -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h deleted file mode 100644 index 2b3617bc4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h +++ /dev/null @@ -1,1296 +0,0 @@ -/***************************************************************************//** - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem SPI bare metal software driver public API. - * - * The microcontroller subsystem SPI driver provides functions for implementing - * SPI master or SPI slave operations. These operations can be one of two - * classes: SPI frame operation or block transfer operations. - * Frame operations allow transferring SPI frames from 4 to 32 bits long. Block - * operations allow transferring blocks of data organized as 8 bit bytes. - * - * SVN $Revision: 2189 $ - * SVN $Date: 2010-02-16 22:02:32 +0000 (Tue, 16 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS SPI Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes two serial - peripheral interface SPI peripherals for serial communication. This driver - provides a set of functions for controlling the MSS SPIs as part of a bare - metal system where no operating system is available. These drivers can be - adapted for use as part of an operating system, but the implementation of the - adaptation layer between this driver and the operating system's driver model - is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS SPIs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS SPIs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are automatically configured correctly by the MSS - configurator tool in the hardware flow when the MSS SPIs are enabled in that - tool. You must ensure that the MSS SPIs are enabled by the MSS configurator - tool in the hardware flow; otherwise the serial inputs and outputs will not be - connected to the chip's external pins. For more information on IOMUX, refer to - the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the - MSS SPI blocks are defined as constants in the SmartFusion CMSIS-PAL. You must - ensure that the SmartFusion CMSIS-PAL is either included in the software tool - chain used to build your project or is included in your project. - - @section theory_op Theory of Operation - The MSS SPI driver functions are grouped into the following categories: - • Initialization - • Configuration for either master or slave operations - • SPI master frame transfer control - • SPI master block transfer control - • SPI slave frame transfer control - • SPI slave block transfer control - • DMA block transfer - Frame transfers allow the MSS SPI to write or read up to 32 bits of data in a - SPI transaction. For example, a frame transfer of 12 bits might be used to - read the result of an ADC conversion from a SPI analog to digital converter. - Block transfers allow the MSS SPI to write or read a number of bytes in a SPI - transaction. Block transfer transactions allow data transfers in multiples of - 8 bits (8, 16, 24, 32, 40…). Block transfers are typically used with byte - oriented devices like SPI FLASH devices. - - Initialization - The MSS SPI driver is initialized through a call to the MSS_SPI_init() - function. The MSS_SPI_init() function takes only one parameter, a pointer - to one of two global data structures used by the driver to store state - information for each MSS SPI. A pointer to these data structures is also - used as first parameter to any of the driver functions to identify which MSS - SPI will be used by the called function. The names of these two data - structures are g_mss_spi0 and g_mss_spi1. Therefore any call to an MSS SPI - driver function should be of the form MSS_SPI_function_name( &g_mss_spi0, ... ) - or MSS_SPI_function_name( &g_mss_spi1, ... ). - The MSS_SPI_init() function resets the specified MSS SPI hardware block and - clears any pending interrupts from that MSS SPI in the Cortex-M3 NVIC. - The MSS_SPI_init() function must be called before any other MSS SPI driver - functions can be called. - - Configuration - A MSS SPI block can operate either as a master or slave SPI device. There - are two distinct functions for configuring a MSS SPI block for master or - slave operations. - - Master configuration - The MSS_SPI_configure_master_mode() function configures the specified MSS - SPI block for operations as a SPI master. It must be called once for each - remote SPI slave device the MSS SPI block will communicate with. It is used - to provide the following information about each SPI slave’s communication - characteristics: - • The SPI protocol mode - • The SPI clock speed - • The frame bit length - This information is held by the driver and will be used to alter the - configuration of the MSS SPI block each time a slave is selected through a - call to MSS_SPI_set_slave_select(). The SPI protocol mode defines the - initial state of the clock signal at the start of a transaction and which - clock edge will be used to sample the data signal, or it defines whether the - SPI block will operate in TI synchronous serial mode or in NSC MICROWIRE mode. - - Slave configuration - The MSS_SPI_configure_slave_mode() function configures the specified MSS SPI - block for operations as a SPI slave. It configures the following SPI - communication characteristics: - • The SPI protocol mode - • The SPI clock speed - • The frame bit length - The SPI protocol mode defines the initial state of the clock signal at the - start of a transaction and which clock edge will be used to sample the data - signal, or it defines whether the SPI block will operate in TI synchronous - serial mode or in NSC MICROWIRE mode. - - SPI master frame transfer control - The following functions are used as part of SPI master frame transfers: - • MSS_SPI_set_slave_select() - • MSS_SPI_transfer_frame() - • MSS_SPI_clear_slave_select() - The master must first select the target slave through a call to - MSS_SPI_set_slave_select(). This causes the relevant slave select line to - become asserted while data is clocked out onto the SPI data line. - A call to is then made to function MSS_SPI_transfer_frame() specifying and - the value of the data frame to be sent. - The function MSS_SPI_clear_slave_select() can be used after the transfer is - complete to prevent this slave select line from being asserted during - subsequent SPI transactions. A call to this function is only required if the - master is communicating with multiple slave devices. - - SPI master block transfer control - The following functions are used as part of SPI master block transfers: - • MSS_SPI_set_slave_select() - • MSS_SPI_clear_slave_select() - • MSS_SPI_transfer_block() - The master must first select the target slave through a call to - MSS_SPI_set_slave_select(). This causes the relevant slave select line to - become asserted while data is clocked out onto the SPI data line. - Alternatively a GPIO can be used to control the state of the target slave - device’s chip select signal. - A call to is then made to function MSS_SPI_transfer_block (). The - parameters of this function specify: - • the number of bytes to be transmitted - • a pointer to the buffer containing the data to be transmitted - • the number of bytes to be received - • a pointer to the buffer where received data will be stored - The number of bytes to be transmitted can be set to zero to indicate that - the transfer is purely a block read transfer. The number of bytes to be - received can be set to zero to specify that the transfer is purely a block - write transfer. - The function MSS_SPI_clear_slave_select() can be used after the transfer is - complete to prevent this slave select line from being asserted during - subsequent SPI transactions. A call to this function is only required if the - master is communicating with multiple slave devices. - - SPI slave frame transfer control - The following functions are used as part of SPI slave frame transfers: - • MSS_SPI_set_slave_tx_frame() - • MSS_SPI_set_frame_rx_handler() - The MSS_SPI_set_slave_tx_frame() function specifies the frame data that will - be returned to the SPI master. The frame data specified through this - function is the value that will be read over the SPI bus by the remote SPI - master when it initiates a transaction. A call to MSS_SPI_set_slave_tx_frame() - is only required if the MSS SPI slave is the target of SPI read transactions, - i.e. if data is meant to be read from the SmartFusion device over SPI. - The MSS_SPI_set_frame_rx_handler() function specifies the receive handler - function that will called when a frame of data has been received by the MSS - SPI when it is configured as a slave. The receive handler function specified - through this call will process the frame data written, over the SPI bus, to - the MSS SPI slave by the remote SPI master. The receive handler function must - be implemented as part of the application. It is only required if the MSS SPI - slave is the target of SPI frame write transactions. - - SPI slave block transfer control - The following functions are used as part of SPI slave block transfers: - • MSS_SPI_set_slave_block_buffers() - The MSS_SPI_set_slave_block_buffers() function is used to configure a MSS SPI - slave for block transfer operations. It specifies: - • The buffer containing the data that will be returned to the remote SPI master - • The buffer where data received from the remote SPI master will be stored - • The handler function that will be called after the receive buffer is filled - - DMA block transfer control - The following functions are used as part of MSS SPI DMA transfers: - • MSS_SPI_disable() - • MSS_SPI_set_transfer_byte_count() - • MSS_SPI_enable() - • MSS_SPI_tx_done() - The MSS SPI must first be disabled through a call to function MSS_SPI_disable(). - The number of bytes to be transferred is then set through a call to function - MSS_SPI_set_transfer_byte_count(). The DMA transfer is then initiated by a call - to the MSS_PDMA_start() function provided by the MSS PDMA driver. The actual - DMA transfer will only start once the MSS SPI block has been re-enabled through - a call to MSS_SPI_enable(). The completion of the DMA driven SPI transfer can - be detected through a call to MSS_SPI_tx_done(). The direction of the SPI - transfer, write or read, depends on the DMA channel configuration. A SPI write - transfer occurs when the DMA channel is configured to write data to the MSS SPI - block. A SPI read transfer occurs when the DMA channel is configured to read data - from the MSS SPI block. - - *//*=========================================================================*/ -#ifndef MSS_SPI_H_ -#define MSS_SPI_H_ - -#include "../../CMSIS/a2fxxxm3.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - This defines the function prototype that must be followed by MSS SPI slave - frame receive handler functions. These functions are registered with the MSS - SPI driver through the MSS_SPI_set_frame_rx_handler () function. - - Declaring and Implementing Slave Frame Receive Handler Functions: - Slave frame receive handler functions should follow the following prototype: - void slave_frame_receive_handler ( uint32_t rx_frame ); - The actual name of the receive handler is unimportant. You can use any name - of your choice for the receive frame handler. The rx_frame parameter will - contain the value of the received frame. - */ -typedef void (*mss_spi_frame_rx_handler_t)( uint32_t rx_frame ); - -/***************************************************************************//** - This defines the function prototype that must be followed by MSS SPI slave - block receive handler functions. These functions are registered with the MSS - SPI driver through the MSS_SPI_set_slave_block_buffers() function. - - Declaring and Implementing Slave Block Receive Handler Functions - Slave block receive handler functions should follow the following prototype: - void mss_spi_block_rx_handler ( uint8_t * rx_buff, uint16_t rx_size ); - The actual name of the receive handler is unimportant. You can use any name - of your choice for the receive frame handler. The rx_buff parameter will - contain a pointer to the start of the received block. The rx_size parameter - will contain the number of bytes of the received block. - - */ -typedef void (*mss_spi_block_rx_handler_t)( uint8_t * rx_buff, uint32_t rx_size ); - -/***************************************************************************//** - This enumeration is used to define the settings for the SPI protocol mode - bits, CPHA and CPOL. It is used as a parameter to the MSS_SPI_configure_master_mode() - and MSS_SPI_configure_slave_mode() functions. - - - MSS_SPI_MODE0: - Clock starts low, data read on clock's rising edge, data changes on - falling edge. - - - MSS_SPI_MODE1: - Clock starts low, data read on clock's falling edge, data changes on - rising edge. - - - MSS_SPI_MODE2: - Clock starts high, data read on clock's falling edge, data changes on - rising edge. - - - MSS_SPI_MODE3: - Clock starts high, data read on clock's rising edge, data changes on - falling edge. - - - MSS_TI_MODE: - TI syncronous serial mode. Slave select is pulsed at start of transfer. - - - MSS_NSC_MODE: - NSC Microwire mode. - */ -typedef enum __mss_spi_protocol_mode_t -{ - MSS_SPI_MODE0 = 0x00000000, - MSS_SPI_TI_MODE = 0x00000004, - MSS_SPI_NSC_MODE = 0x00000008, - MSS_SPI_MODE2 = 0x01000000, - MSS_SPI_MODE1 = 0x02000000, - MSS_SPI_MODE3 = 0x03000000 -} mss_spi_protocol_mode_t; - -/***************************************************************************//** - This enumeration specifies the divider to be applied to the the APB bus clock - in order to generate the SPI clock. It is used as parameter to the - MSS_SPI_configure_master_mode() and MSS_SPI_configure_slave_mode()functions. - */ - typedef enum __mss_spi_pclk_div_t - { - MSS_SPI_PCLK_DIV_2 = 0, - MSS_SPI_PCLK_DIV_4 = 1, - MSS_SPI_PCLK_DIV_8 = 2, - MSS_SPI_PCLK_DIV_16 = 3, - MSS_SPI_PCLK_DIV_32 = 4, - MSS_SPI_PCLK_DIV_64 = 5, - MSS_SPI_PCLK_DIV_128 = 6, - MSS_SPI_PCLK_DIV_256 = 7 -} mss_spi_pclk_div_t; - -/***************************************************************************//** - This enumeration is used to select a specific SPI slave device (0 to 7). It is - used as a parameter to the MSS_SPI_configure_master_mode(), - MSS_SPI_set_slave_select() and MSS_SPI_clear_slave_select () functions. - */ - typedef enum __mss_spi_slave_t - { - MSS_SPI_SLAVE_0 = 0, - MSS_SPI_SLAVE_1 = 1, - MSS_SPI_SLAVE_2 = 2, - MSS_SPI_SLAVE_3 = 3, - MSS_SPI_SLAVE_4 = 4, - MSS_SPI_SLAVE_5 = 5, - MSS_SPI_SLAVE_6 = 6, - MSS_SPI_SLAVE_7 = 7, - MSS_SPI_MAX_NB_OF_SLAVES = 8 -} mss_spi_slave_t; - -/***************************************************************************//** - This constant defines a frame size of 8 bits when configuring an MSS SPI to - perform block transfer data transactions. - It must be used as the value for the frame_bit_length parameter of function - MSS_SPI_configure_master_mode() when performing block transfers between the - MSS SPI master and the target SPI slave. - It must also be used as the value for the frame_bit_length parameter of - function MSS_SPI_configure_slave_mode() when performing block transfers - between the MSS SPI slave and the remote SPI master. - */ -#define MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE 8 - -/***************************************************************************//** - The mss_spi_slave_cfg_t holds the MSS SPI configuration that must be used to - communicate with a specific SPI slave. - */ -typedef struct __mss_spi_slave_cfg_t -{ - uint32_t ctrl_reg; - uint8_t txrxdf_size_reg; - uint8_t clk_gen; -} mss_spi_slave_cfg_t; - -/***************************************************************************//** - There is one instance of this structure for each of the microcontroller - subsystem's SPIs. Instances of this structure are used to identify a specific - SPI. A pointer to an instance of the mss_spi_instance_t structure is passed as - the first parameter to MSS SPI driver functions to identify which SPI should - perform the requested operation. - */ -typedef struct __mss_spi_instance_t -{ - /* CMSIS related defines identifying the SPI hardware. */ - SPI_TypeDef * hw_reg; /*!< Pointer to SPI registers. */ - SPI_BitBand_TypeDef * hw_reg_bit; /*!< Pointer to SPI registers bit band area. */ - IRQn_Type irqn; /*!< SPI's Cortex-M3 NVIC interrupt number. */ - - /* Internal transmit state: */ - const uint8_t * slave_tx_buffer; /*!< Pointer to slave transmit buffer. */ - uint32_t slave_tx_size; /*!< Size of slave transmit buffer. */ - uint32_t slave_tx_idx; /*!< Current index into slave transmit buffer. */ - - /* Internal receive state: */ - uint8_t * slave_rx_buffer; /*!< Pointer to buffer where data received by a slave will be stored. */ - uint32_t slave_rx_size; /*!< Slave receive buffer size. */ - uint32_t slave_rx_idx; /*!< Current index into slave receive buffer. */ - - /* Configuration for each target slave. */ - mss_spi_slave_cfg_t slaves_cfg[MSS_SPI_MAX_NB_OF_SLAVES]; - - /** Slave received frame handler: */ - mss_spi_frame_rx_handler_t frame_rx_handler; /*!< Pointer to function that will be called when a frame is received when the SPI block is configured as slave. */ - - uint32_t slave_tx_frame; /*!< Value of the data frame that will be transmited when the SPI block is configured as slave. */ - - /* Slave block rx handler: */ - mss_spi_block_rx_handler_t block_rx_handler; /*!< Pointer to the function that will be called when a data block has been received. */ - -} mss_spi_instance_t; - -/***************************************************************************//** - This instance of mss_spi_instance_t holds all data related to the operations - performed by MSS SPI 0. A pointer to g_mss_spi0 is passed as the first - parameter to MSS SPI driver functions to indicate that MSS SPI 0 should - perform the requested operation. - */ -extern mss_spi_instance_t g_mss_spi0; - -/***************************************************************************//** - This instance of mss_spi_instance_t holds all data related to the operations - performed by MSS SPI 1. A pointer to g_mss_spi1 is passed as the first - parameter to MSS SPI driver functions to indicate that MSS SPI 1 should - perform the requested operation. - */ -extern mss_spi_instance_t g_mss_spi1; - -/***************************************************************************//** - The MSS_SPI_init() function initializes and hardware and data structures of - one of the SmartFusion MSS SPIs. The MSS_SPI_init() function must be called - before any other MSS SPI driver functions can be called. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - MSS_SPI_init( &g_mss_spi0 ); - @endcode - */ -void MSS_SPI_init -( - mss_spi_instance_t * this_spi -); - -/***************************************************************************//** - The MSS_SPI_configure_slave_mode() function configure a MSS SPI block for - operations as a slave SPI device. It configures the SPI hardware with the - selected SPI protocol mode and clock speed. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - @param protocol_mode - Serial peripheral interface operating mode. Allowed values are: - - MSS_SPI_MODE0 - - MSS_SPI_MODE1 - - MSS_SPI_MODE2 - - MSS_SPI_MODE3 - - MSS_TI_MODE - - MSS_NSC_MODE - - @param clk_rate - Divider value used to generate serial interface clock signal from PCLK. - Allowed values are: - - MSS_SPI_PCLK_DIV_2 - - MSS_SPI_PCLK_DIV_4 - - MSS_SPI_PCLK_DIV_8 - - MSS_SPI_PCLK_DIV_16 - - MSS_SPI_PCLK_DIV_32 - - MSS_SPI_PCLK_DIV_64 - - MSS_SPI_PCLK_DIV_128 - - MSS_SPI_PCLK_DIV_256 - - @param frame_bit_length - Number of bits making up the frame. The maximum frame length is 32 bits. You - must use the MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE constant as the value for - frame_bit_length when configuring the MSS SPI master for block transfer - transactions with the target SPI slave. - - Example: - @code - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - @endcode - - */ -void MSS_SPI_configure_slave_mode -( - mss_spi_instance_t * this_spi, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -); - -/***************************************************************************//** - The MSS_SPI_configure_master_mode() function configures the protocol mode, - serial clock speed and frame size for a specific target SPI slave device. It - is used when the MSS SPI hardware block is used as a SPI master. This function - must be called once for each target SPI slave the SPI master is going to - communicate with. The SPI master hardware will be configured with the - configuration specified by this function during calls to - MSS_SPI_set_slave_select(). - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param slave - The slave parameter is used to identify a target SPI slave. The driver will - hold the MSS SPI master configuration required to communicate with this - slave, as specified by the other function parameters. Allowed values are: - • MSS_SPI_SLAVE_0 - • MSS_SPI_SLAVE_1 - • MSS_SPI_SLAVE_2 - • MSS_SPI_SLAVE_3 - • MSS_SPI_SLAVE_4 - • MSS_SPI_SLAVE_5 - • MSS_SPI_SLAVE_6 - • MSS_SPI_SLAVE_7 - - @param protocol_mode - Serial peripheral interface operating mode. Allowed values are: - • MSS_SPI_MODE0 - • MSS_SPI_MODE1 - • MSS_SPI_MODE2 - • MSS_SPI_MODE3 - • MSS_SPI_TI_MODE - • MSS_SPI_NSC_MODE - - @param clk_rate - Divider value used to generate serial interface clock signal from PCLK. - Allowed values are: - • MSS_SPI_PCLK_DIV_2 - • MSS_SPI_PCLK_DIV_4 - • MSS_SPI_PCLK_DIV_8 - • MSS_SPI_PCLK_DIV_16 - • MSS_SPI_PCLK_DIV_32 - • MSS_SPI_PCLK_DIV_64 - • MSS_SPI_PCLK_DIV_128 - • MSS_SPI_PCLK_DIV_256 - - @param frame_bit_length - Number of bits making up the frame. The maximum frame length is 32 bits. You - must use the MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE constant as the value for - frame_bit_length when configuring the MSS SPI master for block transfer - transactions with the target SPI slave. - - Example: - @code - MSS_SPI_init( &g_mss_spi0 ); - - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - 12 - ); - - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_1, - MSS_SPI_TI_MODE, - MSS_SPI_PCLK_DIV_128, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - @endcode - */ -void MSS_SPI_configure_master_mode -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -); - -/*============================================================================== - * Master functions - *============================================================================*/ - -/***************************************************************************//** - The MSS_SPI_slave_select() function is used by a MSS SPI master to select a - specific slave. This function causes the relevant slave select signal to be - asserted. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param slave - The slave parameter is one of mss_spi_slave_t enumerated constants - identifying a slave. - - Example: - @code - const uint8_t frame_size = 25; - const uint32_t master_tx_frame = 0x0100A0E1; - - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - frame_size - ); - - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_frame( &g_mss_spi0, master_tx_frame ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -void MSS_SPI_set_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -); - -/***************************************************************************//** - The MSS_SPI_clear_slave_select() function is used by a MSS SPI Master to - deselect a specific slave. This function causes the relevant slave select - signal to be de-asserted. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param slave - The slave parameter is one of mss_spi_slave_t enumerated constants - identifying a slave. - - Example: - @code - const uint8_t frame_size = 25; - const uint32_t master_tx_frame = 0x0100A0E1; - - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - frame_size - ); - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_frame( &g_mss_spi0, master_tx_frame ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -void MSS_SPI_clear_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -); - -/***************************************************************************//** - The MSS_SPI_disable() function is used to temporarily disable a MSS SPI - hardware block. This function is typically used in conjunction with the - SPI_set_transfer_byte_count() function to setup a DMA controlled SPI transmit - transaction as the SPI_set_transfer_byte_count() function must only be used - when the MSS SPI hardware is disabled. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)tx_buffer, - PDMA_SPI1_TX_REGISTER, - transfer_size - ); - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done( &g_mss_spi0 ) ) - { - ; - } - @endcode - */ -static __INLINE void MSS_SPI_disable -( - mss_spi_instance_t * this_spi -) -{ - this_spi->hw_reg_bit->CTRL_ENABLE = 0; -} - -/***************************************************************************//** - The MSS_SPI_enable() function is used to re-enable a MSS SPI hardware block - after it was disabled using the SPI_disable() function. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)tx_buffer, - PDMA_SPI1_TX_REGISTER, - transfer_size - ); - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done( &g_mss_spi0 ) ) - { - ; - } - @endcode - */ -static __INLINE void MSS_SPI_enable -( - mss_spi_instance_t * this_spi -) -{ - this_spi->hw_reg_bit->CTRL_ENABLE = 1; -} - -/***************************************************************************//** - The MSS_SPI_set_transfer_byte_count() function is used as part of setting up - a SPI transfer using DMA. It specifies the number of bytes that must be - transferred before MSS_SPI_tx_done() indicates that the transfer is complete. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param byte_count - The byte_count parameter specifies the number of bytes that must be - transferred by the SPI hardware block considering that a transaction has - been completed. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - - PDMA_start( PDMA_CHANNEL_0, (uint32_t)tx_buffer, 0x40011014, transfer_size ); - - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done( &g_mss_spi0) ) - { - ; - } - @endcode - */ -static __INLINE void MSS_SPI_set_transfer_byte_count -( - mss_spi_instance_t * this_spi, - uint16_t byte_count -) -{ - const uint32_t TXRXDFCOUNT_SHIFT = 8U; - const uint32_t TXRXDFCOUNT_MASK = 0x00FFFF00U; - - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | ( (byte_count << TXRXDFCOUNT_SHIFT) & TXRXDFCOUNT_MASK); - this_spi->hw_reg->TXRXDF_SIZE = 8U; -} - -/***************************************************************************//** - The MSS_SPI_tx_done() function is used to find out if a DMA controlled transfer - has completed. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)tx_buffer, - PDMA_SPI1_TX_REGISTER, - transfer_size - ); - - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done(&g_mss_spi0) ) - { - ; - } - @endcode - */ -static __INLINE uint32_t MSS_SPI_tx_done -( - mss_spi_instance_t * this_spi -) -{ - return this_spi->hw_reg_bit->STATUS_TX_DONE; -} - -/***************************************************************************//** - The MSS_SPI_transfer_frame() function is used by a MSS SPI master to transmit - and receive a frame up to 32 bits long. This function is typically used for - transactions with a SPI slave where the number of transmit and receive bits is - not divisible by 8. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param tx_bits - The tx_bits parameter is a 32 bits word containing the value that will be - transmitted. - Note: The bit length of the value to be transmitted to the slave must be - specified as the frame_bit_length parameter in a previous call to - the MSS_SPI_configure_master() function. - - @return - This function returns a 32 bits word containing the value that is received - from the slave. - - Example: - @code - const uint8_t frame_size = 25; - const uint32_t master_tx_frame = 0x0100A0E1; - uint32_t master_rx; - - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - frame_size - ); - - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - master_rx = MSS_SPI_transfer_frame( &g_mss_spi0, master_tx_frame ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -uint32_t MSS_SPI_transfer_frame -( - mss_spi_instance_t * this_spi, - uint32_t tx_bits -); - -/***************************************************************************//** - The MSS_SPI_transfer_block() function is used by MSS SPI masters to transmit - and receive blocks of data organized as a specified number of bytes. It can be - used for: - • Writing a data block to a slave - • Reading a data block from a slave - • Sending a command to a slave followed by reading the outcome of the - command in a single SPI transaction. This function can be used alongside - Peripheral DMA functions to perform the actual moving to and from the SPI - hardware block using Peripheral DMA. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param cmd_buffer - The cmd_buffer parameter is a pointer to the buffer containing the data that - will be sent by the master from the beginning of the transfer. This pointer - can be null (0) if the master does not need to send a command before reading - data or if the command part of the transfer is written to the SPI hardware - block using DMA. - - @param cmd_byte_size - The cmd_byte_size parameter specifies the number of bytes contained in - cmd_buffer that will be sent. A value of 0 indicates that no data needs to - be sent to the slave. A non-zero value while the cmd_buffer pointer is 0 is - used to indicate that the command data will be written to the SPI hardware - block using DMA. - - @param rd_buffer - The rd_buffer parameter is a pointer to the buffer where the data received - from the slave after the command has been sent will be stored. - - @param rd_byte_size - The rd_byte_size parameter specifies the number of bytes to be received from - the slave and stored in the rd_buffer. A value of 0 indicates that no data - is to be read from the slave. A non-zero value while the rd_buffer pointer - is null (0) is used to specify the receive size when using DMA to read from - the slave. - Note: All bytes received from the slave, including the bytes received - while the command is sent, will be read through DMA. - - Polled write transfer example: - @code - uint8_t master_tx_buffer[MASTER_TX_BUFFER] = - { - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A - }; - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_block - ( - &g_mss_spi0, - master_tx_buffer, - sizeof(master_tx_buffer), - 0, - 0 - ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - - DMA transfer example: - In this example the transmit and receive buffers are not specified as part of - the call to MSS_SPI_transfer_block(). MSS_SPI_transfer_block() will only - prepare the MSS SPI hardware for a transfer. The MSS SPI transmit hardware - FIFO is filled using one DMA channel and a second DMA channel is used to read - the content of the MSS SPI receive hardware FIFO. The transmit and receive - buffers are specified by two separate calls to PDMA_start() to initiate DMA - transfers on the channel used for transmit data and the channel used for - receive data. - @code - uint8_t master_tx_buffer[MASTER_RX_BUFFER] = - { - 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA - }; - uint8_t slave_rx_buffer[MASTER_RX_BUFFER] = - { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A - }; - MSS_SPI_init( &g_mss_spi0 ); - - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_block( &g_mss_spi0, 0, 0, 0, 0 ); - PDMA_start - ( - PDMA_CHANNEL_1, - PDMA_SPI0_RX_REGISTER, - (uint32_t)master_rx_buffer, - sizeof(master_rx_buffer) - ); - PDMA_start - ( - PDMA_CHANNEL_2, - (uint32_t)master_tx_buffer, - PDMA_SPI0_TX_REGISTER, - sizeof(master_tx_buffer) - ); - while( PDMA_status(PDMA_CHANNEL_1) == 0 ) - { - ; - } - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -void MSS_SPI_transfer_block -( - mss_spi_instance_t * this_spi, - const uint8_t * cmd_buffer, - uint16_t cmd_byte_size, - uint8_t * rd_buffer, - uint16_t rd_byte_size -); - -/*============================================================================== - * Slave functions - *============================================================================*/ - -/***************************************************************************//** - The MSS_SPI_set_frame_rx_handler() function is used by MSS SPI slaves to - specify the receive handler function that will be called by the MSS SPI driver - interrupt handler when a a frame of data is received by the MSS SPI slave. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param rx_handler - The rx_handler parameter is a pointer to the frame receive handler that must - be called when a frame is received by the MSS SPI slave. - - Example: - @code - uint32_t g_slave_rx_frame = 0; - - void slave_frame_handler( uint32_t rx_frame ) - { - g_slave_rx_frame = rx_frame; - } - - int setup_slave( void ) - { - const uint16_t frame_size = 25; - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - frame_size - ); - MSS_SPI_set_frame_rx_handler( &g_mss_spi1, slave_frame_handler ); - } - @endcode - */ -void MSS_SPI_set_frame_rx_handler -( - mss_spi_instance_t * this_spi, - mss_spi_frame_rx_handler_t rx_handler -); - -/***************************************************************************//** - The MSS_SPI_set_slave_tx_frame() function is used by MSS SPI slaves to specify - the frame that will be transmitted when a transaction is initiated by the SPI - master. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param frame_value - The frame_value parameter contains the value of the frame to be sent to the - master. - Note: The bit length of the value to be transmitted to the master must be - specified as the frame_bit_length parameter in a previous call to - the MSS_SPI_configure_slave() function. - - Example: - @code - const uint16_t frame_size = 25; - const uint32_t slave_tx_frame = 0x0110F761; - uint32_t master_rx; - - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - frame_size - ); - MSS_SPI_set_slave_tx_frame( &g_mss_spi1, slave_tx_frame ); - @endcode - */ -void MSS_SPI_set_slave_tx_frame -( - mss_spi_instance_t * this_spi, - uint32_t frame_value -); - -/***************************************************************************//** - The MSS_SPI_set_slave_block_buffers() function is used to configure an MSS - SPI slave for block transfer operations. It specifies one or more of the - following: - • The data that will be transmitted when accessed by a master. - • The buffer where data received from a master will be stored. - • The handler function that must be called after the receive buffer has been - filled. - • The number of bytes that must be received from the master before the receive - handler function is called. - These parameters allow the following use cases: - • Slave performing an action after receiving a block of data from a master - containing a command. The action will be performed by the receive handling - based on the content of the receive data buffer. - • Slave returning a block of data to the master. The type of information is - always the same but the actual values change over time. For example, - returning the voltage of a predefined set of analog inputs. - • Slave returning data based on a command contained in the first part of the - SPI transaction. For example, reading the voltage of the analog input - specified by the first data byte by the master. This is achieved by setting - the rx_buff_size parameter to the number of received bytes making up the - command. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param tx_buffer - The tx_buffer parameter is a pointer to a buffer containing the data that - will be sent to the master. This parameter can be set to 0 if the MSS SPI - slave is not intended to be the target of SPI read transactions or if DMA - is used to transfer SPI read data into the MSS SPI slave. - - @param tx_buff_size - The tx_buff_size parameter specifies the number of bytes contained in the - tx_buffer. This parameter can be set to 0 if the MSS SPI slave is not - intended to be the target of SPI read transactions or if DMA is used to - transfer SPI read data into the MSS SPI slave. - - @param rx_buffer - The rx_buffer parameter is a pointer to the buffer where data received from - the master will be stored. This parameter can be set to 0 if the MSS SPI - slave is not intended to be the target of SPI write or write-read - transactions. It can also set to 0 if the MSS SPI slave uses DMA to handle - data written to it. - - @param rx_buff_size - The rx_buff_size parameter specifies the size of the receive buffer. It is - also the number of bytes that must be received before the receive handler - is called, if a receive handler is specified using the block_rx_handler - parameter. This parameter can be set to 0 if the MSS SPI slave is not - intended to be the target of SPI write or write-read transactions. It can - also set to 0 if the MSS SPI slave uses DMA to handle data written to it. - - @param block_rx_handler - The block_rx_handler parameter is a pointer to a function that will be - called when the receive buffer has been filled. This parameter can be set - to 0 if the MSS SPI slave is not intended to be the target of SPI write or - write-read transactions. It can also set to 0 if the MSS SPI slave uses DMA - to handle data written to it. - - Slave performing operation based on master command: - In this example the SPI slave is configured to receive 10 bytes of data or - command from the SPI slave and process the data received from the master. - @code - uint32_t nb_of_rx_handler_calls = 0; - - void spi1_block_rx_handler_b - ( - uint8_t * rx_buff, - uint16_t rx_size - ) - { - ++nb_of_rx_handler_calls; - } - - void setup_slave( void ) - { - uint8_t slave_rx_buffer[10] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - - MSS_SPI_set_slave_block_buffers - ( - &g_mss_spi1, - 0, - 0, - slave_rx_buffer, - sizeof(master_tx_buffer), - spi1_block_rx_handler_b - ); - } - @endcode - - Slave responding to command example: - In this example the slave will return data based on a command sent by the - master. The first part of the transaction is handled using polled mode where - each byte returned to the master is written as part of the interrupt service - routine. The second part of the transaction, where the slave returns data - based on the command value, is sent using a DMA transfer initiated by the - receive handler. - @code - static uint8_t g_spi1_tx_buffer_b[SLAVE_TX_BUFFER_SIZE] = - { - 5, 6, 7, 8, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 - }; - - void spi1_block_rx_handler - ( - uint8_t * rx_buff, - uint16_t rx_size - ) - { - if ( rx_buff[2] == 0x99 ) - { - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)g_spi1_tx_buffer_b, - 0x40011014, - sizeof(g_spi1_tx_buffer_b) - ); - } - } - - void setup_slave( void ) - { - uint8_t slave_preamble[8] = { 9, 10, 11, 12, 13, 14, 16, 16 }; - - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - - PDMA_init(); - PDMA_configure - ( - PDMA_CHANNEL_0, - TO_SPI_1, - LOW_PRIORITY | BYTE_TRANSFER | INC_SRC_ONE_BYTE - ); - - MSS_SPI_set_slave_block_buffers - ( - &g_mss_spi1, - slave_preamble, - 4, - g_spi1_rx_buffer, - sizeof(g_spi1_rx_buffer), - spi1_block_rx_handler - ); - } - @endcode - */ -void MSS_SPI_set_slave_block_buffers -( - mss_spi_instance_t * this_spi, - const uint8_t * tx_buffer, - uint32_t tx_buff_size, - uint8_t * rx_buffer, - uint32_t rx_buff_size, - mss_spi_block_rx_handler_t block_rx_handler -); - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_SPI_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h deleted file mode 100644 index d83519d54..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h +++ /dev/null @@ -1,598 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem (MSS) timer driver API. - * - * SVN $Revision: 2661 $ - * SVN $Date: 2010-04-19 17:14:26 +0100 (Mon, 19 Apr 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS Timer Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a timer hardware - block which can be used as two independent 32-bits timers or as a single - 64-bits timer in periodic or one-shot mode. - - This driver provides a set of functions for controlling the MSS timer as part - of a bare metal system where no operating system is available. These drivers - can be adapted for use as part of an operating system but the implementation - of the adaptation layer between this driver and the operating system's driver - model is outside the scope of this driver. - - @section theory_op Theory of Operation - The MSS Timer driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - The SmartFusion MSS Timer can be used in one of two mutually exclusive modes; - either as a single 64-bits timer or as two independent 32-bits timers. The MSS - Timer can be used in either periodic mode or one-shot mode. A timer configured - for periodic mode operations will generate an interrupt and reload its - down-counter when it reaches 0. The timer will then continue decrementing from - its reload value without waiting for the interrupt to be cleared. A timer - configured for one-shot mode will only generate an interrupt once when its - down-counter reaches 0. It must be explitcitly reloaded to start decrementing - again. - - The MSS Timer driver functions are grouped into the following categories: - - Initialization and Configuration - - Timer control - - Interrupt control - - The MSS Timer driver provides three initialization functions: - - MSS_TIM1_init() - - MSS_TIM2_init() - - MSS_TIM64_init() - The MSS Timer driver is initialized through calls to these functions and at - least one of them must be called before any other MSS Timer driver functions - can be called. - You should only use the MSS_TIM1_init() and MSS_TIM2_init() functions if you - intend to use the timer in 32-bits mode. Use the MSS_TIM64_init() function is - you intend to use the MSS Timer as a single 64-bits timer. The initialization - functions take a single parameter specifying the operating mode of the timer - being initialized. - - Once initialized a timer can be controlled using the following functions: - - MSS_TIM1_load_immediate() - - MSS_TIM1_load_background() - - MSS_TIM1_get_current_value() - - MSS_TIM1_start() - - MSS_TIM1_stop() - - MSS_TIM2_load_immediate() - - MSS_TIM2_load_background() - - MSS_TIM2_get_current_value() - - MSS_TIM2_start() - - MSS_TIM2_stop() - - MSS_TIM64_load_immediate() - - MSS_TIM64_load_background() - - MSS_TIM64_get_current_value() - - MSS_TIM64_start() - - MSS_TIM64_stop() - - Timer interrupts are controlled using the following functions: - - MSS_TIM1_enable_irq() - - MSS_TIM1_disable_irq() - - MSS_TIM1_clear_irq() - - MSS_TIM2_enable_irq() - - MSS_TIM2_disable_irq() - - MSS_TIM2_clear_irq() - - MSS_TIM64_enable_irq() - - MSS_TIM64_disable_irq() - - MSS_TIM64_clear_irq() - - The function prototypes for the timer interrupt handlers are: - - void Timer1_IRQHandler( void ) - - void Timer2_IRQHandler( void ) - Entries for these interrupt handlers are provided in the SmartFusion CMSIS-PAL - vector table. To add a Timer 1 interrupt handler, you must implement a - Timer1_IRQHandler( ) function as part of your application code. To add a - Timer 2 interrupt handler, you must implement a Timer2_IRQHandler( ) function - as part of your application code. When using the MSS Timer as a 64-bit timer, - you must implement a Timer1_IRQHandler( ) function as part of your - application code. The Timer 2 interrupt is not used when the MSS Timer is - configured as a 64-bit timer. - - *//*=========================================================================*/ -#ifndef MSS_TIMER_H_ -#define MSS_TIMER_H_ - - -#include "../../CMSIS/a2fxxxm3.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * Timer mode selection. This enumeration is used to select between the two - * possible timer modes of operation: periodic and one-shot mode. It is used as - * an argument to the MSS_TIM1_init(), MSS_TIM2_init() and MSS_TIM64_init() - * functions. - * MSS_TIMER_PERIODIC_MODE: - * In periodic mode the timer generates interrupts at constant intervals. On - * reaching zero, the timer's counter is reloaded with a value held in a - * register and begins counting down again. - * MSS_TIMER_ONE_SHOT_MODE: - * The timer generates a single interrupt in this mode. On reaching zero, the - * timer's counter halts until reprogrammed by the user. - */ -typedef enum __mss_timer_mode_t -{ - MSS_TIMER_PERIODIC_MODE = 0, - MSS_TIMER_ONE_SHOT_MODE = 1 -} mss_timer_mode_t; - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 1. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 1, disables its interrupt and sets the Timer 1 operating mode. - Please note that the SmartFusion MSS Timer block cannot be used both as a - 64-bit and 32-bit timer. Calling MSS_TIM1_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM1_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* Disable timer 1 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM1INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM1MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_start() function enables Timer 1 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM1_load_immediate() or MSS_TIM1_load_background() functions. - */ -static __INLINE void MSS_TIM1_start( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_stop() function disables Timer 1 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM1_stop( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_get_current_value() returns the current value of the Timer 1 - down-counter. - - @return - This function returns the 32-bits current value of the Timer 1 down-counter. - */ -static __INLINE uint32_t MSS_TIM1_get_current_value( void ) -{ - return TIMER->TIM1_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_immediate() function loads the value passed by the - load_value parameter into the Timer 1 down-counter. The counter will decrement - immediately from this value once Timer 1 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 1 interrupts are - enabled. This function is intended to be used when Timer 1 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 1 down-counter - will start decrementing from. - */ -static __INLINE void MSS_TIM1_load_immediate( uint32_t load_value ) -{ - TIMER->TIM1_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_background() function is used to specify the value that will - be reloaded into the Timer 1 down-counter the next time the counter reaches - zero. This function is typically used when Timer 1 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 1. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 1 down-counter the next time the down-counter reaches zero. The Timer - 1 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM1_load_background( uint32_t load_value ) -{ - TIMER->TIM1_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_enable_irq() function is used to enable interrupt generation for - Timer 1. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer1_IRQHandler() function will be called when a Timer 1 - interrupt occurs. - Note: Note: A Timer1_IRQHandler() default implementation is defined, with - weak linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - - */ -static __INLINE void MSS_TIM1_enable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_disable_irq() function is used to disable interrupt generation - for Timer 1. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM1_disable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_clear_irq() function is used to clear a pending interrupt from - Timer 1. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM1_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() Timer 1 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - - */ -static __INLINE void MSS_TIM1_clear_irq( void ) -{ - TIMER->TIM1_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 2. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 2, disables its interrupt and sets the Timer 2 operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM2_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM2_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer2_IRQn ); /* Disable timer 2 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM2INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM2MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_start() function enables Timer 2 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM2_load_immediate() or MSS_TIM2_load_background() functions. - */ -static __INLINE void MSS_TIM2_start( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_stop() function disables Timer 2 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM2_stop( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_get_current_value() returns the current value of the Timer 2 - down-counter. - */ -static __INLINE uint32_t MSS_TIM2_get_current_value( void ) -{ - return TIMER->TIM2_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_immediate() function loads the value passed by the - load_value parameter into the Timer 2 down-counter. The counter will decrement - immediately from this value once Timer 2 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 2 interrupts are - enabled. This function is intended to be used when Timer 2 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 2 - down-counter will start decrementing. - */ -static __INLINE void MSS_TIM2_load_immediate( uint32_t load_value ) -{ - TIMER->TIM2_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_background() function is used to specify the value that will - be reloaded into the Timer 2 down-counter the next time the counter reaches - zero. This function is typically used when Timer 2 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 2. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 2 down-counter the next time the down-counter reaches zero. The Timer - 2 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM2_load_background( uint32_t load_value ) -{ - TIMER->TIM2_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_enable_irq() function is used to enable interrupt generation for - Timer 2. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer2_IRQHandler() function will be called when a Timer 2 - interrupt occurs. - Note: A Timer2_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own implementation - of the Timer2_IRQHandler() function, that will override the default - implementation, to suit your application. - */ -static __INLINE void MSS_TIM2_enable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 1U; - NVIC_EnableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_disable_irq() function is used to disable interrupt generation - for Timer 2. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM2_disable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 0U; - NVIC_DisableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_clear_irq() function is used to clear a pending interrupt from - Timer 2. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM2_clear_irq() function as part of your - implementation of the Timer2_IRQHandler() Timer 2 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - */ -static __INLINE void MSS_TIM2_clear_irq( void ) -{ - TIMER->TIM2_RIS = 1U; - NVIC_ClearPendingIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_init() function initializes the SmartFusion MSS Timer block for - use as a single 64-bit timer and selects the operating mode of the timer. This - function takes the MSS Timer block out of reset in case this hasn’t been done - already, stops the timer, disables its interrupts and sets the timer's - operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM64_init() will overwrite any previous - configuration of the MSS Timer as a 32-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM64_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* disable timer 1 interrupt within NVIC */ - NVIC_DisableIRQ( Timer2_IRQn ); /* disable timer 2 interrupt within NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 1U; /* switch to 64 bits mode */ - - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM64INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM64MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_start() function enables the 64-bit timer and starts its - down-counter decrementing from the load_value specified in previous calls to - the MSS_TIM64_load_immediate() or MSS_TIM64_load_background() functions. - */ -static __INLINE void MSS_TIM64_start( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_stop() function disables the 64-bit timer and stops its - down-counter decrementing. - */ -static __INLINE void MSS_TIM64_stop( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_get_current_value() is used to read the current value of the - 64-bit timer down-counter. - - @param load_value_u - The load_value_u parameter is a pointer to a 32-bit variable where the upper - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - @param load_value_l - The load_value_l parameter is a pointer to a 32-bit variable where the lower - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - Example: - @code - uint32_t current_value_u = 0; - uint32_t current_value_l = 0; - MSS_TIM64_get_current_value( ¤t_value_u, ¤t_value_l ); - @endcode - */ -static __INLINE void MSS_TIM64_get_current_value -( - uint32_t * load_value_u, - uint32_t * load_value_l -) -{ - *load_value_l = TIMER->TIM64_VAL_L; - *load_value_u = TIMER->TIM64_VAL_U; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_immediate() function loads the values passed by the - load_value_u and load_value_l parameters into the 64-bit timer down-counter. - The counter will decrement immediately from the concatenated 64-bit value once - the 64-bit timer is enabled. The MSS Timer will generate an interrupt when the - counter reaches zero if 64-bit timer interrupts are enabled. This function is - intended to be used when the 64-bit timer is configured for one-shot mode to - time a single delay. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - */ -static __INLINE void MSS_TIM64_load_immediate -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_LOADVAL_U = load_value_u; - TIMER->TIM64_LOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_background() function is used to specify the 64-bit value - that will be reloaded into the 64-bit timer down-counter the next time the - counter reaches zero. This function is typically used when the 64-bit timer is - configured for periodic mode operation to select or change the delay period - between the interrupts generated by the 64-bit timer. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next - time the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next time - the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - */ -static __INLINE void MSS_TIM64_load_background -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_BGLOADVAL_U = load_value_u; - TIMER->TIM64_BGLOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_enable_irq() function is used to enable interrupt generation for - the 64-bit timer. This function also enables the interrupt in the Cortex-M3 - interrupt controller. The Timer1_IRQHandler() function will be called when a - 64-bit timer interrupt occurs. - Note: A Timer1_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - Note: The MSS_TIM64_enable_irq() function enables and uses Timer 1 interrupts - for the 64-bit timer. Timer 2 interrupts remain disabled. - */ -static __INLINE void MSS_TIM64_enable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_disable_irq() function is used to disable interrupt generation - for the 64-bit timer. This function also disables the interrupt in the - Cortex-M3 interrupt controller. - */ -static __INLINE void MSS_TIM64_disable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_clear_irq() function is used to clear a pending interrupt from - the 64-bit timer. This function also clears the interrupt in the Cortex-M3 - interrupt controller. - Note: You must call the MSS_TIM64_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() 64-bit timer interrupt service - routine (ISR) in order to prevent the same interrupt event retriggering a - call to the ISR. - */ -static __INLINE void MSS_TIM64_clear_irq( void ) -{ - TIMER->TIM64_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_TIMER_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c deleted file mode 100644 index 7dbb6c010..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c +++ /dev/null @@ -1,458 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem UART bare metal software driver - * implementation. - * - * SVN $Revision: 1898 $ - * SVN $Date: 2009-12-21 17:27:57 +0000 (Mon, 21 Dec 2009) $ - */ -#include "mss_uart.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * defines - */ -#define TX_READY 0x01U -#define TX_COMPLETE 0U - -#define TX_FIFO_SIZE 16U - -#define FCR_TRIG_LEVEL_MASK 0xC0U - -#define IIRF_MASK 0x0FU - -/******************************************************************************* - * Possible values for Interrupt Identification Register Field. - */ -#define IIRF_MODEM_STATUS 0x00U -#define IIRF_THRE 0x02U -#define IIRF_RX_DATA 0x04U -#define IIRF_RX_LINE_STATUS 0x06U -#define IIRF_DATA_TIMEOUT 0x0CU - -/******************************************************************************* - * Cortex-M3 interrupt handler functions implemented as part of the MSS UART - * driver. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART0_IRQHandler( void ); -#else -void UART0_IRQHandler( void ); -#endif - -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART1_IRQHandler( void ); -#else -void UART1_IRQHandler( void ); -#endif - -/******************************************************************************* - * Local functions. - */ -static void MSS_UART_isr( mss_uart_instance_t * this_uart ); - -/******************************************************************************* - * - */ -mss_uart_instance_t g_mss_uart0; -mss_uart_instance_t g_mss_uart1; - -/***************************************************************************//** - * UART_init. - * Initialises the UART with default configuration. - */ -void -MSS_UART_init -( - mss_uart_instance_t* this_uart, - uint32_t baud_rate, - uint8_t line_config -) -{ - uint16_t baud_value; - uint32_t pclk_freq; - - /* The driver expects g_mss_uart0 and g_mss_uart1 to be the only - * mss_uart_instance_t instances used to identfy UART0 and UART1. */ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - /* Force the value of the CMSIS global variables holding the various system - * clock frequencies to be updated. */ - SystemCoreClockUpdate(); - - if ( this_uart == &g_mss_uart0 ) - { - this_uart->hw_reg = UART0; - this_uart->hw_reg_bit = UART0_BITBAND; - this_uart->irqn = UART0_IRQn; - - pclk_freq = g_FrequencyPCLK0; - - /* reset UART0 */ - SYSREG->SOFT_RST_CR |= SYSREG_UART0_SOFTRESET_MASK; - /* Clear any previously pended UART0 interrupt */ - NVIC_ClearPendingIRQ( UART0_IRQn ); - /* Take UART0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_UART0_SOFTRESET_MASK; - } - else - { - this_uart->hw_reg = UART1; - this_uart->hw_reg_bit = UART1_BITBAND; - this_uart->irqn = UART1_IRQn; - - pclk_freq = g_FrequencyPCLK1; - - /* Reset UART1 */ - SYSREG->SOFT_RST_CR |= SYSREG_UART1_SOFTRESET_MASK; - /* Clear any previously pended UART1 interrupt */ - NVIC_ClearPendingIRQ( UART1_IRQn ); - /* Take UART1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_UART1_SOFTRESET_MASK; - } - - /* disable interrupts */ - this_uart->hw_reg->IER = 0U; - - /* - * Compute baud value based on requested baud rate and PCLK frequency. - * The baud value is computed using the following equation: - * baud_value = PCLK_Frequency / (baud_rate * 16) - * The baud value is rounded up or down depending on what would be the remainder - * of the divide by 16 operation. - */ - baud_value = (uint16_t)(pclk_freq / baud_rate); - if ( baud_value & 0x00000008U ) - { - /* remainder above 0.5 */ - baud_value = (baud_value >> 4U) + 1U; - } - else - { - /* remainder below 0.5 */ - baud_value = (baud_value >> 4U); - } - - /* set divisor latch */ - this_uart->hw_reg_bit->LCR_DLAB = (uint32_t)1; - - /* msb of baud value */ - this_uart->hw_reg->DMR = (uint8_t)(baud_value >> 8); - /* lsb of baud value */ - this_uart->hw_reg->DLR = (uint8_t)baud_value; - - /* reset divisor latch */ - this_uart->hw_reg_bit->LCR_DLAB = (uint32_t)0; - - /* set the line control register (bit length, stop bits, parity) */ - this_uart->hw_reg->LCR = line_config; - - /* FIFO configuration */ - this_uart->hw_reg->FCR = (uint8_t)MSS_UART_FIFO_SINGLE_BYTE; - - /* disable loopback */ - this_uart->hw_reg_bit->MCR_LOOP = (uint32_t)0; - - /* Instance setup */ - this_uart->tx_buff_size = TX_COMPLETE; - this_uart->tx_buffer = (const uint8_t *)0; - this_uart->tx_idx = 0U; - - this_uart->rx_handler = (mss_uart_rx_handler_t)0; -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_polled_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -) -{ - uint32_t char_idx; - uint32_t status; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - for ( char_idx = 0U; char_idx < tx_size; char_idx++ ) - { - /* Wait for UART to become ready to transmit. */ - do { - status = this_uart->hw_reg_bit->LSR_THRE; - } while ( (status & TX_READY) == 0U ); - /* Send next character in the buffer. */ - this_uart->hw_reg->THR = pbuff[char_idx]; - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_polled_tx_string -( - mss_uart_instance_t * this_uart, - const uint8_t * p_sz_string -) -{ - uint32_t char_idx; - uint32_t status; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - char_idx = 0U; - - while ( p_sz_string[char_idx] != 0U ) - { - /* Wait for UART to become ready to transmit. */ - do { - status = this_uart->hw_reg_bit->LSR_THRE; - } while ( (status & TX_READY) == 0U); - /* Send next character in the buffer. */ - this_uart->hw_reg->THR = p_sz_string[char_idx]; - ++char_idx; - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_irq_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -) -{ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - if ( tx_size > 0U ) - { - /*Initialise the transmit info for the UART instance with the arguments.*/ - this_uart->tx_buffer = pbuff; - this_uart->tx_buff_size = tx_size; - this_uart->tx_idx = (uint16_t)0; - - /* enables TX interrupt */ - this_uart->hw_reg_bit->IER_ETBEI = (uint32_t)1; - - /* Enable UART instance interrupt in Cortex-M3 NVIC. */ - NVIC_EnableIRQ( this_uart->irqn ); - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -int8_t -MSS_UART_tx_complete -( - mss_uart_instance_t * this_uart -) -{ - int8_t ret_value = 0; - uint32_t transmit_empty = this_uart->hw_reg_bit->LSR_TEMT; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - if ( ( TX_COMPLETE == this_uart->tx_buff_size ) && transmit_empty ) - { - ret_value = 1; - } - - return ret_value; -} - - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -size_t -MSS_UART_get_rx -( - mss_uart_instance_t * this_uart, - uint8_t * rx_buff, - size_t buff_size -) -{ - size_t rx_size = 0U; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - while (( this_uart->hw_reg_bit->LSR_DR != 0U) && ( rx_size < buff_size ) ) - { - rx_buff[rx_size] = this_uart->hw_reg->RBR; - ++rx_size; - } - - return rx_size; -} - -/***************************************************************************//** - * Interrupt service routine triggered by the Transmitter Holding Register - * Empty (THRE) interrupt or Received Data Available (RDA). - * On THRE irq this routine will transmit the data from the transmit buffer. - * When all bytes are transmitted, this routine disables the THRE interrupt - * and resets the transmit counter. - * On RDA irq this routine will call the user's receive handler routine previously - * registered with the UART driver through a call to UART_set_rx_handler(). - */ -static void -MSS_UART_isr -( - mss_uart_instance_t * this_uart -) -{ - uint8_t iirf; - uint32_t tx_empty; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - iirf = this_uart->hw_reg->IIR & IIRF_MASK; - - switch ( iirf ) - { - case IIRF_MODEM_STATUS: - break; - - case IIRF_THRE: /* Transmitter Holding Register Empty */ - tx_empty = this_uart->hw_reg_bit->LSR_TEMT; - - if ( tx_empty ) - { - uint32_t i; - uint32_t fill_size = TX_FIFO_SIZE; - uint32_t tx_remain = this_uart->tx_buff_size - this_uart->tx_idx; - if ( tx_remain < TX_FIFO_SIZE ) - { - fill_size = tx_remain; - } - /* Fill up FIFO */ - for ( i = 0U; i < fill_size; ++i ) - { - this_uart->hw_reg->THR = this_uart->tx_buffer[this_uart->tx_idx]; - ++this_uart->tx_idx; - } - } - else - { - this_uart->hw_reg->THR = this_uart->tx_buffer[this_uart->tx_idx]; - ++this_uart->tx_idx; - } - - if ( this_uart->tx_idx == this_uart->tx_buff_size ) - { - this_uart->tx_buff_size = TX_COMPLETE; - /* disables TX interrupt */ - this_uart->hw_reg_bit->IER_ETBEI = 0U; - } - break; - - case IIRF_RX_DATA: /* Received Data Available */ - case IIRF_DATA_TIMEOUT: - if (this_uart->rx_handler != 0) - { - (*(this_uart->rx_handler))(); - } - break; - - case IIRF_RX_LINE_STATUS: - break; - - default: - /* Disable other interrupts */ - this_uart->hw_reg_bit->IER_ELSI = 0U; - this_uart->hw_reg_bit->IER_EDSSI = 0U; - break; - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_set_rx_handler -( - mss_uart_instance_t * this_uart, - mss_uart_rx_handler_t handler, - mss_uart_rx_trig_level_t trigger_level -) -{ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - this_uart->rx_handler = handler; - - /* Set the receive interrupt trigger level. */ - this_uart->hw_reg->FCR = (this_uart->hw_reg->FCR & (uint8_t)(~((uint8_t)FCR_TRIG_LEVEL_MASK))) | (uint8_t)trigger_level; - - /* Enable receive interrupt. */ - this_uart->hw_reg_bit->IER_ERBFI = 1U; - - /* Enable UART instance interrupt in Cortex-M3 NVIC. */ - NVIC_EnableIRQ( this_uart->irqn ); -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_set_loopback -( - mss_uart_instance_t * this_uart, - mss_uart_loopback_t loopback -) -{ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - if ( loopback == MSS_UART_LOOPBACK_OFF ) - { - this_uart->hw_reg_bit->MCR_LOOP = 0U; - } - else - { - this_uart->hw_reg_bit->MCR_LOOP = 1U; - } -} - -/***************************************************************************//** - * UART0 interrupt service routine. - * UART0_IRQHandler is included within the Cortex-M3 vector table as part of the - * Fusion 2 CMSIS. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART0_IRQHandler( void ) -#else -void UART0_IRQHandler( void ) -#endif -{ - MSS_UART_isr( &g_mss_uart0 ); - NVIC_ClearPendingIRQ( UART0_IRQn ); -} - -/***************************************************************************//** - * UART1 interrupt service routine. - * UART2_IRQHandler is included within the Cortex-M3 vector table as part of the - * Fusion 2 CMSIS. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART1_IRQHandler( void ) -#else -void UART1_IRQHandler( void ) -#endif -{ - MSS_UART_isr( &g_mss_uart1 ); - NVIC_ClearPendingIRQ( UART1_IRQn ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h deleted file mode 100644 index 3897a3c37..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h +++ /dev/null @@ -1,626 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem UART bare metal software driver public API. - * - * SVN $Revision: 1942 $ - * SVN $Date: 2009-12-22 17:48:07 +0000 (Tue, 22 Dec 2009) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS UART Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion MicroController Subsystem (MSS) includes two UART peripherals - for serial communications. - This driver provides a set of functions for controlling the MSS UARTs as part - of a bare metal system where no operating system is available. These drivers - can be adapted for use as part of an operating system but the implementation - of the adaptation layer between this driver and the operating system's driver - model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS UARTs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS UARTs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are configured automatically by the MSS - configurator tool in the hardware flow correctly when the MSS UARTs are enabled - in that tool. You must ensure that the MSS UARTs are enabled by the MSS - configurator tool in the hardware flow; otherwise the serial inputs and outputs - will not be connected to the chip's external pins. For more information on - IOMUX, refer to the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the MSS - UART blocks are defined as constants in the SmartFusion CMSIS-PAL You must ensure - that the SmartFusion CMSIS-PAL is either included in the software tool chain used - to build your project or is included in your project. - - - @section theory_op Theory of Operation - The MSS UART driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up to date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS UART driver functions are logically grouped into three groups: - - Initialization functions - - Polled transmit and receive functions - - Interrupt driven transmit and receive functions - - The MSS UART driver is initialized through a call to the UART_init() function. - This function takes the UART's configuration as parameters. The UART_init() - function must be called before any other UART driver functions can be called. - The first parameter of the UART_init() function is a pointer to one of two - global data structures used to store state information for each UART driver. - A pointer to these data structures is also used as first parameter to any of - the driver functions to identify which UART will be used by the called - function. The name of these two data structures are g_mss_uart0 and - g_mss_uart1. Therefore any call to a MSS UART function should be of the form - UART_function_name( &g_mss_uart0, ... ) or UART_function_name( &g_mss_uart1, ... ). - The two SmartFusion MSS UARTs can also be configured to loop back to each - other using the MSS_set_loopback() function for debugging purposes. - - Polled operations where the processor constantly poll the UART registers state - in order to control data transmit or data receive is performed using functions: - - MSS_UART_polled_tx() - - MSS_UART_get_rx() - - Interrupt driven operations where the processor sets up transmit or receive - then returns to performing some other operation until an interrupts occurs - indicating that its attention is required is performed using functions: - - MSS_UART_irq_tx() - - MSS_UART_tx_complete() - - MSS_UART_set_rx_handler() - - MSS_UART_get_rx() - Interrupt driven transmit is initiated by a call to MSS_UART_irq_tx() specifying - the block of data to transmit. The processor can then perform some other - operation and later inquire whether transmit has completed by calling the - MSS_UART_tx_complete() function. - Interrupt driven receive is performed by first registering a receive handler - function that will be called by the driver whenever receive data is available. - This receive handler function in turns calls the MSS_UART_get_rx() function to - actually read the received data. - - *//*=========================================================================*/ -#ifndef __MSS_UART_H_ -#define __MSS_UART_H_ 1 - -#include "../../CMSIS/a2fxxxm3.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - Baud rates. - The following definitions are used to specify standard baud rates as a - parameter to the MSS_UART_init() function. - */ -#define MSS_UART_110_BAUD 110 -#define MSS_UART_300_BAUD 300 -#define MSS_UART_1200_BAUD 1200 -#define MSS_UART_2400_BAUD 2400 -#define MSS_UART_4800_BAUD 4800 -#define MSS_UART_9600_BAUD 9600 -#define MSS_UART_19200_BAUD 19200 -#define MSS_UART_38400_BAUD 38400 -#define MSS_UART_57600_BAUD 57600 -#define MSS_UART_115200_BAUD 115200 -#define MSS_UART_230400_BAUD 230400 -#define MSS_UART_460800_BAUD 460800 -#define MSS_UART_921600_BAUD 921600 - -/***************************************************************************//** - Data bits length values. - - The following defines are used to build the value of the MSS_UART_init() - function line_config parameter. - */ -#define MSS_UART_DATA_5_BITS 0x00 -#define MSS_UART_DATA_6_BITS 0x01 -#define MSS_UART_DATA_7_BITS 0x02 -#define MSS_UART_DATA_8_BITS 0x03 - -/***************************************************************************//** - Parity values - The following defines are used to build the value of the MSS_UART_init() - function line_config parameter. - */ -#define MSS_UART_NO_PARITY 0x00 -#define MSS_UART_ODD_PARITY 0x08 -#define MSS_UART_EVEN_PARITY 0x18 -#define MSS_UART_STICK_PARITY_0 0x38 -#define MSS_UART_STICK_PARITY_1 0x28 - -/***************************************************************************//** - Stop bit values - The following defines are used to build the value of the MSS_UART_init() - function line_config parameter. - */ -#define MSS_UART_ONE_STOP_BIT 0x00 -#define MSS_UART_ONEHALF_STOP_BIT 0x04 -#define MSS_UART_TWO_STOP_BITS 0x04 - -/***************************************************************************//** - FIFO trigger sizes - This enumeration specifies the number of bytes that must be received before a - receive interrupt is generated. This enumeration provides the allowed values for - the MSS_UART_set_rx_handler() function trigger_level parameter. - */ -typedef enum __mss_uart_rx_trig_level_t { - MSS_UART_FIFO_SINGLE_BYTE = 0x00, - MSS_UART_FIFO_FOUR_BYTES = 0x40, - MSS_UART_FIFO_EIGHT_BYTES = 0x80, - MSS_UART_FIFO_FOURTEEN_BYTES = 0xC0 -} mss_uart_rx_trig_level_t; - -/***************************************************************************//** - Loopback. - This enumeration is used as parameter to function MSS_UART_set_loopback(). It - specifies the loopback configuration of the UARTs. Using MSS_UART_LOOPBACK_ON - as parameter to function MSS_UART_set_loopback() will set up the UART to locally - loopback its Tx and Rx lines. - */ -typedef enum __mss_uart_loopback_t { - MSS_UART_LOOPBACK_OFF = 0, - MSS_UART_LOOPBACK_ON = 1 -} mss_uart_loopback_t; - -/***************************************************************************//** - Receive handler prototype. - This typedef specifies the prototype of functions that can be registered with - this driver as receive handler functions. - */ -typedef void (*mss_uart_rx_handler_t)(void); - -/***************************************************************************//** - mss_uart_instance_t. - - There is one instance of this structure for each instance of the Microcontroller - Subsystem's UARTs. Instances of this structure are used to identify a specific - UART. A pointer to an instance of the mss_uart_instance_t structure is passed - as the first parameter to MSS UART driver functions to identify which UART - should perform the requested operation. - */ -typedef struct { - /* CMSIS related defines identifying the UART hardware. */ - UART_TypeDef * hw_reg; /*!< Pointer to UART registers. */ - UART_BitBand_TypeDef * hw_reg_bit; /*!< Pointer to UART registers bit band area. */ - IRQn_Type irqn; /*!< UART's Cortex-M3 NVIC interrupt number. */ - - /* transmit related info (used with interrupt driven trnasmit): */ - const uint8_t * tx_buffer; /*!< Pointer to transmit buffer. */ - uint32_t tx_buff_size; /*!< Transmit buffer size. */ - uint32_t tx_idx; /*!< Index within trnamit buffer of next byte to transmit.*/ - - /* receive interrupt handler:*/ - mss_uart_rx_handler_t rx_handler; /*!< Pointer to user registered received handler. */ -} mss_uart_instance_t; - -/***************************************************************************//** - This instance of mss_uart_instance_t holds all data related to the operations - performed by UART0. A pointer to g_mss_uart0 is passed as the first parameter - to MSS UART driver functions to indicate that UART0 should perform the requested - operation. - */ -extern mss_uart_instance_t g_mss_uart0; - -/***************************************************************************//** - This instance of mss_uart_instance_t holds all data related to the operations - performed by UART1. A pointer to g_mss_uart1 is passed as the first parameter - to MSS UART driver functions to indicate that UART1 should perform the requested - operation. - */ -extern mss_uart_instance_t g_mss_uart1; - -/***************************************************************************//** - The MSS_UART_init() function initializes and configures one of the SmartFusion - MSS UARTs with the configuration passed as a parameter. The configuration - parameters are the baud_rate which is used to generate the baud value and the - line_config which is used to specify the line configuration (bit length, stop - bits and parity). - - Example: - @code - #include "mss_uart.h" - - int main(void) - { - MSS_UART_init - ( - &g_mss_uart0, - MSS_UART_57600_BAUD, - MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT - ); - return(0); - } - @endcode - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block to be initialized. There are two - such data structures, g_mss_uart0 and g_mss_uart1, associated with MSS UART0 - and MSS UART1 respectively. This parameter must point to either the - g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - - @param baud_rate - The baud_rate parameter specifies the baud rate. It can be specified for - common baud rates' using the following defines: - - MSS_UART_110_BAUD - - MSS_UART_300_BAUD - - MSS_UART_1200_BAUD - - MSS_UART_2400_BAUD - - MSS_UART_4800_BAUD - - MSS_UART_9600_BAUD - - MSS_UART_19200_BAUD - - MSS_UART_38400_BAUD - - MSS_UART_57600_BAUD - - MSS_UART_115200_BAUD - - MSS_UART_230400_BAUD - - MSS_UART_460800_BAUD - - MSS_UART_921600_BAUD - Alternatively, any non standard baud rate can be specified by simply passing - the actual required baud rate as value for this parameter. - - @param line_config - The line_config parameter is the line configuration specifying the bit length, - number of stop bits and parity settings. This is a logical OR of one of the - following to specify the transmit/receive data bit length: - - MSS_UART_DATA_5_BITS - - MSS_UART_DATA_6_BITS, - - MSS_UART_DATA_7_BITS - - MSS_UART_DATA_8_BITS - with one of the following to specify the parity setting: - - MSS_UART_NO_PARITY - - MSS_UART_EVEN_PARITY - - MSS_UART_ODD_PARITY - - MSS_UART_STICK_PARITY_0 - - MSS_UART_STICK_PARITY_1 - with one of the following to specify the number of stop bits: - - MSS_UART_ONE_STOP_BIT - - MSS_UART_ONEHALF_STOP_BIT - - MSS_UART_TWO_STOP_BITS - - @return - This function does not return a value. - */ -void -MSS_UART_init -( - mss_uart_instance_t* this_uart, - uint32_t baud_rate, - uint8_t line_config -); - -/***************************************************************************//** - The function MSS_UART_polled_tx() is used to transmit data. It transfers the - contents of the transmitter data buffer, passed as a function parameter, into - the UART's hardware transmitter FIFO. It returns when the full content of the - transmit data buffer has been transferred to the UART's transmit FIFO. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param pbuff - The pbuff parameter is a pointer to a buffer containing the data to be - transmitted. - - @param tx_size - The tx_size parameter specifies the size, in bytes, of the data to be - transmitted. - - @return This function does not return a value. - */ -void -MSS_UART_polled_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -); - -/***************************************************************************//** - The function MSS_UART_polled_tx_string() is used to transmit a zero-terminated - string. It transfers the text found starting at the address pointed to by - p_sz_string into the UART's hardware transmitter FIFO. It returns when the - complete string has been transferred to the UART's transmit FIFO. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param p_sz_string - The p_sz_string parameter is a pointer to a buffer containing the - zero-terminated string to be transmitted. - - @return This function does not return a value. - */ -void -MSS_UART_polled_tx_string -( - mss_uart_instance_t * this_uart, - const uint8_t * p_sz_string -); - - -/***************************************************************************//** - The function MSS_UART_irq_tx() is used to initiate interrupt driven transmit. It - returns immediately after making a note of the transmit buffer location and - enabling transmit interrupts both at the UART and Cortex-M3 NVIC level. - This function takes a pointer to a memory buffer containing the data to - transmit as parameter. The memory buffer specified through this pointer - should remain allocated and contain the data to transmit until the transmit - completion has been detected through calls to function MSS_UART_tx_complete(). - NOTE: The MSS_UART_irq_tx() function also enables the Transmitter Holding - Register Empty (THRE) interrupt and the UART instance interrupt in the - Cortex-M3 NVIC as part of its implementation. - - Example: - @code - #include "mss_uart.h" - - int main(void) - { - uint8_t tx_buff[10] = "abcdefghi"; - MSS_UART_init( &g_mss_uart0, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - MSS_UART_irq_tx( &g_mss_uart0, tx_buff, sizeof(tx_buff)); - while ( 0 == MSS_UART_tx_complete( &g_mss_uart0 ) ) - { - ; - } - return(0); - } - @endcode - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param pbuff - The pbuff parameter is a pointer to a buffer containing the data to be - transmitted. - - @param tx_size - The tx_size parameter specifies the size, in bytes, of the data to be - transmitted. - - @return - This function does not return a value. - */ -void -MSS_UART_irq_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -); - -/***************************************************************************//** - The MSS_UART_tx_complete() function is used to find out if interrupt driven - transmit previously initiated through a call to MSS_UART_irq_tx() is complete. - This is typically used to find out when it is safe to reuse or release the - memory buffer holding transmit data. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @return - This function return a non-zero value if transmit has completed, otherwise - it returns zero. - - Example: - See the MSS_UART_irq_tx() function for an example that uses the - MSS_UART_tx_complete() function. - */ -int8_t -MSS_UART_tx_complete -( - mss_uart_instance_t * this_uart -); - -/***************************************************************************//** - The MSS_UART_get_rx() function is used to read the content of a UART's receive - FIFO. It can be used in polled mode where it is called at regular interval - to find out if any data has been received or in interrupt driven mode where - it is called as part of a receive handler called by the driver as a result of - data being received. This function is non-blocking and will return 0 - immediately if no data has been received. - NOTE: In interrupt driven mode you should call the MSS_UART_get_rx() function - as part of the receive handler function that you register with the MSS UART - driver through a call to MSS_UART_set_rx_handler(). - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param rx_buff - The rx_buff parameter is a pointer to a buffer where the received data will - be copied. - - @param buff_size - The buff_size parameter specifies the size of the receive buffer in bytes. - - @return - This function return the number of bytes that were copied into the rx_buff - buffer. It returns 0 if no data has been received. - - Polled mode example: - @code - int main( void ) - { - uint8_t rx_buff[RX_BUFF_SIZE]; - uint32_t rx_idx = 0; - - MSS_UART_init( &g_mss_uart0, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - - while( 1 ) - { - rx_size = MSS_UART_get_rx( &g_mss_uart0, rx_buff, sizeof(rx_buff) ); - if (rx_size > 0) - { - process_rx_data( rx_buff, rx_size ); - } - task_a(); - task_b(); - } - return 0; - } - @endcode - - Interrupt driven example: - @code - int main( void ) - { - MSS_UART_init( &g_mss_uart1, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - MSS_UART_set_rx_handler( &g_mss_uart1, uart1_rx_handler, MSS_UART_FIFO_SINGLE_BYTE ); - - while( 1 ) - { - task_a(); - task_b(); - } - return 0; - } - - void uart1_rx_handler( void ) - { - uint8_t rx_buff[RX_BUFF_SIZE]; - uint32_t rx_idx = 0; - rx_size = MSS_UART_get_rx( &g_mss_uart1, rx_buff, sizeof(rx_buff) ); - process_rx_data( rx_buff, rx_size ); - } - @endcode - */ -size_t -MSS_UART_get_rx -( - mss_uart_instance_t * this_uart, - uint8_t * rx_buff, - size_t buff_size -); - -/***************************************************************************//** - The MSS_UART_set_rx_handler() function is used to register a receive handler - function which will be called by the driver when a UART Received Data Available - (RDA) interrupt occurs. You must create and register the handler function to - suit your application. The MSS_UART_set_rx_handler() function also enables the UART - Received Data Available interrupt and the UART instance interrupt in the - Cortex-M3 NVIC as part of its implementation. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param handler - The handler parameter is a pointer to a receive handler function provided - by your application which will be called as a result of a UART Received - Data Available interrupt. - - @param trigger_level - The trigger_level parameter is the receive FIFO trigger level. This specifies - the number of bytes that must be received before the UART triggers a Received - Data Available interrupt. - - @return - This function does not return a value. - - Example: - @code - #include "mss_uart.h" - - #define RX_BUFF_SIZE 64 - - uint8_t g_rx_buff[RX_BUFF_SIZE]; - - void uart0_rx_handler( void ) - { - MSS_UART_get_rx( &g_mss_uart, &g_rx_buff[g_rx_idx], sizeof(g_rx_buff) ); - } - - int main(void) - { - MSS_UART_init( &g_mss_uart0, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - MSS_UART_set_rx_handler( &g_mss_uart0, uart0_rx_handler, MSS_UART_FIFO_SINGLE_BYTE ); - - while ( 1 ) - { - ; - } - return(0); - } - @endcode - */ -void -MSS_UART_set_rx_handler -( - mss_uart_instance_t * this_uart, - mss_uart_rx_handler_t handler, - mss_uart_rx_trig_level_t trigger_level -); - -/***************************************************************************//** - The MSS_UART_set_loopback() function is used to locally loopback the Tx and Rx - lines of a UART. - This is not to be confused with the loopback of UART0 to UART1 which can be - achieved through the microcontroller subsystem's system registers - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param loopback - The loopback parameter indicates whether or not the UART's transmit and receive lines - should be looped back. Allowed values are: - - MSS_UART_LOOPBACK_ON - - MSS_UART_LOOPBACK_OFF - @return - This function does not return a value. - */ -void -MSS_UART_set_loopback -( - mss_uart_instance_t * this_uart, - mss_uart_loopback_t loopback -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_UART_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h deleted file mode 100644 index 337a91bb1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h +++ /dev/null @@ -1,427 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem (MSS) Watchdog bare metal software - * driver. - * - * SVN $Revision: 1888 $ - * SVN $Date: 2009-12-18 10:58:42 +0000 (Fri, 18 Dec 2009) $ - */ -/*=========================================================================*//** - @section intro_sec Introduction - The SmartFusion microcontroller subsystem (MSS) includes a watchdog timer used - to detect system lockups. - This driver provides a set of functions for controlling the MSS watchdog as - part of a bare metal system where no operating system is available. These - drivers can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS watchdog is covered by this - driver. There are no dependencies on the hardware flow for configuring the - SmartFusion MSS watchdog timer. - - @section theory_op Theory of Operation - The watchdog driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The watchdog driver functions are grouped into the following categories: - - Initialization and cnfiguration - - Reading the watchdog timer current value and status - - Refreshing the watchdog timer value - - Time-out and wake-up interrupts control - - The watchdog driver is initialized and configured through a call to the - MSS_WD_init() function. The parameters passed to MSS_WD_init() function - specify the watchdog timer configuration. The configuration parameters include - the value that will be reloaded into the watchdog timer down counter every - time the watchdog is refreshed. Also included as part of the configuration - parameters is the optional allowed refresh window. The allowed refresh window - specifies the maximum allowed current value of the watchdog timer at the time - of the watchdog is relaoded. Attempting to reload the watchdog timer when its - value is larger than the allowed refresh window will cause a reset or - interrupt depending on the watchdog configuration. The allowed refresh window - can be disabled by specifying an allowed refesh window equal or higher than - the watchdog reload value. - The MSS_WD_init() function must be called before any other watchdog driver - functions can be called with the exception of the MSS_WD_disable() function. - - The watchdog timer can be disabled using the MSS_WD_disable() function. Once - disabled, the watchdog timer can only be reenabled by a power-on reset. - - The watchdog timer current value can be read using the MSS_WD_current_value() - function. The watchdog status can be read using the MSS_WD_status() function. - These functions are typically required when using the watchdog configured with - an allowed refresh window to check if a watchdog reload is currently allowed. - - The watchdog timer value is reloaded using the MSS_WD_reload() function. The - value reloaded into the watchdog timer down counter is the value specified as - parameter to the MSS_WD_init() function. - - The watchdog timer can generate interrupts instead of resetting the system - when its down-counter timer expires. These time-out interrupts are controlled - using the following functions: - - MSS_WD_enable_timeout_irq - - MSS_WD_disable_timeout_irq - - MSS_WD_clear_timeout_irq - - The watchdog timer is external to the Cortex-M3 processor core and operates - even when the Cortex-M3 is in sleep mode. A wakeup interrupt can be generated - by the watchdog timer to wakeup the Cortext-M3 when the watchdog timer value - reaches the allowed refresh window while the Cortex-M3 is in sleep mode. The - watchdog driver provides the following functions to control wakeup interrupts: - - MSS_WD_enable_wakeup_irq - - MSS_WD_disable_wakeup_irq - - MSS_WD_clear_wakeup_irq - - *//*=========================================================================*/ - -#ifndef MSS_WATCHDOG_H_ -#define MSS_WATCHDOG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/***************************************************************************//** - * The MSS_WDOG_RESET_ON_TIMEOUT_MODE macro is one of the possible values for the - * mode parameter of the WD_init() function. It is used to specify that a reset - * should occur when the watchdog down counter times out. - */ -#define MSS_WDOG_RESET_ON_TIMEOUT_MODE (uint32_t)0x00000000U - -/***************************************************************************//** - * The MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE macro is one of the possible values for - * the mode parameter of function the WD_init() function. It is used to specify - * that a time out interrupt should occur when the watchdog down counter expires. - */ -#define MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_NO_WINDOW macro can be used as the value for the reload_window - * parameter of the WD_init() function. It is used to specify that no forbidden - * window will exist for the reload of the watchdog down counter. - */ -#define MSS_WDOG_NO_WINDOW (uint32_t)0xFFFFFFFFU - -/***************************************************************************//** - * The MSS_WDOG_CTRL_MODE_BIT_MASK macro is a bit mask specifying the bit used to - * set the watchdog's operating mode within the wathcdog's WDOGCONTROL register. - */ -#define MSS_WDOG_CTRL_MODE_BIT_MASK (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - * used to enable the time out interrupt within the watchdog's WDOGCONTROL - * register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - used to enable the wake up interrupt within the watchdog's WDOGCONTROL - register. - */ -#define MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the time out interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the wake up interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_REFRESH_KEY macro holds the magic value which will cause a reload - of the watchdog's down counter when written to the watchdog's WDOGREFRESH - register. - */ -#define MSS_WDOG_REFRESH_KEY (uint32_t)0xAC15DE42U - -/***************************************************************************//** - The MSS_WDOG_DISABLE_KEY macro holds the magic value which will disable the - watchdog if written to the watchdog's WDOGENABLE register. - */ -#define MSS_WDOG_DISABLE_KEY (uint32_t)0x4C6E55FAU - -/***************************************************************************//** - The MSS_WD_init() function initializes and configures the watchdog timer. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - watchdog's down counter when the reload command is issued through a call to - MSS_WD_reload(). - - @param reload_window - The reload_window parameter specifies the time window during which a reload - of the watchdog counter is allowed. A reload of the watchdog counter should - only be performed when the watchdog counter value is below the value of the - reload_window. Reloading the watchdog down counter value before it has - reached the reload_window will result in an interrupt or reset depending on - the watchdog's mode. - The reload window can be disabled by using WDOG_NO_WINDOW for this parameter. - - @param mode - The mode parameter specifies the watchdog's operating mode. It can be either - MSS_WDOG_RESET_ON_TIMEOUT_MODE or MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE. - MSS_WDOG_RESET_ON_TIMEOUT_MODE: a reset will occur if the watchdog timer - expires. - MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE: an NMI interrupt will occur if the - watchdog timer expires. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_init -( - uint32_t load_value, - uint32_t reload_window, - uint32_t mode -) -{ - /* Disable interrupts. */ - WATCHDOG->WDOGCONTROL &= ~(MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK); - - /* Clear any existing interrupts. */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - - /* Configure watchdog with new configuration passed as parameter. */ - WATCHDOG->WDOGMVRP = MSS_WDOG_NO_WINDOW; - WATCHDOG->WDOGLOAD = load_value; - WATCHDOG->WDOGCONTROL = (WATCHDOG->WDOGCONTROL & ~MSS_WDOG_CTRL_MODE_BIT_MASK) | (mode & MSS_WDOG_CTRL_MODE_BIT_MASK); - - /* Reload watchdog with new load value. */ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; - - /* Set allowed window. */ - WATCHDOG->WDOGMVRP = reload_window; -} - -/***************************************************************************//** - The MSS_WD_reload() function causes the watchdog to reload its down counter timer - with the load value configured through the call to WD_init(). This function - must be called regularly to avoid a system reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_reload( void ) -{ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; -} - -/***************************************************************************//** - The MSS_WD_disable() function disables the watchdog. - Please note that the watchdog can only be reenabled as a result of a power-on - reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable( void ) -{ - WATCHDOG->WDOGENABLE = MSS_WDOG_DISABLE_KEY; -} - -/***************************************************************************//** - The MSS_WD_current_value() function returns the current value of the watchdog's - down counter. - - @return - This function returns the current value of the watchdog down counter. - */ -static __INLINE uint32_t MSS_WD_current_value( void ) -{ - return WATCHDOG->WDOGVALUE; -} - -/***************************************************************************//** - The MSS_WD_status() function returns the status of the watchdog. - - @return - The MSS_WD_status() function returns the status of the watchdog. A value of - 0 indicates that watchdog counter has reached the forbidden window and that - a reload should not be done. A value of 1 indicates that the watchdog counter - is within the permitted window and that a reload is allowed. - */ -static __INLINE uint32_t MSS_WD_status( void ) -{ - return WATCHDOG->WDOGSTATUS; -} - -/***************************************************************************//** - The MSS_WD_enable_timeout_irq() function enables the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - The NMI_Handler() function will be called when a watchdog time out occurs. You - must provide the implementation of the NMI_Handler() function to suit your - application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_timeout_irq(); - for (;;) - { - main_task(); - } - } - - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The WD_disable_timeout_irq() function disables the generation of the NMI - interrupt when the watchdog times out. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_enable_wakeup_irq() function enables the SmartFusion wakeup - interrupt. The WdogWakeup_IRQHandler() function will be called when a wake up - interrupt occurs. You must provide the implementation of the WdogWakeup_IRQHandler() - function to suit your application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_wakeup_irq(); - for (;;) - { - main_task(); - cortex_sleep(); - } - } - - void WdogWakeup_IRQHandler( void ) - { - process_wakeup(); - MSS_WD_clear_wakeup_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; - NVIC_EnableIRQ( WdogWakeup_IRQn ); -} - -/***************************************************************************//** - The MSS_WD_disable_wakeup_irq() function disables the SmartFusion wakeup - interrupt. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_timeout_irq() function clears the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - Calling MSS_WD_clear_timeout_irq() results in clearing the Cortex-M3 NMI interrupt. - Note: The MSS_WD_clear_timeout_irq() function must be called as part of the - timeout interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. - - @return - The example below demonstrates the use of the MSS_WD_clear_timeout_irq() - function as part of the NMI interrupt service routine. - - Example: - @code - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_clear_timeout_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; - /* - * Perform a second write to ensure that the first write completed before - * returning from this function. This is to account for posted writes across - * the AHB matrix. The second write ensures that the first write has - * completed and that the interrupt line has been de-asserted by the time - * the function returns. Omitting the second write may result in a delay - * in the de-assertion of the interrupt line going to the Cortex-M3 and a - * retriggering of the interrupt. - */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_wakeup_irq() function clears the wakeup interrupt. - Note: The MSS_WD_clear_wakeup_irq() function must be called as part of the - wakeup interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. This function also clears the - interrupt in the Cortex-M3 interrupt controller through a call to - NVIC_ClearPendingIRQ(). - - @return - This function does not return a value. - - Example: - The example below demonstrates the use of the MSS_WD_clear_wakeup_irq() function - as part of the wakeup interrupt service routine. - @code - void WdogWakeup_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_WD_clear_wakeup_irq(); - } - @endcode -*/ -static __INLINE void MSS_WD_clear_wakeup_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - NVIC_ClearPendingIRQ( WdogWakeup_IRQn ); -} -#ifdef __cplusplus -} -#endif - -#endif /* MSS_WATCHDOG_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c deleted file mode 100644 index acd270690..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .c file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#include "../../drivers/mss_ace/mss_ace_configurator.h" -#include "ace_config.h" -#include "ace_handles.h" - -#include - - -/*----------------------------------------------------------------------------- -*AB Configuration -*---------------------------------------------------------------------------*/ -ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC] = -{ - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - } -}; - -/*----------------------------------------------------------------------------- -*Current Monitor Resistor Values -*---------------------------------------------------------------------------*/ -const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS] = -{ - 100000, /*CM0 ( USED AS CURRENT MONITOR ) */ - 1, /*CM1 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM2 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM3 ( NOT USED AS CURRENT MONITOR ) */ - 1 /*CM4 ( NOT USED AS CURRENT MONITOR ) */ -}; - -/*----------------------------------------------------------------------------- -*Analog Channels -*---------------------------------------------------------------------------*/ -/* Names*/ -const uint8_t g_ace_channel_0_name[] = "CurrentMonitor_0"; -const uint8_t g_ace_channel_1_name[] = "VoltageMonitor_0"; -const uint8_t g_ace_channel_2_name[] = "TemperatureMonitor_0"; - -/* Number of Flags per Channel*/ -#define CHANNEL_0_NB_OF_FLAGS 0 -#define CHANNEL_1_NB_OF_FLAGS 0 -#define CHANNEL_2_NB_OF_FLAGS 0 - -/* Input Channel to Flag Array Association*/ - -/* Channel Table*/ -ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS] = -{ - { - g_ace_channel_0_name, /* const uint8_t * p_sz_channel_name */ - CM0, /* adc_channel_id_t signal_id; */ - 14, /* uint16_t signal_ppe_offset */ - CHANNEL_0_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_1_name, /* const uint8_t * p_sz_channel_name */ - TM0, /* adc_channel_id_t signal_id; */ - 23, /* uint16_t signal_ppe_offset */ - CHANNEL_1_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_2_name, /* const uint8_t * p_sz_channel_name */ - TM1, /* adc_channel_id_t signal_id; */ - 32, /* uint16_t signal_ppe_offset */ - CHANNEL_2_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - } -}; - -/*----------------------------------------------------------------------------- -*Threshold Flags -*---------------------------------------------------------------------------*/ -/* Flag Names*/ -/* Flag Table*/ -#if ACE_NB_OF_PPE_FLAGS != 0 - ppe_flag_desc_t g_ppe_flags_desc_table[ACE_NB_OF_PPE_FLAGS] = - { - }; -#endif - -/*----------------------------------------------------------------------------- -*Sequencer Procedures -*---------------------------------------------------------------------------*/ -/* Procedure Name and Microcode*/ -const uint8_t g_ace_sse_proc_0_name[] = "ADC0_MAIN"; -const uint16_t g_ace_sse_proc_0_sequence[] = -{ - 0x1705, 0x1601, 0x155c, 0x14c4, - 0x0000, 0x152d, 0x8a0c, 0x1309, - 0x0000, 0x14c3, 0x0000, 0x8a04, - 0x152d, 0x970c, 0x132f, 0x0000, - 0x14c8, 0x0000, 0x9704, 0x1301, - 0x0000, 0x1002 -}; - -const uint8_t g_ace_sse_proc_1_name[] = "ADC1_MAIN"; -const uint16_t g_ace_sse_proc_1_sequence[] = -{ - 0x2705, 0x2601, 0x2200 -}; - -const uint8_t g_ace_sse_proc_2_name[] = "ADC2_MAIN"; -const uint16_t g_ace_sse_proc_2_sequence[] = -{ - 0x3705, 0x3601, 0x3200 -}; - - - -/* Procedure Table*/ -ace_procedure_desc_t g_sse_sequences_desc_table[ACE_NB_OF_SSE_PROCEDURES] = -{ - { - g_ace_sse_proc_0_name, /* const uint8_t * p_sz_proc_name */ - 2, /* uint16_t sse_loop_pc */ - 0, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_0_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_0_sequence, /* const uint16_t * sse_ucode */ - 0 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_1_name, /* const uint8_t * p_sz_proc_name */ - 24, /* uint16_t sse_loop_pc */ - 22, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_1_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_1_sequence, /* const uint16_t * sse_ucode */ - 1 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_2_name, /* const uint8_t * p_sz_proc_name */ - 27, /* uint16_t sse_loop_pc */ - 25, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_2_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_2_sequence, /* const uint16_t * sse_ucode */ - 2 /* uint8_t sse_pc_id */ - } -}; - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h deleted file mode 100644 index 8f8c584d8..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h +++ /dev/null @@ -1,37 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_CONFIG_H -#define ACE_CONFIG_H - - -/*----------------------------------------------------------------------------- -*COMMON VALUES -*---------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- -*AB VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_ADC 3 -#define ACE_NB_OF_CURRENT_MONITORS 5 -#define MAX_CHANNEL_NAME_LENGTH 20 -#define ACE_NB_OF_INPUT_CHANNELS 3 - -/*----------------------------------------------------------------------------- -*SSE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_SSE_PROCEDURES 3 -#define MAX_PROCEDURE_NAME_LENGTH 9 - -/*----------------------------------------------------------------------------- -*PPE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_PPE_FLAGS 0 -#define MAX_FLAG_NAME_LENGTH 0 - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h deleted file mode 100644 index 86782c013..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_HANDLES_H -#define ACE_HANDLES_H - - -/*----------------------------------------------------------------------------- -*Analog input channel handles -*---------------------------------------------------------------------------*/ -typedef enum { - CurrentMonitor_0 = 0, - VoltageMonitor_0, - TemperatureMonitor_0, - NB_OF_ACE_CHANNEL_HANDLES -} ace_channel_handle_t; - -/*----------------------------------------------------------------------------- -*Flag Handles -*---------------------------------------------------------------------------*/ -typedef enum { - NB_OF_ACE_FLAG_HANDLES = 0 -} ace_flag_handle_t; - -/*----------------------------------------------------------------------------- -*Procedure Handles -*---------------------------------------------------------------------------*/ -typedef enum { - ADC0_MAIN = 0, - ADC1_MAIN, - ADC2_MAIN, - NB_OF_ACE_PROCEDURE_HANDLES -} ace_procedure_handle_t; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c deleted file mode 100644 index 56ac19b10..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Library includes. */ -#include "mss_gpio.h" - -#define partstMAX_LEDS 8 - -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ -long x; - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - for( x = 0; x < partstMAX_LEDS; x++ ) - { - MSS_GPIO_config( ( mss_gpio_id_t ) x , MSS_GPIO_OUTPUT_MODE ); - } - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned portBASE_TYPE uxInterruptFlags; - - uxInterruptFlags = portSET_INTERRUPT_MASK_FROM_ISR(); - { - if( uxLED < partstMAX_LEDS ) - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( uxInterruptFlags ); -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << uxLED ) ) != 0UL ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partstMAX_LEDS ) - { - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << ulLED ) ) == 0UL ) - { - lReturn = pdTRUE; - } - } - taskEXIT_CRITICAL(); - } - - return lReturn; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd deleted file mode 100644 index 4d06fc88e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd +++ /dev/null @@ -1,4336 +0,0 @@ - - - 3 - - Blinky - - ARM - - 1 - - C-SPY - 2 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Full - - ARM - - 1 - - C-SPY - 2 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Full_with_optimisation - - ARM - - 1 - - C-SPY - 2 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp deleted file mode 100644 index 0c7f615e1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp +++ /dev/null @@ -1,3548 +0,0 @@ - - - 3 - - Blinky - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Full - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Full_with_optimisation - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common_Demo_Source - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\..\Common\Minimal\TimerDemo.c - - - - FreeRTOS_Source - - Portable - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - FreeTCPIP(based on uIP) - - Blinky - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - - - Microsemi_Source - - CMSIS - - $PROJ_DIR$\MicroSemi_Code\CMSIS\core_cm3.c - - - $PROJ_DIR$\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - - Drivers - - $PROJ_DIR$\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\I2C\i2c.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - Blinky - - - Blinky - - ICCARM - - 34 - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - $PROJ_DIR$\MicroSemi_Code\drivers\OLED\oled.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - Blinky - - - - - Startup - - $PROJ_DIR$\MicroSemi_Code\CMSIS\startup_iar\startup_a2fxxxm3.s - - - - - Web_Server - - Blinky - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - $PROJ_DIR$\WebServer\httpd-cgi.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - - $PROJ_DIR$\main-blinky.c - - Full - Full_with_optimisation - - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\ParTest.c - - - $PROJ_DIR$\printf-stdarg.c - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww deleted file mode 100644 index f4971a444..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo_IAR.ewp - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt deleted file mode 100644 index 26046862a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt +++ /dev/null @@ -1,1129 +0,0 @@ - - - - 1.0 - -
### uVision Project, (C) Keil Software
- - - *.c - *.s*; *.src; *.a* - *.obj - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - - - - 0 - 0 - - - - Blinky - 0x4 - ARM-ADS - - 20000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 0 - - 255 - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 0 - 1 - - - - - - - - - - - BIN\UL2CM3.DLL - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - -UM1129BUE -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000 - - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - Full - 0x4 - ARM-ADS - - 20000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 0 - 1 - - - - - - - - - - - BIN\UL2CM3.DLL - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - -UM1129BUE -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000 - - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - Full_with_optimisation - 0x4 - ARM-ADS - - 20000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 0 - - 255 - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 0 - 1 - - - - - - - - - - - BIN\UL2CM3.DLL - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - -UM1129BUE -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000 - - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - System - 0 - 0 - 0 - - 1 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - startus_a2fxxxm3.s - - - - - Common_Demo_Source - 0 - 0 - 0 - - 2 - 2 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\TimerDemo.c - TimerDemo.c - - - 2 - 3 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\BlockQ.c - BlockQ.c - - - 2 - 4 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\blocktim.c - blocktim.c - - - 2 - 5 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\death.c - death.c - - - 2 - 6 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\dynamic.c - dynamic.c - - - 2 - 7 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\flash.c - flash.c - - - 2 - 8 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\GenQTest.c - GenQTest.c - - - 2 - 9 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\QPeek.c - QPeek.c - - - 2 - 10 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\recmutex.c - recmutex.c - - - 2 - 11 - 1 - 0 - 0 - 0 - 0 - 213 - 222 - 0 - ..\Common\Minimal\semtest.c - semtest.c - - - - - FreeRTOS_Source - 0 - 0 - 0 - - 3 - 12 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\timers.c - timers.c - - - 3 - 13 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\list.c - list.c - - - 3 - 14 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\queue.c - queue.c - - - 3 - 15 - 1 - 0 - 0 - 0 - 0 - 1742 - 1751 - 0 - ..\..\Source\tasks.c - tasks.c - - - 3 - 16 - 1 - 0 - 0 - 0 - 0 - 191 - 200 - 0 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - port.c - - - 3 - 17 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\portable\MemMang\heap_2.c - heap_2.c - - - - - FreeTCPIP(based on uIP) - 0 - 0 - 0 - - 4 - 18 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - uip_arp.c - - - 4 - 19 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\psock.c - psock.c - - - 4 - 20 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\timer.c - timer.c - - - 4 - 21 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\uip.c - uip.c - - - - - Microsemi_Drivers - 0 - 0 - 0 - - 5 - 22 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - mss_gpio.c - - - 5 - 23 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\I2C\i2c.c - i2c.c - - - 5 - 24 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - ace_convert.c - - - 5 - 25 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - mss_ace.c - - - 5 - 26 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - crc32.c - - - 5 - 27 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - mss_ethernet_mac.c - - - 5 - 28 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - phy.c - - - 5 - 29 - 1 - 0 - 0 - 44 - 0 - 308 - 321 - 0 - .\MicroSemi_Code\drivers\OLED\oled.c - oled.c - - - 5 - 30 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - ace_config.c - - - - - Main - 0 - 0 - 0 - - 6 - 31 - 1 - 0 - 0 - 0 - 0 - 57 - 57 - 0 - .\main-blinky.c - main-blinky.c - - - 6 - 32 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\printf-stdarg.c - printf-stdarg.c - - - 6 - 33 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\ParTest.c - ParTest.c - - - 6 - 34 - 1 - 0 - 0 - 0 - 0 - 58 - 58 - 0 - .\main-full.c - main-full.c - - - 6 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\uIP_Task.c - uIP_Task.c - - - - - CMSIS - 0 - 0 - 0 - - 7 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - system_a2fxxxm3.c - - - 7 - 37 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\CMSIS\core_cm3.c - core_cm3.c - - - - - Web_Server - 0 - 0 - 0 - - 8 - 38 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\WebServer\httpd-cgi.c - httpd-cgi.c - - - 8 - 39 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - http-strings.c - - - 8 - 40 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - httpd.c - - - 8 - 41 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - httpd-fs.c - - - - - 1 - 0 - - 100 - 0 - - - .\main-full.c - 0 - 58 - 58 - - - .\main-blinky.c - 0 - 57 - 57 - - - - - -
diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj deleted file mode 100644 index 837d410b2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj +++ /dev/null @@ -1,2396 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - Blinky - 0x4 - ARM-ADS - - - A2F200M3F - Actel - IRAM(0x20000000-0x2000FFFF) IROM(0x00000000-0x0003FFFF) CLOCK(20000000) CPUTYPE("Cortex-M3") - - "Startup\Actel\A2FxxxM3\startup_a2fxxxm3.s" ("SmartFusion A2FxxxM3 Startup Code") - UL2CM3(-O14 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000) - 5028 - a2fxxxm3.h - - - - - - - - - - - 0 - - - - Actel\A2FxxxM3\ - Actel\A2FxxxM3\ - - 0 - 0 - 0 - 0 - 1 - - .\Keil_output\ - RTOSDemo_Keil - 1 - 0 - 0 - 1 - 1 - .\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - 0 - 1 - - - - - - - - - - - - - - BIN\UL2CM3.DLL - - - - - 1 - 0 - 0 - 1 - 0 - -1 - - BIN\UL2CM3.DLL - - - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - ..\CORTEX_A2F200_IAR_and_Keil;.\MicroSemi_Code\CMSIS;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM3;.\MicroSemi_Code\drivers\mss_gpio;.\MicroSemi_Code\drivers\mss_watchdog;.\MicroSemi_Code\drivers\mss_ace;.\MicroSemi_Code\drivers_config\mss_ace - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - - - - - - - - System - - - startus_a2fxxxm3.s - 2 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - - - - - Common_Demo_Source - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - TimerDemo.c - 1 - ..\Common\Minimal\TimerDemo.c - - - BlockQ.c - 1 - ..\Common\Minimal\BlockQ.c - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - dynamic.c - 1 - ..\Common\Minimal\dynamic.c - - - flash.c - 1 - ..\Common\Minimal\flash.c - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - - - FreeRTOS_Source - - - timers.c - 1 - ..\..\Source\timers.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - tasks.c - 1 - ..\..\Source\tasks.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - - - FreeTCPIP(based on uIP) - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - uip_arp.c - 1 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\FreeTCPIP\psock.c - - - timer.c - 1 - ..\Common\ethernet\FreeTCPIP\timer.c - - - uip.c - 1 - ..\Common\ethernet\FreeTCPIP\uip.c - - - - - Microsemi_Drivers - - - mss_gpio.c - 1 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - i2c.c - 1 - .\MicroSemi_Code\drivers\I2C\i2c.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - ace_convert.c - 1 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - - mss_ace.c - 1 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - - crc32.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - mss_ethernet_mac.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - phy.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - oled.c - 1 - .\MicroSemi_Code\drivers\OLED\oled.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - ace_config.c - 1 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - - - - Main - - - main-blinky.c - 1 - .\main-blinky.c - - - printf-stdarg.c - 1 - .\printf-stdarg.c - - - ParTest.c - 1 - .\ParTest.c - - - main-full.c - 1 - .\main-full.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - uIP_Task.c - 1 - .\uIP_Task.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - - - CMSIS - - - system_a2fxxxm3.c - 1 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - core_cm3.c - 1 - .\MicroSemi_Code\CMSIS\core_cm3.c - - - - - Web_Server - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - httpd-cgi.c - 1 - .\WebServer\httpd-cgi.c - - - http-strings.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - httpd.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - httpd-fs.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - - - - - Full - 0x4 - ARM-ADS - - - A2F200M3F - Actel - IRAM(0x20000000-0x2000FFFF) IROM(0x00000000-0x0003FFFF) CLOCK(20000000) CPUTYPE("Cortex-M3") - - "Startup\Actel\A2FxxxM3\startup_a2fxxxm3.s" ("SmartFusion A2FxxxM3 Startup Code") - UL2CM3(-O14 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000) - 5028 - a2fxxxm3.h - - - - - - - - - - - 0 - - - - Actel\A2FxxxM3\ - Actel\A2FxxxM3\ - - 0 - 0 - 0 - 0 - 1 - - .\Keil_output\ - RTOSDemo_Keil - 1 - 0 - 0 - 1 - 1 - .\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - 0 - 1 - - - - - - - - - - - - - - BIN\UL2CM3.DLL - - - - - 1 - 0 - 0 - 1 - 0 - -1 - - BIN\UL2CM3.DLL - - - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --diag_suppress 2770 - - - ..\CORTEX_A2F200_IAR_and_Keil;.\MicroSemi_Code\CMSIS;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM3;.\MicroSemi_Code\drivers\mss_gpio;.\MicroSemi_Code\drivers\mss_watchdog;..\Common\include;..\Common\ethernet\FreeTCPIP;..\Common\ethernet\FreeTCPIP\apps\httpd;.\MicroSemi_Code\drivers_config\mss_ace;.\MicroSemi_Code\drivers\I2C;.\MicroSemi_Code\drivers\mss_ace;.\MicroSemi_Code\drivers\mss_ethernet_mac;.\MicroSemi_Code\drivers\OLED;.\WebServer;.\MicroSemi_Code\drivers\mss_timer;..\Common\ethernet\FreeTCPIP\net - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - - - - - - - - System - - - startus_a2fxxxm3.s - 2 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - - - - - Common_Demo_Source - - - TimerDemo.c - 1 - ..\Common\Minimal\TimerDemo.c - - - BlockQ.c - 1 - ..\Common\Minimal\BlockQ.c - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - dynamic.c - 1 - ..\Common\Minimal\dynamic.c - - - flash.c - 1 - ..\Common\Minimal\flash.c - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - - - FreeRTOS_Source - - - timers.c - 1 - ..\..\Source\timers.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - tasks.c - 1 - ..\..\Source\tasks.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - - - FreeTCPIP(based on uIP) - - - uip_arp.c - 1 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\FreeTCPIP\psock.c - - - timer.c - 1 - ..\Common\ethernet\FreeTCPIP\timer.c - - - uip.c - 1 - ..\Common\ethernet\FreeTCPIP\uip.c - - - - - Microsemi_Drivers - - - mss_gpio.c - 1 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - i2c.c - 1 - .\MicroSemi_Code\drivers\I2C\i2c.c - - - ace_convert.c - 1 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - - mss_ace.c - 1 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - - crc32.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - - mss_ethernet_mac.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - - phy.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - - oled.c - 1 - .\MicroSemi_Code\drivers\OLED\oled.c - - - ace_config.c - 1 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - - - - Main - - - main-blinky.c - 1 - .\main-blinky.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - printf-stdarg.c - 1 - .\printf-stdarg.c - - - ParTest.c - 1 - .\ParTest.c - - - main-full.c - 1 - .\main-full.c - - - uIP_Task.c - 1 - .\uIP_Task.c - - - - - CMSIS - - - system_a2fxxxm3.c - 1 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - core_cm3.c - 1 - .\MicroSemi_Code\CMSIS\core_cm3.c - - - - - Web_Server - - - httpd-cgi.c - 1 - .\WebServer\httpd-cgi.c - - - http-strings.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - httpd.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - httpd-fs.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - - - - - Full_with_optimisation - 0x4 - ARM-ADS - - - A2F200M3F - Actel - IRAM(0x20000000-0x2000FFFF) IROM(0x00000000-0x0003FFFF) CLOCK(20000000) CPUTYPE("Cortex-M3") - - "Startup\Actel\A2FxxxM3\startup_a2fxxxm3.s" ("SmartFusion A2FxxxM3 Startup Code") - UL2CM3(-O14 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000) - 5028 - a2fxxxm3.h - - - - - - - - - - - 0 - - - - Actel\A2FxxxM3\ - Actel\A2FxxxM3\ - - 0 - 0 - 0 - 0 - 1 - - .\Keil_output\ - RTOSDemo_Keil - 1 - 0 - 0 - 1 - 1 - .\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - 0 - 1 - - - - - - - - - - - - - - BIN\UL2CM3.DLL - - - - - 1 - 0 - 0 - 1 - 0 - -1 - - BIN\UL2CM3.DLL - - - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 4 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --diag_suppress 2770 - - - ..\CORTEX_A2F200_IAR_and_Keil;.\MicroSemi_Code\CMSIS;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM3;.\MicroSemi_Code\drivers\mss_gpio;.\MicroSemi_Code\drivers\mss_watchdog;..\Common\include;..\Common\ethernet\FreeTCPIP;..\Common\ethernet\FreeTCPIP\apps\httpd;.\MicroSemi_Code\drivers_config\mss_ace;.\MicroSemi_Code\drivers\I2C;.\MicroSemi_Code\drivers\mss_ace;.\MicroSemi_Code\drivers\mss_ethernet_mac;.\MicroSemi_Code\drivers\OLED;.\WebServer;.\MicroSemi_Code\drivers\mss_timer;..\Common\ethernet\FreeTCPIP\net - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - - - - - - - - System - - - startus_a2fxxxm3.s - 2 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - - - - - Common_Demo_Source - - - TimerDemo.c - 1 - ..\Common\Minimal\TimerDemo.c - - - BlockQ.c - 1 - ..\Common\Minimal\BlockQ.c - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - dynamic.c - 1 - ..\Common\Minimal\dynamic.c - - - flash.c - 1 - ..\Common\Minimal\flash.c - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - - - FreeRTOS_Source - - - timers.c - 1 - ..\..\Source\timers.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - tasks.c - 1 - ..\..\Source\tasks.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - - - FreeTCPIP(based on uIP) - - - uip_arp.c - 1 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\FreeTCPIP\psock.c - - - timer.c - 1 - ..\Common\ethernet\FreeTCPIP\timer.c - - - uip.c - 1 - ..\Common\ethernet\FreeTCPIP\uip.c - - - - - Microsemi_Drivers - - - mss_gpio.c - 1 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - i2c.c - 1 - .\MicroSemi_Code\drivers\I2C\i2c.c - - - ace_convert.c - 1 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - - mss_ace.c - 1 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - - crc32.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - - mss_ethernet_mac.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - - phy.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - - oled.c - 1 - .\MicroSemi_Code\drivers\OLED\oled.c - - - ace_config.c - 1 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - - - - Main - - - main-blinky.c - 1 - .\main-blinky.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - printf-stdarg.c - 1 - .\printf-stdarg.c - - - ParTest.c - 1 - .\ParTest.c - - - main-full.c - 1 - .\main-full.c - - - uIP_Task.c - 1 - .\uIP_Task.c - - - - - CMSIS - - - system_a2fxxxm3.c - 1 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - core_cm3.c - 1 - .\MicroSemi_Code\CMSIS\core_cm3.c - - - - - Web_Server - - - httpd-cgi.c - 1 - .\WebServer\httpd-cgi.c - - - http-strings.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - httpd.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - httpd-fs.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - - - - - -
diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c deleted file mode 100644 index 494396e4f..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" -#include "mss_ace.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "
\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - unsigned short usRawVoltage; - const ace_channel_handle_t xVoltageChannel = ( ace_channel_handle_t ) 0; - - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - usRawVoltage = ( unsigned short ) ACE_get_ppe_sample( xVoltageChannel ); - sprintf( uip_appdata, "LED

Raw voltage input is %d", pcStatus, usRawVoltage ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h deleted file mode 100644 index 004bbb59a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c deleted file mode 100644 index 22fbd0ea9..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how Cortex-M3 interrupts can - * interact with FreeRTOS tasks/timers. - * - * This simple demo project runs on the SmartFusion A2F-EVAL-KIT evaluation - * board, which is populated with an A2F200M3F SmartFusion mixed signal FPGA. - * The A2F200M3F incorporates a Cortex-M3 microcontroller. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" - - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x01UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x02UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void vLEDTimerCallback( TimerHandle_t xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses vLEDTimerCallback() as its callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* Maintains the current LED output state. */ -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( 5000 / portTICK_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - vLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. NOTE - accessing the LED port should use - a critical section because it is accessed from multiple tasks, and the - button interrupt - in this trivial case, for simplicity, the critical - section is omitted. */ - ulGPIOState |= mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - ulGPIOState &= ~mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the green LED. */ - if( ulReceivedValue == 100UL ) - { - /* NOTE - accessing the LED port should use a critical section - because it is accessed from multiple tasks, and the button interrupt - - in this trivial case, for simplicity, the critical section is - omitted. */ - if( ( ulGPIOState & mainTASK_CONTROLLED_LED ) != 0 ) - { - ulGPIOState &= ~mainTASK_CONTROLLED_LED; - } - else - { - ulGPIOState |= mainTASK_CONTROLLED_LED; - } - MSS_GPIO_set_outputs( ulGPIOState ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_1 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_2 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_3 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_4 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_5 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_6 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_7 , MSS_GPIO_OUTPUT_MODE ); - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeHeapSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amout of FreeRTOS heap that - remains unallocated. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ - return 0UL; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c deleted file mode 100644 index b5abfb55b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c +++ /dev/null @@ -1,623 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c (this file) defines a comprehensive demo that creates many - * tasks, queues, semaphores and timers. It also demonstrates how Cortex-M3 - * interrupts can interact with FreeRTOS tasks/timers, and implements a simple - * and small interactive web server. - * - * This project runs on the SmartFusion A2F-EVAL-KIT evaluation board, which - * is populated with an A2F200M3F SmartFusion mixed signal FPGA. The A2F200M3F - * incorporates a Cortex-M3 microcontroller. - * - * The main() Function: - * main() creates two demo specific software timers, one demo specific queue, - * and three demo specific tasks. It then creates a whole host of 'standard - * demo' tasks/queues/semaphores, before starting the scheduler. The demo - * specific tasks and timers are described in the comments here. The standard - * demo tasks are described on the FreeRTOS.org web site. - * - * The standard demo tasks provide no specific functionality. They are - * included to both test the FreeRTOS port, and provide examples of how the - * various FreeRTOS API functions can be used. - * - * The Demo Specific Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Demo Specific Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The Demo Specific OLED Task: - * The OLED task is a very simple task that just scrolls a message across the - * OLED. Ideally this would be done in a timer, but the OLED driver accesses - * the I2C which is time consuming. - * - * The Demo Specific LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - * - * The Demo Specific "Check" Callback Function: - * This is called each time the 'check' timer expires. The check timer - * callback function inspects all the standard demo tasks to see if they are - * all executing as expected. The check timer is initially configured to - * expire every three seconds, but will shorted this to every 500ms if an error - * is ever discovered. The check timer callback toggles the LED defined by - * the mainCHECK_LED definition each time it executes. Therefore, if LED - * mainCHECK_LED is toggling every three seconds, then no error have been found. - * If LED mainCHECK_LED is toggling every 500ms, then at least one errors has - * been found. The task in which the error was discovered is displayed at the - * bottom of the "task stats" page that is served by the embedded web server. - * - * The Demo Specific Idle Hook Function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The Web Server Task: - * The IP address used by the SmartFusion target is configured by the - * definitions configIP_ADDR0 to configIP_ADDR3, which are located in the - * FreeRTOSConfig.h header file. See the documentation page for this example - * on the http://www.FreeRTOS.org web site for further connection information. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries includes. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" -#include "mss_timer.h" -#include "mss_ace.h" -#include "oled.h" - -/* Common demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "TimerDemo.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggled by the check timer callback function. */ -#define mainCHECK_LED 0x07UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x06UL - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x05UL - -/* Constant used by the standard timer test functions. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/* Priorities used by the various different tasks. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainOLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The period at which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the OLED timer will expire. Each time it expires, it's -callback function updates the OLED text. */ -#define mainOLED_PERIOD_MS ( 75UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 500UL / portTICK_PERIOD_MS ) - -/* The LED will remain on until the button has not been pushed for a full -5000ms. */ -#define mainLED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* A zero block time. */ -#define mainDONT_BLOCK ( 0UL ) -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch the red LED - * off. - */ -static void prvLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * This is not a 'standard' partest function, so the prototype is not in - * partest.h, and is instead included here. - */ -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * A very simply task that does nothing but scroll the OLED display. Ideally - * this would be done within a timer, but it accesses the I2C port which is - * time consuming. - */ -static void prvOLEDTask( void * pvParameters); - -/*-----------------------------------------------------------*/ - -/* The queue used by both application specific demo tasks defined in this file. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses prvLEDTimerCallback() as it's callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* The check timer. This uses prvCheckTimerCallback() as it's callback -function. */ -static TimerHandle_t xCheckTimer = NULL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the check timer callback. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the three application specific demo tasks, as described in the - comments at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - xTaskCreate( prvOLEDTask, "OLED", configMINIMAL_STACK_SIZE, NULL, mainOLED_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( mainLED_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - /* Create a lot of 'standard demo' tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - - /* Create the web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* The suicide tasks must be created last, as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given - time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ - /* Check the standard demo tasks are running without error. Latch the - latest reported error in the pcStatusMessage character pointer. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - - if( xAreTimerDemoTasksStillRunning( ( mainCHECK_TIMER_PERIOD_MS ) ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo"; - } - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in pcStatusMessage? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( pcStatusMessage != NULL ) - { - /* This call to xTimerChangePeriod() uses a zero block time. Functions - called from inside of a timer callback function must *never* attempt - to block. */ - xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdFALSE ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - vParTestSetLEDFromISR( mainTIMER_CONTROLLED_LED, pdTRUE ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* The timer command queue will have been filled when the timer test tasks - were created in main() (this is part of the test they perform). Therefore, - while the check timer can be created in main(), it cannot be started from - main(). Once the scheduler has started, the timer service task will drain - the command queue, and now the check timer can be started successfully. */ - xTimerStart( xCheckTimer, portMAX_DELAY ); - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_CONTROLLED_LED ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvOLEDTask( void * pvParameters) -{ -static struct oled_data xOLEDData; -static unsigned char ucOffset1 = 0, ucOffset2 = 5; -static TickType_t xLastScrollTime = 0UL; - - /* Initialise the display. */ - OLED_init(); - - /* Initialise the parts of the oled_data structure that do not change. */ - xOLEDData.line1 = FIRST_LINE; - xOLEDData.string1 = " www.FreeRTOS.org"; - xOLEDData.line2 = SECOND_LINE; - xOLEDData.string2 = " www.FreeRTOS.org"; - xOLEDData.contrast_val = OLED_CONTRAST_VAL; - xOLEDData.on_off = OLED_HORIZ_SCROLL_OFF; - xOLEDData.column_scrool_per_step = OLED_HORIZ_SCROLL_STEP; - xOLEDData.start_page = OLED_START_PAGE; - xOLEDData.time_intrval_btw_scroll_step = OLED_HORIZ_SCROLL_TINVL; - xOLEDData.end_page = OLED_END_PAGE; - - - /* Initialise the last scroll time. This only needs to be done once, - because from this point on it will get automatically updated in the - xTaskDelayUntil() API function. */ - xLastScrollTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Wait until it is time to update the OLED again. */ - vTaskDelayUntil( &xLastScrollTime, mainOLED_PERIOD_MS ); - - xOLEDData.char_offset1 = ucOffset1++; - xOLEDData.char_offset2 = ucOffset2++; - - OLED_write_data( &xOLEDData, BOTH_LINES ); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Configure the GPIO for the LEDs. */ - vParTestInitialise(); - - /* ACE Initialization */ - ACE_init(); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeStackSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amount of FreeRTOS heap that - remains unallocated. */ - xFreeStackSpace = xPortGetFreeHeapSize(); - - if( xFreeStackSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because - of the task priorities the pointer could change it will be atomic if not - near atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ -const unsigned long ulMax32BitValue = 0xffffffffUL; - - MSS_TIM64_init( MSS_TIMER_PERIODIC_MODE ); - MSS_TIM64_load_immediate( ulMax32BitValue, ulMax32BitValue ); - MSS_TIM64_start(); -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ -unsigned long long ullCurrentValue; -const unsigned long long ulMax64BitValue = 0xffffffffffffffffULL; -unsigned long *pulHighWord, *pulLowWord; - - pulHighWord = ( unsigned long * ) &ullCurrentValue; - pulLowWord = pulHighWord++; - - MSS_TIM64_get_current_value( ( uint32_t * ) pulHighWord, ( uint32_t * ) pulLowWord ); - - /* Convert the down count into an upcount. */ - ullCurrentValue = ulMax64BitValue - ullCurrentValue; - - /* Scale to a 32bit number of suitable frequency. */ - ullCurrentValue >>= 13; - - /* Just return 32 bits. */ - return ( unsigned long ) ullCurrentValue; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c deleted file mode 100644 index 46713639c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int __write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c deleted file mode 100644 index ac95dc997..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c +++ /dev/null @@ -1,412 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Hardware driver includes. */ -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac.h" - -/* The buffer used by the uIP stack to both receive and send. In this case, -because the Ethernet driver has been modified to be zero copy - the uip_buf -variable is just a pointer to an Ethernet buffer, and not a buffer in its own -right. */ -extern unsigned char *uip_buf; - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* The length of the queue used to send events from timers or the Ethernet -driver to the uIP stack. */ -#define uipEVENT_QUEUE_LENGTH 10 - -/* A block time of zero simply means "don't block". */ -#define uipDONT_BLOCK 0UL - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation required to ready the stack for http - * processing. - */ -static void prvInitialise_uIP( void ); - -/* - * Handles Ethernet interrupt events. - */ -static void prvEMACEventListener( unsigned long ulISREvents ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Initialise the MAC hardware. - */ -static void prvInitEmac( void ); - -/* - * Write data to the Ethener. Note that this actually writes data twice for the - * to get around delayed ack issues when communicating with a non real-time - * peer (for example, a Windows machine). - */ -void vEMACWrite( void ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL, ulUIP_Events = 0UL; -long lPacketLength; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - - /* Initialise the uIP stack, configuring for web server usage. */ - prvInitialise_uIP(); - - /* Initialise the MAC and PHY. */ - prvInitEmac(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - lPacketLength = MSS_MAC_rx_packet(); - - /* Statements to be executed if data has been received on the Ethernet. */ - if( ( lPacketLength > 0 ) && ( uip_buf != NULL ) ) - { - uip_len = ( u16_t ) lPacketLength; - - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - /* Clear the RX event latched in ulUIP_Events - if one was latched. */ - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - - /* Statements to be executed if the TCP/IP period timer has expired. */ - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - if( uip_buf != NULL ) - { - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - } - - /* Statements to be executed if the ARP timer has expired. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - /* If all latched events have been cleared - block until another event - occurs. */ - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -uip_ipaddr_t xIPAddr; -TimerHandle_t xARPTimer, xPeriodicTimer; - - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( uipEVENT_QUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 500UL / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - /* Sanity check that the timers were indeed created. */ - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - /* These commands will block indefinitely until they succeed, so there is - no point in checking their return values. */ - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvEMACEventListener( unsigned long ulISREvents ) -{ -long lHigherPriorityTaskWoken = pdFALSE; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Sanity check that the event queue was indeed created. */ - configASSERT( xEMACEventQueue ); - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_SEND ) != 0UL ) - { - /* An Ethernet Tx event has occurred. */ - MSS_MAC_FreeTxBuffers(); - } - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_RECEIVED ) != 0UL ) - { - /* An Ethernet Rx event has occurred. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvInitEmac( void ) -{ -const unsigned char ucPHYAddress = 1; - - /* Initialise the MAC and PHY hardware. */ - MSS_MAC_init( ucPHYAddress ); - - /* Register the event listener. The Ethernet interrupt handler will call - this listener whenever an Rx or a Tx interrupt occurs. */ - MSS_MAC_set_callback( ( MSS_MAC_callback_t ) prvEMACEventListener ); - - /* Setup the EMAC and the NVIC for MAC interrupts. */ - NVIC_SetPriority( EthernetMAC_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( EthernetMAC_IRQn ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -const long lMaxAttempts = 10; -long lAttempt; -const TickType_t xShortDelay = ( 5 / portTICK_PERIOD_MS ); - - /* Try to send data to the Ethernet. Keep trying for a while if data cannot - be sent immediately. Note that this will actually cause the data to be sent - twice to get around delayed ACK problems when communicating with non real- - time TCP/IP stacks (such as a Windows machine). */ - for( lAttempt = 0; lAttempt < lMaxAttempts; lAttempt++ ) - { - if( MSS_MAC_tx_packet( uip_len ) != 0 ) - { - break; - } - else - { - vTaskDelay( xShortDelay ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. As this callback is assigned to both the ARP and Periodic timers, the - first thing to do is ascertain which timer it was that actually expired. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 3, 1 ); - vParTestSetLED( 4, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject deleted file mode 100644 index 07e7c98f1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject +++ /dev/null @@ -1,1271 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project deleted file mode 100644 index cf07b3fb8..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project +++ /dev/null @@ -1,85 +0,0 @@ - - - RTOSDemo - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?children? - ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\|| - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo/Debug} - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - true - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index c1e59b5eb..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Apr 03 18:36:27 BST 2011 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat deleted file mode 100644 index 14eb3a922..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat +++ /dev/null @@ -1,84 +0,0 @@ -REM This file should be executed from the command line prior to the first -REM build. It will be necessary to refresh the Eclipse project once the -REM .bat file has been executed (normally just press F5 to refresh). - -REM Copies all the required files from their location within the standard -REM FreeRTOS directory structure to under the Eclipse project directory. -REM This permits the Eclipse project to be used in 'managed' mode and without -REM having to setup any linked resources. - -REM Have the files already been copied? -IF EXIST FreeRTOS_Source Goto END - - REM Create the required directory structure. - MD FreeRTOS_Source - MD FreeRTOS_Source\include - MD FreeRTOS_Source\portable\GCC - MD FreeRTOS_Source\portable\GCC\ARM_CM3 - MD FreeRTOS_Source\portable\MemMang - MD FreeTCPIP - MD FreeTCPIP\http_Common - MD FreeTCPIP\apps - MD FreeTCPIP\apps\httpd - MD FreeTCPIP\net - MD FreeTCPIP\sys - MD Common_Demo_Tasks - MD Common_Demo_Tasks\include - - REM Copy the core kernel files. - copy ..\..\Source\tasks.c FreeRTOS_Source - copy ..\..\Source\queue.c FreeRTOS_Source - copy ..\..\Source\list.c FreeRTOS_Source - copy ..\..\Source\timers.c FreeRTOS_Source - - REM Copy the common header files - copy ..\..\Source\include\*.* FreeRTOS_Source\include - - REM Copy the portable layer files - copy ..\..\Source\portable\GCC\ARM_CM3\*.* FreeRTOS_Source\portable\GCC\ARM_CM3 - - REM Copy the basic memory allocation files - copy ..\..\Source\portable\MemMang\heap_2.c FreeRTOS_Source\portable\MemMang - - REM Copy the core FreeTCPIP (based on uIP) files - copy ..\Common\ethernet\FreeTCPIP\psock.c FreeTCPIP - copy ..\Common\ethernet\FreeTCPIP\timer.c FreeTCPIP - copy ..\Common\ethernet\FreeTCPIP\uip.c FreeTCPIP - copy ..\Common\ethernet\FreeTCPIP\uip_arp.c FreeTCPIP - - REM Copy the FreeTCPIP (based on uIP) header files - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\*.h FreeTCPIP\apps\httpd - copy ..\Common\ethernet\FreeTCPIP\net\*.h FreeTCPIP\net - copy ..\Common\ethernet\FreeTCPIP\sys\*.h FreeTCPIP\sys - - REM Copy the core HTTPD files - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c FreeTCPIP\http_Common - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c FreeTCPIP\http_Common - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c FreeTCPIP\http_Common - - REM Copy the common demo files used by this demo - copy ..\Common\Minimal\TimerDemo.c Common_Demo_Tasks - copy ..\Common\Minimal\BlockQ.c Common_Demo_Tasks - copy ..\Common\Minimal\blocktim.c Common_Demo_Tasks - copy ..\Common\Minimal\death.c Common_Demo_Tasks - copy ..\Common\Minimal\dynamic.c Common_Demo_Tasks - copy ..\Common\Minimal\flash.c Common_Demo_Tasks - copy ..\Common\Minimal\GenQTest.c Common_Demo_Tasks - copy ..\Common\Minimal\QPeek.c Common_Demo_Tasks - copy ..\Common\Minimal\recmutex.c Common_Demo_Tasks - copy ..\Common\Minimal\semtest.c Common_Demo_Tasks - - REM Copy the common demo header files - copy ..\Common\include\TimerDemo.h Common_Demo_Tasks\include - copy ..\Common\include\BlockQ.h Common_Demo_Tasks\include - copy ..\Common\include\blocktim.h Common_Demo_Tasks\include - copy ..\Common\include\death.h Common_Demo_Tasks\include - copy ..\Common\include\dynamic.h Common_Demo_Tasks\include - copy ..\Common\include\flash.h Common_Demo_Tasks\include - copy ..\Common\include\GenQTest.h Common_Demo_Tasks\include - copy ..\Common\include\QPeek.h Common_Demo_Tasks\include - copy ..\Common\include\recmutex.h Common_Demo_Tasks\include - copy ..\Common\include\semtest.h Common_Demo_Tasks\include - copy ..\Common\include\partest.h Common_Demo_Tasks\include - -: END diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h deleted file mode 100644 index e11cc6662..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * The following #error directive is to remind users that a batch file must be - * executed prior to this project being built. The batch file *cannot* be - * executed from within the IDE! Once it has been executed, re-open or refresh - * the Eclipse project and remove the #error line below. - */ -#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -extern uint32_t SystemFrequency; - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( SystemFrequency ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 0 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -void vMainConfigureTimerForRunTimeStats( void ); -unsigned long ulGetRunTimeCounterValue( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 31 priority levels */ -#endif - -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x1f -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -#define vPortSVCHandler SVC_Handler -#define xPortPendSVHandler PendSV_Handler -#define vPortSVCHandler SVC_Handler -#define xPortSysTickHandler SysTick_Handler - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h deleted file mode 100644 index ab389e05d..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h +++ /dev/null @@ -1,1102 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 Cortex Microcontroller Software Interface - Peripheral - * Access Layer. - * - * This file describes the interrupt assignment and peripheral registers for - * the SmartFusion A2FxxxM3 familly of devices. - * - * SVN $Revision: 2331 $ - * SVN $Date: 2010-02-26 12:02:06 +0000 (Fri, 26 Feb 2010) $ - */ -#ifndef __A2FXXXM3_H__ -#define __A2FXXXM3_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers *********************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /*!< 2 Hard Fault Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** SmartFusion specific Interrupt Numbers *********************************************************/ - WdogWakeup_IRQn = 0, /*!< WatchDog wakeup interrupt */ - BrownOut_1_5V_IRQn = 1, /*!< Supply dropped below 1.5V */ - BrownOut_3_3V_IRQn = 2, /*!< Supply dropped below 1.5V */ - RTC_Match_IRQn = 3, /*!< RTC match interrupt */ - RTCIF_Pub_IRQn = 4, /*!< RTC interface push button interrupt */ - EthernetMAC_IRQn = 5, /*!< Ethernet MAC interrupt */ - IAP_IRQn = 6, /*!< In Application Programming (IAP) interrupt */ - ENVM0_IRQn = 7, /*!< eNVM0 operation completion interrupt */ - ENVM1_IRQn = 8, /*!< eNVM1 operation completion interrupt */ - DMA_IRQn = 9, /*!< Peripheral DMA interrupt */ - UART0_IRQn = 10, /*!< UART0 interrupt */ - UART1_IRQn = 11, /*!< UART1 interrupt */ - SPI0_IRQn = 12, /*!< SPI0 interrupt */ - SPI1_IRQn = 13, /*!< SP1 interrupt */ - I2C0_IRQn = 14, /*!< I2C0 interrupt */ - I2C0_SMBAlert_IRQn = 15, /*!< I2C0 SMBus Alert interrupt */ - I2C0_SMBus_IRQn = 16, /*!< I2C0 SMBus Suspend interrupt */ - I2C1_IRQn = 17, /*!< I2C1 interrupt */ - I2C1_SMBAlert_IRQn = 18, /*!< I2C1 SMBus Alert interrupt */ - I2C1_SMBus_IRQn = 19, /*!< I2C1 SMBus Suspend interrupt */ - Timer1_IRQn = 20, /*!< Timer1 interrupt */ - Timer2_IRQn = 21, /*!< Timer2 interrupt */ - PLL_Lock_IRQn = 22, /*!< PLL lock interrupt */ - PLL_LockLost_IRQn = 23, /*!< PLL loss of lock interrupt */ - CommError_IRQn = 24, /*!< Communications Matrix error interrupt */ - Fabric_IRQn = 31, /*!< FPGA fabric interrupt */ - GPIO0_IRQn = 32, /*!< GPIO 0 interrupt */ - GPIO1_IRQn = 33, /*!< GPIO 1 interrupt */ - GPIO2_IRQn = 34, /*!< GPIO 2 interrupt */ - GPIO3_IRQn = 35, /*!< GPIO 3 interrupt */ - GPIO4_IRQn = 36, /*!< GPIO 4 interrupt */ - GPIO5_IRQn = 37, /*!< GPIO 5 interrupt */ - GPIO6_IRQn = 38, /*!< GPIO 6 interrupt */ - GPIO7_IRQn = 39, /*!< GPIO 7 interrupt */ - GPIO8_IRQn = 40, /*!< GPIO 8 interrupt */ - GPIO9_IRQn = 41, /*!< GPIO 9 interrupt */ - GPIO10_IRQn = 42, /*!< GPIO 10 interrupt */ - GPIO11_IRQn = 43, /*!< GPIO 11 interrupt */ - GPIO12_IRQn = 44, /*!< GPIO 12 interrupt */ - GPIO13_IRQn = 45, /*!< GPIO 13 interrupt */ - GPIO14_IRQn = 46, /*!< GPIO 14 interrupt */ - GPIO15_IRQn = 47, /*!< GPIO 15 interrupt */ - GPIO16_IRQn = 48, /*!< GPIO 16 interrupt */ - GPIO17_IRQn = 49, /*!< GPIO 17 interrupt */ - GPIO18_IRQn = 50, /*!< GPIO 18 interrupt */ - GPIO19_IRQn = 51, /*!< GPIO 19 interrupt */ - GPIO20_IRQn = 52, /*!< GPIO 20 interrupt */ - GPIO21_IRQn = 53, /*!< GPIO 21 interrupt */ - GPIO22_IRQn = 54, /*!< GPIO 22 interrupt */ - GPIO23_IRQn = 55, /*!< GPIO 23 interrupt */ - GPIO24_IRQn = 56, /*!< GPIO 24 interrupt */ - GPIO25_IRQn = 57, /*!< GPIO 25 interrupt */ - GPIO26_IRQn = 58, /*!< GPIO 26 interrupt */ - GPIO27_IRQn = 59, /*!< GPIO 27 interrupt */ - GPIO28_IRQn = 60, /*!< GPIO 28 interrupt */ - GPIO29_IRQn = 61, /*!< GPIO 29 interrupt */ - GPIO30_IRQn = 62, /*!< GPIO 30 interrupt */ - GPIO31_IRQn = 63, /*!< GPIO 31 interrupt */ - ACE_PC0_Flag0_IRQn = 64, /*!< ACE SSE program counter 0 flag 0 interrupt */ - ACE_PC0_Flag1_IRQn = 65, /*!< ACE SSE program counter 0 flag 1 interrupt */ - ACE_PC0_Flag2_IRQn = 66, /*!< ACE SSE program counter 0 flag 2 interrupt */ - ACE_PC0_Flag3_IRQn = 67, /*!< ACE SSE program counter 0 flag 3 interrupt */ - ACE_PC1_Flag0_IRQn = 68, /*!< ACE SSE program counter 1 flag 0 interrupt */ - ACE_PC1_Flag1_IRQn = 69, /*!< ACE SSE program counter 1 flag 1 interrupt */ - ACE_PC1_Flag2_IRQn = 70, /*!< ACE SSE program counter 1 flag 2 interrupt */ - ACE_PC1_Flag3_IRQn = 71, /*!< ACE SSE program counter 1 flag 3 interrupt */ - ACE_PC2_Flag0_IRQn = 72, /*!< ACE SSE program counter 2 flag 0 interrupt */ - ACE_PC2_Flag1_IRQn = 73, /*!< ACE SSE program counter 2 flag 1 interrupt */ - ACE_PC2_Flag2_IRQn = 74, /*!< ACE SSE program counter 2 flag 2 interrupt */ - ACE_PC2_Flag3_IRQn = 75, /*!< ACE SSE program counter 2 flag 3 interrupt */ - ACE_ADC0_DataValid_IRQn = 76, /*!< ACE ADC0 data valid interrupt */ - ACE_ADC1_DataValid_IRQn = 77, /*!< ACE ADC1 data valid interrupt */ - ACE_ADC2_DataValid_IRQn = 78, /*!< ACE ADC2 data valid interrupt */ - ACE_ADC0_CalDone_IRQn = 79, /*!< ACE ADC0 calibration done interrupt */ - ACE_ADC1_CalDone_IRQn = 80, /*!< ACE ADC1 calibration done interrupt */ - ACE_ADC2_CalDone_IRQn = 81, /*!< ACE ADC2 calibration done interrupt */ - ACE_ADC0_CalStart_IRQn = 82, /*!< ACE ADC0 calibration start interrupt */ - ACE_ADC1_CalStart_IRQn = 83, /*!< ACE ADC1 calibration start interrupt */ - ACE_ADC2_CalStart_IRQn = 84, /*!< ACE ADC2 calibration start interrupt */ - ACE_Comp0_Fall_IRQn = 85, /*!< ACE comparator 0 falling under reference interrupt */ - ACE_Comp1_Fall_IRQn = 86, /*!< ACE comparator 1 falling under reference interrupt */ - ACE_Comp2_Fall_IRQn = 87, /*!< ACE comparator 2 falling under reference interrupt */ - ACE_Comp3_Fall_IRQn = 88, /*!< ACE comparator 3 falling under reference interrupt */ - ACE_Comp4_Fall_IRQn = 89, /*!< ACE comparator 4 falling under reference interrupt */ - ACE_Comp5_Fall_IRQn = 90, /*!< ACE comparator 5 falling under reference interrupt */ - ACE_Comp6_Fall_IRQn = 91, /*!< ACE comparator 6 falling under reference interrupt */ - ACE_Comp7_Fall_IRQn = 92, /*!< ACE comparator 7 falling under reference interrupt */ - ACE_Comp8_Fall_IRQn = 93, /*!< ACE comparator 8 falling under reference interrupt */ - ACE_Comp9_Fall_IRQn = 94, /*!< ACE comparator 9 falling under reference interrupt */ - ACE_Comp10_Fall_IRQn = 95, /*!< ACE comparator 10 falling under reference interrupt */ - ACE_Comp11_Fall_IRQn = 96, /*!< ACE comparator 11 falling under reference interrupt */ - ACE_Comp0_Rise_IRQn = 97, /*!< ACE comparator 0 rising over reference interrupt */ - ACE_Comp1_Rise_IRQn = 98, /*!< ACE comparator 1 rising over reference interrupt */ - ACE_Comp2_Rise_IRQn = 99, /*!< ACE comparator 2 rising over reference interrupt */ - ACE_Comp3_Rise_IRQn = 100, /*!< ACE comparator 3 rising over reference interrupt */ - ACE_Comp4_Rise_IRQn = 101, /*!< ACE comparator 4 rising over reference interrupt */ - ACE_Comp5_Rise_IRQn = 102, /*!< ACE comparator 5 rising over reference interrupt */ - ACE_Comp6_Rise_IRQn = 103, /*!< ACE comparator 6 rising over reference interrupt */ - ACE_Comp7_Rise_IRQn = 104, /*!< ACE comparator 7 rising over reference interrupt */ - ACE_Comp8_Rise_IRQn = 105, /*!< ACE comparator 8 rising over reference interrupt */ - ACE_Comp9_Rise_IRQn = 106, /*!< ACE comparator 9 rising over reference interrupt */ - ACE_Comp10_Rise_IRQn = 107, /*!< ACE comparator 10 rising over reference interrupt */ - ACE_Comp11_Rise_IRQn = 108, /*!< ACE comparator 11 rising over reference interrupt */ - ACE_ADC0_FifoFull_IRQn = 109, /*!< ACE ADC0 FIFO full interrupt */ - ACE_ADC0_FifoAFull_IRQn = 110, /*!< ACE ADC0 FIFO almost full interrupt */ - ACE_ADC0_FifoEmpty_IRQn = 111, /*!< ACE ADC0 FIFO empty interrupt */ - ACE_ADC1_FifoFull_IRQn = 112, /*!< ACE ADC1 FIFO full interrupt */ - ACE_ADC1_FifoAFull_IRQn = 113, /*!< ACE ADC1 FIFO almost full interrupt */ - ACE_ADC1_FifoEmpty_IRQn = 114, /*!< ACE ADC1 FIFO empty interrupt */ - ACE_ADC2_FifoFull_IRQn = 115, /*!< ACE ADC2 FIFO full interrupt */ - ACE_ADC2_FifoAFull_IRQn = 116, /*!< ACE ADC2 FIFO almost full interrupt */ - ACE_ADC2_FifoEmpty_IRQn = 117, /*!< ACE ADC2 FIFO empty interrupt */ - ACE_PPE_Flag0_IRQn = 118, /*!< ACE post processing engine flag 0 interrupt */ - ACE_PPE_Flag1_IRQn = 119, /*!< ACE post processing engine flag 1 interrupt */ - ACE_PPE_Flag2_IRQn = 120, /*!< ACE post processing engine flag 2 interrupt */ - ACE_PPE_Flag3_IRQn = 121, /*!< ACE post processing engine flag 3 interrupt */ - ACE_PPE_Flag4_IRQn = 122, /*!< ACE post processing engine flag 4 interrupt */ - ACE_PPE_Flag5_IRQn = 123, /*!< ACE post processing engine flag 5 interrupt */ - ACE_PPE_Flag6_IRQn = 124, /*!< ACE post processing engine flag 6 interrupt */ - ACE_PPE_Flag7_IRQn = 125, /*!< ACE post processing engine flag 7 interrupt */ - ACE_PPE_Flag8_IRQn = 126, /*!< ACE post processing engine flag 8 interrupt */ - ACE_PPE_Flag9_IRQn = 127, /*!< ACE post processing engine flag 9 interrupt */ - ACE_PPE_Flag10_IRQn = 128, /*!< ACE post processing engine flag 10 interrupt */ - ACE_PPE_Flag11_IRQn = 129, /*!< ACE post processing engine flag 11 interrupt */ - ACE_PPE_Flag12_IRQn = 130, /*!< ACE post processing engine flag 12 interrupt */ - ACE_PPE_Flag13_IRQn = 131, /*!< ACE post processing engine flag 13 interrupt */ - ACE_PPE_Flag14_IRQn = 132, /*!< ACE post processing engine flag 14 interrupt */ - ACE_PPE_Flag15_IRQn = 133, /*!< ACE post processing engine flag 15 interrupt */ - ACE_PPE_Flag16_IRQn = 134, /*!< ACE post processing engine flag 16 interrupt */ - ACE_PPE_Flag17_IRQn = 135, /*!< ACE post processing engine flag 17 interrupt */ - ACE_PPE_Flag18_IRQn = 136, /*!< ACE post processing engine flag 18 interrupt */ - ACE_PPE_Flag19_IRQn = 137, /*!< ACE post processing engine flag 19 interrupt */ - ACE_PPE_Flag20_IRQn = 138, /*!< ACE post processing engine flag 20 interrupt */ - ACE_PPE_Flag21_IRQn = 139, /*!< ACE post processing engine flag 21 interrupt */ - ACE_PPE_Flag22_IRQn = 140, /*!< ACE post processing engine flag 22 interrupt */ - ACE_PPE_Flag23_IRQn = 141, /*!< ACE post processing engine flag 23 interrupt */ - ACE_PPE_Flag24_IRQn = 142, /*!< ACE post processing engine flag 24 interrupt */ - ACE_PPE_Flag25_IRQn = 143, /*!< ACE post processing engine flag 25 interrupt */ - ACE_PPE_Flag26_IRQn = 144, /*!< ACE post processing engine flag 26 interrupt */ - ACE_PPE_Flag27_IRQn = 145, /*!< ACE post processing engine flag 27 interrupt */ - ACE_PPE_Flag28_IRQn = 146, /*!< ACE post processing engine flag 28 interrupt */ - ACE_PPE_Flag29_IRQn = 147, /*!< ACE post processing engine flag 29 interrupt */ - ACE_PPE_Flag30_IRQn = 148, /*!< ACE post processing engine flag 30 interrupt */ - ACE_PPE_Flag31_IRQn = 149 /*!< ACE post processing engine flag 31 interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< SmartFusion includes a MPU */ -#define __NVIC_PRIO_BITS 5 /*!< SmartFusion uses 5 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -#include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "system_a2fxxxm3.h" /* SmartFusion System */ - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ -#if defined ( __CC_ARM ) - /* Enable anonymous unions when building using Keil-MDK */ - #pragma anon_unions -#endif -/*----------------------------------------------------------------------------*/ -/*----------------------------------- UART -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - union - { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLR; - uint32_t RESERVED0; - }; - - union - { - __IO uint8_t DMR; - __IO uint8_t IER; - uint32_t RESERVED1; - }; - - union - { - __IO uint8_t IIR; - __IO uint8_t FCR; - uint32_t RESERVED2; - }; - - __IO uint8_t LCR; - uint8_t RESERVED3; - uint16_t RESERVED4; - __IO uint8_t MCR; - uint8_t RESERVED5; - uint16_t RESERVED6; - __I uint8_t LSR; - uint8_t RESERVED7; - uint16_t RESERVED8; - __I uint8_t MSR; - uint8_t RESERVED9; - uint16_t RESERVED10; - __IO uint8_t SR; - uint8_t RESERVED11; - uint16_t RESERVED12; -} UART_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t RESERVED0[32]; - - __IO uint32_t IER_ERBFI; - __IO uint32_t IER_ETBEI; - __IO uint32_t IER_ELSI; - __IO uint32_t IER_EDSSI; - - uint32_t RESERVED1[28]; - - __IO uint32_t FCR_ENABLE; - __IO uint32_t FCR_CLEAR_RX_FIFO; - __IO uint32_t FCR_CLEAR_TX_FIFO; - __IO uint32_t FCR_RXRDY_TXRDYN_EN; - __IO uint32_t FCR_RESERVED0; - __IO uint32_t FCR_RESERVED1; - __IO uint32_t FCR_RX_TRIG0; - __IO uint32_t FCR_RX_TRIG1; - - uint32_t RESERVED2[24]; - - __IO uint32_t LCR_WLS0; - __IO uint32_t LCR_WLS1; - __IO uint32_t LCR_STB; - __IO uint32_t LCR_PEN; - __IO uint32_t LCR_EPS; - __IO uint32_t LCR_SP; - __IO uint32_t LCR_SB; - __IO uint32_t LCR_DLAB; - - uint32_t RESERVED3[24]; - - __IO uint32_t MCR_DTR; - __IO uint32_t MCR_RTS; - __IO uint32_t MCR_OUT1; - __IO uint32_t MCR_OUT2; - __IO uint32_t MCR_LOOP; - - uint32_t RESERVED4[27]; - - __I uint32_t LSR_DR; - __I uint32_t LSR_OE; - __I uint32_t LSR_PE; - __I uint32_t LSR_FE; - __I uint32_t LSR_BI; - __I uint32_t LSR_THRE; - __I uint32_t LSR_TEMT; - __I uint32_t LSR_FIER; - - uint32_t RESERVED5[24]; - - __I uint32_t MSR_DCTS; - __I uint32_t MSR_DDSR; - __I uint32_t MSR_TERI; - __I uint32_t MSR_DDCD; - __I uint32_t MSR_CTS; - __I uint32_t MSR_DSR; - __I uint32_t MSR_RI; - __I uint32_t MSR_DCD; - -} UART_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- I2C ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint8_t CTRL; - uint8_t RESERVED0; - uint16_t RESERVED1; - uint8_t STATUS; - uint8_t RESERVED2; - uint16_t RESERVED3; - __IO uint8_t DATA; - uint8_t RESERVED4; - uint16_t RESERVED5; - __IO uint8_t ADDR; - uint8_t RESERVED6; - uint16_t RESERVED7; - __IO uint8_t SMBUS; - uint8_t RESERVED8; - uint16_t RESERVED9; - __IO uint8_t FREQ; - uint8_t RESERVED10; - uint16_t RESERVED11; - __IO uint8_t GLITCHREG; - uint8_t RESERVED12; - uint16_t RESERVED13; -} I2C_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CTRL_CR0; - uint32_t CTRL_CR1; - uint32_t CTRL_AA; - uint32_t CTRL_SI; - uint32_t CTRL_STO; - uint32_t CTRL_STA; - uint32_t CTRL_ENS1; - uint32_t CTRL_CR2; - uint32_t RESERVED0[56]; - uint32_t DATA_DIR; - uint32_t RESERVED1[31]; - uint32_t ADDR_GC; -} I2C_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- SPI ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CONTROL; - __IO uint32_t TXRXDF_SIZE; - __I uint32_t STATUS; - __O uint32_t INT_CLEAR; - __I uint32_t RX_DATA; - __O uint32_t TX_DATA; - __IO uint32_t CLK_GEN; - __IO uint32_t SLAVE_SELECT; - __I uint32_t MIS; - __I uint32_t RIS; -} SPI_TypeDef; - -typedef struct -{ - __IO uint32_t CTRL_ENABLE; - __IO uint32_t CTRL_MASTER; - __IO uint32_t CTRL_MODE[2]; - __IO uint32_t CTRL_RX_INT_EN; - __IO uint32_t CTRL_TX_INT_EN; - __IO uint32_t CTRL_RX_OVERFLOW_INT_EN; - __IO uint32_t CTRL_TX_UNDERRUN_INT_EN; - __IO uint32_t CTRL_TXRXDFCOUNT[16]; - __IO uint32_t CTRL_SPO; - __IO uint32_t CTRL_SPH; - __IO uint32_t CTRL_RESERVED[6]; - - __IO uint32_t TXRXDF_SIZE[32]; - - __I uint32_t STATUS_TX_DONE; - __I uint32_t STATUS_RX_RDY; - __I uint32_t STATUS_RX_CH_OV; - __I uint32_t STATUS_TX_CH_UV; - __I uint32_t STATUS_RX_FIFO_FULL; - __I uint32_t STATUS_RX_FIFO_FULL_NEXT; - __I uint32_t STATUS_RX_FIFO_EMPTY; - __I uint32_t STATUS_RX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_TX_FIFO_FULL; - __I uint32_t STATUS_TX_FIFO_FULL_NEXT; - __I uint32_t STATUS_TX_FIFO_EMPTY; - __I uint32_t STATUS_TX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_RESERVED[20]; - - __O uint32_t INT_CLEAR_TX_DONE; - __O uint32_t INT_CLEAR_RX_RDY; - __O uint32_t INT_CLEAR_RX_OVER; - __O uint32_t INT_CLEAR_TX_UNDER; - __O uint32_t INT_CLEAR[28]; - - __I uint32_t RX_DATA[32]; - __O uint32_t TX_DATA[32]; - __IO uint32_t CLK_GEN[32]; - __IO uint32_t SLAVE_SELECT[32]; - __I uint32_t MIS_TX_DONE; - __I uint32_t MIS_RX_RDY; - __I uint32_t MIS_RX_OVER; - __I uint32_t MIS_TX_UNDER; - __I uint32_t MIS[28]; - __I uint32_t RIS[32]; -} SPI_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- GPIO -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t GPIO_0_CFG; - __IO uint32_t GPIO_1_CFG; - __IO uint32_t GPIO_2_CFG; - __IO uint32_t GPIO_3_CFG; - __IO uint32_t GPIO_4_CFG; - __IO uint32_t GPIO_5_CFG; - __IO uint32_t GPIO_6_CFG; - __IO uint32_t GPIO_7_CFG; - __IO uint32_t GPIO_8_CFG; - __IO uint32_t GPIO_9_CFG; - __IO uint32_t GPIO_10_CFG; - __IO uint32_t GPIO_11_CFG; - __IO uint32_t GPIO_12_CFG; - __IO uint32_t GPIO_13_CFG; - __IO uint32_t GPIO_14_CFG; - __IO uint32_t GPIO_15_CFG; - __IO uint32_t GPIO_16_CFG; - __IO uint32_t GPIO_17_CFG; - __IO uint32_t GPIO_18_CFG; - __IO uint32_t GPIO_19_CFG; - __IO uint32_t GPIO_20_CFG; - __IO uint32_t GPIO_21_CFG; - __IO uint32_t GPIO_22_CFG; - __IO uint32_t GPIO_23_CFG; - __IO uint32_t GPIO_24_CFG; - __IO uint32_t GPIO_25_CFG; - __IO uint32_t GPIO_26_CFG; - __IO uint32_t GPIO_27_CFG; - __IO uint32_t GPIO_28_CFG; - __IO uint32_t GPIO_29_CFG; - __IO uint32_t GPIO_30_CFG; - __IO uint32_t GPIO_31_CFG; - __IO uint32_t GPIO_IRQ; - __I uint32_t GPIO_IN; - __IO uint32_t GPIO_OUT; -} GPIO_TypeDef; - -typedef struct -{ - __IO uint32_t GPIO_0_CFG[32]; - __IO uint32_t GPIO_1_CFG[32]; - __IO uint32_t GPIO_2_CFG[32]; - __IO uint32_t GPIO_3_CFG[32]; - __IO uint32_t GPIO_4_CFG[32]; - __IO uint32_t GPIO_5_CFG[32]; - __IO uint32_t GPIO_6_CFG[32]; - __IO uint32_t GPIO_7_CFG[32]; - __IO uint32_t GPIO_8_CFG[32]; - __IO uint32_t GPIO_9_CFG[32]; - __IO uint32_t GPIO_10_CFG[32]; - __IO uint32_t GPIO_11_CFG[32]; - __IO uint32_t GPIO_12_CFG[32]; - __IO uint32_t GPIO_13_CFG[32]; - __IO uint32_t GPIO_14_CFG[32]; - __IO uint32_t GPIO_15_CFG[32]; - __IO uint32_t GPIO_16_CFG[32]; - __IO uint32_t GPIO_17_CFG[32]; - __IO uint32_t GPIO_18_CFG[32]; - __IO uint32_t GPIO_19_CFG[32]; - __IO uint32_t GPIO_20_CFG[32]; - __IO uint32_t GPIO_21_CFG[32]; - __IO uint32_t GPIO_22_CFG[32]; - __IO uint32_t GPIO_23_CFG[32]; - __IO uint32_t GPIO_24_CFG[32]; - __IO uint32_t GPIO_25_CFG[32]; - __IO uint32_t GPIO_26_CFG[32]; - __IO uint32_t GPIO_27_CFG[32]; - __IO uint32_t GPIO_28_CFG[32]; - __IO uint32_t GPIO_29_CFG[32]; - __IO uint32_t GPIO_30_CFG[32]; - __IO uint32_t GPIO_31_CFG[32]; - __IO uint32_t GPIO_IRQ[32]; - __I uint32_t GPIO_IN[32]; - __IO uint32_t GPIO_OUT[32]; -} GPIO_BitBand_TypeDef; - - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- RTC ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t COUNTER0_REG; - __IO uint32_t COUNTER1_REG; - __IO uint32_t COUNTER2_REG; - __IO uint32_t COUNTER3_REG; - __IO uint32_t COUNTER4_REG; - - __IO uint32_t RESERVED0[3]; - - __IO uint32_t MATCHREG0_REG; - __IO uint32_t MATCHREG1_REG; - __IO uint32_t MATCHREG2_REG; - __IO uint32_t MATCHREG3_REG; - __IO uint32_t MATCHREG4_REG; - - __IO uint32_t RESERVED1[3]; - - __IO uint32_t MATCHBITS0_REG; - __IO uint32_t MATCHBITS1_REG; - __IO uint32_t MATCHBITS2_REG; - __IO uint32_t MATCHBITS3_REG; - __IO uint32_t MATCHBITS4_REG; - - __IO uint32_t RESERVED2[3]; - - __IO uint32_t CTRL_STAT_REG; -} RTC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------------------- Timer -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t TIM1_VAL; - __IO uint32_t TIM1_LOADVAL; - __IO uint32_t TIM1_BGLOADVAL; - __IO uint32_t TIM1_CTRL; - __IO uint32_t TIM1_RIS; - __I uint32_t TIM1_MIS; - - __I uint32_t TIM2_VAL; - __IO uint32_t TIM2_LOADVAL; - __IO uint32_t TIM2_BGLOADVAL; - __IO uint32_t TIM2_CTRL; - __IO uint32_t TIM2_RIS; - __I uint32_t TIM2_MIS; - - __I uint32_t TIM64_VAL_U; - __I uint32_t TIM64_VAL_L; - __IO uint32_t TIM64_LOADVAL_U; - __IO uint32_t TIM64_LOADVAL_L; - __IO uint32_t TIM64_BGLOADVAL_U; - __IO uint32_t TIM64_BGLOADVAL_L; - __IO uint32_t TIM64_CTRL; - __IO uint32_t TIM64_RIS; - __I uint32_t TIM64_MIS; - __IO uint32_t TIM64_MODE; -} TIMER_TypeDef; - -/*------------------------------------------------------------------------------ - * Timer bit band - */ -typedef struct -{ - __I uint32_t TIM1_VALUE_BIT[32]; - __IO uint32_t TIM1_LOADVAL[32]; - __IO uint32_t TIM1_BGLOADVAL[32]; - - __IO uint32_t TIM1ENABLE; - __IO uint32_t TIM1MODE; - __IO uint32_t TIM1INTEN; - __IO uint32_t TIM1_CTRL_RESERVED[29]; - __IO uint32_t TIM1_RIS[32]; - __I uint32_t TIM1_MIS[32]; - - __I uint32_t TIM2_VALUE[32]; - __IO uint32_t TIM2_LOADVAL[32]; - __IO uint32_t TIM2_BGLOADVAL[32]; - - __IO uint32_t TIM2ENABLE; - __IO uint32_t TIM2MODE; - __IO uint32_t TIM2INTEN; - __IO uint32_t TIM2_CTRL[29]; - __IO uint32_t TIM2_RIS[32]; - __I uint32_t TIM2_MIS[32]; - - __I uint32_t TIM64VALUEU[32]; - __I uint32_t TIM64VALUEL[32]; - __IO uint32_t TIM64LOADVALUEU[32]; - __IO uint32_t TIM64LOADVALUEL[32]; - __IO uint32_t TIM64BGLOADVALUEU[32]; - __IO uint32_t TIM64BGLOADVALUEL[32]; - __IO uint32_t TIM64ENABLE; - __IO uint32_t TIM64MODE; - __IO uint32_t TIM64INTEN; - __IO uint32_t TIM64_CTRL[29]; - __IO uint32_t TIM64_RIS[32]; - __I uint32_t TIM64_MIS[32]; - __IO uint32_t TIM64_MODE[32]; -} TIMER_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*--------------------------------- Watchdog ---------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t WDOGVALUE; - __IO uint32_t WDOGLOAD; - __IO uint32_t WDOGMVRP; - __O uint32_t WDOGREFRESH; - __IO uint32_t WDOGENABLE; - __IO uint32_t WDOGCONTROL; - __I uint32_t WDOGSTATUS; - __IO uint32_t WDOGRIS; - __I uint32_t WDOGMIS; -} WATCHDOG_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Real Time Clock ------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Peripherals DMA ------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CRTL; - __IO uint32_t STATUS; - __IO uint32_t BUFFER_A_SRC_ADDR; - __IO uint32_t BUFFER_A_DEST_ADDR; - __IO uint32_t BUFFER_A_TRANSFER_COUNT; - __IO uint32_t BUFFER_B_SRC_ADDR; - __IO uint32_t BUFFER_B_DEST_ADDR; - __IO uint32_t BUFFER_B_TRANSFER_COUNT; -} PDMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t RATIO_HIGH_LOW; - __IO uint32_t BUFFER_STATUS; - uint32_t RESERVED[6]; - PDMA_Channel_TypeDef CHANNEL[8]; -} PDMA_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ Ethernet MAC --------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CSR0; - uint32_t RESERVED0; - __IO uint32_t CSR1; - uint32_t RESERVED1; - __IO uint32_t CSR2; - uint32_t RESERVED2; - __IO uint32_t CSR3; - uint32_t RESERVED3; - __IO uint32_t CSR4; - uint32_t RESERVED4; - __IO uint32_t CSR5; - uint32_t RESERVED5; - __IO uint32_t CSR6; - uint32_t RESERVED6; - __IO uint32_t CSR7; - uint32_t RESERVED7; - __IO uint32_t CSR8; - uint32_t RESERVED8; - __IO uint32_t CSR9; - uint32_t RESERVED9; - uint32_t RESERVED10; - uint32_t RESERVED11; - __IO uint32_t CSR11; -} MAC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- Analog Conversion Engine (ACE) ----------------------*/ -/*----------------------------------------------------------------------------*/ -/* Analog quad configuration */ -typedef struct -{ - __IO uint8_t b0; - uint8_t reserved0_0; - uint16_t reserved0_1; - __IO uint8_t b1; - uint8_t reserved1_0; - uint16_t reserved1_1; - __IO uint8_t b2; - uint8_t reserved2_0; - uint16_t reserved2_1; - __IO uint8_t b3; - uint8_t reserved3_0; - uint16_t reserved3_1; - __IO uint8_t b4; - uint8_t reserved4_0; - uint16_t reserved4_1; - __IO uint8_t b5; - uint8_t reserved5_0; - uint16_t reserved5_1; - __IO uint8_t b6; - uint8_t reserved6_0; - uint16_t reserved6_1; - __IO uint8_t b7; - uint8_t reserved7_0; - uint16_t reserved7_1; - __IO uint8_t b8; - uint8_t reserved8_0; - uint16_t reserved8_1; - __IO uint8_t b9; - uint8_t reserved9_0; - uint16_t reserved9_1; - __IO uint8_t b10; - uint8_t reserved10_0; - uint16_t reserved10_1; - __IO uint8_t b11; - uint8_t reserved11_0; - uint16_t reserved11_1; -} AQ_config_t; - -/* ACE memory map layout */ -typedef struct -{ - __O uint32_t NOP; - __IO uint32_t SSE_TS_CTRL; - __IO uint32_t ADC_SYNC_CONV; - __IO uint32_t ANA_COMM_CTRL; - __IO uint32_t DAC_SYNC_CTRL; - __IO uint32_t PDMA_REQUEST; - uint32_t RESERVED0[10]; - __O uint32_t PC0_LO; - __O uint32_t PC0_HI; - __IO uint32_t PC0_CTRL; - __IO uint32_t PC0_DLY; - __IO uint32_t ADC0_CONV_CTRL; - __IO uint32_t ADC0_STC; - __IO uint32_t ADC0_TVC; - __IO uint32_t ADC0_MISC_CTRL; - __IO uint32_t DAC0_CTRL; - __IO uint32_t DAC0_BYTE0; - __IO uint32_t DAC0_BYTE1; - __IO uint32_t DAC0_BYTE2; - __IO uint32_t LC0; - __O uint32_t LC0_JMP_LO; - __O uint32_t LC0_JMP_HI; - __O uint32_t PC0_FLAGS; - __O uint32_t PC1_LO; - __O uint32_t PC1_HI; - __IO uint32_t PC1_CTRL; - __IO uint32_t PC1_DLY; - __IO uint32_t ADC1_CONV_CTRL; - __IO uint32_t ADC1_STC; - __IO uint32_t ADC1_TVC; - __IO uint32_t ADC1_MISC_CTRL; - __IO uint32_t DAC1_CTRL; - __IO uint32_t DAC1_BYTE0; - __IO uint32_t DAC1_BYTE1; - __IO uint32_t DAC1_BYTE2; - __IO uint32_t LC1; - __O uint32_t LC1_JMP_LO; - __O uint32_t LC1_JMP_HI; - __O uint32_t PC1_FLAGS; - __O uint32_t PC2_LO; - __O uint32_t PC2_HI; - __IO uint32_t PC2_CTRL; - __IO uint32_t PC2_DLY; - __IO uint32_t ADC2_CONV_CTRL; - __IO uint32_t ADC2_STC; - __IO uint32_t ADC2_TVC; - __IO uint32_t ADC2_MISC_CTRL; - __IO uint32_t DAC2_CTRL; - __IO uint32_t DAC2_BYTE0; - __IO uint32_t DAC2_BYTE1; - __IO uint32_t DAC2_BYTE2; - __IO uint32_t LC2; - __O uint32_t LC2_JMP_LO; - __O uint32_t LC2_JMP_HI; - __O uint32_t PC2_FLAGS; - uint32_t RESERVED1; - uint32_t RESERVED2; - __IO uint32_t SSE_RAM_LO_IDATA; - __IO uint32_t SSE_RAM_HI_IDATA; - uint32_t RESERVED3[61]; - AQ_config_t ACB_DATA[6]; - uint32_t RESERVED4[59]; - __IO uint32_t SSE_PC0; - __IO uint32_t SSE_PC1; - __IO uint32_t SSE_PC2; - uint32_t RESERVED5[57]; - __IO uint32_t SSE_DAC0_BYTES01; - __IO uint32_t SSE_DAC1_BYTES01; - __IO uint32_t SSE_DAC2_BYTES01; - uint32_t RESERVED6[61]; - __O uint32_t SSE_ADC0_RESULTS; - __O uint32_t SSE_ADC1_RESULTS; - __O uint32_t SSE_ADC2_RESULTS; - uint32_t RESERVED7[61]; - __O uint32_t SSE_PDMA_DATAIN; - uint32_t RESERVED8[63]; - __IO uint32_t SSE_RAM_DATA[512]; - __I uint32_t ADC0_STATUS; - __I uint32_t ADC1_STATUS; - __I uint32_t ADC2_STATUS; - __I uint32_t COMPARATOR_STATUS; - uint32_t RESERVED9[124]; - __IO uint32_t SSE_IRQ_EN; - __I uint32_t SSE_IRQ; - __O uint32_t SSE_IRQ_CLR; - __IO uint32_t COMP_IRQ_EN; - __I uint32_t COMP_IRQ; - __O uint32_t COMP_IRQ_CLR; - __IO uint32_t PPE_FIFO_IRQ_EN; - __I uint32_t PPE_FIFO_IRQ; - __O uint32_t PPE_FIFO_IRQ_CLR; - __IO uint32_t PPE_FLAGS0_IRQ_EN; - __I uint32_t PPE_FLAGS0_IRQ; - __O uint32_t PPE_FLAGS0_IRQ_CLR; - __IO uint32_t PPE_FLAGS1_IRQ_EN; - __I uint32_t PPE_FLAGS1_IRQ; - __O uint32_t PPE_FLAGS1_IRQ_CLR; - __IO uint32_t PPE_FLAGS2_IRQ_EN; - __I uint32_t PPE_FLAGS2_IRQ; - __O uint32_t PPE_FLAGS2_IRQ_CLR; - __IO uint32_t PPE_FLAGS3_IRQ_EN; - __I uint32_t PPE_FLAGS3_IRQ; - __O uint32_t PPE_FLAGS3_IRQ_CLR; - __IO uint32_t PPE_SFFLAGS_IRQ_EN; - __I uint32_t PPE_SFFLAGS_IRQ; - __O uint32_t PPE_SFFLAGS_IRQ_CLR; - __IO uint32_t FPGA_FLAGS_SEL; - uint32_t RESERVED10[39]; - __IO uint32_t PPE_PDMA_CTRL; - __I uint32_t PDMA_STATUS; - __IO uint32_t PPE_PDMA_DATAOUT; - uint32_t RESERVED11[61]; - __I uint32_t PPE_NOP; - __IO uint32_t PPE_CTRL; - __IO uint32_t PPE_PC_ETC; - __IO uint32_t PPE_SF; - __IO uint32_t PPE_SCRATCH; - uint32_t RESERVED12; - __IO uint32_t ALU_CTRL; - __I uint32_t ALU_STATUS; - __IO uint32_t ALU_A; - uint32_t RESERVED50; - __IO uint32_t ALU_B; - uint32_t RESERVED53; - __IO uint32_t ALU_C; - uint32_t RESERVED51; - __IO uint32_t ALU_D; - uint32_t RESERVED52; - __IO uint32_t ALU_E; - uint32_t RESERVED54; - __IO uint32_t PPE_FPTR; - uint32_t RESERVED55; - __IO uint32_t PPE_FLAGS0; - __IO uint32_t PPE_FLAGS1; - __IO uint32_t PPE_FLAGS2; - __IO uint32_t PPE_FLAGS3; - __IO uint32_t PPE_SFFLAGS; - uint32_t RESERVED13[11]; - __IO uint32_t ADC0_FIFO_CTRL; - __I uint32_t ADC0_FIFO_STATUS; - __IO uint32_t ADC0_FIFO_DATA; - __IO uint32_t ADC1_FIFO_CTRL; - __I uint32_t ADC1_FIFO_STATUS; - __IO uint32_t ADC1_FIFO_DATA; - __IO uint32_t ADC2_FIFO_CTRL; - __I uint32_t ADC2_FIFO_STATUS; - __IO uint32_t ADC2_FIFO_DATA; - uint32_t RESERVED14[19]; - __I uint32_t ADC0_FIFO_DATA_PEEK; - __I uint32_t ADC0_FIFO_DATA0; - __I uint32_t ADC0_FIFO_DATA1; - __I uint32_t ADC0_FIFO_DATA2; - __I uint32_t ADC0_FIFO_DATA3; - __I uint32_t ADC1_FIFO_DATA_PEEK; - __I uint32_t ADC1_FIFO_DATA0; - __I uint32_t ADC1_FIFO_DATA1; - __I uint32_t ADC1_FIFO_DATA2; - __I uint32_t ADC1_FIFO_DATA3; - __I uint32_t ADC2_FIFO_DATA_PEEK; - __I uint32_t ADC2_FIFO_DATA0; - __I uint32_t ADC2_FIFO_DATA1; - __I uint32_t ADC2_FIFO_DATA2; - __I uint32_t ADC2_FIFO_DATA3; - uint32_t RESERVED15[177]; - __IO uint32_t PPE_RAM_DATA[512]; -} ACE_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------ In Application Programming ------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IAP_IR; - __IO uint32_t IAP_DR2; - __IO uint32_t IAP_DR3; - __IO uint32_t IAP_DR5; - __IO uint32_t IAP_DR26; - __IO uint32_t IAP_DR32; - __IO uint32_t IAP_DR; - __IO uint32_t IAP_DR_LENGTH; - __IO uint32_t IAP_TAP_NEW_STATE; - __IO uint32_t IAP_TAP_CONTROL; - __I uint32_t IAP_STATUS; -} IAP_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t STATUS; - __IO uint32_t CONTROL; - __IO uint32_t ENABLE; - uint32_t RESERVED0; - __IO uint32_t CONFIG_0; - __IO uint32_t CONFIG_1; - __IO uint32_t PAGE_STATUS_0; - __IO uint32_t PAGE_STATUS_1; - __IO uint32_t SEGMENT; - __IO uint32_t ENVM_SELECT; -} NVM_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t MSSIRQ_EN0; - __IO uint32_t MSSIRQ_EN1; - __IO uint32_t MSSIRQ_EN2; - __IO uint32_t MSSIRQ_EN3; - __IO uint32_t MSSIRQ_EN4; - __IO uint32_t MSSIRQ_EN5; - __IO uint32_t MSSIRQ_EN6; - __IO uint32_t MSSIRQ_EN7; - __I uint32_t MSSIRQ_SRC0; - __I uint32_t MSSIRQ_SRC1; - __I uint32_t MSSIRQ_SRC2; - __I uint32_t MSSIRQ_SRC3; - __I uint32_t MSSIRQ_SRC4; - __I uint32_t MSSIRQ_SRC5; - __I uint32_t MSSIRQ_SRC6; - __I uint32_t MSSIRQ_SRC7; - __IO uint32_t FIIC_MR; -} MSS_IRQ_CTRL_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ System Registers ----------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t ESRAM_CR; - __IO uint32_t ENVM_CR; - __IO uint32_t ENVM_REMAP_SYS_CR; - __IO uint32_t ENVM_REMAP_FAB_CR; - __IO uint32_t FAB_PROT_SIZE_CR; - __IO uint32_t FAB_PROT_BASE_CR; - __IO uint32_t AHB_MATRIX_CR; - __IO uint32_t MSS_SR; - __IO uint32_t CLR_MSS_SR; - __IO uint32_t EFROM_CR; - __IO uint32_t IAP_CR; - __IO uint32_t SOFT_IRQ_CR; - __IO uint32_t SOFT_RST_CR; - __IO uint32_t DEVICE_SR; - __IO uint32_t SYSTICK_CR; - __IO uint32_t EMC_MUX_CR; - __IO uint32_t EMC_CS_0_CR; - __IO uint32_t EMC_CS_1_CR; - __IO uint32_t MSS_CLK_CR; - __IO uint32_t MSS_CCC_DIV_CR; - __IO uint32_t MSS_CCC_MUX_CR; - __IO uint32_t MSS_CCC_PLL_CR; - __IO uint32_t MSS_CCC_DLY_CR; - __IO uint32_t MSS_CCC_SR; - __IO uint32_t MSS_RCOSC_CR; - __IO uint32_t VRPSM_CR; - __IO uint32_t RESERVED; - __IO uint32_t FAB_IF_CR; - __IO uint32_t FAB_APB_HIWORD_DR; - __IO uint32_t LOOPBACK_CR; - __IO uint32_t MSS_IO_BANK_CR; - __IO uint32_t GPIN_SOURCE_CR; - __IO uint32_t TEST_SR; - __IO uint32_t RED_REP_ADDR0; - __I uint32_t RED_REP_LOW_LOCS0; - __I uint32_t RED_REP_HIGH_LOCS0; - __IO uint32_t RED_REP_ADDR1; - __I uint32_t RED_REP_LOW_LOCS1; - __I uint32_t RED_REP_HIGH_LOCS1; - __IO uint32_t FABRIC_CR; - uint32_t RESERVED1[24]; - __IO uint32_t IOMUX_CR[83]; -} SYSREG_TypeDef; - -#define SYSREG_ENVM_SOFTRESET_MASK (uint32_t)0x00000001 -#define SYSREG_ESRAM0_SOFTRESET_MASK (uint32_t)0x00000002 -#define SYSREG_ESRAM1_SOFTRESET_MASK (uint32_t)0x00000004 -#define SYSREG_EMC_SOFTRESET_MASK (uint32_t)0x00000008 -#define SYSREG_MAC_SOFTRESET_MASK (uint32_t)0x00000010 -#define SYSREG_PDMA_SOFTRESET_MASK (uint32_t)0x00000020 -#define SYSREG_TIMER_SOFTRESET_MASK (uint32_t)0x00000040 -#define SYSREG_UART0_SOFTRESET_MASK (uint32_t)0x00000080 -#define SYSREG_UART1_SOFTRESET_MASK (uint32_t)0x00000100 -#define SYSREG_SPI0_SOFTRESET_MASK (uint32_t)0x00000200 -#define SYSREG_SPI1_SOFTRESET_MASK (uint32_t)0x00000400 -#define SYSREG_I2C0_SOFTRESET_MASK (uint32_t)0x00000800 -#define SYSREG_I2C1_SOFTRESET_MASK (uint32_t)0x00001000 -#define SYSREG_ACE_SOFTRESET_MASK (uint32_t)0x00002000 -#define SYSREG_GPIO_SOFTRESET_MASK (uint32_t)0x00004000 -#define SYSREG_IAP_SOFTRESET_MASK (uint32_t)0x00008000 -#define SYSREG_EXT_SOFTRESET_MASK (uint32_t)0x00010000 -#define SYSREG_FPGA_SOFTRESET_MASK (uint32_t)0x00020000 -#define SYSREG_F2M_RESET_ENABLE_MASK (uint32_t)0x00040000 -#define SYSREG_PADRESET_ENABLE_MASK (uint32_t)0x00080000 - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -#define UART0_BASE 0x40000000U -#define SPI0_BASE 0x40001000U -#define I2C0_BASE 0x40002000U -#define MAC_BASE 0x40003000U -#define PDMA_BASE 0x40004000U -#define TIMER_BASE 0x40005000U -#define WATCHDOG_BASE 0x40006000U -#define H2F_IRQ_CTRL_BASE 0x40007000U -#define UART1_BASE 0x40010000U -#define SPI1_BASE 0x40011000U -#define I2C1_BASE 0x40012000U -#define GPIO_BASE 0x40013000U -#define RTC_BASE 0x40014100U -#define FROM_BASE 0x40015000U -#define IAP_BASE 0x40016000U -#define ACE_BASE 0x40020000U -#define FPGA_FABRIC_RAM_BASE 0x40040000U -#define FPGA_FABRIC_BASE 0x40050000U -#define ENVM_BASE 0x60000000U -#define ENVM_REGS_BASE 0x60100000U -#define SYSREG_BASE 0xE0042000U - -/******************************************************************************/ -/* bitband address calcualtion macro */ -/******************************************************************************/ -#define BITBAND_ADDRESS(X) ((X & 0xF0000000U) + 0x02000000U + ((X & 0xFFFFFU) << 5)) - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define UART0 ((UART_TypeDef *) UART0_BASE) -#define UART0_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART0_BASE)) -#define SPI0 ((SPI_TypeDef *) SPI0_BASE) -#define SPI0_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI0_BASE)) -#define I2C0 ((I2C_TypeDef *) I2C0_BASE) -#define I2C0_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C0_BASE)) -#define MAC ((MAC_TypeDef *) MAC_BASE) -#define PDMA ((PDMA_TypeDef *) PDMA_BASE) -#define TIMER ((TIMER_TypeDef *) TIMER_BASE) -#define TIMER_BITBAND ((TIMER_BitBand_TypeDef *) BITBAND_ADDRESS(TIMER_BASE)) -#define WATCHDOG ((WATCHDOG_TypeDef *) WATCHDOG_BASE) -#define MSS_IRQ_CTRL ((MSS_IRQ_CTRL_TypeDef *) H2F_IRQ_CTRL_BASE) -#define UART1 ((UART_TypeDef *) UART1_BASE) -#define UART1_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART1_BASE)) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define SPI1_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI1_BASE)) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C1_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C1_BASE)) -#define GPIO ((GPIO_TypeDef *) GPIO_BASE) -#define GPIO_BITBAND ((GPIO_BitBand_TypeDef *) BITBAND_ADDRESS(GPIO_BASE)) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define FROM ((void *) FROM_BASE) -#define IAP ((IAP_TypeDef *) IAP_BASE) -#define ACE ((ACE_TypeDef *) ACE_BASE) -#define FPGA_FABRIC_RAM ((void *) FPGA_FABRIC_RAM_BASE) -#define FPGA_FABRIC ((void *) FPGA_FABRIC_BASE) -#define ENVM ((void *) ENVM_BASE) -#define ENVM_REGS ((NVM_TypeDef *) ENVM_REGS_BASE) -#define SYSREG ((SYSREG_TypeDef *) SYSREG_BASE) - -#ifdef __cplusplus -} -#endif - -#endif /* __A2FXXXM3_H__ */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c deleted file mode 100644 index 0e8c3c43c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c +++ /dev/null @@ -1,784 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.c - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#include - -/* define compiler specific symbols */ -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -__ASM uint32_t __get_PSP(void) -{ - mrs r0, psp - bx lr -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -__ASM void __set_PSP(uint32_t topOfProcStack) -{ - msr psp, r0 - bx lr -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -__ASM uint32_t __get_MSP(void) -{ - mrs r0, msp - bx lr -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -__ASM void __set_MSP(uint32_t mainStackPointer) -{ - msr msp, r0 - bx lr -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -__ASM uint32_t __REV16(uint16_t value) -{ - rev16 r0, r0 - bx lr -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -__ASM int32_t __REVSH(int16_t value) -{ - revsh r0, r0 - bx lr -} - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -__ASM void __CLREX(void) -{ - clrex -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -__ASM uint32_t __get_BASEPRI(void) -{ - mrs r0, basepri - bx lr -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -__ASM void __set_BASEPRI(uint32_t basePri) -{ - msr basepri, r0 - bx lr -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -__ASM uint32_t __get_PRIMASK(void) -{ - mrs r0, primask - bx lr -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -__ASM void __set_PRIMASK(uint32_t priMask) -{ - msr primask, r0 - bx lr -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -__ASM uint32_t __get_FAULTMASK(void) -{ - mrs r0, faultmask - bx lr -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -__ASM void __set_FAULTMASK(uint32_t faultMask) -{ - msr faultmask, r0 - bx lr -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -__ASM uint32_t __get_CONTROL(void) -{ - mrs r0, control - bx lr -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -__ASM void __set_CONTROL(uint32_t control) -{ - msr control, r0 - bx lr -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ -#pragma diag_suppress=Pe940 - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) -{ - __ASM("mrs r0, psp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM("msr psp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) -{ - __ASM("mrs r0, msp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM("msr msp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - __ASM("rev16 r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - __ASM("rbit r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -uint8_t __LDREXB(uint8_t *addr) -{ - __ASM("ldrexb r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - __ASM("ldrexh r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - __ASM("ldrex r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - __ASM("strexb r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - __ASM("strexh r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - __ASM("strex r0, r0, [r1]"); - __ASM("bx lr"); -} - -#pragma diag_default=Pe940 - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) __attribute__( ( naked ) ); -uint32_t __get_PSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, psp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0\n\t" - "BX lr \n\t" : : "r" (topOfProcStack) ); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) __attribute__( ( naked ) ); -uint32_t __get_MSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, msp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0\n\t" - "BX lr \n\t" : : "r" (topOfMainStack) ); -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -uint32_t __get_BASEPRI(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) ); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -uint32_t __get_PRIMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -uint32_t __get_FAULTMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); -} - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -uint32_t __get_CONTROL(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) ); -} - - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -uint32_t __REV(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -int32_t __REVSH(int16_t value) -{ - uint32_t result=0; - - __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -uint8_t __LDREXB(uint8_t *addr) -{ - uint8_t result=0; - - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - uint16_t result=0; - - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); - return(result); -} - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h deleted file mode 100644 index e0565d7d4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h +++ /dev/null @@ -1,1818 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration - * - * List of Lint messages which will be suppressed and not shown: - * - Error 10: \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' - * . - * - Error 530: \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized - * . - * - Error 550: \n - * __regBasePri = (basePri & 0x1ff); \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed - * . - * - Error 754: \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced - * . - * - Error 750: \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced - * . - * - Error 528: \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced - * . - * - Error 751: \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced - * . - * Note: To re-enable a Message, insert a space before 'lint' * - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions - This file defines all structures and symbols for CMSIS core: - - CMSIS version number - - Cortex-M core registers and bitfields - - Cortex-M core peripheral base address - @{ - */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus - #define __I volatile /*!< defines 'read only' permissions */ -#else - #define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ -/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register - @{ -*/ - - -/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC - memory mapped structure for Nested Vectored Interrupt Controller (NVIC) - @{ - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ -} NVIC_Type; -/*@}*/ /* end of group CMSIS_CM3_NVIC */ - - -/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB - memory mapped structure for System Control Block (SCB) - @{ - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ -/*@}*/ /* end of group CMSIS_CM3_SCB */ - - -/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick - memory mapped structure for SysTick - @{ - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ -/*@}*/ /* end of group CMSIS_CM3_SysTick */ - - -/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM - memory mapped structure for Instrumentation Trace Macrocell (ITM) - @{ - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ - __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ - __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ -/*@}*/ /* end of group CMSIS_CM3_ITM */ - - -/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type - memory mapped structure for Interrupt Type - @{ - */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - -/* Interrupt Controller Type Register Definitions */ -#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ -#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ -#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ - -#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ -#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ - -#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ -#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ -/*@}*/ /* end of group CMSIS_CM3_InterruptType */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU - memory mapped structure for Memory Protection Unit (MPU) - @{ - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ -#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ -#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ -#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ -#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ -#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ -#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@}*/ /* end of group CMSIS_CM3_MPU */ -#endif - - -/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug - memory mapped structure for Core Debug Register - @{ - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ -/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_register */ - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq(void) { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq(void) { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq(void) { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq(void) { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP(void) { __ASM volatile ("nop"); } -static __INLINE void __WFI(void) { __ASM volatile ("wfi"); } -static __INLINE void __WFE(void) { __ASM volatile ("wfe"); } -static __INLINE void __SEV(void) { __ASM volatile ("sev"); } -static __INLINE void __ISB(void) { __ASM volatile ("isb"); } -static __INLINE void __DSB(void) { __ASM volatile ("dsb"); } -static __INLINE void __DMB(void) { __ASM volatile ("dmb"); } -static __INLINE void __CLREX(void) { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - -/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface - Core Function Interface containing: - - Core NVIC Functions - - Core SysTick Functions - - Core Reset Functions -*/ -/*@{*/ - -/* ########################## NVIC functions #################################### */ - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param PriorityGroup is priority grouping field - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - (0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @return priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn The positive number of the external interrupt to enable - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn The positive number of the external interrupt to disable - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn The number of the device specifc interrupt - * @return 1 = interrupt pending, 0 = interrupt not pending - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for set pending - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for clear pending - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn The number of the interrupt for read active bit - * @return 1 = interrupt active, 0 = interrupt not active - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn The number of the interrupt for set priority - * @param priority The priority to set - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn The number of the interrupt for get priority - * @return The priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param PriorityGroup The used priority group - * @param PreemptPriority The preemptive priority value (starting from 0) - * @param SubPriority The sub priority value (starting from 0) - * @return The encoded priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param Priority The priority for the interrupt - * @param PriorityGroup The used priority group - * @param pPreemptPriority The preemptive priority value (starting from 0) - * @param pSubPriority The sub priority value (starting from 0) - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param ticks number of ticks between two interrupts - * @return 1 = failed, 0 = successful - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - - - - -/* ################################## Reset function ############################################ */ - -/** - * @brief Initiate a system reset request. - * - * Initiate a system reset request to reset the MCU - */ -static __INLINE void NVIC_SystemReset(void) -{ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ - - - -/* ##################################### Debug In/Output function ########################################### */ - -/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface - Core Debug Interface containing: - - Core Debug Receive / Transmit Functions - - Core Debug Defines - - Core Debug Variables -*/ -/*@{*/ - -extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ - - -/** - * @brief Outputs a character via the ITM channel 0 - * - * @param ch character to output - * @return character to output - * - * The function outputs a character via the ITM channel 0. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ - (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** - * @brief Inputs a character via variable ITM_RxBuffer - * - * @return received character, -1 = no character received - * - * The function inputs a character via variable ITM_RxBuffer. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE int ITM_ReceiveChar (void) { - int ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** - * @brief Check if a character via variable ITM_RxBuffer is available - * - * @return 1 = character available, 0 = no character available - * - * The function checks variable ITM_RxBuffer whether a character is available or not. - * The function returns '1' if a character is available and '0' if no character is available. - */ -static __INLINE int ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ - - -#ifdef __cplusplus -} -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_definitions */ - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h deleted file mode 100644 index 4725d2132..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Assertion implementation. - * - * This file provides the implementation of the ASSERT macro. This file can be - * modified to cater for project specific requirements regarding the way - * assertions are handled. - * - * SVN $Revision: 1676 $ - * SVN $Date: 2009-12-02 16:47:03 +0000 (Wed, 02 Dec 2009) $ - */ -#ifndef __MSS_ASSERT_H_ -#define __MSS_ASSERT_H_ - -#include - -#if defined ( __GNUC__ ) - -#if defined(NDEBUG) - -#define ASSERT(CHECK) - -#else /* NDEBUG */ -/* - * SoftConsole assertion handling - */ -#define ASSERT(CHECK) \ - do { \ - if (!(CHECK)) \ - { \ - __asm volatile ("BKPT\n\t"); \ - } \ - } while (0); - -#endif /* NDEBUG */ - -#else -/* - * IAR Embedded Workbench or Keil assertion handling. - * Call C library assert function which should result in error message - * displayed in debugger. - */ -#define ASSERT(X) assert(X) - -#endif - -#endif /* __MSS_ASSERT_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld deleted file mode 100644 index 1d33683f3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script for creating a SoftConsole downloadable - * debug image executing in SmartFusion internal eNVM. - * - * SVN $Revision: 1677 $ - * SVN $Date: 2009-12-02 16:57:29 +0000 (Wed, 02 Dec 2009) $ - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* - * WARNING: The words "SOFTCONSOLE", "FLASH", and "USE", the colon ":", and - * the name of the type of flash memory are all in a specific order. - * Please do not modify that comment line, in order to ensure - * debugging of your application will use the flash memory correctly. - */ - - /* SOFTCONSOLE FLASH USE: actel-smartfusion-envm */ - rom (rx) : ORIGIN = 0x60000000, LENGTH = 256k - - /* SmartFusion internal eNVM mirrored to 0x00000000 */ - romMirror (rx) : ORIGIN = 0x00000000, LENGTH = 256k - - /* SmartFusion internal eSRAM */ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 1); /* Indicate to startup code that NVM is mirrored to VMA address and no text copy is required. */ - -SECTIONS -{ - .init : - { - *(.isr_vector) - *sys_boot.o(.text) - . = ALIGN(0x4); - } >romMirror AT>rom - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >romMirror AT>rom - - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >ram AT>rom - __exidx_end = .; - _etext = .; - - .data : - { - __data_load = LOADADDR(.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >ram AT>rom - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >ram AT>rom - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld deleted file mode 100644 index 85e416044..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld +++ /dev/null @@ -1,177 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script for creating a SoftConsole downloadable - * debug image executing in SmartFusion internal eSRAM. - * - * SVN $Revision: 1677 $ - * SVN $Date: 2009-12-02 16:57:29 +0000 (Wed, 02 Dec 2009) $ - */ - - OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eSRAM */ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - *(.isr_vector) - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >ram - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >ram - __exidx_end = .; - _etext = .; - PROVIDE(__text_end = .); - - .data : - { - __data_load = LOADADDR (.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >ram - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >ram - - /* - * The .stack section is only specified here in order for the linker to generate - * an error if the ram is full. - */ - .stack : - { - . = ALIGN(4); - . += PROCESS_STACK_SIZE; - . = ALIGN(4); - . += MAIN_STACK_SIZE; - . = ALIGN(4); - } >ram - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) *(.isr_vector) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld deleted file mode 100644 index b2d614d31..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld +++ /dev/null @@ -1,185 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script for creating a SoftConsole downloadable - * debug image executing in SmartFusion development board external RAM. - * - * SVN $Revision: 2014 $ - * SVN $Date: 2010-01-20 10:37:26 +0000 (Wed, 20 Jan 2010) $ - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eSRAM */ - esram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k - - /* SmartFusion development board external RAM */ - external_ram (rwx) : ORIGIN = 0x70000000, LENGTH = 2M -} - -RAM_START_ADDRESS = 0x70000000; /* Must be the same value MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .init : - { - *(.isr_vector) - . = ALIGN(0x4); - } >esram - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >external_ram - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >external_ram - __exidx_end = .; - _etext = .; - PROVIDE(__text_end = .); - - .data : - { - __data_load = LOADADDR (.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >external_ram - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >external_ram - - /* - * The .stack section is only specified here in order for the linker to generate - * an error if the esram is full. - */ - .stack : - { - . = ALIGN(4); - . += PROCESS_STACK_SIZE; - . = ALIGN(4); - . += MAIN_STACK_SIZE; - . = ALIGN(4); - } >external_ram - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) *(.isr_vector) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c deleted file mode 100644 index 3b42429f1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c +++ /dev/null @@ -1,247 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Stubs for Newlib system calls. - * - * SVN $Revision: 2020 $ - * SVN $Date: 2010-01-20 14:51:50 +0000 (Wed, 20 Jan 2010) $ - */ -#include -#include -#include -#include -#include -#undef errno -extern int errno; - -/*============================================================================== - * Redirection of standard output to a SmartFusion MSS UART. - *------------------------------------------------------------------------------ - * A default implementation for the redirection of the output of printf() to a - * UART is provided as the bottom of this file. This redirection is enabled by - * adding the symbol/define ACTEL_STDIO_THRU_UART to your project and - * specifying the baud rate using the ACTEL_STDIO_BAUD_RATE define. - */ -#ifdef ACTEL_STDIO_THRU_UART -#include "../../drivers/mss_uart/mss_uart.h" - -#ifndef ACTEL_STDIO_BAUD_RATE -#define ACTEL_STDIO_BAUD_RATE MSS_UART_57600_BAUD -#endif - -/*------------------------------------------------------------------------------ - * Global flag used to indicate if the UART driver needs to be initialized. - */ -static int g_stdio_uart_init_done = 0; - -#endif /* ACTEL_STDIO_THRU_UART */ - -/*============================================================================== - * Environment variables. - * A pointer to a list of environment variables and their values. For a minimal - * environment, this empty list is adequate: - */ -char *__env[1] = { 0 }; -char **environ = __env; - -/*============================================================================== - * Close a file. - */ -int _close(int file) -{ - return -1; -} - -/*============================================================================== - * Transfer control to a new process. - */ -int _execve(char *name, char **argv, char **env) -{ - errno = ENOMEM; - return -1; -} - -/*============================================================================== - * Exit a program without cleaning up files. - */ -void _exit( int code ) -{ - /* Should we force a system reset? */ - while( 1 ) - { - ; - } -} - -/*============================================================================== - * Create a new process. - */ -int _fork(void) -{ - errno = EAGAIN; - return -1; -} - -/*============================================================================== - * Status of an open file. - */ -int _fstat(int file, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -/*============================================================================== - * Process-ID - */ -int _getpid(void) -{ - return 1; -} - -/*============================================================================== - * Query whether output stream is a terminal. - */ -int _isatty(int file) -{ - return 1; -} - -/*============================================================================== - * Send a signal. - */ -int _kill(int pid, int sig) -{ - errno = EINVAL; - return -1; -} - -/*============================================================================== - * Establish a new name for an existing file. - */ -int _link(char *old, char *new) -{ - errno = EMLINK; - return -1; -} - -/*============================================================================== - * Set position in a file. - */ -int _lseek(int file, int ptr, int dir) -{ - return 0; -} - -/*============================================================================== - * Open a file. - */ -int _open(const char *name, int flags, int mode) -{ - return -1; -} - -/*============================================================================== - * Read from a file. - */ -int _read(int file, char *ptr, int len) -{ - return 0; -} - -/*============================================================================== - * Increase program data space. As malloc and related functions depend on this, - * it is useful to have a working implementation. The following suffices for a - * standalone system; it exploits the symbol _end automatically defined by the - * GNU linker. - */ -caddr_t _sbrk(int incr) -{ - extern char _end; /* Defined by the linker */ - static char *heap_end; - char *prev_heap_end; - char * stack_ptr; - - if (heap_end == 0) - { - heap_end = &_end; - } - - prev_heap_end = heap_end; - asm volatile ("MRS %0, msp" : "=r" (stack_ptr) ); - if (heap_end + incr > stack_ptr) - { - write (1, "Heap and stack collision\n", 25); - abort (); - } - - heap_end += incr; - return (caddr_t) prev_heap_end; -} - -/*============================================================================== - * Status of a file (by name). - */ -int _stat(char *file, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -/*============================================================================== - * Timing information for current process. - */ -int _times(struct tms *buf) -{ - return -1; -} - -/*============================================================================== - * Remove a file's directory entry. - */ -int _unlink(char *name) -{ - errno = ENOENT; - return -1; -} - -/*============================================================================== - * Wait for a child process. - */ -int _wait(int *status) -{ - errno = ECHILD; - return -1; -} - -/*============================================================================== - * Write to a file. libc subroutines will use this system routine for output to - * all files, including stdout—so if you need to generate any output, for - * example to a serial port for debugging, you should make your minimal write - * capable of doing this. - */ -int _write_r( void * reent, int file, char * ptr, int len ) -{ -#ifdef ACTEL_STDIO_THRU_UART - /*-------------------------------------------------------------------------- - * Initialize the UART driver if it is the first time this function is - * called. - */ - if ( !g_stdio_uart_init_done ) - { - MSS_UART_init( &g_mss_uart0, ACTEL_STDIO_BAUD_RATE, (MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY)); - g_stdio_uart_init_done = 1; - } - - /*-------------------------------------------------------------------------- - * Output text to the UART. - */ - MSS_UART_polled_tx( &g_mss_uart0, (uint8_t *)ptr, len ); - - return len; -#else /* ACTEL_STDIO_THRU_UART */ - return 0; -#endif /* ACTEL_STDIO_THRU_UART */ -} - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld deleted file mode 100644 index cfaddb615..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script creating an executable image for use in - * the Libero flow for executing code in place in internal eNVM. - * - * SVN $Revision: 1766 $ - * SVN $Date: 2009-12-11 16:33:35 +0000 (Fri, 11 Dec 2009) $ - */ -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eNVM */ - rom (rx) : ORIGIN = 0, LENGTH = 256k - - /* SmartFusion internal eSRAM */ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value as MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value as MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .reset : - { - *(.isr_vector) - *sys_boot.o(.text) - . = ALIGN(0x4); - } >rom - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >rom - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >rom - __exidx_end = .; - _etext = .; - - .data : - { - __data_load = LOADADDR(.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >ram AT>rom - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >ram AT>rom - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld deleted file mode 100644 index 21e613c92..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld +++ /dev/null @@ -1,176 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script creating an executable image for use in - * the Libero flow for relocating executable from internal eNVM to external RAM - * before starting execution. - * - * SVN $Revision: 1766 $ - * SVN $Date: 2009-12-11 16:33:35 +0000 (Fri, 11 Dec 2009) $ - */ -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eNVM */ - rom (rx) : ORIGIN = 0, LENGTH = 256k - - /* SmartFusion internal eSRAM */ - esram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k - - /* SmartFusion development board external RAM */ - external_ram (rwx) : ORIGIN = 0x70000000, LENGTH = 2M -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value as MEMORY region esram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value as MEMORY region esram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .reset : - { - *(.isr_vector) -/* *sys_boot.o(.text)*/ - . = ALIGN(0x4); - } >rom - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >external_ram AT>rom - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >external_ram AT>rom - __exidx_end = .; - _etext = .; - - .data : - { - __data_load = LOADADDR(.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >esram AT>rom - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >esram AT>rom - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s deleted file mode 100644 index e9e87adca..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s +++ /dev/null @@ -1,1504 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FXXXM3 vector table and startup code. - * - * SVN $Revision: 2068 $ - * SVN $Date: 2010-01-27 17:27:41 +0000 (Wed, 27 Jan 2010) $ - */ - - .syntax unified - .cpu cortex-m3 - .thumb - - -/*============================================================================== - * Vector table - */ - .global g_pfnVectors - .section .isr_vector,"a",%progbits - .type g_pfnVectors, %object - .size g_pfnVectors, .-g_pfnVectors - -g_pfnVectors: - .word _estack - .word Reset_Handler - .word NMI_Handler - .word HardFault_Handler - .word MemManage_Handler - .word BusFault_Handler - .word UsageFault_Handler - .word 0 - .word 0 - .word 0 - .word 0 - .word SVC_Handler - .word DebugMon_Handler - .word 0 - .word PendSV_Handler - .word SysTick_Handler - .word WdogWakeup_IRQHandler - .word BrownOut_1_5V_IRQHandler - .word BrownOut_3_3V_IRQHandler - .word RTC_Match_IRQHandler - .word RTCIF_Pub_IRQHandler - .word EthernetMAC_IRQHandler - .word IAP_IRQHandler - .word ENVM0_IRQHandler - .word ENVM1_IRQHandler - .word DMA_IRQHandler - .word UART0_IRQHandler - .word UART1_IRQHandler - .word SPI0_IRQHandler - .word SPI1_IRQHandler - .word I2C0_IRQHandler - .word I2C0_SMBAlert_IRQHandler - .word I2C0_SMBus_IRQHandler - .word I2C1_IRQHandler - .word I2C1_SMBAlert_IRQHandler - .word I2C1_SMBus_IRQHandler - .word Timer1_IRQHandler - .word Timer2_IRQHandler - .word PLL_Lock_IRQHandler - .word PLL_LockLost_IRQHandler - .word CommError_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word Fabric_IRQHandler - .word GPIO0_IRQHandler - .word GPIO1_IRQHandler - .word GPIO2_IRQHandler - .word GPIO3_IRQHandler - .word GPIO4_IRQHandler - .word GPIO5_IRQHandler - .word GPIO6_IRQHandler - .word GPIO7_IRQHandler - .word GPIO8_IRQHandler - .word GPIO9_IRQHandler - .word GPIO10_IRQHandler - .word GPIO11_IRQHandler - .word GPIO12_IRQHandler - .word GPIO13_IRQHandler - .word GPIO14_IRQHandler - .word GPIO15_IRQHandler - .word GPIO16_IRQHandler - .word GPIO17_IRQHandler - .word GPIO18_IRQHandler - .word GPIO19_IRQHandler - .word GPIO20_IRQHandler - .word GPIO21_IRQHandler - .word GPIO22_IRQHandler - .word GPIO23_IRQHandler - .word GPIO24_IRQHandler - .word GPIO25_IRQHandler - .word GPIO26_IRQHandler - .word GPIO27_IRQHandler - .word GPIO28_IRQHandler - .word GPIO29_IRQHandler - .word GPIO30_IRQHandler - .word GPIO31_IRQHandler - .word ACE_PC0_Flag0_IRQHandler - .word ACE_PC0_Flag1_IRQHandler - .word ACE_PC0_Flag2_IRQHandler - .word ACE_PC0_Flag3_IRQHandler - .word ACE_PC1_Flag0_IRQHandler - .word ACE_PC1_Flag1_IRQHandler - .word ACE_PC1_Flag2_IRQHandler - .word ACE_PC1_Flag3_IRQHandler - .word ACE_PC2_Flag0_IRQHandler - .word ACE_PC2_Flag1_IRQHandler - .word ACE_PC2_Flag2_IRQHandler - .word ACE_PC2_Flag3_IRQHandler - .word ACE_ADC0_DataValid_IRQHandler - .word ACE_ADC1_DataValid_IRQHandler - .word ACE_ADC2_DataValid_IRQHandler - .word ACE_ADC0_CalDone_IRQHandler - .word ACE_ADC1_CalDone_IRQHandler - .word ACE_ADC2_CalDone_IRQHandler - .word ACE_ADC0_CalStart_IRQHandler - .word ACE_ADC1_CalStart_IRQHandler - .word ACE_ADC2_CalStart_IRQHandler - .word ACE_Comp0_Fall_IRQHandler - .word ACE_Comp1_Fall_IRQHandler - .word ACE_Comp2_Fall_IRQHandler - .word ACE_Comp3_Fall_IRQHandler - .word ACE_Comp4_Fall_IRQHandler - .word ACE_Comp5_Fall_IRQHandler - .word ACE_Comp6_Fall_IRQHandler - .word ACE_Comp7_Fall_IRQHandler - .word ACE_Comp8_Fall_IRQHandler - .word ACE_Comp9_Fall_IRQHandler - .word ACE_Comp10_Fall_IRQHandler - .word ACE_Comp11_Fall_IRQHandler - .word ACE_Comp0_Rise_IRQHandler - .word ACE_Comp1_Rise_IRQHandler - .word ACE_Comp2_Rise_IRQHandler - .word ACE_Comp3_Rise_IRQHandler - .word ACE_Comp4_Rise_IRQHandler - .word ACE_Comp5_Rise_IRQHandler - .word ACE_Comp6_Rise_IRQHandler - .word ACE_Comp7_Rise_IRQHandler - .word ACE_Comp8_Rise_IRQHandler - .word ACE_Comp9_Rise_IRQHandler - .word ACE_Comp10_Rise_IRQHandler - .word ACE_Comp11_Rise_IRQHandler - .word ACE_ADC0_FifoFull_IRQHandler - .word ACE_ADC0_FifoAFull_IRQHandler - .word ACE_ADC0_FifoEmpty_IRQHandler - .word ACE_ADC1_FifoFull_IRQHandler - .word ACE_ADC1_FifoAFull_IRQHandler - .word ACE_ADC1_FifoEmpty_IRQHandler - .word ACE_ADC2_FifoFull_IRQHandler - .word ACE_ADC2_FifoAFull_IRQHandler - .word ACE_ADC2_FifoEmpty_IRQHandler - .word ACE_PPE_Flag0_IRQHandler - .word ACE_PPE_Flag1_IRQHandler - .word ACE_PPE_Flag2_IRQHandler - .word ACE_PPE_Flag3_IRQHandler - .word ACE_PPE_Flag4_IRQHandler - .word ACE_PPE_Flag5_IRQHandler - .word ACE_PPE_Flag6_IRQHandler - .word ACE_PPE_Flag7_IRQHandler - .word ACE_PPE_Flag8_IRQHandler - .word ACE_PPE_Flag9_IRQHandler - .word ACE_PPE_Flag10_IRQHandler - .word ACE_PPE_Flag11_IRQHandler - .word ACE_PPE_Flag12_IRQHandler - .word ACE_PPE_Flag13_IRQHandler - .word ACE_PPE_Flag14_IRQHandler - .word ACE_PPE_Flag15_IRQHandler - .word ACE_PPE_Flag16_IRQHandler - .word ACE_PPE_Flag17_IRQHandler - .word ACE_PPE_Flag18_IRQHandler - .word ACE_PPE_Flag19_IRQHandler - .word ACE_PPE_Flag20_IRQHandler - .word ACE_PPE_Flag21_IRQHandler - .word ACE_PPE_Flag22_IRQHandler - .word ACE_PPE_Flag23_IRQHandler - .word ACE_PPE_Flag24_IRQHandler - .word ACE_PPE_Flag25_IRQHandler - .word ACE_PPE_Flag26_IRQHandler - .word ACE_PPE_Flag27_IRQHandler - .word ACE_PPE_Flag28_IRQHandler - .word ACE_PPE_Flag29_IRQHandler - .word ACE_PPE_Flag30_IRQHandler - .word ACE_PPE_Flag31_IRQHandler - - -/*============================================================================== - * Reset_Handler - */ - .global Reset_Handler - .type Reset_Handler, %function -Reset_Handler: -_start: -/*------------------------------------------------------------------------------ - * Call CMSIS system init function. - * This is not actually required for SmartFusioon as all low initialisations are - * done as part of the system boot. - */ -; ldr r0, =SystemInit -; blx r0 - -/*------------------------------------------------------------------------------ - * Check if the executable is built for NVM LMA mirrored to VMA address. - * This is done for debugging executables running out of eNVM with SoftConsole. - * The .text section should not be copied in this case since both the LMA and - * VMA point at the eNVM despite the LMA and VMa having different values. - */ - ldr r0, =__mirrored_nvm - cmp r0, #0 - bne copy_data - -/*------------------------------------------------------------------------------ - * Copy code section. - */ - ldr r0, =__text_load - ldr r1, =__text_start - ldr r2, =_etext - cmp r0, r1 - beq copy_data -copy_code_loop: - cmp r1, r2 - itt ne - ldrne r3, [r0], #4 - strne r3, [r1], #4 - bne copy_code_loop - -/*------------------------------------------------------------------------------ - * Copy data section. - */ -copy_data: - ldr r0, =__data_load - ldr r1, =__data_start - ldr r2, =_edata - cmp r0, r1 - beq clear_bss -copy_data_loop: - cmp r1, r2 - itt ne - ldrne r3, [r0], #4 - strne r3, [r1], #4 - bne copy_data_loop - -/*------------------------------------------------------------------------------ - * Clear .bss - */ -clear_bss: - ldr r0, =0 - ldr r1, =__bss_start__ - ldr r2, =__bss_end__ -clear_bss_loop: - cmp r1, r2 - it ne - strne r0, [r1], #4 - bne clear_bss_loop - -/*------------------------------------------------------------------------------ - * Call global constructors - */ -call_glob_ctor: - ldr r0, =__libc_init_array - add lr, pc, #3 - bx r0 - -/*------------------------------------------------------------------------------ - * branch to main. - */ -branch_to_main: - mov r0, #0 /* no arguments */ - mov r1, #0 /* no argv either */ - ldr pc, =main - -ExitLoop: - B ExitLoop - -/*============================================================================== - * NMI_Handler - */ - .weak NMI_Handler - .type NMI_Handler, %function -NMI_Handler: - B . - -/*============================================================================== - * HardFault_Handler - */ - .weak HardFault_Handler - .type HardFault_Handler, %function -HardFault_Handler: - B . - -/*============================================================================== - * MemManage_Handler - */ - .weak MemManage_Handler - .type MemManage_Handler, %function -MemManage_Handler: - B . - -/*============================================================================== - * BusFault_Handler - */ - .weak BusFault_Handler - .type BusFault_Handler, %function -BusFault_Handler: - B . - -/*============================================================================== - * UsageFault_Handler - */ - .weak UsageFault_Handler - .type UsageFault_Handler, %function -UsageFault_Handler: - B . - -/*============================================================================== - * SVC_Handler - */ - .weak SVC_Handler - .type SVC_Handler, %function -SVC_Handler: - B . - -/*============================================================================== - * DebugMon_Handler - */ - .weak DebugMon_Handler - .type DebugMon_Handler, %function -DebugMon_Handler: - B . - -/*============================================================================== - * PendSV_Handler - */ - .weak PendSV_Handler - .type PendSV_Handler, %function -PendSV_Handler: - B . - -/*============================================================================== - * SysTick_Handler - */ - .weak SysTick_Handler - .type SysTick_Handler, %function -SysTick_Handler: - B . - -/*============================================================================== - * WdogWakeup_IRQHandler - */ - .weak WdogWakeup_IRQHandler - .type WdogWakeup_IRQHandler, %function -WdogWakeup_IRQHandler: - B . - -/*============================================================================== - * BrownOut_1_5V_IRQHandler - */ - .weak BrownOut_1_5V_IRQHandler - .type BrownOut_1_5V_IRQHandler, %function -BrownOut_1_5V_IRQHandler: - B . - -/*============================================================================== - * BrownOut_3_3V_IRQHandler - */ - .weak BrownOut_3_3V_IRQHandler - .type BrownOut_3_3V_IRQHandler, %function -BrownOut_3_3V_IRQHandler: - B . - -/*============================================================================== - * RTC_Match_IRQHandler - */ - .weak RTC_Match_IRQHandler - .type RTC_Match_IRQHandler, %function -RTC_Match_IRQHandler: - B . - -/*============================================================================== - * RTCIF_Pub_IRQHandler - */ - .weak RTCIF_Pub_IRQHandler - .type RTCIF_Pub_IRQHandler, %function -RTCIF_Pub_IRQHandler: - B . - -/*============================================================================== - * EthernetMAC_IRQHandler - */ - .weak EthernetMAC_IRQHandler - .type EthernetMAC_IRQHandler, %function -EthernetMAC_IRQHandler: - B . - -/*============================================================================== - * IAP_IRQHandler - */ - .weak IAP_IRQHandler - .type IAP_IRQHandler, %function -IAP_IRQHandler: - B . - -/*============================================================================== - * ENVM0_IRQHandler - */ - .weak ENVM0_IRQHandler - .type ENVM0_IRQHandler, %function -ENVM0_IRQHandler: - B . - -/*============================================================================== - * ENVM1_IRQHandler - */ - .weak ENVM1_IRQHandler - .type ENVM1_IRQHandler, %function -ENVM1_IRQHandler: - B . - -/*============================================================================== - * DMA_IRQHandler - */ - .weak DMA_IRQHandler - .type DMA_IRQHandler, %function -DMA_IRQHandler: - B . - -/*============================================================================== - * UART0_IRQHandler - */ - .weak UART0_IRQHandler - .type UART0_IRQHandler, %function -UART0_IRQHandler: - B . - -/*============================================================================== - * UART1_IRQHandler - */ - .weak UART1_IRQHandler - .type UART1_IRQHandler, %function -UART1_IRQHandler: - B . - -/*============================================================================== - * SPI0_IRQHandler - */ - .weak SPI0_IRQHandler - .type SPI0_IRQHandler, %function -SPI0_IRQHandler: - B . - -/*============================================================================== - * SPI1_IRQHandler - */ - .weak SPI1_IRQHandler - .type SPI1_IRQHandler, %function -SPI1_IRQHandler: - B . - -/*============================================================================== - * I2C0_IRQHandler - */ - .weak I2C0_IRQHandler - .type I2C0_IRQHandler, %function -I2C0_IRQHandler: - B . - -/*============================================================================== - * I2C0_SMBAlert_IRQHandler - */ - .weak I2C0_SMBAlert_IRQHandler - .type I2C0_SMBAlert_IRQHandler, %function -I2C0_SMBAlert_IRQHandler: - B . - -/*============================================================================== - * I2C0_SMBus_IRQHandler - */ - .weak I2C0_SMBus_IRQHandler - .type I2C0_SMBus_IRQHandler, %function -I2C0_SMBus_IRQHandler: - B . - -/*============================================================================== - * I2C1_IRQHandler - */ - .weak I2C1_IRQHandler - .type I2C1_IRQHandler, %function -I2C1_IRQHandler: - B . - -/*============================================================================== - * I2C1_SMBAlert_IRQHandler - */ - .weak I2C1_SMBAlert_IRQHandler - .type I2C1_SMBAlert_IRQHandler, %function -I2C1_SMBAlert_IRQHandler: - B . - -/*============================================================================== - * I2C1_SMBus_IRQHandler - */ - .weak I2C1_SMBus_IRQHandler - .type I2C1_SMBus_IRQHandler, %function -I2C1_SMBus_IRQHandler: - B . - -/*============================================================================== - * Timer1_IRQHandler - */ - .weak Timer1_IRQHandler - .type Timer1_IRQHandler, %function -Timer1_IRQHandler: - B . - -/*============================================================================== - * Timer2_IRQHandler - */ - .weak Timer2_IRQHandler - .type Timer2_IRQHandler, %function -Timer2_IRQHandler: - B . - -/*============================================================================== - * PLL_Lock_IRQHandler - */ - .weak PLL_Lock_IRQHandler - .type PLL_Lock_IRQHandler, %function -PLL_Lock_IRQHandler: - B . - -/*============================================================================== - * PLL_LockLost_IRQHandler - */ - .weak PLL_LockLost_IRQHandler - .type PLL_LockLost_IRQHandler, %function -PLL_LockLost_IRQHandler: - B . - -/*============================================================================== - * CommError_IRQHandler - */ - .weak CommError_IRQHandler - .type CommError_IRQHandler, %function -CommError_IRQHandler: - B . - -/*============================================================================== - * Fabric_IRQHandler - */ - .weak Fabric_IRQHandler - .type Fabric_IRQHandler, %function -Fabric_IRQHandler: - B . - -/*============================================================================== - * GPIO0_IRQHandler - */ - .weak GPIO0_IRQHandler - .type GPIO0_IRQHandler, %function -GPIO0_IRQHandler: - B . - -/*============================================================================== - * GPIO1_IRQHandler - */ - .weak GPIO1_IRQHandler - .type GPIO1_IRQHandler, %function -GPIO1_IRQHandler: - B . - -/*============================================================================== - * GPIO2_IRQHandler - */ - .weak GPIO2_IRQHandler - .type GPIO2_IRQHandler, %function -GPIO2_IRQHandler: - B . - -/*============================================================================== - * GPIO3_IRQHandler - */ - .weak GPIO3_IRQHandler - .type GPIO3_IRQHandler, %function -GPIO3_IRQHandler: - B . - -/*============================================================================== - * GPIO4_IRQHandler - */ - .weak GPIO4_IRQHandler - .type GPIO4_IRQHandler, %function -GPIO4_IRQHandler: - B . - -/*============================================================================== - * GPIO5_IRQHandler - */ - .weak GPIO5_IRQHandler - .type GPIO5_IRQHandler, %function -GPIO5_IRQHandler: - B . - -/*============================================================================== - * GPIO6_IRQHandler - */ - .weak GPIO6_IRQHandler - .type GPIO6_IRQHandler, %function -GPIO6_IRQHandler: - B . - -/*============================================================================== - * GPIO7_IRQHandler - */ - .weak GPIO7_IRQHandler - .type GPIO7_IRQHandler, %function -GPIO7_IRQHandler: - B . - -/*============================================================================== - * GPIO8_IRQHandler - */ - .weak GPIO8_IRQHandler - .type GPIO8_IRQHandler, %function -GPIO8_IRQHandler: - B . - -/*============================================================================== - * GPIO9_IRQHandler - */ - .weak GPIO9_IRQHandler - .type GPIO9_IRQHandler, %function -GPIO9_IRQHandler: - B . - -/*============================================================================== - * GPIO10_IRQHandler - */ - .weak GPIO10_IRQHandler - .type GPIO10_IRQHandler, %function -GPIO10_IRQHandler: - B . - -/*============================================================================== - * GPIO11_IRQHandler - */ - .weak GPIO11_IRQHandler - .type GPIO11_IRQHandler, %function -GPIO11_IRQHandler: - B . - -/*============================================================================== - * GPIO12_IRQHandler - */ - .weak GPIO12_IRQHandler - .type GPIO12_IRQHandler, %function -GPIO12_IRQHandler: - B . - -/*============================================================================== - * GPIO13_IRQHandler - */ - .weak GPIO13_IRQHandler - .type GPIO13_IRQHandler, %function -GPIO13_IRQHandler: - B . - -/*============================================================================== - * GPIO14_IRQHandler - */ - .weak GPIO14_IRQHandler - .type GPIO14_IRQHandler, %function -GPIO14_IRQHandler: - B . - -/*============================================================================== - * GPIO15_IRQHandler - */ - .weak GPIO15_IRQHandler - .type GPIO15_IRQHandler, %function -GPIO15_IRQHandler: - B . - -/*============================================================================== - * GPIO16_IRQHandler - */ - .weak GPIO16_IRQHandler - .type GPIO16_IRQHandler, %function -GPIO16_IRQHandler: - B . - -/*============================================================================== - * GPIO17_IRQHandler - */ - .weak GPIO17_IRQHandler - .type GPIO17_IRQHandler, %function -GPIO17_IRQHandler: - B . - -/*============================================================================== - * GPIO18_IRQHandler - */ - .weak GPIO18_IRQHandler - .type GPIO18_IRQHandler, %function -GPIO18_IRQHandler: - B . - -/*============================================================================== - * GPIO19_IRQHandler - */ - .weak GPIO19_IRQHandler - .type GPIO19_IRQHandler, %function -GPIO19_IRQHandler: - B . - -/*============================================================================== - * GPIO20_IRQHandler - */ - .weak GPIO20_IRQHandler - .type GPIO20_IRQHandler, %function -GPIO20_IRQHandler: - B . - -/*============================================================================== - * GPIO21_IRQHandler - */ - .weak GPIO21_IRQHandler - .type GPIO21_IRQHandler, %function -GPIO21_IRQHandler: - B . - -/*============================================================================== - * GPIO22_IRQHandler - */ - .weak GPIO22_IRQHandler - .type GPIO22_IRQHandler, %function -GPIO22_IRQHandler: - B . - -/*============================================================================== - * GPIO23_IRQHandler - */ - .weak GPIO23_IRQHandler - .type GPIO23_IRQHandler, %function -GPIO23_IRQHandler: - B . - -/*============================================================================== - * GPIO24_IRQHandler - */ - .weak GPIO24_IRQHandler - .type GPIO24_IRQHandler, %function -GPIO24_IRQHandler: - B . - -/*============================================================================== - * GPIO25_IRQHandler - */ - .weak GPIO25_IRQHandler - .type GPIO25_IRQHandler, %function -GPIO25_IRQHandler: - B . - -/*============================================================================== - * GPIO26_IRQHandler - */ - .weak GPIO26_IRQHandler - .type GPIO26_IRQHandler, %function -GPIO26_IRQHandler: - B . - -/*============================================================================== - * GPIO27_IRQHandler - */ - .weak GPIO27_IRQHandler - .type GPIO27_IRQHandler, %function -GPIO27_IRQHandler: - B . - -/*============================================================================== - * GPIO28_IRQHandler - */ - .weak GPIO28_IRQHandler - .type GPIO28_IRQHandler, %function -GPIO28_IRQHandler: - B . - -/*============================================================================== - * GPIO29_IRQHandler - */ - .weak GPIO29_IRQHandler - .type GPIO29_IRQHandler, %function -GPIO29_IRQHandler: - B . - -/*============================================================================== - * GPIO30_IRQHandler - */ - .weak GPIO30_IRQHandler - .type GPIO30_IRQHandler, %function -GPIO30_IRQHandler: - B . - -/*============================================================================== - * GPIO31_IRQHandler - */ - .weak GPIO31_IRQHandler - .type GPIO31_IRQHandler, %function -GPIO31_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag0_IRQHandler - */ - .weak ACE_PC0_Flag0_IRQHandler - .type ACE_PC0_Flag0_IRQHandler, %function -ACE_PC0_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag1_IRQHandler - */ - .weak ACE_PC0_Flag1_IRQHandler - .type ACE_PC0_Flag1_IRQHandler, %function -ACE_PC0_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag2_IRQHandler - */ - .weak ACE_PC0_Flag2_IRQHandler - .type ACE_PC0_Flag2_IRQHandler, %function -ACE_PC0_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag3_IRQHandler - */ - .weak ACE_PC0_Flag3_IRQHandler - .type ACE_PC0_Flag3_IRQHandler, %function -ACE_PC0_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag0_IRQHandler - */ - .weak ACE_PC1_Flag0_IRQHandler - .type ACE_PC1_Flag0_IRQHandler, %function -ACE_PC1_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag1_IRQHandler - */ - .weak ACE_PC1_Flag1_IRQHandler - .type ACE_PC1_Flag1_IRQHandler, %function -ACE_PC1_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag2_IRQHandler - */ - .weak ACE_PC1_Flag2_IRQHandler - .type ACE_PC1_Flag2_IRQHandler, %function -ACE_PC1_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag3_IRQHandler - */ - .weak ACE_PC1_Flag3_IRQHandler - .type ACE_PC1_Flag3_IRQHandler, %function -ACE_PC1_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag0_IRQHandler - */ - .weak ACE_PC2_Flag0_IRQHandler - .type ACE_PC2_Flag0_IRQHandler, %function -ACE_PC2_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag1_IRQHandler - */ - .weak ACE_PC2_Flag1_IRQHandler - .type ACE_PC2_Flag1_IRQHandler, %function -ACE_PC2_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag2_IRQHandler - */ - .weak ACE_PC2_Flag2_IRQHandler - .type ACE_PC2_Flag2_IRQHandler, %function -ACE_PC2_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag3_IRQHandler - */ - .weak ACE_PC2_Flag3_IRQHandler - .type ACE_PC2_Flag3_IRQHandler, %function -ACE_PC2_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_DataValid_IRQHandler - */ - .weak ACE_ADC0_DataValid_IRQHandler - .type ACE_ADC0_DataValid_IRQHandler, %function -ACE_ADC0_DataValid_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_DataValid_IRQHandler - */ - .weak ACE_ADC1_DataValid_IRQHandler - .type ACE_ADC1_DataValid_IRQHandler, %function -ACE_ADC1_DataValid_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_DataValid_IRQHandler - */ - .weak ACE_ADC2_DataValid_IRQHandler - .type ACE_ADC2_DataValid_IRQHandler, %function -ACE_ADC2_DataValid_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_CalDone_IRQHandler - */ - .weak ACE_ADC0_CalDone_IRQHandler - .type ACE_ADC0_CalDone_IRQHandler, %function -ACE_ADC0_CalDone_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_CalDone_IRQHandler - */ - .weak ACE_ADC1_CalDone_IRQHandler - .type ACE_ADC1_CalDone_IRQHandler, %function -ACE_ADC1_CalDone_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_CalDone_IRQHandler - */ - .weak ACE_ADC2_CalDone_IRQHandler - .type ACE_ADC2_CalDone_IRQHandler, %function -ACE_ADC2_CalDone_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_CalStart_IRQHandler - */ - .weak ACE_ADC0_CalStart_IRQHandler - .type ACE_ADC0_CalStart_IRQHandler, %function -ACE_ADC0_CalStart_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_CalStart_IRQHandler - */ - .weak ACE_ADC1_CalStart_IRQHandler - .type ACE_ADC1_CalStart_IRQHandler, %function -ACE_ADC1_CalStart_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_CalStart_IRQHandler - */ - .weak ACE_ADC2_CalStart_IRQHandler - .type ACE_ADC2_CalStart_IRQHandler, %function -ACE_ADC2_CalStart_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp0_Fall_IRQHandler - */ - .weak ACE_Comp0_Fall_IRQHandler - .type ACE_Comp0_Fall_IRQHandler, %function -ACE_Comp0_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp1_Fall_IRQHandler - */ - .weak ACE_Comp1_Fall_IRQHandler - .type ACE_Comp1_Fall_IRQHandler, %function -ACE_Comp1_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp2_Fall_IRQHandler - */ - .weak ACE_Comp2_Fall_IRQHandler - .type ACE_Comp2_Fall_IRQHandler, %function -ACE_Comp2_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp3_Fall_IRQHandler - */ - .weak ACE_Comp3_Fall_IRQHandler - .type ACE_Comp3_Fall_IRQHandler, %function -ACE_Comp3_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp4_Fall_IRQHandler - */ - .weak ACE_Comp4_Fall_IRQHandler - .type ACE_Comp4_Fall_IRQHandler, %function -ACE_Comp4_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp5_Fall_IRQHandler - */ - .weak ACE_Comp5_Fall_IRQHandler - .type ACE_Comp5_Fall_IRQHandler, %function -ACE_Comp5_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp6_Fall_IRQHandler - */ - .weak ACE_Comp6_Fall_IRQHandler - .type ACE_Comp6_Fall_IRQHandler, %function -ACE_Comp6_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp7_Fall_IRQHandler - */ - .weak ACE_Comp7_Fall_IRQHandler - .type ACE_Comp7_Fall_IRQHandler, %function -ACE_Comp7_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp8_Fall_IRQHandler - */ - .weak ACE_Comp8_Fall_IRQHandler - .type ACE_Comp8_Fall_IRQHandler, %function -ACE_Comp8_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp9_Fall_IRQHandler - */ - .weak ACE_Comp9_Fall_IRQHandler - .type ACE_Comp9_Fall_IRQHandler, %function -ACE_Comp9_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp10_Fall_IRQHandler - */ - .weak ACE_Comp10_Fall_IRQHandler - .type ACE_Comp10_Fall_IRQHandler, %function -ACE_Comp10_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp11_Fall_IRQHandler - */ - .weak ACE_Comp11_Fall_IRQHandler - .type ACE_Comp11_Fall_IRQHandler, %function -ACE_Comp11_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp0_Rise_IRQHandler - */ - .weak ACE_Comp0_Rise_IRQHandler - .type ACE_Comp0_Rise_IRQHandler, %function -ACE_Comp0_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp1_Rise_IRQHandler - */ - .weak ACE_Comp1_Rise_IRQHandler - .type ACE_Comp1_Rise_IRQHandler, %function -ACE_Comp1_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp2_Rise_IRQHandler - */ - .weak ACE_Comp2_Rise_IRQHandler - .type ACE_Comp2_Rise_IRQHandler, %function -ACE_Comp2_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp3_Rise_IRQHandler - */ - .weak ACE_Comp3_Rise_IRQHandler - .type ACE_Comp3_Rise_IRQHandler, %function -ACE_Comp3_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp4_Rise_IRQHandler - */ - .weak ACE_Comp4_Rise_IRQHandler - .type ACE_Comp4_Rise_IRQHandler, %function -ACE_Comp4_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp5_Rise_IRQHandler - */ - .weak ACE_Comp5_Rise_IRQHandler - .type ACE_Comp5_Rise_IRQHandler, %function -ACE_Comp5_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp6_Rise_IRQHandler - */ - .weak ACE_Comp6_Rise_IRQHandler - .type ACE_Comp6_Rise_IRQHandler, %function -ACE_Comp6_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp7_Rise_IRQHandler - */ - .weak ACE_Comp7_Rise_IRQHandler - .type ACE_Comp7_Rise_IRQHandler, %function -ACE_Comp7_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp8_Rise_IRQHandler - */ - .weak ACE_Comp8_Rise_IRQHandler - .type ACE_Comp8_Rise_IRQHandler, %function -ACE_Comp8_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp9_Rise_IRQHandler - */ - .weak ACE_Comp9_Rise_IRQHandler - .type ACE_Comp9_Rise_IRQHandler, %function -ACE_Comp9_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp10_Rise_IRQHandler - */ - .weak ACE_Comp10_Rise_IRQHandler - .type ACE_Comp10_Rise_IRQHandler, %function -ACE_Comp10_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp11_Rise_IRQHandler - */ - .weak ACE_Comp11_Rise_IRQHandler - .type ACE_Comp11_Rise_IRQHandler, %function -ACE_Comp11_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_FifoFull_IRQHandler - */ - .weak ACE_ADC0_FifoFull_IRQHandler - .type ACE_ADC0_FifoFull_IRQHandler, %function -ACE_ADC0_FifoFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_FifoAFull_IRQHandler - */ - .weak ACE_ADC0_FifoAFull_IRQHandler - .type ACE_ADC0_FifoAFull_IRQHandler, %function -ACE_ADC0_FifoAFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_FifoEmpty_IRQHandler - */ - .weak ACE_ADC0_FifoEmpty_IRQHandler - .type ACE_ADC0_FifoEmpty_IRQHandler, %function -ACE_ADC0_FifoEmpty_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_FifoFull_IRQHandler - */ - .weak ACE_ADC1_FifoFull_IRQHandler - .type ACE_ADC1_FifoFull_IRQHandler, %function -ACE_ADC1_FifoFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_FifoAFull_IRQHandler - */ - .weak ACE_ADC1_FifoAFull_IRQHandler - .type ACE_ADC1_FifoAFull_IRQHandler, %function -ACE_ADC1_FifoAFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_FifoEmpty_IRQHandler - */ - .weak ACE_ADC1_FifoEmpty_IRQHandler - .type ACE_ADC1_FifoEmpty_IRQHandler, %function -ACE_ADC1_FifoEmpty_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_FifoFull_IRQHandler - */ - .weak ACE_ADC2_FifoFull_IRQHandler - .type ACE_ADC2_FifoFull_IRQHandler, %function -ACE_ADC2_FifoFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_FifoAFull_IRQHandler - */ - .weak ACE_ADC2_FifoAFull_IRQHandler - .type ACE_ADC2_FifoAFull_IRQHandler, %function -ACE_ADC2_FifoAFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_FifoEmpty_IRQHandler - */ - .weak ACE_ADC2_FifoEmpty_IRQHandler - .type ACE_ADC2_FifoEmpty_IRQHandler, %function -ACE_ADC2_FifoEmpty_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag0_IRQHandler - */ - .weak ACE_PPE_Flag0_IRQHandler - .type ACE_PPE_Flag0_IRQHandler, %function -ACE_PPE_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag1_IRQHandler - */ - .weak ACE_PPE_Flag1_IRQHandler - .type ACE_PPE_Flag1_IRQHandler, %function -ACE_PPE_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag2_IRQHandler - */ - .weak ACE_PPE_Flag2_IRQHandler - .type ACE_PPE_Flag2_IRQHandler, %function -ACE_PPE_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag3_IRQHandler - */ - .weak ACE_PPE_Flag3_IRQHandler - .type ACE_PPE_Flag3_IRQHandler, %function -ACE_PPE_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag4_IRQHandler - */ - .weak ACE_PPE_Flag4_IRQHandler - .type ACE_PPE_Flag4_IRQHandler, %function -ACE_PPE_Flag4_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag5_IRQHandler - */ - .weak ACE_PPE_Flag5_IRQHandler - .type ACE_PPE_Flag5_IRQHandler, %function -ACE_PPE_Flag5_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag6_IRQHandler - */ - .weak ACE_PPE_Flag6_IRQHandler - .type ACE_PPE_Flag6_IRQHandler, %function -ACE_PPE_Flag6_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag7_IRQHandler - */ - .weak ACE_PPE_Flag7_IRQHandler - .type ACE_PPE_Flag7_IRQHandler, %function -ACE_PPE_Flag7_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag8_IRQHandler - */ - .weak ACE_PPE_Flag8_IRQHandler - .type ACE_PPE_Flag8_IRQHandler, %function -ACE_PPE_Flag8_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag9_IRQHandler - */ - .weak ACE_PPE_Flag9_IRQHandler - .type ACE_PPE_Flag9_IRQHandler, %function -ACE_PPE_Flag9_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag10_IRQHandler - */ - .weak ACE_PPE_Flag10_IRQHandler - .type ACE_PPE_Flag10_IRQHandler, %function -ACE_PPE_Flag10_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag11_IRQHandler - */ - .weak ACE_PPE_Flag11_IRQHandler - .type ACE_PPE_Flag11_IRQHandler, %function -ACE_PPE_Flag11_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag12_IRQHandler - */ - .weak ACE_PPE_Flag12_IRQHandler - .type ACE_PPE_Flag12_IRQHandler, %function -ACE_PPE_Flag12_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag13_IRQHandler - */ - .weak ACE_PPE_Flag13_IRQHandler - .type ACE_PPE_Flag13_IRQHandler, %function -ACE_PPE_Flag13_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag14_IRQHandler - */ - .weak ACE_PPE_Flag14_IRQHandler - .type ACE_PPE_Flag14_IRQHandler, %function -ACE_PPE_Flag14_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag15_IRQHandler - */ - .weak ACE_PPE_Flag15_IRQHandler - .type ACE_PPE_Flag15_IRQHandler, %function -ACE_PPE_Flag15_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag16_IRQHandler - */ - .weak ACE_PPE_Flag16_IRQHandler - .type ACE_PPE_Flag16_IRQHandler, %function -ACE_PPE_Flag16_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag17_IRQHandler - */ - .weak ACE_PPE_Flag17_IRQHandler - .type ACE_PPE_Flag17_IRQHandler, %function -ACE_PPE_Flag17_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag18_IRQHandler - */ - .weak ACE_PPE_Flag18_IRQHandler - .type ACE_PPE_Flag18_IRQHandler, %function -ACE_PPE_Flag18_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag19_IRQHandler - */ - .weak ACE_PPE_Flag19_IRQHandler - .type ACE_PPE_Flag19_IRQHandler, %function -ACE_PPE_Flag19_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag20_IRQHandler - */ - .weak ACE_PPE_Flag20_IRQHandler - .type ACE_PPE_Flag20_IRQHandler, %function -ACE_PPE_Flag20_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag21_IRQHandler - */ - .weak ACE_PPE_Flag21_IRQHandler - .type ACE_PPE_Flag21_IRQHandler, %function -ACE_PPE_Flag21_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag22_IRQHandler - */ - .weak ACE_PPE_Flag22_IRQHandler - .type ACE_PPE_Flag22_IRQHandler, %function -ACE_PPE_Flag22_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag23_IRQHandler - */ - .weak ACE_PPE_Flag23_IRQHandler - .type ACE_PPE_Flag23_IRQHandler, %function -ACE_PPE_Flag23_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag24_IRQHandler - */ - .weak ACE_PPE_Flag24_IRQHandler - .type ACE_PPE_Flag24_IRQHandler, %function -ACE_PPE_Flag24_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag25_IRQHandler - */ - .weak ACE_PPE_Flag25_IRQHandler - .type ACE_PPE_Flag25_IRQHandler, %function -ACE_PPE_Flag25_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag26_IRQHandler - */ - .weak ACE_PPE_Flag26_IRQHandler - .type ACE_PPE_Flag26_IRQHandler, %function -ACE_PPE_Flag26_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag27_IRQHandler - */ - .weak ACE_PPE_Flag27_IRQHandler - .type ACE_PPE_Flag27_IRQHandler, %function -ACE_PPE_Flag27_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag28_IRQHandler - */ - .weak ACE_PPE_Flag28_IRQHandler - .type ACE_PPE_Flag28_IRQHandler, %function -ACE_PPE_Flag28_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag29_IRQHandler - */ - .weak ACE_PPE_Flag29_IRQHandler - .type ACE_PPE_Flag29_IRQHandler, %function -ACE_PPE_Flag29_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag30_IRQHandler - */ - .weak ACE_PPE_Flag30_IRQHandler - .type ACE_PPE_Flag30_IRQHandler, %function -ACE_PPE_Flag30_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag31_IRQHandler - */ - .weak ACE_PPE_Flag31_IRQHandler - .type ACE_PPE_Flag31_IRQHandler, %function -ACE_PPE_Flag31_IRQHandler: - B . - -.end diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c deleted file mode 100644 index 1b3798f3e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2069 $ - * SVN $Date: 2010-01-28 00:23:48 +0000 (Thu, 28 Jan 2010) $ - */ -#include "a2fxxxm3.h" -#include "mss_assert.h" - -/* System frequency (FCLK) coming out of reset is 25MHz. */ -#define RESET_SYSCLCK_FREQ 25000000uL - -/* - * SmartFusion Microcontroller Subsystem FLCK frequency. - * The value of SMARTFUSION_FCLK_FREQ is used to report the system's clock - * frequency in system's which either do not use the Actel System Boot or - * a version of the Actel System Boot older than 1.3.1. In eitehr of these cases - * SMARTFUSION_FCLK_FREQ should be defined in the projects settings to reflect - * the FCLK frequency selected in the Libero MSS configurator. - * Systems using the Actel System Boot version 1.3.1 or later do not require this - * define since the system's frequency is retrieved from eNVM spare pages where - * the MSS Configurator stored the frequency selected during hardware design/configuration. - */ -#ifdef SMARTFUSION_FCLK_FREQ -#define SMARTFUSION_FCLK_FREQ_DEFINED 1 -#else -#define SMARTFUSION_FCLK_FREQ_DEFINED 0 -#define SMARTFUSION_FCLK_FREQ RESET_SYSCLCK_FREQ -#endif - -/* Divider values for APB0, APB1 and ACE clocks. */ -#define RESET_PCLK0_DIV 4uL -#define RESET_PCLK1_DIV 4uL -#define RESET_ACE_DIV 4uL -#define RESET_FPGA_CLK_DIV 4uL - -/* System register clock control mask and shift for PCLK dividers. */ -#define PCLK_DIV_MASK 0x00000003uL -#define PCLK0_DIV_SHIFT 2uL -#define PCLK1_DIV_SHIFT 4uL -#define ACE_DIV_SHIFT 6uL - -/* System register MSS_CCC_DIV_CR mask and shift for GLB (FPGA fabric clock). */ -#define OBDIV_SHIFT 8uL -#define OBDIV_MASK 0x0000001FuL -#define OBDIVHALF_SHIFT 13uL -#define OBDIVHALF_MASK 0x00000001uL - -/* - * Actel system boot version defines used to extract the system clock from eNVM - * spare pages. - * These defines allow detecting the presence of Actel system boot in eNVM spare - * pages and the version of that system boot executable and associated - * configuration data. - */ -#define SYSBOOT_KEY_ADDR (uint32_t *)0x6008081C -#define SYSBOOT_KEY_VALUE 0x4C544341uL -#define SYSBOOT_VERSION_ADDR (uint32_t *)0x60080840 -#define SYSBOOT_1_3_FCLK_ADDR (uint32_t *)0x6008162C -#define SYSBOOT_2_x_FCLK_ADDR (uint32_t *)0x60081EAC - -/* - * The system boot version is stored in the least significant 24 bits of a word. - * The FCLK is stored in eNVM from version 1.3.1 of the system boot. We expect - * that the major version number of the system boot version will change if the - * system boot configuration data layout needs to change. - */ -#define SYSBOOT_VERSION_MASK 0x00FFFFFFuL -#define MIN_SYSBOOT_VERSION 0x00010301uL -#define SYSBOOT_VERSION_2_X 0x00020000uL -#define MAX_SYSBOOT_VERSION 0x00030000uL - -/* Standard CMSIS global variables. */ -uint32_t SystemFrequency = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ -uint32_t SystemCoreClock = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -uint32_t g_FrequencyPCLK0 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK0_DIV); /*!< Clock frequency of APB bus 0. */ -uint32_t g_FrequencyPCLK1 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK1_DIV); /*!< Clock frequency of APB bus 1. */ -uint32_t g_FrequencyACE = (SMARTFUSION_FCLK_FREQ / RESET_ACE_DIV); /*!< Clock frequency of Analog Compute Engine. */ -uint32_t g_FrequencyFPGA = (SMARTFUSION_FCLK_FREQ / RESET_FPGA_CLK_DIV); /*!< Clock frequecny of FPGA fabric */ - -/* Local functions */ -static uint32_t GetSystemClock( void ); - -/***************************************************************************//** - * See system_a2fm3fxxx.h for details. - */ -void SystemInit(void) -{ -} - -/***************************************************************************//** - * - */ -void SystemCoreClockUpdate (void) -{ - uint32_t PclkDiv0; - uint32_t PclkDiv1; - uint32_t AceDiv; - uint32_t FabDiv; - - const uint32_t pclk_div_lut[4] = { 1uL, 2uL, 4uL, 1uL }; - - /* Read PCLK dividers from system registers. Multiply the value read from - * system register by two to get actual divider value. */ - PclkDiv0 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK0_DIV_SHIFT) & PCLK_DIV_MASK)]; - PclkDiv1 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK1_DIV_SHIFT) & PCLK_DIV_MASK)]; - AceDiv = pclk_div_lut[((SYSREG->MSS_CLK_CR >> ACE_DIV_SHIFT) & PCLK_DIV_MASK)]; - { - /* Compute the FPGA fabric frequency divider. */ - uint32_t obdiv; - uint32_t obdivhalf; - - obdiv = (SYSREG->MSS_CCC_DIV_CR >> OBDIV_SHIFT) & OBDIV_MASK; - obdivhalf = (SYSREG->MSS_CCC_DIV_CR >> OBDIVHALF_SHIFT) & OBDIVHALF_MASK; - FabDiv = obdiv + 1uL; - if ( obdivhalf != 0uL ) - { - FabDiv = FabDiv * 2uL; - } - } - - /* Retrieve FCLK from eNVM spare pages if Actel system boot programmed as part of the system. */ - - /* Read system clock from eNVM spare pages. */ - SystemCoreClock = GetSystemClock(); - g_FrequencyPCLK0 = SystemCoreClock / PclkDiv0; - g_FrequencyPCLK1 = SystemCoreClock / PclkDiv1; - g_FrequencyACE = SystemCoreClock / AceDiv; - g_FrequencyFPGA = SystemCoreClock / FabDiv; - - /* Keep SystemFrequency as well as SystemCoreClock for legacy reasons. */ - SystemFrequency = SystemCoreClock; -} - -/***************************************************************************//** - * Retrieve the system clock frequency from eNVM spare page if available. - * Returns the frequency defined through SMARTFUSION_FCLK_FREQ if FCLK cannot be - * retrieved from eNVM spare pages. - * The FCLK frequency value selected in the MSS Configurator software tool is - * stored in eNVM spare pages as part of the Actel system boot configuration data. - */ -uint32_t GetSystemClock( void ) -{ - uint32_t fclk = 0uL; - - uint32_t * p_sysboot_key = SYSBOOT_KEY_ADDR; - - if ( SYSBOOT_KEY_VALUE == *p_sysboot_key ) - { - /* Actel system boot programmed, check if it has the FCLK value stored. */ - uint32_t *p_sysboot_version = SYSBOOT_VERSION_ADDR; - uint32_t sysboot_version = *p_sysboot_version; - - sysboot_version &= SYSBOOT_VERSION_MASK; - - if ( sysboot_version >= MIN_SYSBOOT_VERSION ) - { - /* Handle change of eNVM location of FCLK between 1.3.x and 2.x.x versions of the system boot. */ - if ( sysboot_version < SYSBOOT_VERSION_2_X ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 1.3.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_1_3_FCLK_ADDR; - fclk = *p_fclk; - } - else if ( sysboot_version < MAX_SYSBOOT_VERSION ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 2.x.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_2_x_FCLK_ADDR; - fclk = *p_fclk; - } - else - { - fclk = 0uL; - } - } - } - - if ( 0uL == fclk ) - { - /* - * Could not retrieve FCLK from system boot configuration data. Fall back - * to using SMARTFUSION_FCLK_FREQ which must then be defined as part of - * project settings. - */ - ASSERT( SMARTFUSION_FCLK_FREQ_DEFINED ); - fclk = SMARTFUSION_FCLK_FREQ; - } - - return fclk; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h deleted file mode 100644 index 6ae0ad5b7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2064 $ - * SVN $Date: 2010-01-27 15:05:58 +0000 (Wed, 27 Jan 2010) $ - */ - -#ifndef __SYSTEM_A2FM3FXX_H__ -#define __SYSTEM_A2FM3FXX_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Standard CMSIS global variables. */ -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -extern uint32_t g_FrequencyPCLK0; /*!< Clock frequency of APB bus 0. */ -extern uint32_t g_FrequencyPCLK1; /*!< Clock frequency of APB bus 1. */ -extern uint32_t g_FrequencyACE; /*!< Clock frequency of Analog Compute Engine. */ -extern uint32_t g_FrequencyFPGA; /*!< Clock frequecny of FPGA fabric */ - -/***************************************************************************//** - * The SystemInit() is a standard CMSIS function called during system startup. - * It is meant to perform low level hardware setup such as configuring PLLs. In - * the case of SmartFusion these hardware setup operations are performed by the - * chip boot which executed before the application started. Therefore this - * function does not need to perform any hardware setup. - */ -void SystemInit(void); - -/***************************************************************************//** - * The SystemCoreClockUpdate() is a standard CMSIS function which can be called - * by the application in order to ensure that the SystemCoreClock global - * variable contains the up to date Cortex-M3 core frequency. Calling this - * function also updates the global variables containing the frequencies of the - * APB busses connecting the peripherals and the ACE frequency. - */ -void SystemCoreClockUpdate(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c deleted file mode 100644 index 595e71844..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c +++ /dev/null @@ -1,835 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver - * implementation. - * - * SVN $Revision: 2152 $ - * SVN $Date: 2010-02-11 14:44:11 +0000 (Thu, 11 Feb 2010) $ - */ - - -#include "i2c.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*------------------------------------------------------------------------------ - * I2C transaction direction. - */ -#define WRITE_DIR 0 -#define READ_DIR 1 - -/* -- TRANSACTIONS TYPES -- */ -#define NO_TRANSACTION 0 -#define MASTER_WRITE_TRANSACTION 1 -#define MASTER_READ_TRANSACTION 2 -#define MASTER_RANDOM_READ_TRANSACTION 3 -#define WRITE_SLAVE_TRANSACTION 4 -#define READ_SLAVE_TRANSACTION 5 -#define RANDOM_READ_SLAVE_TRANSACTION 6 - - -/* -- SMBUS H/W STATES -- */ -/* -- MASTER STATES -- */ -#define ST_START 0x08 /* start condition sent */ -#define ST_RESTART 0x10 /* repeated start */ -#define ST_SLAW_ACK 0x18 /* SLA+W sent, ack received */ -#define ST_SLAW_NACK 0x20 /* SLA+W sent, nack received */ -#define ST_TX_DATA_ACK 0x28 /* Data sent, ACK'ed */ -#define ST_TX_DATA_NACK 0x30 /* Data sent, NACK'ed */ -#define ST_LOST_ARB 0x38 /* Master lost arbitration */ -#define ST_SLAR_ACK 0x40 /* SLA+R sent, ACK'ed */ -#define ST_SLAR_NACK 0x48 /* SLA+R sent, NACK'ed */ -#define ST_RX_DATA_ACK 0x50 /* Data received, ACK sent */ -#define ST_RX_DATA_NACK 0x58 /* Data received, NACK sent */ - -/* -- SLAVE STATES -- */ -#define ST_SLAVE_SLAW 0x60 /* SLA+W received */ -#define ST_SLAVE_SLAR_ACK 0xA8 /* SLA+R received, ACK returned */ -#define ST_SLV_LA 0x68 /* Slave lost arbitration */ -#define ST_GCA 0x70 /* GCA received */ -#define ST_GCA_LA 0x78 /* GCA lost arbitration */ -#define ST_RDATA 0x80 /* Data received */ -#define ST_SLA_NACK 0x88 /* Slave addressed, NACK returned */ -#define ST_GCA_ACK 0x90 /* Previously addresses with GCA, data ACKed */ -#define ST_GCA_NACK 0x98 /* GCA addressed, NACK returned */ -#define ST_RSTOP 0xA0 /* Stop received */ -#define ST_REPEAT 0xA0 /* Repeated start received */ -#define ST_SLAR_ACKS 0xA8 /* Slave read received, ACKed */ -#define ST_SLARW_LA 0xB0 /* Arbitration lost */ -#define ST_RACK 0xB8 /* Byte sent, ACK received */ -#define ST_SLAVE_RNACK 0xC0 /* Byte sent, NACK received */ -#define ST_FINAL 0xC8 /* Final byte sent, ACK received */ -#define ST_BERR 0x00 /* Error on the bus */ -#define ST_SLV_RST 0xD8 /* Slave reset state */ - -/*------------------------------------------------------------------------------ - * - */ -static uint32_t disable_interrupts( void ); -static void restore_interrupts( uint32_t primask ); -static void mss_i2c_isr( mss_i2c_instance_t * this_i2c ); - -/*------------------------------------------------------------------------------ - * - *------------------------------------------------------------------------------ - * - */ -mss_i2c_instance_t g_mss_i2c0; -mss_i2c_instance_t g_mss_i2c1; - -/*------------------------------------------------------------------------------ - * MSS_I2C_init() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -) -{ - uint_fast16_t clock_speed = ser_clock_speed; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( this_i2c == &g_mss_i2c0 ) - { - this_i2c->irqn = I2C0_IRQn; - this_i2c->hw_reg = I2C0; - this_i2c->hw_reg_bit = I2C0_BITBAND; - - /* reset I2C0 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C0_SOFTRESET_MASK; - /* Clear any previously pended I2C0 interrupt */ - NVIC_ClearPendingIRQ( I2C0_IRQn ); - /* Take I2C0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C0_SOFTRESET_MASK; - } - else - { - this_i2c->irqn = I2C1_IRQn; - this_i2c->hw_reg = I2C1; - this_i2c->hw_reg_bit = I2C1_BITBAND; - - /* reset I2C1 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C1_SOFTRESET_MASK; - /* Clear any previously pended I2C1 interrupt */ - NVIC_ClearPendingIRQ( I2C1_IRQn ); - /* Take I2C1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C1_SOFTRESET_MASK; - } - - this_i2c->transaction = NO_TRANSACTION; - - this_i2c->ser_address = ser_address; - - this_i2c->tx_buffer = 0; - this_i2c->tx_size = 0; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = 0; - this_i2c->rx_size = 0; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_SUCCESS; - - this_i2c->random_read_addr = 0; - - this_i2c->slave_write_handler = 0; - this_i2c->slave_mem_offset_length = 0; - - this_i2c->hw_reg_bit->CTRL_ENS1 = 0x01; /* set enable bit */ - this_i2c->hw_reg_bit->CTRL_CR2 = (clock_speed >> 2) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR1 = (clock_speed >> 1) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR0 = clock_speed & 0x01; - this_i2c->hw_reg->ADDR = this_i2c->ser_address; - - /* The interrupt can cause a context switch, so ensure its priority is - between configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY. */ - NVIC_SetPriority( this_i2c->irqn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - vSemaphoreCreateBinary( ( this_i2c->xI2CCompleteSemaphore ) ); - xSemaphoreTake( ( this_i2c->xI2CCompleteSemaphore ), 0 ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_mem_offset_length() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_mem_offset_length = offset_length; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_register_write_handler() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_write_handler = handler; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_WRITE_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = write_buffer; - this_i2c->tx_size = write_size; - this_i2c->tx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( read_size > 0 ) - { - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_READ_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = READ_DIR; - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); - } -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_RANDOM_READ_TRANSACTION; - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = addr_offset; - this_i2c->tx_size = offset_size; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_rx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->rx_buffer = rx_buffer; - this_i2c->rx_size = rx_size; - this_i2c->rx_idx = 0; - - restore_interrupts( primask ); -} - - -/*------------------------------------------------------------------------------ - * MSS_I2C_get_status() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_tx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->tx_buffer = tx_buffer; - this_i2c->tx_size = tx_size; - this_i2c->tx_idx = 0; - - restore_interrupts( primask ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_enable_slave_rx() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - /* accept GC addressing. */ - this_i2c->hw_reg_bit->ADDR_GC = 0x01; - - NVIC_EnableIRQ( this_i2c->irqn ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_wait_complete() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - -#ifdef USE_OLD_I2C_POLLING_CODE - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } -#else - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - if( xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED ) - { - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } - } - else - { - xSemaphoreTake( this_i2c->xI2CCompleteSemaphore, portMAX_DELAY ); - } -#endif - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS I2C interrupt service routine. - *------------------------------------------------------------------------------ - * Parameters: - * - * mss_i2c_instance_t * this_i2c: - * Pointer to the mss_i2c_instance_t data structure holding all data related to - * the MSS I2C instance that generated the interrupt. - */ -static void mss_i2c_isr -( - mss_i2c_instance_t * this_i2c - ) -{ - volatile uint8_t status; - uint8_t data; - uint8_t hold_bus; - uint8_t clear_irq = 1; - long lHigherPriorityTaskWoken = pdFALSE; - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - status = this_i2c->hw_reg->STATUS; - - switch( status ) - { - /************** MASTER TRANSMITTER / RECEIVER *******************/ - - case ST_START: /* start has been xmt'd */ - case ST_RESTART: /* repeated start has been xmt'd */ - this_i2c->hw_reg_bit->CTRL_STA = 0x0; - this_i2c->hw_reg->DATA = this_i2c->target_addr; - this_i2c->hw_reg_bit->DATA_DIR = this_i2c->dir; - - this_i2c->tx_idx = 0; - this_i2c->rx_idx = 0; - break; - - case ST_LOST_ARB: - /* Set start bit. Let's keep trying! Don't give up! */ - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - break; - - /******************* MASTER TRANSMITTER *************************/ - case ST_SLAW_ACK: - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_SLAW_NACK: -#if 0 - /* SLA+W has been transmitted; not ACK has been received - let's stop. */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_TX_DATA_ACK: - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - case ST_TX_DATA_NACK: -#if 0 - /* data byte SENT, ACK to be received - * In fact, this means we've received a NACK (This may not be - * obvious, but if we've rec'd an ACK then we would be in state - * 0x28!) hence, let's send a stop bit - */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - /********************* MASTER (or slave?) RECEIVER *************************/ - - /* STATUS codes 08H, 10H, 38H are all covered in MTX mode */ - case ST_SLAR_ACK: /* SLA+R tx'ed. */ - /* Let's make sure we ACK the first data byte received (set AA bit in CTRL) unless - * the next byte is the last byte of the read transaction. - */ - if( this_i2c->rx_size > 1 ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_SLAR_NACK: /* SLA+R tx'ed; let's release the bus (send a stop condition) */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_RX_DATA_ACK: /* Data byte received, ACK returned */ - /* First, get the data */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - if( this_i2c->rx_idx >= this_i2c->rx_size - 1) - { - /* If we're at the second last byte, let's set AA to 0 so - * we return a NACK at the last byte. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_RX_DATA_NACK: /* Data byte received, NACK returned */ - /* Get the data, then send a stop condition */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - /******************** SLAVE RECEIVER **************************/ - case ST_GCA_NACK: /* NACK after, GCA addressing */ - case ST_SLA_NACK: /* Get Data, but also re-enable AA (assert ack) bit for future transmissions */ - if ( this_i2c->rx_buffer != 0 ) - { - this_i2c->rx_buffer[this_i2c->rx_idx] = this_i2c->hw_reg->DATA; - } - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - break; - - case ST_SLAVE_SLAW: /* SLA+W received, ACK returned */ - this_i2c->transaction = WRITE_SLAVE_TRANSACTION; - this_i2c->rx_idx = 0; - this_i2c->random_read_addr = 0; -#ifndef INCLUDE_SLA_IN_RX_PAYLOAD - /* Only break from this case if the slave address must NOT be included at the - * beginning of the received write data. */ - break; -#endif - case ST_GCA_ACK: /* DATA received; ACK sent after GCA */ - case ST_RDATA: /* DATA received; must clear DATA register */ - if (this_i2c->rx_idx >= this_i2c->rx_size - 2) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; /* send a NACK when done (next reception) */ - } - data = this_i2c->hw_reg->DATA; - this_i2c->rx_buffer[this_i2c->rx_idx++] = data; - this_i2c->random_read_addr = (this_i2c->random_read_addr << 8) + data; - - break; - - case ST_RSTOP: - /* STOP or repeated START occured. */ - /* We cannot be sure if the transaction has actually completed as - * this hardware state reports that either a STOP or repeated START - * condition has occured. We assume that this is a repeated START - * if the transaction was a write from the master to this point.*/ - if ( this_i2c->transaction == WRITE_SLAVE_TRANSACTION ) - { - if ( this_i2c->rx_idx == this_i2c->slave_mem_offset_length ) - { - this_i2c->transaction = RANDOM_READ_SLAVE_TRANSACTION; - this_i2c->tx_idx = this_i2c->random_read_addr; - } - else - { - /* Call the slave's write transaction handler if it exists. */ - if ( this_i2c->slave_write_handler != 0 ) - { - mss_i2c_slave_handler_ret_t h_ret; - h_ret = this_i2c->slave_write_handler( this_i2c->rx_buffer, (uint16_t)this_i2c->rx_idx ); - if ( MSS_I2C_REENABLE_SLAVE_RX == h_ret ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - } - } - } - /* Mark any previous master write transaction as complete. */ - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_SLV_RST: /* SMBUS ONLY: timeout state. must clear interrupt */ - case ST_SLV_LA: /* Arbitr. lost (SLA rec'd) */ - case ST_GCA: /* General call address received, ACK returned */ - case ST_GCA_LA: /* Arbitr. lost (GCA rec'd) */ - /* do nothing */ - break; - - /****************** SLAVE TRANSMITTER **************************/ - case ST_SLAVE_SLAR_ACK: /* SLA+R received, ACK returned */ - case ST_SLARW_LA: /* Arbitration lost, and: */ - case ST_RACK: /* Data tx'ed, ACK received */ - if ( status == ST_SLAVE_SLAR_ACK ) - { - this_i2c->transaction = READ_SLAVE_TRANSACTION; - this_i2c->random_read_addr = 0; - } - /* Load the data, and determine if it is the last one */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - if (this_i2c->tx_idx >= this_i2c->tx_size - 1) /* last byte? */ - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - /* Next read transaction will result in slave's transmit buffer - * being sent from the first byte. */ - this_i2c->tx_idx = 0; - } - break; - - case ST_SLAVE_RNACK: /* Data byte has been transmitted; not-ACK has been received. */ - /* We assume that the transaction will be stopped by the master. - * Reset tx_idx so that a subsequent read will result in the slave's - * transmit buffer being sent from the first byte. */ - this_i2c->tx_idx = 0; - break; - - case ST_FINAL: /* Last Data byte tx'ed, ACK recieved */ - default: - /* do nothing */ - break; - } - - if ( clear_irq ) - { - /* clear interrupt. */ - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - } - - /* Read the status register to ensure the last I2C registers write took place - * in a system built around a bus making use of posted writes. */ - status = this_i2c->hw_reg->STATUS; - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - -/*------------------------------------------------------------------------------ - * - */ -uint32_t disable_interrupts( void ) -{ - uint32_t primask; - primask = __get_PRIMASK(); - return primask; -} - -/*------------------------------------------------------------------------------ - * - */ -void restore_interrupts( uint32_t primask ) -{ - __set_PRIMASK( primask ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C0_IRQHandler( void ) -#else -void I2C0_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c0 ); - NVIC_ClearPendingIRQ( I2C0_IRQn ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C1_IRQHandler( void ) -#else -void I2C1_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c1 ); - NVIC_ClearPendingIRQ( I2C1_IRQn ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h deleted file mode 100644 index 6c80cf343..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h +++ /dev/null @@ -1,783 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver public - * API. - * - * SVN $Revision: 2150 $ - * SVN $Date: 2010-02-11 14:39:24 +0000 (Thu, 11 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS I2C Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes two I2C peripherals - for serial communication. This driver provides a set of functions for - controlling the MSS I2Cs as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS I2Cs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS I2Cs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are automatically configured correctly by the MSS - configurator tool in the hardware flow when the MSS I2Cs are enabled in that - tool. You must ensure that the MSS I2Cs are enabled by the MSS configurator - tool in the hardware flow; otherwise the serial inputs and outputs will not be - connected to the chip's external pins. For more information on IOMUX, refer to - the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the - MSS I2C blocks are defined as constants in the SmartFusion CMSIS-PAL. You must - ensure that the SmartFusion CMSIS-PAL is either included in the software tool - chain used to build your project or is included in your project. - - @section theory_op Theory of Operation - The MSS I2C driver functions are grouped into the following categories: - • Initialization and configuration functions - • Interrupt control - • I2C master operations – functions to handle write, read and write-read transactions - • I2C slave operations – functions to handle write, read and write-read transactions - - Initialization and Configuration - The MSS I2C driver is initialized through a call to the MSS_I2C_init() - function. This function takes the MSS I2C's configuration as parameters. The - MSS_I2C_init() function must be called before any other MSS I2C driver - functions can be called. The first parameter of the MSS_I2C_init() function - is a pointer to one of two global data structures used by the driver to - store state information for each MSS I2C. A pointer to these data structures - is also used as first parameter to any of the driver functions to identify - which MSS I2C will be used by the called function. The names of these two - data structures are g_mss_i2c0 and g_mss_i2c1. Therefore any call to an MSS - I2C driver function should be of the form MSS_I2C_function_name( &g_mss_i2c0, ... ) - or MSS_I2C_function_name( &g_mss_i2c1, ... ). - The MSS_I2C_init() function call for each MSS I2C also takes the I2C serial - address assigned to the MSS I2C and the serial clock divider to be used to - generate its I2C clock as configuration parameters. - - Interrupt Control - The MSS I2C driver is interrupt driven and it enables and disables the - generation of interrupts by MSS I2C at various times when it is operating. - The driver automatically handles MSS I2C interrupts internally, including - enabling disabling and clearing MSS I2C interrupts in the Cortex-M3 - interrupt controller when required. - The function MSS_I2C_register_write_handler() is used to register a write - handler function with the MSS I2C driver that it will call on completion of - an I2C write transaction by the MSS I2C slave. It is your responsibility to - create and register the implementation of this handler function that will - process or trigger the processing of the received data. - Transaction Types - The MSS I2C driver is designed to handle three types of I2C transaction: - • Write transactions - • Read transactions - • Write-read transactions - - Write transaction - The master I2C device initiates a write transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s address with an acknowledge bit. The master sends data one byte at - a time to the slave, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a STOP bit to complete the transaction. - The slave can abort the transaction by replying with a non-acknowledge bit - instead of an acknowledge. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Read transaction - The master I2C device initiates a read transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s slave address with an acknowledge bit. The slave sends data one byte - at a time to the master, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a non-acknowledge bit following the - last byte it wishes to read followed by a STOP bit. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Write-read transaction - The write-read transaction is a combination of a write transaction - immediately followed by a read transaction. There is no STOP bit between - the write and read phases of a write-read transaction. A repeated START - bit is sent between the write and read phases. - The write-read transaction is typically used to send a command or offset - in the write transaction specifying the logical data to be transferred - during the read phase. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Master Operations - The application can use the MSS_I2C_write(), MSS_I2C_read() and MSS_I2C_write_read() - functions to initiate an I2C bus transaction. The application can then wait - for the transaction to complete using the MSS_I2C_wait_complete() function - or poll the status of the I2C transaction using the MSS_I2C_get_status() - function until it returns a value different from MSS_I2C_IN_PROGRESS. - - Slave Operations - The configuration of the MSS I2C driver to operate as an I2C slave requires - the use of the following functions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - Use of all functions is not required if the slave I2C does not need to support - all types of I2C read transactions. The subsequent sections list the functions - that must be used to support each transaction type. - - Responding to read transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_tx_buffer() specifies the data buffer that - will be transmitted when the I2C slave is the target of an I2C read - transaction. It is then up to the application to manage the content of that - buffer to control the data that will be transmitted to the I2C master as a - result of the read transaction. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C write transactions: - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave when it is the - target an I2C write transaction. - The function MSS_I2C_register_write_handler() specifies the handler function - that must be called on completion of the I2C write transaction. It is this - handler function that will process or trigger the processing of the received - data. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write-read transactions - The following functions are used to configure the MSS I2C driver to respond - to write-read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_mem_offset_length() specifies the number of - bytes expected by the I2C slave during the write phase of the write-read - transaction. - The function MSS_I2C_set_slave_tx_buffer() specifies the data that will be - transmitted to the I2C master during the read phase of the write-read - transaction. The value received by the I2C slave during the write phase of - the transaction will be used as an index into the transmit buffer specified - by this function to decide which part of the transmit buffer will be - transmitted to the I2C master as part of the read phase of the write-read - transaction. - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave during the write - phase of the write-read transaction. This buffer must be at least large - enough to accommodate the number of bytes specified through the - MSS_I2C_set_slave_mem_offset_length() function. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware - instance to respond to I2C transactions. It must be called after the MSS - I2C driver has been configured to respond to the required transaction types. - *//*=========================================================================*/ -#ifndef I2C_H_ -#define I2C_H_ - -#include "../../CMSIS/a2fxxxm3.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - The mss_i2c_clock_divider_t type is used to specify the divider to be applied - to the MSS I2C BCLK signal in order to generate the I2C clock. - */ -typedef enum mss_i2c_clock_divider { - MSS_I2C_PCLK_DIV_256 = 0, - MSS_I2C_PCLK_DIV_224, - MSS_I2C_PCLK_DIV_192, - MSS_I2C_PCLK_DIV_160, - MSS_I2C_PCLK_DIV_960, - MSS_I2C_PCLK_DIV_120, - MSS_I2C_PCLK_DIV_60, - MSS_I2C_BCLK_DIV_8 -} mss_i2c_clock_divider_t; - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_RELEASE_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must be generated at the end of the I2C transaction to release - the bus. - */ -#define MSS_I2C_RELEASE_BUS 0x00 - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_HOLD_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must not be generated at the end of the I2C transaction in - order to retain the bus ownership. This will cause the next transaction to - begin with a repeated START bit and no STOP bit between the transactions. - */ -#define MSS_I2C_HOLD_BUS 0x01 - -/*-------------------------------------------------------------------------*//** - The mss_i2c_status_t type is used to report the status of I2C transactions. - */ -typedef enum mss_i2c_status -{ - MSS_I2C_SUCCESS = 0, - MSS_I2C_IN_PROGRESS, - MSS_I2C_FAILED -} mss_i2c_status_t; - -/*-------------------------------------------------------------------------*//** - The mss_i2c_slave_handler_ret_t type is used by slave write handler functions - to indicate whether the received data buffer should be released or not. - */ -typedef enum mss_i2c_slave_handler_ret { - MSS_I2C_REENABLE_SLAVE_RX = 0, - MSS_I2C_PAUSE_SLAVE_RX = 1 -} mss_i2c_slave_handler_ret_t; - -/*-------------------------------------------------------------------------*//** - Slave write handler functions prototype. - ------------------------------------------------------------------------------ - This defines the function prototype that must be followed by MSS I2C slave - write handler functions. These functions are registered with the MSS I2C driver - through the MSS_I2C_register_write_handler() function. - - Declaring and Implementing Slave Write Handler Functions: - Slave write handler functions should follow the following prototype: - mss_i2c_slave_handler_ret_t write_handler( uint8_t * data, uint16_t size ); - - The data parameter is a pointer to a buffer (received data buffer) holding - the data written to the MSS I2C slave. - The size parameter is the number of bytes held in the received data buffer. - Handler functions must return one of the following values: - • MSS_I2C_REENABLE_SLAVE_RX - • MSS_I2C_PAUSE_SLAVE_RX. - If the handler function returns MSS_I2C_REENABLE_SLAVE_RX, the driver will - release the received data buffer and allow further I2C write transactions to - the MSS I2C slave to take place. - If the handler function returns MSS_I2C_PAUSE_SLAVE_RX, the MSS I2C slave - will respond to subsequent write requests with a non-acknowledge bit (NACK), - until the received data buffer content has been processed by some other part - of the software application. - A call to MSS_I2C_enable_slave_rx() is required at some point after - returning MSS_I2C_PAUSE_SLAVE_RX in order to release the received data - buffer so it can be used to store data received by subsequent I2C write - transactions. - */ -typedef mss_i2c_slave_handler_ret_t (*mss_i2c_slave_wr_handler_t)( uint8_t *, uint16_t ); - -/*-------------------------------------------------------------------------*//** - mss_i2c_instance_t - ------------------------------------------------------------------------------ - There is one instance of this structure for each of the microcontroller - subsystem's I2Cs. Instances of this structure are used to identify a specific - I2C. A pointer to an instance of the mss_i2c_instance_t structure is passed as - the first parameter to MSS I2C driver functions to identify which I2C should - perform the requested operation. - */ -typedef struct mss_i2c_instance -{ - uint_fast8_t ser_address; - /* Transmit related info:*/ - uint_fast8_t target_addr; - - /* Current transaction type (WRITE, READ, RANDOM_READ)*/ - uint8_t transaction; - - uint_fast16_t random_read_addr; - - uint8_t options; - - /* I2C hardware instance identification */ - IRQn_Type irqn; - I2C_TypeDef * hw_reg; - I2C_BitBand_TypeDef * hw_reg_bit; - - /* TX INFO: */ - const uint8_t * tx_buffer; - uint_fast16_t tx_size; - uint_fast16_t tx_idx; - uint_fast8_t dir; - - /* RX INFO: */ - uint8_t * rx_buffer; - uint_fast16_t rx_size; - uint_fast16_t rx_idx; - - /* status variable: */ - volatile mss_i2c_status_t status; - - /* Slave data: */ - uint_fast8_t slave_mem_offset_length; - mss_i2c_slave_wr_handler_t slave_write_handler; - - /* Used to get access to and wait for completion of an I2C transaction. */ - SemaphoreHandle_t xI2CCompleteSemaphore; - -} mss_i2c_instance_t; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 0. A pointer to g_mss_i2c0 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 0 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c0; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 1. A pointer to g_mss_i2c1 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 1 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c1; - -/*-------------------------------------------------------------------------*//** - MSS I2C initialisation routine. - ------------------------------------------------------------------------------ - The MSS_I2C_init() function initializes and configures hardware and data - structures of one of the SmartFusion MSS I2Cs. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block to be initialized. There are two such - data structures, g_mss_i2c0 and g_mss_i2c1, associated with MSS I2C 0 and - MSS I2C 1 respectively. This parameter must point to either the g_mss_i2c0 - or g_mss_i2c1 global data structure defined within the I2C driver. - - @param ser_address: - This parameter sets the I2C serial address being initialized. It is the I2C - bus address to which the MSS I2C instance will respond. Any 8 bit address is - allowed. - - @param ser_clock_speed: - This parameter sets the I2C serial clock frequency. It selects the divider - that will be used to generate the serial clock from the APB clock. It can be - one of the following: - • MSS_I2C_PCLK_DIV_256 - • MSS_I2C_PCLK_DIV_224 - • MSS_I2C_PCLK_DIV_192 - • MSS_I2C_PCLK_DIV_160 - • MSS_I2C_PCLK_DIV_960 - • MSS_I2C_PCLK_DIV_120 - • MSS_I2C_PCLK_DIV_60 - • MSS_I2C_BCLK_DIV_8 - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -); - -/******************************************************************************* - ******************************************************************************* - * - * Master specific functions - * - * The following functions are only used within an I2C master's implementation. - */ - -/*-------------------------------------------------------------------------*//** - I2C master write function. - ------------------------------------------------------------------------------ - This function initiates an I2C master write transaction. This function returns - immediately after initiating the transaction. The content of the write buffer - passed as parameter should not be modified until the write transaction - completes. It also means that the memory allocated for the write buffer should - not be freed or go out of scope before the write completes. You can check for - the write transaction completion using the MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param write_buffer: - This parameter is a pointer to a buffer holding the data to be written to - the target I2C device. - Care must be taken not to release the memory used by this buffer before the - write transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the write - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reused and modified causing unexpected data to be - written to the target I2C device. - - @param write_size: - Number of bytes held in the write_buffer to be written to the target I2C - device. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master read. - ------------------------------------------------------------------------------ - This function initiates an I2C master read transaction. This function returns - immediately after initiating the transaction. - The content of the read buffer passed as parameter should not be modified - until the read transaction completes. It also means that the memory allocated - for the read buffer should not be freed or go out of scope before the read - completes. You can check for the read transaction completion using the - MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param read_buffer - Pointer to a buffer where the data received from the target device will be - stored. - Care must be taken not to release the memory used by this buffer before the - read transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the read - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reallocated resulting in the read transaction - corrupting the newly allocated memory. - - @param read_size: - This parameter is the number of bytes to read from the target device. This - size must not exceed the size of the read_buffer buffer. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the read transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the read transaction, - preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master write-read - ------------------------------------------------------------------------------ - This function initiates an I2C write-read transaction where data is first - written to the target device before issuing a restart condition and changing - the direction of the I2C transaction in order to read from the target device. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param addr_offset: - This parameter is a pointer to the buffer containing the data that will be - sent to the slave during the write phase of the write-read transaction. This - data is typically used to specify an address offset specifying to the I2C - slave device what data it must return during the read phase of the - write-read transaction. - - @param offset_size: - This parameter specifies the number of offset bytes to be written during the - write phase of the write-read transaction. This is typically the size of the - buffer pointed to by the addr_offset parameter. - - @param read_buffer: - This parameter is a pointer to the buffer where the data read from the I2C - slave will be stored. - - @param read_size: - This parameter specifies the number of bytes to read from the target I2C - slave device. This size must not exceed the size of the buffer pointed to by - the read_buffer parameter. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write-read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write-read transaction causing the bus to be released for other - I2C devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write-read - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C status - ------------------------------------------------------------------------------ - This function indicates the current state of a MSS I2C instance. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the current state of a MSS I2C instance or the - outcome of the previous transaction if no transaction is in progress. - Possible return values are: - SUCCESS - The last I2C transaction has completed successfully. - IN_PROGRESS - There is an I2C transaction in progress. - FAILED - The last I2C transaction failed. - - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -); - -/*-------------------------------------------------------------------------*//** - Wait for I2C transaction completion. - ------------------------------------------------------------------------------ - This function waits for the current I2C transaction to complete. The return - value indicates whether the last I2C transaction was successful, or is still - in progress, or failed. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the outcome of the last I2C transaction. It can - be one of the following: - MSS_I2C_SUCCESS - The last I2C transaction has completed successfully. - MSS_I2C_IN_PROGRESS - The current I2C transaction is still in progress. - MSS_I2C_FAILED - The last I2C transaction failed. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -); - - -/******************************************************************************* - ******************************************************************************* - * - * Slave specific functions - * - * The following functions are only used within the implementation of an I2C - * slave device. - */ - -/*-------------------------------------------------------------------------*//** - I2C slave transmit buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer holding the data that will be sent - to the I2C master when this MSS I2C instance is the target of an I2C read or - write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param tx_buffer: - This parameter is a pointer to the memory buffer holding the data to be - returned to the I2C master when this MSS I2C instance is the target of an - I2C read or write-read transaction. - - @param tx_size: - Size of the transmit buffer pointed to by the tx_buffer parameter. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer that will be used by the MSS I2C - instance to receive data when it is a slave. This buffer is the memory where - data will be stored when the MSS I2C is the target of an I2C master write - transaction (i.e. when it is the slave). - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param rx_buffer: - This parameter is a pointer to the memory buffer allocated by the caller - software to be used as a slave receive buffer. - - @param rx_size: - Size of the slave receive buffer. This is the amount of memory that is - allocated to the buffer pointed to by rx_buffer. - Note: This buffer size will indirectly specify the maximum I2C write - transaction length this MSS I2C instance can be the target of. This - is because this MSS I2C instance will respond to further received - bytes with a non-acknowledge bit (NACK) as soon as its receive - buffer is full. This will cause the write transaction to fail. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave memory offset length configuration. - ------------------------------------------------------------------------------ - This function is used as part of the configuration of a MSS I2C instance for - operation as a slave supporting write-read transactions. It specifies the - number of bytes expected as part of the write phase of a write-read - transaction. The bytes received during the write phase of a write-read - transaction will be interpreted as an offset into the slave’s transmit buffer. - This allows random access into the I2C slave transmit buffer from a remote - I2C master. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param offset_length: - The offset_length parameter configures the number of bytes to be interpreted - by the MSS I2C slave as a memory offset value during the write phase of - write-read transactions. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -); - -/*-------------------------------------------------------------------------*//** - I2C write handler registration. - ------------------------------------------------------------------------------ - Register the function that will be called to process the data written to this - MSS I2C instance when it is the slave in an I2C write transaction. - Note: The write handler is not called as a result of a write-read transaction. - The write data of a write read transaction is interpreted as an offset - into the slave’s transmit buffer and handled by the driver. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param handler: - Pointer to the function that will process the I2C write request. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive enable. - ------------------------------------------------------------------------------ - Enables the MSS I2C instance identified through the this_i2c parameter to - receive data when it is the target of an I2C write or write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -); - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_I2C_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c deleted file mode 100644 index faa199d9a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c +++ /dev/null @@ -1,536 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * Implementation of sample basic driver for OLED display found on Actel - * SmartFusion development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - *****************************************************************************/ - - #include "oled.h" -#include "../bsp_config.h" - -/***************************************************************************//** - Command definitions for the SSD300 controller inside the OLED display module. - */ -#define CMD_DISPLAY_OFF_SET 0xD3 -#define CMD_PANEL_ON 0xAF -#define CMD_PANEL_OFF 0xAE -#define CMD_DC_DC 0xAD -#define CMD_DC_DC_DEFAULT_ON 0x8B -#define CMD_DC_DC_OFF 0x8A -#define CMD_DISPLAY_ALL_ON 0xA5 -#define CMD_DISPLAY_ALL_OFF 0xA4 -#define CMD_DISPLAY_NON_INV 0xA6 -#define CMD_DISPLAY_INV 0xA7 -#define CMD_ARECOL_LPM 0xD8 -#define CMD_ARECOL_MONO 0x00 -#define CMD_ARECOL_COLOR 0x30 -#define CMD_LPM_ON 0x05 -#define CMD_LPM_OFF 0x00 -#define CMD_CONTRAST 0x81 -#define CMD_MIRROR_HORI_ON 0xC8 -#define CMD_MIRROR_HORI_OFF 0xC0 -#define CMD_MIRROR_VERT_ON 0xA1 -#define CMD_MIRROR_VERT_OFF 0xA0 -#define CMD_HORI_SCRL 0x26 -#define CMD_HORI_SCRL_ON 0x2F -#define CMD_HORI_SCRL_OFF 0x2E -#define CMD_MUX_RATIO 0xA8 -#define CMD_MUX_RATIO_31 0x23 - -#define CMD_PAGE_0 0xB0 -#define CMD_PAGE_1 0xB1 -#define CMD_PAGE_2 0xB2 -#define CMD_PAGE_3 0xB3 -#define CMD_PAGE_4 0xB4 -#define CMD_PAGE_5 0xB5 - -#define CMD_LOW_NIB_COL 0x00 -#define CMD_HIGH_NIB_COL 0x10 - -#define CMD_START_LINE 0x50 -#define CONTRAST_DEFAULT 0xFF -#define CONTRAST_25_PERC 0x40 -#define CONTRAST_100_PERC 0xFF -#define CONTRAST_0_PERC 0x00 -#define SCROLL_1_COLUMN 0x01 -#define SCROLL_2_COLUMN 0x02 -#define SCROLL_3_COLUMN 0x03 -#define SCROLL_4_COLUMN 0x04 -#define SCROLL_PAGE_0 0x00 -#define SCROLL_PAGE_1 0x01 -#define SCROLL_PAGE_2 0x02 -#define SCROLL_PAGE_3 0x03 -#define SCROLL_PAGE_4 0x04 -#define SCROLL_PAGE_5 0x05 -#define SCROLL_12_FRAMES 0x00 -#define SCROLL_64_FRAMES 0x01 -#define SCROLL_128_FRAMES 0x02 -#define SCROLL_256_FRAMES 0x03 -#define SCROLL_PER_STEP 0x01 -#define PAGE0_COLOR_BAG 0x92 -#define PAGE1_COLOR_BAG 0x93 - -/***************************************************************************//** - OLED display I2C communication protocol control byte values. Used to indicate - whether the byte following the control byte is to be interpreted by the OLED - display as a command or data byte. - */ -#define OLED_COMMAND_CODE 0x80 -#define OLED_DATA_CODE 0xC0 - -/***************************************************************************//** - I2C serial address of OLED display. - */ -#define OLED_SLAVE_ADDRESS 0x78 - -/***************************************************************************//** - Bitmaps of the character set. - Each character is 5 pixels wide and 7 pixels high. - The table is indexed on ASCII character codes. - */ -#define CHARACTER_WIDTH 5 - -const unsigned char oled_ascii_character_set[255][CHARACTER_WIDTH] = -{ - {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, 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, 0x5F, 0x00, 0x00}, - {0x00, 0x07, 0x00, 0x07, 0x00}, - {0x14, 0x7F, 0x14, 0x7F, 0x14}, - {0x24, 0x2A, 0x7F, 0x2A, 0x12}, - {0x23, 0x13, 0x08, 0x64, 0x62}, - {0x36, 0x49, 0x55, 0x22, 0x50}, - {0x00, 0x05, 0x03, 0x00, 0x00}, - {0x00, 0x1C, 0x22, 0x41, 0x00}, - {0x00, 0x41, 0x22, 0x1C, 0x00}, - {0x14, 0x08, 0x3E, 0x08, 0x14}, - {0x08, 0x08, 0x3E, 0x08, 0x08}, - {0x00, 0x50, 0x30, 0x00, 0x00}, - {0x08, 0x08, 0x08, 0x08, 0x08}, - {0x00, 0x60, 0x60, 0x00, 0x00}, - {0x20, 0x10, 0x08, 0x04, 0x02}, - {0x3E, 0x51, 0x49, 0x45, 0x3E}, - {0x00, 0x42, 0x7F, 0x40, 0x00}, - {0x42, 0x61, 0x51, 0x49, 0x46}, - {0x21, 0x41, 0x45, 0x4B, 0x31}, - {0x18, 0x14, 0x12, 0x7F, 0x10}, - {0x27, 0x45, 0x45, 0x45, 0x39}, - {0x3C, 0x4A, 0x49, 0x49, 0x30}, - {0x01, 0x71, 0x09, 0x05, 0x03}, - {0x36, 0x49, 0x49, 0x49, 0x36}, - {0x06, 0x49, 0x49, 0x29, 0x1E}, - {0x00, 0x36, 0x36, 0x00, 0x00}, - {0x00, 0x56, 0x36, 0x00, 0x00}, - {0x08, 0x14, 0x22, 0x41, 0x00}, - {0x14, 0x14, 0x14, 0x14, 0x14}, - {0x00, 0x41, 0x22, 0x14, 0x08}, - {0x02, 0x01, 0x51, 0x09, 0x06}, - {0x32, 0x49, 0x79, 0x41, 0x3E}, - {0x7E, 0x11, 0x11, 0x11, 0x7E}, - {0x7F, 0x49, 0x49, 0x49, 0x36}, - {0x3E, 0x41, 0x41, 0x41, 0x22}, - {0x7F, 0x41, 0x41, 0x22, 0x1C}, - {0x7F, 0x49, 0x49, 0x49, 0x41}, - {0x7F, 0x09, 0x09, 0x09, 0x01}, - {0x3E, 0x41, 0x49, 0x49, 0x7A}, - {0x7F, 0x08, 0x08, 0x08, 0x7F}, - {0x00, 0x41, 0x7F, 0x41, 0x00}, - {0x20, 0x40, 0x41, 0x3F, 0x01}, - {0x7F, 0x08, 0x14, 0x22, 0x41}, - {0x3F, 0x40, 0x40, 0x40, 0x40}, - {0x7F, 0x02, 0x0C, 0x02, 0x7F}, - {0x7F, 0x04, 0x08, 0x10, 0x7F}, - {0x3E, 0x41, 0x41, 0x41, 0x3E}, - {0x7F, 0x09, 0x09, 0x09, 0x06}, - {0x3E, 0x41, 0x51, 0x21, 0x5E}, - {0x7F, 0x09, 0x19, 0x29, 0x46}, - {0x46, 0x49, 0x49, 0x49, 0x31}, - {0x01, 0x01, 0x7F, 0x01, 0x01}, - {0x3F, 0x40, 0x40, 0x40, 0x3F}, - {0x1F, 0x20, 0x40, 0x20, 0x1F}, - {0x3F, 0x40, 0x38, 0x40, 0x3F}, - {0x63, 0x14, 0x08, 0x14, 0x63}, - {0x07, 0x08, 0x70, 0x08, 0x07}, - {0x61, 0x51, 0x49, 0x45, 0x43}, - {0x00, 0x7F, 0x41, 0x41, 0x00}, - {0x02, 0x04, 0x08, 0x10, 0x20}, - {0x00, 0x41, 0x41, 0x7F, 0x00}, - {0x04, 0x02, 0x01, 0x02, 0x04}, - {0x40, 0x40, 0x40, 0x40, 0x40}, - {0x00, 0x01, 0x02, 0x04, 0x00}, - {0x20, 0x54, 0x54, 0x54, 0x78}, - {0x7F, 0x48, 0x44, 0x44, 0x38}, - {0x38, 0x44, 0x44, 0x44, 0x20}, - {0x30, 0x48, 0x48, 0x50, 0x7F}, - {0x38, 0x54, 0x54, 0x54, 0x18}, - {0x10, 0x7E, 0x11, 0x01, 0x02}, - {0x0C, 0x52, 0x52, 0x52, 0x3E}, - {0x7F, 0x08, 0x04, 0x04, 0x78}, - {0x00, 0x44, 0x7D, 0x40, 0x00}, - {0x20, 0x40, 0x44, 0x3D, 0x00}, - {0x7F, 0x10, 0x28, 0x44, 0x00}, - {0x00, 0x41, 0x7F, 0x40, 0x00}, - {0x7C, 0x04, 0x18, 0x04, 0x78}, - {0x7C, 0x08, 0x04, 0x04, 0x78}, - {0x38, 0x44, 0x44, 0x44, 0x38}, - {0x7C, 0x14, 0x14, 0x14, 0x08}, - {0x08, 0x14, 0x14, 0x18, 0x7C}, - {0x7C, 0x08, 0x04, 0x04, 0x08}, - {0x48, 0x54, 0x54, 0x54, 0x20}, - {0x04, 0x3F, 0x44, 0x40, 0x20}, - {0x3C, 0x40, 0x40, 0x20, 0x7C}, - {0x1C, 0x20, 0x40, 0x20, 0x1C}, - {0x3C, 0x40, 0x30, 0x40, 0x3C}, - {0x44, 0x28, 0x10, 0x28, 0x44}, - {0x0C, 0x50, 0x50, 0x50, 0x3C}, - {0x44, 0x64, 0x54, 0x4C, 0x44}, - - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x07, 0x05, 0x07, 0x00, 0x00}, - {0x12, 0x19, 0x16, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00} - -}; - -#define FIRST_CHARACTER 0 - -/***************************************************************************//** - The g_p_oled_i2c global variable is only used inside the OLED driver. It - identifies the MSS I2C block used to communicate with the OLED display. - */ -static mss_i2c_instance_t * g_p_oled_i2c = OLED_I2C_INSTANCE; - -/***************************************************************************//** - The OLED_set_cursor function sets the cursor position. - - @param line - The line parameter specifies the line at which to set the cursor. It can - take the values: - - FIRST_LINE - - SECOND_LINE - - @param char_offset - The char_offset paraemter specifies the character offset on a line where to - set the cursor location. It can be set to FIRST_CHARACTER to set the cursor - at the start of a line. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -); -/***************************************************************************//** - The OLED_write_string function displays the input string to the OLED panel. - - @param string - The string parameter is a pointer to the zero-terminated to display on the - OLED. - */ -void OLED_write_string( const char *string); - -/***************************************************************************//** - The OLED_write_char function displays a single character to the display. - - @param data_char - The data_char parameter is the ASCII code of the character to display. -*/ -void OLED_write_char( const uint8_t data_char ); -/***************************************************************************//** - OLED_init() - See "oled.h" for details of how to use this function. - */ -void OLED_init(void ) -{ - uint8_t oled_init_sequence1[] = - { - OLED_COMMAND_CODE, CMD_DISPLAY_NON_INV, - OLED_COMMAND_CODE, CMD_DISPLAY_ALL_OFF, - OLED_COMMAND_CODE, CMD_MIRROR_HORI_ON, - OLED_COMMAND_CODE, CMD_MIRROR_VERT_OFF, - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - OLED_COMMAND_CODE, CMD_ARECOL_LPM, - OLED_COMMAND_CODE, CMD_ARECOL_MONO^CMD_LPM_OFF - }; - - uint8_t oled_init_sequence2[] = - { - OLED_COMMAND_CODE, CMD_START_LINE, - OLED_COMMAND_CODE, CMD_PANEL_ON - }; - - MSS_I2C_init( g_p_oled_i2c, OLED_SLAVE_ADDRESS, MSS_I2C_PCLK_DIV_60 ); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence1, sizeof(oled_init_sequence1), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_clear_display(BOTH_LINES); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence2, sizeof(oled_init_sequence2), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_set_cursor( FIRST_LINE, FIRST_CHARACTER ); -} - -/***************************************************************************//** - OLED_clear_display() - See "oled.h" for details of how to use this function. - */ -void OLED_clear_display( oled_no_of_line LINES ) -{ - uint8_t i, j,start_line = 0,end_line = 0; - uint8_t clear_8_columns[] = - { - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00 - }; - - switch(LINES) - { - case FIRST_LINE: - { - start_line = FIRST_LINE; - end_line = FIRST_LINE; - } - - case SECOND_LINE: - { - start_line = SECOND_LINE; - end_line = SECOND_LINE; - } - - case BOTH_LINES: - { - start_line = FIRST_LINE; - end_line = SECOND_LINE; - } - - } - - for( j = start_line; j <= end_line; ++j ) - { - OLED_set_cursor( j, FIRST_CHARACTER ); - for( i = 0; i < 13; ++i ) - { - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, clear_8_columns, sizeof(clear_8_columns), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } - } -} - -/***************************************************************************//** - OLED_set_cursor() - See definition of OLED_set_cursor() for details of how to use this function. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -) -{ - uint8_t command_sequence[] = - { - OLED_COMMAND_CODE, CMD_LOW_NIB_COL, - OLED_COMMAND_CODE, CMD_HIGH_NIB_COL, - OLED_COMMAND_CODE, CMD_PAGE_0 - }; - uint8_t low_nib, high_nib; - - ++char_offset; - char_offset *= CHARACTER_WIDTH; - low_nib = 0x0F & char_offset; - high_nib = (0xF0 & char_offset) >> 4; - line += 2; - - command_sequence[1] |= low_nib; - command_sequence[3] |= high_nib; - command_sequence[5] |= line; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, command_sequence, sizeof(command_sequence), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_write_string() - See definition of OLED_write_string for details of how to use this function. - */ -void OLED_write_string -( - const char *string -) -{ - while (*string != 0) - { - OLED_write_char( *string ); - ++string; - } -} - -/***************************************************************************//** - OLED_write_char() - See definition of OLED_write_char() for details of how to use this function. - */ -void OLED_write_char -( - const uint8_t data_char -) -{ - uint8_t txbuff[10]; - uint8_t i; - - for ( i = 0; i < CHARACTER_WIDTH; ++i ) - { - txbuff[i * 2] = OLED_DATA_CODE; - txbuff[(i * 2) + 1] = oled_ascii_character_set[data_char][i]; - } - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, txbuff, sizeof(txbuff), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_horizontal_scroll() - See "oled.h" for details of how to use this function. - */ -void OLED_horizontal_scroll(struct oled_data * horiz_scroll) -{ - uint8_t horiz_scroll_on_off[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - }; - - uint8_t horiz_scroll_setup_data[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL, - OLED_COMMAND_CODE, SCROLL_PER_STEP, - OLED_COMMAND_CODE, SCROLL_PAGE_0, - OLED_COMMAND_CODE, SCROLL_12_FRAMES, - OLED_COMMAND_CODE, SCROLL_PAGE_1, - }; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - if(horiz_scroll->on_off == 1) - { - horiz_scroll_setup_data[3] = horiz_scroll->column_scrool_per_step; - horiz_scroll_setup_data[5] = horiz_scroll->start_page; - horiz_scroll_setup_data[7] = horiz_scroll->time_intrval_btw_scroll_step; - horiz_scroll_setup_data[9] = horiz_scroll->end_page; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_setup_data, sizeof(horiz_scroll_setup_data), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - horiz_scroll_on_off[1] = CMD_HORI_SCRL_ON; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } -} - -/***************************************************************************//** - OLED_contrast() - See "oled.h" for details of how to use this function. - */ -void OLED_contrast(uint8_t color_contrast) -{ - uint8_t oled_contrast[] = - { - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - }; - - oled_contrast[3] = color_contrast; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_contrast, sizeof(oled_contrast), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - -} - -/***************************************************************************//** - OLED_write_data() - See "oled.h" for details of how to use this function. - */ -void OLED_write_data(struct oled_data* data, oled_no_of_line LINES) -{ - uint8_t line; - uint8_t char_offset; - char *string; - - switch(LINES) - { - - case FIRST_LINE: - { - OLED_clear_display(FIRST_LINE); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - } - - case SECOND_LINE: - { - OLED_clear_display(SECOND_LINE); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - case BOTH_LINES: - { - OLED_clear_display(BOTH_LINES); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - OLED_contrast(data->contrast_val); - } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h deleted file mode 100644 index 17ab4a71c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h +++ /dev/null @@ -1,210 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * API of sample basic driver for OLED display found on Actel SmartFusion - * development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - * - */ -#ifndef OLED_H_ -#define OLED_H_ - -#include "i2c.h" - -#define OLED_HORIZ_SCROLL_ON 0x01 -#define OLED_HORIZ_SCROLL_OFF 0x00 -#define OLED_HORIZ_SCROLL_STEP 0x08 -#define OLED_CONTRAST_VAL 0xFF -#define OLED_START_PAGE 0x01 -#define OLED_HORIZ_SCROLL_TINVL 0x00 -#define OLED_END_PAGE 0x05 -/*-------------------------------------------------------------------------*/ -/* The oled_no_of_line type represents number of lines to be written on OLED. - FIRST LINE : The OLED cursor is set to line number 1 and only 1 line is - printed on OLED - SECOND_LINE : The OLED cursor is set to line number 2 and only 1 line is - printed on OLED - BOTH_LINES : The OLED cursor is set to line number 1 and line 1 and line 2 - are printed on OLED -*/ -typedef enum { - FIRST_LINE = 0, - SECOND_LINE, - BOTH_LINES -} oled_no_of_line; - -/*-------------------------------------------------------------------------*//** - oled_data - ------------------------------------------------------------------------------ - There is one instance of this structure for OLED data. Instances of this - structure is used to provide the data to OLED. A pointer to an instance of - the oled_data structure is passed as the parameter OLED driver functions. - */ -struct oled_data -{ - /* Represents line number, where String 1 has to be printed */ - uint8_t line1; - /* Represents character offset within the line1, from where String 1 has to be - * printed */ - uint8_t char_offset1; - /* Represents line number, where String 2 has to be printed */ - uint8_t line2; - /* Represents character offset within the line2, from where String 2 has to be - * printed */ - uint8_t char_offset2; - /* String 1 holds the data to be displayed on line 1 of OLED, It has to be - * less that 49 characters*/ - char *string1; - /* String 1 holds the data to be displayed on line 2 of OLED, It has to be - * less that 49 characters*/ - char *string2; - /* Holds the contrast value to be set for String 1 and String 2 */ - uint8_t contrast_val; - /* Represents ON or OFF for horizontal scrolling */ - uint8_t on_off; - /* Represents number of coumns scrolls per step for horizontal scroll*/ - unsigned char column_scrool_per_step; - /* Represents start page for horizontal scroll*/ - unsigned char start_page; - /* Represents time interval for horizontal scroll*/ - unsigned char time_intrval_btw_scroll_step; - /* Represents end page for horizontal scroll*/ - unsigned char end_page; - -}; -/***************************************************************************//** - The following defines can be used as parameter to the OLED_set_cursor() - function. - */ - -/***************************************************************************//** - The OLED_init function initializes the OLED display. - */ -void vOLEDInit( void ); -void OLED_init( void ); - -/***************************************************************************//** - This function(OLED_clear_display) clears the content of the display RAM - based on the LINES input. - ------------------------------------------------------------------------------ - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - clears only First line that is 0 - If SECOND_LINE is passed as parameter to this function thnen, this functions - clears only Second line that is 1 - If BOTH_LINE is passed as parameter to this function thnen, this functions - clears entire OLED display. - */ -void OLED_clear_display( oled_no_of_line LINES ); - -/*-------------------------------------------------------------------------*//** - OLED Write data. - ------------------------------------------------------------------------------ - This function (OLED_write_data ) writes the data to OLED basedon the - parameters passed to this function. - ------------------------------------------------------------------------------ - @param data: - The data parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). - - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at FIRST LINE - If SECOND_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at SECOND LINE - If BOTH_LINE is passed as parameter to this function thnen, this functions - wtites string 1 and string 2 at FIRST LINE and SECOND LINE respectively. -Example: - @code -#include "drivers/mss_watchdog/mss_watchdog.h" -#include "oled.h" -#define FIRST_CHARACTER 0 - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - return 0; -} - @endcode - */ - -void OLED_write_data(struct oled_data * data, oled_no_of_line flag); - -/*-------------------------------------------------------------------------*//** - OLED Horizontal scrolling. - ------------------------------------------------------------------------------ - This function (OLED_horizontal_scroll ) enbles the Horizontal scrolling. - ------------------------------------------------------------------------------ - @param data: - The horiz_scroll parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). -Example: - @code - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - write_data.on_off = 0x01; - write_data.column_scrool_per_step = 0x08; - write_data.start_page = 0x01; - write_data.time_intrval_btw_scroll_step = 0x00; - write_data.end_page = 0x05; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - OLED_horizontal_scroll(&write_data); - return 0; -} - @endcode - */ - -void OLED_horizontal_scroll(struct oled_data * horiz_scroll); - -/***************************************************************************//** - This function(OLED_contrast) sets ths conrtast to the data displayed on the - OLED. - ------------------------------------------------------------------------------ - @param color_contrast: - The color_contrast parameter that holds contrast value. - The color_contrast values should be in the range of 1 to 256. - */ -void OLED_contrast(uint8_t color_contrast); - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h deleted file mode 100644 index 79f456e1a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Configuration for the ON-BOARD peripherals for SmartFusion KITS. - * - *******************************************************************************/ -#ifndef BSP_CONFIG_H_ -#define BSP_CONFIG_H_ - -#include "i2c.h" -/* Configuration for OLED */ -#define OLED_I2C_INSTANCE &g_mss_i2c0 - -/* Configuration for the SPI Flash */ -#define SPI_FLASH_ON_SF_DEV_KIT 0 -#define SPI_FLASH_ON_SF_EVAL_KIT 1 - -#define USE_DMA_FOR_SPI_FLASH 1 -#define SPI_FLASH_DMA_CHANNEL 0 - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c deleted file mode 100644 index dbe1205ba..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c +++ /dev/null @@ -1,831 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ -#include "mss_ace.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_handles.h" -#include "../../drivers_config/mss_ace/ace_config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * - */ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; -extern ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC]; -extern const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS]; - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - * - */ -#define VOLTAGE_CHANNEL 0u -#define CURRENT_CHANNEL 1u -#define TEMPERATURE_CHANNEL 2u -#define INVALID_CHANNEL 0xFFu - -static const uint8_t channel_type_lut[] = -{ - VOLTAGE_CHANNEL, /* ADC0_1P5V = 0 */ - VOLTAGE_CHANNEL, /* ABPS0 = 1 */ - VOLTAGE_CHANNEL, /* ABPS1 = 2 */ - CURRENT_CHANNEL, /* CM0 = 3 */ - TEMPERATURE_CHANNEL, /* TM0 = 4 */ - VOLTAGE_CHANNEL, /* ABPS2 = 5 */ - VOLTAGE_CHANNEL, /* ABPS3 = 6 */ - CURRENT_CHANNEL, /* CM1 = 7 */ - TEMPERATURE_CHANNEL, /* TM1 = 8 */ - VOLTAGE_CHANNEL, /* ADC0 = 9 */ - VOLTAGE_CHANNEL, /* ADC1 = 10 */ - VOLTAGE_CHANNEL, /* ADC2 = 11 */ - VOLTAGE_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD0_IN = 15 */ - - VOLTAGE_CHANNEL, /* ADC1_1P5V = 16 */ - VOLTAGE_CHANNEL, /* ABPS4 = 17 */ - VOLTAGE_CHANNEL, /* ABPS5 = 18 */ - CURRENT_CHANNEL, /* CM2 = 19 */ - TEMPERATURE_CHANNEL, /* TM2 = 20 */ - VOLTAGE_CHANNEL, /* ABPS6 = 21 */ - VOLTAGE_CHANNEL, /* ABPS7 = 22 */ - CURRENT_CHANNEL, /* CM3 = 23 */ - TEMPERATURE_CHANNEL, /* TM3 = 24 */ - VOLTAGE_CHANNEL, /* ADC4 = 25 */ - VOLTAGE_CHANNEL, /* ADC5 = 26 */ - VOLTAGE_CHANNEL, /* ADC6 = 27 */ - VOLTAGE_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD1_IN = 31 */ - - VOLTAGE_CHANNEL, /* ADC2_1P5V = 32 */ - VOLTAGE_CHANNEL, /* ABPS8 = 33 */ - VOLTAGE_CHANNEL, /* ABPS9 = 34 */ - CURRENT_CHANNEL, /* CM4 = 35 */ - TEMPERATURE_CHANNEL, /* TM4 = 36 */ - VOLTAGE_CHANNEL, /* ABPS10 = 37 */ - VOLTAGE_CHANNEL, /* ABPS11 = 38 */ - CURRENT_CHANNEL, /* CM5 = 39 */ - TEMPERATURE_CHANNEL, /* TM5 = 40 */ - VOLTAGE_CHANNEL, /* ADC8 = 41 */ - VOLTAGE_CHANNEL, /* ADC9 = 42 */ - VOLTAGE_CHANNEL, /* ADC10 = 43 */ - VOLTAGE_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t channel_quad_lut[] = -{ - 0xFFu, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - 0u, /* CM0 = 3 */ - 0u, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - 1u, /* CM1 = 7 */ - 1u, /* TM1 = 8 */ - 0xFFu, /* ADC0 = 9 */ - 0xFFu, /* ADC1 = 10 */ - 0xFFu, /* ADC2 = 11 */ - 0xFFu, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD0_IN = 15 */ - - 0xFFu, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - 2u, /* CM2 = 19 */ - 2u, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - 3u, /* CM3 = 23 */ - 3u, /* TM3 = 24 */ - 0xFFu, /* ADC4 = 25 */ - 0xFFu, /* ADC5 = 26 */ - 0xFFu, /* ADC6 = 27 */ - 0xFFu, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD1_IN = 31 */ - - 0xFFu, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - 4u, /* CM4 = 35 */ - 4u, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - 5u, /* CM5 = 39 */ - 5u, /* TM5 = 40 */ - 0xFFu, /* ADC8 = 41 */ - 0xFFu, /* ADC9 = 42 */ - 0xFFu, /* ADC10 = 43 */ - 0xFFu, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -#define NON_ABPS_CHANNEL 0xFFu -#define MAX_NB_OF_APBS 12u - -/*-------------------------------------------------------------------------*//** - * Lookup of the quad to which an ABPS belongs - */ -static const uint8_t abps_channel_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t abps_idx_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 1u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 2u, /* ABPS2 = 5 */ - 3u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 4u, /* ABPS4 = 17 */ - 5u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 6u, /* ABPS6 = 21 */ - 7u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 8u, /* ABPS8 = 33 */ - 9u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 10u, /* ABPS10 = 37 */ - 11u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -static const int8_t apbs_gain_lut[] = -{ - 12, - 8, - 4, - 2 -}; - -static const int16_t apbs_range[] = -{ - 15360, - 10240, - 5120, - 2560 -}; - -static uint8_t g_gdec_lut[MAX_NB_OF_APBS]; -static channel_type_t channel_type_lut_h[ACE_NB_OF_INPUT_CHANNELS]; - - -/*-------------------------------------------------------------------------*//** - * - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -) -{ - channel_type_t channel_type = VOLTAGE; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - channel_type = channel_type_lut_h[channel_handle]; - } - else - { - channel_type = VOLTAGE; - } - - return channel_type; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / g_ace_adc_config[adc_id].adc_resolution; - - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -#define PPE_SAMPLES_RESOLUTION 4095u - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void) -{ - uint8_t abps_idx; - int32_t channel; - uint32_t saved_pc2_ctrl; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Populate the g_gdec_lut look-up table. */ - for(abps_idx = 0u; abps_idx < MAX_NB_OF_APBS; ++abps_idx) - { - uint8_t quad_id; - uint8_t acb_config_byte; - uint32_t channel_is_abps2; - - quad_id = abps_idx / 2u; - acb_config_byte = ACE->ACB_DATA[quad_id].b8; - channel_is_abps2 = abps_idx & 0x01uL; - if(channel_is_abps2) - { - /* ABPS2 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 5u) & 0x03u; - } - else - { - /* ABPS1 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 1u) & 0x03u; - } - } - - /* Populate the channel_type_lut_h look-up table. */ - for(channel = 0; channel < ACE_NB_OF_INPUT_CHANNELS; ++channel) - { - uint8_t quad_id; - uint8_t acb_config_byte; - adc_channel_id_t channel_id; - channel_type_t channel_type; - - channel_id = g_ace_channel_desc_table[channel].signal_id; - quad_id = channel_quad_lut[channel_id]; - - switch (channel_type_lut[channel_id]) - { - case VOLTAGE_CHANNEL: - channel_type = VOLTAGE; - break; - - case CURRENT_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b9; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = CURRENT; - } - break; - - case TEMPERATURE_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b10; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = TEMPERATURE; - } - break; - - default: - ASSERT(0); - channel_type = VOLTAGE; - break; - } - - channel_type_lut_h[channel] = channel_type; - } - - /* Restore SSE PC2 operations. */ - ACE->PC2_CTRL = saved_pc2_ctrl; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t adc_voltage; - int32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint8_t apbs_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - adc_voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / PPE_SAMPLES_RESOLUTION; - voltage = (int32_t)adc_voltage; - - apbs_idx = abps_idx_lut[channel_id]; - if ( abps_channel_lut[channel_id] != NON_ABPS_CHANNEL ) - { - uint8_t gdec; - gdec = g_gdec_lut[apbs_idx]; - voltage = (voltage * apbs_gain_lut[gdec]) - apbs_range[gdec]; - } - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t current = 0u; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - adc_channel_id_t channel_id; - uint8_t current_monitor_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - ASSERT(channel_id < sizeof(channel_type_lut)); - if(CURRENT_CHANNEL == channel_type_lut[channel_id]) - { - uint32_t resistor; - uint32_t voltage; - - /* Compute index into g_ace_current_resistors[] from the current - * channel number. This uses bit 2, 4 and 5 of the channel number - * to derive the index as follows: - * channel name : channel number : index - * CM0 : 0x03 : 0 - * CM1 : 0x07 : 1 - * CM2 : 0x13 : 2 - * CM3 : 0x17 : 3 - * CM4 : 0x23 : 4 - * CM5 : 0x27 : 5 - */ - current_monitor_idx - = (((uint8_t)channel_id & 0x04u) >> 2u) + (((uint8_t)channel_id & 0x30u) >> 3u); - - if(current_monitor_idx < (uint8_t)ACE_NB_OF_CURRENT_MONITORS) - { - /* Retrieve the current sensing external resistor value from - * the ACE configuration data generated by the ACE configurator. */ - resistor = g_ace_current_resistors[current_monitor_idx]; - - /* Compute mA current value taking into account the amplication - * factor of 50 used within the current monitor hardware. */ - voltage = ACE_convert_adc_input_to_mV(channel_handle, sample_value); - current = (voltage * (1000u / 50u)) / resistor; -; - } - } - } - - return current; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t temperature; - uint32_t voltage; - - voltage = ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - temperature = (voltage * 10u) / 25u; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - int32_t voltage; - - voltage = (int32_t)ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - /* Tc = Tk - 273.15 */ - temperature = (voltage * 4) - 2731; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - - temperature = (int32_t)ACE_convert_to_Kelvin( channel_handle, sample_value ); - - /* F = (K * 9/5) - 459.67 */ - temperature = ((temperature * 9) / 5) - 459; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -) -{ - const uint8_t * p_channel_name = 0; - - if ( channel_handle < NB_OF_ACE_CHANNEL_HANDLES) - { - p_channel_name = g_ace_channel_desc_table[channel_handle].p_sz_channel_name; - } - - return p_channel_name; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = g_ace_adc_config[adc_id].adc_resolution - 1u; - } - else - { - sample_value = (uint16_t)((voltage * (g_ace_adc_config[adc_id].adc_resolution - 1)) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = PPE_SAMPLES_RESOLUTION; - } - else - { - sample_value = (uint16_t)((voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -#define MAX_PPE_SAMPLE_VALUE 0x0FFFu - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint32_t adc_voltage; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if ( abps_channel_lut[channel_id] == NON_ABPS_CHANNEL ) - { - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - } - else - { - adc_voltage = 0u; - } - } - else - { - uint8_t apbs_idx; - uint8_t gdec; - - apbs_idx = abps_idx_lut[channel_id]; - gdec = g_gdec_lut[apbs_idx]; - voltage = voltage + apbs_range[gdec]; - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - adc_voltage = adc_voltage / (uint8_t)apbs_gain_lut[gdec]; - } - else - { - adc_voltage = 0; - } - } - - sample_value = (uint16_t)((adc_voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -) -{ - uint16_t sample_value; - uint32_t voltage; - uint32_t resistor = 1u; - - voltage = current * 50u * resistor; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - voltage = (temperature * 25u) / 10u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - temperature = temperature + 2731; - voltage = (uint32_t)temperature / 4u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t kelvin; - - temperature = temperature + 459; - kelvin = (uint32_t)temperature; - kelvin = (kelvin * 5u) / 9u; - - sample_value = ACE_convert_from_Kelvin( channel_handle, kelvin ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -) -{ - uint16_t ppe_value; - - ppe_value = (pdma_value >> 8u) & 0xFFFFu; - if ( channel_id != 0 ) - { - *channel_id = (adc_channel_id_t)((pdma_value >> 24u) & 0xFFu); - } - - return ppe_value; -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h deleted file mode 100644 index 0081310d7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * This file contains the addresses and size of the various blocks of data - * stored in eNVM. - * - * SVN $Revision: 1113 $ - * SVN $Date: 2009-07-01 11:11:29 +0100 (Wed, 01 Jul 2009) $ - */ -#ifndef ENVM_LAYOUT_HEADER -#define ENVM_LAYOUT_HEADER - -#ifdef __cplusplus -extern "C" { -#endif - -/*============================================================================== - * Address of the manufacturing test data. - */ -#define MTD_ADDRESS 0x60080010 - -/*============================================================================== - * MSS configuration location. - */ -#define MSS_CONFIG_ADDRESS 0x60081618 - -/*============================================================================== - * Analog configuration location and size. - */ -#define ANALOG_CONFIG_ADDRESS 0x60081600 -#define ANALOG_CONFIG_BYTE_SIZE 24 - -#ifdef __cplusplus -} -#endif - -#endif /* ENVM_LAYOUT_HEADER */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c deleted file mode 100644 index ebd1e8dde..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c +++ /dev/null @@ -1,746 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ - -#include "mss_ace.h" -#include "mtd_data.h" -#include "envm_layout.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_config.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define START_ADC_CONVERSION 0x80uL - - -/**/ -void ace_init_flags( void ); -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_init( void ) -{ - /* Initialize driver's internal data. */ - #if (ACE_NB_OF_PPE_FLAGS > 0) - ace_init_flags(); - #endif - - /* Initialize the data structures used by conversion functions. */ - ace_init_convert(); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -) -{ - ACE->ADC0_CONV_CTRL = (uint32_t)channel_id | START_ADC_CONVERSION; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define ADC_DATAVALID_MASK 0x00001000uL -#define ADC_RESULT_MASK 0x00000FFFuL - -static const uint32_t volatile * const adc_status_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->ADC0_STATUS, - &ACE->ADC1_STATUS, - &ACE->ADC2_STATUS -}; - -uint16_t ACE_get_adc_result -( - uint8_t adc_id -) -{ - uint16_t result = 0u; - uint32_t data_valid; - - ASSERT( adc_id < NB_OF_ANALOG_MODULES ); - - if ( adc_id < (uint8_t)NB_OF_ANALOG_MODULES ) - { - do { - data_valid = *adc_status_reg_lut[adc_id] & ADC_DATAVALID_MASK; - } while ( !data_valid ); - - result = (uint16_t)(*adc_status_reg_lut[adc_id] & ADC_RESULT_MASK); - } - return result; -} - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ - -#define SDD_ENABLE_MASK 0x20uL -#define SDD_REG_SEL_MASK 0x40uL - -#define DAC0_SYNC_EN_MASK 0x10uL -#define DAC1_SYNC_EN_MASK 0x20uL -#define DAC2_SYNC_EN_MASK 0x40uL - -#define DAC0_SYNC_UPDATE 0x01uL -#define DAC1_SYNC_UPDATE 0x02uL -#define DAC2_SYNC_UPDATE 0x04uL - -/*-------------------------------------------------------------------------*//** - * - */ -static volatile uint32_t * const dac_ctrl_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_CTRL, - &ACE->DAC1_CTRL, - &ACE->DAC1_CTRL -}; - -static const uint32_t dac_enable_masks_lut[NB_OF_ANALOG_MODULES] = -{ - DAC0_SYNC_EN_MASK, - DAC1_SYNC_EN_MASK, - DAC2_SYNC_EN_MASK -}; - -static volatile uint32_t * const dac_byte01_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->SSE_DAC0_BYTES01, - &ACE->SSE_DAC1_BYTES01, - &ACE->SSE_DAC2_BYTES01, -}; - -static volatile uint32_t * const dac_byte2_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_BYTE2, - &ACE->DAC1_BYTE2, - &ACE->DAC2_BYTE2 -}; - -/*------------------------------------------------------------------------------ - * Pointer to the manufacturing test data containing trimming information - * generated during manufacturing. - */ -static const mtd_data_t * const p_mtd_data = (mtd_data_t *)MTD_ADDRESS; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define OBD_MODE_MASK (uint8_t)0x01 -#define OBD_CHOPPING_MASK (uint8_t)0x02 - -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - const uint8_t sdd_2_quad_lut[NB_OF_SDD] = {0u, 2u, 4u}; - uint8_t quad_id; - uint8_t obd_mode_idx = 1u; - uint8_t chopping_mode_idx = 0u; - uint32_t saved_pc2_ctrl; - - quad_id = sdd_2_quad_lut[sdd_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Select between voltage/current and RTZ modes.*/ - ACE->ACB_DATA[quad_id].b6 = mode; - - /* Load manufacturing generated trim value. */ - if ( (mode & OBD_MODE_MASK) > 0u ) - { - obd_mode_idx = 0u; - } - if ( (mode & OBD_CHOPPING_MASK) > 0u ) - { - chopping_mode_idx = 1u; - } - ACE->ACB_DATA[quad_id].b4 - = p_mtd_data->odb_trimming[sdd_id][obd_mode_idx][chopping_mode_idx]; - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - - /* Set SDD resolution. */ - *dac_ctrl_reg_lut[sdd_id] = (uint32_t)resolution; - - /* Update SDD value through SSE_DACn_BYTES01. */ - *dac_ctrl_reg_lut[sdd_id] |= SDD_REG_SEL_MASK; - - /* Synchronous or individual SDD update. */ - if ( INDIVIDUAL_UPDATE == sync_update ) - { - ACE->DAC_SYNC_CTRL &= ~dac_enable_masks_lut[sdd_id]; - } - else - { - ACE->DAC_SYNC_CTRL |= dac_enable_masks_lut[sdd_id]; - } - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] |= SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] &= ~SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_byte2_reg_lut[sdd_id] = sdd_value >> 16; - *dac_byte01_reg_lut[sdd_id] = sdd_value; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -) -{ - uint32_t dac_sync_ctrl; - - dac_sync_ctrl = ACE->DAC_SYNC_CTRL; - - if ( SDD_NO_UPDATE != sdd0_value ) - { - ACE->DAC0_BYTE2 = sdd0_value >> 16; - ACE->SSE_DAC0_BYTES01 = sdd0_value; - dac_sync_ctrl |= DAC0_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd1_value ) - { - ACE->DAC1_BYTE2 = sdd1_value >> 16; - ACE->SSE_DAC1_BYTES01 = sdd1_value; - dac_sync_ctrl |= DAC1_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd2_value ) - { - ACE->DAC2_BYTE2 = sdd2_value >> 16; - ACE->DAC2_BYTE1 = sdd2_value >> 8; - ACE->SSE_DAC2_BYTES01 = sdd2_value; - dac_sync_ctrl |= DAC2_SYNC_UPDATE; - } - - ACE->DAC_SYNC_CTRL = dac_sync_ctrl; -} - -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ - - /* - * SDD Analog switch mask. ACB byte 10. - * 0: TMB comparator reference voltage is an ADC direct input - * 1: TMB comparator reference voltage is one of the SDD outputs as - * selected by DAC_MUXSEL[1:0] - */ -#define B10_COMP_VREF_SW_MASK 0x20u - -/* - * Comparator reference voltage multiplexer. - * Used to select which SDD output will be used as reference voltage for TMB - * comparator. These bits are only meaningful when COMP_VREF_SW is set to 1. - */ -#define B11_DAC_MUXSEL_MASK 0x03u - -/* - * Number of bits to shift a value of type comp_hysteresis_t to get the - * hysteresis to program into ACB b9 or b10. - */ -#define HYSTERESIS_SHIFT 6u - -/* - * Mask of hysteresis bits within ACB b9 or b10. - */ -#define HYSTERESIS_MASK 0xC0u - -/* - * Mask of the comparator enable bit within ACB b9 and b10. - */ -#define COMPARATOR_ENABLE_MASK 0x10u - -/* - * Comparator ID to Signal Conditioning Block (SCB) lookup table. - * USe to find which SCB a comparator belongs to. - */ -const uint8_t comp_id_2_scb_lut[NB_OF_COMPARATORS] = -{ - 0u, /* CMP0 */ - 0u, /* CMP1 */ - 1u, /* CMP2 */ - 1u, /* CMP3 */ - 2u, /* CMP4 */ - 2u, /* CMP5 */ - 3u, /* CMP6 */ - 3u, /* CMP7 */ - 4u, /* CMP8 */ - 4u, /* CMP9 */ - 5u, /* CMP10 */ - 5u /* CMP11 */ -}; - -/*-------------------------------------------------------------------------*//** - * This function is requred to configure comparators included in temperature - * monitor blocks. - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -) -{ - uint8_t scb_id; - uint32_t odd; - - odd = (uint32_t)comp_id & 0x01uL; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( reference < NB_OF_COMP_REF ); - ASSERT( odd ); /* Only Temperature block comparators have configurable reference input. */ - - if ( (comp_id < NB_OF_COMPARATORS) && (reference < NB_OF_COMP_REF) && (odd) ) - { - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( ADC_IN_COMP_REF == reference ) - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 &= (uint8_t)~B11_DAC_MUXSEL_MASK; - } - else - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 = (ACE->ACB_DATA[scb_id].b11 & (uint8_t)~B11_DAC_MUXSEL_MASK) + (uint8_t)reference; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * Set analog block comparators hysteresis. - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( hysteresis < NB_OF_HYSTERESIS ); - - if ( (comp_id < NB_OF_COMPARATORS) && (hysteresis < NB_OF_HYSTERESIS) ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 = (ACE->ACB_DATA[scb_id].b10 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 = (ACE->ACB_DATA[scb_id].b9 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - - */ -void ACE_enable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 |= COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 |= COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * - */ -void ACE_disable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/* - * Bit mask of comparator 0 rise interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear rise interrupts from that comparator. - */ -#define FIRST_RISE_IRQ_MASK 0x00000800uL - -/* - * Bit mask of comparator 0 fall interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear fall interrupts from that comparator. - */ -#define FIRST_FALL_IRQ_MASK 0x00000001uL - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - * Returns the raw analog quad comparator status. - */ -uint32_t ACE_get_comp_status( void ) -{ - return ACE->COMP_IRQ; -} - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint32_t -ACE_get_channel_count -( - void -) -{ - return (uint32_t)ACE_NB_OF_INPUT_CHANNELS; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -) -{ - ace_channel_handle_t channel_handle; - - channel_handle = (ace_channel_handle_t)0; - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -) -{ - ++channel_handle; - - if ( channel_handle >= NB_OF_ACE_CHANNEL_HANDLES ) - { - channel_handle = (ace_channel_handle_t)0; - } - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].p_sz_channel_name != 0 ) - { - int32_t diff; - diff = strncmp( (const char*)p_sz_channel_name, (const char*)g_ace_channel_desc_table[channel_idx].p_sz_channel_name, MAX_CHANNEL_NAME_LENGTH ); - if ( 0 == diff ) - { - /* channel name found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].signal_id == channel_id ) - { - /* channel ID found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -) -{ - uint16_t sample; - uint16_t ppe_offset; - - ppe_offset = g_ace_channel_desc_table[channel_handle].signal_ppe_offset; - sample = (uint16_t)(ACE->PPE_RAM_DATA[ppe_offset] >> 16u); - - return sample; -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h deleted file mode 100644 index 2acc01b1e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h +++ /dev/null @@ -1,2816 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion ACE driver public API. - * - * SVN $Revision: 2884 $ - * SVN $Date: 2010-08-13 16:16:59 +0100 (Fri, 13 Aug 2010) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion Analog Compute Engine driver public API. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes the Analog Compute - Engine (ACE) which provides access to the analog capabilities of SmartFusion - from the Cortex™-M3 microcontroller. This driver provides a set of functions - for controlling the MSS ACE as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. The ACE includes: - • A Sample Sequencing Engine (SSE) controlling the operations of up to - three analog to digital converters (ADC) - • A Post Processing Engine (PPE) processing the analog inputs samples - generated as a result of the SSE operations - • An interface for controlling Sigma Delta DACs (SDD) - • An interface for controlling high speed comparators - - The Sample Sequencing Engine controls the sampling of the various analog - inputs based on a predefined sampling sequence without requiring intervention - from the Cortex-M3. The sampling sequence is defined using the ACE Configurator - provided as part of the MSS Configurator software tool. - Available analog inputs are: - • Active bipolar prescaler inputs (ABPS) allowing to measure voltages within - four possible ranges: - o -15V to +15V - o -10V to +10V - o -5V to +5V - o -2.5V to +2.5V - • Current inputs - • Temperature inputs - • Direct ADC inputs allowing to measure a voltage between zero volts and - the ADC’s reference voltage (VAREF) - Please refer to the Analog Front End section of the SmartFusion datasheet for - further details about analog inputs. - - The Post Processing Engine can perform the following operations on the analog - input samples generated as a result of the SSE operations: - • Calibration adjustment - • Averaging - • Threshold detection - • DMA transfer of most recent sample result to RAM or FPGA fabric - The result of analog input sampling is read from the PPE rather than directly - from the ADC. This ensures more accurate sample results thought the factory - calibration adjustment performed by the PPE. - The PPE can be set to generate interrupts when specific threshold values are - reached on analog inputs through the ACE Configurator software tool. These - thresholds can also be dynamically adjusted through the ACE driver. - - The ACE provides an interface to the Sigma Delta DACs included within the - Analog Front End (AFE). This interface allows control of the DAC’s output - value. Dynamic configuration of the DAC is also possible. - - The ACE provides an interface to the high speed comparators included within - the Analog Front End. This interface allows dynamic configuration of the - comparators and controlling interrupts based on the comparators’ state. - - @section theory_op Theory of Operation - The configuration of the ACE is set though the use of the ACE Configurator - included in the SmartFusion MSS Configurator software tool provided as part of - the Libero Integrated Design Environment tool suite. The ACE Configurator - offers an easy to use graphical method of selecting the configuration of the - following ACE characteristics: - • Analog input channels configuration - • ADC configuration - • Analog input channels sampling sequence - • Filtering applied to analog input samples - • Threshold flags configuration including hysteresis or state filtering properties - • Selection of post processing results transferred though DMA - • Sigma Delta DACs configuration - • Analog comparators configuration - The selected configuration hardware settings, SSE microcode and PPE microcode - are stored in the SmartFusion eNVM. This configuration data is used by the - system boot to configure the ACE after the system come out of reset and before - control is passed to the application. This results in the ACE being fully - operational by the time the application starts executing. - The ACE Configurator also generates a set of C files containing information - about the ACE’s configuration. These C files must be copied into the - drivers_config/mss_ace folder of you r software project for consumption by the - ACE driver. The ACE driver uses the content of these configuration files to - interact with the configured ACE hardware. - - The ACE driver functions are grouped into the following categories: - • Initialization - • Reading analog input channels values and properties - • Post Processing Engine flags - • Conversion functions between sample value and real world units - • Sample Sequencing Engine control - • Sample Sequencing Engine Interrupts Control - • Comparators control - • Sigma Delta Digital to Analog Converters (SDD) control - • Direct analog block configuration and usage - - - Initialization - The ACE driver is initialized through a call to the ACE_init() function. The - ACE_init() function must be called before any other ACE driver functions can - be called. It initializes the ACE’s internal data. - - - Reading analog input channels values and properties - The ACE driver allows retrieving the most recent post processed sample value - for each analog input. It also allows retrieving the name of the analog input - channel assigned in the ACE Configurator and whether the input channel samples - a voltage, current or temperature. - Each individual analog input channel is identified using a channel handle which - is passed as parameter to the ACE input channel driver functions. The channel - handles are design specific. The list of channel handles is generated by the - ACE Configurator based on the names given to the input signals. The channel - handles can be found in the drivers_config\mss_ace\ace_handles.h file. The - channel handle can be obtained from the channel name using the ACE_get_channel_handle() - function. It is also possible to iterate through all the channels using the - ACE_get_first_channel() and ACE_get_next_channel() functions. - - Reading analog input samples from the post processing engine is done the following function: - • uint16_t ACE_get_ppe_sample( ace_channel_handle_t channel_handle ) - - Information about an input channel can be retrieved using the following functions: - • const uint8_t * ACE_get_channel_name( ace_channel_handle_t channel_handle ) - • channel_type_t ACE_get_channel_type( ace_channel_handle_t channel_handle ) - - - Post Processing Engine flags - The SmartFusion ACE Post Processing Engine (PPE) provides the ability to monitor - the state of analog input channels and detect when certain threshold values are - crossed. Flags are raised by the PPE when these thresholds are crossed. Interrupts - can optionally be generated when flags are raised. - The flags are defined using the ACE Configurator software tool. The flag’s name, - threshold value and hysteresis settings are specified in the ACE Configurator. - The ACE Configurator generates microcode based on the selected configuration which - is executed at system run time by the PPE. The PPE microcode is loaded into the - ACE at chip boot time by the Actel provided system boot code. No ACE driver - intervention is required to load up the PPE microcode. - The ACE driver allows: - • Retrieving the current state of the post processing engine flags - • Assigning a handler function to individual flag assertions - • Assigning a handler function to flags generated based on the value of a - specific channel - • Controlling flag interrupts - • Dynamically modify a flag’s threshold value - • Dynamically modify a flag’s hysteresis - - Each individual flag is identified using a flag handle which is passed as parameter - to the ACE driver functions controlling the flags. The flag handles are design - specific. They are defined in the drivers_config\mss_ace\ace_handles.h file which - is generated by the ACE Configurator based on the names selected for the signal - and flag names. A flag handle can be obtained from the driver using the name of - the flag entered in the ACE Configurator software when the flag was created. A - flag handle can also be obtained using the functions ACE_get_channel_first_flag() - and ACE_get_channel_next_flag() when iterating through the flags associated with - an analog input channel. The functions available for retrieving flag handles are: - • ace_flag_handle_t ACE_get_flag_handle (const uint8_t *p_sz_full_flag_name) - • ace_flag_handle_t ACE_get_channel_first_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - • ace_flag_handle_t ACE_get_channel_next_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - - The current status of a flag can be polled using the following function: - • int32_t ACE_get_flag_status (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle individual - flags. These interrupt handlers will be called by the ACE driver when a specific - flag is raised. The flag interrupt control functions are: - • void ACE_register_flag_isr (ace_flag_handle_t flag_handle, flag_isr_t flag_isr) - • void ACE_enable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_disable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_clear_flag_irq (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle all flags - associated with one specific analog input channel. These interrupt handlers will - be called by the ACE driver when one of the flags, generated based on the state of - the specified analog input channel, is raised. The channel flag interrupt control - functions are: - • void ACE_register_channel_flags_isr (ace_channel_handle_t channel_handle, channel_flag_isr_t channel_flag_isr) - • void ACE_enable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_disable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_clear_channel_flags_irq (ace_channel_handle_t channel_handle) - - A single global interrupt handler can be registered with the ACE driver. The global - flag interrupt handler function will be called by the ACE driver when any of the - interrupt enabled flag is raised. The handle of the flag causing the interrupt and - the handle of the associated analog input channel is passed as parameter to the - registered global flag handler. - • void ACE_register_global_flags_isr (global_flag_isr_t global_flag_isr) - - The configuration of a flag can be dynamically modified using the following functions: - • void ACE_set_flag_threshold (ace_flag_handle_t flag_handle, uint16_t new_threshold) - • void ACE_set_flag_hysteresis (ace_flag_handle_t flag_handle, uint16_t adc_hysteresis) - • void ACE_set_channel_hysteresis (ace_channel_handle_t channel_handle, uint16_t adc_hysteresis) - • void ACE_set_flag_assertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - • void ACE_set_flag_deassertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - - Information about a flag can be retrieved using the following functions once - the flag handle is known: - • const uint8_t * ACE_get_flag_name (ace_flag_handle_t flag_handle) - • ace_channel_handle_t ACE_get_flag_channel (ace_flag_handle_t flag_handle) - - - Conversion to and from real world units - The ACE driver provides a set of conversion functions to convert sample values - read from the post processing engine into real world units: - • millivolts - • milliamps - • Degrees Kelvin - • Degrees Celsius - • Degrees Fahrenheit - Conversion functions are also available to convert from real world units into - PPE sample values. These functions are typically used for dynamically adjusting - flags threshold values. - - - Sample Sequencing Engine control - The ACE driver provides a set of functions for dynamically controlling the - Sample Sequencing Engine. These functions are only required for managing multiple - sampling sequences. The use of these functions is not required for most applications - since the SSE is already configured and running by the time the application starts. - - - Sample Sequencing Engine Interrupts Control - The ACE driver provides a set of functions for managing interrupts generated by - the Sample Sequencing Engine. These functions allow enabling, disabling and clearing - interrupt defined as part of the sampling sequence. These functions also allow - controlling interrupts generated by the ADCs. - - - Comparators control - The ACE driver provides a set of functions for managing interrupts generated based - on the change of state of the high speed comparators. Functions are also provided - to dynamically modify the comparators configuration. - - - Sigma Delta Digital to Analog Converters (SDD) control - The ACE driver provides functions for controlling the output value of the Sigma - Delta DACs (SDD). Functions are also provided for dynamically adjusting the - configuration of the SDDs. - - *//*=========================================================================*/ -#ifndef __MSS_ACE_H_ -#define __MSS_ACE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ace_handles.h" - -/*-------------------------------------------------------------------------*//** - Analog to Digital Converter channel IDs. - This enumeration is used to identify the ADC's analog inputs. It caters for up - to three ADCs/Analog Modules as can be found on the larger parts of the - SmartFusion family. The channel ID numbering is designed to allow easy - extraction of the ADC number and also the individual ADC input number by simple - shifting and masking. This enumeration is used as parameter to the - ACE_get_input_channel_handle() function retrieving the channel handle associated - with a specific analog input signal. - */ -typedef enum -{ - ADC0_1P5V = 0, /*!< Analog Module 0, 1.5V/GND */ - ABPS0 = 1, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS1 = 2, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM0 = 3, /*!< Analog Module 0, Quad0 Current Monitor Block */ - TM0 = 4, /*!< Analog Module 0, Quad0 Temperature Monitor Block */ - ABPS2 = 5, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS3 = 6, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM1 = 7, /*!< Analog Module 0, Quad1 Current Monitor Block */ - TM1 = 8, /*!< Analog Module 0, Quad1 Temperature Monitor Block */ - ADC0 = 9, /*!< Analog Module 0 Direct Input 0 */ - ADC1 = 10, /*!< Analog Module 0 Direct Input 1 */ - ADC2 = 11, /*!< Analog Module 0 Direct Input 2 */ - ADC3 = 12, /*!< Analog Module 0 Direct Input 3 */ - SDD0_IN = 15, /*!< Analog Module 0 Sigma-Delta DAC output */ - - ADC1_1P5V = 16, /*!< Analog Module 1, 1.5V/GND */ - ABPS4 = 17, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS5 = 18, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM2 = 19, /*!< Analog Module 1, Quad0 Current Monitor Block */ - TM2 = 20, /*!< Analog Module 1, Quad0 Temperature Monitor Block */ - ABPS6 = 21, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS7 = 22, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM3 = 23, /*!< Analog Module 1, Quad1 Current Monitor Block */ - TM3 = 24, /*!< Analog Module 1, Quad1 Temperature Monitor Block */ - ADC4 = 25, /*!< Analog Module 1 Direct Input 0 */ - ADC5 = 26, /*!< Analog Module 1 Direct Input 1 */ - ADC6 = 27, /*!< Analog Module 1 Direct Input 2 */ - ADC7 = 28, /*!< Analog Module 1 Direct Input 3 */ - SDD1_IN = 31, /*!< Analog Module 1 Sigma-Delta DAC output */ - - ADC2_1P5V = 32, /*!< Analog Module 2, 1.5V/GND */ - ABPS8 = 33, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS9 = 34, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM4 = 35, /*!< Analog Module 2, Quad0 Current Monitor Block */ - TM4 = 36, /*!< Analog Module 2, Quad0 Temperature Monitor Block */ - ABPS10 = 37, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS11 = 38, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM5 = 39, /*!< Analog Module 2, Quad1 Current Monitor Block */ - TM5 = 40, /*!< Analog Module 2, Quad1 Temperature Monitor Block */ - ADC8 = 41, /*!< Analog Module 2 Direct Input 0 */ - ADC9 = 42, /*!< Analog Module 2 Direct Input 1 */ - ADC10 = 43, /*!< Analog Module 2 Direct Input 2 */ - ADC11 = 44, /*!< Analog Module 2 Direct Input 3 */ - SDD2_IN = 47, /*!< Analog Module 2 Sigma-Delta DAC output */ - INVALID_CHANNEL = 255 /*!< Used to indicate errors */ -} adc_channel_id_t; - - -/*-------------------------------------------------------------------------*//** - The ACE_init() function initializes the SmartFusion MSS ACE driver. It - initializes the ACE driver’s internal data structures. The ACE_init() function - must be called before any other MSS ACE driver functions can be called. - */ -void ACE_init( void ); - - -/*============================================================================== - ============== Direct Analog Block Configuration and Usage ==================== - =============================================================================*/ - -/*=========================================================================*//** - @defgroup group1 Direct Analog Block Configuration and Usage - These functions are intended for using the SmartFusion analog block hardware - without relying on the Sampling Sequence Engine or Post Processing engine. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_start_adc() function initiates the sampling of the analog input - channel identified by the channel_id parameter. This function is provided for - test purposes. It must not be used while the Sample Sequencing Engine is - running. - - @param channel_id - The channel_id parameter identifies the analog input channel to sample. - - @return - This function does not return a value. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_adc_result () function reads the result of the last input channel - sampling performed by the ADC identified as parameter. - - @param adc_id - The adc_id parameter identifies which of the possible three ADC to read the - sample result from. - - @return - The ACE_start_adc_sync() function returns the ADC result from the ADC - specified as parameter. - */ -uint16_t ACE_get_adc_result -( - uint8_t adc_id -); - -/** @} */ - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group2 Sigma Delta Digital to Analog Converters (SDD) Control - The following functions are used to control the Sigma Delta DACs included - within the SmartFusion analog block. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sdd_id_t enumeration is used to identify the Sigma Delta DACs to the SDD - control functions, ACE_configure_sdd(), ACE_enable_sdd(), ACE_disable_sdd() - and ACE_set_sdd_value(). There is one SDD per analog module. - */ -typedef enum -{ - SDD0_OUT = 0, /*!< Analog Module 0 Sigma Delta DAC */ - SDD1_OUT = 1, /*!< Analog Module 1 Sigma Delta DAC */ - SDD2_OUT = 2, /*!< Analog Module 2 Sigma Delta DAC */ - NB_OF_SDD = 3 -} sdd_id_t; - -/*-------------------------------------------------------------------------*//** - The sdd_resolution_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify DAC resolution of the Sigma Delta DAC. - */ -typedef enum -{ - SDD_8_BITS = 0, - SDD_16_BITS = 4, - SDD_24_BITS = 8 -} sdd_resolution_t; - -/*-------------------------------------------------------------------------*//** - These constant definitions are used as an argument to the ACE_configure_sdd() - function to specify operating mode of the Sigma Delta DAC. - */ -#define SDD_CURRENT_MODE 1 -#define SDD_VOLTAGE_MODE 0 -#define SDD_RETURN_TO_ZERO 0 -#define SDD_NON_RTZ 2 - -/*-------------------------------------------------------------------------*//** - The sdd_update_method_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify individual or synchronous updating of - the Sigma Delta DACs. - */ -typedef enum -{ - INDIVIDUAL_UPDATE = 0, - SYNC_UPDATE = 1 -} sdd_update_method_t; - -/*-------------------------------------------------------------------------*//** - The ACE_configure_sdd() function is used to configure the operating mode of - the Sigma Delta DAC (SDD) specified as parameter. It allows selecting whether the - SDD will output a voltage or a current. A current between 0 and 256uA is - generated in current mode. A voltage between 0 and 2.56V is generated in - voltage mode. - This function also allows selecting whether Return To Zero (RTZ) mode is - enabled or not. Enabling Return To Zero mode improves linearity of the SDD - output at the detriment of accuracy. This mode should be used if linearity is - more important than accuracy. - A call to this function is not required if relying on the configuration - selected in the ACE configurator being loaded after reset by the system boot. - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is configured by this - function. Allowed values are: - - SDD0_OUT - - SDD1_OUT - - SDD2_OUT - - @param resolution - The resolution parameter specifies the desired resolution of the Sigma Delta DAC. - Allowed values are: - - SDD_8_BITS - - SDD_16_BITS - - SDD_24_BITS - - @param mode - The mode parameter specifies the operating mode of the Sigma Delta DAC. It - specifies whether a current or voltage should be generated and whether - Return to Zero mode should be used. It is a logical OR of the following - defines: - - SDD_CURRENT_MODE - - SDD_VOLTAGE_MODE - - SDD_RETURN_TO_ZERO - - SDD_NON_RTZ - - @param sync_update - The sync_update parameter specifies whether the SDD output will be updated - individually though a call to ACE_set_sdd_value() or synchronously with one - or more other SDD outputs via a call to ACE_set_sdd_value_sync(). - - Example - @code - ACE_configure_sdd - ( - SDD1_OUT, - SDD_24_BITS, - SDD_VOLTAGE_MODE | SDD_RETURN_TO_ZERO, - INDIVIDUAL_UPDATE - ); - @endcode - */ -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sdd() function is used to enable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to enable. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sdd() function is used to disable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to disable. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value() function is used to set the value of the output of - a Sigma Delta DAC. It uses the ACE's phase accumulator to generate the one bit - input bit stream into the SDD which will in turn define the voltage or - current generated at the SDD output. - The SDD output is proportional to the sdd_value passed to this function taking - the SDD resolution into account. A maximum voltage of 2.56V or a maximum - current of 256uA will be generated when the sdd_value is set the maximum value - allowed by the SDD resolution - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is being set. - - @param sdd_value - The sdd_value parameter specifies the value of the Sigma Delta DAC output. - It is a fraction of SDD resolution. The voltage/current value generated from - the sdd_value paramenter can be determined using the following equation where - sdd_resolution is the resolution of the SDD as set through function - ACE_configure_sdd() and sdd_rangSDD configuration: - sdd_output = (sdd_value / sdd_resolution) * sdd_range - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -); - - -/*-------------------------------------------------------------------------*//** - This constant definition is used as an argument to the ACE_set_sdd_value_sync() - function to specify that the output value of SDD0, or SDD1, or SDD2 should not - be modified. - */ -#define SDD_NO_UPDATE 0xFFFFFFFF - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value_sync() function is used to synchronize the update of - multiple Sigma Delta DAC outputs. - - @param sdd0_value - The sdd0_value parameter specifies the value that will be used to set the - output of SDD0. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD0 should not be modified. - - @param sdd1_value - The sdd1_value parameter specifies the value that will be used to set the - output of SDD1. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD1 should not be modified. - - @param sdd2_value - The sdd2_value parameter specifies the value that will be used to set the - output of SDD2. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD2 should not be modified. - - For example the code below will change the output value of SDD0 and SDD2 so - that the voltage/current generate by SDD0 and ADD2 will change at the same - time. This function call will not affect the output value of SDD1. - @code - uint32_t sdd0_value = 0x1234; - uint32_t sdd2_value = 0x5678; - ACE_set_sdd_value_sync( sdd0_value, SDD_NO_UPDATE, sdd2_value ); - @endcode - */ - -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -); - -/** @} */ - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group9 Reading Analog Input Channels Values and Properties - The following functions are used to access analog input channels properties - and sampled values. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - This constant returned by the ACE_get_flag_channel(), ACE_get_channel_handle() - and ACE_get_input_channel_handle() functions when the driver can’t find a - valid handle for the ADC input channel. - */ -#define INVALID_CHANNEL_HANDLE NB_OF_ACE_CHANNEL_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_handle() function returns the channel handle associated - with an analog input channel name. The retrieved channel handle will be - subsequently used as parameter to function ACE_get_ppe_sample() used to read - the most recent post processed sample for the analog input identified through - the channel/service name passed as argument to this function. - - @param p_sz_channel_name - The p_sz_channel_name parameter is a zero-terminated string containing the - name of the channel/service as entered in the ACE configurator. - - @return - This function returns a channel handle. This channel handle is required as - parameter to function ACE_get_ppe_sample(). - It will return INVALID_CHANNEL_HANDLE if the channel/service name is not - recognized. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_input_channel_handle() function returns the channel handle for - the hardware analog input channel specified as parameter. - - @param channel_id - The channel_id parameter identifies a hardware analog input of the ACE. - - @return - This function returns a channel handle. This channel handle is required as - parameter to other ACE driver functions dealing with analog inputs. - It will return INVALID_CHANNEL_HANDLE if the channel ID passed as parameter - is invalid. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_ppe_sample() function is used to read the most recent post - processed sample for the analog input channel associated with the channel - handle passed as parameter. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - this function will return the most recent ADC conversion result adjusted for - calibration and user provided coefficients as provided through the ACE - configurator. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a 16 bit value representing the adjusted value of the - ADC conversion result for the analog input channel identified by the channel - handle passed as parameter. The return value is actually a 12, 10 or 8 bits - number depending on the configuration of the ADC. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_name() function provides the name of the channel - associated with the channel handle passed as parameter. The channel name is - the name used in the ACE configurator software tool when adding a service to - the ACE. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - we want to retrieve the channel name. The available channel handle values can - be found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a pointer to a zero-terminated string containing the - name of the channel. It returns 0 if the channel handle passed as parameter - is not recognized. - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The channel_type_t enumeration is used to identify the type of quantity - measured by an analog input channel. It is typically used to figure out the - type of conversion that must be applied to the ADC value generated from - sampling a channel in order to yield real world units such millivolts, - milliamps or degrees. - */ -typedef enum -{ - VOLTAGE, - CURRENT, - TEMPERATURE -} channel_type_t; - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_type() function returns the type of input channel of the - analog input channel identified by the channel handle passed as parameter. - This function allows determining whether the quantity measured through the ADC - is a voltage, current or temperature. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns one of the following values to report the type of - quantity measure throught the channel: - - VOLTAGE - - CURRENT - - TEMPERATURE - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_count() function returns the total number of configured - analog input channels. It is the number of channels available for use as - opposed to the theorical number of physical channels supported by the device. - - @return - The ACE_get_channel_count() function returns the total number of input - channels that were configured in the ACE configurator. - The ACE_get_channel_count() function returns 0 if no input channels were - configured. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -uint32_t -ACE_get_channel_count -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_first_channel() function returns the channel handle of one of the - channel controlled by the ACE. This function is used to start iterating though - the list of analog input channels handled by the ACE. - - @return - The ACE_get_first_channel() function returns the first channel handle found - in the ACE driver's internal channel handles list or INVALID_CHANNEL_HANDLE - if there are no channels defined in the ACE configuration. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_next_channel() returns the channel handle of the channel following - the one passed as parameter. This function is used to iterate through the list - of analog input channels handled by the ACE. - - @param channel_handle - The channel_handle parameter identifies from which channel the driver should - look in its channel handle list to return the next channel handle. The - channel_handle parameter would typically be the channel handle returned by a - call to ACE_get_first_channel() or a previous call to ACE_get_next_channel(). - Note: - The first call to ACE_get_next_channel() would typically use the - channel_handle returned by a previous call to ACE_get_first_channel(). The - second and subsequent calls to ACE_get_next_channel() would typically use - the channel_handle returned by a previous call to ACE_get_next_channel(). - - @return - The ACE_get_next_channel() function returns the channel handle of the channel - following the one passed as parameter or INVALID_CHANNEL_HANDLE if the end of - the channels list has been reached. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -); - - /** @} */ - -/*============================================================================== - =============================== SSE Control ================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group3 Sample Sequencing Engine Control - Sample Sequencing Engine control. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The Sample Sequencing Engine control functions use a parameter of this type as - a handle to identify the Sample Sequencing Engine (SSE) sequences configured - using the ACE configurator. The ACE_get_sse_seq_handle() function retrieves the - handle of the SSE sequence identified by the sequence name passed as parameter. - Note: The ACE configurator generates ACE driver configuration files into the - .\drivers_config\mss_ace folder of the firmware project. These files - contain the details of the SSE sequence handles for your ACE configuration. - The ACE driver automatically includes these files when the - .\drivers_config\mss_ace folder is present in the firmware project. - */ -typedef uint16_t sse_sequence_handle_t; - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_sse_seq_handle() function when the - driver can’t find a valid handle for the Sample Sequencing Engine (SSE) sequence. -*/ -#define INVALID_SSE_SEQ_HANDLE 0xFFFFu - -/*-------------------------------------------------------------------------*//** - The ACE_get_sse_seq_handle() function retrieves the handle of the Sample - Sequencing Engine sequence identified by the sequence name passed as parameter. - The sequence handler can then be used as parameter to other SSE sequence control - functions to identify the sequence to control. - - @param p_sz_sequence_name - The p_sz_sequence_name parameter is a pointer to a zero-terminated string - containing the name of the sampling sequence for which we want to retrieve - the handle. - - @return - The ACE_get_sse_seq_handle() function returns the handle used to identify - the sequence passed as parameter with other ACE driver sampling sequence - control functions. It returns INVALID_SSE_SEQ_HANDLE if the sequence name - passed as parameter is not recognized. - - @code - sse_sequence_handle_t sse_seq_handle; - sse_seq_handle = ACE_get_sse_seq_handle("ProcedureA"); - if ( sse_seq_handle != INVALID_SSE_SEQ_HANDLE ) - { - ACE_load_sse( sse_seq_handle ); - ACE_start_sse( sse_seq_handle ); - } - @endcode - */ -sse_sequence_handle_t -ACE_get_sse_seq_handle -( - const uint8_t * p_sz_sequence_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_load_sse() function loads the ACE Sample Sequencing Engine (SSE) RAM - with the microcode implementing the sampling sequence identified by the SSE - sequence handler passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_load_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_start_sse() function causes the Sampling Sequence Engine (SSE) to start - executing the sequence identified by the sequence handler passed as parameter. - It causes the initiailization part of the sampling sequence to be executed - before the loop part of the sequence is started. - You must ensure that the sampling sequence has been loaded into the ACE's SSE - before calling this function. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_start_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_restart_sse() function restarts the loop part of the sampling sequence - loaded into the ACE's Sampling Sequence Engine (SSE). The sampling sequence - will be restarted from the beginning of the sequence but omiting the - intialization phase of the sequence. - This function would typically be called after stopping the sampling sequence - using the ACE_stop_see() function or with non-repeating sequences. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_restart_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_stop_sse() function stops execution of the Sample Sequencing Engine - (SSE) sequence indentified by the sequence handle passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handle identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_stop_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_resume_sse() function causes the Sampling Sequencing Engine (SSE) - sampling sequence identified by the sequence handle passed as parameter to - resume execution. This function is typically used to restart execution of - a sequence at the point where it was stopped through a call to ACE_stop_sse(). - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_resume_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sample_pipeline() function clears the ACE hardware of samples - being processed. It clear the various stages involved in the production of - post processed samples within the ACE hardware. It is intended for use when - switching between sampling sequences and using peripheral DMA. It avoids - receiving stale samples generated as a result of a previous sampling sequence. - - The example below shows how this function can be used to ensure that no sample - generated as a result of sampling sequence sequence_a will be generated once - sampling sequence_b is started. Please note that it is important to stop the - SSE using function ACE_stop_sse() before calling ACE_clear_sample_pipeline() - to ensure sequence_a is not restarted after the sample pipeline is cleared. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_start_sse(sequence_b); - @endcode - - The example below shows how to ensure that the first sample read through PDMA - will be from the first channel in the sampling sequence. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_restart_sse(sequence_a); - PDMA_start - ( - PDMA_CHANNEL_0, - PDMA_ACE_PPE_DATAOUT, - (uint32_t)g_samples_buffer[g_pdma_buffer_idx], - SAMPLES_BUFFER_SIZE - ); - @endcode - */ -void ACE_clear_sample_pipeline(void); - -/** @} */ -/*============================================================================== - ======================== SSE Interrupts Control =============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group4 Sample Sequencing Engine Interrupts Control - The following functions are used to control interrupts generated from the - ACE's Sample Sequencing Engine. These interrupts would typically be used to - detect when valid data is available from the ADCs controlled by the SSE or to - detect the complete or partial completion of the sampling sequence through the - insertion of SSE program counter general purpose interrupt assertion as part - of the sequence. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sse_irq_id_t enumeration is used to identify the Sample Sequencing Engine - (SSE) interrupt sources to the SSE interrupt control functions. - */ -typedef enum -{ - PC0_FLAG0 = 0, - PC0_FLAG1 = 1, - PC0_FLAG2 = 2, - PC0_FLAG3 = 3, - PC1_FLAG0 = 4, - PC1_FLAG1 = 5, - PC1_FLAG2 = 6, - PC1_FLAG3 = 7, - PC2_FLAG0 = 8, - PC2_FLAG1 = 9, - PC2_FLAG2 = 10, - PC2_FLAG3 = 11, - ADC0_DATAVALID = 12, - ADC1_DATAVALID = 13, - ADC2_DATAVALID = 14, - ADC0_CALIBRATION_COMPLETE = 15, - ADC1_CALIBRATION_COMPLETE = 16, - ADC2_CALIBRATION_COMPLETE = 17, - ADC0_CALIBRATION_START = 18, - ADC1_CALIBRATION_START = 19, - ADC2_CALIBRATION_START = 20, - NB_OF_SSE_FLAG_IRQS = 21 -} sse_irq_id_t; - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sse_irq() function enables the Sample Sequencing Engine (SSE) - interrupt source specified as parameter to generate interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_enable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sse_irq() function disables the Sample Sequencing Engine - (SSE) interrupt source specified as parameter from generating interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_disable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sse_irq() function clears the Sampling Sequencing Engine (SSE) - interrupt specified as parameter. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_clear_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/** @} */ -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group5 Comparators Control - The following functions are used to control the analog comparators included - in the SmartFusion analog block. - The comparator configuration functions can be used to directly configure the - comparators. Their use is only required when the ACE is not configured using - the ACE configurator software tool. - The comparator interrupt control functions are used regardless of the way the - ACE was configured to enable, disable and clear interrupts generated when the - positive input of a comparator rises above or falls below the negative input. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The comparator_id_t enumeration is used by the comparator control functions - to identify the analog comparators included in the SmartFusion analog block. - */ -typedef enum -{ - CMP0 = 0, /*!< Analog module 0, Quad 0, CMB comparator */ - CMP1 = 1, /*!< Analog module 0, Quad 0, TMB comparator */ - CMP2 = 2, /*!< Analog module 0, Quad 1, CMB comparator */ - CMP3 = 3, /*!< Analog module 0, Quad 1, TMB comparator */ - CMP4 = 4, /*!< Analog module 1, Quad 0, CMB comparator */ - CMP5 = 5, /*!< Analog module 1, Quad 0, TMB comparator */ - CMP6 = 6, /*!< Analog module 1, Quad 1, CMB comparator */ - CMP7 = 7, /*!< Analog module 1, Quad 1, TMB comparator */ - CMP8 = 8, /*!< Analog module 2, Quad 0, CMB comparator */ - CMP9 = 9, /*!< Analog module 2, Quad 0, TMB comparator */ - CMP10 = 10, /*!< Analog module 2, Quad 1, CMB comparator */ - CMP11 = 11, /*!< Analog module 2, Quad 1, TMB comparator */ - NB_OF_COMPARATORS = 12 -} comparator_id_t; - -/*-------------------------------------------------------------------------*//** - The comp_hysteresis_t enumeration is used by the ACE_set_comp_hysteresis() - function to set the hysteresis of the analog comparators included in the - SmartFusion analog block. This enumeration provides the allowed values of the - hysteresis parameter of the ACE_set_comp_hysteresis() function. - */ -typedef enum -{ - NO_HYSTERESIS = 0, - HYSTERESIS_10_MV = 1, - HYSTERESIS_30_MV = 2, - HYSTERESIS_100_MV = 3, - NB_OF_HYSTERESIS = 4 -} comp_hysteresis_t ; - -/*-------------------------------------------------------------------------*//** - The comp_reference_t enumeration is used by the ACE_set_comp_reference() - function to select the reference input of the odd numbered analog comparators - included in the SmartFusion analog block. This enumeration provides the allowed - values of the reference parameter of the ACE_set_comp_reference () function. - */ -typedef enum -{ - SDD0_COMP_REF = 0, - SDD1_COMP_REF = 1, - SDD2_COMP_REF = 2, - ADC_IN_COMP_REF = 3, - NB_OF_COMP_REF = 4 -} comp_reference_t; - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_reference() function is used to select the reference input - of a temperature monitor block comparator. The reference input of a temperature - monitor can be an ADC direct input or one of the SDD's output. - - @param comp_id - The comp_id parameter specifies the comparator for which to select the - reference input. Since only temperature monitor block comparators have a - selectable reference input, allowed values are: - - CMP1 - - CMP3 - - CMP5 - - CMP7 - - CMP9 - - CMP11 - - @param reference - The reference parameter specify the signal that will be used as reference - by the comparator. Allowed values are: - - SDD0_COMP_REF - - SDD1_COMP_REF - - SDD2_COMP_REF - - ADC_IN_COMP_REF - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_hysteresis() function is used to set the hysteresis of a - comparator. There are four possible hystereris settings: no hysteresis, - +/-10mV, +/-30mV or +/-100mV. - - @param comp_id - The comp_id parameter specifies the comparator for which this function will - set the hyteresis. - - @param hysteresis - The hysteresis parameter specifies the hysteresis that will be applied to - the comparator's input. Allowed values are: - - NO_HYSTERESIS - - HYSTERESIS_10_MV - - HYSTERESIS_30_MV - - HYSTERESIS_100_MV - - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp() function is used to enable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be enabled by a call - to this function. - */ -void ACE_enable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp() function is used to disable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled by a call - to this function. - */ -void ACE_disable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_rise_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - The function prototypes for the comparator rise interrupt service routines are: - - void ACE_Comp0_Rise_IRQHandler( void ); - - void ACE_Comp1_Rise_IRQHandler( void ); - - void ACE_Comp2_Rise_IRQHandler( void ); - - void ACE_Comp3_Rise_IRQHandler( void ); - - void ACE_Comp4_Rise_IRQHandler( void ); - - void ACE_Comp5_Rise_IRQHandler( void ); - - void ACE_Comp6_Rise_IRQHandler( void ); - - void ACE_Comp7_Rise_IRQHandler( void ); - - void ACE_Comp8_Rise_IRQHandler( void ); - - void ACE_Comp9_Rise_IRQHandler( void ); - - void ACE_Comp10_Rise_IRQHandler( void ); - - void ACE_Comp11_Rise_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - rising interrupts. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_rise_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating rising interrupts. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_rise_irq() function is used to clear rise interrupts. This - function is typically called as part of the rise interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the rise - interrupt. - - Example: - @code - void ACE_Comp1_Rise_IRQHandler( void ) - { - process_rise_irq(); - ACE_clear_comp_rise_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Rise_IRQn ); - } - @endcode - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_fall_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - The function prototypes for the comparator fall interrupt service routines are: - - void ACE_Comp0_Fall_IRQHandler( void ); - - void ACE_Comp1_Fall_IRQHandler( void ); - - void ACE_Comp2_Fall_IRQHandler( void ); - - void ACE_Comp3_Fall_IRQHandler( void ); - - void ACE_Comp4_Fall_IRQHandler( void ); - - void ACE_Comp5_Fall_IRQHandler( void ); - - void ACE_Comp6_Fall_IRQHandler( void ); - - void ACE_Comp7_Fall_IRQHandler( void ); - - void ACE_Comp8_Fall_IRQHandler( void ); - - void ACE_Comp9_Fall_IRQHandler( void ); - - void ACE_Comp10_Fall_IRQHandler( void ); - - void ACE_Comp11_Fall_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - fall interrupts. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_fall_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating fall interrupts. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_fall_irq() function is used to clear fall interrupts. This - function is typically called as part of the fall interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the fall - interrupt. - - Example: - @code - void ACE_Comp1_Fall_IRQHandler( void ) - { - process_fall_irq(); - ACE_clear_comp_fall_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Fall_IRQn ); - } - @endcode - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_comp_status() function returns the current comparator interrupt - status. It returns a 32 bit value indicating which comparators experienced a - fall and/or rise event. These status bits can be cleared using the - ACE_clear_comp_rise_irq() and ACE_clear_comp_fall_irq() functions. - - @return - The return value is a 32 bit numnber where bits 0 to 11 indicate which - comparator experienced a fall event and bits 21 to 23 indicate which - comparator experienced a rise event. - */ -uint32_t ACE_get_comp_status( void ); - -/** @} */ - -/*============================================================================== - ========================== Controlling Thresholds ============================= - =============================================================================*/ -/*=========================================================================*//** - @defgroup group8 Controlling Flags Thresholds - The following functions are used to dynamically control Post Processing Engine - (PPE) flags threshholds. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_is_hysteresis_flag() function indicates if an hysteresis is applied - to the analog input sample value when determining the state of the flag - identified as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if a hysteresis is applied to the channel - sample values as part of determining the state of the flag identified as - parameter. It returns zero if no hysteresis is applied. - */ -uint32_t ACE_is_hysteresis_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_is_under_flag() function indicates whether a flag is triggered when the - monitored analog input falls below the flag's threshold level or above the - flag's threshold level. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if the flag identified as parameter - triggers as a result of the monitored input falling below the flag's - threshold value. - It returns zero if the flag triggers as a result of the monitored input - exceeding the flag's threshold value. - */ -uint32_t ACE_is_under_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_threshold() function is used to adjust the threshold for a - specific post processing engine generated flag. The flag is identified through - the name selected in the ACE configurator software tool. - This function will set a new flag’s threshold value while preserving the - hysteresis specified at configuration time or through a call to - ACE_set_flag_hysteresis(). For example, requesting a 1 volt threshold for an - over flag configured with a 100 millivolts hysteresis will result in the flag - being asserted when the voltage reaches 1.1 volts and deasserted when the - voltage falls below 0.9 volt. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param new_threshold - The new_threshold parameter specifies the new threshold level that must be - reached in order for the flag to be raised. The value of this parameter is - the sample value resulting from a post processing engine conversion of the - desired analog input threshold level. - - Example: - The function below sets the threshold of the flag specified as parameter to - 1 volt. - @code - void set_threshold_to_1V - ( - ace_flag_handle_t flag_handle - ) - { - uint16_t new_threshold; - ace_channel_handle_t channel_handle; - - channel_handle = ACE_get_flag_channel(flag_handle); - new_threshold = ACE_convert_from_mV(channel_handle, 1000); - ACE_set_flag_threshold(flag_handle, new_threshold); - } - @endcode - */ -void ACE_set_flag_threshold -( - ace_flag_handle_t flag_handle, - uint16_t new_threshold -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_hysteresis() function modifies the hysteresis applied to the - analog input channel sample values used to generate the flag specified as - parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - - Example - The example below demonstrates the use of the ACE_set_flag_hysteresis() - function to set a 100mV hysteresis on the OVER_1V flag of the VoltageMonitor - input channel. VoltageMonitor and OVER_1V are names selected in the ACE - configurator for one of the analog inputs and one of the flags associated - with that input. - The method used to compute the adc_hysteresis value will work for all - input types including ABPS inputs where zero Volts is not equivalent to a - PPE sample value of zero. - - @code - ace_channel_handle_t channel_handle; - ace_flag_handle_t flag_handle; - uint16_t adc_hysteresis; - uint16_t upper_limit; - uint16_t lower_limit; - - channel_handle = VoltageMonitor; - flag_handle = VoltageMonitor_OVER_1V; - - upper_limit = ACE_convert_from_mV(channel_handle, 100); - lower_limit = ACE_convert_from_mV(channel_handle, 0); - - if (upper_limit > lower_limit) - { - adc_hysteresis = upper_limit - lower_limit; - } - else - { - adc_hysteresis = lower_limit - upper_limit; - } - - ACE_set_flag_hysteresis(flag_handle, adc_hysteresis); - @endcode - */ -void -ACE_set_flag_hysteresis -( - ace_flag_handle_t flag_handle, - uint16_t adc_hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_assertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become asserted. It is - used in conjunction with the ACE_set_flag_deassertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value that - must be reached for the flag, identified through the flag_handle parameter, - to become asserted. The PPE sample value is always a 12 bits sample value - regardless of the configuration of the ADC used to sample the input channel. - */ -void ACE_set_flag_assertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_deassertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become deasserted. It - is used in conjunction with the ACE_set_flag_assertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value - that must be reached for the flag, identified through the flag_handle - parameter, to become de-asserted. The PPE sample value is always a 12 bits - sample value regardless of the configuration of the ADC used to sample the - input channel. - */ -void ACE_set_flag_deassertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_channel_hysteresis() function sets the hysteresis applied to - analog input channel sample values when generating flags. It sets the - hysteresis for all flags generated based on the value of the analog input - channel identified by the channel handle passed as first parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - */ -void -ACE_set_channel_hysteresis -( - ace_channel_handle_t channel_handle, - uint16_t adc_hysteresis -); - - -/** @} */ -/*-------------------------------------------------------------------------*//** - * - */ - -/*============================================================================== - ================================== Flags ====================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group6 Post Processing Engine Flags - The following functions are used to control interrupts generated by the ACE's - Post Processing Engine (PPE) when monitored inputs rise above or fall below - thresholds specified in the ACE configurator software tool. - @{ - *//*=========================================================================*/ - - /*-------------------------------------------------------------------------*//** - These constant definitions are the return values of the ACE_get_flag_status() - function. They specify the status of the Post Processing Engine (PPE) flag. - */ -#define UNKNOWN_FLAG (int32_t)(-1) -#define FLAG_ASSERTED (int32_t)1 -#define FLAG_NOT_ASSERTED (int32_t)0 - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_flag_handle function when the driver - can’t find a valid handle for the Post Processing Engine (PPE) flag. - */ -#define INVALID_FLAG_HANDLE NB_OF_ACE_FLAG_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_handle() function returns the handle of the flag identified - by the flag name passed as parameter. The flag handle obtained through this - function is then used as parameter to other flag control functions to identify - which flag is to be controlled by the called function. - - @param p_sz_full_flag_name - The p_sz_full_flag_name parameter is a pointer to a zero-terminated string - holding the name of the flag as specified in the ACE configurator. The full - name of a flag contains both the name of the monitored input channel and the - name of the flag generated based the level of that input separated by ":". - For example, the full name for the flag called "CriticalOver" raised when - the input channel called "MainSupply" reaches a critical level would be - named "MainSupply:CriticalOver". - - @return - The ACE_get_flag_handle() returns the flag handle associated with the flag - name passed as parameter. It returns INVALID_FLAG_HANDLE when the flag name - is invalid and not recognized by the ACE driver. - */ -ace_flag_handle_t -ACE_get_flag_handle -( - const uint8_t * p_sz_full_flag_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_status() function returns the current status of the flag - specified as parameter. The flag is identified through the name specified in - the ACE configurator when the flag was created. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_status() function returns one of the following values - depending on the current status of the flag: - - FLAG_ASSERTED if the flag is raised/asserted. - - FLAG_NOT_ASSERTED if the flag is not asserted. - - UNKNOWN_FLAG if the flag name is not recognized by the driver. -*/ -int32_t -ACE_get_flag_status -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_channel_flags_irq() function enables all flags generated based - on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are enabled to - generate interrupts by this function. It enables flag interrupts both at the - ACE PEE flag and Cortex-M3 interrupt controller levels. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_enable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_channel_flags_irq() function disables all flags generated - based on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are disabled from - generating interrupts by this function. The interrupt is only disabled at the - ACE PPE flag level in order to avoid disabling other cahnnel's flag interrupts - which may happen to use the same ACE threshold interrupt line. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_disable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_channel_flags_irq() function clears all interrupts generated by - flags associated with the analog input channel passed as parameter. Interrupt - generated by flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are cleared by - this function. This function would typically be used before enabling the flag - interrupts in order to ignore past events. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_clear_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_flag_irq() function enables the ACE post processing engine (PPE) - generated flags specified as parameter to interrupt the Cortex-M3 processor. - It enables flag interrupts both at the ACE PPE flag and Cortex-M3 interrupt - controller levels. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_enable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_flag_irq() function disables ACE post processing engine (PPE) - generated flags from interrupting the Cortex-M3. The interrupt is only - disabled at the ACE PPE flag level in order to avoid disabling other flags - interrupts which may happen to use the same ACE threshold interrupt line. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_disable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_flag_irq() function clears the interrupt for the flag specified - as parameter. This function would typically be used before enabling the flag - interrupt in order to ignore past events. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_clear_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_name() function returns the name of the flag identified by - the flag handle passed as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_name() function returns a pointer to a zero-terminated - string containing the name of the flag identified by the flag handle passed - as parameter. It returns 0 if the flag handle passed as parameter is invalid. - */ -const uint8_t * -ACE_get_flag_name -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_channel() function returns the handle of the channel - monitored in order to generate the flag identified by the flag handle passed - as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_channel() function returns a channel handle identifying the - analog input channel monitored by the flag passed as parameter. - */ -ace_channel_handle_t -ACE_get_flag_channel -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_flag_count() function returns the total number of flags - associated with the input channel specified by the channel_handle parameter. - It indicates how many flags are generated based on the value of the specified - analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_channel_flag_count() function returns the total number of flags - that are generated based on the value of the specified analog input channel. - The ACE_get_channel_flag_count() function returns 0 if no input channels were - configured. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -uint32_t -ACE_get_channel_flag_count -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_first_flag() function retrieves the handle of the first - flag associated with the analog input channel identified by the channel handle - passed as parameter. It also initialises the value of the iterator variable - pointed to by the second function parameter. The iterator can be used - subsequently as a parameter to the ACE_get_channel_next_flag() function to - iterate through all flags associated with the analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The - value of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the - list of flags associated with the analog input channel. - - @return - The ACE_get_channel_first_flag() function returns a flag handle identifying - one of the flags generated based on the value of the analog input channel - identified by the channel_handle parameter. It returns INVALID_FLAG_HANDLE - if no flags are generated based on the analog input channel input or if the - channel handle is invalid. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_first_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_next_flag() function retrieves the handle of a flag - associated with the analog input channel identified by the channel handle - passed as parameter. The retrieved flag handle is the next one in the driver's - internal flag list based on the iterator parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The value - of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the list - of flags associated with the analog input channel. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_next_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) flag handler functions. These functions are registered - with the ACE driver and associated with a particular flag through the - ACE_register_flag_isr() function. The ACE driver will call the flag handler - function when the associated flag is raised. - - Declaring and Implementing PPE Flag Handler Functions - PPE flag handler functions should follow the following prototype: - void my_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE flag handler is unimportant. You can use any name of - your choice for the PPE flag handler. - The flag_handle parameter passes the handle of the raised flag to the flag - handler function. - */ -typedef void (*flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_flag_isr() function is used to register a handler function - with the ACE driver. The registered function will be called by the ACE driver - when the associated flag is raised by the ACE post processing engine. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param flag_isr - The flag_isr parameter is a pointer to a flag handler function with the - following prototype: - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - - @code - void my_critical_handler( void ); - - void system_init( void ) - { - ace_flag_handle_t flag_handle; - - flag_handle = ACE_get_flag_handle( "MainSupply:CriticalLevel" ); - ACE_register_flag_isr( flag_handle, my_critical_handler ); - ACE_enable_flag_irq( flag_handle ); - } - - void my_critical_handler( ace_flag_handle_t flag_handle ) - { - panic( flag_handle ); - } - - @endcode - */ -void ACE_register_flag_isr -( - ace_flag_handle_t flag_handle, - flag_isr_t flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) channel flag handler functions. These functions are - registered with the ACE driver and associated with a particular ADC input - channel through the ACE_register_channel_flags_isr() function. The ACE driver - will call the channel flags handler function when one of the flags for the - associated ADC input channel is raised. - - Declaring and Implementing PPE Channel Flag Handler Functions - PPE channel flag handler functions should follow the following prototype: - void my_channel_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE channel flag handler is unimportant. You can use - any name of your choice for the PPE channel flag handler. The flag_handle - parameter passes the handle of the raised flag to the channel flag handler - function. - */ -typedef void (*channel_flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_channel_flags_isr() function is used to register a flag - interrupt handler function with the ACE driver. The registered interrupt - handler will be called by the ACE driver when one of the flag generated based - on the value of the analog input channel identified by the channel handle - passed as parameter is asserted. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param channel_flag_isr - The channel_flag_isr parameter is pointer to a function taking a flag handle - as parameter. - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - Example - The example below demonstrates the use of the ACE_register_channel_flags_isr() - function in a system where the ACE is configured to have an analog input - channels named "MainSupply" with one flag named "Critical" generated based - on the value of "MainSupply" channel. The names "MainSupply" and "Critical" - were user selected in the ACE configurator. - @code - void main_supply_handler (ace_flag_handle_t flag_handle); - - void system_init(void) - { - ACE_register_channel_flag_isr(MainSupply, main_supply_handler); - ACE_enable_channel_flags_irq(MainSupply); - } - - void main_supply_handler (ace_flag_handle_t flag_handle) - { - if (MainSupply_Critical == flag_handle) - { - panic(flag_handle); - } - } - - @endcode -*/ -void ACE_register_channel_flags_isr -( - ace_channel_handle_t channel_handle, - channel_flag_isr_t channel_flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) global flag handler functions. These functions are - registered with the ACE driver through the ACE_register_global_flags_isr() - function. The ACE driver will call the global flags handler function when any - flag for any ADC input channel is raised. - - Declaring and Implementing Global Flag Handler Functions - PPE global flag handler functions should follow the following prototype: - void my_global_flag_handler( - ace_flag_handle_t flag_handle, - ace_channel_handle_t channel_handle - ); - The actual name of the PPE global flag handler is unimportant. You can use any - name of your choice for the PPE global flag handler. The flag_handle parameter - passes the handle of the raised flag to the global flag handler function. The - channel_handle parameter passes the handle of the channel for which the flag - was raised to the global flag handler function. - - */ -typedef void (*global_flag_isr_t)( ace_flag_handle_t flag_handle, ace_channel_handle_t channel_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_global_flags_isr() function is used to register a global - flag handler function with the ACE driver. The registered global handler will - be called when any flag interrupt is generated. - - @param global_flag_isr - The global_flag_isr parameter is a pointer to a function taking a flag - handle and channel handle as parameter. - */ -void ACE_register_global_flags_isr -( - global_flag_isr_t global_flag_isr -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group11 Conversion Functions - The following functions are used to convert an ADC sample value to a real - world unit. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_convert_adc_input_to_mV() function converts an ADC sample value into - the value in millivolts of the voltage seen at ADC input. It does not account - for prescaling taking place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_adc_input_to_mV() returns the number of millivolts derived - from the ADC sample value passed as parameter. - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mV() function converts a PPE sample value into milli-Volts. - It handles prescaling adjusments based on ACE configuration for ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_to_mV() returns the number of millivolts derived from the - PPE sample value passed as parameter. The returned value can be either - positive or negative since prescaling is accounted for in the conversion. - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mA() function converts a PPE sample value into milli-Amps. - The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a current monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a current monitor analog block. - - @return - The ACE_convert_to_mA() returns the number of milliamps derived from the - PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Kelvin() function converts a PPE sample value into degrees - Kelvin. The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Kelvin() returns the number of degrees Kelvin derived - from the PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Celsius() function converts a PPE sample value into tenths - of degrees Celsius. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Celsius() returns the number of tenths of degrees Celsius - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Fahrenheit() function converts a PPE sample value into - degrees Fahrenheit. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Fahrenheit() returns the number of degrees Fahrenheit - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_mV_to_adc_value() function converts a voltage value given in - milli-Volts into the ADC sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function is intended for use when directly controlling the ADC, not when - using samples read from the PPE. It does not account for prescaling taking - place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated ADC sample result value. - - @return - The ACE_convert_mV_to_adc_value() returns the ADC sample value that would be - produced if the analog input channel identified by channel_handle was set to - the voltage value passed as second parameter. - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mV() function converts a voltage value given in - milli-Volts into the PPE sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function handles prescaling adjusments based on ACE configuration for - ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mV() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - voltage value passed as second parameter. - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mA() function converts a current value given in - milli-Amps into the PPE sample value that would result from sampling this - current value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a current monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param current - The current parameter is the milli-Amps current value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mA() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - current value passed as second parameter. - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Kelvin() function converts a temperature value given in - degrees Kelvin into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Kelvin temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Kelvin() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Celsius() function converts a temperature value given in - degrees Celsius into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Celsius temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Celsius() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Fahrenheit() function converts a temperature value given - in degrees Fahrenheit into the PPE sample value that would result from sampling - this temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Fahrenheit temperature value for - which we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Fahrenheit() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_translate_pdma_value() function translates PDMA sampling values, - received from the ACE via PDMA transfers, into input channel ID and PPE - sample value. - The PDMA sampling values are generated by the ACE as a result of selecting - "Send result to DMA" in the ACE configurator analog input configuration. The - PDMA sampling values can be either raw ADC values, filtered values or the - result of a linear transformation. - The PDMA sampling values are obtained by configuring the PDMA controller to - transfer data from the ACE into a memory buffer. The ACE_translate_pdma_value() - function is used to interpret the content of that memory buffer. - - Please note that the translation of PDMA data containing raw ADC values from - ABPS inputs will result in sample values with an unexpected polarity. - The returned sample value will have the opposite polarity to the actual analog - value seen on the ABPS input. This is due to the internal characteristics of - the analog front end that are normally hidden by the PPE processing of ADC raw - samples. The translation of raw ADC values from analog inputs other than ABPS - inputs will result in correct sample values. - - @param pdma_value - The pdma_value parameter is a 32-bit value received from the ACE through a - peripheral DMA transfer. - - @param channel_id - The channel_id parameter is a pointer to an ADC channel ID variable. It is - used to return the ID of the ADC channel from which the PPE sample value - was generated from. This parameter can be set to zero if retrieving the - channel ID is not required. - - @return - The ACE_translate_pdma_value() returns the PPE sample value extracted from - the PDMA sampling value. - - Example: - @code - uint16_t ppe_value; - uint16_t pdma_value; - adc_channel_id_t channel_id; - ace_channel_handle_t channel_handle; - - pdma_value = get_next_pdma_ace_sample(); - ppe_value = ACE_translate_pdma_value(pdma_value, &channel_id); - channel_handle = ACE_get_input_channel_handle(channel_id); - if (channel_handle != INVALID_CHANNEL_HANDLE) - { - display_value(channel_handle, ppe_value); - } - @endcode - - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group12 Dynamic Linear Transform Control Functions - The following functions are used to dynamically adjust the linear transform - applied to analog input samples by the post processing engine: - - ACE_get_default_m_factor() - - ACE_get_default_c_offset() - - ACE_set_linear_transform() - The post processing engine performs a linear transform on analog input samples - obtained from the sample sequencing engine. The main purpose of this linear - transform is to apply part specific factory calibration to the analog samples - in order to achieve high accuracy. A second user specified linear transform - can also be optionally applied to the analog samples. This second linear - transform can be used to adjust for board level calibration or application - specific tuning. The functions described in this section apply to the user - defined transform. Factory calibration will not be affected by the use of the - ACE_set_linear_transform() function. - Note: - The post processing engine actually only performs one single linear - transform on analog samples. This transform takes into account factory - calibration and the user defined transform. The applied y = m.x + c - transform uses an m factor equal to m1.m2.mext and c offset equal to - (m2.c1.mext) + (c2.mext) where m1 and c1 are the factory calibration factor - and offset; m2 and c2 are the user defined transform factor and offset; and - mext is a factory calibration factor depending on the reference voltage - used by the ADC generating the sample. - @{ - *//*=========================================================================*/ - - -/*------------------------------------------------------------------------*//** - The ACE_get_default_m_factor() function retrieves the default value of the m - factor of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform m factor default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_m_factor() function returns the user transform m factor - default value. It is a signed 16-bit number representing a factor in the - range -2 to +1.99993896484375. The value of the m factor is obtained by - multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_m_factor -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_get_default_c_offset() function retrieves the default value of the c - offset of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform c offset default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_c_offset() function returns the user linear transform’s - c offset default value. It is a signed 16-bit number representing a factor - in the range -2 to +1.99993896484375. The value of the c offset is obtained - by multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_c_offset -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_set_linear_transform() function allows adjusting the user defined - linear transform applied to analog input samples by the post processing - engine. The linear transform is of the form y = m.x + b where the m factor - and c offset are in the range -2 to +1.99993896484375. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param m2 - The m2 parameter specifies the user defined transform’s m factor. It is a - signed 16-bit number representing a factor in the range -2 to - +1.99993896484375. The value of the m2 factor is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x7000 - represents a 1.75 factor and a value of 0xE000 represents a -0.5 factor. - - @param c2 - The c2 parameter specifies the user defined transform’s c offset. It is a - signed 16-bit number representing an offset in the range -2 to - +1.99993896484375. The value of the c2 offset is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x1000 represents - a 0.25 offset and a value of 0xB000 represents a -1.25 offset. - - @code - void reset_to_default(ace_channel_handle_t channel_handle) - { - int16_t m; - int16_t c; - - m = ACE_get_default_m_factor(channel_handle); - c = ACE_get_default_c_offset(channel_handle); - ACE_set_linear_transform(channel_handle, m, c); - } - @endcode - */ -void ACE_set_linear_transform -( - ace_channel_handle_t channel_handle, - int16_t m2, - int16_t c2 -); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h deleted file mode 100644 index 2621f5375..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h +++ /dev/null @@ -1,622 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2841 $ - * SVN $Date: 2010-07-20 18:10:00 +0100 (Tue, 20 Jul 2010) $ - */ - -/*=========================================================================*//** - @mainpage ACE Configurator data provided to ACE Driver. - - @section intro_sec Introduction - This file contains the definition of data structures used by the ACE - Configurator software tool for sharing information about the ACE configuration - with the ACE driver. It also contains the API for accessor functions used by - the ACE driver to extract relevant information from these data structures. - *//*=========================================================================*/ -#ifndef __MSS_ACE_CONFIGURATOR_H_ -#define __MSS_ACE_CONFIGURATOR_H_ - -#include "mss_ace.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - Post Processing Engine (PPE) flags IDs. - */ -typedef enum -{ - PPE_FLAGS0_0 = 0, - PPE_FLAGS0_1 = 1, - PPE_FLAGS0_2 = 2, - PPE_FLAGS0_3 = 3, - PPE_FLAGS0_4 = 4, - PPE_FLAGS0_5 = 5, - PPE_FLAGS0_6 = 6, - PPE_FLAGS0_7 = 7, - PPE_FLAGS0_8 = 8, - PPE_FLAGS0_9 = 9, - PPE_FLAGS0_10 = 10, - PPE_FLAGS0_11 = 11, - PPE_FLAGS0_12 = 12, - PPE_FLAGS0_13 = 13, - PPE_FLAGS0_14 = 14, - PPE_FLAGS0_15 = 15, - PPE_FLAGS0_16 = 16, - PPE_FLAGS0_17 = 17, - PPE_FLAGS0_18 = 18, - PPE_FLAGS0_19 = 19, - PPE_FLAGS0_20 = 20, - PPE_FLAGS0_21 = 21, - PPE_FLAGS0_22 = 22, - PPE_FLAGS0_23 = 23, - PPE_FLAGS0_24 = 24, - PPE_FLAGS0_25 = 25, - PPE_FLAGS0_26 = 26, - PPE_FLAGS0_27 = 27, - PPE_FLAGS0_28 = 28, - PPE_FLAGS0_29 = 29, - PPE_FLAGS0_30 = 30, - PPE_FLAGS0_31 = 31, - PPE_FLAGS1_0 = 32, - PPE_FLAGS1_1 = 33, - PPE_FLAGS1_2 = 34, - PPE_FLAGS1_3 = 35, - PPE_FLAGS1_4 = 36, - PPE_FLAGS1_5 = 37, - PPE_FLAGS1_6 = 38, - PPE_FLAGS1_7 = 39, - PPE_FLAGS1_8 = 40, - PPE_FLAGS1_9 = 41, - PPE_FLAGS1_10 = 42, - PPE_FLAGS1_11 = 43, - PPE_FLAGS1_12 = 44, - PPE_FLAGS1_13 = 45, - PPE_FLAGS1_14 = 46, - PPE_FLAGS1_15 = 47, - PPE_FLAGS1_16 = 48, - PPE_FLAGS1_17 = 49, - PPE_FLAGS1_18 = 50, - PPE_FLAGS1_19 = 51, - PPE_FLAGS1_20 = 52, - PPE_FLAGS1_21 = 53, - PPE_FLAGS1_22 = 54, - PPE_FLAGS1_23 = 55, - PPE_FLAGS1_24 = 56, - PPE_FLAGS1_25 = 57, - PPE_FLAGS1_26 = 58, - PPE_FLAGS1_27 = 59, - PPE_FLAGS1_28 = 60, - PPE_FLAGS1_29 = 61, - PPE_FLAGS1_30 = 62, - PPE_FLAGS1_31 = 63, - PPE_FLAGS2_0 = 64, - PPE_FLAGS2_1 = 65, - PPE_FLAGS2_2 = 66, - PPE_FLAGS2_3 = 67, - PPE_FLAGS2_4 = 68, - PPE_FLAGS2_5 = 69, - PPE_FLAGS2_6 = 70, - PPE_FLAGS2_7 = 71, - PPE_FLAGS2_8 = 72, - PPE_FLAGS2_9 = 73, - PPE_FLAGS2_10 = 74, - PPE_FLAGS2_11 = 75, - PPE_FLAGS2_12 = 76, - PPE_FLAGS2_13 = 77, - PPE_FLAGS2_14 = 78, - PPE_FLAGS2_15 = 79, - PPE_FLAGS2_16 = 80, - PPE_FLAGS2_17 = 81, - PPE_FLAGS2_18 = 82, - PPE_FLAGS2_19 = 83, - PPE_FLAGS2_20 = 84, - PPE_FLAGS2_21 = 85, - PPE_FLAGS2_22 = 86, - PPE_FLAGS2_23 = 87, - PPE_FLAGS2_24 = 88, - PPE_FLAGS2_25 = 89, - PPE_FLAGS2_26 = 90, - PPE_FLAGS2_27 = 91, - PPE_FLAGS2_28 = 92, - PPE_FLAGS2_29 = 93, - PPE_FLAGS2_30 = 94, - PPE_FLAGS2_31 = 95, - PPE_FLAGS3_0 = 96, - PPE_FLAGS3_1 = 97, - PPE_FLAGS3_2 = 98, - PPE_FLAGS3_3 = 99, - PPE_FLAGS3_4 = 100, - PPE_FLAGS3_5 = 101, - PPE_FLAGS3_6 = 102, - PPE_FLAGS3_7 = 103, - PPE_FLAGS3_8 = 104, - PPE_FLAGS3_9 = 105, - PPE_FLAGS3_10 = 106, - PPE_FLAGS3_11 = 107, - PPE_FLAGS3_12 = 108, - PPE_FLAGS3_13 = 109, - PPE_FLAGS3_14 = 110, - PPE_FLAGS3_15 = 111, - PPE_FLAGS3_16 = 112, - PPE_FLAGS3_17 = 113, - PPE_FLAGS3_18 = 114, - PPE_FLAGS3_19 = 115, - PPE_FLAGS3_20 = 116, - PPE_FLAGS3_21 = 117, - PPE_FLAGS3_22 = 118, - PPE_FLAGS3_23 = 119, - PPE_FLAGS3_24 = 120, - PPE_FLAGS3_25 = 121, - PPE_FLAGS3_26 = 122, - PPE_FLAGS3_27 = 123, - PPE_FLAGS3_28 = 124, - PPE_FLAGS3_29 = 125, - PPE_FLAGS3_30 = 126, - PPE_FLAGS3_31 = 127, - PPE_SFFLAGS_0 = 128, - PPE_SFFLAGS_1 = 129, - PPE_SFFLAGS_2 = 130, - PPE_SFFLAGS_3 = 131, - PPE_SFFLAGS_4 = 132, - PPE_SFFLAGS_5 = 133, - PPE_SFFLAGS_6 = 134, - PPE_SFFLAGS_7 = 135, - PPE_SFFLAGS_8 = 136, - PPE_SFFLAGS_9 = 137, - PPE_SFFLAGS_10 = 138, - PPE_SFFLAGS_11 = 139, - PPE_SFFLAGS_12 = 140, - PPE_SFFLAGS_13 = 141, - PPE_SFFLAGS_14 = 142, - PPE_SFFLAGS_15 = 143, - PPE_SFFLAGS_16 = 144, - PPE_SFFLAGS_17 = 145, - PPE_SFFLAGS_18 = 146, - PPE_SFFLAGS_19 = 147, - PPE_SFFLAGS_20 = 148, - PPE_SFFLAGS_21 = 149, - PPE_SFFLAGS_22 = 150, - PPE_SFFLAGS_23 = 151, - PPE_SFFLAGS_24 = 152, - PPE_SFFLAGS_25 = 153, - PPE_SFFLAGS_26 = 154, - PPE_SFFLAGS_27 = 155, - PPE_SFFLAGS_28 = 156, - PPE_SFFLAGS_29 = 157, - PPE_SFFLAGS_30 = 158, - PPE_SFFLAGS_31 = 159, - NB_OF_PPE_FLAGS = 160 -} ppe_flag_id_t; - -/*-------------------------------------------------------------------------*//** - Flag types. - The following defines are used to indicate the type of flag selected in the - ACE configurator. - */ -/** - A flag configured as BASIC_THRESHOLD_OVER will be asserted when the value of - the input channel exceeds the value of the flag threshold. The flag will be - de-asserted once the value of the input channel falls back under the threshold - value. No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_OVER 0u - -/** - A flag configured as BASIC_THRESHOLD_UNDER will be asserted when the value of - the input channel falls under the value of the flag threshold. The flag will be - de-asserted once the value of the input channel exceeds the threshold value. - No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_UNDER 1u - -/** - A flag configured as STATE_FILTERED_OVER will be asserted when n consecutive - samples of the analog input are seen to exceed the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen below the flag - threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_OVER 2u - -/** - A flag configured as STATE_FILTERED_UNDER will be asserted when n consecutive - samples of the analog input are seen below the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen to exceed the - flag threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_UNDER 3u - -/** - A flag configured as DUAL_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value plus the hysteresis value. - The flag will be deasserted when the value of the input channel falls under the - threshold value minus the hysteresis value. - */ -#define DUAL_HYSTERESIS_OVER 4u - -/** - A flag configured as DUAL_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value minus the hysteresis value. - The flag will be deasserted when the value of the input channel exceeds the - threshold value plus the hysteresis value. - */ -#define DUAL_HYSTERESIS_UNDER 5u - -/** - A flag configured as IPMI_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value. The flag will be deasserted - when the value of the input channel falls under the threshold value minus the - hysteresis value. - */ -#define IPMI_HYSTERESIS_OVER 6u - -/** - A flag configured as IPMI_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value. The flag will be - deasserted when the value of the input channel exceeds the threshold value - plus the hysteresis value. - */ -#define IPMI_HYSTERESIS_UNDER 7u - -/*-------------------------------------------------------------------------*//** - State filtered flag configuration. - */ -typedef struct __state_filtering_cfg -{ - /** - Number of consecutive samples required for flag assertion. - */ - uint8_t assert_samples; - - /** - Number of consecutive samples required for flag deassertion. - */ - uint8_t deassert_samples; -} state_filtering_cfg_t; - -/*-------------------------------------------------------------------------*//** - Post Processing Engine generated flag descriptor. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying the flag described by this - structure. This unique flag name is the name selected in the ACE configurator - software tool when creating a flag. - The flag unique name contains both the name of the monitored input channel - and the name of the flag generated based the level of that input separated - by ":". For example, the unique name for the flag called "CriticalOver" - raised when the input channel called "MainSupply" reaches a critical level - would be named "MainSupply:CriticalOver". - */ - const uint8_t * p_sz_flag_name; - - /** - The flag_id element identifies which PPE hardware flag will be asserted - when the flag conditions are found to be met by the Post Processing Engine. - This flag_id is typically used by the ACE driver to determine which ACE - register is used to enable, disable and clear interrupts on the associated - flag. - */ - ppe_flag_id_t flag_id; - - /** - The flag_type element specifies the type of the described flag. It is - specified using one of the following: - - BASIC_THRESHOLD_OVER - - BASIC_THRESHOLD_UNDER - - STATE_FILTERED_OVER - - STATE_FILTERED_UNDER - - DUAL_HYSTERESIS_OVER - - DUAL_HYSTERESIS_UNDER - - IPMI_HYSTERESIS_OVER - - IPMI_HYSTERESIS_UNDER - */ - uint8_t flag_type; - - /** - PPE RAM offset of flag threshold level. - This is the 32-bit word offset within the Post Processing Engine RAM where - the threshold associated with this flag is stored. This is used to allow - the ACE driver dynamically modifying the threshold beyond which a flag is - asserted. - In the case of hysteresis flags, threshold_ppe_offset indicates the - start location of two consecutive PPE RAM words containing the ADC value - of the hysteresis low limit followed by the ADC value for the high - hysteresis limit. - */ - uint16_t threshold_ppe_offset; - - /** - The default_threshold element specifies the value of the flag's threshold - selected in the ACE Configurator. It is the ADC value for which the flag - would be raised if hysteresis was not applied. - */ - uint16_t default_threshold; - - /** - The flag_properties takes a different meaning depending whether the flag is - an hysteresis flag or a state filtered flag. - - Hysteresis flags: - The flag_properties element specifies the ADC value to be applied as - hysteresis to the threshold value that was selected in the ACE Configurator. - A non-zero value indicates that an hysteresis must be applied and that - threshold_ppe_offset refers to the first of the two ADC values defining - the hysteresis applied to the input signal. - - State filtered flags: - The flag_properties element specifies the number of consecutive samples that - must be over or under the threshold value for the flag state to change. - */ - uint16_t flag_properties; - - /** - The channel_handle element specifies the monitored analog input channel. - It can be used as parameter to a call to function ACE_get_ppe_sample() in - order to read the current value of the analog input channel which caused - the flag described by this structure to be raised. - */ - ace_channel_handle_t channel_handle; - -} ppe_flag_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_procedure_desc_t structure is used as a procedure descriptor. It - contains all information required by the ACE driver to use and manage an ACE - procedure that was created using the ACE Configurator software tool. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying an ACE procedure. - This procedure name is the one selected when created procedures using the - ACE Configurator software tool. - */ - const uint8_t * p_sz_proc_name; - - /** - Sample Sequencing Engine procedure loop start program counter value. - */ - uint16_t sse_loop_pc; - - /** - Sample Sequencing Engine microcode offset. - This is the 16-bit instruction offset from which the SSE microcode for the - procedure must be loaded at into the ACE SSE RAM. - This is also the value that must be writtent into one of the ACE's SSE program - counter registers in order to start the procedure after having loaded its - microcode into SSE RAM. The actual program counter register written depends - on the analog module used by the procedure. It is determined by the value - of this structure's sse_pc_id element. - */ - uint16_t sse_load_offset; - - /** - Sample Sequencing Engine microcode length. - This is the number of 16-bit SSE instructions that must be loaded into - SSE RAM in order to load the procedure into the ACE. - */ - uint16_t sse_ucode_length; - - /** - Pointer to ucode. - */ - const uint16_t * sse_ucode; - - /** - SSE program counter ID. - This value identifies whether the procedure is used to control analog - module 0, 1 or 2. It is used to know which SSE program counter should - be set when starting the procedure. - */ - uint8_t sse_pc_id; -} ace_procedure_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_channel_desc_t structure is used as an analog input channel - descriptor. It contains the name of a channel as selected in the ACE - Configurator software tool and the identifier used to identify the ADC channel - to which the analog input signal is connected. - */ -typedef struct -{ - /** - Analog input signal name as selected in the ACE Configurator software tool. - */ - const uint8_t * p_sz_channel_name; - - /** - Analog block input channel connected to the input signal. - */ - adc_channel_id_t signal_id; - - /** - Offset into Post Processing Engine RAM where the result of post processing - on sample for the signal will be stored. - */ - uint16_t signal_ppe_offset; - - /** - Number of PPE generated flags associated with the analog input channel - described by this structure. The nb_of_flags specifies the number of items - found in the p_flags_array array. - */ - uint16_t nb_of_flags; - - /** - The p_flags_array element is a pointer to an array of indexes into the - g_ppe_flags_desc_table flag descriptors table. The array it points to - lists the flags generated base don the value of the analog input channel - described by this structure. - */ - const uint16_t * p_flags_array; - -} ace_channel_desc_t; - -/*-------------------------------------------------------------------------*//** - struct ace_config_desc_t - The ace_config_descr_t structure is used to provide information about the - configuration of the ACE and analog block. A single instance of this structure - is intended to be used to inform the ACE driver of the ACE configuration - seleted using the ACE Configurator software tool and programmed into the ACE - hardware at system boot time. - */ -typedef struct -{ - /*-------------------------------------------------------------------------- - * Procedures information - */ - /** - Procedure descriptors table location. - This is a pointer to an array of procedure descriptors. - @see nb_of_procedures - */ - ace_procedure_desc_t * proc_descr_table; - - /** - Total number of available procedures. This indicates the number of elements - of the procedure descriptor array. - @see proc_descr_table - */ - uint16_t nb_of_procedures; - - /** - Number of procedures loaded into the ACE hardware at system boot time. - @see boot_loaded_proc_idx_list - */ - uint16_t nb_boot_loaded_proc; - /** - Pointer to list of procedures loaded into the ACE hardware at system boot - time. That list contains the indexes into the procedure descriptors array - of the procedures loaded into the ACE hardware. - @see nb_boot_loaded_proc - */ - uint16_t * boot_loaded_proc_idx_list; - - /*-------------------------------------------------------------------------- - * Analog to Digital Converter signals - */ - /** - Total number of configured analog input signals. - This is the number of analog input signals that were added to the ACE - configuration using the ACE Configurator software tool. It is also the - number of elements in the signal descriptor table pointed to by this - structure's signals_descr_table field. - @see signals_descr_table - */ - uint16_t nb_of_signals; - - /** - Signal descriptors table location. - This is a pointer to an array of signal descriptors describing every - configured analog input signals. - @see nb_of_signals - */ - ace_channel_desc_t * signals_descr_table; - - /*-------------------------------------------------------------------------- - * One Bit DACs - */ - /** - One Bit DAC (OBD) names as specified in ACE configurator software tool. - This array is indexed on the analog block number. i.e. sz_obd_names[0] - contains the name used to identify the OBD contained in analog module 0. - A value of 0 in this array indicates that no name was assigned to the - associated OBD. - */ - const uint8_t * sz_obd_names[3]; - - /*-------------------------------------------------------------------------- - * PPE generated flags - */ - /** - Flag descriptors array location. - This is a pointer to an array of ppe_flag_desc_t structures describing the - properties of each of the flags generated by the Post Processing Engine. - The size of that array is specified by the nb_of_flags element of this - structure. - */ - ppe_flag_desc_t * flags_descr_table; - - /** - Number of flags used in the ACE Configurator generated configuration. - */ - uint8_t nb_of_flags; - - /*-------------------------------------------------------------------------- - * Analog comparators - */ - /** - * - */ -} ace_config_desc_t; - - -/*-------------------------------------------------------------------------*//** - The ace_adc_config_t data structure is used by the ACE configurator to inform - the ACE driver of an analog to digital converter's configuration. - */ -typedef struct -{ - /** - ADC resolution. Values can be 256, 1024 or 4096 depending whether the ADC - is configured for 8, 10 or 12 bits. - */ - uint16_t adc_resolution; - - /** - VA_REF value in milli-Volts. This should be set to 2560 if internal VAREF - is used. - */ - uint16_t va_ref; - -} ace_adc_config_t; - -/*-------------------------------------------------------------------------*//** - The ppe_transforms_desc_t data structure is used by the ACE configurator to - inform the ACE driver of the location of the "m" factor and "c" offset used - by the PPE to perform a linear transform of the form y = m*x + c. This linear - transform is used to apply calibration to the ADC samples. It can also include - a user defined linear transform specified by the user using the ACE - configurator. The factor and offset of the user defined transform is included - in the default_m2 and default_c2 items. - */ -typedef struct -{ - /** - Offset into Post Processing Engine RAM where the linear transform m factor - is stored. - */ - uint16_t m_ppe_offset; - - /** - Offset into Post Processing Engine RAM where the linear transform c offset - is stored. - */ - uint16_t c_ppe_offset; - - /** - Default value of the user defined linear transform m2 factor. - */ - int16_t default_m2; - - /** - Default value of the user defined linear transform c2 offset. - */ - int16_t default_c2; -} ppe_transforms_desc_t; - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_CONFIGURATOR_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h deleted file mode 100644 index 431f28f78..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * Manufacturing Test Data data structures. - * This header files specified the layout of the various data structures used - * to store manaufacturing test data within eNVM. - * - * SVN $Revision: 700 $ - * SVN $Date: 2009-03-13 13:22:03 +0000 (Fri, 13 Mar 2009) $ - */ -#ifndef MTD_DATA_H -#define MTD_DATA_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Analog block specifications - */ -#define NB_OF_QUADS 6 -#define NB_OF_ABPS_PER_QUAD 2 -#define TOTAL_NB_OF_ABPS (NB_OF_QUADS * NB_OF_ABPS_PER_QUAD) -#define NB_OF_ABPS_RANGES 4 -#define NB_OF_ANALOG_MODULES 3 -#define NB_OF_OBD_MODES 2 -#define NB_OF_QUADS_PER_MODULE 2 -#define NB_OF_CHOPPING_OPTIONS 2 -#define NB_OF_DIRECT_INPUTS_PER_ADC 4 - -#define NB_OF_ADC_CHANNELS 13 - -/*------------------------------------------------------------------------------ - * mtd_global_settings_t - *------------------------------------------------------------------------------ - * This typedef specifies the layout of the data structure holding the - * manufacturing test data global settings. - */ -typedef struct __mtd_global_settings_t -{ - uint16_t crc16; - uint8_t serial[6]; - uint32_t revision; - uint16_t sram_repair[8]; - uint16_t varef_m; - uint16_t spare; - uint8_t big_dec; - uint8_t reserved0; - uint16_t reserved1; -} mtd_global_settings_t; - -/*------------------------------------------------------------------------------ - * mtd_abps_trim_t - *------------------------------------------------------------------------------ - * The following data structure is used to store ABPS trimming information. - */ -typedef struct __mtd_abps_trim_t -{ - uint8_t dacdec; - uint8_t negtrim_per4_per3b_gtdec; -} mtd_abps_trim_t; - - -/*------------------------------------------------------------------------------ - * mtd_calibration_mc_t - *------------------------------------------------------------------------------ - * The following data structure is used to store M and C calibration - * coefficients. - */ -typedef struct __mtd_calibration_mc_t -{ - uint16_t m; - uint16_t c; -} mtd_calibration_mc_t; - - -/*------------------------------------------------------------------------------ - * mtd_data_t - *------------------------------------------------------------------------------ - * The following data structure is used to hold the full set of manufacturing - * test data. - */ -typedef struct __mtd_data_t -{ - mtd_global_settings_t global_settings; - mtd_abps_trim_t abps_trimming[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - uint8_t odb_trimming[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t abps_calibration[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - mtd_calibration_mc_t obd_calibration[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t cm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t tm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t quads_direct_input_cal[NB_OF_QUADS][2]; - mtd_calibration_mc_t adc_direct_input_cal[NB_OF_ANALOG_MODULES][NB_OF_DIRECT_INPUTS_PER_ADC]; - uint16_t comparators_offsets[NB_OF_QUADS]; - uint32_t ccc_delays_cal; -} mtd_data_t; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c deleted file mode 100644 index fc17e5298..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 source file. - * - * CRC-32-IEEE 802.3 - * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + - * x^4 + x^2 + x + 1 - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - - #ifdef __cplusplus -extern "C" { -#endif - -#include "crc32.h" - -static const uint32_t crc32_table[] = { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, 0x706af48fUL, - 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, 0xe0d5e91eUL, 0x97d2d988UL, - 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, - 0xf3b97148UL, 0x84be41deUL, 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, - 0x136c9856UL, 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, 0xa2677172UL, - 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, 0x35b5a8faUL, 0x42b2986cUL, - 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, - 0x26d930acUL, 0x51de003aUL, 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, - 0xcfba9599UL, 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, 0x01db7106UL, - 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, 0x9fbfe4a5UL, 0xe8b8d433UL, - 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, - 0x91646c97UL, 0xe6635c01UL, 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, - 0x6c0695edUL, 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, 0xfbd44c65UL, - 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, 0x4adfa541UL, 0x3dd895d7UL, - 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, - 0x44042d73UL, 0x33031de5UL, 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, - 0xbe0b1010UL, 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, 0x2eb40d81UL, - 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, 0x03b6e20cUL, 0x74b1d29aUL, - 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, - 0x0d6d6a3eUL, 0x7a6a5aa8UL, 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, - 0xf00f9344UL, 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, 0x67dd4accUL, - 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, 0xd6d6a3e8UL, 0xa1d1937eUL, - 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, - 0xd80d2bdaUL, 0xaf0a1b4cUL, 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, - 0x316e8eefUL, 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, 0xb2bd0b28UL, - 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, 0x2cd99e8bUL, 0x5bdeae1dUL, - 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, - 0x72076785UL, 0x05005713UL, 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, - 0x92d28e9bUL, 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, 0x18b74777UL, - 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, 0x8f659effUL, 0xf862ae69UL, - 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, - 0xa7672661UL, 0xd06016f7UL, 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, - 0x40df0b66UL, 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, 0xcdd70693UL, - 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, 0x5d681b02UL, 0x2a6f2b94UL, - 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, 0x2d02ef8dUL -}; - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -) -{ - uint32_t a; - - for(a=0; a> 8); - } - - return value; -} - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -) -{ - return mss_mac_crc32( 0xffffffffUL, data, data_length ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h deleted file mode 100644 index ce500a6f2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_CRC32_H -#define __MSS_ETHERNET_MAC_CRC32_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -); - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CRC32_H */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c deleted file mode 100644 index 4e92171a9..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c +++ /dev/null @@ -1,1575 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC driver implementation. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - * - ******************************************************************************/ - -/* - * - * - * NOTE: This driver has been modified specifically for use with the* uIP stack. - * It is no longer a generic driver. - * - * - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "FreeRTOS.h" -#include "task.h" - -#include "crc32.h" - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac_desc.h" -#include "mss_ethernet_mac_conf.h" -#include "../../CMSIS/mss_assert.h" - -#include "phy.h" - -/**************************** INTERNAL DEFINES ********************************/ - -#define MAC_CHECK(CHECK,ERRNO) \ - {if(!(CHECK)){g_mss_mac.last_error=(ERRNO); configASSERT((CHECK));}} - -/* - * Flags - */ -#define FLAG_MAC_INIT_DONE 1u -#define FLAG_PERFECT_FILTERING 2u -#define FLAG_CRC_DISABLE 4u -#define FLAG_EXCEED_LIMIT 8u - -/* - * Return types - */ -#define MAC_OK 0 -#define MAC_FAIL (-1) -#define MAC_WRONG_PARAMETER (-2) -#define MAC_TOO_BIG_PACKET (-3) -#define MAC_BUFFER_IS_FULL (-4) -#define MAC_NOT_ENOUGH_SPACE (-5) -#define MAC_TIME_OUT (-6) -#define MAC_TOO_SMALL_PACKET (-7) - -/* Allocating this many buffers will always ensure there is one free as, even -though TX_RING_SIZE is set to two, the two Tx descriptors will only ever point -to the same buffer. */ -#define macNUM_BUFFERS RX_RING_SIZE + TX_RING_SIZE -#define macBUFFER_SIZE 1488 - -/***************************************************************/ -MAC_instance_t g_mss_mac; - -/**************************** INTERNAL DATA ***********************************/ -#define ERROR_MESSAGE_COUNT 8 -#define MAX_ERROR_MESSAGE_WIDTH 40 -static const int8_t unknown_error[] = "Unknown error"; -static const int8_t ErrorMessages[][MAX_ERROR_MESSAGE_WIDTH] = { - "No error occured", - "Method failed", - "Wrong parameter pased to function", - "Frame is too long", - "Not enough space in buffer", - "Not enough space in buffer", - "Timed out", - "Frame is too small" -}; - -/* - * Null variables - */ -static uint8_t* NULL_buffer; -static MSS_MAC_callback_t NULL_callback; - -/* Declare the uip_buf as a pointer, rather than the traditional array, as this -is a zero copy driver. uip_buf just gets set to whichever buffer is being -processed. */ -unsigned char *uip_buf = NULL; - -/**************************** INTERNAL FUNCTIONS ******************************/ - -static int32_t MAC_dismiss_bad_frames( void ); -static int32_t MAC_send_setup_frame( void ); - -static int32_t MAC_stop_transmission( void ); -static void MAC_start_transmission( void ); -static int32_t MAC_stop_receiving( void ); -static void MAC_start_receiving( void ); - -static void MAC_set_time_out( uint32_t time_out ); -static uint32_t MAC_get_time_out( void ); - -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n); -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n); -static void MAC_memset_All(MAC_instance_t *s, uint32_t c); - -static unsigned char *MAC_obtain_buffer( void ); -static void MAC_release_buffer( unsigned char *pcBufferToRelease ); - -#if( TX_RING_SIZE != 2 ) - #error This uIP Ethernet driver required TX_RING_SIZE to be set to 2 -#endif - -/* Buffers that will dynamically be allocated to/from the Tx and Rx descriptors. -The union is used for alignment only. */ -static union xMAC_BUFFERS -{ - unsigned long ulAlignmentVariable; /* For alignment only, not used anywhere. */ - unsigned char ucBuffer[ macNUM_BUFFERS ][ macBUFFER_SIZE ]; -} xMACBuffers; - -/* Each array position indicates whether or not the buffer of the same index -is currently allocated to a descriptor (pdTRUE) or is free for use (pdFALSE). */ -static unsigned char ucMACBufferInUse[ macNUM_BUFFERS ] = { 0 }; - -/***************************************************************************//** - * Initializes the Ethernet Controller. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicats/multicast)/hash init - */ -void -MSS_MAC_init -( - uint8_t phy_address -) -{ - const uint8_t mac_address[6] = { DEFAULT_MAC_ADDRESS }; - int32_t a; - - /* To start with all buffers are free. */ - for( a = 0; a < macNUM_BUFFERS; a++ ) - { - ucMACBufferInUse[ a ] = pdFALSE; - } - - /* Try to reset chip */ - MAC_BITBAND->CSR0_SWR = 1u; - - do - { - vTaskDelay( 10 ); - } while ( 1u == MAC_BITBAND->CSR0_SWR ); - - /* Check reset values of some registers to constrol - * base address validity */ - configASSERT( MAC->CSR0 == 0xFE000000uL ); - configASSERT( MAC->CSR5 == 0xF0000000uL ); - configASSERT( MAC->CSR6 == 0x32000040uL ); - - /* Instance setup */ - MAC_memset_All( &g_mss_mac, 0u ); - - g_mss_mac.base_address = MAC_BASE; - g_mss_mac.phy_address = phy_address; - - for( a=0; aCSR0_DBO = DESCRIPTOR_BYTE_ORDERING_MODE; - MAC->CSR0 = (MAC->CSR0 & ~CSR0_PBL_MASK) | ((uint32_t)PROGRAMMABLE_BURST_LENGTH << CSR0_PBL_SHIFT); - MAC_BITBAND->CSR0_BLE = BUFFER_BYTE_ORDERING_MODE; - MAC_BITBAND->CSR0_BAR = (uint32_t)BUS_ARBITRATION_SCHEME; - - /* Fixed settings */ - /* No space between descriptors */ - MAC->CSR0 = MAC->CSR0 &~ CSR0_DSL_MASK; - /* General-purpose timer works in continuous mode */ - MAC_BITBAND->CSR11_CON = 1u; - /* Start general-purpose */ - MAC->CSR11 = (MAC->CSR11 & ~CSR11_TIM_MASK) | (0x0000FFFFuL << CSR11_TIM_SHIFT); - - /* Ensure promiscous mode is off (it should be by default anyway). */ - MAC_BITBAND->CSR6_PR = 0; - - /* Perfect filter. */ - MAC_BITBAND->CSR6_HP = 1; - - /* Pass multcast. */ - MAC_BITBAND->CSR6_PM = 1; - - /* Set descriptors */ - MAC->CSR3 = (uint32_t)&(g_mss_mac.rx_descriptors[0].descriptor_0); - MAC->CSR4 = (uint32_t)&(g_mss_mac.tx_descriptors[0].descriptor_0); - - /* enable normal interrupts */ - MAC_BITBAND->CSR7_NIE = 1u; - - /* Set default MAC address and reset mac filters */ - MAC_memcpy( g_mss_mac.mac_address, mac_address, 6u ); - MSS_MAC_set_mac_address((uint8_t *)mac_address); - - /* Detect PHY */ - if( g_mss_mac.phy_address > MSS_PHY_ADDRESS_MAX ) - { - PHY_probe(); - configASSERT( g_mss_mac.phy_address <= MSS_PHY_ADDRESS_MAX ); - } - - /* Reset PHY */ - PHY_reset(); - - /* Configure chip according to PHY status */ - MSS_MAC_auto_setup_link(); - - /* Ensure uip_buf starts by pointing somewhere. */ - uip_buf = MAC_obtain_buffer(); -} - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the EthernetInit function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @param config The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -) -{ - int32_t ret; - - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - MAC_BITBAND->CSR6_RA = (uint32_t)(((configuration & MSS_MAC_CFG_RECEIVE_ALL) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_TTM = (((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_SF = (uint32_t)(((configuration & MSS_MAC_CFG_STORE_AND_FORWARD) != 0u) ? 1u : 0u ); - - switch( configuration & MSS_MAC_CFG_THRESHOLD_CONTROL_11 ) { - case MSS_MAC_CFG_THRESHOLD_CONTROL_00: - MAC->CSR6 = MAC->CSR6 & ~CSR6_TR_MASK; - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_01: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)1 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_10: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)2 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_11: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)3 << CSR6_TR_SHIFT ); - break; - default: - break; - } - MAC_BITBAND->CSR6_FD = (uint32_t)(((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PM = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_ALL_MULTICAST) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PR = (uint32_t)(((configuration & MSS_MAC_CFG_PROMISCUOUS_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PB = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_BAD_FRAMES) != 0u) ? 1u : 0u ); - PHY_set_link_type( (uint8_t) - ((((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? MSS_MAC_LINK_STATUS_100MB : 0u ) | - (((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? MSS_MAC_LINK_STATUS_FDX : 0u )) ); - - MSS_MAC_auto_setup_link(); -} - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration( void ) -{ - uint32_t configuration; - - configuration = 0u; - if( MAC_BITBAND->CSR6_RA != 0u ) { - configuration |= MSS_MAC_CFG_RECEIVE_ALL; - } - - if( MAC_BITBAND->CSR6_TTM != 0u ) { - configuration |= MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE; - } - - if( MAC_BITBAND->CSR6_SF != 0u ) { - configuration |= MSS_MAC_CFG_STORE_AND_FORWARD; - } - - switch( (MAC->CSR6 & CSR6_TR_MASK) >> CSR6_TR_SHIFT ) { - case 1: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_01; break; - case 2: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_10; break; - case 3: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_11; break; - default: break; - } - if( MAC_BITBAND->CSR6_FD != 0u ) { - configuration |= MSS_MAC_CFG_FULL_DUPLEX_MODE; - } - - if( MAC_BITBAND->CSR6_PM != 0u ) { - configuration |= MSS_MAC_CFG_PASS_ALL_MULTICAST; - } - - if( MAC_BITBAND->CSR6_PR != 0u ) { - configuration |= MSS_MAC_CFG_PROMISCUOUS_MODE; - } - - if( MAC_BITBAND->CSR6_IF != 0u ) { - configuration |= MSS_MAC_CFG_INVERSE_FILTERING; - } - - if( MAC_BITBAND->CSR6_PB != 0u ) { - configuration |= MSS_MAC_CFG_PASS_BAD_FRAMES; - } - - if( MAC_BITBAND->CSR6_HO != 0u ) { - configuration |= MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE; - } - - if( MAC_BITBAND->CSR6_HP != 0u ) { - configuration |= MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE; - } - - return (int32_t)configuration; -} - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -) -{ - uint32_t desc; - unsigned long ulDescriptor; - int32_t error = MAC_OK; - - configASSERT( uip_buf != NULL_buffer ); - - configASSERT( usLength >= 12 ); - - if( (g_mss_mac.flags & FLAG_EXCEED_LIMIT) == 0u ) - { - configASSERT( usLength <= MSS_MAX_PACKET_SIZE ); - } - - taskENTER_CRITICAL(); - { - /* Check both Tx descriptors are free, meaning the double send has completed. */ - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) || ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) ) - { - error = MAC_BUFFER_IS_FULL; - } - } - taskEXIT_CRITICAL(); - - configASSERT( ( g_mss_mac.tx_desc_index == 0 ) ); - - if( error == MAC_OK ) - { - /* Ensure nothing is going to get sent until both descriptors are ready. - This is done to prevent a Tx end occurring prior to the second descriptor - being ready. */ - MAC_BITBAND->CSR6_ST = 0u; - - /* Assumed TX_RING_SIZE == 2. A #error directive checks this is the - case. */ - taskENTER_CRITICAL(); - { - for( ulDescriptor = 0; ulDescriptor < TX_RING_SIZE; ulDescriptor++ ) - { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 = 0u; - - if( (g_mss_mac.flags & FLAG_CRC_DISABLE) != 0u ) { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_AC; - } - - /* Every buffer can hold a full frame so they are always first and last - descriptor */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_LS | TDES1_FS; - - /* set data size */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= usLength; - - /* reset end of ring */ - g_mss_mac.tx_descriptors[TX_RING_SIZE-1].descriptor_1 |= TDES1_TER; - - if( usLength > MSS_TX_BUFF_SIZE ) /* FLAG_EXCEED_LIMIT */ - { - usLength = (uint16_t)MSS_TX_BUFF_SIZE; - } - - /* The data buffer is assigned to the Tx descriptor. */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].buffer_1 = ( unsigned long ) uip_buf; - - /* update counters */ - desc = g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0; - if( (desc & TDES0_LO) != 0u ) { - g_mss_mac.statistics.tx_loss_of_carrier++; - } - if( (desc & TDES0_NC) != 0u ) { - g_mss_mac.statistics.tx_no_carrier++; - } - if( (desc & TDES0_LC) != 0u ) { - g_mss_mac.statistics.tx_late_collision++; - } - if( (desc & TDES0_EC) != 0u ) { - g_mss_mac.statistics.tx_excessive_collision++; - } - if( (desc & TDES0_UF) != 0u ) { - g_mss_mac.statistics.tx_underflow_error++; - } - g_mss_mac.statistics.tx_collision_count += - (desc >> TDES0_CC_OFFSET) & TDES0_CC_MASK; - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0 = TDES0_OWN; - - g_mss_mac.tx_desc_index = (g_mss_mac.tx_desc_index + 1u) % (uint32_t)TX_RING_SIZE; - } - } - taskEXIT_CRITICAL(); - } - - if (error == MAC_OK) - { - error = (int32_t)usLength; - - /* Start sending now both descriptors are set up. This is done to - prevent a Tx end occurring prior to the second descriptor being - ready. */ - MAC_BITBAND->CSR6_ST = 1u; - MAC->CSR1 = 1u; - - /* The buffer pointed to by uip_buf is now assigned to a Tx descriptor. - Find anothere free buffer for uip_buf. */ - uip_buf = MAC_obtain_buffer(); - } - else - { - error = 0; - } - return ( error ); -} - - -/***************************************************************************//** - * Returns available packet size. - * - * @param instance Pointer to a MAC_instance_t structure - * @return size of packet, bigger than 0, if a packet is available. - * If not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -) -{ - int32_t retval; - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) != 0u ) - { - /* Current descriptor is empty */ - retval = 0; - } - else - { - uint32_t frame_length; - frame_length = ( g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> RDES0_FL_OFFSET ) & RDES0_FL_MASK; - retval = (int32_t)( frame_length ); - } - return retval; -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -) -{ - uint16_t frame_length=0u; - - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) == 0u ) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - if( frame_length > macBUFFER_SIZE ) { - return MAC_NOT_ENOUGH_SPACE; - } - - /* uip_buf is about to point to the buffer that contains the received - data, mark the buffer that uip_buf is currently pointing to as free - again. */ - MAC_release_buffer( uip_buf ); - uip_buf = ( unsigned char * ) g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1; - - /* The buffer the Rx descriptor was pointing to is now in use by the - uIP stack - allocate a new buffer to the Rx descriptor. */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 = ( unsigned long ) MAC_obtain_buffer(); - - MSS_MAC_prepare_rx_descriptor(); - } - return ((int32_t)frame_length); -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller. - * This function reads a packet from the receive FIFO of the controller and - * sets the address of pacData to the received data. - * If time_out parameter is zero the function will return - * immediately (after the copy operation if data is available. Otherwise the function - * will keep trying to read till time_out expires or data is read, if MSS_MAC_BLOCKING - * value is given as time_out, function will wait for the reception to complete. - * - * @param pacData The pointer to the packet data. - * @param time_out Time out value in milli seconds for receiving. - * if value is #MSS_MAC_BLOCKING, there will be no time out. - * if value is #MSS_MAC_NONBLOCKING, function will return immediately - * if there is no packet waiting. - * Otherwise value must be greater than 0 and smaller than - * 0x01000000. - * @return Size of packet if packet fits in pacData. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -) -{ - uint16_t frame_length = 0u; - int8_t exit = 0; - - configASSERT( (time_out == MSS_MAC_BLOCKING) || - (time_out == MSS_MAC_NONBLOCKING) || - ((time_out >= 1) && (time_out <= 0x01000000UL)) ); - - MAC_dismiss_bad_frames(); - - /* wait for a packet */ - if( time_out != MSS_MAC_BLOCKING ) { - if( time_out == MSS_MAC_NONBLOCKING ) { - MAC_set_time_out( 0u ); - } else { - MAC_set_time_out( time_out ); - } - } - - while( ((g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) != 0u) && (exit == 0) ) - { - if( time_out != MSS_MAC_BLOCKING ) - { - if( MAC_get_time_out() == 0u ) { - exit = 1; - } - } - } - - if(exit == 0) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - /* Here we are setting the buffer 'pacData' address to the address - RX descriptor address. After this is called, the following function - must be called 'MAC_prepare_rx_descriptor' - to prepare the current rx descriptor for receiving the next packet. - */ - *pacData = (uint8_t *)g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 ; - - } - return ((int32_t)frame_length); -} - -/***************************************************************************//** - * Returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -) -{ - uint32_t link; - - link = PHY_link_status(); - if( link == MSS_MAC_LINK_STATUS_LINK ) { - link |= PHY_link_type(); - } - - return ((int32_t)link); -} - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -) -{ - int32_t link; - - PHY_auto_negotiate(); - - link = MSS_MAC_link_status(); - - if( (link & MSS_MAC_LINK_STATUS_LINK) != 0u ) { - int32_t ret; - ret = MAC_stop_transmission(); - MAC_CHECK( ret == MAC_OK, ret ); - - ret = MAC_stop_receiving(); - MAC_CHECK( ret == MAC_OK, ret ); - MAC_BITBAND->CSR6_TTM = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_100MB) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_FD = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_FDX) != 0u) ? 1u : 1u ); - MAC_start_transmission(); - MAC_start_receiving(); - } - - return link; -} - - -/***************************************************************************//** - * Sets mac address. New address must be unicast. - * - * @param new_address Pointer to a MAC_instance_t structure - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -) -{ - /* Check if the new address is unicast */ - configASSERT( (new_address[0]&1) == 0 ); - - MAC_memcpy( g_mss_mac.mac_address, new_address, 6u ); - - if((g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - int32_t a; - /* set unused filters to the new mac address */ - for( a=14*6; a>=0; a-=6 ) { - if( (g_mss_mac.mac_filter_data[a] & 1u) != 0u ) { - /* Filters with multicast addresses are used */ - a = -1; - } else { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a]), - g_mss_mac.mac_address, 6u ); - } - } - } - - MAC_send_setup_frame(); -} - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to receive the MAC address - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -) -{ - MAC_memcpy( address, g_mss_mac.mac_address, 6u ); -} - - -/***************************************************************************//** - * Sets mac address filters. Addresses must be multicast. - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -) -{ - configASSERT( (filter_count==0) || (filters != NULL_buffer) ); - /* Check if the mac addresses is multicast */ - { - int32_t a; - for( a = 0u; a < filter_count; a++ ) { - configASSERT( (filters[a*6]&1) == 1 ); - } - } - - if( filter_count <= 15 ){ - int32_t a; - g_mss_mac.flags |= FLAG_PERFECT_FILTERING; - - /* copy new filters */ - MAC_memcpy( g_mss_mac.mac_filter_data, filters, (uint32_t)(filter_count*6)); - - /* set unused filters to our mac address */ - for( a=filter_count; a<15; a++ ) { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a*6]), - g_mss_mac.mac_address, 6 ); - } - } else { - int32_t a,b; - uint32_t hash; - - g_mss_mac.flags &= ~FLAG_PERFECT_FILTERING; - - /* reset hash table */ - MAC_memset( g_mss_mac.mac_filter_data, 0u, 64u ); - - for( a=0, b=0; aCSR5; - - if( (intr_status & CSR5_NIS_MASK) != 0u ) { - if( (intr_status & CSR5_TI_MASK) != 0u ) { /* Transmit */ - g_mss_mac.statistics.tx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_SEND; - } - - if( (intr_status & CSR5_RI_MASK) != 0u ) { /* Receive */ - g_mss_mac.statistics.rx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_RECEIVED; - } - } - - /* Clear interrupts */ - MAC->CSR5 = CSR5_INT_BITS; - - if( (events != 0u) && (g_mss_mac.listener != NULL_callback) ) { - g_mss_mac.listener( events ); - } -} - - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param instance Pointer to a MAC_instance_t structure - * @param listener function pointer to a MAC_callback_t function - * @return #MAC_OK if everything is OK - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -) -{ - /* disable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 0u; - MAC_BITBAND->CSR7_TIE = 0u; - - g_mss_mac.listener = listener; - - if( listener != NULL_callback ) { - /* enable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 1u; - MAC_BITBAND->CSR7_TIE = 1u; - } -} - - -/***************************************************************************//** - * Returns description of last error. - * - * @param instance Pointer to a MAC_instance_t structure - * @return A string describing the error. This string must not be - * modified by the application. - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - */ -const int8_t* -MSS_MAC_last_error -( - void -) -{ - int8_t error_msg_nb; - const int8_t* returnvalue; - - error_msg_nb = -(g_mss_mac.last_error); - if( error_msg_nb >= ERROR_MESSAGE_COUNT ) { - returnvalue = unknown_error; - } else { - returnvalue = ErrorMessages[error_msg_nb]; - } - return returnvalue; -} - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param instance Pointer to a MAC_instance_t structure - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -) -{ - uint32_t returnval = 0u; - - switch( stat_id ) { - case MSS_MAC_RX_INTERRUPTS: - returnval = g_mss_mac.statistics.rx_interrupts; - break; - case MSS_MAC_RX_FILTERING_FAIL: - returnval = g_mss_mac.statistics.rx_filtering_fail; - break; - case MSS_MAC_RX_DESCRIPTOR_ERROR: - returnval = g_mss_mac.statistics.rx_descriptor_error; - break; - case MSS_MAC_RX_RUNT_FRAME: - returnval = g_mss_mac.statistics.rx_runt_frame; - break; - case MSS_MAC_RX_NOT_FIRST: - returnval = g_mss_mac.statistics.rx_not_first; - break; - case MSS_MAC_RX_NOT_LAST: - returnval = g_mss_mac.statistics.rx_not_last; - break; - case MSS_MAC_RX_FRAME_TOO_LONG: - returnval = g_mss_mac.statistics.rx_frame_too_long; - break; - case MSS_MAC_RX_COLLISION_SEEN: - returnval = g_mss_mac.statistics.rx_collision_seen; - break; - case MSS_MAC_RX_CRC_ERROR: - returnval = g_mss_mac.statistics.rx_crc_error; - break; - case MSS_MAC_RX_FIFO_OVERFLOW: - returnval = g_mss_mac.statistics.rx_fifo_overflow; - break; - case MSS_MAC_RX_MISSED_FRAME: - returnval = g_mss_mac.statistics.rx_missed_frame; - break; - case MSS_MAC_TX_INTERRUPTS: - returnval = g_mss_mac.statistics.tx_interrupts; - break; - case MSS_MAC_TX_LOSS_OF_CARRIER: - returnval = g_mss_mac.statistics.tx_loss_of_carrier; - break; - case MSS_MAC_TX_NO_CARRIER: - returnval = g_mss_mac.statistics.tx_no_carrier; - break; - case MSS_MAC_TX_LATE_COLLISION: - returnval = g_mss_mac.statistics.tx_late_collision; - break; - case MSS_MAC_TX_EXCESSIVE_COLLISION: - returnval = g_mss_mac.statistics.tx_excessive_collision; - break; - case MSS_MAC_TX_COLLISION_COUNT: - returnval = g_mss_mac.statistics.tx_collision_count; - break; - case MSS_MAC_TX_UNDERFLOW_ERROR: - returnval = g_mss_mac.statistics.tx_underflow_error; - break; - default: - break; - } - - return returnval; -} - - -/**************************** INTERNAL FUNCTIONS ******************************/ - - -/***************************************************************************//** - * Prepares current rx descriptor for receiving. - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -) -{ - uint32_t desc; - - /* update counters */ - desc = g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0; - if( (desc & RDES0_FF) != 0u ) { - g_mss_mac.statistics.rx_filtering_fail++; - } - if( (desc & RDES0_DE) != 0u ) { - g_mss_mac.statistics.rx_descriptor_error++; - } - if( (desc & RDES0_RF) != 0u ) { - g_mss_mac.statistics.rx_runt_frame++; - } - if( (desc & RDES0_FS) == 0u ) { - g_mss_mac.statistics.rx_not_first++; - } - if( (desc & RDES0_LS) == 0u ) { - g_mss_mac.statistics.rx_not_last++; - } - if( (desc & RDES0_TL) != 0u ) { - g_mss_mac.statistics.rx_frame_too_long++; - } - if( (desc & RDES0_CS) != 0u ) { - g_mss_mac.statistics.rx_collision_seen++; - } - if( (desc & RDES0_CE) != 0u ) { - g_mss_mac.statistics.rx_crc_error++; - } - - desc = MAC->CSR8; - g_mss_mac.statistics.rx_fifo_overflow += - (desc & (CSR8_OCO_MASK|CSR8_FOC_MASK)) >> CSR8_FOC_SHIFT; - g_mss_mac.statistics.rx_missed_frame += - (desc & (CSR8_MFO_MASK|CSR8_MFC_MASK)); - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 = RDES0_OWN; - g_mss_mac.rx_desc_index = (g_mss_mac.rx_desc_index + 1u) % RX_RING_SIZE; - - /* Start receive */ - MAC_start_receiving(); -} - - -/***************************************************************************//** - * Prepares a setup frame and sends it to MAC. - * This function is blocking. - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out before packet send. - */ -static int32_t -MAC_send_setup_frame -( - void -) -{ - volatile MAC_descriptor_t descriptor; - uint8_t frame_data[192]; - uint8_t *data; - int32_t a,b,c,d; - int32_t ret; - - /* prepare descriptor */ - descriptor.descriptor_0 = TDES0_OWN; - descriptor.descriptor_1 = TDES1_SET | TDES1_TER | - (sizeof(frame_data) << TDES1_TBS1_OFFSET); - - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) == 0u ) { - descriptor.descriptor_1 |= TDES1_FT0; - } - - descriptor.buffer_1 = (uint32_t)frame_data; - descriptor.buffer_2 = 0u; - - /* prepare frame */ - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - b = 0; - d = 12; - c = 90; - } else { - b = 156; - d = 0; - c = 64; - } - - data = g_mss_mac.mac_address; - frame_data[b] = data[0]; - frame_data[b+1] = data[1]; - frame_data[b+4] = data[2]; - frame_data[b+5] = data[3]; - frame_data[b+8] = data[4]; - frame_data[b+9] = data[5]; - - data = g_mss_mac.mac_filter_data; - for( a = 0; a < c; ) { - frame_data[d] = data[a++]; - frame_data[d+1] = data[a++]; - frame_data[d+4] = data[a++]; - frame_data[d+5] = data[a++]; - frame_data[d+8] = data[a++]; - frame_data[d+9] = data[a++]; - d += 12; - } - - /* Stop transmission */ - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - /* Set descriptor */ - MAC->CSR4 = (uint32_t)&descriptor; - - /* Start transmission */ - MAC_start_transmission(); - - /* Wait until transmission over */ - ret = MAC_OK; - MAC_set_time_out( (uint32_t)SETUP_FRAME_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_SUSPENDED) && (MAC_OK == ret) ) - { - /* transmit poll demand */ - MAC->CSR1 = 1u; - if( MAC_get_time_out() == 0u ) { - ret = MAC_TIME_OUT; - } - } - - MAC_CHECK( MAC_stop_transmission() == MAC_OK, MAC_FAIL ); - - /* Set tx descriptor */ - MAC->CSR4 = (uint32_t)g_mss_mac.tx_descriptors; - - /* Start receiving and transmission */ - MAC_start_receiving(); - MAC_start_transmission(); - - return ret; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_transmission -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_STOPPED) && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_ST = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_transmission -( - void -) -{ - MAC_BITBAND->CSR6_ST = 1u; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_receiving -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_RS_MASK) >> CSR5_RS_SHIFT) != CSR5_RS_STOPPED) - && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_SR = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_receiving -( - void -) -{ - MAC_BITBAND->CSR6_SR = 1u; -} - - -/***************************************************************************//** - * Dismisses bad frames. - * - * @return dismissed frame count. - */ -static int32_t -MAC_dismiss_bad_frames -( - void -) -{ - int32_t dc = 0; - int8_t cont = 1; - - if( MAC_BITBAND->CSR6_PB != 0u ) { - /* User wants bad frames too, don't dismiss anything */ - cont = 0; - } - - while( ( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) == 0u) && (cont == 1) ) /* Host owns this descriptor */ - { - /* check error summary */ - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - (RDES0_ES | RDES0_LS | RDES0_FS)) != (RDES0_LS | RDES0_FS) ) - { - MSS_MAC_prepare_rx_descriptor(); - dc++; - } - else - { - cont = 0; - } - } - - return dc; -} - -/***************************************************************************//** - * Sets time out value. - * #MAC_get_time_out must be called frequently to make time out value updated. - * Because of user may not be using ISR, we can not update time out in ISR. - * - * @time_out time out value in milli seconds. - * Must be smaller than 0x01000000. - */ -static void -MAC_set_time_out -( - uint32_t time_out -) -{ - g_mss_mac.time_out_value = (time_out * 122u) / 10u; - - g_mss_mac.last_timer_value = (uint16_t)( MAC->CSR11 & CSR11_TIM_MASK ); -} - -/***************************************************************************//** - * Returns time out value. - * - * @return timer out value in milli seconds. - */ -static uint32_t -MAC_get_time_out -( - void -) -{ - uint32_t timer; - uint32_t time = 0u; - - timer = ( MAC->CSR11 & CSR11_TIM_MASK ); - - if( timer > g_mss_mac.last_timer_value ) { - time = 0x0000ffffUL; - } - time += g_mss_mac.last_timer_value - timer; - - if( MAC_BITBAND->CSR6_TTM == 0u ) { - time *= 10u; - } - if( g_mss_mac.time_out_value <= time ){ - g_mss_mac.time_out_value = 0u; - } else { - g_mss_mac.time_out_value -= time; - } - - g_mss_mac.last_timer_value = (uint16_t)timer; - - return ((g_mss_mac.time_out_value * 10u) / 122u); -} - -/***************************************************************************//** - * Fills the first n bytes of the memory area pointed to by s with the constant - * byte c. - */ -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n) -{ - uint8_t *sb = s; - - while( n > 0u ) { - n--; - sb[n] = c; - } -} - -/***************************************************************************//** - * Fills all fields of MAC_instance_t with c. - * - * @return a pointer to the given MAC_instance_t s. - */ -static void MAC_memset_All(MAC_instance_t *s, uint32_t c) -{ - int32_t count; - s->base_address = (addr_t)c; - s->flags = (uint8_t)c; - s->last_error = (int8_t)c; - s->last_timer_value = (uint16_t)c; - s->listener = NULL_callback; - MAC_memset( s->mac_address, (uint8_t)c, 6u ); - MAC_memset( s->mac_filter_data, (uint8_t)c, 90u ); - s->phy_address = (uint8_t)c; - s->rx_desc_index =c; - for(count = 0; countrx_descriptors[count].buffer_1 = c; - s->rx_descriptors[count].buffer_2 = c; - s->rx_descriptors[count].descriptor_0 = c; - s->rx_descriptors[count].descriptor_1 = c; - } - s->statistics.rx_collision_seen =c; - s->statistics.rx_crc_error = c; - s->statistics.rx_descriptor_error = c; - s->statistics.rx_fifo_overflow = c; - s->statistics.rx_filtering_fail = c; - s->statistics.rx_frame_too_long = c; - s->statistics.rx_interrupts = c; - s->statistics.rx_missed_frame = c; - s->statistics.rx_not_first = c; - s->statistics.rx_not_last = c; - s->statistics.rx_runt_frame = c; - s->statistics.tx_collision_count = c; - s->statistics.tx_excessive_collision = c; - s->statistics.tx_interrupts = c; - s->statistics.tx_late_collision = c; - s->statistics.tx_loss_of_carrier = c; - s->statistics.tx_no_carrier = c; - s->statistics.tx_underflow_error = c; - s->time_out_value = c; - s->tx_desc_index = c; - for(count = 0; count < TX_RING_SIZE ;count++) - { - s->tx_descriptors[count].buffer_1 = c; - s->tx_descriptors[count].buffer_2 = c; - s->tx_descriptors[count].descriptor_0 = c; - s->tx_descriptors[count].descriptor_1 = c; - } -} - -/***************************************************************************//** - * Copies n bytes from memory area src to memory area dest. - * The memory areas should not overlap. - * - * @return a pointer to the memory area dest. - */ -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n) -{ - uint8_t *d = dest; - - while( n > 0u ) { - n--; - d[n] = src[n]; - } -} - -/***************************************************************************//** - * Tx has completed, mark the buffers that were assigned to the Tx descriptors - * as free again. - * - */ -void MSS_MAC_FreeTxBuffers( void ) -{ - /* Check the buffers have not already been freed in the first of the - two Tx interrupts - which could potentially happen if the second Tx completed - during the interrupt for the first Tx. */ - if( g_mss_mac.tx_descriptors[ 0 ].buffer_1 != ( uint32_t ) NULL ) - { - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == 0 ) && ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == 0 ) ) - { - configASSERT( g_mss_mac.tx_descriptors[ 0 ].buffer_1 == g_mss_mac.tx_descriptors[ 1 ].buffer_1 ); - MAC_release_buffer( ( unsigned char * ) g_mss_mac.tx_descriptors[ 0 ].buffer_1 ); - - /* Just to mark the fact that the buffer has already been released. */ - g_mss_mac.tx_descriptors[ 0 ].buffer_1 = ( uint32_t ) NULL; - } - } -} - -/***************************************************************************//** - * Look through the array of buffers until one is found that is free for use - - * that is, not currently assigned to an Rx or a Tx descriptor. Mark the buffer - * as in use, then return its address. - * - * @return a pointer to a free buffer. - */ -unsigned char *MAC_obtain_buffer( void ) -{ -long lIndex, lAttempt = 0, lDescriptor, lBufferIsInUse; -unsigned char *pcReturn = NULL; -unsigned char *pcBufferAddress; - - /* Find and return the address of a buffer that is not being used. Mark - the buffer as now in use. */ - while( ( lAttempt <= 1 ) && ( pcReturn == NULL ) ) - { - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( ucMACBufferInUse[ lIndex ] == pdFALSE ) - { - pcReturn = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - ucMACBufferInUse[ lIndex ] = pdTRUE; - break; - } - } - - if( pcReturn == NULL ) - { - /* Did not find a buffer. That should not really happen, but could if - an interrupt was missed. See if any buffers are marked as in use, but - are not actually in use. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - pcBufferAddress = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - lBufferIsInUse = pdFALSE; - - /* Is the buffer used by an Rx descriptor? */ - for( lDescriptor = 0; lDescriptor < RX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.rx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Rx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - - if( lBufferIsInUse != pdTRUE ) - { - /* Is the buffer used by an Tx descriptor? */ - for( lDescriptor = 0; lDescriptor < TX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.tx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Tx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - } - - /* If the buffer was not found to be in use by either a Tx or an - Rx descriptor, but the buffer is marked as in use, then mark the - buffer to be in it's correct state of "not in use". */ - if( ( lBufferIsInUse == pdFALSE ) && ( ucMACBufferInUse[ lIndex ] == pdTRUE ) ) - { - ucMACBufferInUse[ lIndex ] = pdFALSE; - } - } - } - - /* If any buffer states were changed it might be that a buffer can now - be obtained. Try again, but only one more time. */ - lAttempt++; - } - - configASSERT( pcReturn ); - return pcReturn; -} - -/***************************************************************************//** - * Return a buffer to the list of free buffers, it was in use, but is not now. - * - */ -void MAC_release_buffer( unsigned char *pucBufferToRelease ) -{ -long lIndex; - - /* uip_buf is going to point to a different buffer - first ensure the buffer - it is currently pointing to is marked as being free again. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( pucBufferToRelease == &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ) ) - { - /* This is the buffer in use, mark it as being free. */ - ucMACBufferInUse[ lIndex ] = pdFALSE; - break; - } - } - - configASSERT( lIndex < macNUM_BUFFERS ); -} - - - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h deleted file mode 100644 index 9482bb762..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h +++ /dev/null @@ -1,573 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_H -#define __MSS_ETHERNET_MAC_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************** DEFINES *************************************/ - -/******************************************************************************* - * Configure values. - */ -/** - * Receive all. - * When set, all incoming frames are received, regardless of their destination address. - * An address check is performed, and the result of the check is written into the receive - * descriptor. - */ -#define MSS_MAC_CFG_RECEIVE_ALL 0x00000001u - -/** - * Transmit threshold mode. - * 1 - Transmit FIFO threshold set for 100 Mbps mode - * 0 - Transmit FIFO threshold set for 10 Mbps mode - * This bit can be changed only when a transmit process is in a stopped state. - */ -#define MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE 0x00000002u - -/** - * Store and forward. - * When set, the transmission starts after a full packet is written into the transmit - * FIFO, regardless of the current FIFO threshold level. - * This bit can be changed only when the transmit process is in the stopped state. - */ -#define MSS_MAC_CFG_STORE_AND_FORWARD 0x00000004u - -/** - * Threshold control bits. - * These bits, together with TTM, SF, and PS, control the threshold level for the - * transmit FIFO. - */ -#define MSS_MAC_CFG_THRESHOLD_CONTROL_00 0x00000000u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_01 0x00000008u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_10 0x00000010u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_11 0x00000018u - -/** - * Full-duplex mode. - * 0 - Half-duplex mode
- * 1 - Forcing full-duplex mode
- * Changing of this bit is allowed only when both the transmitter and receiver processes - * are in the stopped state. - */ -#define MSS_MAC_CFG_FULL_DUPLEX_MODE 0x00000020u - -/** - * Pass all multicast. - * When set, all frames with multicast destination addresses will be received, regardless - * of the address check result. - */ -#define MSS_MAC_CFG_PASS_ALL_MULTICAST 0x00000040u - -/** - * Promiscuous mode. - * When set, all frames will be received regardless of the address check result. An - * address check is not performed. - */ -#define MSS_MAC_CFG_PROMISCUOUS_MODE 0x00000080u - -/** - * Inverse filtering (read-only). - * If this bit is set when working in a perfect filtering mode, the receiver performs an - * inverse filtering during the address check process. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_INVERSE_FILTERING 0x00000100u - -/** - * Pass bad frames. - * When set, Core10/100 transfers all frames into the data buffers, regardless of the - * receive errors. This allows the runt frames, collided fragments, and truncated frames - * to be received. - */ -#define MSS_MAC_CFG_PASS_BAD_FRAMES 0x00000200u - -/** - * Hash-only filtering mode (read-only). - * When set, Core10/100 performs an imperfect filtering over both the multicast and - * physical addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE 0x00000400u - -/** - * Hash/perfect receive filtering mode (read-only). - * 0 - Perfect filtering of the incoming frames is performed according to the physical - * addresses specified in a setup frame.
- * 1 - Imperfect filtering over the frames with the multicast addresses is performed - * according to the hash table specified in a setup frame.
- * A physical address check is performed according to the CSR6.2 (HO, hash-only) bit. - * When both the HO and HP bits are set, an imperfect filtering is performed on all of - * the addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE 0x00000800u - - -/******************************************************************************* - * Link status values. - */ -#define MSS_MAC_LINK_STATUS_LINK 0x0001u /**< Link up/down */ -#define MSS_MAC_LINK_STATUS_100MB 0x0002u /**< Connection is 100Mb/10Mb */ -#define MSS_MAC_LINK_STATUS_FDX 0x0004u /**< Connection is full/half duplex */ - - -/** - * Size of the max packet that can be received/transmited. - */ -#define MSS_MAX_PACKET_SIZE 1514uL - -/** - * Size of a receive/transmit buffer. - * Buffer size must be enough big to hold a full frame and must be multiple of - * four. For rx buffer +4 bytes allocated for crc values. These bytes doesn't - * copied to the user buffer. - */ -#define MSS_TX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 3u) & (~(uint32_t)3)) -#define MSS_RX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 7u) & (~(uint32_t)3)) - -/******************************************************************************* - * Time out values. - */ -#define MSS_MAC_NONBLOCKING 0u -#define MSS_MAC_BLOCKING 0xFFFFFFFFUL - -/***************************************************************************//** - * MAC events. - */ -#define MSS_MAC_EVENT_PACKET_SEND 1u -#define MSS_MAC_EVENT_PACKET_RECEIVED 2u - -/***************************************************************************//** - * PHY addresses. - */ -#define MSS_PHY_ADDRESS_MIN 0u -#define MSS_PHY_ADDRESS_MAX 31u -#define MSS_PHY_ADDRESS_AUTO_DETECT 255u - -/***************************************************************************//** - * Listener function type defines the function prototype that might be followed - * by MAC_isr which is triggered with each receive and transmit related interrupts. - * Listener functions should follow the following prototype: - * void MAC_Listener( uint32_t events ); - * The parameter is used to inform the listener function about the triggering event - * or events. Events input to the system are: - * #define MSS_MAC_EVENT_PACKET_SEND 1 - * #define MSS_MAC_EVENT_PACKET_RECEIVED 2 - * Listener function should be defined by the application using this driver if - * needed. This function may be assigned to the driver using MAC_set_callback - * routine and may be un assigned again by using the same routine with a NULL pointer - * as the event listener function. It is recommended to use this property for interrupt - * triggered systems and it is not recommended for polling mechanisms. - */ -typedef void (*MSS_MAC_callback_t)(uint32_t events); - -/***************************************************************************//** - * Statistics counter identifiers are used with MAC_get_statistics routine to - * receive the count of the requested errors/interrupts occurrences. - * - * MSS_MAC_RX_INTERRUPTS - * Used to receive the number of receive interrupts occurred. - * - * MSS_MAC_RX_FILTERING_FAIL - * Used to receive the number of received frames which did not pass the - * address recognition process. - * - * MSS_MAC_RX_DESCRIPTOR_ERROR - * Used to receive the number of occurrences of; no receive buffer was - * available when trying to store the received data. - * - * MSS_MAC_RX_RUNT_FRAME - * Used to receive the number of occurrences of; the frame is damaged by a - * collision or by a premature termination before the end of a collision - * window. - * - * MSS_MAC_RX_NOT_FIRST - * Used to receive the number of occurrences of; start of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_NOT_LAST - * Used to receive the number of occurrences of; end of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_FRAME_TOO_LONG - * Used to receive the number of occurrences of; a current frame is longer - * than maximum size of 1,518 bytes, as specified by 802.3. - * - * MSS_MAC_RX_COLLISION_SEEN - * Used to receive the number of occurrences of; a late collision was seen - * (collision after 64 bytes following SFD). - * - * MSS_MAC_RX_CRC_ERROR - * Used to receive the number of occurrences of; a CRC error has occurred - * in the received frame. - * - * MSS_MAC_RX_FIFO_OVERFLOW - * Used to receive the number of frames not accepted due to the receive - * FIFO overflow. - * - * MSS_MAC_RX_MISSED_FRAME - * Used to receive the number of frames not accepted due to the - * unavailability of the receive descriptor. - * - * MSS_MAC_TX_INTERRUPTS - * Used to receive the number of transmit interrupts occurred. - * - * MSS_MAC_TX_LOSS_OF_CARRIER - * Used to receive the number of occurrences of; a loss of the carrier - * during a transmission. - * - * MSS_MAC_TX_NO_CARRIER - * Used to receive the number of occurrences of; the carrier was not asserted - * by an external transceiver during the transmission. - * - * MSS_MAC_TX_LATE_COLLISION - * Used to receive the number of occurrences of; a collision was detected - * after transmitting 64 bytes. - * - * MSS_MAC_TX_EXCESSIVE_COLLISION - * Used to receive the number of occurrences of; the transmission was aborted - * after 16 retries. - * - * MSS_MAC_TX_COLLISION_COUNT - * Used to receive the number of collisions occurred. - * - * MSS_MAC_TX_UNDERFLOW_ERROR - * Used to receive the number of occurrences of; the FIFO was empty during - * the frame transmission. - */ -typedef enum { - MSS_MAC_RX_INTERRUPTS, - MSS_MAC_RX_FILTERING_FAIL, - MSS_MAC_RX_DESCRIPTOR_ERROR, - MSS_MAC_RX_RUNT_FRAME, - MSS_MAC_RX_NOT_FIRST, - MSS_MAC_RX_NOT_LAST, - MSS_MAC_RX_FRAME_TOO_LONG, - MSS_MAC_RX_COLLISION_SEEN, - MSS_MAC_RX_CRC_ERROR, - MSS_MAC_RX_FIFO_OVERFLOW, - MSS_MAC_RX_MISSED_FRAME, - - MSS_MAC_TX_INTERRUPTS, - MSS_MAC_TX_LOSS_OF_CARRIER, - MSS_MAC_TX_NO_CARRIER, - MSS_MAC_TX_LATE_COLLISION, - MSS_MAC_TX_EXCESSIVE_COLLISION, - MSS_MAC_TX_COLLISION_COUNT, - MSS_MAC_TX_UNDERFLOW_ERROR -} mss_mac_statistics_id_t; - -/******************************* FUNCTIONS ************************************/ - -/***************************************************************************//** - * Initializes an Ethernet MAC controller and data structures. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicast/multicast)/hash init - * - */ -void -MSS_MAC_init -( - uint8_t phy_address -); - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param configuration The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -); - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be used to - * get the configuration of the Ethernet Controller. - * - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration -( - void -); - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -); - -/***************************************************************************//** - * Returns available packet's size. - * - * @return Size of packet, bigger than 0, if a packet is available, - * if not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -); - - - -/***************************************************************************//** - * Prepares the RX descriptor for receiving packets. - * - * @return void - * @see MAC_rx_packet() - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -); - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -); - - -/***************************************************************************//** - Receives a packet from the Ethernet Controller. - The MSS_MAC_rx_packet_ptrset() function is very similar to the MSS_MAC_rx_packet() - function, in that it receives data from the MSS Ethernet MAC. The difference - is that it sets pacData to point to the memory buffer where the MSS Ethernet - MAC copied the received packet instead of copying the received packet into a - buffer provided by the application. After this function is called and data is - used by the user application or copied to another buffer, the - MSS_MAC_prepare_rx_descriptor() function must be called to free up the receive - memory buffer used by the MSS Ethernet MAC - - @param pacData - The pacData parameter is a pointer to a memory buffer pointer. The uint8_t - pointer pointed to by the pacData parameter will contain the address of the - memory buffer containing the received packet after this function returns. The - value of pacData is only valid if the return value is larger than zero, - indicating that a packet was received. - - @param time_out - The time_out parameter is the timeout value for the transmission in milliseconds. - The time_out parameter value can be one of the following values: - • Unsigned integer greater than 0 and less than 0x01000000 - • MSS_MAC_BLOCKING – there will be no timeout. - • MSS_MAC_NONBLOCKING – the function will return immediately if no packets - have been received. - - @return - The function returns the size of the packet if the packet fits in pacData. - Returns zero if there is no received packet. - - @see MAC_rx_pckt_size() - @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -); - -/***************************************************************************//** - * Returns the status of connection by reading it from the PHY. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -); - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -); - - -/***************************************************************************//** - * Sets mac address. - * - * @param new_address Pointer to then new address value (6 bytes of data) - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -); - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to the parameter to receive the MAC address. - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -); - - -/***************************************************************************//** - * Sets mac address filters. - * If less than 15 addresses are subscribed, system works on perfect filtering mode - * else system works in hash table mode - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -); - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param listener function pointer to a MSS_MAC_callback_t function - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -); - - -/***************************************************************************//** - * Returns description of latest error happened. - * - * @return A string describing the error. This string must not be - * modified by the application. - */ -const int8_t* -MSS_MAC_last_error -( - void -); - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -); - -/* - * The double Tx has completed. Hand back the Tx buffer to the control of - * the MAC hardware. - */ -void MSS_MAC_FreeTxBuffers( void ); -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h deleted file mode 100644 index ac144b36b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h +++ /dev/null @@ -1,43 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethenet MAC configuration header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_CONF_H -#define __MSS_ETHERNET_MAC_CONF_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Default MAC address - */ -#define DEFAULT_MAC_ADDRESS configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 -#define BROADCAST_MAC_ADDRESS 0xFFu,0xFFu,0xFFu,0xFFu,0xFFu,0xFFu - -/** - * Descriptor byte ordering mode. - * 1 - Big-endian mode used for data descriptors
- * 0 - Little-endian mode used for data descriptors
- */ -#define DESCRIPTOR_BYTE_ORDERING_MODE LITTLEENDIAN - -/** - * Big/little endian. - * Selects the byte-ordering mode used by the data buffers. - * 1 - Big-endian mode used for the data buffers - * 0 - Little-endian mode used for the data buffers - */ -#define BUFFER_BYTE_ORDERING_MODE LITTLEENDIAN - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CONF_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h deleted file mode 100644 index dc697f11a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h +++ /dev/null @@ -1,346 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC internal defines header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_DESC_H -#define __MSS_ETHERNET_MAC_DESC_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * Receive descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor.
- * 0 - The host owns the descriptor.
- * Core10/100 will clear this bit when it completes a current frame reception or - * when the data buffers associated with a given descriptor are already full. - */ -#define RDES0_OWN 0x80000000UL - -/***************************************************************************//** - * Filtering fail. - * When set, indicates that a received frame did not pass the address recognition process. - * This bit is valid only for the last descriptor of the frame (RDES0.8 set), when the CSR6.30 (receive all) bit - * is set and the frame is at least 64 bytes long. - */ -#define RDES0_FF 0x40000000UL - -/***************************************************************************//** - * Frame length. - * Indicates the length, in bytes, of the data transferred into a host memory for a given frame - * This bit is valid only when RDES0.8 (last descriptor) is set and RDES0.14 (descriptor error) is cleared. - */ -#define RDES0_FL_MASK 0x00003FFFUL -#define RDES0_FL_OFFSET 16 - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * RDES0.1 - CRC error - * RDES0.6 - Collision seen - * RDES0.7 - Frame too long - * RDES0.11 - Runt frame - * RDES0.14 - Descriptor error - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_ES 0x00008000UL - -/***************************************************************************//** - * Descriptor error. - * Set by Core10/100 when no receive buffer was available when trying to store the received data. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DE 0x00004000UL - -/***************************************************************************//** - * Runt frame. - * When set, indicates that the frame is damaged by a collision or by a premature termination before the end - * of a collision window. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RF 0x00000800UL - -/***************************************************************************//** - * Multicast frame. - * When set, indicates that the frame has a multicast address. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_MF 0x00000400UL - -/***************************************************************************//** - * First descriptor. - * When set, indicates that this is the first descriptor of a frame. - */ -#define RDES0_FS 0x00000200UL - -/***************************************************************************//** - * Last descriptor. - * When set, indicates that this is the last descriptor of a frame. - */ -#define RDES0_LS 0x00000100UL - -/***************************************************************************//** - * Frame too long. - * When set, indicates that a current frame is longer than maximum size of 1,518 bytes, as specified by 802.3. - * TL (frame too long) in the receive descriptor has been set when the received frame is longer than - * 1,518 bytes. This flag is valid in all receive descriptors when multiple descriptors are used for one frame. - */ -#define RDES0_TL 0x00000080UL - -/***************************************************************************//** - * Collision seen. - * When set, indicates that a late collision was seen (collision after 64 bytes following SFD). - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_CS 0x00000040UL - -/***************************************************************************//** - * Frame type. - * When set, indicates that the frame has a length field larger than 1,500 (Ethernet-type frame). When - * cleared, indicates an 802.3-type frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, FT is invalid for runt frames shorter than 14 bytes. - */ -#define RDES0_FT 0x00000020UL - -/***************************************************************************//** - * Report on MII error. - * When set, indicates that an error has been detected by a physical layer chip connected through the MII - * interface. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RE 0x00000008UL - -/***************************************************************************//** - * Dribbling bit. - * When set, indicates that the frame was not byte-aligned. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DB 0x00000004UL - -/***************************************************************************//** - * CRC error. - * When set, indicates that a CRC error has occurred in the received frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, CE is not valid when the received frame is a runt frame. - */ -#define RDES0_CE 0x00000002UL - -/***************************************************************************//** - * This bit is reset for frames with a legal length. - */ -#define RDES0_ZERO 0x00000001UL - -/***************************************************************************//** - * Receive end of ring. - * When set, indicates that this is the last descriptor in the receive descriptor ring. Core10/100 returns to the - * first descriptor in the ring, as specified by CSR3 (start of receive list address). - */ -#define RDES1_RER 0x02000000UL - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second buffer's address points to the next descriptor and not to the data buffer. - * Note that RER takes precedence over RCH. - */ -#define RDES1_RCH 0x01000000UL - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. This number must be a - * multiple of four. If it is 0, Core10/100 ignores the second data buffer and fetches the next data descriptor. - * This number is valid only when RDES1.24 (second address chained) is cleared. - */ -#define RDES1_RBS2_MASK 0x7FF -#define RDES1_RBS2_OFFSET 11 - -/***************************************************************************//** - * Buffer 1 size - * Indicates the size, in bytes, of memory space used by the first data buffer. This number must be a multiple of - * four. If it is 0, Core10/100 ignores the first data buffer and uses the second data buffer. - */ -#define RDES1_RBS1_MASK 0x7FF -#define RDES1_RBS1_OFFSET 0 - - -/******************************************************************************* - * Transmit descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor. - * 0 - The host owns the descriptor. - * Core10/100 will clear this bit when it completes a current frame transmission or when the data buffers - * associated with a given descriptor are empty. - */ -#define TDES0_OWN 0x80000000uL - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * TDES0.1 - Underflow error - * TDES0.8 - Excessive collision error - * TDES0.9 - Late collision - * TDES0.10 - No carrier - * TDES0.11 - Loss of carrier - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_ES ((uint32_t)1 << 15) - -/***************************************************************************//** - * Loss of carrier. - * When set, indicates a loss of the carrier during a transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LO ((uint32_t)1 << 11) - -/***************************************************************************//** - * No carrier. - * When set, indicates that the carrier was not asserted by an external transceiver during the transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_NC ((uint32_t)1 << 10) - -/***************************************************************************//** - * Late collision. - * When set, indicates that a collision was detected after transmitting 64 bytes. - * This bit is not valid when TDES0.1 (underflow error) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LC ((uint32_t)1 << 9) - -/***************************************************************************//** - * Excessive collisions. - * When set, indicates that the transmission was aborted after 16 retries. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_EC ((uint32_t)1 << 8) - -/***************************************************************************//** - * Collision count. - * This field indicates the number of collisions that occurred before the end of a frame transmission. - * This value is not valid when TDES0.8 (excessive collisions bit) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_CC_MASK 0xFu -#define TDES0_CC_OFFSET 3u - -/***************************************************************************//** - * Underflow error. - * When set, indicates that the FIFO was empty during the frame transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_UF ((uint32_t)1 << 1) - -/***************************************************************************//** - * Deferred. - * When set, indicates that the frame was deferred before transmission. Deferring occurs if the carrier is detected - * when the transmission is ready to start. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_DE (1) - -/***************************************************************************//** - * Interrupt on completion. - * Setting this flag instructs Core10/100 to set CSR5.0 (transmit interrupt) immediately after processing a - * current frame. - * This bit is valid when TDES1.30 (last descriptor) is set or for a setup packet. - */ -#define TDES1_IC ((uint32_t)1 << 31) - -/***************************************************************************//** - * Last descriptor. - * When set, indicates the last descriptor of the frame. - */ -#define TDES1_LS ((uint32_t)1 << 30) - -/***************************************************************************//** - * First descriptor. - * When set, indicates the first descriptor of the frame. - */ -#define TDES1_FS ((uint32_t)1 << 29) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.22 (FT0), controls a current filtering mode. - * This bit is valid only for the setup frames. - */ -#define TDES1_FT1 ((uint32_t)1 << 28) - -/***************************************************************************//** - * Setup packet. - * When set, indicates that this is a setup frame descriptor. - */ -#define TDES1_SET ((uint32_t)1 << 27) - -/***************************************************************************//** - * Add CRC disable. - * When set, Core10/100 does not append the CRC value at the end of the frame. The exception is when the - * frame is shorter than 64 bytes and automatic byte padding is enabled. In that case, the CRC field is added, - * despite the state of the AC flag. - */ -#define TDES1_AC ((uint32_t)1 << 26) - -/***************************************************************************//** - * Transmit end of ring. - * When set, indicates the last descriptor in the descriptor ring. - */ -#define TDES1_TER ((uint32_t)1 << 25) - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second descriptor's address points to the next descriptor and not to the data - * buffer. - * This bit is valid only when TDES1.25 (transmit end of ring) is reset. - */ -#define TDES1_TCH ((uint32_t)1 << 24) - -/***************************************************************************//** - * Disabled padding. - * When set, automatic byte padding is disabled. Core10/100 normally appends the PAD field after the INFO - * field when the size of an actual frame is less than 64 bytes. After padding bytes, the CRC field is also - * inserted, despite the state of the AC flag. When DPD is set, no padding bytes are appended. - */ -#define TDES1_DPD ((uint32_t)1 << 23) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.28 (FT1), controls the current filtering mode. - * This bit is valid only when the TDES1.27 (SET) bit is set. - */ -#define TDES1_FT0 ((uint32_t)1 << 22) - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. If it is zero, Core10/100 ignores - * the second data buffer and fetches the next data descriptor. - * This bit is valid only when TDES1.24 (second address chained) is cleared. - */ -#define TDES1_TBS2_MASK 0x7FF -#define TDES1_TBS2_OFFSET 11u - -/***************************************************************************//** - * Buffer 1 size. - * Indicates the size, in bytes, of memory space used by the first data buffer. If it is 0, Core10/100 ignores the - * first data buffer and uses the second data buffer. - */ -#define TDES1_TBS1_MASK 0x7FF -#define TDES1_TBS1_OFFSET 0u - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_DESC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h deleted file mode 100644 index 0a8578f97..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h +++ /dev/null @@ -1,1205 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC registers. - * - * (c) Copyright 2007 Actel Corporation - * - * IP core registers definitions. This file contains the definitions required - * for accessing the IP core through the hardware abstraction layer (HAL). - * This file was automatically generated, using "get_header.exe" version 0.4.0, - * from the IP-XACT description for: - * - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ -#ifndef MSS_ETHERNET_MAC_REGISTERS_H_ -#define MSS_ETHERNET_MAC_REGISTERS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_user_cfg.h" - -typedef uint32_t addr_t; - - -/***************************************************************************//** - * Descriptor structure - */ -#include "pack_struct_start.h" -typedef struct { - volatile uint32_t descriptor_0; - volatile uint32_t descriptor_1; - volatile uint32_t buffer_1; - volatile uint32_t buffer_2; -} MAC_descriptor_t -#include "pack_struct_end.h" - - -/***************************************************************************//** - * There should be one instance of this structure for each instance of - * the MAC in your system. MSS_MAC_init routine initializes this structure. - * It is used to identify the various MACs in your system and an initilized - * MAC instance's structure should be passed as first parameter to MAC functions - * to identify which MAC should perform the requested operation. - * Software using the MAC driver should only need to create one single - * instance of this data structure for each MAC hardware instance in - * the system. Using MAC_get_configuration routine, latest status of the driver - * may be read by receiving its flags field, similarly MAC_configure routine lets - * you modify some of these flags. - */ -#include "net/pack_struct_start.h" -typedef struct { - addr_t base_address; /**< Register base address of the driver*/ - uint8_t flags; /**< Configuration of the driver*/ - int8_t last_error; /**< Index of last error happened inside the driver*/ - uint8_t mac_address[6]; /**< MAC address of the drived instance*/ - uint8_t mac_filter_data[90]; /**< MAC filter data, 15 addresses to be used for - received data filtering*/ - uint16_t last_timer_value; /**< Last read value of timer */ - uint32_t time_out_value; /**< Time out value */ - MSS_MAC_callback_t listener; /**< Pointer to the call-back function to be triggered - when a package is received*/ - - /* transmit related info: */ - uint32_t tx_desc_index; /**< index of the transmit descriptor getting used*/ - MAC_descriptor_t tx_descriptors[TX_RING_SIZE];/**< array of transmit descriptors*/ - - /* receive related info: */ - uint32_t rx_desc_index; /**< index of the receive descriptor getting used*/ - MAC_descriptor_t rx_descriptors[RX_RING_SIZE];/**< array of receive descriptors*/ - - uint8_t phy_address; /**< MII address of the connected PHY*/ - - #include "pack_struct_start.h" - struct { - uint32_t rx_interrupts; /**< Number of receive interrupts occurred.*/ - uint32_t rx_filtering_fail; /**< Number of received frames which did not pass - the address recognition process.*/ - uint32_t rx_descriptor_error; /**< Number of occurrences of; no receive buffer was - available when trying to store the received data.*/ - uint32_t rx_runt_frame; /**< Number of occurrences of; the frame is damaged by - a collision or by a premature termination before - the end of a collision window.*/ - uint32_t rx_not_first; /**< Number of occurrences of; start of the frame is - not the first descriptor of a frame.*/ - uint32_t rx_not_last; /**< Number of occurrences of; end of the frame is not - the first descriptor of a frame.*/ - uint32_t rx_frame_too_long; /**< Number of occurrences of; a current frame is - longer than maximum size of 1,518 bytes, as specified - by 802.3.*/ - uint32_t rx_collision_seen; /**< Number of occurrences of; a late collision was seen - (collision after 64 bytes following SFD).*/ - uint32_t rx_crc_error; /**< Number of occurrences of; a CRC error has occurred - in the received frame.*/ - uint32_t rx_fifo_overflow; /**< Number of frames not accepted due to the receive - FIFO overflow.*/ - uint32_t rx_missed_frame; /**< Number of frames not accepted due to the - unavailability of the receive descriptor.*/ - - uint32_t tx_interrupts; /**< Number of transmit interrupts occurred.*/ - uint32_t tx_loss_of_carrier; /**< Number of occurrences of; a loss of the carrier - during a transmission.*/ - uint32_t tx_no_carrier; /**< Number of occurrences of; the carrier was not asserted - by an external transceiver during the transmission.*/ - uint32_t tx_late_collision; /**< Number of occurrences of; a collision was detected - after transmitting 64 bytes.*/ - uint32_t tx_excessive_collision;/**< Number of occurrences of; the transmission was - aborted after 16 retries.*/ - uint32_t tx_collision_count; /**< Number of collisions occurred.*/ - uint32_t tx_underflow_error; /**< Number of occurrences of; the FIFO was empty during - the frame transmission.*/ - } statistics - #include "pack_struct_end.h" -} MAC_instance_t -#include "net/pack_struct_end.h" - - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CSR0_SWR; - uint32_t CSR0_BAR; - uint32_t CSR0_DSL[5]; - uint32_t CSR0_BLE; - uint32_t CSR0_PBL[6]; - uint32_t CSR0_RESERVED0[3]; - uint32_t CSR0_TAP[3]; - uint32_t CSR0_DBO; - uint32_t CSR0_RESERVED1[11]; - - uint32_t MAC_CSR_RESERVED0[32]; - - uint32_t CSR1[32]; - - uint32_t MAC_CSR_RESERVED1[32]; - - uint32_t CSR2[32]; - - uint32_t MAC_CSR_RESERVED2[32]; - - uint32_t CSR3[32]; - - uint32_t MAC_CSR_RESERVED3[32]; - - uint32_t CSR4[32]; - - uint32_t MAC_CSR_RESERVED4[32]; - - uint32_t CSR5_TI; - uint32_t CSR5_TPS; - uint32_t CSR5_TU; - uint32_t CSR5_RESERVED0[2]; - uint32_t CSR5_UNF; - uint32_t CSR5_RI; - uint32_t CSR5_RU; - uint32_t CSR5_RPS; - uint32_t CSR5_RESERVED1; - uint32_t CSR5_ETI; - uint32_t CSR5_GTE; - uint32_t CSR5_RESERVED2[2]; - uint32_t CSR5_ERI; - uint32_t CSR5_AIS; - uint32_t CSR5_NIS; - uint32_t CSR5_RS[3]; - uint32_t CSR5_TS[3]; - uint32_t CSR5_RESERVED3[9]; - - uint32_t MAC_CSR_RESERVED5[32]; - - uint32_t CSR6_HP; - uint32_t CSR6_SR; - uint32_t CSR6_HO; - uint32_t CSR6_PB; - uint32_t CSR6_IF; - uint32_t CSR6_RESERVED0; - uint32_t CSR6_PR; - uint32_t CSR6_PM; - uint32_t CSR6_RESERVED1; - uint32_t CSR6_FD; - uint32_t CSR6_RESERVED2[3]; - uint32_t CSR6_ST; - uint32_t CSR6_TR[2]; - uint32_t CSR6_RESERVED3[5]; - uint32_t CSR6_SF; - uint32_t CSR6_TTM; - uint32_t CSR6_RESERVED4[7]; - uint32_t CSR6_RA; - uint32_t CSR6_RESERVED5; - - uint32_t MAC_CSR_RESERVED6[32]; - - uint32_t CSR7_TIE; - uint32_t CSR7_TSE; - uint32_t CSR7_TUE; - uint32_t CSR7_RESERVED0[2]; - uint32_t CSR7_UNE; - uint32_t CSR7_RIE; - uint32_t CSR7_RUE; - uint32_t CSR7_RSE; - uint32_t CSR7_RESERVED1; - uint32_t CSR7_ETE; - uint32_t CSR7_GTE; - uint32_t CSR7_RESERVED2[2]; - uint32_t CSR7_ERE; - uint32_t CSR7_AIE; - uint32_t CSR7_NIE; - uint32_t CSR7[15]; - - uint32_t MAC_CSR_RESERVED7[32]; - - uint32_t CSR8[32]; - - uint32_t MAC_CSR_RESERVED8[32]; - - uint32_t CSR9_SCS; - uint32_t CSR9_SCLK; - uint32_t CSR9_SDI; - uint32_t CSR9_SDO; - uint32_t CSR9_RESERVED0[12]; - uint32_t CSR9_MDC; - uint32_t CSR9_MDO; - uint32_t CSR9_MDEN; - uint32_t CSR9_MDI; - uint32_t CSR9_RESERVED1[12]; - - uint32_t MAC_CSR_RESERVED9[32]; - - uint32_t CSR10[32]; - - uint32_t MAC_CSR_RESERVED10[32]; - - uint32_t CSR11_TIM[16]; - uint32_t CSR11_CON; - uint32_t CSR11_NRP[3]; - uint32_t CSR11_RT[4]; - uint32_t CSR11_NTP[3]; - uint32_t CSR11_TT[4]; - uint32_t CSR11_CS; -} MAC_BitBand_TypeDef; - -#define MAC_BITBAND ((MAC_BitBand_TypeDef *) BITBAND_ADDRESS(MAC_BASE)) - -/******************************************************************************* - * CSR0 register: - *------------------------------------------------------------------------------ - * CSR0 - Bus Mode Register - */ -#define CSR0_REG_OFFSET 0x00 - -/*------------------------------------------------------------------------------ - * CSR0_DBO: - * DBO field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor byte ordering mode - */ -#define CSR0_DBO_OFFSET 0x00 -#define CSR0_DBO_MASK 0x00100000UL -#define CSR0_DBO_SHIFT 20 - -/* - * Allowed values for CSR0_DBO: - *------------------------------------------------------------------------------ - * LITTLEENDIAN: Little endian mode used for data descriptors - * BIGENDIAN: Big endian mode used for data descriptors - */ -#define LITTLEENDIAN 0u -#define BIGENDIAN 1u - -/*------------------------------------------------------------------------------ - * CSR0_TAP: - * TAP field of register CSR0. - *------------------------------------------------------------------------------ - * Transmit automatic polling - */ -#define CSR0_TAP_OFFSET 0x00 -#define CSR0_TAP_MASK 0x000E0000UL -#define CSR0_TAP_SHIFT 17 - -/* - * Allowed values for CSR0_TAP: - *------------------------------------------------------------------------------ - * TAP_DISABLED: TAP disabled - * TAP_819US: TAP 819/81.9us - * TAP_2450US: TAP 2450/245us - * TAP_5730US: TAP 5730/573us - * TAP_51_2US: TAP 51.2/5.12us - * TAP_102_4US: TAP 102.4/10.24us - * TAP_153_6US: TAP 156.6/15.26us - * TAP_358_4US: TAP 358.4/35.84us - */ -#define TAP_DISABLED 0x0 -#define TAP_819US 0x1 -#define TAP_2450US 0x2 -#define TAP_5730US 0x3 -#define TAP_51_2US 0x4 -#define TAP_102_4US 0x5 -#define TAP_153_6US 0x6 -#define TAP_358_4US 0x7 - -/*------------------------------------------------------------------------------ - * CSR0_PBL: - * PBL field of register CSR0. - *------------------------------------------------------------------------------ - * Programmable burst length - */ -#define CSR0_PBL_OFFSET 0x00 -#define CSR0_PBL_MASK 0x00003F00uL -#define CSR0_PBL_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR0_BLE: - * BLE field of register CSR0. - *------------------------------------------------------------------------------ - * Big/little endian - */ -#define CSR0_BLE_OFFSET 0x00 -#define CSR0_BLE_MASK 0x00000080uL -#define CSR0_BLE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR0_DSL: - * DSL field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor skip length - */ -#define CSR0_DSL_OFFSET 0x00 -#define CSR0_DSL_MASK 0x0000007CuL -#define CSR0_DSL_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR0_BAR: - * BAR field of register CSR0. - *------------------------------------------------------------------------------ - * Bus arbitration scheme - */ -#define CSR0_BAR_OFFSET 0x00 -#define CSR0_BAR_MASK 0x00000002uL -#define CSR0_BAR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR0_SWR: - * SWR field of register CSR0. - *------------------------------------------------------------------------------ - * Software reset - */ -#define CSR0_SWR_OFFSET 0x00 -#define CSR0_SWR_MASK 0x00000001uL -#define CSR0_SWR_SHIFT 0 - -/******************************************************************************* - * CSR1 register: - *------------------------------------------------------------------------------ - * CSR1 - Transmit Poll Demand Register - */ -#define CSR1_REG_OFFSET 0x08 - -/*------------------------------------------------------------------------------ - * CSR1_TPD3: - * TPD3 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(31..24) - */ -#define CSR1_TPD3_OFFSET 0x08 -#define CSR1_TPD3_MASK 0xFF000000uL -#define CSR1_TPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR1_TPD2: - * TPD2 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(23..16) - */ -#define CSR1_TPD2_OFFSET 0x08 -#define CSR1_TPD2_MASK 0x00FF0000uL -#define CSR1_TPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR1_TPD1: - * TPD1 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(15..8) - */ -#define CSR1_TPD1_OFFSET 0x08 -#define CSR1_TPD1_MASK 0x0000FF00uL -#define CSR1_TPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR1_TPD0: - * TPD0 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(7..0) - */ -#define CSR1_TPD0_OFFSET 0x08 -#define CSR1_TPD0_MASK 0x000000FFuL -#define CSR1_TPD0_SHIFT 0 - -/******************************************************************************* - * CSR2 register: - *------------------------------------------------------------------------------ - * CSR2 - Receive Poll Demand Register - */ -#define CSR2_REG_OFFSET 0x10 - -/*------------------------------------------------------------------------------ - * CSR2_RPD3: - * RPD3 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(31..24) - */ -#define CSR2_RPD3_OFFSET 0x10 -#define CSR2_RPD3_MASK 0xFF000000uL -#define CSR2_RPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR2_RPD2: - * RPD2 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(23..16) - */ -#define CSR2_RPD2_OFFSET 0x10 -#define CSR2_RPD2_MASK 0x00FF0000uL -#define CSR2_RPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR2_RPD1: - * RPD1 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(15..8) - */ -#define CSR2_RPD1_OFFSET 0x10 -#define CSR2_RPD1_MASK 0x0000FF00uL -#define CSR2_RPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR2_RPD0: - * RPD0 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(7..0) - */ -#define CSR2_RPD0_OFFSET 0x10 -#define CSR2_RPD0_MASK 0x000000FFuL -#define CSR2_RPD0_SHIFT 0 - -/******************************************************************************* - * CSR3 register: - *------------------------------------------------------------------------------ - * CSR3 - Receive Descriptor List Base Address Register - */ -#define CSR3_REG_OFFSET 0x18 - -/*------------------------------------------------------------------------------ - * CSR3_RLA3: - * RLA3 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(31..24) - */ -#define CSR3_RLA3_OFFSET 0x18 -#define CSR3_RLA3_MASK 0xFF000000uL -#define CSR3_RLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR3_RLA2: - * RLA2 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(23..16) - */ -#define CSR3_RLA2_OFFSET 0x18 -#define CSR3_RLA2_MASK 0x00FF0000uL -#define CSR3_RLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR3_RLA1: - * RLA1 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(15..8) - */ -#define CSR3_RLA1_OFFSET 0x18 -#define CSR3_RLA1_MASK 0x0000FF00uL -#define CSR3_RLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR3_RLA0: - * RLA0 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(7..0) - */ -#define CSR3_RLA0_OFFSET 0x18 -#define CSR3_RLA0_MASK 0x000000FFuL -#define CSR3_RLA0_SHIFT 0 - -/******************************************************************************* - * CSR4 register: - *------------------------------------------------------------------------------ - * CSR4 - Transmit Descriptor List Base Address Register - */ -#define CSR4_REG_OFFSET 0x20 - -/*------------------------------------------------------------------------------ - * CSR4_TLA3: - * TLA3 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(31..24) - */ -#define CSR4_TLA3_OFFSET 0x20 -#define CSR4_TLA3_MASK 0xFF000000uL -#define CSR4_TLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR4_TLA2: - * TLA2 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(23..16) - */ -#define CSR4_TLA2_OFFSET 0x20 -#define CSR4_TLA2_MASK 0x00FF0000uL -#define CSR4_TLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR4_TLA1: - * TLA1 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(15..8) - */ -#define CSR4_TLA1_OFFSET 0x20 -#define CSR4_TLA1_MASK 0x0000FF00uL -#define CSR4_TLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR4_TLA0: - * TLA0 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(7..0) - */ -#define CSR4_TLA0_OFFSET 0x20 -#define CSR4_TLA0_MASK 0x000000FFuL -#define CSR4_TLA0_SHIFT 0 - -/******************************************************************************* - * CSR5 register: - *------------------------------------------------------------------------------ - * CSR5 - Status Register - */ -#define CSR5_REG_OFFSET 0x28 -#define CSR5_INT_BITS (CSR5_NIS_MASK | CSR5_AIS_MASK | CSR5_ERI_MASK | \ - CSR5_GTE_MASK | CSR5_ETI_MASK | CSR5_RPS_MASK | CSR5_RU_MASK | \ - CSR5_RI_MASK | CSR5_UNF_MASK | CSR5_TU_MASK | CSR5_TPS_MASK | CSR5_TI_MASK) - -/*------------------------------------------------------------------------------ - * CSR5_TS: - * TS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process state - */ -#define CSR5_TS_OFFSET 0x28 -#define CSR5_TS_MASK 0x00700000uL -#define CSR5_TS_SHIFT 20 - -/** 000 - Stopped; RESET or STOP TRANSMIT command issued. */ -#define CSR5_TS_STOPPED 0u -/** 001 - Running, fetching the transmit descriptor. */ -#define CSR5_TS_RUNNING_FD 1u -/** 010 - Running, waiting for end of transmission. */ -#define CSR5_TS_RUNNING_WT 2u -/** 011 - Running, transferring data buffer from host memory to FIFO. */ -#define CSR5_TS_RUNNING_TD 3u -/** 101 - Running, setup packet. */ -#define CSR5_TS_RUNNING_SP 5u -/** 110 - Suspended; FIFO underflow or unavailable descriptor. */ -#define CSR5_TS_SUSPENDED 6u -/** 111 - Running, closing transmit descriptor. */ -#define CSR5_TS_RUNNING_CD 7u - -/*------------------------------------------------------------------------------ - * CSR5_RS: - * RS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process state - */ -#define CSR5_RS_OFFSET 0x28 -#define CSR5_RS_MASK 0x00060000uL -#define CSR5_RS_SHIFT 17 - -/** 000 - Stopped; RESET or STOP RECEIVE command issued. */ -#define CSR5_RS_STOPPED 0u -/** 001 - Running, fetching the receive descriptor. */ -#define CSR5_RS_RUNNING_FD 1u -/** 010 - Running, waiting for the end-of-receive packet before prefetch of the - *next descriptor. */ -#define CSR5_RS_RUNNING_WR 2u -/** 011 - Running, waiting for the receive packet. */ -#define CSR5_RS_RUNNING_RB 3u -/** 100 - Suspended, unavailable receive buffer. */ -#define CSR5_RS_SUSPENDED 4u -/** 101 - Running, closing the receive descriptor. */ -#define CSR5_RS_RUNNING_CD 5u -/** 111 - Running, transferring data from FIFO to host memory. */ -#define CSR5_RS_RUNNING_TD 7u - -/*------------------------------------------------------------------------------ - * CSR5_NIS: - * NIS field of register CSR5. - *------------------------------------------------------------------------------ - * Normal interrupt summary - */ -#define CSR5_NIS_OFFSET 0x28 -#define CSR5_NIS_MASK 0x00010000uL -#define CSR5_NIS_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR5_AIS: - * AIS field of register CSR5. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary - */ -#define CSR5_AIS_OFFSET 0x28 -#define CSR5_AIS_MASK 0x00008000UL -#define CSR5_AIS_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR5_ERI: - * ERI field of register CSR5. - *------------------------------------------------------------------------------ - * Early receive interrupt - */ -#define CSR5_ERI_OFFSET 0x28 -#define CSR5_ERI_MASK 0x00004000UL -#define CSR5_ERI_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR5_GTE: - * GTE field of register CSR5. - *------------------------------------------------------------------------------ - * General-purpose timer expiration - */ -#define CSR5_GTE_OFFSET 0x28 -#define CSR5_GTE_MASK 0x00000800UL -#define CSR5_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR5_ETI: - * ETI field of register CSR5. - *------------------------------------------------------------------------------ - * Early transmit interrupt - */ -#define CSR5_ETI_OFFSET 0x28 -#define CSR5_ETI_MASK 0x00000400UL -#define CSR5_ETI_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR5_RPS: - * RPS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process stopped - */ -#define CSR5_RPS_OFFSET 0x28 -#define CSR5_RPS_MASK 0x00000100UL -#define CSR5_RPS_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR5_RU: - * RU field of register CSR5. - *------------------------------------------------------------------------------ - * Receive buffer unavailable - */ -#define CSR5_RU_OFFSET 0x28 -#define CSR5_RU_MASK 0x00000080UL -#define CSR5_RU_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR5_RI: - * RI field of register CSR5. - *------------------------------------------------------------------------------ - * Receive interrupt - */ -#define CSR5_RI_OFFSET 0x28 -#define CSR5_RI_MASK 0x00000040UL -#define CSR5_RI_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR5_UNF: - * UNF field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit underflow - */ -#define CSR5_UNF_OFFSET 0x28 -#define CSR5_UNF_MASK 0x00000020UL -#define CSR5_UNF_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR5_TU: - * TU field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable - */ -#define CSR5_TU_OFFSET 0x28 -#define CSR5_TU_MASK 0x00000004UL -#define CSR5_TU_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR5_TPS: - * TPS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process stopped - */ -#define CSR5_TPS_OFFSET 0x28 -#define CSR5_TPS_MASK 0x00000002UL -#define CSR5_TPS_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR5_TI: - * TI field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit interrupt - */ -#define CSR5_TI_OFFSET 0x28 -#define CSR5_TI_MASK 0x00000001UL -#define CSR5_TI_SHIFT 0 - -/******************************************************************************* - * CSR6 register: - *------------------------------------------------------------------------------ - * CSR6 - Operation Mode Register - */ -#define CSR6_REG_OFFSET 0x30 - -/*------------------------------------------------------------------------------ - * CSR6_RA: - * RA field of register CSR6. - *------------------------------------------------------------------------------ - * Receive all - */ -#define CSR6_RA_OFFSET 0x30 -#define CSR6_RA_MASK 0x40000000UL -#define CSR6_RA_SHIFT 30 - -/*------------------------------------------------------------------------------ - * CSR6_TTM: - * TTM field of register CSR6. - *------------------------------------------------------------------------------ - * Transmit threshold mode - */ -#define CSR6_TTM_OFFSET 0x30 -#define CSR6_TTM_MASK 0x00400000UL -#define CSR6_TTM_SHIFT 22 - -/*------------------------------------------------------------------------------ - * CSR6_SF: - * SF field of register CSR6. - *------------------------------------------------------------------------------ - * Store and forward - */ -#define CSR6_SF_OFFSET 0x30 -#define CSR6_SF_MASK 0x00200000UL -#define CSR6_SF_SHIFT 21 - -/*------------------------------------------------------------------------------ - * CSR6_TR: - * TR field of register CSR6. - *------------------------------------------------------------------------------ - * Threshold control bits - */ -#define CSR6_TR_OFFSET 0x30 -#define CSR6_TR_MASK 0x0000C000UL -#define CSR6_TR_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR6_ST: - * ST field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop transmit command - */ -#define CSR6_ST_OFFSET 0x30 -#define CSR6_ST_MASK 0x00002000UL -#define CSR6_ST_SHIFT 13 - -/*------------------------------------------------------------------------------ - * CSR6_FD: - * FD field of register CSR6. - *------------------------------------------------------------------------------ - * Full-duplex mode - */ -#define CSR6_FD_OFFSET 0x30 -#define CSR6_FD_MASK 0x00000200UL -#define CSR6_FD_SHIFT 9 - -/*------------------------------------------------------------------------------ - * CSR6_PM: - * PM field of register CSR6. - *------------------------------------------------------------------------------ - * Pass all multicast - */ -#define CSR6_PM_OFFSET 0x30 -#define CSR6_PM_MASK 0x00000080UL -#define CSR6_PM_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR6_PR: - * PR field of register CSR6. - *------------------------------------------------------------------------------ - * Promiscuous mode - */ -#define CSR6_PR_OFFSET 0x30 -#define CSR6_PR_MASK 0x00000040UL -#define CSR6_PR_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR6_IF: - * IF field of register CSR6. - *------------------------------------------------------------------------------ - * Inverse filtering - */ -#define CSR6_IF_OFFSET 0x30 -#define CSR6_IF_MASK 0x00000010UL -#define CSR6_IF_SHIFT 4 - -/*------------------------------------------------------------------------------ - * CSR6_PB: - * PB field of register CSR6. - *------------------------------------------------------------------------------ - * Pass bad frames - */ -#define CSR6_PB_OFFSET 0x30 -#define CSR6_PB_MASK 0x00000008UL -#define CSR6_PB_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR6_HO: - * HO field of register CSR6. - *------------------------------------------------------------------------------ - * Hash-only filtering mode - */ -#define CSR6_HO_OFFSET 0x30 -#define CSR6_HO_MASK 0x00000004UL -#define CSR6_HO_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR6_SR: - * SR field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop receive command - */ -#define CSR6_SR_OFFSET 0x30 -#define CSR6_SR_MASK 0x00000002UL -#define CSR6_SR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR6_HP: - * HP field of register CSR6. - *------------------------------------------------------------------------------ - * Hash/perfect receive filtering mode - */ -#define CSR6_HP_OFFSET 0x30 -#define CSR6_HP_MASK 0x00000001UL -#define CSR6_HP_SHIFT 0 - -/******************************************************************************* - * CSR7 register: - *------------------------------------------------------------------------------ - * CSR7 - Interrupt Enable Register - */ -#define CSR7_REG_OFFSET 0x38 - -/*------------------------------------------------------------------------------ - * CSR7_NIE: - * NIE field of register CSR7. - *------------------------------------------------------------------------------ - * Normal interrupt summary enable - */ -#define CSR7_NIE_OFFSET 0x38 -#define CSR7_NIE_MASK 0x00010000UL -#define CSR7_NIE_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR7_AIE: - * AIE field of register CSR7. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary enable - */ -#define CSR7_AIE_OFFSET 0x38 -#define CSR7_AIE_MASK 0x00008000UL -#define CSR7_AIE_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR7_ERE: - * ERE field of register CSR7. - *------------------------------------------------------------------------------ - * Early receive interrupt enable - */ -#define CSR7_ERE_OFFSET 0x38 -#define CSR7_ERE_MASK 0x00004000UL -#define CSR7_ERE_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR7_GTE: - * GTE field of register CSR7. - *------------------------------------------------------------------------------ - * General-purpose timer overflow enable - */ -#define CSR7_GTE_OFFSET 0x38 -#define CSR7_GTE_MASK 0x00000800UL -#define CSR7_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR7_ETE: - * ETE field of register CSR7. - *------------------------------------------------------------------------------ - * Early transmit interrupt enable - */ -#define CSR7_ETE_OFFSET 0x38 -#define CSR7_ETE_MASK 0x00000400UL -#define CSR7_ETE_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR7_RSE: - * RSE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive stopped enable - */ -#define CSR7_RSE_OFFSET 0x38 -#define CSR7_RSE_MASK 0x00000100UL -#define CSR7_RSE_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR7_RUE: - * RUE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive buffer unavailable enable - */ -#define CSR7_RUE_OFFSET 0x38 -#define CSR7_RUE_MASK 0x00000080UL -#define CSR7_RUE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR7_RIE: - * RIE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive interrupt enable - */ -#define CSR7_RIE_OFFSET 0x38 -#define CSR7_RIE_MASK 0x00000040UL -#define CSR7_RIE_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR7_UNE: - * UNE field of register CSR7. - *------------------------------------------------------------------------------ - * Underflow interrupt enable - */ -#define CSR7_UNE_OFFSET 0x38 -#define CSR7_UNE_MASK 0x00000020UL -#define CSR7_UNE_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR7_TUE: - * TUE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable enable - */ -#define CSR7_TUE_OFFSET 0x38 -#define CSR7_TUE_MASK 0x00000004UL -#define CSR7_TUE_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR7_TSE: - * TSE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit stopped enable - */ -#define CSR7_TSE_OFFSET 0x38 -#define CSR7_TSE_MASK 0x00000002UL -#define CSR7_TSE_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR7_TIE: - * TIE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit interrupt enable - */ -#define CSR7_TIE_OFFSET 0x38 -#define CSR7_TIE_MASK 0x00000001UL -#define CSR7_TIE_SHIFT 0 - -/******************************************************************************* - * CSR8 register: - *------------------------------------------------------------------------------ - * CSR8 - Missed Frames and Overflow Counter Register - */ -#define CSR8_REG_OFFSET 0x40 - -/*------------------------------------------------------------------------------ - * CSR8_OCO: - * OCO field of register CSR8. - *------------------------------------------------------------------------------ - * Overflow counter overflow - */ -#define CSR8_OCO_OFFSET 0x40 -#define CSR8_OCO_MASK 0x10000000UL -#define CSR8_OCO_SHIFT 28 - -/*------------------------------------------------------------------------------ - * CSR8_FOC: - * FOC field of register CSR8. - *------------------------------------------------------------------------------ - * FIFO overflow counter - */ -#define CSR8_FOC_OFFSET 0x40 -#define CSR8_FOC_MASK 0x0FFE0000UL -#define CSR8_FOC_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR8_MFO: - * MFO field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame overflow - */ -#define CSR8_MFO_OFFSET 0x40 -#define CSR8_MFO_MASK 0x00010000UL -#define CSR8_MFO_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR8_MFC: - * MFC field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame counter - */ -#define CSR8_MFC_OFFSET 0x40 -#define CSR8_MFC_MASK 0x0000FFFFUL -#define CSR8_MFC_SHIFT 0 - -/******************************************************************************* - * CSR9 register: - *------------------------------------------------------------------------------ - * CSR9 - MII Management and Serial ROM Interface Register - */ -#define CSR9_REG_OFFSET 0x48 - -/*------------------------------------------------------------------------------ - * CSR9_MDI: - * MDI field of register CSR9. - *------------------------------------------------------------------------------ - * MII management data in signal - */ -#define CSR9_MDI_OFFSET 0x48 -#define CSR9_MDI_MASK 0x00080000UL -#define CSR9_MDI_SHIFT 19 - -/*------------------------------------------------------------------------------ - * CSR9_MII: - * MII field of register CSR9. - *------------------------------------------------------------------------------ - * MII management operation mode - */ -#define CSR9_MII_OFFSET 0x48 -#define CSR9_MII_MASK 0x00040000UL -#define CSR9_MII_SHIFT 18 - -/*------------------------------------------------------------------------------ - * CSR9_MDO: - * MDO field of register CSR9. - *------------------------------------------------------------------------------ - * MII management write data - */ -#define CSR9_MDO_OFFSET 0x48 -#define CSR9_MDO_MASK 0x00020000UL -#define CSR9_MDO_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR9_MDC: - * MDC field of register CSR9. - *------------------------------------------------------------------------------ - * MII management clock - */ -#define CSR9_MDC_OFFSET 0x48 -#define CSR9_MDC_MASK 0x00010000UL -#define CSR9_MDC_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR9_SDO: - * SDO field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data output - */ -#define CSR9_SDO_OFFSET 0x48 -#define CSR9_SDO_MASK 0x00000008UL -#define CSR9_SDO_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR9_SDI: - * SDI field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data input - */ -#define CSR9_SDI_OFFSET 0x48 -#define CSR9_SDI_MASK 0x00000004UL -#define CSR9_SDI_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR9_SCLK: - * SCLK field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM clock - */ -#define CSR9_SCLK_OFFSET 0x48 -#define CSR9_SCLK_MASK 0x00000002UL -#define CSR9_SCLK_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR9_SCS: - * SCS field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM chip select - */ -#define CSR9_SCS_OFFSET 0x48 -#define CSR9_SCS_MASK 0x00000001UL -#define CSR9_SCS_SHIFT 0 - -/******************************************************************************* - * CSR11 register: - *------------------------------------------------------------------------------ - * CSR11 - General-Purpose Timer and Interrupt Mitigation Control Register - */ -#define CSR11_REG_OFFSET 0x58 - -/*------------------------------------------------------------------------------ - * CSR11_CS: - * CS field of register CSR11. - *------------------------------------------------------------------------------ - * Cycle size - */ -#define CSR11_CS_OFFSET 0x58 -#define CSR11_CS_MASK 0x80000000UL -#define CSR11_CS_SHIFT 31 - -/*------------------------------------------------------------------------------ - * CSR11_TT: - * TT field of register CSR11. - *------------------------------------------------------------------------------ - * Transmit timer - */ -#define CSR11_TT_OFFSET 0x58 -#define CSR11_TT_MASK 0x78000000UL -#define CSR11_TT_SHIFT 27 - -/*------------------------------------------------------------------------------ - * CSR11_NTP: - * NTP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of transmit packets - */ -#define CSR11_NTP_OFFSET 0x58 -#define CSR11_NTP_MASK 0x07000000UL -#define CSR11_NTP_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR11_RT: - * RT field of register CSR11. - *------------------------------------------------------------------------------ - * Receive timer - */ -#define CSR11_RT_OFFSET 0x58 -#define CSR11_RT_MASK 0x00F00000UL -#define CSR11_RT_SHIFT 20 - -/*------------------------------------------------------------------------------ - * CSR11_NRP: - * NRP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of receive packets - */ -#define CSR11_NRP_OFFSET 0x58 -#define CSR11_NRP_MASK 0x000E0000UL -#define CSR11_NRP_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR11_CON: - * CON field of register CSR11. - *------------------------------------------------------------------------------ - * Continuous mode - */ -#define CSR11_CON_OFFSET 0x58 -#define CSR11_CON_MASK 0x00010000UL -#define CSR11_CON_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR11_TIM: - * TIM field of register CSR11. - *------------------------------------------------------------------------------ - * Timer value - */ -#define CSR11_TIM_OFFSET 0x58 -#define CSR11_TIM_MASK 0x0000FFFFUL -#define CSR11_TIM_SHIFT 0 - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_ETHERNET_MAC_REGISTERS_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h deleted file mode 100644 index 8711243f4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * Actel:Firmware:MSS_Ethernet_MAC_Driver:2.0.103 configuration. - * - */ - - -#ifndef ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER -#define ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - - -#define CORE_VENDOR "Actel" -#define CORE_LIBRARY "Firmware" -#define CORE_NAME "MSS_Ethernet_MAC_Driver" -#define CORE_VERSION "2.0.103" - -#define BUS_ARBITRATION_SCHEME 0 -#define PROGRAMMABLE_BURST_LENGTH 0 -#define RX_RING_SIZE 5 -#define SETUP_FRAME_TIME_OUT 10000 -#define STATE_CHANGE_TIME_OUT 10000 -#define TX_RING_SIZE 2 - -#endif // ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c deleted file mode 100644 index e0433bace..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c +++ /dev/null @@ -1,390 +0,0 @@ -/***************************************************************************//** - * PHY access methods for DP83848C. - * The implementation in this file is specific to the DP83848C, - * If a different PHY support is required the PHY specific registers must - * be updated. - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2324 $ - * SVN $Date: 2010-02-26 10:47:36 +0000 (Fri, 26 Feb 2010) $ - * - ******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" - -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" - -extern MAC_instance_t g_mss_mac; - -/***************************** MDIO FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ -#define MDIO_START 0x00004000UL -#define MDIO_READ 0x00002000UL -#define MDIO_WRITE 0x00001002UL -#define MDIO_ADDR_OFFSET 7UL -#define MDIO_ADDR_MASK 0x00000f80UL -#define MDIO_REG_ADDR_OFFSET 2UL -#define MDIO_REG_ADDR_MASK 0x0000007cUL -#define PREAMBLECOUNT 32UL -#define ONEMICROSECOND 20UL - -typedef enum { - MDIO_CMD_READ, - MDIO_CMD_WRITE -}mdio_cmd_t; - - - -/***************************************************************************//** - * Set clock high or low. - */ -static void -MDIO_management_clock -( - int32_t clock -) -{ - int32_t volatile a; - - MAC_BITBAND->CSR9_MDC = (uint32_t)clock; - - /* delay for 1us */ - for( a = 0; a < ONEMICROSECOND; a++ ){} -} - - -/***************************************************************************//** - * Send read or write command to PHY. - */ -static void -MDIO_send_cmd -( - uint8_t regad, - mdio_cmd_t mdio_cmd -) -{ - int32_t i; - uint16_t mask, data; - - /* enable MII output */ - MAC_BITBAND->CSR9_MDEN = 1; - - /* send 32 1's preamble */ - MAC_BITBAND->CSR9_MDO = 1; - for (i = 0; i < PREAMBLECOUNT; i++) { - MDIO_management_clock( 0 ); - MDIO_management_clock( 1 ); - } - - /* calculate data bits */ - data = MDIO_START | - (( mdio_cmd == MDIO_CMD_READ ) ? MDIO_READ : MDIO_WRITE ) | - ((g_mss_mac.phy_address << MDIO_ADDR_OFFSET) & MDIO_ADDR_MASK) | - ((regad << MDIO_REG_ADDR_OFFSET) & MDIO_REG_ADDR_MASK); - - /* sent out */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - if ((mask == 0x2) && (mdio_cmd == MDIO_CMD_READ)) { - /* enable MII input */ - MAC_BITBAND->CSR9_MDEN = 0; - } - - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } -} - - -/***************************************************************************//** - * Reads a PHY register. - */ -static uint16_t -MDIO_read -( - uint8_t regad -) -{ - uint16_t mask; - uint16_t data; - - MDIO_send_cmd( regad, MDIO_CMD_READ); - - /* read data */ - data = 0; - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* read MDI */ - if(MAC_BITBAND-> CSR9_MDI != 0){ - data |= mask; - } - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); - - return data; -} - - -/***************************************************************************//** - * Writes to a PHY register. - */ -static void -MDIO_write -( - uint8_t regad, - uint16_t data -) -{ - uint16_t mask; - - MDIO_send_cmd(regad, MDIO_CMD_WRITE); - - /* write data */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); -} - - -/****************************** PHY FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ - -/* Base registers */ -#define PHYREG_MIIMCR 0x00 /**< MII Management Control Register */ -#define MIIMCR_RESET (1<<15) -#define MIIMCR_LOOPBACK (1<<14) -#define MIIMCR_SPEED_SELECT (1<<13) -#define MIIMCR_ENABLE_AUTONEGOTIATION (1<<12) -#define MIIMCR_RESTART_AUTONEGOTIATION (1<<9) -#define MIIMCR_DUPLEX_MODE (1<<8) -#define MIIMCR_COLLISION_TEST (1<<7) - -#define PHYREG_MIIMSR 0x01 /**< MII Management Status Register */ -#define MIIMSR_ANC (1<<5) /**< Auto-Negotiation Completed. */ -#define MIIMSR_LINK (1<<2) /**< Link is established. */ - -#define PHYREG_PHYID1R 0x02 /**< PHY Identifier 1 Register */ -#define PHYREG_PHYID2R 0x03 /**< PHY Identifier 2 Register */ - -#define PHYREG_ANAR 0x04 /**< Auto-Negotiation Advertisement Register */ -#define ANAR_100FD (1<<8) -#define ANAR_100HD (1<<7) -#define ANAR_10FD (1<<6) -#define ANAR_10HD (1<<5) - -#define PHYREG_ANLPAR 0x05 /**< Auto-Negotiation Link Partner Ability Register */ -#define PHYREG_ANER 0x06 /**< Auto-Negotiation Expansion Register */ -#define PHYREG_NPAR 0x07 /**< Next Page Advertisement Register */ -/* 0x08- 0x0F Reserved */ -#define PHYREG_MFR 0x10 /**< Miscellaneous Features Register */ -#define PHYREG_ICSR 0x11 /**< Interrupt Control/Status Register */ - -#define PHYREG_DR 0x12 /**< Diagnostic Register */ -#define DR_DPLX (1<<11) -#define DR_DATA_RATE (1<<10) - -#define PHYREG_PMLR 0x13 /**< Power Management & Loopback Register */ -/* 0x14 Reserved */ -#define PHYREG_MCR 0x15 /**< Mode Control Register */ -#define MCR_LED_SEL (1<<9) -/* 0x16 Reserved */ -#define PHYREG_DCR 0x17 /**< Disconnect Counter */ -#define PHYREG_RECR 0x18 /**< Receive Error Counter */ -/* 0x19-0x1F Reserved */ - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ) -{ - uint8_t phy; - uint8_t phy_found; - uint16_t reg; - - phy_found = 0; - for (phy = MSS_PHY_ADDRESS_MIN; phy <= MSS_PHY_ADDRESS_MAX; phy++) { - g_mss_mac.phy_address = phy; - - reg = MDIO_read( PHYREG_PHYID1R ); - - if ((reg != 0x0000ffffUL) && (reg != 0x00000000UL)) { - phy_found = 1; - phy = MSS_PHY_ADDRESS_MAX + 1; - } - } - - if( phy_found == 0 ) { - g_mss_mac.phy_address = MSS_PHY_ADDRESS_AUTO_DETECT; - } - return g_mss_mac.phy_address; -} - - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ) -{ - MDIO_write( PHYREG_MIIMCR, MIIMCR_RESET ); - MDIO_write( PHYREG_MIIMCR, - MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - MIIMCR_COLLISION_TEST ); -} - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_MIIMCR ); - MDIO_write( PHYREG_MIIMCR, - (uint16_t)( MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - reg) ); - - for( ;; ) { - reg = MDIO_read( PHYREG_MIIMSR ); - if( (reg & MIIMSR_ANC) != 0 ) { - break; - } else { - vTaskDelay( 200 ); - } - } -} - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ) -{ - uint8_t retval = 0; - if(( MDIO_read( PHYREG_MIIMSR ) & MIIMSR_LINK ) != 0 ){ - retval = MSS_MAC_LINK_STATUS_LINK; - } - return retval; -} - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ) -{ - uint16_t diagnostic; - uint8_t type = 0; - - diagnostic = MDIO_read( PHYREG_DR ); - - if( (diagnostic & DR_DPLX) != 0 ) { - type = MSS_MAC_LINK_STATUS_FDX; - } - - if( (diagnostic & DR_DATA_RATE) != 0 ) { - type |= MSS_MAC_LINK_STATUS_100MB; - } - - return type; -} - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_ANAR ); - reg |= ANAR_100FD | ANAR_100HD | ANAR_10FD | ANAR_10HD; - - if( (type & MSS_MAC_LINK_STATUS_100MB) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_100HD); - } - - if( (type & MSS_MAC_LINK_STATUS_FDX) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_10FD); - } - - MDIO_write( PHYREG_ANAR, reg ); -} - - -/***************************************************************************//** - * Puts the Phy in Loopback mode - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -) -{ - - uint16_t reg = 0; - - - reg = MDIO_read( PHYREG_MIIMCR ); - // If set to one we need to set the LOCAL Phy loopback - if(enable == 1) - reg |= MIIMCR_LOOPBACK; - else // else we want to clear the bit.. - reg ^= MIIMCR_LOOPBACK; - - - MDIO_write( PHYREG_MIIMCR,reg ); - reg = MDIO_read( PHYREG_MIIMCR ); - - return reg; - -} - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h deleted file mode 100644 index e61daaed2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h +++ /dev/null @@ -1,78 +0,0 @@ -/***************************************************************************//** - * PHY access methods. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2293 $ - * SVN $Date: 2010-02-24 13:52:02 +0000 (Wed, 24 Feb 2010) $ - * - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_PHY_H -#define __MSS_ETHERNET_MAC_PHY_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ); - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ); - - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ); - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ); - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ); - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -); - -/***************************************************************************//** - * Sets/Clears the phy loop back mode, based on the enable value - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -); - -#ifdef __cplusplus -} -#endif - -#endif /*__MSS_ETHERNET_MAC_PHY_H*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c deleted file mode 100644 index e3be9aaa0..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c +++ /dev/null @@ -1,283 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem GPIO bare metal driver implementation. - * - * SVN $Revision: 1753 $ - * SVN $Date: 2009-12-11 15:12:18 +0000 (Fri, 11 Dec 2009) $ - */ -#include "mss_gpio.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** -* -*/ -#define GPIO_INT_ENABLE_MASK (uint32_t)0x00000008UL -#define OUTPUT_BUFFER_ENABLE_MASK 0x00000004UL - -#define NB_OF_GPIO (uint32_t)32 - -/*-------------------------------------------------------------------------*//** - * Lookup table of GPIO configuration registers address indexed on GPIO ID. - */ -static uint32_t volatile * const g_config_reg_lut[NB_OF_GPIO] = -{ - &(GPIO->GPIO_0_CFG), - &(GPIO->GPIO_1_CFG), - &(GPIO->GPIO_2_CFG), - &(GPIO->GPIO_3_CFG), - &(GPIO->GPIO_4_CFG), - &(GPIO->GPIO_5_CFG), - &(GPIO->GPIO_6_CFG), - &(GPIO->GPIO_7_CFG), - &(GPIO->GPIO_8_CFG), - &(GPIO->GPIO_9_CFG), - &(GPIO->GPIO_10_CFG), - &(GPIO->GPIO_11_CFG), - &(GPIO->GPIO_12_CFG), - &(GPIO->GPIO_13_CFG), - &(GPIO->GPIO_14_CFG), - &(GPIO->GPIO_15_CFG), - &(GPIO->GPIO_16_CFG), - &(GPIO->GPIO_17_CFG), - &(GPIO->GPIO_18_CFG), - &(GPIO->GPIO_19_CFG), - &(GPIO->GPIO_20_CFG), - &(GPIO->GPIO_21_CFG), - &(GPIO->GPIO_22_CFG), - &(GPIO->GPIO_23_CFG), - &(GPIO->GPIO_24_CFG), - &(GPIO->GPIO_25_CFG), - &(GPIO->GPIO_26_CFG), - &(GPIO->GPIO_27_CFG), - &(GPIO->GPIO_28_CFG), - &(GPIO->GPIO_29_CFG), - &(GPIO->GPIO_30_CFG), - &(GPIO->GPIO_31_CFG) -}; - -/*-------------------------------------------------------------------------*//** - * Lookup table of Cortex-M3 GPIO interrupt number indexed on GPIO ID. - */ -static const IRQn_Type g_gpio_irqn_lut[NB_OF_GPIO] = -{ - GPIO0_IRQn, - GPIO1_IRQn, - GPIO2_IRQn, - GPIO3_IRQn, - GPIO4_IRQn, - GPIO5_IRQn, - GPIO6_IRQn, - GPIO7_IRQn, - GPIO8_IRQn, - GPIO9_IRQn, - GPIO10_IRQn, - GPIO11_IRQn, - GPIO12_IRQn, - GPIO13_IRQn, - GPIO14_IRQn, - GPIO15_IRQn, - GPIO16_IRQn, - GPIO17_IRQn, - GPIO18_IRQn, - GPIO19_IRQn, - GPIO20_IRQn, - GPIO21_IRQn, - GPIO22_IRQn, - GPIO23_IRQn, - GPIO24_IRQn, - GPIO25_IRQn, - GPIO26_IRQn, - GPIO27_IRQn, - GPIO28_IRQn, - GPIO29_IRQn, - GPIO30_IRQn, - GPIO31_IRQn -}; - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_init - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_init( void ) -{ - uint32_t i; - - /* reset MSS GPIO hardware */ - SYSREG->SOFT_RST_CR |= SYSREG_GPIO_SOFTRESET_MASK; - /* Clear any previously pended MSS GPIO interrupt */ - for ( i = 0U; i < NB_OF_GPIO; ++i ) - { - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[i] ); - } - /* Take MSS GPIO hardware out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_GPIO_SOFTRESET_MASK; -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_config - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - *(g_config_reg_lut[gpio_idx]) = config; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_set_output - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO_BITBAND->GPIO_OUT[gpio_idx] = (uint32_t)value; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_drive_inout - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -) -{ - uint32_t outputs_state; - uint32_t config; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - switch( inout_state ) - { - case MSS_GPIO_DRIVE_HIGH: - /* Set output high */ - outputs_state = GPIO->GPIO_OUT; - outputs_state |= (uint32_t)1 << gpio_idx; - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_DRIVE_LOW: - /* Set output low */ - outputs_state = GPIO->GPIO_OUT; - outputs_state &= ~((uint32_t)((uint32_t)1 << gpio_idx)); - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_HIGH_Z: - /* Disable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config &= ~OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - default: - ASSERT(0); - break; - } - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_enable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value | GPIO_INT_ENABLE_MASK); - NVIC_EnableIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_disable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value & ~GPIO_INT_ENABLE_MASK); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_clear_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO->GPIO_IRQ = ((uint32_t)1) << gpio_idx; - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h deleted file mode 100644 index 60220f128..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h +++ /dev/null @@ -1,488 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem GPIO bare metal software driver public - * API. - * - * SVN $Revision: 1751 $ - * SVN $Date: 2009-12-11 15:05:48 +0000 (Fri, 11 Dec 2009) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion MSS GPIO Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a block of 32 general - purpose input/outputs (GPIO). - This software driver provides a set of functions for controlling the MSS GPIO - block as part of a bare metal system where no operating system is available. - This driver can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS GPIOs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent use of some external pins through IOMUX configuration. - This feature allows optimizing external pin usage by assigning external pins - for usage by either the microcontroller subsystem or the FPGA fabric. - The MSS GPIO ports 0 to 15 are always connected to external pins but GPIO ports - 16 to 31 are routed through IOMUX to the SmartFusion device external pins. - These IOMUX are configured using the MSS Configurator tool. - Make sure the MSS GPIOs 16 to 31 are enabled in the MSS Configurator tool if - you wish to use them - - @section theory_op Theory of Operation - The MSS GPIO driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access MSS hardware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS GPIO driver functions are grouped into the following categories: - - Initiliazation - - Configuration - - Reading and setting GPIO state - - Interrupt control - - The MSS GPIO driver is initialized through a call to the GPIO_init() function. - The GPIO_init() function must be called before any other GPIO driver functions - can be called. - - Each GPIO port is individually configured through a call to the - MSS_GPIO_config() function. Configuration includes deciding if a GPIO port - will be used as an input, an output or both. GPIO ports configured as inputs can be - further configured to generate interrupts based on the input's state. - Interrupts can be level or edge sensitive. - - The state of the GPIO ports can be read and set using the following functions: - - MSS_GPIO_get_inputs() - - MSS_GPIO_get_outputs() - - MSS_GPIO_set_outputs() - - MSS_GPIO_set_output() - - MSS_GPIO_drive_inout() - - Interrupts generated by GPIO ports configured as inputs are controlled using - the following functions: - - MSS_GPIO_enable_irq() - - MSS_GPIO_disable_irq() - - MSS_GPIO_clear_irq() - - *//*=========================================================================*/ -#ifndef MSS_GPIO_H_ -#define MSS_GPIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/*-------------------------------------------------------------------------*//** - The mss_gpio_id_t enumeration is used to identify GPIOs as part of the - parameter to functions: - - MSS_GPIO_config(), - - MSS_GPIO_drive_inout(), - - MSS_GPIO_enable_irq(), - - MSS_GPIO_disable_irq(), - - MSS_GPIO_clear_irq() - */ -typedef enum __mss_gpio_id_t -{ - MSS_GPIO_0 = 0, - MSS_GPIO_1 = 1, - MSS_GPIO_2 = 2, - MSS_GPIO_3 = 3, - MSS_GPIO_4 = 4, - MSS_GPIO_5 = 5, - MSS_GPIO_6 = 6, - MSS_GPIO_7 = 7, - MSS_GPIO_8 = 8, - MSS_GPIO_9 = 9, - MSS_GPIO_10 = 10, - MSS_GPIO_11 = 11, - MSS_GPIO_12 = 12, - MSS_GPIO_13 = 13, - MSS_GPIO_14 = 14, - MSS_GPIO_15 = 15, - MSS_GPIO_16 = 16, - MSS_GPIO_17 = 17, - MSS_GPIO_18 = 18, - MSS_GPIO_19 = 19, - MSS_GPIO_20 = 20, - MSS_GPIO_21 = 21, - MSS_GPIO_22 = 22, - MSS_GPIO_23 = 23, - MSS_GPIO_24 = 24, - MSS_GPIO_25 = 25, - MSS_GPIO_26 = 26, - MSS_GPIO_27 = 27, - MSS_GPIO_28 = 28, - MSS_GPIO_29 = 29, - MSS_GPIO_30 = 30, - MSS_GPIO_31 = 31 -} mss_gpio_id_t; - -/*-------------------------------------------------------------------------*//** - GPIO ports definitions used to identify GPIOs as part of the parameter to - function MSS_GPIO_set_outputs(). - These definitions can also be used to identity GPIO through logical - operations on the return value of function MSS_GPIO_get_inputs(). - */ -#define MSS_GPIO_0_MASK 0x00000001UL -#define MSS_GPIO_1_MASK 0x00000002UL -#define MSS_GPIO_2_MASK 0x00000004UL -#define MSS_GPIO_3_MASK 0x00000008UL -#define MSS_GPIO_4_MASK 0x00000010UL -#define MSS_GPIO_5_MASK 0x00000020UL -#define MSS_GPIO_6_MASK 0x00000040UL -#define MSS_GPIO_7_MASK 0x00000080UL -#define MSS_GPIO_8_MASK 0x00000100UL -#define MSS_GPIO_9_MASK 0x00000200UL -#define MSS_GPIO_10_MASK 0x00000400UL -#define MSS_GPIO_11_MASK 0x00000800UL -#define MSS_GPIO_12_MASK 0x00001000UL -#define MSS_GPIO_13_MASK 0x00002000UL -#define MSS_GPIO_14_MASK 0x00004000UL -#define MSS_GPIO_15_MASK 0x00008000UL -#define MSS_GPIO_16_MASK 0x00010000UL -#define MSS_GPIO_17_MASK 0x00020000UL -#define MSS_GPIO_18_MASK 0x00040000UL -#define MSS_GPIO_19_MASK 0x00080000UL -#define MSS_GPIO_20_MASK 0x00100000UL -#define MSS_GPIO_21_MASK 0x00200000UL -#define MSS_GPIO_22_MASK 0x00400000UL -#define MSS_GPIO_23_MASK 0x00800000UL -#define MSS_GPIO_24_MASK 0x01000000UL -#define MSS_GPIO_25_MASK 0x02000000UL -#define MSS_GPIO_26_MASK 0x04000000UL -#define MSS_GPIO_27_MASK 0x08000000UL -#define MSS_GPIO_28_MASK 0x10000000UL -#define MSS_GPIO_29_MASK 0x20000000UL -#define MSS_GPIO_30_MASK 0x40000000UL -#define MSS_GPIO_31_MASK 0x80000000UL - -/*-------------------------------------------------------------------------*//** - * GPIO modes - */ -#define MSS_GPIO_INPUT_MODE 0x0000000002UL -#define MSS_GPIO_OUTPUT_MODE 0x0000000005UL -#define MSS_GPIO_INOUT_MODE 0x0000000003UL - -/*-------------------------------------------------------------------------*//** - * Possible GPIO inputs interrupt configurations. - */ -#define MSS_GPIO_IRQ_LEVEL_HIGH 0x0000000000UL -#define MSS_GPIO_IRQ_LEVEL_LOW 0x0000000020UL -#define MSS_GPIO_IRQ_EDGE_POSITIVE 0x0000000040UL -#define MSS_GPIO_IRQ_EDGE_NEGATIVE 0x0000000060UL -#define MSS_GPIO_IRQ_EDGE_BOTH 0x0000000080UL - -/*-------------------------------------------------------------------------*//** - * Possible states for GPIO configured as INOUT. - */ -typedef enum mss_gpio_inout_state -{ - MSS_GPIO_DRIVE_LOW = 0, - MSS_GPIO_DRIVE_HIGH, - MSS_GPIO_HIGH_Z -} mss_gpio_inout_state_t; - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_init() function initializes the SmartFusion MSS GPIO block. It - resets the MSS GPIO hardware block and it also clears any pending MSS GPIO - interrupts in the Cortex-M3 interrupt controller. - - @return - none. - */ -void MSS_GPIO_init( void ); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_config() function is used to configure an individual - GPIO port. - - @param port_id - The port_id parameter identifies the GPIO port to be configured. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param config - The config parameter specifies the configuration to be applied to the GPIO - port identified by the port_id parameter. It is a logical OR of the required - I/O mode and the required interrupt mode. The interrupt mode is not relevant - if the GPIO is configured as an output only. - These I/O mode constants are allowed: - - MSS_GPIO_INPUT_MODE - - MSS_GPIO_OUTPUT_MODE - - MSS_GPIO_INOUT_MODE - These interrupt mode constants are allowed: - - MSS_GPIO_IRQ_LEVEL_HIGH - - MSS_GPIO_IRQ_LEVEL_LOW - - MSS_GPIO_IRQ_EDGE_POSITIVE - - MSS_GPIO_IRQ_EDGE_NEGATIVE - - MSS_GPIO_IRQ_EDGE_BOTH - - @return - none. - - Example: - The following call will configure GPIO 4 as an input generating interrupts on - a low to high transition of the input: - @code - MSS_GPIO_config( MSS_GPIO_4, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_POSITIVE ); - @endcode - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_outputs() function is used to set the state of all GPIO - ports configured as outputs. - - @param value - The value parameter specifies the state of the GPIO ports configured as - outputs. It is a bit mask of the form (MSS_GPIO_n_MASK | MSS_GPIO_m_MASK) where n - and m are numbers identifying GPIOs. - For example (MSS_GPIO_0_MASK | MSS_GPIO_1_MASK | MSS_GPIO_2_MASK ) specifies - that the first, second and third GPIOs' must be set high and all other - outputs set low. - The driver provides 32 mask constants, MSS_GPIO_0_MASK to MSS_GPIO_31_MASK - inclusive, for this purpose. - - @return - none. - - Example 1: - Set GPIOs outputs 0 and 8 high and all other GPIO outputs low. - @code - MSS_GPIO_set_outputs( MSS_GPIO_0_MASK | MSS_GPIO_8_MASK ); - @endcode - - Example 2: - Set GPIOs outputs 2 and 4 low without affecting other GPIO outputs. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - gpio_outputs &= ~( MSS_GPIO_2_MASK | MSS_GPIO_4_MASK ); - MSS_GPIO_set_outputs( gpio_outputs ); - @endcode - - @see MSS_GPIO_get_outputs() - */ -static __INLINE void -MSS_GPIO_set_outputs -( - uint32_t value -) -{ - GPIO->GPIO_OUT = value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_output() function is used to set the state of a single GPIO - port configured as output. - - @param port_id - The port_id parameter identifies the GPIO port that is to have its output set. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @param value - The value parameter specifies the desired state for the GPIO output. A value - of 0 will set the output low and a value of 1 will set the output high. - - @return - none. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_inputs() function is used to read the current state of all - GPIO ports confgured as inputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO input. The least significant bit represents the state of - GPIO input 0 and the most significant bit the state of GPIO input 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_inputs; - gpio_inputs = MSS_GPIO_get_inputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_inputs( void ) -{ - return GPIO->GPIO_IN; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_outputs() function is used to read the current state of all - GPIO ports confgured as outputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO output. The least significant bit represents the state - of GPIO output 0 and the most significant bit the state of GPIO output 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_outputs( void ) -{ - return GPIO->GPIO_OUT; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_drive_inout() function is used to set the output state of a single - GPIO port configured as an INOUT. An INOUT GPIO can be in one of three states: - - high - - low - - high impedance - An INOUT output would typically be used where several devices can drive the - state of a shared signal line. The high and low states are equivalent to the - high and low states of a GPIO configured as output. The high impedance state - is used to prevent the GPIO from driving its output state onto the signal line, - while at the same time allowing the input state of the GPIO to be read - - @param port_id - The port_id parameter identifies the GPIO port for which you want to change - the output state. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param inout_state - The inout_state parameter specifies the state of the GPIO port identified by - the port_id parameter. Allowed values of type mss_gpio_inout_state_t are: - - MSS_GPIO_DRIVE_HIGH - - MSS_GPIO_DRIVE_LOW - - MSS_GPIO_HIGH_Z (high impedance) - - @return - none. - - Example: - The call to MSS_GPIO_drive_inout() below will set the GPIO 7 output to the - high impedance state. - @code - MSS_GPIO_drive_inout( MSS_GPIO_7, MSS_GPIO_HIGH_Z ); - @endcode - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_enable_irq() function is used to enable interrupt generation - for the specified GPIO input. Interrupts are generated based on the state of - the GPIO input and the interrupt mode configured for it by MSS_GPIO_config(). - - @param port_id - The port_id parameter identifies the GPIO port for which you want to enable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_enable_irq() below will allow GPIO 8 to generate - interrupts. - @code - MSS_GPIO_enable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_disable_irq() function is used to disable interrupt generation - for the specified GPIO input. - - @param port_id - The port_id parameter identifies the GPIO port for which you want to disable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_disable_irq() below will prevent GPIO 8 from generating - interrupts. - @code - MSS_GPIO_disable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_clear_irq() function is used to clear a pending interrupt from - the specified GPIO input. - Note: The MSS_GPIO_clear_irq() function must be called as part of any GPIO - interrupt service routine (ISR) in order to prevent the same interrupt event - retriggering a call to the GPIO ISR. The function also clears the interrupt - in the Cortex-M3 interrupt controller through a call to NVIC_ClearPendingIRQ(). - - @param port_id - The port_id parameter identifies the GPIO input for which you want to clear the - interrupt. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The example below demonstrates the use of the MSS_GPIO_clear_irq() function - as part of the GPIO 9 interrupt service routine. - @code - void GPIO9_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_GPIO_clear_irq( MSS_GPIO_9 ); - } - @endcode - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -); - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_GPIO_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h deleted file mode 100644 index d83519d54..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h +++ /dev/null @@ -1,598 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem (MSS) timer driver API. - * - * SVN $Revision: 2661 $ - * SVN $Date: 2010-04-19 17:14:26 +0100 (Mon, 19 Apr 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS Timer Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a timer hardware - block which can be used as two independent 32-bits timers or as a single - 64-bits timer in periodic or one-shot mode. - - This driver provides a set of functions for controlling the MSS timer as part - of a bare metal system where no operating system is available. These drivers - can be adapted for use as part of an operating system but the implementation - of the adaptation layer between this driver and the operating system's driver - model is outside the scope of this driver. - - @section theory_op Theory of Operation - The MSS Timer driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - The SmartFusion MSS Timer can be used in one of two mutually exclusive modes; - either as a single 64-bits timer or as two independent 32-bits timers. The MSS - Timer can be used in either periodic mode or one-shot mode. A timer configured - for periodic mode operations will generate an interrupt and reload its - down-counter when it reaches 0. The timer will then continue decrementing from - its reload value without waiting for the interrupt to be cleared. A timer - configured for one-shot mode will only generate an interrupt once when its - down-counter reaches 0. It must be explitcitly reloaded to start decrementing - again. - - The MSS Timer driver functions are grouped into the following categories: - - Initialization and Configuration - - Timer control - - Interrupt control - - The MSS Timer driver provides three initialization functions: - - MSS_TIM1_init() - - MSS_TIM2_init() - - MSS_TIM64_init() - The MSS Timer driver is initialized through calls to these functions and at - least one of them must be called before any other MSS Timer driver functions - can be called. - You should only use the MSS_TIM1_init() and MSS_TIM2_init() functions if you - intend to use the timer in 32-bits mode. Use the MSS_TIM64_init() function is - you intend to use the MSS Timer as a single 64-bits timer. The initialization - functions take a single parameter specifying the operating mode of the timer - being initialized. - - Once initialized a timer can be controlled using the following functions: - - MSS_TIM1_load_immediate() - - MSS_TIM1_load_background() - - MSS_TIM1_get_current_value() - - MSS_TIM1_start() - - MSS_TIM1_stop() - - MSS_TIM2_load_immediate() - - MSS_TIM2_load_background() - - MSS_TIM2_get_current_value() - - MSS_TIM2_start() - - MSS_TIM2_stop() - - MSS_TIM64_load_immediate() - - MSS_TIM64_load_background() - - MSS_TIM64_get_current_value() - - MSS_TIM64_start() - - MSS_TIM64_stop() - - Timer interrupts are controlled using the following functions: - - MSS_TIM1_enable_irq() - - MSS_TIM1_disable_irq() - - MSS_TIM1_clear_irq() - - MSS_TIM2_enable_irq() - - MSS_TIM2_disable_irq() - - MSS_TIM2_clear_irq() - - MSS_TIM64_enable_irq() - - MSS_TIM64_disable_irq() - - MSS_TIM64_clear_irq() - - The function prototypes for the timer interrupt handlers are: - - void Timer1_IRQHandler( void ) - - void Timer2_IRQHandler( void ) - Entries for these interrupt handlers are provided in the SmartFusion CMSIS-PAL - vector table. To add a Timer 1 interrupt handler, you must implement a - Timer1_IRQHandler( ) function as part of your application code. To add a - Timer 2 interrupt handler, you must implement a Timer2_IRQHandler( ) function - as part of your application code. When using the MSS Timer as a 64-bit timer, - you must implement a Timer1_IRQHandler( ) function as part of your - application code. The Timer 2 interrupt is not used when the MSS Timer is - configured as a 64-bit timer. - - *//*=========================================================================*/ -#ifndef MSS_TIMER_H_ -#define MSS_TIMER_H_ - - -#include "../../CMSIS/a2fxxxm3.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * Timer mode selection. This enumeration is used to select between the two - * possible timer modes of operation: periodic and one-shot mode. It is used as - * an argument to the MSS_TIM1_init(), MSS_TIM2_init() and MSS_TIM64_init() - * functions. - * MSS_TIMER_PERIODIC_MODE: - * In periodic mode the timer generates interrupts at constant intervals. On - * reaching zero, the timer's counter is reloaded with a value held in a - * register and begins counting down again. - * MSS_TIMER_ONE_SHOT_MODE: - * The timer generates a single interrupt in this mode. On reaching zero, the - * timer's counter halts until reprogrammed by the user. - */ -typedef enum __mss_timer_mode_t -{ - MSS_TIMER_PERIODIC_MODE = 0, - MSS_TIMER_ONE_SHOT_MODE = 1 -} mss_timer_mode_t; - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 1. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 1, disables its interrupt and sets the Timer 1 operating mode. - Please note that the SmartFusion MSS Timer block cannot be used both as a - 64-bit and 32-bit timer. Calling MSS_TIM1_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM1_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* Disable timer 1 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM1INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM1MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_start() function enables Timer 1 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM1_load_immediate() or MSS_TIM1_load_background() functions. - */ -static __INLINE void MSS_TIM1_start( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_stop() function disables Timer 1 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM1_stop( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_get_current_value() returns the current value of the Timer 1 - down-counter. - - @return - This function returns the 32-bits current value of the Timer 1 down-counter. - */ -static __INLINE uint32_t MSS_TIM1_get_current_value( void ) -{ - return TIMER->TIM1_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_immediate() function loads the value passed by the - load_value parameter into the Timer 1 down-counter. The counter will decrement - immediately from this value once Timer 1 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 1 interrupts are - enabled. This function is intended to be used when Timer 1 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 1 down-counter - will start decrementing from. - */ -static __INLINE void MSS_TIM1_load_immediate( uint32_t load_value ) -{ - TIMER->TIM1_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_background() function is used to specify the value that will - be reloaded into the Timer 1 down-counter the next time the counter reaches - zero. This function is typically used when Timer 1 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 1. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 1 down-counter the next time the down-counter reaches zero. The Timer - 1 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM1_load_background( uint32_t load_value ) -{ - TIMER->TIM1_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_enable_irq() function is used to enable interrupt generation for - Timer 1. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer1_IRQHandler() function will be called when a Timer 1 - interrupt occurs. - Note: Note: A Timer1_IRQHandler() default implementation is defined, with - weak linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - - */ -static __INLINE void MSS_TIM1_enable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_disable_irq() function is used to disable interrupt generation - for Timer 1. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM1_disable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_clear_irq() function is used to clear a pending interrupt from - Timer 1. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM1_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() Timer 1 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - - */ -static __INLINE void MSS_TIM1_clear_irq( void ) -{ - TIMER->TIM1_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 2. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 2, disables its interrupt and sets the Timer 2 operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM2_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM2_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer2_IRQn ); /* Disable timer 2 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM2INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM2MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_start() function enables Timer 2 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM2_load_immediate() or MSS_TIM2_load_background() functions. - */ -static __INLINE void MSS_TIM2_start( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_stop() function disables Timer 2 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM2_stop( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_get_current_value() returns the current value of the Timer 2 - down-counter. - */ -static __INLINE uint32_t MSS_TIM2_get_current_value( void ) -{ - return TIMER->TIM2_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_immediate() function loads the value passed by the - load_value parameter into the Timer 2 down-counter. The counter will decrement - immediately from this value once Timer 2 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 2 interrupts are - enabled. This function is intended to be used when Timer 2 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 2 - down-counter will start decrementing. - */ -static __INLINE void MSS_TIM2_load_immediate( uint32_t load_value ) -{ - TIMER->TIM2_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_background() function is used to specify the value that will - be reloaded into the Timer 2 down-counter the next time the counter reaches - zero. This function is typically used when Timer 2 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 2. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 2 down-counter the next time the down-counter reaches zero. The Timer - 2 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM2_load_background( uint32_t load_value ) -{ - TIMER->TIM2_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_enable_irq() function is used to enable interrupt generation for - Timer 2. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer2_IRQHandler() function will be called when a Timer 2 - interrupt occurs. - Note: A Timer2_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own implementation - of the Timer2_IRQHandler() function, that will override the default - implementation, to suit your application. - */ -static __INLINE void MSS_TIM2_enable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 1U; - NVIC_EnableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_disable_irq() function is used to disable interrupt generation - for Timer 2. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM2_disable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 0U; - NVIC_DisableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_clear_irq() function is used to clear a pending interrupt from - Timer 2. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM2_clear_irq() function as part of your - implementation of the Timer2_IRQHandler() Timer 2 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - */ -static __INLINE void MSS_TIM2_clear_irq( void ) -{ - TIMER->TIM2_RIS = 1U; - NVIC_ClearPendingIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_init() function initializes the SmartFusion MSS Timer block for - use as a single 64-bit timer and selects the operating mode of the timer. This - function takes the MSS Timer block out of reset in case this hasn’t been done - already, stops the timer, disables its interrupts and sets the timer's - operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM64_init() will overwrite any previous - configuration of the MSS Timer as a 32-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM64_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* disable timer 1 interrupt within NVIC */ - NVIC_DisableIRQ( Timer2_IRQn ); /* disable timer 2 interrupt within NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 1U; /* switch to 64 bits mode */ - - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM64INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM64MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_start() function enables the 64-bit timer and starts its - down-counter decrementing from the load_value specified in previous calls to - the MSS_TIM64_load_immediate() or MSS_TIM64_load_background() functions. - */ -static __INLINE void MSS_TIM64_start( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_stop() function disables the 64-bit timer and stops its - down-counter decrementing. - */ -static __INLINE void MSS_TIM64_stop( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_get_current_value() is used to read the current value of the - 64-bit timer down-counter. - - @param load_value_u - The load_value_u parameter is a pointer to a 32-bit variable where the upper - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - @param load_value_l - The load_value_l parameter is a pointer to a 32-bit variable where the lower - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - Example: - @code - uint32_t current_value_u = 0; - uint32_t current_value_l = 0; - MSS_TIM64_get_current_value( ¤t_value_u, ¤t_value_l ); - @endcode - */ -static __INLINE void MSS_TIM64_get_current_value -( - uint32_t * load_value_u, - uint32_t * load_value_l -) -{ - *load_value_l = TIMER->TIM64_VAL_L; - *load_value_u = TIMER->TIM64_VAL_U; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_immediate() function loads the values passed by the - load_value_u and load_value_l parameters into the 64-bit timer down-counter. - The counter will decrement immediately from the concatenated 64-bit value once - the 64-bit timer is enabled. The MSS Timer will generate an interrupt when the - counter reaches zero if 64-bit timer interrupts are enabled. This function is - intended to be used when the 64-bit timer is configured for one-shot mode to - time a single delay. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - */ -static __INLINE void MSS_TIM64_load_immediate -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_LOADVAL_U = load_value_u; - TIMER->TIM64_LOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_background() function is used to specify the 64-bit value - that will be reloaded into the 64-bit timer down-counter the next time the - counter reaches zero. This function is typically used when the 64-bit timer is - configured for periodic mode operation to select or change the delay period - between the interrupts generated by the 64-bit timer. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next - time the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next time - the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - */ -static __INLINE void MSS_TIM64_load_background -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_BGLOADVAL_U = load_value_u; - TIMER->TIM64_BGLOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_enable_irq() function is used to enable interrupt generation for - the 64-bit timer. This function also enables the interrupt in the Cortex-M3 - interrupt controller. The Timer1_IRQHandler() function will be called when a - 64-bit timer interrupt occurs. - Note: A Timer1_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - Note: The MSS_TIM64_enable_irq() function enables and uses Timer 1 interrupts - for the 64-bit timer. Timer 2 interrupts remain disabled. - */ -static __INLINE void MSS_TIM64_enable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_disable_irq() function is used to disable interrupt generation - for the 64-bit timer. This function also disables the interrupt in the - Cortex-M3 interrupt controller. - */ -static __INLINE void MSS_TIM64_disable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_clear_irq() function is used to clear a pending interrupt from - the 64-bit timer. This function also clears the interrupt in the Cortex-M3 - interrupt controller. - Note: You must call the MSS_TIM64_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() 64-bit timer interrupt service - routine (ISR) in order to prevent the same interrupt event retriggering a - call to the ISR. - */ -static __INLINE void MSS_TIM64_clear_irq( void ) -{ - TIMER->TIM64_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_TIMER_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h deleted file mode 100644 index 337a91bb1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h +++ /dev/null @@ -1,427 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem (MSS) Watchdog bare metal software - * driver. - * - * SVN $Revision: 1888 $ - * SVN $Date: 2009-12-18 10:58:42 +0000 (Fri, 18 Dec 2009) $ - */ -/*=========================================================================*//** - @section intro_sec Introduction - The SmartFusion microcontroller subsystem (MSS) includes a watchdog timer used - to detect system lockups. - This driver provides a set of functions for controlling the MSS watchdog as - part of a bare metal system where no operating system is available. These - drivers can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS watchdog is covered by this - driver. There are no dependencies on the hardware flow for configuring the - SmartFusion MSS watchdog timer. - - @section theory_op Theory of Operation - The watchdog driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The watchdog driver functions are grouped into the following categories: - - Initialization and cnfiguration - - Reading the watchdog timer current value and status - - Refreshing the watchdog timer value - - Time-out and wake-up interrupts control - - The watchdog driver is initialized and configured through a call to the - MSS_WD_init() function. The parameters passed to MSS_WD_init() function - specify the watchdog timer configuration. The configuration parameters include - the value that will be reloaded into the watchdog timer down counter every - time the watchdog is refreshed. Also included as part of the configuration - parameters is the optional allowed refresh window. The allowed refresh window - specifies the maximum allowed current value of the watchdog timer at the time - of the watchdog is relaoded. Attempting to reload the watchdog timer when its - value is larger than the allowed refresh window will cause a reset or - interrupt depending on the watchdog configuration. The allowed refresh window - can be disabled by specifying an allowed refesh window equal or higher than - the watchdog reload value. - The MSS_WD_init() function must be called before any other watchdog driver - functions can be called with the exception of the MSS_WD_disable() function. - - The watchdog timer can be disabled using the MSS_WD_disable() function. Once - disabled, the watchdog timer can only be reenabled by a power-on reset. - - The watchdog timer current value can be read using the MSS_WD_current_value() - function. The watchdog status can be read using the MSS_WD_status() function. - These functions are typically required when using the watchdog configured with - an allowed refresh window to check if a watchdog reload is currently allowed. - - The watchdog timer value is reloaded using the MSS_WD_reload() function. The - value reloaded into the watchdog timer down counter is the value specified as - parameter to the MSS_WD_init() function. - - The watchdog timer can generate interrupts instead of resetting the system - when its down-counter timer expires. These time-out interrupts are controlled - using the following functions: - - MSS_WD_enable_timeout_irq - - MSS_WD_disable_timeout_irq - - MSS_WD_clear_timeout_irq - - The watchdog timer is external to the Cortex-M3 processor core and operates - even when the Cortex-M3 is in sleep mode. A wakeup interrupt can be generated - by the watchdog timer to wakeup the Cortext-M3 when the watchdog timer value - reaches the allowed refresh window while the Cortex-M3 is in sleep mode. The - watchdog driver provides the following functions to control wakeup interrupts: - - MSS_WD_enable_wakeup_irq - - MSS_WD_disable_wakeup_irq - - MSS_WD_clear_wakeup_irq - - *//*=========================================================================*/ - -#ifndef MSS_WATCHDOG_H_ -#define MSS_WATCHDOG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/***************************************************************************//** - * The MSS_WDOG_RESET_ON_TIMEOUT_MODE macro is one of the possible values for the - * mode parameter of the WD_init() function. It is used to specify that a reset - * should occur when the watchdog down counter times out. - */ -#define MSS_WDOG_RESET_ON_TIMEOUT_MODE (uint32_t)0x00000000U - -/***************************************************************************//** - * The MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE macro is one of the possible values for - * the mode parameter of function the WD_init() function. It is used to specify - * that a time out interrupt should occur when the watchdog down counter expires. - */ -#define MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_NO_WINDOW macro can be used as the value for the reload_window - * parameter of the WD_init() function. It is used to specify that no forbidden - * window will exist for the reload of the watchdog down counter. - */ -#define MSS_WDOG_NO_WINDOW (uint32_t)0xFFFFFFFFU - -/***************************************************************************//** - * The MSS_WDOG_CTRL_MODE_BIT_MASK macro is a bit mask specifying the bit used to - * set the watchdog's operating mode within the wathcdog's WDOGCONTROL register. - */ -#define MSS_WDOG_CTRL_MODE_BIT_MASK (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - * used to enable the time out interrupt within the watchdog's WDOGCONTROL - * register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - used to enable the wake up interrupt within the watchdog's WDOGCONTROL - register. - */ -#define MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the time out interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the wake up interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_REFRESH_KEY macro holds the magic value which will cause a reload - of the watchdog's down counter when written to the watchdog's WDOGREFRESH - register. - */ -#define MSS_WDOG_REFRESH_KEY (uint32_t)0xAC15DE42U - -/***************************************************************************//** - The MSS_WDOG_DISABLE_KEY macro holds the magic value which will disable the - watchdog if written to the watchdog's WDOGENABLE register. - */ -#define MSS_WDOG_DISABLE_KEY (uint32_t)0x4C6E55FAU - -/***************************************************************************//** - The MSS_WD_init() function initializes and configures the watchdog timer. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - watchdog's down counter when the reload command is issued through a call to - MSS_WD_reload(). - - @param reload_window - The reload_window parameter specifies the time window during which a reload - of the watchdog counter is allowed. A reload of the watchdog counter should - only be performed when the watchdog counter value is below the value of the - reload_window. Reloading the watchdog down counter value before it has - reached the reload_window will result in an interrupt or reset depending on - the watchdog's mode. - The reload window can be disabled by using WDOG_NO_WINDOW for this parameter. - - @param mode - The mode parameter specifies the watchdog's operating mode. It can be either - MSS_WDOG_RESET_ON_TIMEOUT_MODE or MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE. - MSS_WDOG_RESET_ON_TIMEOUT_MODE: a reset will occur if the watchdog timer - expires. - MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE: an NMI interrupt will occur if the - watchdog timer expires. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_init -( - uint32_t load_value, - uint32_t reload_window, - uint32_t mode -) -{ - /* Disable interrupts. */ - WATCHDOG->WDOGCONTROL &= ~(MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK); - - /* Clear any existing interrupts. */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - - /* Configure watchdog with new configuration passed as parameter. */ - WATCHDOG->WDOGMVRP = MSS_WDOG_NO_WINDOW; - WATCHDOG->WDOGLOAD = load_value; - WATCHDOG->WDOGCONTROL = (WATCHDOG->WDOGCONTROL & ~MSS_WDOG_CTRL_MODE_BIT_MASK) | (mode & MSS_WDOG_CTRL_MODE_BIT_MASK); - - /* Reload watchdog with new load value. */ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; - - /* Set allowed window. */ - WATCHDOG->WDOGMVRP = reload_window; -} - -/***************************************************************************//** - The MSS_WD_reload() function causes the watchdog to reload its down counter timer - with the load value configured through the call to WD_init(). This function - must be called regularly to avoid a system reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_reload( void ) -{ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; -} - -/***************************************************************************//** - The MSS_WD_disable() function disables the watchdog. - Please note that the watchdog can only be reenabled as a result of a power-on - reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable( void ) -{ - WATCHDOG->WDOGENABLE = MSS_WDOG_DISABLE_KEY; -} - -/***************************************************************************//** - The MSS_WD_current_value() function returns the current value of the watchdog's - down counter. - - @return - This function returns the current value of the watchdog down counter. - */ -static __INLINE uint32_t MSS_WD_current_value( void ) -{ - return WATCHDOG->WDOGVALUE; -} - -/***************************************************************************//** - The MSS_WD_status() function returns the status of the watchdog. - - @return - The MSS_WD_status() function returns the status of the watchdog. A value of - 0 indicates that watchdog counter has reached the forbidden window and that - a reload should not be done. A value of 1 indicates that the watchdog counter - is within the permitted window and that a reload is allowed. - */ -static __INLINE uint32_t MSS_WD_status( void ) -{ - return WATCHDOG->WDOGSTATUS; -} - -/***************************************************************************//** - The MSS_WD_enable_timeout_irq() function enables the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - The NMI_Handler() function will be called when a watchdog time out occurs. You - must provide the implementation of the NMI_Handler() function to suit your - application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_timeout_irq(); - for (;;) - { - main_task(); - } - } - - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The WD_disable_timeout_irq() function disables the generation of the NMI - interrupt when the watchdog times out. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_enable_wakeup_irq() function enables the SmartFusion wakeup - interrupt. The WdogWakeup_IRQHandler() function will be called when a wake up - interrupt occurs. You must provide the implementation of the WdogWakeup_IRQHandler() - function to suit your application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_wakeup_irq(); - for (;;) - { - main_task(); - cortex_sleep(); - } - } - - void WdogWakeup_IRQHandler( void ) - { - process_wakeup(); - MSS_WD_clear_wakeup_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; - NVIC_EnableIRQ( WdogWakeup_IRQn ); -} - -/***************************************************************************//** - The MSS_WD_disable_wakeup_irq() function disables the SmartFusion wakeup - interrupt. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_timeout_irq() function clears the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - Calling MSS_WD_clear_timeout_irq() results in clearing the Cortex-M3 NMI interrupt. - Note: The MSS_WD_clear_timeout_irq() function must be called as part of the - timeout interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. - - @return - The example below demonstrates the use of the MSS_WD_clear_timeout_irq() - function as part of the NMI interrupt service routine. - - Example: - @code - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_clear_timeout_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; - /* - * Perform a second write to ensure that the first write completed before - * returning from this function. This is to account for posted writes across - * the AHB matrix. The second write ensures that the first write has - * completed and that the interrupt line has been de-asserted by the time - * the function returns. Omitting the second write may result in a delay - * in the de-assertion of the interrupt line going to the Cortex-M3 and a - * retriggering of the interrupt. - */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_wakeup_irq() function clears the wakeup interrupt. - Note: The MSS_WD_clear_wakeup_irq() function must be called as part of the - wakeup interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. This function also clears the - interrupt in the Cortex-M3 interrupt controller through a call to - NVIC_ClearPendingIRQ(). - - @return - This function does not return a value. - - Example: - The example below demonstrates the use of the MSS_WD_clear_wakeup_irq() function - as part of the wakeup interrupt service routine. - @code - void WdogWakeup_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_WD_clear_wakeup_irq(); - } - @endcode -*/ -static __INLINE void MSS_WD_clear_wakeup_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - NVIC_ClearPendingIRQ( WdogWakeup_IRQn ); -} -#ifdef __cplusplus -} -#endif - -#endif /* MSS_WATCHDOG_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c deleted file mode 100644 index acd270690..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .c file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#include "../../drivers/mss_ace/mss_ace_configurator.h" -#include "ace_config.h" -#include "ace_handles.h" - -#include - - -/*----------------------------------------------------------------------------- -*AB Configuration -*---------------------------------------------------------------------------*/ -ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC] = -{ - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - } -}; - -/*----------------------------------------------------------------------------- -*Current Monitor Resistor Values -*---------------------------------------------------------------------------*/ -const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS] = -{ - 100000, /*CM0 ( USED AS CURRENT MONITOR ) */ - 1, /*CM1 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM2 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM3 ( NOT USED AS CURRENT MONITOR ) */ - 1 /*CM4 ( NOT USED AS CURRENT MONITOR ) */ -}; - -/*----------------------------------------------------------------------------- -*Analog Channels -*---------------------------------------------------------------------------*/ -/* Names*/ -const uint8_t g_ace_channel_0_name[] = "CurrentMonitor_0"; -const uint8_t g_ace_channel_1_name[] = "VoltageMonitor_0"; -const uint8_t g_ace_channel_2_name[] = "TemperatureMonitor_0"; - -/* Number of Flags per Channel*/ -#define CHANNEL_0_NB_OF_FLAGS 0 -#define CHANNEL_1_NB_OF_FLAGS 0 -#define CHANNEL_2_NB_OF_FLAGS 0 - -/* Input Channel to Flag Array Association*/ - -/* Channel Table*/ -ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS] = -{ - { - g_ace_channel_0_name, /* const uint8_t * p_sz_channel_name */ - CM0, /* adc_channel_id_t signal_id; */ - 14, /* uint16_t signal_ppe_offset */ - CHANNEL_0_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_1_name, /* const uint8_t * p_sz_channel_name */ - TM0, /* adc_channel_id_t signal_id; */ - 23, /* uint16_t signal_ppe_offset */ - CHANNEL_1_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_2_name, /* const uint8_t * p_sz_channel_name */ - TM1, /* adc_channel_id_t signal_id; */ - 32, /* uint16_t signal_ppe_offset */ - CHANNEL_2_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - } -}; - -/*----------------------------------------------------------------------------- -*Threshold Flags -*---------------------------------------------------------------------------*/ -/* Flag Names*/ -/* Flag Table*/ -#if ACE_NB_OF_PPE_FLAGS != 0 - ppe_flag_desc_t g_ppe_flags_desc_table[ACE_NB_OF_PPE_FLAGS] = - { - }; -#endif - -/*----------------------------------------------------------------------------- -*Sequencer Procedures -*---------------------------------------------------------------------------*/ -/* Procedure Name and Microcode*/ -const uint8_t g_ace_sse_proc_0_name[] = "ADC0_MAIN"; -const uint16_t g_ace_sse_proc_0_sequence[] = -{ - 0x1705, 0x1601, 0x155c, 0x14c4, - 0x0000, 0x152d, 0x8a0c, 0x1309, - 0x0000, 0x14c3, 0x0000, 0x8a04, - 0x152d, 0x970c, 0x132f, 0x0000, - 0x14c8, 0x0000, 0x9704, 0x1301, - 0x0000, 0x1002 -}; - -const uint8_t g_ace_sse_proc_1_name[] = "ADC1_MAIN"; -const uint16_t g_ace_sse_proc_1_sequence[] = -{ - 0x2705, 0x2601, 0x2200 -}; - -const uint8_t g_ace_sse_proc_2_name[] = "ADC2_MAIN"; -const uint16_t g_ace_sse_proc_2_sequence[] = -{ - 0x3705, 0x3601, 0x3200 -}; - - - -/* Procedure Table*/ -ace_procedure_desc_t g_sse_sequences_desc_table[ACE_NB_OF_SSE_PROCEDURES] = -{ - { - g_ace_sse_proc_0_name, /* const uint8_t * p_sz_proc_name */ - 2, /* uint16_t sse_loop_pc */ - 0, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_0_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_0_sequence, /* const uint16_t * sse_ucode */ - 0 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_1_name, /* const uint8_t * p_sz_proc_name */ - 24, /* uint16_t sse_loop_pc */ - 22, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_1_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_1_sequence, /* const uint16_t * sse_ucode */ - 1 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_2_name, /* const uint8_t * p_sz_proc_name */ - 27, /* uint16_t sse_loop_pc */ - 25, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_2_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_2_sequence, /* const uint16_t * sse_ucode */ - 2 /* uint8_t sse_pc_id */ - } -}; - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h deleted file mode 100644 index 8f8c584d8..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h +++ /dev/null @@ -1,37 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_CONFIG_H -#define ACE_CONFIG_H - - -/*----------------------------------------------------------------------------- -*COMMON VALUES -*---------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- -*AB VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_ADC 3 -#define ACE_NB_OF_CURRENT_MONITORS 5 -#define MAX_CHANNEL_NAME_LENGTH 20 -#define ACE_NB_OF_INPUT_CHANNELS 3 - -/*----------------------------------------------------------------------------- -*SSE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_SSE_PROCEDURES 3 -#define MAX_PROCEDURE_NAME_LENGTH 9 - -/*----------------------------------------------------------------------------- -*PPE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_PPE_FLAGS 0 -#define MAX_FLAG_NAME_LENGTH 0 - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h deleted file mode 100644 index 86782c013..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_HANDLES_H -#define ACE_HANDLES_H - - -/*----------------------------------------------------------------------------- -*Analog input channel handles -*---------------------------------------------------------------------------*/ -typedef enum { - CurrentMonitor_0 = 0, - VoltageMonitor_0, - TemperatureMonitor_0, - NB_OF_ACE_CHANNEL_HANDLES -} ace_channel_handle_t; - -/*----------------------------------------------------------------------------- -*Flag Handles -*---------------------------------------------------------------------------*/ -typedef enum { - NB_OF_ACE_FLAG_HANDLES = 0 -} ace_flag_handle_t; - -/*----------------------------------------------------------------------------- -*Procedure Handles -*---------------------------------------------------------------------------*/ -typedef enum { - ADC0_MAIN = 0, - ADC1_MAIN, - ADC2_MAIN, - NB_OF_ACE_PROCEDURE_HANDLES -} ace_procedure_handle_t; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c deleted file mode 100644 index 56ac19b10..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Library includes. */ -#include "mss_gpio.h" - -#define partstMAX_LEDS 8 - -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ -long x; - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - for( x = 0; x < partstMAX_LEDS; x++ ) - { - MSS_GPIO_config( ( mss_gpio_id_t ) x , MSS_GPIO_OUTPUT_MODE ); - } - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned portBASE_TYPE uxInterruptFlags; - - uxInterruptFlags = portSET_INTERRUPT_MASK_FROM_ISR(); - { - if( uxLED < partstMAX_LEDS ) - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( uxInterruptFlags ); -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << uxLED ) ) != 0UL ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partstMAX_LEDS ) - { - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << ulLED ) ) == 0UL ) - { - lReturn = pdTRUE; - } - } - taskEXIT_CRITICAL(); - } - - return lReturn; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c deleted file mode 100644 index 494396e4f..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" -#include "mss_ace.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "
\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - unsigned short usRawVoltage; - const ace_channel_handle_t xVoltageChannel = ( ace_channel_handle_t ) 0; - - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - usRawVoltage = ( unsigned short ) ACE_get_ppe_sample( xVoltageChannel ); - sprintf( uip_appdata, "LED

Raw voltage input is %d", pcStatus, usRawVoltage ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h deleted file mode 100644 index 004bbb59a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c deleted file mode 100644 index da9f56764..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how Cortex-M3 interrupts can - * interact with FreeRTOS tasks/timers. - * - * This simple demo project runs on the SmartFusion A2F-EVAL-KIT evaluation - * board, which is populated with an A2F200M3F SmartFusion mixed signal FPGA. - * The A2F200M3F incorporates a Cortex-M3 microcontroller. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" - - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x01UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x02UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void vLEDTimerCallback( TimerHandle_t xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses vLEDTimerCallback() as its callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* Maintains the current LED output state. */ -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( 5000 / portTICK_PERIOD_MS ),/* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - vLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. NOTE - accessing the LED port should use - a critical section because it is accessed from multiple tasks, and the - button interrupt - in this trivial case, for simplicity, the critical - section is omitted. */ - ulGPIOState |= mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - ulGPIOState &= ~mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the green LED. */ - if( ulReceivedValue == 100UL ) - { - /* NOTE - accessing the LED port should use a critical section - because it is accessed from multiple tasks, and the button interrupt - - in this trivial case, for simplicity, the critical section is - omitted. */ - if( ( ulGPIOState & mainTASK_CONTROLLED_LED ) != 0 ) - { - ulGPIOState &= ~mainTASK_CONTROLLED_LED; - } - else - { - ulGPIOState |= mainTASK_CONTROLLED_LED; - } - MSS_GPIO_set_outputs( ulGPIOState ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_1 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_2 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_3 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_4 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_5 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_6 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_7 , MSS_GPIO_OUTPUT_MODE ); - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeHeapSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amout of FreeRTOS heap that - remains unallocated. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ - return 0UL; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c deleted file mode 100644 index 2f8507d20..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c +++ /dev/null @@ -1,623 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c (this file) defines a comprehensive demo that creates many - * tasks, queues, semaphores and timers. It also demonstrates how Cortex-M3 - * interrupts can interact with FreeRTOS tasks/timers, and implements a simple - * and small interactive web server. - * - * This project runs on the SmartFusion A2F-EVAL-KIT evaluation board, which - * is populated with an A2F200M3F SmartFusion mixed signal FPGA. The A2F200M3F - * incorporates a Cortex-M3 microcontroller. - * - * The main() Function: - * main() creates two demo specific software timers, one demo specific queue, - * and three demo specific tasks. It then creates a whole host of 'standard - * demo' tasks/queues/semaphores, before starting the scheduler. The demo - * specific tasks and timers are described in the comments here. The standard - * demo tasks are described on the FreeRTOS.org web site. - * - * The standard demo tasks provide no specific functionality. They are - * included to both test the FreeRTOS port, and provide examples of how the - * various FreeRTOS API functions can be used. - * - * The Demo Specific Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Demo Specific Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The Demo Specific OLED Task: - * The OLED task is a very simple task that just scrolls a message across the - * OLED. Ideally this would be done in a timer, but the OLED driver accesses - * the I2C which is time consuming. - * - * The Demo Specific LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - * - * The Demo Specific "Check" Callback Function: - * This is called each time the 'check' timer expires. The check timer - * callback function inspects all the standard demo tasks to see if they are - * all executing as expected. The check timer is initially configured to - * expire every three seconds, but will shorted this to every 500ms if an error - * is ever discovered. The check timer callback toggles the LED defined by - * the mainCHECK_LED definition each time it executes. Therefore, if LED - * mainCHECK_LED is toggling every three seconds, then no error have been found. - * If LED mainCHECK_LED is toggling every 500ms, then at least one errors has - * been found. The task in which the error was discovered is displayed at the - * bottom of the "task stats" page that is served by the embedded web server. - * - * The Demo Specific Idle Hook Function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The Web Server Task: - * The IP address used by the SmartFusion target is configured by the - * definitions configIP_ADDR0 to configIP_ADDR3, which are located in the - * FreeRTOSConfig.h header file. See the documentation page for this example - * on the http://www.FreeRTOS.org web site for further connection information. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries includes. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" -#include "mss_timer.h" -#include "mss_ace.h" -#include "oled.h" - -/* Common demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "TimerDemo.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggled by the check timer callback function. */ -#define mainCHECK_LED 0x07UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x06UL - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x05UL - -/* Constant used by the standard timer test functions. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/* Priorities used by the various different tasks. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainOLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The period at which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the OLED timer will expire. Each time it expires, it's -callback function updates the OLED text. */ -#define mainOLED_PERIOD_MS ( 75UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 500UL / portTICK_PERIOD_MS ) - -/* The LED will remain on until the button has not been pushed for a full -5000ms. */ -#define mainLED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* A zero block time. */ -#define mainDONT_BLOCK ( 0UL ) -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch the red LED - * off. - */ -static void prvLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * This is not a 'standard' partest function, so the prototype is not in - * partest.h, and is instead included here. - */ -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * A very simply task that does nothing but scroll the OLED display. Ideally - * this would be done within a timer, but it accesses the I2C port which is - * time consuming. - */ -static void prvOLEDTask( void * pvParameters); - -/*-----------------------------------------------------------*/ - -/* The queue used by both application specific demo tasks defined in this file. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses prvLEDTimerCallback() as it's callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* The check timer. This uses prvCheckTimerCallback() as it's callback -function. */ -static TimerHandle_t xCheckTimer = NULL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the check timer callback. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the three application specific demo tasks, as described in the - comments at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - xTaskCreate( prvOLEDTask, "OLED", configMINIMAL_STACK_SIZE, NULL, mainOLED_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( mainLED_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - /* Create a lot of 'standard demo' tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - - /* Create the web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* The suicide tasks must be created last, as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given - time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ - /* Check the standard demo tasks are running without error. Latch the - latest reported error in the pcStatusMessage character pointer. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - - if( xAreTimerDemoTasksStillRunning( ( mainCHECK_TIMER_PERIOD_MS ) ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo"; - } - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in pcStatusMessage? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( pcStatusMessage != NULL ) - { - /* This call to xTimerChangePeriod() uses a zero block time. Functions - called from inside of a timer callback function must *never* attempt - to block. */ - xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdFALSE ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - vParTestSetLEDFromISR( mainTIMER_CONTROLLED_LED, pdTRUE ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* The timer command queue will have been filled when the timer test tasks - were created in main() (this is part of the test they perform). Therefore, - while the check timer can be created in main(), it cannot be started from - main(). Once the scheduler has started, the timer service task will drain - the command queue, and now the check timer can be started successfully. */ - xTimerStart( xCheckTimer, portMAX_DELAY ); - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_CONTROLLED_LED ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvOLEDTask( void * pvParameters) -{ -static struct oled_data xOLEDData; -static unsigned char ucOffset1 = 0, ucOffset2 = 5; -static TickType_t xLastScrollTime = 0UL; - - /* Initialise the display. */ - OLED_init(); - - /* Initialise the parts of the oled_data structure that do not change. */ - xOLEDData.line1 = FIRST_LINE; - xOLEDData.string1 = " www.FreeRTOS.org"; - xOLEDData.line2 = SECOND_LINE; - xOLEDData.string2 = " www.FreeRTOS.org"; - xOLEDData.contrast_val = OLED_CONTRAST_VAL; - xOLEDData.on_off = OLED_HORIZ_SCROLL_OFF; - xOLEDData.column_scrool_per_step = OLED_HORIZ_SCROLL_STEP; - xOLEDData.start_page = OLED_START_PAGE; - xOLEDData.time_intrval_btw_scroll_step = OLED_HORIZ_SCROLL_TINVL; - xOLEDData.end_page = OLED_END_PAGE; - - - /* Initialise the last scroll time. This only needs to be done once, - because from this point on it will get automatically updated in the - xTaskDelayUntil() API function. */ - xLastScrollTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Wait until it is time to update the OLED again. */ - vTaskDelayUntil( &xLastScrollTime, mainOLED_PERIOD_MS ); - - xOLEDData.char_offset1 = ucOffset1++; - xOLEDData.char_offset2 = ucOffset2++; - - OLED_write_data( &xOLEDData, BOTH_LINES ); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Configure the GPIO for the LEDs. */ - vParTestInitialise(); - - /* ACE Initialization */ - ACE_init(); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeStackSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amount of FreeRTOS heap that - remains unallocated. */ - xFreeStackSpace = xPortGetFreeHeapSize(); - - if( xFreeStackSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because - of the task priorities the pointer could change it will be atomic if not - near atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ -const unsigned long ulMax32BitValue = 0xffffffffUL; - - MSS_TIM64_init( MSS_TIMER_PERIODIC_MODE ); - MSS_TIM64_load_immediate( ulMax32BitValue, ulMax32BitValue ); - MSS_TIM64_start(); -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ -unsigned long long ullCurrentValue; -const unsigned long long ulMax64BitValue = 0xffffffffffffffffULL; -unsigned long *pulHighWord, *pulLowWord; - - pulHighWord = ( unsigned long * ) &ullCurrentValue; - pulLowWord = pulHighWord++; - - MSS_TIM64_get_current_value( ( uint32_t * ) pulHighWord, ( uint32_t * ) pulLowWord ); - - /* Convert the down count into an upcount. */ - ullCurrentValue = ulMax64BitValue - ullCurrentValue; - - /* Scale to a 32bit number of suitable frequency. */ - ullCurrentValue >>= 13; - - /* Just return 32 bits. */ - return ( unsigned long ) ullCurrentValue; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c deleted file mode 100644 index fdd2d27d0..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c +++ /dev/null @@ -1,412 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Hardware driver includes. */ -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac.h" - -/* The buffer used by the uIP stack to both receive and send. In this case, -because the Ethernet driver has been modified to be zero copy - the uip_buf -variable is just a pointer to an Ethernet buffer, and not a buffer in its own -right. */ -extern unsigned char *uip_buf; - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* The length of the queue used to send events from timers or the Ethernet -driver to the uIP stack. */ -#define uipEVENT_QUEUE_LENGTH 10 - -/* A block time of zero simply means "don't block". */ -#define uipDONT_BLOCK 0UL - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation required to ready the stack for http - * processing. - */ -static void prvInitialise_uIP( void ); - -/* - * Handles Ethernet interrupt events. - */ -static void prvEMACEventListener( unsigned long ulISREvents ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Initialise the MAC hardware. - */ -static void prvInitEmac( void ); - -/* - * Write data to the Ethener. Note that this actually writes data twice for the - * to get around delayed ack issues when communicating with a non real-time - * peer (for example, a Windows machine). - */ -void vEMACWrite( void ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL, ulUIP_Events = 0UL; -long lPacketLength; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - - /* Initialise the uIP stack, configuring for web server usage. */ - prvInitialise_uIP(); - - /* Initialise the MAC and PHY. */ - prvInitEmac(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - lPacketLength = MSS_MAC_rx_packet(); - - /* Statements to be executed if data has been received on the Ethernet. */ - if( ( lPacketLength > 0 ) && ( uip_buf != NULL ) ) - { - uip_len = ( u16_t ) lPacketLength; - - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - /* Clear the RX event latched in ulUIP_Events - if one was latched. */ - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - - /* Statements to be executed if the TCP/IP period timer has expired. */ - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - if( uip_buf != NULL ) - { - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - } - - /* Statements to be executed if the ARP timer has expired. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - /* If all latched events have been cleared - block until another event - occurs. */ - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -uip_ipaddr_t xIPAddr; -TimerHandle_t xARPTimer, xPeriodicTimer; - - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( uipEVENT_QUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 500UL / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - /* Sanity check that the timers were indeed created. */ - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - /* These commands will block indefinitely until they succeed, so there is - no point in checking their return values. */ - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvEMACEventListener( unsigned long ulISREvents ) -{ -long lHigherPriorityTaskWoken = pdFALSE; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Sanity check that the event queue was indeed created. */ - configASSERT( xEMACEventQueue ); - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_SEND ) != 0UL ) - { - /* An Ethernet Tx event has occurred. */ - MSS_MAC_FreeTxBuffers(); - } - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_RECEIVED ) != 0UL ) - { - /* An Ethernet Rx event has occurred. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvInitEmac( void ) -{ -const unsigned char ucPHYAddress = 1; - - /* Initialise the MAC and PHY hardware. */ - MSS_MAC_init( ucPHYAddress ); - - /* Register the event listener. The Ethernet interrupt handler will call - this listener whenever an Rx or a Tx interrupt occurs. */ - MSS_MAC_set_callback( ( MSS_MAC_callback_t ) prvEMACEventListener ); - - /* Setup the EMAC and the NVIC for MAC interrupts. */ - NVIC_SetPriority( EthernetMAC_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( EthernetMAC_IRQn ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -const long lMaxAttempts = 10; -long lAttempt; -const TickType_t xShortDelay = ( 5 / portTICK_PERIOD_MS ); - - /* Try to send data to the Ethernet. Keep trying for a while if data cannot - be sent immediately. Note that this will actually cause the data to be sent - twice to get around delayed ACK problems when communicating with non real- - time TCP/IP stacks (such as a Windows machine). */ - for( lAttempt = 0; lAttempt < lMaxAttempts; lAttempt++ ) - { - if( MSS_MAC_tx_packet( uip_len ) != 0 ) - { - break; - } - else - { - vTaskDelay( xShortDelay ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. As this callback is assigned to both the ARP and Periodic timers, the - first thing to do is ascertain which timer it was that actually expired. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 3, 1 ); - vParTestSetLED( 4, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h deleted file mode 100644 index 53cc52fc2..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( 96000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 8 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* Run time stats gathering definitions. */ -#ifdef __ICCARM__ - /* The #ifdef just prevents this C specific syntax from being included in - assembly files. */ - void vMainConfigureTimerForRunTimeStats( void ); - unsigned long ulMainGetRunTimeCounterValue( void ); -#endif -#define configGENERATE_RUN_TIME_STATS 1 -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulMainGetRunTimeCounterValue() - -/* Cortex-M specific definitions. */ -#ifdef __NVIC_PRIO_BITS - /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 4 /* 15 priority levels */ -#endif - -/* The lowest interrupt priority that can be used in a call to a "set priority" -function. */ -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf - -/* The highest interrupt priority that can be used by any interrupt service -routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL -INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER -PRIORITY THAN THIS! (higher priorities are lower numeric values. */ -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* Interrupt priorities used by the kernel port layer itself. These are generic -to all Cortex-M ports, and do not rely on any particular library functions. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -/* Normal assert() semantics without relying on the provision of an assert.h -header file. */ -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS -standard names. */ -#define vPortSVCHandler SVC_Handler -#define xPortPendSVHandler PendSV_Handler -#define xPortSysTickHandler SysTick_Handler - -/****************************************************************************** - * Network configuration constants follow from here. - *****************************************************************************/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#define configPHY_ADDRESS 1 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf deleted file mode 100644 index b8a5c84af..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf +++ /dev/null @@ -1,48 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00000000; -define symbol __ICFEDIT_region_ROM_end__ = 0x00080000; -define symbol __ICFEDIT_region_RAM_start__ = 0x1FFF0410; -define symbol __ICFEDIT_region_RAM_end__ = 0x20000000; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x1000; -define symbol __ICFEDIT_size_heap__ = 0x200; -/**** End of ICF editor section. ###ICF###*/ - -define symbol __region_RAM2_start__ = 0x20000000; -define symbol __region_RAM2_end__ = 0x20010000; - -define exported symbol __VECTOR_TABLE = 0x00000000; -define exported symbol __VECTOR_RAM = 0x1fff0000; - -define exported symbol __BOOT_STACK_ADDRESS = __region_RAM2_end__ - 8; //0x2000FFF8; - -define symbol __code_start__ = 0x00000410; - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__] | mem:[from __region_RAM2_start__ to __region_RAM2_end__]; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -initialize manually { readwrite }; -initialize manually { section .data}; -initialize manually { section .textrw }; -do not initialize { section .noinit }; - -define block CodeRelocate { section .textrw_init }; -define block CodeRelocateRam { section .textrw }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; -place at address mem:__code_start__ { readonly section .noinit }; - -place in ROM_region { readonly, block CodeRelocate}; - -place in RAM_region { readwrite, block CodeRelocateRam, - block CSTACK, block HEAP }; - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h deleted file mode 100644 index afcca5ee8..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * File: assert.h - * Purpose: Provide macro for software assertions - * - * Notes: assert_failed() defined in assert.c - */ - -#ifndef _ASSERT_H_ -#define _ASSERT_H_ - -/********************************************************************/ - -void assert_failed(char *, int); - -#ifdef DEBUG_PRINT -#define ASSERT(expr) \ - if (!(expr)) \ - assert_failed(__FILE__, __LINE__) -#else -#define ASSERT(expr) -#endif - -/********************************************************************/ -#endif /* _ASSERT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h deleted file mode 100644 index c4265cc83..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * File: common.h - * Purpose: File to be included by all project files - * - * Notes: - */ - -#ifndef _COMMON_H_ -#define _COMMON_H_ - -/********************************************************************/ - -/* - * Debug prints ON (#define) or OFF (#undef) - */ -#define DEBUG -#define DEBUG_PRINT - -/* - * Include the generic CPU header file - */ -#include "arm_cm4.h" - -/* - * Include the platform specific header file - */ -#if (defined(TWR_K40X256)) - #include "k40_tower.h" -#elif (defined(TWR_K53N512)) - #include "k53_tower.h" -#elif (defined(TWR_K60N512)) - #include "k60_tower.h" -#else - #error "No valid platform defined" -#endif - -/* - * Include the cpu specific header file - */ -#if (defined(CPU_MK40N512VMD100)) - #include -#elif (defined(CPU_MK53N512VMD100)) - #include -#elif (defined(CPU_MK60N512VMD100)) - #include -#else - #error "No valid CPU defined" -#endif - - -/* - * Include any toolchain specfic header files - */ -#if (defined(CW)) - #include "cw.h" -#elif (defined(IAR)) - #include "iar.h" -#else -#warning "No toolchain specific header included" -#endif - -/* - * Include common utilities - */ -#include "assert.h" -#include "io.h" -#include "startup.h" -#include "stdlib.h" - -#if (defined(IAR)) - #include "intrinsics.h" -#endif - -/********************************************************************/ - -#endif /* _COMMON_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h deleted file mode 100644 index 884915657..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * File: iar.h - * Purpose: Define constants used by IAR toolchain - * - * Notes: - * - */ - -#ifndef _IAR_H_ -#define _IAR_H_ - -/********************************************************************/ - -/********************************************************************/ - -#endif /* _IAR_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h deleted file mode 100644 index 7b95595d5..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * File: io.h - * Purpose: Serial Input/Output routines - * - */ - -#ifndef _IO_H -#define _IO_H - -/********************************************************************/ - -char -in_char(void); - -void -out_char(char); - -int -char_present(void); - -int -printf(const char *, ... ); - -int -sprintf(char *, const char *, ... ); - -/********************************************************************/ - -#endif diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h deleted file mode 100644 index b8d53e905..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * File: queue.h - * Purpose: Implement a first in, first out linked list - * - * Notes: - */ - -#ifndef _QUEUE_H_ -#define _QUEUE_H_ - -/********************************************************************/ - -/* - * Individual queue node - */ -typedef struct NODE -{ - struct NODE *next; -} QNODE; - -/* - * Queue Struture - linked list of qentry items - */ -typedef struct -{ - QNODE *head; - QNODE *tail; -} QUEUE; - -/* - * Functions provided by queue.c - */ -void -queue_init(QUEUE *); - -int -queue_isempty(QUEUE *); - -void -queue_add(QUEUE *, QNODE *); - -QNODE* -queue_remove(QUEUE *); - -QNODE* -queue_peek(QUEUE *); - -void -queue_move(QUEUE *, QUEUE *); - -/********************************************************************/ - -#endif /* _QUEUE_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c deleted file mode 100644 index 0e1ba1f2c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * File: startup.c - * Purpose: Generic Kinetis startup code - * - * Notes: - */ - -#include "common.h" - -#if (defined(IAR)) - #pragma section = ".data" - #pragma section = ".data_init" - #pragma section = ".bss" - #pragma section = "CodeRelocate" - #pragma section = "CodeRelocateRam" -#endif - -/********************************************************************/ -void -common_startup(void) -{ - -#if (defined(CW)) - extern char __START_BSS[]; - extern char __END_BSS[]; - extern uint32 __DATA_ROM[]; - extern uint32 __DATA_RAM[]; - extern char __DATA_END[]; -#endif - - /* Declare a counter we'll use in all of the copy loops */ - uint32 n; - - /* Declare pointers for various data sections. These pointers - * are initialized using values pulled in from the linker file - */ - uint8 * data_ram, * data_rom, * data_rom_end; - uint8 * bss_start, * bss_end; - - - /* Get the addresses for the .data section (initialized data section) */ - #if (defined(CW)) - data_ram = (uint8 *)__DATA_RAM; - data_rom = (uint8 *)__DATA_ROM; - data_rom_end = (uint8 *)__DATA_END; /* This is actually a RAM address in CodeWarrior */ - n = data_rom_end - data_ram; - #elif (defined(IAR)) - data_ram = __section_begin(".data"); - data_rom = __section_begin(".data_init"); - data_rom_end = __section_end(".data_init"); - n = data_rom_end - data_rom; - #endif - - /* Copy initialized data from ROM to RAM */ - while (n--) - *data_ram++ = *data_rom++; - - - /* Get the addresses for the .bss section (zero-initialized data) */ - #if (defined(CW)) - bss_start = (uint8 *)__START_BSS; - bss_end = (uint8 *)__END_BSS; - #elif (defined(IAR)) - bss_start = __section_begin(".bss"); - bss_end = __section_end(".bss"); - #endif - - - - - /* Clear the zero-initialized data section */ - n = bss_end - bss_start; - while(n--) - *bss_start++ = 0; - - /* Get addresses for any code sections that need to be copied from ROM to RAM. - * The IAR tools have a predefined keyword that can be used to mark individual - * functions for execution from RAM. Add "__ramfunc" before the return type in - * the function prototype for any routines you need to execute from RAM instead - * of ROM. ex: __ramfunc void foo(void); - */ - #if (defined(IAR)) - uint8* code_relocate_ram = __section_begin("CodeRelocateRam"); - uint8* code_relocate = __section_begin("CodeRelocate"); - uint8* code_relocate_end = __section_end("CodeRelocate"); - - /* Copy functions from ROM to RAM */ - n = code_relocate_end - code_relocate; - while (n--) - *code_relocate_ram++ = *code_relocate++; - #endif -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h deleted file mode 100644 index 8fc5bfae7..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * File: startup.h - * Purpose: Determine cause of Reset and which processor is running - * - * Notes: - */ - -#ifndef _STARTUP_H_ -#define _STARTUP_H_ - -/********************************************************************/ - -void common_startup(void); - -/********************************************************************/ - -#endif /* _STARTUP_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c deleted file mode 100644 index cda275572..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * File: arm_cm4.c - * Purpose: Generic high-level routines for ARM Cortex M4 processors - * - * Notes: - */ - -#include "common.h" - -/***********************************************************************/ -/* - * Configures the ARM system control register for STOP (deep sleep) mode - * and then executes the WFI instruction to enter the mode. - * - * Parameters: - * none - * - * Note: Might want to change this later to allow for passing in a parameter - * to optionally set the sleep on exit bit. - */ - -void stop (void) -{ - /* Set the SLEEPDEEP bit to enable deep sleep mode (STOP) */ - SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK; - - /* WFI instruction will start entry into STOP mode */ - asm("WFI"); -} -/***********************************************************************/ -/* - * Configures the ARM system control register for WAIT (sleep) mode - * and then executes the WFI instruction to enter the mode. - * - * Parameters: - * none - * - * Note: Might want to change this later to allow for passing in a parameter - * to optionally set the sleep on exit bit. - */ - -void wait (void) -{ - /* Clear the SLEEPDEEP bit to make sure we go into WAIT (sleep) mode instead - * of deep sleep. - */ - SCB_SCR &= ~SCB_SCR_SLEEPDEEP_MASK; - - /* WFI instruction will start entry into WAIT mode */ - asm("WFI"); -} -/***********************************************************************/ -/* - * Change the value of the vector table offset register to the specified value. - * - * Parameters: - * vtor new value to write to the VTOR - */ - -void write_vtor (int vtor) -{ - /* Write the VTOR with the new value */ - SCB_VTOR = vtor; -} -/***********************************************************************/ -/* - * Initialize the NVIC to enable the specified IRQ. - * - * NOTE: The function only initializes the NVIC to enable a single IRQ. - * Interrupts will also need to be enabled in the ARM core. This can be - * done using the EnableInterrupts macro. - * - * Parameters: - * irq irq number to be enabled (the irq number NOT the vector number) - */ - -void enable_irq (int irq) -{ - int div; - - /* Determine which of the NVICISERs corresponds to the irq */ - div = irq/32; - - switch (div) - { - case 0x0: - NVICICPR0 = 1 << (irq%32); - NVICISER0 = 1 << (irq%32); - break; - case 0x1: - NVICICPR1 = 1 << (irq%32); - NVICISER1 = 1 << (irq%32); - break; - case 0x2: - NVICICPR2 = 1 << (irq%32); - NVICISER2 = 1 << (irq%32); - break; - } -} -/***********************************************************************/ -/* - * Initialize the NVIC to disable the specified IRQ. - * - * NOTE: The function only initializes the NVIC to disable a single IRQ. - * If you want to disable all interrupts, then use the DisableInterrupts - * macro instead. - * - * Parameters: - * irq irq number to be disabled (the irq number NOT the vector number) - */ - -void disable_irq (int irq) -{ - int div; - - /* Determine which of the NVICICERs corresponds to the irq */ - div = irq/32; - - switch (div) - { - case 0x0: - NVICICER0 = 1 << (irq%32); - break; - case 0x1: - NVICICER1 = 1 << (irq%32); - break; - case 0x2: - NVICICER2 = 1 << (irq%32); - break; - } -} -/***********************************************************************/ -/* - * Initialize the NVIC to set specified IRQ priority. - * - * NOTE: The function only initializes the NVIC to set a single IRQ priority. - * Interrupts will also need to be enabled in the ARM core. This can be - * done using the EnableInterrupts macro. - * - * Parameters: - * irq irq number to be enabled (the irq number NOT the vector number) - * prio irq priority. 0-15 levels. 0 max priority - */ - -void set_irq_priority (int irq, int prio) -{ - /*irq priority pointer*/ - uint8 *prio_reg; - - /* Determine which of the NVICIPx corresponds to the irq */ - prio_reg = (uint8 *)(((uint32)&NVICIP0) + irq); - /* Assign priority to IRQ */ - *prio_reg = ( (prio&0xF) << (8 - ARM_INTERRUPT_LEVEL_BITS) ); -} -/***********************************************************************/ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h deleted file mode 100644 index 84ad25eb1..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * File: arm_cm4.h - * Purpose: Definitions common to all ARM Cortex M4 processors - * - * Notes: - */ - -#ifndef _CPU_ARM_CM4_H -#define _CPU_ARM_CM4_H - -#include "common.h" - -/*ARM Cortex M4 implementation for interrupt priority shift*/ -#define ARM_INTERRUPT_LEVEL_BITS 4 - -/***********************************************************************/ -// function prototypes for arm_cm4.c -void stop (void); -void wait (void); -void write_vtor (int); -void enable_irq (int); -void disable_irq (int); -void set_irq_priority (int, int); - -/***********************************************************************/ - /*!< Macro to enable all interrupts. */ -#define EnableInterrupts asm(" CPSIE i"); - - /*!< Macro to disable all interrupts. */ -#define DisableInterrupts asm(" CPSID i"); -/***********************************************************************/ - - -/* - * Misc. Defines - */ -#ifdef FALSE -#undef FALSE -#endif -#define FALSE (0) - -#ifdef TRUE -#undef TRUE -#endif -#define TRUE (1) - -#ifdef NULL -#undef NULL -#endif -#define NULL (0) - -#ifdef ON -#undef ON -#endif -#define ON (1) - -#ifdef OFF -#undef OFF -#endif -#define OFF (0) - -/***********************************************************************/ -/* - * The basic data types - */ -typedef unsigned char uint8; /* 8 bits */ -typedef unsigned short int uint16; /* 16 bits */ -typedef unsigned long int uint32; /* 32 bits */ - -typedef char int8; /* 8 bits */ -typedef short int int16; /* 16 bits */ -typedef int int32; /* 32 bits */ - -typedef volatile int8 vint8; /* 8 bits */ -typedef volatile int16 vint16; /* 16 bits */ -typedef volatile int32 vint32; /* 32 bits */ - -typedef volatile uint8 vuint8; /* 8 bits */ -typedef volatile uint16 vuint16; /* 16 bits */ -typedef volatile uint32 vuint32; /* 32 bits */ - -// function prototype for main function -void main(void); - -/***********************************************************************/ -#endif /* _CPU_ARM_CM4_H */ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s deleted file mode 100644 index bc2ec885c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s +++ /dev/null @@ -1,36 +0,0 @@ -/* - * File: crt0.s - * Purpose: Lowest level routines for Kinetis. - * - * Notes: - * - */ - -; AREA Crt0, CODE, READONLY ; name this block of code - - - - SECTION .noinit : CODE - EXPORT __startup -__startup - - MOV r0,#0 ; Initialize the GPRs - MOV r1,#0 - MOV r2,#0 - MOV r3,#0 - MOV r4,#0 - MOV r5,#0 - MOV r6,#0 - MOV r7,#0 - MOV r8,#0 - MOV r9,#0 - MOV r10,#0 - MOV r11,#0 - MOV r12,#0 - import start - BL start ; call the C code -__done - B __done - - - END diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h deleted file mode 100644 index 19f4fccd1..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * File: dma_channels.h - * Purpose: DMA request macros for use on Kinetis processors. - * This file gives default DMA channel assignments - * for all of the possible Kinetis module DMA requests. - * - * - * Notes: There are more DMA requests than DMA channels, so - * care should be taken to make sure that DMA channel - * assignments are unique for the modules that are - * being used at any time. - */ - -#ifndef _DMA_CHANNELS_H -#define _DMA_CHANNELS_H - -/********************************************************************/ -/* NOTE: There are more DMA requests than DMA channels, so - * care should be taken to make sure that DMA channel - * assignments are unique for the modules that are - * being used at any time. - * - * It is recommended that you read the appropriate DMAMUX_CHCFGn - * register before updating it to verify it is 0x0. If the - * DMAMUX_CHCFGn register is not zero, then that indicates the - * selected DMA channel might already be in use by another peripheral - * (a more specific test would be to look for DMAMUX_CHCFGn[ENBL] set). - * The module's DMA configuration routine can return an error - * when this situation is detected. - */ - - -/* Default DMA channel assignments and module request macros */ - -/* UARTs */ -#define DMA_UART0RX_CH 0 -#define DMA_UART0TX_CH 1 - -#define DMA_UART1RX_CH 2 -#define DMA_UART1TX_CH 3 - -#define DMA_UART2RX_CH 10 -#define DMA_UART2TX_CH 11 - -#define DMA_UART3RX_CH 12 -#define DMA_UART3TX_CH 13 - -#define DMA_UART4RX_CH 6 -#define DMA_UART4TX_CH 7 - -#define DMA_UART5RX_CH 8 -#define DMA_UART5TX_CH 9 - -/* SSI/SAI */ -#define DMA_SSI0RX_CH 4 -#define DMA_SSI0TX_CH 5 - -/* DSPIs */ -#define DMA_DSPI0RX_CH 6 -#define DMA_DSPI0TX_CH 7 - -#define DMA_DSPI1RX_CH 8 -#define DMA_DSPI1TX_CH 9 - -#define DMA_DSPI2RX_CH 14 -#define DMA_DSPI2TX_CH 15 - -/* I2Cs */ -#define DMA_I2C0_CH 7 -#define DMA_I2C1_CH 2 - -/* FTMs */ -#define DMA_FTM0CH0_CH 5 -#define DMA_FTM0CH1_CH 6 -#define DMA_FTM0CH2_CH 3 -#define DMA_FTM0CH3_CH 4 -#define DMA_FTM0CH4_CH 12 -#define DMA_FTM0CH5_CH 13 -#define DMA_FTM0CH6_CH 14 -#define DMA_FTM0CH7_CH 15 - -#define DMA_FTM1CH0_CH 10 -#define DMA_FTM1CH1_CH 11 - -#define DMA_FTM2CH0_CH 0 -#define DMA_FTM2CH1_CH 1 - -/* Ethernet timers */ -#define DMA_ENETTMR0_CH 4 -#define DMA_ENETTMR1_CH 8 -#define DMA_ENETTMR2_CH 0 -#define DMA_ENETTMR3_CH 15 - -/* ADCs */ -#define DMA_ADC0_CH 12 -#define DMA_ADC1_CH 3 - -/* HSCMPs */ -#define DMA_HSCMP0_CH 13 -#define DMA_HSCMP1_CH 2 -#define DMA_HSCMP2_CH 9 - -/* 12-bit DAC */ -#define DMA_12bDAC0_CH 14 - -/* CMT */ -#define DMA_CMT_CH 5 - -/* PDB */ -#define DMA_PDB_CH 10 - -/* GPIO Ports */ -#define DMA_GPIOPORTA_CH 15 -#define DMA_GPIOPORTB_CH 0 -#define DMA_GPIOPORTC_CH 1 -#define DMA_GPIOPORTD_CH 11 -#define DMA_GPIOPORTE_CH 8 - -/********************************************************************/ - -#endif /* _DMA_CHANNELS_H */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h deleted file mode 100644 index 84e39e43b..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * File: k60_tower.h - * Purpose: Definitions for the Kinetis K60 tower card - * - * Notes: - */ - -#ifndef __K60_TOWER_H__ -#define __K60_TOWER_H__ - -#include "mcg.h" - -/********************************************************************/ - -/* Global defines to use for all boards */ -#define DEBUG_PRINT - - - -/* Defines specific to the K60 tower board */ - - -/* Define for the CPU on the K60 board */ -#define CPU_MK60N512VMD100 - -/* - * System Bus Clock Info - */ -#define K60_CLK 1 -#define REF_CLK XTAL8 /* value isn't used, but we still need something defined */ -#define CORE_CLK_MHZ PLL96 /* 96MHz is only freq tested for a clock input*/ - -/* - * Serial Port Info - */ - -/* - * Select the serial port that is being used below. Only one of the - * options should be uncommented at any time. - */ -//#define SERIAL_CARD // use this option for serial port on TWR-SER -#define OSJTAG // use this option for serial port over the OS-JTAG circuit - -#if (defined(SERIAL_CARD)) - #define TERM_PORT UART3_BASE_PTR - #define TERMINAL_BAUD 115200 - #undef HW_FLOW_CONTROL -#elif (defined(OSJTAG)) - #define TERM_PORT UART5_BASE_PTR - #define TERMINAL_BAUD 115200 - #undef HW_FLOW_CONTROL -#else - #error "No valid serial port defined" -#endif - - -#endif /* __K60_TOWER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h deleted file mode 100644 index cbbba8589..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h +++ /dev/null @@ -1,69 +0,0 @@ -/********************************************************************************/ -/* FILENAME RegisterFile.h */ -/* The current release of the documentation and header files does not include - * the system register file or the VBAT register file. This header file - * adds support for accessing both register files. - * - * Once the manual is updated to include the register files, this file - * will become obsolete. - */ -/********************************************************************************/ - -/* Register File - Peripheral instance base addresses */ -/* Peripheral System Register File base pointer */ -#define RFSYS_DATA_BASE_PTR ((RFDATA_MemMapPtr)0x40041000u) -/* Peripheral VBAT Register File base pointer */ -#define RFVBAT_DATA_BASE_PTR ((RFDATA_MemMapPtr)0x4003E000u) - - typedef struct RFDATA_MemMap { - uint32_t RFDATA [32]; /*!< Register file n, array offset: 0x0, array step: 0x4 */ - - -} volatile *RFDATA_MemMapPtr; - -/* ---------------------------------------------------------------------------- - -- Register file - Register accessor macros - ---------------------------------------------------------------------------- */ - -/* Register file - Register accessors */ -#define RFSYS_DATA_REG(base,index) ((base)->RFDATA[index]) -#define RFVBAT_DATA_REG(base,index) ((base)->RFDATA[index]) - -#define RFSYS_DATA0 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,0 ) -#define RFSYS_DATA1 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,1 ) -#define RFSYS_DATA2 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,2 ) -#define RFSYS_DATA3 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,3 ) -#define RFSYS_DATA4 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,4 ) -#define RFSYS_DATA5 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,5 ) -#define RFSYS_DATA6 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,6 ) -#define RFSYS_DATA7 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,7 ) - -#define RFVBAT_DATA0 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,0 ) -#define RFVBAT_DATA1 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,1 ) -#define RFVBAT_DATA2 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,2 ) -#define RFVBAT_DATA3 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,3 ) -#define RFVBAT_DATA4 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,4 ) -#define RFVBAT_DATA5 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,5 ) -#define RFVBAT_DATA6 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,6 ) -#define RFVBAT_DATA7 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,7 ) - - -/* LL Bit Fields */ -#define RF_DATA_LL_MASK 0x000000FFu -#define RF_DATA_LL_SHIFT 0 -#define RF_DATA_LL(x) (((x)<> 24)+ 1); - - /* For debugging purposes, enable the trace clock and/or FB_CLK so that - * we'll be able to monitor clocks and know the PLL is at the frequency - * that we expect. - */ - trace_clk_init(); - fb_clk_init(); - - /* Enable the pins for the selected UART */ - if (TERM_PORT == UART0_BASE_PTR) - { - /* Enable the UART0_TXD function on PTD6 */ - PORTD_PCR6 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART0_RXD function on PTD7 */ - PORTD_PCR7 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - - if (TERM_PORT == UART1_BASE_PTR) - { - /* Enable the UART1_TXD function on PTC4 */ - PORTC_PCR4 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART1_RXD function on PTC3 */ - PORTC_PCR3 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - - if (TERM_PORT == UART2_BASE_PTR) - { - /* Enable the UART2_TXD function on PTD3 */ - PORTD_PCR3 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART2_RXD function on PTD2 */ - PORTD_PCR2 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - - if (TERM_PORT == UART3_BASE_PTR) - { - /* Enable the UART3_TXD function on PTC17 */ - PORTC_PCR17 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART3_RXD function on PTC16 */ - PORTC_PCR16 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - if (TERM_PORT == UART4_BASE_PTR) - { - /* Enable the UART3_TXD function on PTC17 */ - PORTE_PCR24 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART3_RXD function on PTC16 */ - PORTE_PCR25 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - if (TERM_PORT == UART5_BASE_PTR) - { - /* Enable the UART3_TXD function on PTC17 */ - PORTE_PCR8 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART3_RXD function on PTC16 */ - PORTE_PCR9 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - /* UART0 and UART1 are clocked from the core clock, but all other UARTs are - * clocked from the peripheral clock. So we have to determine which clock - * to send to the uart_init function. - */ - if ((TERM_PORT == UART0_BASE_PTR) | (TERM_PORT == UART1_BASE_PTR)) - uart_init (TERM_PORT, core_clk_khz, TERMINAL_BAUD); - else - uart_init (TERM_PORT, periph_clk_khz, TERMINAL_BAUD); -} -/********************************************************************/ -void trace_clk_init(void) -{ - /* Set the trace clock to the core clock frequency */ - SIM_SOPT2 |= SIM_SOPT2_TRACECLKSEL_MASK; - - /* Enable the TRACE_CLKOUT pin function on PTA6 (alt7 function) */ - PORTA_PCR6 = ( PORT_PCR_MUX(0x7)); -} -/********************************************************************/ -void fb_clk_init(void) -{ - /* Enable the clock to the FlexBus module */ - SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK; - - /* Enable the FB_CLKOUT function on PTC3 (alt5 function) */ - PORTC_PCR3 = ( PORT_PCR_MUX(0x5)); -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h deleted file mode 100644 index f88b3171d..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * File: sysinit.h - * Purpose: Kinetis Configuration - * Initializes processor to a default state - * - * Notes: - * - */ - -/********************************************************************/ - -// function prototypes -void sysinit (void); -void trace_clk_init(void); -void fb_clk_init(void); -void enable_abort_button(void); -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c deleted file mode 100644 index 2312305df..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c +++ /dev/null @@ -1,306 +0,0 @@ -/****************************************************************************** -* File: vectors.c -* -* Purpose: Configure interrupt vector table for Kinetis. -******************************************************************************/ - -#include "vectors.h" -#include "common.h" - -/****************************************************************************** -* Vector Table -******************************************************************************/ -typedef void (*vector_entry)(void); - -#if defined(IAR) - #pragma location = ".intvec" - const vector_entry __vector_table[] = //@ ".intvec" = -#elif defined(CW) - #pragma define_section vectortable ".vectortable" ".vectortable" ".vectortable" far_abs R - #define VECTOR __declspec(vectortable) - const VECTOR vector_entry __vector_table[] = //@ ".intvec" = -#endif - -{ - VECTOR_000, /* Initial SP */ - VECTOR_001, /* Initial PC */ - VECTOR_002, - VECTOR_003, - VECTOR_004, - VECTOR_005, - VECTOR_006, - VECTOR_007, - VECTOR_008, - VECTOR_009, - VECTOR_010, - VECTOR_011, - VECTOR_012, - VECTOR_013, - VECTOR_014, - VECTOR_015, - - VECTOR_016, - VECTOR_017, - VECTOR_018, - VECTOR_019, - VECTOR_020, - VECTOR_021, - VECTOR_022, - VECTOR_023, - VECTOR_024, - VECTOR_025, - VECTOR_026, - VECTOR_027, - VECTOR_028, - VECTOR_029, - VECTOR_030, - VECTOR_031, - VECTOR_032, - VECTOR_033, - VECTOR_034, - VECTOR_035, - VECTOR_036, - VECTOR_037, - VECTOR_038, - VECTOR_039, - VECTOR_040, - VECTOR_041, - VECTOR_042, - VECTOR_043, - VECTOR_044, - VECTOR_045, - VECTOR_046, - VECTOR_047, - VECTOR_048, - VECTOR_049, - VECTOR_050, - VECTOR_051, - VECTOR_052, - VECTOR_053, - VECTOR_054, - VECTOR_055, - VECTOR_056, - VECTOR_057, - VECTOR_058, - VECTOR_059, - VECTOR_060, - VECTOR_061, - VECTOR_062, - VECTOR_063, - VECTOR_064, - VECTOR_065, - VECTOR_066, - VECTOR_067, - VECTOR_068, - VECTOR_069, - VECTOR_070, - VECTOR_071, - VECTOR_072, - VECTOR_073, - VECTOR_074, - VECTOR_075, - VECTOR_076, - VECTOR_077, - VECTOR_078, - VECTOR_079, - VECTOR_080, - VECTOR_081, - VECTOR_082, - VECTOR_083, - VECTOR_084, - VECTOR_085, - VECTOR_086, - VECTOR_087, - VECTOR_088, - VECTOR_089, - VECTOR_090, - VECTOR_091, - VECTOR_092, - VECTOR_093, - VECTOR_094, - VECTOR_095, - VECTOR_096, - VECTOR_097, - VECTOR_098, - VECTOR_099, - VECTOR_100, - VECTOR_101, - VECTOR_102, - VECTOR_103, - VECTOR_104, - VECTOR_105, - VECTOR_106, - VECTOR_107, - VECTOR_108, - VECTOR_109, - VECTOR_110, - VECTOR_111, - VECTOR_112, - VECTOR_113, - VECTOR_114, - VECTOR_115, - VECTOR_116, - VECTOR_117, - VECTOR_118, - VECTOR_119, - VECTOR_120, - VECTOR_121, - VECTOR_122, - VECTOR_123, - VECTOR_124, - VECTOR_125, - VECTOR_126, - VECTOR_127, - VECTOR_128, - VECTOR_129, - VECTOR_130, - VECTOR_131, - VECTOR_132, - VECTOR_133, - VECTOR_134, - VECTOR_135, - VECTOR_136, - VECTOR_137, - VECTOR_138, - VECTOR_139, - VECTOR_140, - VECTOR_141, - VECTOR_142, - VECTOR_143, - VECTOR_144, - VECTOR_145, - VECTOR_146, - VECTOR_147, - VECTOR_148, - VECTOR_149, - VECTOR_150, - VECTOR_151, - VECTOR_152, - VECTOR_153, - VECTOR_154, - VECTOR_155, - VECTOR_156, - VECTOR_157, - VECTOR_158, - VECTOR_159, - VECTOR_160, - VECTOR_161, - VECTOR_162, - VECTOR_163, - VECTOR_164, - VECTOR_165, - VECTOR_166, - VECTOR_167, - VECTOR_168, - VECTOR_169, - VECTOR_170, - VECTOR_171, - VECTOR_172, - VECTOR_173, - VECTOR_174, - VECTOR_175, - VECTOR_176, - VECTOR_177, - VECTOR_178, - VECTOR_179, - VECTOR_180, - VECTOR_181, - VECTOR_182, - VECTOR_183, - VECTOR_184, - VECTOR_185, - VECTOR_186, - VECTOR_187, - VECTOR_188, - VECTOR_189, - VECTOR_190, - VECTOR_191, - VECTOR_192, - VECTOR_193, - VECTOR_194, - VECTOR_195, - VECTOR_196, - VECTOR_197, - VECTOR_198, - VECTOR_199, - VECTOR_200, - VECTOR_201, - VECTOR_202, - VECTOR_203, - VECTOR_204, - VECTOR_205, - VECTOR_206, - VECTOR_207, - VECTOR_208, - VECTOR_209, - VECTOR_210, - VECTOR_211, - VECTOR_212, - VECTOR_213, - VECTOR_214, - VECTOR_215, - VECTOR_216, - VECTOR_217, - VECTOR_218, - VECTOR_219, - VECTOR_220, - VECTOR_221, - VECTOR_222, - VECTOR_223, - VECTOR_224, - VECTOR_225, - VECTOR_226, - VECTOR_227, - VECTOR_228, - VECTOR_229, - VECTOR_230, - VECTOR_231, - VECTOR_232, - VECTOR_233, - VECTOR_234, - VECTOR_235, - VECTOR_236, - VECTOR_237, - VECTOR_238, - VECTOR_239, - VECTOR_240, - VECTOR_241, - VECTOR_242, - VECTOR_243, - VECTOR_244, - VECTOR_245, - VECTOR_246, - VECTOR_247, - VECTOR_248, - VECTOR_249, - VECTOR_250, - VECTOR_251, - VECTOR_252, - VECTOR_253, - VECTOR_254, - VECTOR_255, - CONFIG_1, - CONFIG_2, - CONFIG_3, - CONFIG_4, - -}; -// VECTOR_TABLE end -/****************************************************************************** -* default_isr(void) -* -* Default ISR definition. -* -* In: n/a -* Out: n/a -******************************************************************************/ -//#if (defined(CW)) -//__declspec(interrupt) -//#endif - -void default_isr(void) -{ - for( ;; ); -} -/******************************************************************************/ -/* End of "vectors.c" */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h deleted file mode 100644 index f32c75f9f..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h +++ /dev/null @@ -1,304 +0,0 @@ -/****************************************************************************** -* File: vectors.h -* -* Purpose: Provide custom interrupt service routines for Kinetis. -* -* NOTE: This vector table is a superset table, so interrupt sources might be -* listed that are not available on the specific Kinetis device you are -* using. -******************************************************************************/ - -#ifndef __VECTORS_H -#define __VECTORS_H 1 - -/* The kernel interrupts - in their CMSIS form. */ -extern void SVC_Handler( void ); -extern void PendSV_Handler( void ); -extern void SysTick_Handler( void ); - -/* The button interrupt. */ -extern void vPort_E_ISRHandler( void ); - -/* Ethernet interrupt handlers. */ -void vEMAC_TxISRHandler( void ); -void vEMAC_RxISRHandler( void ); -void vEMAC_ErrorISRHandler( void ); - -// function prototype for default_isr in vectors.c -void default_isr(void); -void abort_isr(void); - -void hard_fault_handler_c(unsigned int * hardfault_args); - -/* Interrupt Vector Table Function Pointers */ -typedef void pointer(void); - -extern void __startup(void); - -extern unsigned long __BOOT_STACK_ADDRESS[]; -extern void __iar_program_start(void); - // Address Vector IRQ Source module Source description -#define VECTOR_000 (pointer*)__BOOT_STACK_ADDRESS // ARM core Initial Supervisor SP -#define VECTOR_001 __startup // 0x0000_0004 1 - ARM core Initial Program Counter -#define VECTOR_002 default_isr // 0x0000_0008 2 - ARM core Non-maskable Interrupt (NMI) -#define VECTOR_003 default_isr // 0x0000_000C 3 - ARM core Hard Fault -#define VECTOR_004 default_isr // 0x0000_0010 4 - -#define VECTOR_005 default_isr // 0x0000_0014 5 - ARM core Bus Fault -#define VECTOR_006 default_isr // 0x0000_0018 6 - ARM core Usage Fault -#define VECTOR_007 default_isr // 0x0000_001C 7 - -#define VECTOR_008 default_isr // 0x0000_0020 8 - -#define VECTOR_009 default_isr // 0x0000_0024 9 - -#define VECTOR_010 default_isr // 0x0000_0028 10 - -#define VECTOR_011 SVC_Handler // 0x0000_002C 11 - ARM core Supervisor call (SVCall) -#define VECTOR_012 default_isr // 0x0000_0030 12 - ARM core Debug Monitor -#define VECTOR_013 default_isr // 0x0000_0034 13 - -#define VECTOR_014 PendSV_Handler // 0x0000_0038 14 - ARM core Pendable request for system service (PendableSrvReq) -#define VECTOR_015 SysTick_Handler // 0x0000_003C 15 - ARM core System tick timer (SysTick) -#define VECTOR_016 default_isr // 0x0000_0040 16 0 DMA DMA Channel 0 transfer complete -#define VECTOR_017 default_isr // 0x0000_0044 17 1 DMA DMA Channel 1 transfer complete -#define VECTOR_018 default_isr // 0x0000_0048 18 2 DMA DMA Channel 2 transfer complete -#define VECTOR_019 default_isr // 0x0000_004C 19 3 DMA DMA Channel 3 transfer complete -#define VECTOR_020 default_isr // 0x0000_0050 20 4 DMA DMA Channel 4 transfer complete -#define VECTOR_021 default_isr // 0x0000_0054 21 5 DMA DMA Channel 5 transfer complete -#define VECTOR_022 default_isr // 0x0000_0058 22 6 DMA DMA Channel 6 transfer complete -#define VECTOR_023 default_isr // 0x0000_005C 23 7 DMA DMA Channel 7 transfer complete -#define VECTOR_024 default_isr // 0x0000_0060 24 8 DMA DMA Channel 8 transfer complete -#define VECTOR_025 default_isr // 0x0000_0064 25 9 DMA DMA Channel 9 transfer complete -#define VECTOR_026 default_isr // 0x0000_0068 26 10 DMA DMA Channel 10 transfer complete -#define VECTOR_027 default_isr // 0x0000_006C 27 11 DMA DMA Channel 11 transfer complete -#define VECTOR_028 default_isr // 0x0000_0070 28 12 DMA DMA Channel 12 transfer complete -#define VECTOR_029 default_isr // 0x0000_0074 29 13 DMA DMA Channel 13 transfer complete -#define VECTOR_030 default_isr // 0x0000_0078 30 14 DMA DMA Channel 14 transfer complete -#define VECTOR_031 default_isr // 0x0000_007C 31 15 DMA DMA Channel 15 transfer complete -#define VECTOR_032 default_isr // 0x0000_0080 32 16 DMA DMA Error Interrupt Channels 0-15 -#define VECTOR_033 default_isr // 0x0000_0084 33 17 MCM Normal interrupt -#define VECTOR_034 default_isr // 0x0000_0088 34 18 Flash memory Command Complete -#define VECTOR_035 default_isr // 0x0000_008C 35 19 Flash memory Read Collision -#define VECTOR_036 default_isr // 0x0000_0090 36 20 Mode Controller Low Voltage Detect,Low Voltage Warning, Low Leakage Wakeup -#define VECTOR_037 default_isr // 0x0000_0094 37 21 LLWU -#define VECTOR_038 default_isr // 0x0000_0098 38 22 WDOG -#define VECTOR_039 default_isr // 0x0000_009C 39 23 RNGB -#define VECTOR_040 default_isr // 0x0000_00A0 40 24 I2C0 -#define VECTOR_041 default_isr // 0x0000_00A4 41 25 I2C1 -#define VECTOR_042 default_isr // 0x0000_00A8 42 26 SPI0 Single interrupt vector for all sources -#define VECTOR_043 default_isr // 0x0000_00AC 43 27 SPI1 Single interrupt vector for all sources -#define VECTOR_044 default_isr // 0x0000_00B0 44 28 SPI2 Single interrupt vector for all sources -#define VECTOR_045 default_isr // 0x0000_00B4 45 29 CAN0 OR'ed Message buffer (0-15) -#define VECTOR_046 default_isr // 0x0000_00B8 46 30 CAN0 Bus Off -#define VECTOR_047 default_isr // 0x0000_00BC 47 31 CAN0 Error -#define VECTOR_048 default_isr // 0x0000_00C0 48 32 CAN0 Transmit Warning -#define VECTOR_049 default_isr // 0x0000_00C4 49 33 CAN0 Receive Warning -#define VECTOR_050 default_isr // 0x0000_00C8 50 34 CAN0 Wake Up -#define VECTOR_051 default_isr // 0x0000_00CC 51 35 CAN0 Individual Matching Elements Update (IMEU) -#define VECTOR_052 default_isr // 0x0000_00D0 52 36 CAN0 Lost receive -#define VECTOR_053 default_isr // 0x0000_00D4 53 37 CAN1 OR'ed Message buffer (0-15) -#define VECTOR_054 default_isr // 0x0000_00D8 54 38 CAN1 Bus off -#define VECTOR_055 default_isr // 0x0000_00DC 55 39 CAN1 Error -#define VECTOR_056 default_isr // 0x0000_00E0 56 40 CAN1 Transmit Warning -#define VECTOR_057 default_isr // 0x0000_00E4 57 41 CAN1 Receive Warning -#define VECTOR_058 default_isr // 0x0000_00E8 58 42 CAN1 Wake Up -#define VECTOR_059 default_isr // 0x0000_00EC 59 43 CAN1 Individual Matching Elements Update (IMEU) -#define VECTOR_060 default_isr // 0x0000_00F0 60 44 CAN1 Lost receive -#define VECTOR_061 default_isr // 0x0000_00F4 61 45 UART0 Single interrupt vector for UART status sources -#define VECTOR_062 default_isr // 0x0000_00F8 62 46 UART0 Single interrupt vector for UART error sources -#define VECTOR_063 default_isr // 0x0000_00FC 63 47 UART1 Single interrupt vector for UART status sources -#define VECTOR_064 default_isr // 0x0000_0100 64 48 UART1 Single interrupt vector for UART error sources -#define VECTOR_065 default_isr // 0x0000_0104 65 49 UART2 Single interrupt vector for UART status sources -#define VECTOR_066 default_isr // 0x0000_0108 66 50 UART2 Single interrupt vector for UART error sources -#define VECTOR_067 default_isr // 0x0000_010C 67 51 UART3 Single interrupt vector for UART status sources -#define VECTOR_068 default_isr // 0x0000_0110 68 52 UART3 Single interrupt vector for UART error sources -#define VECTOR_069 default_isr // 0x0000_0114 69 53 UART4 Single interrupt vector for UART status sources -#define VECTOR_070 default_isr // 0x0000_0118 70 54 UART4 Single interrupt vector for UART error sources -#define VECTOR_071 default_isr // 0x0000_011C 71 55 UART5 Single interrupt vector for UART status sources -#define VECTOR_072 default_isr // 0x0000_0120 72 56 UART5 Single interrupt vector for UART error sources -#define VECTOR_073 default_isr // 0x0000_0124 73 57 ADC0 -#define VECTOR_074 default_isr // 0x0000_0128 74 58 ADC1 -#define VECTOR_075 default_isr // 0x0000_012C 75 59 CMP0 High-speed comparator -#define VECTOR_076 default_isr // 0x0000_0130 76 60 CMP1 -#define VECTOR_077 default_isr // 0x0000_0134 77 61 CMP2 -#define VECTOR_078 default_isr // 0x0000_0138 78 62 FTM0 Single interrupt vector for all sources -#define VECTOR_079 default_isr // 0x0000_013C 79 63 FTM1 Single interrupt vector for all sources -#define VECTOR_080 default_isr // 0x0000_0140 80 64 FTM2 Single interrupt vector for all sources -#define VECTOR_081 default_isr // 0x0000_0144 81 65 CMT -#define VECTOR_082 default_isr // 0x0000_0148 82 66 RTC Timer interrupt -#define VECTOR_083 default_isr // 0x0000_014C 83 67 -#define VECTOR_084 default_isr // 0x0000_0150 84 68 PIT Channel 0 -#define VECTOR_085 default_isr // 0x0000_0154 85 69 PIT Channel 1 -#define VECTOR_086 default_isr // 0x0000_0158 86 70 PIT Channel 2 -#define VECTOR_087 default_isr // 0x0000_015C 87 71 PIT Channel 3 -#define VECTOR_088 default_isr // 0x0000_0160 88 72 PDB -#define VECTOR_089 default_isr // 0x0000_0164 89 73 USB OTG -#define VECTOR_090 default_isr // 0x0000_0168 90 74 USB Charger Detect -#define VECTOR_091 default_isr // 0x0000_016C 91 75 ENET IEEE 1588 Timer interrupt -#define VECTOR_092 vEMAC_TxISRHandler // 0x0000_0170 92 76 ENET Transmit interrupt -#define VECTOR_093 vEMAC_RxISRHandler // 0x0000_0174 93 77 ENET Receive interrupt -#define VECTOR_094 vEMAC_ErrorISRHandler // 0x0000_0178 94 78 ENET Error and miscellaneous interrupt -#define VECTOR_095 default_isr // 0x0000_017C 95 79 I2S -#define VECTOR_096 default_isr // 0x0000_0180 96 80 SDHC -#define VECTOR_097 default_isr // 0x0000_0184 97 81 DAC0 -#define VECTOR_098 default_isr // 0x0000_0188 98 82 DAC1 -#define VECTOR_099 default_isr // 0x0000_018C 99 83 TSI Single interrupt vector for all sources -#define VECTOR_100 default_isr // 0x0000_0190 100 84 MCG -#define VECTOR_101 default_isr // 0x0000_0194 101 85 Low Power Timer -#define VECTOR_102 default_isr // 0x0000_0198 102 86 Segment LCD Single interrupt vector for all sources -#define VECTOR_103 default_isr // 0x0000_019C 103 87 Port control module Pin Detect (Port A) -#define VECTOR_104 default_isr // 0x0000_01A0 104 88 Port control module Pin Detect (Port B) -#define VECTOR_105 default_isr // 0x0000_01A4 105 89 Port control module Pin Detect (Port C) -#define VECTOR_106 default_isr // 0x0000_01A8 106 90 Port control module Pin Detect (Port D) -#define VECTOR_107 vPort_E_ISRHandler // 0x0000_01AC 107 91 Port control module Pin Detect (Port E) -#define VECTOR_108 default_isr // 0x0000_01B0 108 92 -#define VECTOR_109 default_isr // 0x0000_01B4 109 93 -#define VECTOR_110 default_isr // 0x0000_01B8 110 94 -#define VECTOR_111 default_isr // 0x0000_01BC 111 95 -#define VECTOR_112 default_isr // 0x0000_01C0 112 96 -#define VECTOR_113 default_isr // 0x0000_01C4 113 97 -#define VECTOR_114 default_isr // 0x0000_01C8 114 98 -#define VECTOR_115 default_isr // 0x0000_01CC 115 99 -#define VECTOR_116 default_isr // 0x0000_01D0 116 100 -#define VECTOR_117 default_isr // 0x0000_01D4 117 101 -#define VECTOR_118 default_isr // 0x0000_01D8 118 102 -#define VECTOR_119 default_isr // 0x0000_01DC 119 103 -#define VECTOR_120 default_isr // -#define VECTOR_121 default_isr // -#define VECTOR_122 default_isr // -#define VECTOR_123 default_isr // -#define VECTOR_124 default_isr // -#define VECTOR_125 default_isr // -#define VECTOR_126 default_isr // -#define VECTOR_127 default_isr // -#define VECTOR_128 default_isr // -#define VECTOR_129 default_isr // -#define VECTOR_130 default_isr // -#define VECTOR_131 default_isr // -#define VECTOR_132 default_isr // -#define VECTOR_133 default_isr // -#define VECTOR_134 default_isr // -#define VECTOR_135 default_isr // -#define VECTOR_136 default_isr // -#define VECTOR_137 default_isr // -#define VECTOR_138 default_isr // -#define VECTOR_139 default_isr // -#define VECTOR_140 default_isr // -#define VECTOR_141 default_isr // -#define VECTOR_142 default_isr // -#define VECTOR_143 default_isr // -#define VECTOR_144 default_isr // -#define VECTOR_145 default_isr // -#define VECTOR_146 default_isr // -#define VECTOR_147 default_isr // -#define VECTOR_148 default_isr // -#define VECTOR_149 default_isr // -#define VECTOR_150 default_isr // -#define VECTOR_151 default_isr // -#define VECTOR_152 default_isr // -#define VECTOR_153 default_isr // -#define VECTOR_154 default_isr // -#define VECTOR_155 default_isr // -#define VECTOR_156 default_isr // -#define VECTOR_157 default_isr // -#define VECTOR_158 default_isr // -#define VECTOR_159 default_isr // -#define VECTOR_160 default_isr // -#define VECTOR_161 default_isr // -#define VECTOR_162 default_isr // -#define VECTOR_163 default_isr // -#define VECTOR_164 default_isr // -#define VECTOR_165 default_isr // -#define VECTOR_166 default_isr // -#define VECTOR_167 default_isr // -#define VECTOR_168 default_isr // -#define VECTOR_169 default_isr // -#define VECTOR_170 default_isr // -#define VECTOR_171 default_isr // -#define VECTOR_172 default_isr // -#define VECTOR_173 default_isr // -#define VECTOR_174 default_isr // -#define VECTOR_175 default_isr // -#define VECTOR_176 default_isr // -#define VECTOR_177 default_isr // -#define VECTOR_178 default_isr // -#define VECTOR_179 default_isr // -#define VECTOR_180 default_isr // -#define VECTOR_181 default_isr // -#define VECTOR_182 default_isr // -#define VECTOR_183 default_isr // -#define VECTOR_184 default_isr // -#define VECTOR_185 default_isr // -#define VECTOR_186 default_isr // -#define VECTOR_187 default_isr // -#define VECTOR_188 default_isr // -#define VECTOR_189 default_isr // -#define VECTOR_190 default_isr // -#define VECTOR_191 default_isr // -#define VECTOR_192 default_isr // -#define VECTOR_193 default_isr // -#define VECTOR_194 default_isr // -#define VECTOR_195 default_isr // -#define VECTOR_196 default_isr // -#define VECTOR_197 default_isr // -#define VECTOR_198 default_isr // -#define VECTOR_199 default_isr // -#define VECTOR_200 default_isr // -#define VECTOR_201 default_isr // -#define VECTOR_202 default_isr // -#define VECTOR_203 default_isr // -#define VECTOR_204 default_isr // -#define VECTOR_205 default_isr // -#define VECTOR_206 default_isr // -#define VECTOR_207 default_isr // -#define VECTOR_208 default_isr // -#define VECTOR_209 default_isr // -#define VECTOR_210 default_isr // -#define VECTOR_211 default_isr // -#define VECTOR_212 default_isr // -#define VECTOR_213 default_isr // -#define VECTOR_214 default_isr // -#define VECTOR_215 default_isr // -#define VECTOR_216 default_isr // -#define VECTOR_217 default_isr // -#define VECTOR_218 default_isr // -#define VECTOR_219 default_isr // -#define VECTOR_220 default_isr // -#define VECTOR_221 default_isr // -#define VECTOR_222 default_isr // -#define VECTOR_223 default_isr // -#define VECTOR_224 default_isr // -#define VECTOR_225 default_isr // -#define VECTOR_226 default_isr // -#define VECTOR_227 default_isr // -#define VECTOR_228 default_isr // -#define VECTOR_229 default_isr // -#define VECTOR_230 default_isr // -#define VECTOR_231 default_isr // -#define VECTOR_232 default_isr // -#define VECTOR_233 default_isr // -#define VECTOR_234 default_isr // -#define VECTOR_235 default_isr // -#define VECTOR_236 default_isr // -#define VECTOR_237 default_isr // -#define VECTOR_238 default_isr // -#define VECTOR_239 default_isr // -#define VECTOR_240 default_isr // -#define VECTOR_241 default_isr // -#define VECTOR_242 default_isr // -#define VECTOR_243 default_isr // -#define VECTOR_244 default_isr // -#define VECTOR_245 default_isr // -#define VECTOR_246 default_isr // -#define VECTOR_247 default_isr // -#define VECTOR_248 default_isr // -#define VECTOR_249 default_isr // -#define VECTOR_250 default_isr // -#define VECTOR_251 default_isr // -#define VECTOR_252 default_isr // -#define VECTOR_253 default_isr // -#define VECTOR_254 default_isr // -#define VECTOR_255 default_isr // -#define CONFIG_1 (pointer*)0xffffffff -#define CONFIG_2 (pointer*)0xffffffff -#define CONFIG_3 (pointer*)0xffffffff -#define CONFIG_4 (pointer*)0xfffffffe - -#endif /*__VECTORS_H*/ - -/* End of "vectors.h" */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c deleted file mode 100644 index 50b585920..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c +++ /dev/null @@ -1,243 +0,0 @@ -/* - * File: enet.c - * Purpose: Driver for the ENET controller - * - * Notes: - */ - -#include "common.h" -#include "enet.h" -#include "nbuf.h" -#include "eth.h" - - -/********************************************************************/ -/* Initialize the MIB counters - * - * Parameters: - * ch FEC channel - */ -void -enet_mib_init(int ch) -{ -//To do -} -/********************************************************************/ -/* Display the MIB counters - * - * Parameters: - * ch FEC channel - */ -void -enet_mib_dump(int ch) -{ -//To do -} -/********************************************************************/ -/* - * Set the duplex on the selected FEC controller - * - * Parameters: - * ch FEC channel - * duplex enet_MII_FULL_DUPLEX or enet_MII_HALF_DUPLEX - */ -void -enet_duplex (int ch, ENET_DUPLEX duplex) -{ - switch (duplex) - { - case MII_HDX: - ENET_RCR/*(ch)*/ |= ENET_RCR_DRT_MASK; - ENET_TCR/*(ch)*/ &= (uint32_t)~ENET_TCR_FDEN_MASK; - break; - case MII_FDX: - default: - ENET_RCR/*(ch)*/ &= ~ENET_RCR_DRT_MASK; - ENET_TCR/*(ch)*/ |= ENET_TCR_FDEN_MASK; - break; - } -} - -/********************************************************************/ -/* - * Generate the hash table settings for the given address - * - * Parameters: - * addr 48-bit (6 byte) Address to generate the hash for - * - * Return Value: - * The 6 most significant bits of the 32-bit CRC result - */ -uint8_t -enet_hash_address(const uint8_t* addr) -{ - uint32_t crc; - uint8_t byte; - int i, j; - - crc = 0xFFFFFFFF; - for(i=0; i<6; ++i) - { - byte = addr[i]; - for(j=0; j<8; ++j) - { - if((byte & 0x01)^(crc & 0x01)) - { - crc >>= 1; - crc = crc ^ 0xEDB88320; - } - else - crc >>= 1; - byte >>= 1; - } - } - return (uint8_t)(crc >> 26); -} -/********************************************************************/ -/* - * Set the Physical (Hardware) Address and the Individual Address - * Hash in the selected FEC - * - * Parameters: - * ch FEC channel - * pa Physical (Hardware) Address for the selected FEC - */ -void -enet_set_address (int ch, const uint8_t *pa) -{ - uint8_t crc; - - /* - * Set the Physical Address - */ - ENET_PALR/*(ch)*/ = (uint32_t)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]); - ENET_PAUR/*(ch)*/ = (uint32_t)((pa[4]<<24) | (pa[5]<<16)); - - /* - * Calculate and set the hash for given Physical Address - * in the Individual Address Hash registers - */ - crc = enet_hash_address(pa); - if(crc >= 32) - ENET_IAUR/*(ch)*/ |= (uint32_t)(1 << (crc - 32)); - else - ENET_IALR/*(ch)*/ |= (uint32_t)(1 << crc); -} -/********************************************************************/ -/* - * Reset the selected FEC controller - * - * Parameters: - * ch FEC channel - */ -void -enet_reset (int ch) -{ - int i; - - /* Set the Reset bit and clear the Enable bit */ - ENET_ECR/*(ch)*/ = ENET_ECR_RESET_MASK; - - /* Wait at least 8 clock cycles */ - for (i=0; i<10; ++i) - asm( "NOP" ); -} -/********************************************************************/ -/* - * Initialize the selected FEC - * - * Parameters: - * config: ENET parameters - * - * - */ -void -enet_init (ENET_CONFIG *config) -{ - /* Clear the Individual and Group Address Hash registers */ - ENET_IALR/*(ch)*/ = 0; - ENET_IAUR/*(ch)*/ = 0; - ENET_GALR/*(ch)*/ = 0; - ENET_GAUR/*(ch)*/ = 0; - - /* Set the Physical Address for the selected FEC */ - enet_set_address(config->ch, config->mac); - - /* Mask all FEC interrupts */ - ENET_EIMR/*(ch)*/ = 0;//FSL:ENET_EIMR_MASK_ALL_MASK; - - /* Clear all FEC interrupt events */ - ENET_EIR/*(ch)*/ = 0xFFFFFFFF;//FSL:ENET_EIR_CLEAR_ALL_MASK; - - /* Initialize the Receive Control Register */ - ENET_RCR/*(ch)*/ = 0 - | ENET_RCR_MAX_FL(ETH_MAX_FRM) - | ENET_RCR_MII_MODE_MASK /*always*/ - | ENET_RCR_CRCFWD_MASK; /*no CRC pad required*/ - - if ( config->interface == mac_rmii ) - { - ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_MODE_MASK; - - /*only set speed in RMII mode*/ - if( config->speed == MII_10BASET ) - { - ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_10T_MASK; - } - }/*no need to configure MAC MII interface*/ - - ENET_TCR/*(ch)*/ = 0; - - /* Set the duplex */ - enet_duplex(config->ch, config->duplex); - - if (config->prom) - { - ENET_RCR/*(ch)*/ |= ENET_RCR_PROM_MASK; - } - -#ifdef ENHANCED_BD - ENET_ECR/*(ch)*/ = ENET_ECR_EN1588_MASK; -#else - ENET_ECR/*(ch)*/ = 0;//clear register -#endif - - if(config->loopback == INTERNAL_LOOPBACK) - { - /*seems like RMII internal loopback works, even if it's not supported*/ - ENET_RCR/*(0)*/ |= ENET_RCR_LOOP_MASK; - } -} -/********************************************************************/ -void -enet_start (int ch) -{ - // Enable FEC - ENET_ECR/*(ch)*/ |= ENET_ECR_ETHEREN_MASK; -} - -/********************************************************************/ -int -enet_wait_for_frame_receive(int ch, int timeout) -{ - int i, return_val = 1; - - for (i=0; i < timeout; i++) - { - if (ENET_EIR/*(ch)*/ & ENET_EIR_RXF_MASK) - { - ENET_EIR/*(ch)*/ = ENET_EIR_RXF_MASK; - break; - } - } - - if(i == timeout) - { - return_val = 0; - } - return return_val; -} -/********************************************************************/ - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h deleted file mode 100644 index c0e76ee44..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * File: enet.h - * Purpose: Driver for the ENET controller - * - * Notes: - */ - -#ifndef _ENET_H_ -#define _ENET_H_ - -#include "nbuf.h" - -/********INTERFACE**********/ -typedef enum { - mac_mii, - mac_rmii, -} ENET_INTERFACE; -/********AUTONEG**********/ -typedef enum { - autoneg_on, - autoneg_off -} ENET_AUTONEG; -/********SPEED**********/ -typedef enum { - MII_10BASET, - MII_100BASET -} ENET_SPEED; -/********DUPLEX**********/ -/* MII Duplex Settings */ -typedef enum { - MII_HDX, /*!< half-duplex */ - MII_FDX /*!< full-duplex */ -} ENET_DUPLEX; -/********LOOPBACK**********/ -typedef enum { - INTERNAL_LOOPBACK, - EXTERNAL_LOOPBACK, - NO_LOOPBACK -} ENET_LOOPBACK; -/********EXTERNAL**********/ -typedef enum { - EXTERNAL_NONE, - EXTERNAL_YES -} ENET_EXTERNAL_CONN; - -/* - * FEC Configuration Parameters - */ -typedef struct -{ - uint8_t ch; /* FEC channel */ - ENET_INTERFACE interface; /* Transceiver mode */ - ENET_AUTONEG neg; /* FEC autoneg */ - ENET_SPEED speed; /* Ethernet Speed */ - ENET_DUPLEX duplex; /* Ethernet Duplex */ - ENET_LOOPBACK loopback; /* Loopback Mode */ - ENET_EXTERNAL_CONN external; /* outside test? */ - uint8_t prom; /* Promiscuous Mode? */ - uint8_t mac[6]; /* Ethernet Address */ -} ENET_CONFIG; - -void -enet_mib_init(int); - -void -enet_mib_dump(int); - -void -enet_reg_dump(int); - -void -enet_duplex (int, ENET_DUPLEX); - -uint8_t -enet_hash_address(const uint8_t*); - -void -enet_set_address (int, const uint8_t*); - -void -enet_reset (int); - -void -enet_init (ENET_CONFIG *config); - -void -enet_start (int ch); - -int -enet_wait_for_frame_receive(int,int); - - -/********************************************************************/ - -#endif /* _ENET_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h deleted file mode 100644 index ea942be7f..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h +++ /dev/null @@ -1,58 +0,0 @@ -/*! - * \file eth.h - * \brief Definitinos for Ethernet Frames - * \version $Revision: 1.1 $ - * \author Michael Norman - */ - -#ifndef _ETH_H -#define _ETH_H - -/*b06862*/ -#include "common.h" - -/*******************************************************************/ - -/* Ethernet standard lengths in bytes*/ -#define ETH_ADDR_LEN (6) -#define ETH_TYPE_LEN (2) -#define ETH_CRC_LEN (4) -#define ETH_MAX_DATA (1500) -#define ETH_MIN_DATA (46) -#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) - -/* Defined Ethernet Frame Types */ -#define ETH_FRM_IP (0x0800) -#define ETH_FRM_ARP (0x0806) -#define ETH_FRM_RARP (0x8035) -#define ETH_FRM_TEST (0xA5A5) - -/* Maximum and Minimum Ethernet Frame Sizes */ -#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) -#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) -#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) - -/* Ethernet Addresses */ -typedef uint8_t ETH_ADDR[ETH_ADDR_LEN]; - -/* 16-bit Ethernet Frame Type, ie. Protocol */ -typedef uint16_t ETH_FRM_TYPE; - -/* Ethernet Frame Header definition */ -typedef struct -{ - ETH_ADDR dest; - ETH_ADDR src; - ETH_FRM_TYPE type; -} ETH_HDR; - -/* Ethernet Frame definition */ -typedef struct -{ - ETH_HDR head; - uint8_t* data; -} ETH_FRAME; - -/*******************************************************************/ - -#endif /* _ETH_H */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c deleted file mode 100644 index 87e6db87c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c +++ /dev/null @@ -1,406 +0,0 @@ -/*! - * \file eth_phy.c - * \brief Ethernet Physical Layer Interface Driver - * \version $Revision: 1.3 $ - * \author Michael Norman - * - * This is a generic driver for all Ethernet PHYs with the basic MII registers - */ - -#include "common.h" -#include "eth_phy.h" -#include "mii.h" - -/* Variable to save off auto-negotiate settings */ -int eth_phy_anar = 0 - | PHY_ANAR_100BTX_FDX - | PHY_ANAR_100BTX - | PHY_ANAR_10BT_FDX - | PHY_ANAR_10BT; - -int -eth_phy_reset(int ch, int phy_addr) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings; - - /* Reset the PHY */ - if (mii_write(ch, phy_addr, PHY_BMCR, PHY_BMCR_RESET)) - return 1; - /* Wait for reset to complete */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_LINK_TIMEOUT; ++timeout) -#endif - while(1) - { - /* Read back the contents of the CTRL register and verify - * that RESET is not set - this is a sanity check to ensure - * that we are talking to the PHY correctly. RESET should - * always be cleared. */ - if (!(mii_read(ch, phy_addr, PHY_BMCR, &settings)) && !(settings & PHY_BMCR_RESET)) - break;/*FSL: ready*/ - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_LINK_TIMEOUT || (settings & PHY_BMCR_RESET)) - return 1; - else -#endif - return 0; -} - -/********************************************************************/ -/*! - * \brief Enable the Ethernet PHY in auto-negotiate mode - * \param phy_addr Address of the PHY - * \param speed Desired speed (MII_10BASE_T or MII_100BASE_TX) - * \param duplex Desired duplex (MII_FDX or MII_HDX) - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_autoneg(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex) -{ - int timeout, settings; - - /* Reset the PHY */ - eth_phy_reset(ch, phy_addr); - - /* Set the Auto-Negotiation Advertisement Register */ - if (speed == MII_10BASET) - { - settings = (duplex == MII_FDX) - ? PHY_ANAR_10BT_FDX | PHY_ANAR_10BT - : PHY_ANAR_10BT; - } - else /* (speed == MII_100BASET) */ - { - settings = (duplex == MII_FDX) - ? PHY_ANAR_100BTX_FDX | - PHY_ANAR_100BTX | - PHY_ANAR_10BT_FDX | - PHY_ANAR_10BT - : PHY_ANAR_10BT_FDX | - PHY_ANAR_10BT; - } - - /* Save off the settings we just advertised */ - eth_phy_anar = settings; - - if (mii_write(ch, phy_addr, PHY_ANAR, settings)) - return 1; - - /* Enable Auto-Negotiation */ - if (mii_write(ch, phy_addr, PHY_BMCR, PHY_BMCR_AN_ENABLE | PHY_BMCR_AN_RESTART)) - return 1; - - /* Wait for auto-negotiation to complete */ - for (timeout = 0; timeout < MII_LINK_TIMEOUT; ++timeout) - { - if (mii_read(ch, phy_addr, PHY_BMSR, &settings)) - return 1; - if (settings & PHY_BMSR_AN_COMPLETE) - break; - } - /* Read the BMSR one last time */ - if (mii_read(ch, phy_addr, PHY_BMSR, &settings)) - return 1; - if (timeout == MII_LINK_TIMEOUT || !(settings & PHY_BMSR_LINK)) - return 1; - else - return 0; -} -/********************************************************************/ -/*! - * \brief Enable the Ethernet PHY in manual mode - * \param phy_addr Address of the PHY - * \param speed Desired speed (MII_10BASE_T or MII_100BASE_TX) - * \param duplex Desired duplex (MII_FDX or MII_HDX) - * \param loop Put PHY in loopback mode? - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_manual(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex, int loop) -{ - int timeout; - int settings = 0; - - /* Reset the PHY */ - /* Reset the PHY */ - eth_phy_reset(ch, phy_addr); - - if (loop) - settings |= PHY_BMCR_LOOP; - if (duplex == MII_FDX) - settings |= PHY_BMCR_FDX; - if (speed == MII_100BASET) - settings |= PHY_BMCR_SPEED; - - if (mii_write(ch, phy_addr, PHY_BMCR, settings)) - return 1; - - /* Wait for link */ - for (timeout = 0; timeout < MII_LINK_TIMEOUT; ++timeout) - { - if (mii_read(ch, phy_addr, PHY_BMSR, &settings)) - return 1; - if (settings & PHY_BMSR_LINK) - break; - } - -#if MII_CHECK_TIMEOUT - if (timeout == MII_LINK_TIMEOUT || !(settings & PHY_BMSR_LINK)) - return 1; - else -#endif - return 0; -} -/********************************************************************/ -/*! - * \brief Get the auto-negotiated speed - * \param phy_addr Address of the PHY - * \param speed Pointer where speed data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_speed(int ch, int phy_addr, int *speed) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { - if (mii_read(ch, phy_addr, PHY_ANLPAR, &settings)) - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - - settings &= eth_phy_anar; - if (settings & PHY_ANLPAR_100BT4 || - settings & PHY_ANLPAR_100BTX_FDX || - settings & PHY_ANLPAR_100BTX) - *speed = MII_100BASET; - else - *speed = MII_10BASET; - - return 0; -} -/********************************************************************/ -/*! - * \brief Get the auto-negotiated duplex - * \param phy_addr Address of the PHY - * \param speed Pointer where speed data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_duplex(int ch, int phy_addr, int *speed) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { - if (mii_read(ch, phy_addr, PHY_ANLPAR, &settings)) - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - - settings &= eth_phy_anar; - if (settings & PHY_ANLPAR_100BTX_FDX || - settings & PHY_ANLPAR_10BTX_FDX) - *speed = MII_FDX; - else - *speed = MII_HDX; - - return 0; -} - - -/********************************************************************/ -/*! - * \brief Get the manual speed - * \param phy_addr Address of the PHY - * \param speed Pointer where speed data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_manual_speed(int ch, int phy_addr, int *speed) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { -#ifdef TWR_K60N512 - if (mii_read(ch, phy_addr, PHY_PHYCTRL2, &settings))//Micrel -#else - if (mii_read(ch, phy_addr, PHY_PHYSTS, &settings))//National Semiconductors -#endif - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - -#ifdef TWR_K60N512 - /*FSL: obtain speed/duplex*/ - settings = (settings & PHY_PHYCTRL2_OP_MOD_MASK)>>PHY_PHYCTRL2_OP_MOD_SHIFT; - - if (settings == PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD || - settings == PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_FD) - *speed = MII_10BASET; - else - *speed = MII_100BASET; -#else - if (settings & PHY_PHYSTS_SPEEDSTATUS) - *speed = MII_10BASET; - else - *speed = MII_100BASET; -#endif - - return 0; -} -/********************************************************************/ -/*! - * \brief Get the manual duplex - * \param phy_addr Address of the PHY - * \param duplex Pointer where duplex data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_manual_duplex(int ch, int phy_addr, int *duplex) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { -#ifdef TWR_K60N512 - if (mii_read(ch, phy_addr, PHY_PHYCTRL2, &settings))//Micrel -#else - if (mii_read(ch, phy_addr, PHY_PHYSTS, &settings))//National Semiconductors -#endif - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - -#ifdef TWR_K60N512 - /*FSL: obtain speed/duplex*/ - settings = (settings & PHY_PHYCTRL2_OP_MOD_MASK)>>PHY_PHYCTRL2_OP_MOD_SHIFT; - - if (settings == PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD || - settings == PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_HD) - *duplex = MII_HDX; - else - *duplex = MII_FDX; -#else - if (settings & PHY_PHYSTS_DUPLEXSTATUS) - *duplex = MII_FDX; - else - *duplex = MII_HDX; -#endif - - return 0; -} - -/********************************************************************/ -/*! - * \brief Get the manual speed - * \param phy_addr Address of the PHY - * \param loop set if loopback is needed - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_set_remote_loopback(int ch, int phy_addr, int loop) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { - if (mii_read(ch, phy_addr, PHY_PHYCTRL1, &settings)) - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - /*set remote loopback flag*/ - if(loop) - settings |= PHY_PHYCTRL1_REMOTE_LOOP; /*set bit*/ - else - settings &= ~PHY_PHYCTRL1_REMOTE_LOOP; /*clear bit*/ - - if (mii_write(ch, phy_addr, PHY_PHYCTRL1, settings)) - return 1; - - return 0; -} - -/********************************************************************/ -/*! - * \brief Print all the MII registers (0x00-0x1F) - * \param phy_addr Address of the PHY - */ -int -eth_phy_reg_dump(int ch, int phy_addr) -{ - int j, settings; - - for (j = 0; j < 32; j++) - { - mii_read(ch, phy_addr, j, &settings); - } - - return 0; -} diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h deleted file mode 100644 index 27330c235..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h +++ /dev/null @@ -1,175 +0,0 @@ -/*! - * \file eth.h - * \brief Definitions for Ethernet Physical Layer Interface - * \version $Revision: 1.3 $ - * \author Michael Norman - * \modif b06862 - */ - -#ifndef _ETH_PHY_H -#define _ETH_PHY_H - - -#include "enet.h" - -/*******************************************************************/ - -int -eth_phy_reset(int ch, int phy_addr); - -int -eth_phy_autoneg(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex); - -int -eth_phy_manual(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex, int loop); - -int -eth_phy_get_speed(int, int, int*); - -int -eth_phy_get_duplex(int, int, int*); - -int -eth_phy_get_manual_speed(int, int, int*); - -int -eth_phy_get_manual_duplex(int, int, int*); - -int -eth_phy_set_remote_loopback(int, int, int); - -int -eth_phy_reg_dump(int, int); - -/*******************************************************************/ - -/* MII Register Addresses */ -#define PHY_BMCR (0x00) -#define PHY_BMSR (0x01) -#define PHY_PHYIDR1 (0x02) -#define PHY_PHYIDR2 (0x03) -#define PHY_ANAR (0x04) -#define PHY_ANLPAR (0x05) -#define PHY_ANLPARNP (0x05) -#define PHY_ANER (0x06) -#define PHY_ANNPTR (0x07) -#define PHY_PHYSTS (0x10) -#define PHY_MICR (0x11) -#define PHY_MISR (0x12) -#define PHY_PAGESEL (0x13) - -/*TSI-EVB definition: National Semiconductor*/ -#define PHY_PHYCR2 (0x1C) - -/*TWR definition: Micrel*/ -#define PHY_PHYCTRL1 (0x1E) -#define PHY_PHYCTRL2 (0x1F) - -/* Bit definitions and macros for PHY_BMCR */ -#define PHY_BMCR_RESET (0x8000) -#define PHY_BMCR_LOOP (0x4000) -#define PHY_BMCR_SPEED (0x2000) -#define PHY_BMCR_AN_ENABLE (0x1000) -#define PHY_BMCR_POWERDOWN (0x0800) -#define PHY_BMCR_ISOLATE (0x0400) -#define PHY_BMCR_AN_RESTART (0x0200) -#define PHY_BMCR_FDX (0x0100) -#define PHY_BMCR_COL_TEST (0x0080) - -/* Bit definitions and macros for PHY_BMSR */ -#define PHY_BMSR_100BT4 (0x8000) -#define PHY_BMSR_100BTX_FDX (0x4000) -#define PHY_BMSR_100BTX (0x2000) -#define PHY_BMSR_10BT_FDX (0x1000) -#define PHY_BMSR_10BT (0x0800) -#define PHY_BMSR_NO_PREAMBLE (0x0040) -#define PHY_BMSR_AN_COMPLETE (0x0020) -#define PHY_BMSR_REMOTE_FAULT (0x0010) -#define PHY_BMSR_AN_ABILITY (0x0008) -#define PHY_BMSR_LINK (0x0004) -#define PHY_BMSR_JABBER (0x0002) -#define PHY_BMSR_EXTENDED (0x0001) - -/* Bit definitions and macros for PHY_ANAR */ -#define PHY_ANAR_NEXT_PAGE (0x8001) -#define PHY_ANAR_REM_FAULT (0x2001) -#define PHY_ANAR_PAUSE (0x0401) -#define PHY_ANAR_100BT4 (0x0201) -#define PHY_ANAR_100BTX_FDX (0x0101) -#define PHY_ANAR_100BTX (0x0081) -#define PHY_ANAR_10BT_FDX (0x0041) -#define PHY_ANAR_10BT (0x0021) -#define PHY_ANAR_802_3 (0x0001) - -/* Bit definitions and macros for PHY_ANLPAR */ -#define PHY_ANLPAR_NEXT_PAGE (0x8000) -#define PHY_ANLPAR_ACK (0x4000) -#define PHY_ANLPAR_REM_FAULT (0x2000) -#define PHY_ANLPAR_PAUSE (0x0400) -#define PHY_ANLPAR_100BT4 (0x0200) -#define PHY_ANLPAR_100BTX_FDX (0x0100) -#define PHY_ANLPAR_100BTX (0x0080) -#define PHY_ANLPAR_10BTX_FDX (0x0040) -#define PHY_ANLPAR_10BT (0x0020) - - -/* Bit definitions of PHY_PHYSTS: National */ -#define PHY_PHYSTS_MDIXMODE (0x4000) -#define PHY_PHYSTS_RX_ERR_LATCH (0x2000) -#define PHY_PHYSTS_POL_STATUS (0x1000) -#define PHY_PHYSTS_FALSECARRSENSLAT (0x0800) -#define PHY_PHYSTS_SIGNALDETECT (0x0400) -#define PHY_PHYSTS_PAGERECEIVED (0x0100) -#define PHY_PHYSTS_MIIINTERRUPT (0x0080) -#define PHY_PHYSTS_REMOTEFAULT (0x0040) -#define PHY_PHYSTS_JABBERDETECT (0x0020) -#define PHY_PHYSTS_AUTONEGCOMPLETE (0x0010) -#define PHY_PHYSTS_LOOPBACKSTATUS (0x0008) -#define PHY_PHYSTS_DUPLEXSTATUS (0x0004) -#define PHY_PHYSTS_SPEEDSTATUS (0x0002) -#define PHY_PHYSTS_LINKSTATUS (0x0001) - - -/* Bit definitions of PHY_PHYCR2 */ -#define PHY_PHYCR2_SYNC_ENET_EN (0x2000) -#define PHY_PHYCR2_CLK_OUT_RXCLK (0x1000) -#define PHY_PHYCR2_BC_WRITE (0x0800) -#define PHY_PHYCR2_PHYTER_COMP (0x0400) -#define PHY_PHYCR2_SOFT_RESET (0x0200) -#define PHY_PHYCR2_CLK_OUT_DIS (0x0001) - -/* Bit definition and macros for PHY_PHYCTRL1 */ -#define PHY_PHYCTRL1_LED_MASK (0xC000) -#define PHY_PHYCTRL1_POLARITY (0x2000) -#define PHY_PHYCTRL1_MDX_STATE (0x0800) -#define PHY_PHYCTRL1_REMOTE_LOOP (0x0080) - -/* Bit definition and macros for PHY_PHYCTRL2 */ -#define PHY_PHYCTRL2_HP_MDIX (0x8000) -#define PHY_PHYCTRL2_MDIX_SELECT (0x4000) -#define PHY_PHYCTRL2_PAIRSWAP_DIS (0x2000) -#define PHY_PHYCTRL2_ENERGY_DET (0x1000) -#define PHY_PHYCTRL2_FORCE_LINK (0x0800) -#define PHY_PHYCTRL2_POWER_SAVING (0x0400) -#define PHY_PHYCTRL2_INT_LEVEL (0x0200) -#define PHY_PHYCTRL2_EN_JABBER (0x0100) -#define PHY_PHYCTRL2_AUTONEG_CMPLT (0x0080) -#define PHY_PHYCTRL2_ENABLE_PAUSE (0x0040) -#define PHY_PHYCTRL2_PHY_ISOLATE (0x0020) -#define PHY_PHYCTRL2_OP_MOD_MASK (0x001C) -#define PHY_PHYCTRL2_EN_SQE_TEST (0x0002) -#define PHY_PHYCTRL2_DATA_SCRAM_DIS (0x0001) - - -/* Bit definitions of PHY_PHYCTRL2_OP_MOD_MASK */ -#define PHY_PHYCTRL2_OP_MOD_SHIFT 2 -#define PHY_PHYCTRL2_MODE_OP_MOD_STILL_NEG 0 -#define PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD 1 -#define PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_HD 2 -#define PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_FD 5 -#define PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_FD 6 - - -/*******************************************************************/ - -#endif /* _ETH_PHY_H */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c deleted file mode 100644 index 8de8dae21..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c +++ /dev/null @@ -1,130 +0,0 @@ -/*! - * \file mii.c - * \brief Media Independent Interface (MII) driver - * \version $Revision: 1.2 $ - * \author Michael Norman - * - * \warning This driver assumes that FEC0 is used for all MII management - * communications. For dual PHYs, etc. Insure that FEC0_MDC and - * FEC0_MDIO are connected to the PHY's MDC and MDIO. - */ - -#include "common.h" -#include "mii.h" - -/********************************************************************/ -/* - * \brief Initialize the MII interface controller - * \param System Clock Frequency (in MHz) - * \warning The system clock in this case is the clock that drives - * the FEC logic. This may be different from the speed at which - * the CPU is operating. - * - * Initialize the MII clock (EMDC) frequency. The desired MII clock is 2.5MHz: - * - * MII Speed Setting = System_Clock / (2.5MHz * 2) - * (plus 1 to round up) - */ -void -mii_init(int ch, int sys_clk_mhz) -{ - ENET_MSCR/*(ch)*/ = 0 -#ifdef TSIEVB/*TSI EVB requires a longer hold time than default 10 ns*/ - | ENET_MSCR_HOLDTIME(2) -#endif - | ENET_MSCR_MII_SPEED((2*sys_clk_mhz/5)+1) - ; -} -/********************************************************************/ -/*! - * \brief Write a value to a PHY's MII register. - * - * \param phy_addr Address of the PHY - * \param reg_addr Address of the register in the PHY - * \param data Data to be written to the PHY register - * \return 0 if write is successful; 1 if write times out - * - * mii_write() polls for the FEC's MII interrupt event (which should - * be masked from the interrupt handler) and clears it. If after a - * suitable amount of time the event isn't triggered, a non-zero value - * is returned. - */ -int -mii_write(int ch, int phy_addr, int reg_addr, int data) -{ - int timeout; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - /* Initiatate the MII Management write */ - ENET_MMFR/*(ch)*/ = 0 - | ENET_MMFR_ST(0x01) - | ENET_MMFR_OP(0x01) - | ENET_MMFR_PA(phy_addr) - | ENET_MMFR_RA(reg_addr) - | ENET_MMFR_TA(0x02) - | ENET_MMFR_DATA(data); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for (timeout = 0; timeout < MII_TIMEOUT; timeout++) - { - if (ENET_EIR/*(ch)*/ & ENET_EIR_MII_MASK) - break; - } - - if(timeout == MII_TIMEOUT) - return 1; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - return 0; -} -/********************************************************************/ -/*! - * \brief Read a value from a PHY's MII register. - * \param phy_addr Address of the PHY - * \param reg_addr Address of the register in the PHY - * \param data Pointer to location were read data will be stored - * \return 0 if write is successful; 1 if write times out - * - * mii_read() polls for the FEC's MII interrupt event (which should - * be masked from the interrupt handler) and clears it. If after a - * suitable amount of time the event isn't triggered, a non-zero value - * is returned. - */ -int -mii_read(int ch, int phy_addr, int reg_addr, int *data) -{ - int timeout; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - /* Initiatate the MII Management read */ - ENET_MMFR/*(ch)*/ = 0 - | ENET_MMFR_ST(0x01) - | ENET_MMFR_OP(0x2) - | ENET_MMFR_PA(phy_addr) - | ENET_MMFR_RA(reg_addr) - | ENET_MMFR_TA(0x02); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for (timeout = 0; timeout < MII_TIMEOUT; timeout++) - { - if (ENET_EIR/*(ch)*/ & ENET_EIR_MII_MASK) - break; - } - - if(timeout == MII_TIMEOUT) - return 1; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - *data = ENET_MMFR/*(ch)*/ & 0x0000FFFF; - - return 0; -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h deleted file mode 100644 index 8c94d95f7..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h +++ /dev/null @@ -1,30 +0,0 @@ -/*! - * \file mii.h - * \brief Media Independent Interface (MII) driver - * \version $Revision: 1.2 $ - * \author Michael Norman - * - * \warning - * - */ - -#ifndef _MII_H_ -#define _MII_H_ - -/*******************************************************************/ - -#define MII_TIMEOUT 0x1FFFF -#define MII_LINK_TIMEOUT 0x1FFFF - -void -mii_init(int, int); - -int -mii_write(int, int, int, int); - -int -mii_read(int, int, int, int*); - -/*******************************************************************/ - -#endif /* _MII_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h deleted file mode 100644 index 5e2c98515..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h +++ /dev/null @@ -1,233 +0,0 @@ -// ---------------------------------------------------------------------- -// File: nbuf.h -// Purpose: Definitions for Network Buffer Allocation. -// -// Notes: -// -// ---------------------------------------------------------------------- - -#ifndef _NBUF_H_ -#define _NBUF_H_ - -// Define number of MACs -#define NUM_CHANNELS 1/*b06862*/ - -// Choose Enhanced Buffer Descriptor or Legacy -#define ENHANCED_BD - -//b06862: define Endianess for Little Endian architectures like ARM. -//Motorola/Freescale uses Big Endian or Register-Endianess -#define NBUF_LITTLE_ENDIAN - -// Transmit packet directly or copy to dedicated buffers. If packets -// are not alligned dedicated Tx buffers can be used -//#define USE_DEDICATED_TX_BUFFERS - -// Buffer sizes in bytes (must be divisible by 16) -#define RX_BUFFER_SIZE 256 -#define TX_BUFFER_SIZE 256 - -// Number of Receive and Transmit Buffers and Buffer Descriptors -#define NUM_RXBDS 20//10 -#define NUM_TXBDS 20//10 - -// Buffer Descriptor Format -#ifdef ENHANCED_BD - typedef struct - { - uint16_t status; /* control and status */ - uint16_t length; /* transfer length */ - uint8_t *data; /* buffer address */ - uint32_t ebd_status; - uint16_t length_proto_type; - uint16_t payload_checksum; - uint32_t bdu; - uint32_t timestamp; - uint32_t reserverd_word1; - uint32_t reserverd_word2; - } NBUF; -#else - typedef struct - { - uint16_t status; /* control and status */ - uint16_t length; /* transfer length */ - uint8_t *data; /* buffer address */ - } NBUF; -#endif /* ENHANCED_BD */ - -// ---------------------------------------------------------------------- -// Function Declarations -// ---------------------------------------------------------------------- -void -nbuf_alloc(int ch); - -void -nbuf_init(int); - -void -nbuf_start_rx(int); - -void -nbuf_flush(int); - -//NM - return value -void -enet_get_received_packet(int, NBUF *); - -//NM - return value -void -enet_fill_txbds(int, NBUF *); - -void -enet_transmit_packet(int,NBUF *); - -#ifdef NBUF_LITTLE_ENDIAN - -//For Freescale ARM Architecture - -// ---------------------------------------------------------------------- -// TX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_R 0x0080 -#define TX_BD_TO1 0x0040 -#define TX_BD_W 0x0020 -#define TX_BD_TO2 0x0010 -#define TX_BD_L 0x0008 -#define TX_BD_TC 0x0004 -#define TX_BD_ABC 0x0002 - -// ---------------------------------------------------------------------- -// TX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_INT 0x00000040 -#define TX_BD_TS 0x00000020 -#define TX_BD_PINS 0x00000010 -#define TX_BD_IINS 0x00000008 -#define TX_BD_TXE 0x00800000 -#define TX_BD_UE 0x00200000 -#define TX_BD_EE 0x00100000 -#define TX_BD_FE 0x00080000 -#define TX_BD_LCE 0x00040000 -#define TX_BD_OE 0x00020000 -#define TX_BD_TSE 0x00010000 - -#define TX_BD_BDU 0x00000080 - -// ---------------------------------------------------------------------- -// RX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- - -// Offset 0 flags - status: Big Endian -#define RX_BD_E 0x0080 -#define RX_BD_R01 0x0040 -#define RX_BD_W 0x0020 -#define RX_BD_R02 0x0010 -#define RX_BD_L 0x0008 -#define RX_BD_M 0x0001 -#define RX_BD_BC 0x8000 -#define RX_BD_MC 0x4000 -#define RX_BD_LG 0x2000 -#define RX_BD_NO 0x1000 -#define RX_BD_CR 0x0400 -#define RX_BD_OV 0x0200 -#define RX_BD_TR 0x0100 - -// ---------------------------------------------------------------------- -// RX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define RX_BD_ME 0x00000080 -#define RX_BD_PE 0x00000004 -#define RX_BD_CE 0x00000002 -#define RX_BD_UC 0x00000001 - -#define RX_BD_INT 0x00008000 - -#define RX_BD_ICE 0x20000000 -#define RX_BD_PCR 0x10000000 -#define RX_BD_VLAN 0x04000000 -#define RX_BD_IPV6 0x02000000 -#define RX_BD_FRAG 0x01000000 - -#define RX_BD_BDU 0x00000080 - -#else - -//For Freescale ColdFire Architecture -// ---------------------------------------------------------------------- -// TX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_R 0x8000 -#define TX_BD_TO1 0x4000 -#define TX_BD_W 0x2000 -#define TX_BD_TO2 0x1000 -#define TX_BD_L 0x0800 -#define TX_BD_TC 0x0400 -#define TX_BD_ABC 0x0200 - -// ---------------------------------------------------------------------- -// TX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_INT 0x40000000 -#define TX_BD_TS 0x20000000 -#define TX_BD_PINS 0x10000000 -#define TX_BD_IINS 0x08000000 -#define TX_BD_TXE 0x00008000 -#define TX_BD_UE 0x00002000 -#define TX_BD_EE 0x00001000 -#define TX_BD_FE 0x00000800 -#define TX_BD_LCE 0x00000400 -#define TX_BD_OE 0x00000200 -#define TX_BD_TSE 0x00000100 - -#define TX_BD_BDU 0x80000000 - -// ---------------------------------------------------------------------- -// RX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- - -// Offset 0 flags - status -#define RX_BD_E 0x8000 -#define RX_BD_R01 0x4000 -#define RX_BD_W 0x2000 -#define RX_BD_R02 0x1000 -#define RX_BD_L 0x0800 -#define RX_BD_M 0x0100 -#define RX_BD_BC 0x0080 -#define RX_BD_MC 0x0040 -#define RX_BD_LG 0x0020 -#define RX_BD_NO 0x0010 -#define RX_BD_CR 0x0004 -#define RX_BD_OV 0x0002 -#define RX_BD_TR 0x0001 - -// ---------------------------------------------------------------------- -// RX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define RX_BD_ME 0x80000000 -#define RX_BD_PE 0x04000000 -#define RX_BD_CE 0x02000000 -#define RX_BD_UC 0x01000000 -#define RX_BD_INT 0x00800000 -#define RX_BD_ICE 0x00000020 -#define RX_BD_PCR 0x00000010 -#define RX_BD_VLAN 0x00000004 -#define RX_BD_IPV6 0x00000002 -#define RX_BD_FRAG 0x00000001 - -#define RX_BD_BDU 0x80000000 - - -#endif - -// ---------------------------------------------------------------------- -// Defines for word offsets of various fields of RX Enhanced BDs -// ---------------------------------------------------------------------- -//#define RX_EBD_HEADER_LENGTH_OFFSET 12 -//#define RX_EBD_PROTOCOL_TYPE_OFFSET 12 -//#define RX_EBD_PAYLOAD_CHKSM_OFFSET 14 -//#define RX_EBD_BDU_OFFSET 16 -//#define RX_EBD_TIMESTAMP_MSB_OFFSET 20 -//#define RX_EBD_TIMESTAMP_LSB_OFFSET 22 - - -#endif /* _NBUF_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c deleted file mode 100644 index bceea3322..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * File: mcg.c - * Purpose: Driver for enabling the PLL in 1 of 4 options - * - * Notes: - * Assumes the MCG mode is in the default FEI mode out of reset - * One of 4 clocking oprions can be selected. - * One of 16 crystal values can be used - */ - -#include "common.h" -#include "mcg.h" - -extern int core_clk_khz; -extern int core_clk_mhz; -extern int periph_clk_khz; - -unsigned char pll_init(unsigned char clk_option, unsigned char crystal_val) -{ - unsigned char pll_freq; - - if (clk_option > 3) {return 0;} //return 0 if one of the available options is not selected - if (crystal_val > 15) {return 1;} // return 1 if one of the available crystal options is not available -//This assumes that the MCG is in default FEI mode out of reset. - -// First move to FBE mode -#if (defined(K60_CLK) || defined(K53_CLK) || defined(ASB817)) - MCG_C2 = 0; -#else -// Enable external oscillator, RANGE=2, HGO=1, EREFS=1, LP=0, IRCS=0 - MCG_C2 = MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK; -#endif - -// after initialization of oscillator release latched state of oscillator and GPIO - SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK; - LLWU_CS |= LLWU_CS_ACKISO_MASK; - -// Select external oscilator and Reference Divider and clear IREFS to start ext osc -// CLKS=2, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0 - MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(3); - - /* if we aren't using an osc input we don't need to wait for the osc to init */ -#if (!defined(K60_CLK) && !defined(K53_CLK) && !defined(ASB817)) - while (!(MCG_S & MCG_S_OSCINIT_MASK)){}; // wait for oscillator to initialize -#endif - - while (MCG_S & MCG_S_IREFST_MASK){}; // wait for Reference clock Status bit to clear - - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}; // Wait for clock status bits to show clock source is ext ref clk - -// Now in FBE - -#if (defined(K60_CLK) || defined(K53_CLK)) - MCG_C5 = MCG_C5_PRDIV(0x18); -#else -// Configure PLL Ref Divider, PLLCLKEN=0, PLLSTEN=0, PRDIV=5 -// The crystal frequency is used to select the PRDIV value. Only even frequency crystals are supported -// that will produce a 2MHz reference clock to the PLL. - MCG_C5 = MCG_C5_PRDIV(crystal_val); // Set PLL ref divider to match the crystal used -#endif - - // Ensure MCG_C6 is at the reset default of 0. LOLIE disabled, PLL disabled, clk monitor disabled, PLL VCO divider is clear - MCG_C6 = 0x0; -// Select the PLL VCO divider and system clock dividers depending on clocking option - switch (clk_option) { - case 0: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2 - set_sys_dividers(0,0,0,1); - // Set the VCO divider and enable the PLL for 50MHz, LOLIE=0, PLLS=1, CME=0, VDIV=1 - MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(1); //VDIV = 1 (x25) - pll_freq = 50; - break; - case 1: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4 - set_sys_dividers(0,1,1,3); - // Set the VCO divider and enable the PLL for 100MHz, LOLIE=0, PLLS=1, CME=0, VDIV=26 - MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(26); //VDIV = 26 (x50) - pll_freq = 100; - break; - case 2: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4 - set_sys_dividers(0,1,1,3); - // Set the VCO divider and enable the PLL for 96MHz, LOLIE=0, PLLS=1, CME=0, VDIV=24 - MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(24); //VDIV = 24 (x48) - pll_freq = 96; - break; - case 3: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2 - set_sys_dividers(0,0,0,1); - // Set the VCO divider and enable the PLL for 48MHz, LOLIE=0, PLLS=1, CME=0, VDIV=0 - MCG_C6 = MCG_C6_PLLS_MASK; //VDIV = 0 (x24) - pll_freq = 48; - break; - } - while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set - - while (!(MCG_S & MCG_S_LOCK_MASK)){}; // Wait for LOCK bit to set - -// Now running PBE Mode - -// Transition into PEE by setting CLKS to 0 -// CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0 - MCG_C1 &= ~MCG_C1_CLKS_MASK; - -// Wait for clock status bits to update - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){}; - -// Now running PEE Mode - -return pll_freq; -} //pll_init - - - /* - * This routine must be placed in RAM. It is a workaround for errata e2448. - * Flash prefetch must be disabled when the flash clock divider is changed. - * This cannot be performed while executing out of flash. - * There must be a short delay after the clock dividers are changed before prefetch - * can be re-enabled. - */ -#if (defined(IAR)) - __ramfunc void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4) -#elif (defined(CW)) -__relocate_code__ -void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4) -#endif -{ - uint32 temp_reg; - uint8 i; - - temp_reg = FMC_PFAPR; // store present value of FMC_PFAPR - - // set M0PFD through M7PFD to 1 to disable prefetch - FMC_PFAPR |= FMC_PFAPR_M7PFD_MASK | FMC_PFAPR_M6PFD_MASK | FMC_PFAPR_M5PFD_MASK - | FMC_PFAPR_M4PFD_MASK | FMC_PFAPR_M3PFD_MASK | FMC_PFAPR_M2PFD_MASK - | FMC_PFAPR_M1PFD_MASK | FMC_PFAPR_M0PFD_MASK; - - // set clock dividers to desired value - SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(outdiv1) | SIM_CLKDIV1_OUTDIV2(outdiv2) - | SIM_CLKDIV1_OUTDIV3(outdiv3) | SIM_CLKDIV1_OUTDIV4(outdiv4); - - // wait for dividers to change - for (i = 0 ; i < outdiv4 ; i++) - {} - - FMC_PFAPR = temp_reg; // re-store original value of FMC_PFAPR - - return; -} // set_sys_dividers - - -/********************************************************************/ -void mcg_pee_2_blpi(void) -{ - uint8 temp_reg; - // Transition from PEE to BLPI: PEE -> PBE -> FBE -> FBI -> BLPI - - // Step 1: PEE -> PBE - MCG_C1 |= MCG_C1_CLKS(2); // System clock from external reference OSC, not PLL. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}; // Wait for clock status to update. - - // Step 2: PBE -> FBE - MCG_C6 &= ~MCG_C6_PLLS_MASK; // Clear PLLS to select FLL, still running system from ext OSC. - while (MCG_S & MCG_S_PLLST_MASK){}; // Wait for PLL status flag to reflect FLL selected. - - // Step 3: FBE -> FBI - MCG_C2 &= ~MCG_C2_LP_MASK; // FLL remains active in bypassed modes. - MCG_C2 |= MCG_C2_IRCS_MASK; // Select fast (1MHz) internal reference - temp_reg = MCG_C1; - temp_reg &= ~(MCG_C1_CLKS_MASK | MCG_C1_IREFS_MASK); - temp_reg |= (MCG_C1_CLKS(1) | MCG_C1_IREFS_MASK); // Select internal reference (fast IREF clock @ 1MHz) as MCG clock source. - MCG_C1 = temp_reg; - - while (MCG_S & MCG_S_IREFST_MASK){}; // Wait for Reference Status bit to update. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x1){}; // Wait for clock status bits to update - - // Step 4: FBI -> BLPI - MCG_C1 |= MCG_C1_IREFSTEN_MASK; // Keep internal reference clock running in STOP modes. - MCG_C2 |= MCG_C2_LP_MASK; // FLL remains disabled in bypassed modes. - while (!(MCG_S & MCG_S_IREFST_MASK)){}; // Wait for Reference Status bit to update. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x1){}; // Wait for clock status bits to update. - -} // end MCG PEE to BLPI -/********************************************************************/ -void mcg_blpi_2_pee(void) -{ - uint8 temp_reg; - // Transition from BLPI to PEE: BLPI -> FBI -> FEI -> FBE -> PBE -> PEE - - // Step 1: BLPI -> FBI - MCG_C2 &= ~MCG_C2_LP_MASK; // FLL remains active in bypassed modes. - while (!(MCG_S & MCG_S_IREFST_MASK)){}; // Wait for Reference Status bit to update. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x1){}; // Wait for clock status bits to update - - // Step 2: FBI -> FEI - MCG_C2 &= ~MCG_C2_LP_MASK; // FLL remains active in bypassed modes. - temp_reg = MCG_C2; // assign temporary variable of MCG_C2 contents - temp_reg &= ~MCG_C2_RANGE_MASK; // set RANGE field location to zero - temp_reg |= (0x2 << 0x4); // OR in new values - MCG_C2 = temp_reg; // store new value in MCG_C2 - MCG_C4 = 0x0E; // Low-range DCO output (~10MHz bus). FCTRIM=%0111. - MCG_C1 = 0x04; // Select internal clock as MCG source, FRDIV=%000, internal reference selected. - - while (!(MCG_S & MCG_S_IREFST_MASK)){}; // Wait for Reference Status bit to update - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x0){}; // Wait for clock status bits to update - - // Handle FEI to PEE transitions using standard clock initialization routine. - core_clk_mhz = pll_init(CORE_CLK_MHZ, REF_CLK); - - /* Use the value obtained from the pll_init function to define variables - * for the core clock in kHz and also the peripheral clock. These - * variables can be used by other functions that need awareness of the - * system frequency. - */ - core_clk_khz = core_clk_mhz * 1000; - periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1); -} // end MCG BLPI to PEE -/********************************************************************/ - -void mcg_pbe_2_pee(void) -{ - MCG_C1 &= ~MCG_C1_CLKS_MASK; // select PLL as MCG_OUT - // Wait for clock status bits to update - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){}; - - switch (CORE_CLK_MHZ) { - case PLL50: - core_clk_khz = 50000; - break; - case PLL100: - core_clk_khz = 100000; - break; - case PLL96: - core_clk_khz = 96000; - break; - case PLL48: - core_clk_khz = 48000; - break; - } -} diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h deleted file mode 100644 index b214bffc2..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * File: pll_init.h - * Purpose: pll_driver specific declarations - * - * Notes: - */ -#ifndef __MCG_H__ -#define __MCG_H__ -/********************************************************************/ - -/* For some reason CW needs to have cw.h explicitly included here for - * the code relocation of set_sys_dividers() to work correctly even - * though common.h should pull in cw.h. - */ -#if (defined(CW)) - #include "cw.h" -#endif - -unsigned char pll_init(unsigned char, unsigned char); - -void mcg_pee_2_blpi(void); -void mcg_blpi_2_pee(void); -void mcg_pbe_2_pee(void); - -#if (defined(IAR)) - __ramfunc void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4); -#elif (defined(CW)) - __relocate_code__ - void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4); -#endif - -enum clk_option -{ - PLL50, - PLL100, - PLL96, - PLL48 -}; - -enum crystal_val -{ - XTAL2, - XTAL4, - XTAL6, - XTAL8, - XTAL10, - XTAL12, - XTAL14, - XTAL16, - XTAL18, - XTAL20, - XTAL22, - XTAL24, - XTAL26, - XTAL28, - XTAL30, - XTAL32 -}; - -/********************************************************************/ -#endif /* __MCG_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c deleted file mode 100644 index c3eb9d704..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * File: uart.c - * Purpose: Provide common UART routines for serial IO - * - * Notes: - * - */ - -#include "common.h" -#include "uart.h" - -/********************************************************************/ -/* - * Initialize the UART for 8N1 operation, interrupts disabled, and - * no hardware flow-control - * - * NOTE: Since the UARTs are pinned out in multiple locations on most - * Kinetis devices, this driver does not enable UART pin functions. - * The desired pins should be enabled before calling this init function. - * - * Parameters: - * uartch UART channel to initialize - * sysclk UART module Clock in kHz(used to calculate baud) - * baud UART baud rate - */ -void uart_init (UART_MemMapPtr uartch, int sysclk, int baud) -{ - register uint16 sbr, brfa; - uint8 temp; - - /* Enable the clock to the selected UART */ - if(uartch == UART0_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART0_MASK; - else - if (uartch == UART1_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART1_MASK; - else - if (uartch == UART2_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART2_MASK; - else - if(uartch == UART3_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART3_MASK; - else - if(uartch == UART4_BASE_PTR) - SIM_SCGC1 |= SIM_SCGC1_UART4_MASK; - else - SIM_SCGC1 |= SIM_SCGC1_UART5_MASK; - - /* Make sure that the transmitter and receiver are disabled while we - * change settings. - */ - UART_C2_REG(uartch) &= ~(UART_C2_TE_MASK - | UART_C2_RE_MASK ); - - /* Configure the UART for 8-bit mode, no parity */ - UART_C1_REG(uartch) = 0; /* We need all default settings, so entire register is cleared */ - - /* Calculate baud settings */ - sbr = (uint16)((sysclk*1000)/(baud * 16)); - - /* Save off the current value of the UARTx_BDH except for the SBR field */ - temp = UART_BDH_REG(uartch) & ~(UART_BDH_SBR(0x1F)); - - UART_BDH_REG(uartch) = temp | UART_BDH_SBR(((sbr & 0x1F00) >> 8)); - UART_BDL_REG(uartch) = (uint8)(sbr & UART_BDL_SBR_MASK); - - /* Determine if a fractional divider is needed to get closer to the baud rate */ - brfa = (((sysclk*32000)/(baud * 16)) - (sbr * 32)); - - /* Save off the current value of the UARTx_C4 register except for the BRFA field */ - temp = UART_C4_REG(uartch) & ~(UART_C4_BRFA(0x1F)); - - UART_C4_REG(uartch) = temp | UART_C4_BRFA(brfa); - - /* Enable receiver and transmitter */ - UART_C2_REG(uartch) |= (UART_C2_TE_MASK - | UART_C2_RE_MASK ); -} -/********************************************************************/ -/* - * Wait for a character to be received on the specified UART - * - * Parameters: - * channel UART channel to read from - * - * Return Values: - * the received character - */ -char uart_getchar (UART_MemMapPtr channel) -{ - /* Wait until character has been received */ - while (!(UART_S1_REG(channel) & UART_S1_RDRF_MASK)); - - /* Return the 8-bit data from the receiver */ - return UART_D_REG(channel); -} -/********************************************************************/ -/* - * Wait for space in the UART Tx FIFO and then send a character - * - * Parameters: - * channel UART channel to send to - * ch character to send - */ -void uart_putchar (UART_MemMapPtr channel, char ch) -{ - /* Wait until space is available in the FIFO */ - while(!(UART_S1_REG(channel) & UART_S1_TDRE_MASK)); - - /* Send the character */ - UART_D_REG(channel) = (uint8)ch; - } -/********************************************************************/ -/* - * Check to see if a character has been received - * - * Parameters: - * channel UART channel to check for a character - * - * Return values: - * 0 No character received - * 1 Character has been received - */ -int uart_getchar_present (UART_MemMapPtr channel) -{ - return (UART_S1_REG(channel) & UART_S1_RDRF_MASK); -} -/********************************************************************/ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h deleted file mode 100644 index 3ac90093a..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * File: uart.h - * Purpose: Provide common ColdFire UART routines for polled serial IO - * - * Notes: - */ - -#ifndef __UART_H__ -#define __UART_H__ - -/********************************************************************/ - -void uart_init (UART_MemMapPtr, int, int); -char uart_getchar (UART_MemMapPtr); -void uart_putchar (UART_MemMapPtr, char); -int uart_getchar_present (UART_MemMapPtr); - -/********************************************************************/ - -#endif /* __UART_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c deleted file mode 100644 index 2a63ff7ac..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * File: wdog.c - * Purpose: Provide common watchdog module routines - * - * Notes: Need to add more functionality. Right now it - * is just a disable routine since we know almost - * all projects will need that. - * - */ - -#include "common.h" -#include "wdog.h" - -/********************************************************************/ -/* - * Watchdog timer disable routine - * - * Parameters: - * none - */ -void wdog_disable(void) -{ - /* First unlock the watchdog so that we can write to registers */ - wdog_unlock(); - - /* Clear the WDOGEN bit to disable the watchdog */ - WDOG_STCTRLH &= ~WDOG_STCTRLH_WDOGEN_MASK; -} -/********************************************************************/ -/* - * Watchdog timer unlock routine. Writing 0xC520 followed by 0xD928 - * will unlock the write once registers in the WDOG so they are writable - * within the WCT period. - * - * Parameters: - * none - */ -void wdog_unlock(void) -{ - /* NOTE: DO NOT SINGLE STEP THROUGH THIS FUNCTION!!! */ - /* There are timing requirements for the execution of the unlock. If - * you single step through the code you will cause the CPU to reset. - */ - - /* This sequence must execute within 20 clock cycles, so disable - * interrupts will keep the code atomic and ensure the timing. - */ - DisableInterrupts; - - /* Write 0xC520 to the unlock register */ - WDOG_UNLOCK = 0xC520; - - /* Followed by 0xD928 to complete the unlock */ - WDOG_UNLOCK = 0xD928; - - /* Re-enable interrupts now that we are done */ - EnableInterrupts; -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h deleted file mode 100644 index 943229a39..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File: wdog.h - * Purpose: Provide common watchdog module routines - * - * Notes: - */ - -#ifndef __WDOG_H__ -#define __WDOG_H__ - -/********************************************************************/ - -// function prototypes -void wdog_disable(void); -void wdog_unlock(void); - -/********************************************************************/ -#endif /* __WDOG_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c deleted file mode 100644 index 1d6d6f359..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple GPIO (parallel port) IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo include. */ -#include "partest.h" - -/* Freescale includes. */ -#include "common.h" - -/* Only the LEDs on one of the two seven segment displays are used. */ -#define partstMAX_LEDS 4 - -/* The bits used to control the LEDs on the TWR-K60N512. */ -const unsigned long ulLEDs[ partstMAX_LEDS ] = { ( 1UL << 10UL ), ( 1UL << 29UL ), ( 1UL << 28UL ), ( 1UL << 11UL ) }; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Set PTA10, PTA11, PTA28, and PTA29 (connected to LED's) for GPIO - functionality. */ - PORTA_PCR10 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR11 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR28 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR29 = ( 0 | PORT_PCR_MUX( 1 ) ); - - /* Change PTA10, PTA11, PTA28, PTA29 to outputs. */ - GPIOA_PDDR=GPIO_PDDR_PDD( ulLEDs[ 0 ] | ulLEDs[ 1 ] | ulLEDs[ 2 ] | ulLEDs[ 3 ] ); - - /* Start with LEDs off. */ - GPIOA_PTOR = ~0U; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed portBASE_TYPE xValue ) -{ - if( ulLED < partstMAX_LEDS ) - { - if( xValue == pdTRUE ) - { - GPIOA_PCOR = ulLEDs[ ulLED ]; - } - else - { - GPIOA_PSOR = ulLEDs[ ulLED ]; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partstMAX_LEDS ) - { - GPIOA_PTOR = ulLEDs[ ulLED ]; - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partstMAX_LEDS ) - { - lReturn = GPIOA_PDOR & ulLEDs[ ulLED ]; - - if( lReturn == 0 ) - { - lReturn = pdTRUE; - } - else - { - lReturn = pdFALSE; - } - } - - return lReturn; -} diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd deleted file mode 100644 index 999e00c69..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,1785 +0,0 @@ - - - - 2 - - Full - - ARM - - 1 - - C-SPY - 2 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 1 - 1 - 1 - - - - - - - - - JLINK_ID - 2 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - MACRAIGOR_ID - 2 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - PEMICRO_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - STLINK_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - XDS100_ID - 2 - - 0 - 1 - 1 - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - Blinky - - ARM - - 1 - - C-SPY - 2 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 1 - 1 - 1 - - - - - - - - - JLINK_ID - 2 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - MACRAIGOR_ID - 2 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - PEMICRO_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - STLINK_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - XDS100_ID - 2 - - 0 - 1 - 1 - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp deleted file mode 100644 index 009a00273..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,2016 +0,0 @@ - - - - 2 - - Full - - ARM - - 1 - - General - 3 - - 21 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 28 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Blinky - - ARM - - 1 - - General - 3 - - 21 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 28 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common_Demo_Files - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\countsem.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\..\Common\Minimal\TimerDemo.c - - - - FreeRTOS_Source - - portable - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - Freescale_Code - - common - - $PROJ_DIR$\Freescale_Code\common\startup.c - - - - cpu - - $PROJ_DIR$\Freescale_Code\cpu\arm_cm4.c - - - $PROJ_DIR$\Freescale_Code\cpu\crt0.s - - - $PROJ_DIR$\Freescale_Code\cpu\start.c - - - $PROJ_DIR$\Freescale_Code\cpu\sysinit.c - - - $PROJ_DIR$\Freescale_Code\cpu\vectors.c - - - - drivers - - enet - - Blinky - - - $PROJ_DIR$\Freescale_Code\drivers\enet\enet.c - - - $PROJ_DIR$\Freescale_Code\drivers\enet\eth_phy.c - - - $PROJ_DIR$\Freescale_Code\drivers\enet\mii.c - - - - mcg - - $PROJ_DIR$\Freescale_Code\drivers\mcg\mcg.c - - - - uart - - $PROJ_DIR$\Freescale_Code\drivers\uart\uart.c - - - - wdog - - $PROJ_DIR$\Freescale_Code\drivers\wdog\wdog.c - - - - - - FreeTCPIP (based on uIP) - - Blinky - - - webserver - - Common - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - - Port specific - - $PROJ_DIR$\webserver\EMAC.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - - - $PROJ_DIR$\FreeRTOSConfig.h - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\main_blinky.c - - Full - - - - $PROJ_DIR$\ParTest.c - - Blinky - - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww deleted file mode 100644 index bbb1d0840..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww +++ /dev/null @@ -1,50 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - All - - gpio_k40_tower - FLASH_128KB_PFLASH - - - gpio_k40_tower - FLASH_64KB_PFLASH_64KB_DFLASH - - - gpio_k40_tower - RAM_128KB - - - RTOSDemo - FLASH_128KB_PFLASH - - - RTOSDemo - FLASH_64KB_PFLASH_64KB_DFLASH - - - RTOSDemo - RAM_128KB - - - gpio_k53_tower - FLASH_128KB_PFLASH - - - gpio_k53_tower - FLASH_64KB_PFLASH_64KB_DFLASH - - - gpio_k53_tower - RAM_128KB - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c deleted file mode 100644 index f6d840b7e..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c +++ /dev/null @@ -1,629 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c (this file) defines a comprehensive demo that creates many - * tasks, queues, semaphores and timers. It also demonstrates how Cortex-M3 - * interrupts can interact with FreeRTOS tasks/timers, a simple web server, and - * run time statistics gathering functionality. ***IF YOU ARE LOOKING FOR A - * SIMPLER STARTING POINT THEN USE THE "BLINKY" BUILD CONFIGURATION FIRST.*** - * - * If the Ethernet functionality is excluded, then this demo will run 'stand - * alone' (without the rest of the tower system) on the TWR-K60N512 tower - * module. If the Ethernet functionality is included, then the full Freescale - * K60 tower kit, including both the TWR-K60N512 and TWR-SER modules, is - * required (as the Ethernet connector is on the TWR-SER). The TWR-K60N512 is - * populated with a K60N512 Cortex-M4 microcontroller. - * - * The main() Function: - * main() creates four demo specific software timers, and one demo specific - * task (the web server task). It also creates a whole host of 'standard - * demo' tasks/queues/semaphores/timers, before starting the scheduler. The - * demo specific tasks and timers are described in the comments here. The - * standard demo tasks are described on the FreeRTOS.org web site. - * - * The standard demo tasks provide no specific functionality. They are - * included to both test the FreeRTOS port, and provide examples of how the - * various FreeRTOS API functions can be used. - * - * This demo creates 37 persistent tasks, then dynamically creates and destroys - * another two tasks as the demo executes. - * - * - * The Demo Specific "LED" Timers and Callback Function: - * Two very simple LED timers are created. All they do is toggle an LED each - * when the timer callback function is executed. The two timers share a - * callback function, so the callback function parameter is used to determine - * which timer actually expired, and therefore, which LED to toggle. Both - * timers use a different frequency, one toggles the blue LED and the other the - * green LED. - * - * The LED/Button Software Timer and the Button Interrupt: - * The user button SW2 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches the orange/yellow LED on, - * and resets the LED software timer. The LED timer has a 5000 millisecond (5 - * second) period, and uses a callback function that is defined to just turn the - * LED off again. Therefore, pressing the user button will turn the LED on, and - * the LED will remain on until a full five seconds pass without the button - * being pressed. - * - * The Demo Specific "Check" Timer and Callback Function: - * The check timer period is initially set to three seconds. The check timer - * callback function checks that all the standard demo tasks are not only still - * executing, but are executing without reporting any errors. If the check - * timer discovers that a task has either stalled, or reported an error, then it - * changes its own period from the initial three seconds, to just 200ms. The - * check timer callback function also toggles the orange/red LED each time it is - * called. This provides a visual indication of the system status: If the LED - * toggles every three seconds, then no issues have been discovered. If the LED - * toggles every 200ms, then an issue has been discovered with at least one - * task. The last reported issue is latched into the pcStatusMessage variable, - * and displayed at the bottom of the "task stats" web page served by the - * embedded web server task. - * - * The web server task: - * The web server task implements a simple embedded web server that includes - * CGI scripting. Pages are provided that allow task statistics, network - * statistics and run time statistics to be viewed. In addition, an IO page is - * served that allows the orange/yellow LED to be turned on and off. Finally, - * a page is included that serves a large jpg file. See the documentation page - * for this demo on the http://www.FreeRTOS.org web site for web server - * configuration and usage instructions. - * - * The Demo Specific Idle Hook Function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The Demo Specific Tick Hook Function: - * The tick hook function is used to test the interrupt safe software timer - * functionality. - * - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Freescale includes. */ -#include "common.h" - -/* Common demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "TimerDemo.h" -#include "PollQ.h" -#include "countsem.h" -#include "dynamic.h" - -/* The LED toggled by the check timer callback function. */ -#define mainCHECK_LED 3UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 2UL - -/* The LEDs toggled by the two simple flash LED timers. */ -#define mainLED0 0UL -#define mainLED1 1UL - -/* Constant used by the standard timer test functions. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/* Priorities used by the various different standard demo tasks. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The period at which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. ms are converted to the -equivalent in ticks using the portTICK_PERIOD_MS constant. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. ms are converted to the equivalent -in ticks using the portTICK_PERIOD_MS constant. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS ) - -/* The LED that is turned on by pressing SW2 remains on until the button has not -been pushed for a full 5000ms. */ -#define mainBUTTON_LED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* The period at which the two simple LED flash timers will execute their -callback functions. */ -#define mainLED1_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS ) -#define mainLED2_TIMER_PERIOD_MS ( 600UL / portTICK_PERIOD_MS ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0UL ) - -/* The vector used by the GPIO port E. Button SW2 is configured to generate -an interrupt on this port. */ -#define mainGPIO_E_VECTOR ( 91 ) - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * Creates the timers that are specific to this demo - namely, the check timer - * the button LED timer, and the two simple LED flash timers. - */ -static void prvCreateDemoSpecificTimers( void ); - -/* - * The LED/button timer callback function. This does nothing but switch an LED - * off. - */ -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The callback function used by both simple LED flash timers. Both timers use - * the same callback, so the function parameter is used to determine which LED - * should be flashed (effectively to determine which timer has expired). - */ -static void prvLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * Contains the implementation of the web server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The LED/Button software timer. This uses prvButtonLEDTimerCallback() as it's -callback function. */ -static TimerHandle_t xLEDButtonTimer = NULL; - -/* The check timer. This uses prvCheckTimerCallback() as its callback -function. */ -static TimerHandle_t xCheckTimer = NULL; - -/* LED timers - these simply flash LEDs, each using a different frequency. Both -use the same prvLEDTimerCallback() callback function. */ -static TimerHandle_t xLED1Timer = NULL, xLED2Timer = NULL; - -/* If an error is detected in a standard demo task, then pcStatusMessage will -be set to point to a string that identifies the offending task. This is just -to make debugging easier. */ -static const char *pcStatusMessage = NULL; - -/* Used in the run time stats calculations. */ -static unsigned long ulClocksPer10thOfAMilliSecond = 0UL; - -/*-----------------------------------------------------------*/ - -void main( void ) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the timers that are specific to this demo - other timers are - created as part of the standard demo within vStartTimerDemoTask. */ - prvCreateDemoSpecificTimers(); - - /* Create a lot of 'standard demo' tasks. Nearly 40 tasks are created in - this demo. For a much simpler demo, select the 'blinky' build - configuration. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartCountingSemaphoreTasks(); - vStartDynamicPriorityTasks(); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* The suicide tasks must be created last, as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given - time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks and timers running. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ -static long lChangedTimerPeriodAlready = pdFALSE; - - /* Check the standard demo tasks are running without error. Latch the - latest reported error in the pcStatusMessage character pointer. The latched - string can be viewed using the embedded web server - it is displayed at - the bottom of the served "task stats" page. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\n"; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\n"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\n"; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\n"; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\n"; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\n"; - } - - if( xAreTimerDemoTasksStillRunning( ( mainCHECK_TIMER_PERIOD_MS ) ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo\n"; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\n"; - } - - if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: CountSem\n"; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: DynamicPriority\n"; - } - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in pcStatusMessage? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( pcStatusMessage != NULL ) - { - if( lChangedTimerPeriodAlready == pdFALSE ) - { - lChangedTimerPeriodAlready = pdTRUE; - - /* This call to xTimerChangePeriod() uses a zero block time. - Functions called from inside of a timer callback function must - *never* attempt to block. */ - xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdFALSE ); -} -/*-----------------------------------------------------------*/ - -static void prvLEDTimerCallback( TimerHandle_t xTimer ) -{ -unsigned long ulLED; - - /* This callback is shared by two timers, so the parameter is used to - determine which LED to toggle. The LED number is stored in the ID of the - timer. */ - ulLED = ( unsigned long ) pvTimerGetTimerID( xTimer ); - vParTestToggleLED( ulLED ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void vPort_E_ISRHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdTRUE ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is equal to or below the - configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDButtonTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - PORTE_ISFR = 0xFFFFFFFFUL; - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Enable the interrupt on SW1. */ - taskDISABLE_INTERRUPTS(); - PORTE_PCR26 = PORT_PCR_MUX( 1 ) | PORT_PCR_IRQC( 0xA ) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK; - enable_irq( mainGPIO_E_VECTOR ); - - /* The interrupt calls an interrupt safe API function - so its priority must - be equal to or lower than configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY. */ - set_irq_priority( mainGPIO_E_VECTOR, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Configure the LED outputs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -static void prvCreateDemoSpecificTimers( void ) -{ - /* This function creates the timers, but does not start them. This is - because the standard demo timer test is started from main(), after this - function is called. The standard demo timer test will deliberately fill the - timer command queue - and will fail the test if the command queue already - holds start commands for the timers created here. Instead, the timers - created in this function are started from the idle task, at which time, the - timer service/daemon task will be running, and will have drained the timer - command queue. */ - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDButtonTimer = xTimerCreate( "ButtonLEDTimer", /* A text name, purely to help debugging. */ - ( mainBUTTON_LED_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvButtonLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - /* Create the software timers used to simply flash LEDs. These two timers - share a callback function, so the callback parameter is used to pass in the - LED that should be toggled. */ - xLED1Timer = xTimerCreate( "LED1Timer", /* A text name, purely to help debugging. */ - ( mainLED1_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) mainLED0, /* The ID is used to pass in the number of the LED to be toggled. */ - prvLEDTimerCallback /* The callback function simply toggles the LED specified by its parameter. */ - ); - - xLED2Timer = xTimerCreate( "LED2Timer", /* A text name, purely to help debugging. */ - ( mainLED2_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) mainLED1, /* The ID is used to pass in the number of the LED to be toggled. */ - prvLEDTimerCallback /* The callback function simply toggles the LED specified by its parameter. */ - ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -static long lPrintedOut = pdFALSE; -volatile size_t xFreeHeapSpace; - - if( lPrintedOut == pdFALSE ) - { - lPrintedOut = pdTRUE; - - /* The timer command queue will have been filled when the timer test - tasks were created in main() (this is part of the test they perform). - Therefore, while the check and LED timers can be created in main(), they - cannot be started from main(). Once the scheduler has started, the timer - service task will drain the command queue, and now the check and LED - timers can be started successfully. Normally the idle task must not - call a function that could cause it to block in case there are no tasks - that are able to run. In this case, however, it is ok as posting to the - timer command queue guarantees that at least the timer service/daemon - task will be able to execute. */ - xTimerStart( xCheckTimer, portMAX_DELAY ); - xTimerStart( xLED1Timer, portMAX_DELAY ); - xTimerStart( xLED2Timer, portMAX_DELAY ); - - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ - /* Call the periodic timer test, which tests the timer API functions that - can be called from an ISR. */ - vTimerPeriodicISRTests(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* A simple GET function used by a CGI script so it can display the - execution status at the bottom of the task stats web page served by the - embedded web server. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* How many clocks are there per tenth of a millisecond? */ - ulClocksPer10thOfAMilliSecond = configCPU_CLOCK_HZ / 10000UL; -} -/*-----------------------------------------------------------*/ - -unsigned long ulMainGetRunTimeCounterValue( void ) -{ -unsigned long ulSysTickCounts, ulTickCount, ulReturn; -const unsigned long ulSysTickReloadValue = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; -volatile unsigned long * const pulCurrentSysTickCount = ( ( volatile unsigned long *) 0xe000e018 ); -volatile unsigned long * const pulInterruptCTRLState = ( ( volatile unsigned long *) 0xe000ed04 ); -const unsigned long ulSysTickPendingBit = 0x04000000UL; - - /* NOTE: There are potentially race conditions here. However, it is used - anyway to keep the examples simple, and to avoid reliance on a separate - timer peripheral. */ - - - /* The SysTick is a down counter. How many clocks have passed since it was - last reloaded? */ - ulSysTickCounts = ulSysTickReloadValue - *pulCurrentSysTickCount; - - /* How many times has it overflowed? */ - ulTickCount = xTaskGetTickCountFromISR(); - - /* This is called from the context switch, so will be called from a - critical section. xTaskGetTickCountFromISR() contains its own critical - section, and the ISR safe critical sections are not designed to nest, - so reset the critical section. */ - portSET_INTERRUPT_MASK_FROM_ISR(); - - /* Is there a SysTick interrupt pending? */ - if( ( *pulInterruptCTRLState & ulSysTickPendingBit ) != 0UL ) - { - /* There is a SysTick interrupt pending, so the SysTick has overflowed - but the tick count not yet incremented. */ - ulTickCount++; - - /* Read the SysTick again, as the overflow might have occurred since - it was read last. */ - ulSysTickCounts = ulSysTickReloadValue - *pulCurrentSysTickCount; - } - - /* Convert the tick count into tenths of a millisecond. THIS ASSUMES - configTICK_RATE_HZ is 1000! */ - ulReturn = ( ulTickCount * 10UL ) ; - - /* Add on the number of tenths of a millisecond that have passed since the - tick count last got updated. */ - ulReturn += ( ulSysTickCounts / ulClocksPer10thOfAMilliSecond ); - - return ulReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c deleted file mode 100644 index 902a52155..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how Cortex-M3 interrupts can - * interact with FreeRTOS tasks/timers. - * - * This simple demo project runs 'stand alone' (without the rest of the tower - * system) on the TWR-K60N512 tower module, which is populated with a K60N512 - * Cortex-M4 microcontroller. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the blue LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves the - * Blocked state every 200 milliseconds, and therefore toggles the blue LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user button SW2 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches the green LED on, and - * resets the LED software timer. The LED timer has a 5000 millisecond (5 - * second) period, and uses a callback function that is defined to just turn the - * LED off again. Therefore, pressing the user button will turn the LED on, and - * the LED will remain on until a full five seconds pass without the button - * being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Freescale includes. */ -#include "common.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The LED will remain on until the button has not been pushed for a full -5000ms. */ -#define mainBUTTON_LED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggle by the queue receive task (blue). */ -#define mainTASK_CONTROLLED_LED ( 1UL << 10UL ) - -/* The LED turned on by the button interrupt, and turned off by the LED timer -(green). */ -#define mainTIMER_CONTROLLED_LED ( 1UL << 29UL ) - -/* The vector used by the GPIO port E. Button SW2 is configured to generate -an interrupt on this port. */ -#define mainGPIO_E_VECTOR ( 91 ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0UL ) - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses prvButtonLEDTimerCallback() as its callback -function. */ -static TimerHandle_t xButtonLEDTimer = NULL; - -/*-----------------------------------------------------------*/ - -void main( void ) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xButtonLEDTimer = xTimerCreate( "ButtonLEDTimer", /* A text name, purely to help debugging. */ - mainBUTTON_LED_TIMER_PERIOD_MS, /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvButtonLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - GPIOA_PSOR = mainTIMER_CONTROLLED_LED; -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void vPort_E_ISRHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - GPIOA_PCOR = mainTIMER_CONTROLLED_LED; - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xButtonLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - PORTE_ISFR = 0xFFFFFFFFUL; - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - GPIOA_PTOR = mainTASK_CONTROLLED_LED; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Enable the interrupt on SW1. */ - PORTE_PCR26 = PORT_PCR_MUX( 1 ) | PORT_PCR_IRQC( 0xA ) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK; - enable_irq( mainGPIO_E_VECTOR ); - - /* The interrupt calls an interrupt safe API function - so its priority must - be equal to or lower than configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY. */ - set_irq_priority( mainGPIO_E_VECTOR, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Set PTA10, PTA11, PTA28, and PTA29 (connected to LED's) for GPIO - functionality. */ - PORTA_PCR10 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR11 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR28 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR29 = ( 0 | PORT_PCR_MUX( 1 ) ); - - /* Change PTA10, PTA29 to outputs. */ - GPIOA_PDDR=GPIO_PDDR_PDD( mainTASK_CONTROLLED_LED | mainTIMER_CONTROLLED_LED ); - - /* Start with LEDs off. */ - GPIOA_PTOR = ~0U; -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeHeapSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amount of FreeRTOS heap that - remains unallocated. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -/* The Blinky build configuration does not include Ethernet functionality, -however, the Full and Blinky build configurations share a vectors.h header file. -Therefore, dummy Ethernet interrupt handers need to be defined to keep the -linker happy. */ -void vEMAC_TxISRHandler( void ) {} -void vEMAC_RxISRHandler( void ){} -void vEMAC_ErrorISRHandler( void ) {} - -/* The Blinky build configuration does not include run time stats gathering, -however, the Full and Blinky build configurations share a FreeRTOSConfig.h -file. Therefore, dummy run time stats functions need to be defined to keep the -linker happy. */ -void vMainConfigureTimerForRunTimeStats( void ) {} -unsigned long ulMainGetRunTimeCounterValue( void ) { return 0UL; } - -/* A tick hook is used by the "Full" build configuration. The Full and blinky -build configurations share a FreeRTOSConfig.h header file, so this simple build -configuration also has to define a tick hook - even though it does not actually -use it for anything. */ -void vApplicationTickHook( void ) {} - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c deleted file mode 100644 index d9f8f10fa..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "emac.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* The buffer used by the uIP stack to both receive and send. In this case, -because the Ethernet driver is implemented to be zero copy - the uip_buf -variable is just a pointer to an Ethernet buffer, and not a buffer in its own -right. */ -extern unsigned char *uip_buf; - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* The length of the queue used to send events from timers or the Ethernet -driver to the uIP stack. */ -#define uipEVENT_QUEUE_LENGTH 10 - -/* A block time of zero simply means "don't block". */ -#define uipDONT_BLOCK 0UL - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation required to ready the stack for http - * processing. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -long i; -unsigned long ulNewEvent = 0UL, ulUIP_Events = 0UL; -unsigned short usPacketLength; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - - /* Initialise the uIP stack, configuring for web server usage. */ - prvInitialise_uIP(); - - /* Initialise the MAC and PHY. */ - vEMACInit(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - usPacketLength = usEMACRead(); - - /* Statements to be executed if data has been received on the Ethernet. */ - if( ( usPacketLength > 0U ) && ( uip_buf != NULL ) ) - { - uip_len = usPacketLength; - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - /* Clear the RX event latched in ulUIP_Events - if one was latched. */ - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - - /* Statements to be executed if the TCP/IP period timer has expired. */ - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - if( uip_buf != NULL ) - { - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - } - - /* Statements to be executed if the ARP timer has expired. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - /* If all latched events have been cleared - block until another event - occurs. */ - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -uip_ipaddr_t xIPAddr; -TimerHandle_t xARPTimer, xPeriodicTimer; - - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( uipEVENT_QUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 500UL / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - /* Sanity check that the timers were indeed created. */ - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - configASSERT( xEMACEventQueue ); - - /* These commands will block indefinitely until they succeed, so there is - no point in checking their return values. */ - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. As this callback is assigned to both the ARP and Periodic timers, the - first thing to do is ascertain which timer it was that actually expired. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -const unsigned long ulYellowLED = 2UL; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LEDs on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( ulYellowLED, pdTRUE ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( ulYellowLED, pdFALSE ); - } - } - else - { - /* Some browsers will only imply that a check box is off. */ - vParTestSetLED( ulYellowLED, pdFALSE ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c deleted file mode 100644 index a70989499..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c +++ /dev/null @@ -1,542 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Freescale includes. */ -#include "common.h" -#include "eth_phy.h" -#include "enet.h" -#include "mii.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Constants used for set up and initialisation. */ -#define emacTX_INTERRUPT_NO ( 76 ) -#define emacRX_INTERRUPT_NO ( 77 ) -#define emacERROR_INTERRUPT_NO ( 78 ) -#define emacLINK_DELAY ( 500 / portTICK_PERIOD_MS ) -#define emacPHY_STATUS ( 0x1F ) -#define emacPHY_DUPLEX_STATUS ( 4 << 2 ) -#define emacPHY_SPEED_STATUS ( 1 << 2 ) - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx descriptor to see if it contains new data. - */ -static unsigned short prvCheckRxStatus( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma data_alignment=16 -volatile NBUF xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; - -#pragma data_alignment=16 -volatile NBUF xTxDescriptors[ emacNUM_TX_BUFFERS ]; - -#pragma data_alignment=16 -char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/* Points to the Rx descriptor currently in use. */ -static volatile NBUF *pxCurrentRxDesc = NULL; - -/* pxCurrentRxDesc points to descriptor within the xRxDescriptors array that -has an index defined by ulRxDescriptorIndex. */ -static unsigned long ulRxDescriptorIndex = 0UL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vEMACInit( void ) -{ -int iData; -extern int periph_clk_khz; -const unsigned char ucMACAddress[] = -{ - configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 -}; - - /* Enable the ENET clock. */ - SIM_SCGC2 |= SIM_SCGC2_ENET_MASK; - - /* Allow concurrent access to MPU controller to avoid bus errors. */ - MPU_CESR = 0; - - prvInitialiseDescriptors(); - - /* Reset and enable. */ - ENET_ECR = ENET_ECR_RESET_MASK; - - /* Wait at least 8 clock cycles */ - vTaskDelay( 2 ); - - /* Start the MII interface*/ - mii_init( 0, periph_clk_khz / 1000L ); - - /* Configure the transmit interrupt. */ - set_irq_priority( emacTX_INTERRUPT_NO, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - enable_irq( emacTX_INTERRUPT_NO ); - - /* Configure the receive interrupt. */ - set_irq_priority( emacRX_INTERRUPT_NO, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - enable_irq( emacRX_INTERRUPT_NO ); - - /* Configure the error interrupt. */ - set_irq_priority( emacERROR_INTERRUPT_NO, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - enable_irq( emacERROR_INTERRUPT_NO ); - - /* Configure the pins to the PHY - RMII mode used. */ - PORTB_PCR0 = PORT_PCR_MUX( 4 ); /* RMII0_MDIO / MII0_MDIO. */ - PORTB_PCR1 = PORT_PCR_MUX( 4 ); /* RMII0_MDC / MII0_MDC */ - PORTA_PCR14 = PORT_PCR_MUX( 4 ); /* RMII0_CRS_DV / MII0_RXDV */ - PORTA_PCR12 = PORT_PCR_MUX( 4 ); /* RMII0_RXD1 / MII0_RXD1 */ - PORTA_PCR13 = PORT_PCR_MUX( 4 ); /* RMII0_RXD0/MII0_RXD0 */ - PORTA_PCR15 = PORT_PCR_MUX( 4 ); /* RMII0_TXEN/MII0_TXEN */ - PORTA_PCR16 = PORT_PCR_MUX( 4 ); /* RMII0_TXD0/MII0_TXD0 */ - PORTA_PCR17 = PORT_PCR_MUX( 4 ); /* RMII0_TXD1/MII0_TXD1 */ - - /* Is there communication with the PHY? */ - do - { - vTaskDelay( emacLINK_DELAY ); - iData = 0xFFFF; - mii_read( 0, configPHY_ADDRESS, PHY_PHYIDR1, &iData ); - - } while( iData == 0xFFFF ); - - /* Start to auto negotiate. */ - mii_write( 0, configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) ); - - /* Wait for auto negotiate to complete. */ - do - { - vTaskDelay( emacLINK_DELAY ); - mii_read( 0, configPHY_ADDRESS, PHY_BMSR, &iData ); - - } while( !( iData & PHY_BMSR_AN_COMPLETE ) ); - - /* A link has been established. What was negotiated? */ - iData = 0; - mii_read( 0, configPHY_ADDRESS, emacPHY_STATUS, &iData ); - - /* Clear the Individual and Group Address Hash registers */ - ENET_IALR = 0; - ENET_IAUR = 0; - ENET_GALR = 0; - ENET_GAUR = 0; - - /* Set the Physical Address for the selected ENET */ - enet_set_address( 0, ucMACAddress ); - - ENET_RCR = ENET_RCR_MAX_FL( UIP_BUFSIZE ) | ENET_RCR_MII_MODE_MASK | ENET_RCR_CRCFWD_MASK | ENET_RCR_RMII_MODE_MASK; - - /* Clear the control registers. */ - ENET_TCR = 0; - - if( iData & emacPHY_DUPLEX_STATUS ) - { - /* Full duplex */ - ENET_RCR &= ( unsigned long )~ENET_RCR_DRT_MASK; - ENET_TCR |= ENET_TCR_FDEN_MASK; - } - else - { - /* Half duplex */ - ENET_RCR |= ENET_RCR_DRT_MASK; - ENET_TCR &= (unsigned long)~ENET_TCR_FDEN_MASK; - } - - if( iData & emacPHY_SPEED_STATUS ) - { - /* 10Mbps */ - ENET_RCR |= ENET_RCR_RMII_10T_MASK; - } - - ENET_ECR = ENET_ECR_EN1588_MASK; - - /* Store and forward checksum. */ - ENET_TFWR = ENET_TFWR_STRFWD_MASK; - - /* Set Rx Buffer Size */ - ENET_MRBR = ( unsigned short ) UIP_BUFSIZE; - - /* Point to the start of the circular Rx buffer descriptor queue */ - ENET_RDSR = ( unsigned long ) &( xRxDescriptors[ 0 ] ); - - /* Point to the start of the circular Tx buffer descriptor queue */ - ENET_TDSR = ( unsigned long ) &( xTxDescriptors[ 0 ] ); - - /* Clear all ENET interrupt events */ - ENET_EIR = ( unsigned long ) -1; - - /* Enable interrupts. */ - ENET_EIMR = 0 - /*rx irqs*/ - | ENET_EIMR_RXF_MASK/* only for complete frame, not partial buffer descriptor | ENET_EIMR_RXB_MASK*/ - /*xmit irqs*/ - | ENET_EIMR_TXF_MASK/* only for complete frame, not partial buffer descriptor | ENET_EIMR_TXB_MASK*/ - /*enet irqs*/ - | ENET_EIMR_UN_MASK | ENET_EIMR_RL_MASK | ENET_EIMR_LC_MASK | ENET_EIMR_BABT_MASK | ENET_EIMR_BABR_MASK | ENET_EIMR_EBERR_MASK - ; - - /* Enable the MAC itself. */ - ENET_ECR |= ENET_ECR_ETHEREN_MASK; - - /* Indicate that there have been empty receive buffers produced */ - ENET_RDAR = ENET_RDAR_RDAR_MASK; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile NBUF *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->data = ( uint8_t* ) &( xEthernetBuffers[ x ][ 0 ] ); - pxDescriptor->data = ( uint8_t* ) __REV( ( unsigned long ) pxDescriptor->data ); - pxDescriptor->length = 0; - pxDescriptor->status = RX_BD_E; - pxDescriptor->bdu = 0; - pxDescriptor->ebd_status = RX_BD_INT; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= RX_BD_W; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->data = NULL; - pxDescriptor->length = 0; - pxDescriptor->status = TX_BD_TC; - pxDescriptor->ebd_status = TX_BD_INT; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= TX_BD_W; - - /* Use the first Rx descriptor to start with. */ - ulRxDescriptorIndex = 0UL; - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & TX_BD_R ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & TX_BD_R ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].data = ( uint8_t * ) __REV( ( unsigned long ) uip_buf ); - xTxDescriptors[ 0 ].length = __REVSH( uip_len ); - xTxDescriptors[ 1 ].data = ( uint8_t * ) __REV( ( unsigned long ) uip_buf ); - xTxDescriptors[ 1 ].length = __REVSH( uip_len ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[ 0 ].status |= ( TX_BD_R | TX_BD_L ); - xTxDescriptors[ 1 ].status |= ( TX_BD_R | TX_BD_L ); - - /* Start the Tx. */ - ENET_TDAR = ENET_TDAR_TDAR_MASK; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -unsigned short usEMACRead( void ) -{ -unsigned short usBytesReceived; - - usBytesReceived = prvCheckRxStatus(); - usBytesReceived = __REVSH( usBytesReceived ); - - if( usBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about to be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->data; - uip_buf = ( void * ) __REV( ( unsigned long ) uip_buf ); - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->data = ( uint8_t * ) prvGetNextBuffer(); - pxCurrentRxDesc->data = ( uint8_t* ) __REV( ( unsigned long ) pxCurrentRxDesc->data ); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status |= RX_BD_E; - - /* Move onto the next buffer in the ring. */ - ulRxDescriptorIndex++; - if( ulRxDescriptorIndex >= emacNUM_RX_DESCRIPTORS ) - { - ulRxDescriptorIndex = 0UL; - } - pxCurrentRxDesc = &( xRxDescriptors[ ulRxDescriptorIndex ] ); - - /* Restart Ethernet if it has stopped */ - ENET_RDAR = ENET_RDAR_RDAR_MASK; - } - - return usBytesReceived; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvCheckRxStatus( void ) -{ -unsigned long usReturn = 0; - - if( ( pxCurrentRxDesc->status & RX_BD_E ) != 0 ) - { - /* Current descriptor is still active. */ - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - usReturn = pxCurrentRxDesc->length; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vEMAC_TxISRHandler( void ) -{ - /* Clear the interrupt. */ - ENET_EIR = ENET_EIR_TXF_MASK; - - /* Check the buffers have not already been freed in the first of the - two Tx interrupts - which could potentially happen if the second Tx completed - during the interrupt for the first Tx. */ - if( xTxDescriptors[ 0 ].data != NULL ) - { - if( ( ( xTxDescriptors[ 0 ].status & TX_BD_R ) == 0 ) && ( ( xTxDescriptors[ 0 ].status & TX_BD_R ) == 0 ) ) - { - configASSERT( xTxDescriptors[ 0 ].data == xTxDescriptors[ 1 ].data ); - - xTxDescriptors[ 0 ].data = ( uint8_t* ) __REV( ( unsigned long ) xTxDescriptors[ 0 ].data ); - prvReturnBuffer( xTxDescriptors[ 0 ].data ); - - /* Just to mark the fact that the buffer has already been released. */ - xTxDescriptors[ 0 ].data = NULL; - } - } -} -/*-----------------------------------------------------------*/ - -void vEMAC_RxISRHandler( void ) -{ -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; - - /* Clear the interrupt. */ - ENET_EIR = ENET_EIR_RXF_MASK; - - /* An Ethernet Rx event has occurred. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ErrorISRHandler( void ) -{ - /* Clear the interrupt. */ - ENET_EIR = ENET_EIR & ENET_EIMR; - - /* Attempt recovery. Not very sophisticated. */ - prvInitialiseDescriptors(); - ENET_RDAR = ENET_RDAR_RDAR_MASK; -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h deleted file mode 100644 index f78122ef8..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FR_EMAC_H -#define FR_EMAC_H - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vEMACInit( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned short usEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - -#endif /* FR_EMAC_H */ \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c deleted file mode 100644 index 7048d8364..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,263 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - const unsigned long ulYellowLED = 2UL; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( ulYellowLED ) == pdTRUE ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index 7fd1c051c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,29 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -The check box and "Update IO" button can also be used to turn the yellow LED on and off. - - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index 13d7f8afb..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3873 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x54, - 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, - 0x6f, 0x78, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x20, 0x62, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x79, 0x65, 0x6c, 0x6c, 0x6f, - 0x77, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x6f, 0x6e, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x2e, 0xd, 0xa, 0xd, - 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, - 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, - 0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h deleted file mode 100644 index e5597d232..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#if __LITTLE_ENDIAN__ == 1 - #define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else - #define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h deleted file mode 100644 index d22bbe1d9..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 50000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_QUEUE_SETS 1 -#define configUSE_COUNTING_SEMAPHORES 1 - -#define configMAX_PRIORITIES ( 5UL ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) -#define configQUEUE_REGISTRY_SIZE 10 -#define configSUPPORT_STATIC_ALLOCATION 1 - -/* Timer related defines. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY 2 -#define configTIMER_QUEUE_LENGTH 20 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTimerGetTimerDaemonTaskHandle 1 -#define INCLUDE_xTaskGetIdleTaskHandle 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xTimerPendFunctionCall 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configKERNEL_INTERRUPT_PRIORITY ( 7 << 5 ) /* Priority 7, or 255 as only the top three bits are implemented. This is the lowest priority. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << 5 ) /* Priority 5, or 160 as only the top three bits are implemented. */ - -/* Use the Cortex-M3 optimised task selection rather than the generic C code -version. */ -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 - -/* The test that checks the trigger level on stream buffers requires an -allowable margin of error on slower processors (slower than the Win32 -machine on which the test is developed). */ -#define configSTREAM_BUFFER_TRIGGER_LEVEL_TEST_MARGIN 4 - -#ifdef __ICCARM__ - void vAssertCalled( const char *pcFile, unsigned long ulLine ); - #define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ ); -#endif - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c deleted file mode 100644 index e75116215..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" - -#define tmrTIMER_2_FREQUENCY ( 2000UL ) -#define tmrTIMER_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ -unsigned long ulFrequency; - - /* Timer 2 and 3 are utilised for this test. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER3 ); - TimerConfigure( TIMER2_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER3_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IntPrioritySet( INT_TIMER2A, configMAX_SYSCALL_INTERRUPT_PRIORITY + ( 1 << 5 ) ); /* Shift left 5 as only the top 3 bits are implemented. */ - IntPrioritySet( INT_TIMER3A, configMAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_2_FREQUENCY; - TimerLoadSet( TIMER2_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER2A ); - TimerIntEnable( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_3_FREQUENCY; - TimerLoadSet( TIMER3_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER3A ); - TimerIntEnable( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER2_BASE, TIMER_A ); - TimerEnable( TIMER3_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void vT2InterruptHandler( void ) -{ - TimerIntClear( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT3InterruptHandler( void ) -{ - TimerIntClear( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xSecondTimerHandler() ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf deleted file mode 100644 index 575329d1f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf +++ /dev/null @@ -1,58 +0,0 @@ -//***************************************************************************** -// -// enet_lwip.icf - Linker configuration file for enet_lwip. -// -// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -// Luminary Micro Confidential - For Use Under NDA Only -// -//***************************************************************************** - -// -// Define a memory region that covers the entire 4 GB addressible space of the -// processor. -// -define memory mem with size = 4G; - -// -// Define a region for the on-chip flash. -// -define region FLASH = mem:[from 0x00000000 to 0x0003ffff]; - -// -// Define a region for the on-chip SRAM. -// -define region SRAM = mem:[from 0x20000000 to 0x2000ffff]; - -// -// Define a block for the heap. The size should be set to something other -// than zero if things in the C library that require the heap are used. -// -define block HEAP with alignment = 8, size = 0x00000000 { }; - -// -// Indicate that the read/write values should be initialized by copying from -// flash. -// -initialize by copy { readwrite }; - -// -// Initicate that the noinit values should be left alone. This includes the -// stack, which if initialized will destroy the return address from the -// initialization code, causing the processor to branch to zero and fault. -// -do not initialize { section .noinit }; - -// -// Place the interrupt vectors at the start of flash. -// -place at start of FLASH { readonly section .intvec }; - -// -// Place the remainder of the read-only items into flash. -// -place in FLASH { readonly }; - -// -// Place all read/write items into SRAM. -// -place in SRAM { readwrite, block HEAP }; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c deleted file mode 100644 index 5c697cfe0..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* -*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Library includes. */ -#include "hw_types.h" -#include "gpio.h" -#include "hw_memmap.h" - - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - GPIODirModeSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT ); - GPIOPadConfigSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, 0 ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, xValue ); -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - return GPIOPinRead( GPIO_PORTF_BASE, GPIO_PIN_0 ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt deleted file mode 100644 index 89e6a0a82..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt +++ /dev/null @@ -1,77 +0,0 @@ -### uVision2 Project, (C) Keil Software -### Do not modify ! - - cExt (*.c) - aExt (*.s*; *.src; *.a*) - oExt (*.obj) - lExt (*.lib) - tExt (*.txt; *.h; *.inc) - pExt (*.plm) - CppX (*.cpp) - DaveTm { 0,0,0,0,0,0,0,0 } - -Target (FreeRTOS_Demo), 0x0004 // Tools: 'ARM-ADS' -GRPOPT 1,(Demo_Source),1,0,0 -GRPOPT 2,(Libraries),0,0,0 -GRPOPT 3,(RTOS_Source),0,0,0 -GRPOPT 4,(uIP_Source),0,0,0 - -OPTFFF 1,1,1,0,0,0,0,0,<..\Common\Minimal\BlockQ.c> -OPTFFF 1,2,1,0,0,0,0,0,<..\Common\Minimal\blocktim.c> -OPTFFF 1,3,1,0,0,0,0,0,<..\Common\Minimal\death.c> -OPTFFF 1,4,1,0,0,0,0,0,<..\Common\Minimal\integer.c> -OPTFFF 1,5,1,553648128,0,67,67,0,<.\main.c> -OPTFFF 1,6,1,0,0,0,0,0,<.\ParTest\ParTest.c> -OPTFFF 1,7,1,0,0,0,0,0,<..\Common\Minimal\PollQ.c> -OPTFFF 1,8,1,0,0,0,0,0,<..\Common\Minimal\semtest.c> -OPTFFF 1,9,2,0,0,0,0,0,<.\startup_rvmdk.S> -OPTFFF 1,10,1,0,0,0,0,0,<.\timertest.c> -OPTFFF 1,11,5,822083584,0,0,0,0,<.\FreeRTOSConfig.h> -OPTFFF 1,12,1,0,0,0,0,0,<..\Common\Minimal\GenQTest.c> -OPTFFF 1,13,1,1,0,0,0,0,<..\Common\Minimal\QPeek.c> -OPTFFF 1,14,1,0,0,0,0,0,<.\IntQueueTimer.c> -OPTFFF 1,15,1,0,0,0,0,0,<..\Common\Minimal\IntQueue.c> -OPTFFF 1,16,1,0,0,0,0,0,<..\Common\Minimal\recmutex.c> -OPTFFF 2,17,1,0,0,0,0,0,<.\rit128x96x4.c> -OPTFFF 2,18,1,0,0,0,0,0,<.\osram128x64x4.c> -OPTFFF 2,19,4,0,0,0,0,0,<..\Common\drivers\LuminaryMicro\Keil\driverlib.lib> -OPTFFF 2,20,1,0,0,0,0,0,<.\formike128x128x16.c> -OPTFFF 2,21,4,0,0,0,0,0,<..\Common\drivers\LuminaryMicro\Keil\grlib.lib> -OPTFFF 3,22,1,0,0,0,0,0,<..\..\Source\tasks.c> -OPTFFF 3,23,1,0,0,0,0,0,<..\..\Source\list.c> -OPTFFF 3,24,1,0,0,0,0,0,<..\..\Source\queue.c> -OPTFFF 3,25,1,0,0,0,0,0,<..\..\Source\portable\RVDS\ARM_CM3\port.c> -OPTFFF 3,26,1,0,0,0,0,0,<..\..\Source\portable\MemMang\heap_2.c> -OPTFFF 4,27,1,0,0,0,0,0,<.\webserver\uIP_Task.c> -OPTFFF 4,28,1,0,0,0,0,0,<.\webserver\emac.c> -OPTFFF 4,29,1,0,0,0,0,0,<.\webserver\httpd.c> -OPTFFF 4,30,1,0,0,0,0,0,<.\webserver\httpd-cgi.c> -OPTFFF 4,31,1,0,0,0,0,0,<.\webserver\httpd-fs.c> -OPTFFF 4,32,1,0,0,0,0,0,<.\webserver\http-strings.c> -OPTFFF 4,33,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c> -OPTFFF 4,34,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\psock.c> -OPTFFF 4,35,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\timer.c> -OPTFFF 4,36,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\uip.c> - - -TARGOPT 1, (FreeRTOS_Demo) - ADSCLK=8000000 - OPTTT 0,1,1,0 - OPTHX 1,65535,0,0,0 - OPTLX 79,66,8,<.\rvmdk\> - OPTOX 16 - OPTLT 1,1,1,0,1,1,0,1,0,0,0,0 - OPTXL 1,1,1,1,1,1,1,0,0 - OPTFL 1,0,1 - OPTAX 0 - OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S8962)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S8962) - OPTDBG 48126,4,()()()()()()()()()() (BIN\lmidk-agdi.dll)()()() - OPTKEY 0,(DLGTARM)((1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(102=-1,-1,-1,-1,0)(103=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(163=-1,-1,-1,-1,0)(164=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)(1013=-1,-1,-1,-1,0)(171=-1,-1,-1,-1,0)(172=-1,-1,-1,-1,0)(173=-1,-1,-1,-1,0)(1014=-1,-1,-1,-1,0)(1016=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)) - OPTKEY 0,(ARMDBGFLAGS)() - OPTKEY 0,(lmidk-agdi)(-U -O4622 -S3 -FO29) - OPTKEY 0,(DLGUARM)(ĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚČp¶{Öäö) - OPTDF 0x80 - OPTLE <> - OPTLC <> -EndOpt - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 deleted file mode 100644 index ebcc32fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 +++ /dev/null @@ -1,139 +0,0 @@ -### uVision2 Project, (C) Keil Software -### Do not modify ! - -Target (FreeRTOS_Demo), 0x0004 // Tools: 'ARM-ADS' - -Group (Demo_Source) -Group (Libraries) -Group (RTOS_Source) -Group (uIP_Source) - -File 1,1,<..\Common\Minimal\BlockQ.c> -File 1,1,<..\Common\Minimal\blocktim.c> -File 1,1,<..\Common\Minimal\death.c> -File 1,1,<..\Common\Minimal\integer.c> -File 1,1,<.\main.c> -File 1,1,<.\ParTest\ParTest.c> -File 1,1,<..\Common\Minimal\PollQ.c> -File 1,1,<..\Common\Minimal\semtest.c> -File 1,2,<.\startup_rvmdk.S> -File 1,1,<.\timertest.c> -File 1,5,<.\FreeRTOSConfig.h> -File 1,1,<..\Common\Minimal\GenQTest.c> -File 1,1,<..\Common\Minimal\QPeek.c> -File 1,1,<.\IntQueueTimer.c> -File 1,1,<..\Common\Minimal\IntQueue.c> -File 1,1,<..\Common\Minimal\recmutex.c> -File 1,1,<..\Common\Minimal\QueueSet.c> -File 2,1,<.\rit128x96x4.c> -File 2,1,<.\osram128x64x4.c> -File 2,4,<..\Common\drivers\LuminaryMicro\Keil\driverlib.lib> -File 2,1,<.\formike128x128x16.c> -File 2,4,<..\Common\drivers\LuminaryMicro\Keil\grlib.lib> -File 3,1,<..\..\Source\tasks.c> -File 3,1,<..\..\Source\list.c> -File 3,1,<..\..\Source\queue.c> -File 3,1,<..\..\Source\portable\RVDS\ARM_CM3\port.c> -File 3,1,<..\..\Source\portable\MemMang\heap_2.c> -File 4,1,<.\webserver\uIP_Task.c> -File 4,1,<.\webserver\emac.c> -File 4,1,<.\webserver\httpd.c> -File 4,1,<.\webserver\httpd-cgi.c> -File 4,1,<.\webserver\httpd-fs.c> -File 4,1,<.\webserver\http-strings.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\psock.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\timer.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\uip.c> - - -Options 1,0,0 // Target 'FreeRTOS_Demo' - Device (LM3S8962) - Vendor (Luminary Micro) - Cpu (IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")) - FlashUt () - StupF ("STARTUP\Luminary\Startup.s" ("Luminary Startup Code")) - FlashDR (UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000)) - DevID (4285) - Rgf (LM3Sxxx.H) - Mem () - C () - A () - RL () - OH () - DBC_IFX () - DBC_CMS () - DBC_AMS () - DBC_LMS () - UseEnv=0 - EnvBin () - EnvInc () - EnvLib () - EnvReg (˙Luminary\) - OrgReg (˙Luminary\) - TgStat=16 - OutDir (.\rvmdk\) - OutName (RTOSDemo) - GenApp=1 - GenLib=0 - GenHex=0 - Debug=1 - Browse=1 - LstDir (.\rvmdk\) - HexSel=1 - MG32K=0 - TGMORE=0 - RunUsr 0 1 - RunUsr 1 0 <> - BrunUsr 0 0 <> - BrunUsr 1 0 <> - CrunUsr 0 0 <> - CrunUsr 1 0 <> - SVCSID <> - GLFLAGS=1790 - ADSFLGA { 16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ACPUTYP ("Cortex-M3") - RVDEV () - ADSTFLGA { 0,12,0,2,99,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0 } - OCMADSOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - OCMADSIRAM { 0,0,0,0,32,0,0,1,0 } - OCMADSIROM { 1,0,0,0,0,0,0,4,0 } - OCMADSXRAM { 0,0,0,0,0,0,0,0,0 } - OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,1,0,0,0,0,0,0,0,0,0,0 } - RV_STAVEC () - ADSCCFLG { 5,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ADSCMISC (--diag_suppress 191,550,513,167,177,144) - ADSCDEFN (RVDS_ARMCM3_LM3S102, "PACK_STRUCT_END=","ALIGN_STRUCT_END=") - ADSCUDEF () - ADSCINCD (.;.\..\Common\drivers\LuminaryMicro;..\..\Source\portable\RVDS\ARM_CM3;..\..\Source\include;..\Common\include;..\Common\ethernet\uIP\uip-1.0\uip;.\webserver) - ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ADSAMISC () - ADSADEFN () - ADSAUDEF () - ADSAINCD () - PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - IncBld=1 - AlwaysBuild=0 - GenAsm=0 - AsmAsm=0 - PublicsOnly=0 - StopCode=3 - CustArgs () - LibMods () - ADSLDFG { 17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ADSLDTA (0x00000000) - ADSLDDA (0x20000000) - ADSLDSC () - ADSLDIB () - ADSLDIC () - ADSLDMC (--entry Reset_Handler) - ADSLDIF () - ADSLDDW () - OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S8962)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S8962) - OPTDBG 48126,4,()()()()()()()()()() (BIN\lmidk-agdi.dll)()()() - FLASH1 { 1,0,0,0,1,0,0,0,3,16,0,0,0,0,0,0,0,0,0,0 } - FLASH2 (BIN\lmidk-agdi.dll) - FLASH3 ("" ()) - FLASH4 () -EndOpt - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd deleted file mode 100644 index b0b79cfd9..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd +++ /dev/null @@ -1,1493 +0,0 @@ - - - 3 - - Debug - - ARM - - 1 - - C-SPY - 2 - - 32 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\AWS\AWS.ENU.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\RemedyRtosViewer\RemedyRtosViewer.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp deleted file mode 100644 index f0fa8d5c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp +++ /dev/null @@ -1,1212 +0,0 @@ - - - 3 - - Debug - - ARM - - 1 - - General - 3 - - 31 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 23 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Demo files - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\EventGroupsDemo.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\IntQueue.c - - - $PROJ_DIR$\IntQueueTimer.c - - - $PROJ_DIR$\main.c - - - $PROJ_DIR$\..\Common\Minimal\MessageBufferDemo.c - - - $PROJ_DIR$\ParTest\ParTest.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\QueueSet.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\..\Common\Minimal\StreamBufferDemo.c - - - $PROJ_DIR$\timertest.c - - - - Library files - - $PROJ_DIR$\..\Common\drivers\LuminaryMicro\IAR\driverlib.a - - - $PROJ_DIR$\formike128x128x16.c - - - $PROJ_DIR$\..\Common\drivers\LuminaryMicro\IAR\grlib.a - - - $PROJ_DIR$\osram128x64x4.c - - - $PROJ_DIR$\rit128x96x4.c - - - - Scheduler files - - $PROJ_DIR$\..\..\Source\croutine.c - - - $PROJ_DIR$\..\..\Source\event_groups.c - - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_4.c - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\stream_buffer.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - System files - - $PROJ_DIR$\startup_ewarm.c - - - - uIP files - - $PROJ_DIR$\webserver\emac.c - - - $PROJ_DIR$\webserver\http-strings.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - $PROJ_DIR$\webserver\httpd-fs.c - - - $PROJ_DIR$\webserver\httpd.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - $PROJ_DIR$\webserver\uIP_Task.c - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj deleted file mode 100644 index 373965409..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj +++ /dev/null @@ -1,648 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - FreeRTOS_Demo - 0x4 - ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC - 0 - - - LM3S8962 - Luminary Micro - IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") - - "STARTUP\Luminary\Startup.s" ("Luminary Startup Code") - UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000) - 4285 - LM3Sxxx.H - - - - - - - - - - - 0 - 0 - - - - Luminary\ - Luminary\ - - 0 - 0 - 0 - 0 - 1 - - .\rvmdk\ - RTOSDemo - 1 - 0 - 0 - 1 - 1 - .\rvmdk\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 1 - 0 - fromelf --bin --output .\rvmdk\RTOSDemo.bin .\rvmdk\RTOSDemo.axf - - 0 - 0 - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - - DLM.DLL - -pLM3S8962 - SARMCM3.DLL - - TLM.DLL - -pLM3S8962 - - - - 1 - 0 - 0 - 0 - 16 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - - 0 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 1 - - 0 - 2 - - - - - - - - - - - - - - BIN\lmidk-agdi.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4099 - - 1 - BIN\lmidk-agdi.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - - --diag_suppress 191,550,513,167,177,144 - RVDS_ARMCM3_LM3S102, "PACK_STRUCT_END=","ALIGN_STRUCT_END=" - - .;.\..\Common\drivers\LuminaryMicro;..\..\Source\portable\RVDS\ARM_CM3;..\..\Source\include;..\Common\include;..\Common\ethernet\uIP\uip-1.0\uip;.\webserver - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - --entry Reset_Handler - - - - - - - - Demo_Source - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - main.c - 1 - .\main.c - - - ParTest.c - 1 - .\ParTest\ParTest.c - - - PollQ.c - 1 - ..\Common\Minimal\PollQ.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - startup_rvmdk.S - 2 - .\startup_rvmdk.S - - - timertest.c - 1 - .\timertest.c - - - FreeRTOSConfig.h - 5 - .\FreeRTOSConfig.h - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - IntQueueTimer.c - 1 - .\IntQueueTimer.c - - - IntQueue.c - 1 - ..\Common\Minimal\IntQueue.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - QueueSet.c - 1 - ..\Common\Minimal\QueueSet.c - - - EventGroupsDemo.c - 1 - ..\Common\Minimal\EventGroupsDemo.c - - - MessageBufferDemo.c - 1 - ..\Common\Minimal\MessageBufferDemo.c - - - StreamBufferDemo.c - 1 - ..\Common\Minimal\StreamBufferDemo.c - - - - - Libraries - - - rit128x96x4.c - 1 - .\rit128x96x4.c - - - osram128x64x4.c - 1 - .\osram128x64x4.c - - - driverlib.lib - 4 - ..\Common\drivers\LuminaryMicro\Keil\driverlib.lib - - - formike128x128x16.c - 1 - .\formike128x128x16.c - - - grlib.lib - 4 - ..\Common\drivers\LuminaryMicro\Keil\grlib.lib - - - - - RTOS_Source - - - tasks.c - 1 - ..\..\Source\tasks.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - timers.c - 1 - ..\..\Source\timers.c - - - event_groups.c - 1 - ..\..\Source\event_groups.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - stream_buffer.c - 1 - ..\..\Source\stream_buffer.c - - - - - uIP_Source - - - uIP_Task.c - 1 - .\webserver\uIP_Task.c - - - emac.c - 1 - .\webserver\emac.c - - - httpd.c - 1 - .\webserver\httpd.c - - - httpd-cgi.c - 1 - .\webserver\httpd-cgi.c - - - httpd-fs.c - 1 - .\webserver\httpd-fs.c - - - http-strings.c - 1 - .\webserver\http-strings.c - - - uip_arp.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - timer.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - uip.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - - - - - -
diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h deleted file mode 100644 index 29f813fd1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h +++ /dev/null @@ -1,336 +0,0 @@ -#ifndef BITMAP_H -#define BITMAP_H - -#define bmpBITMAP_HEIGHT 50 -#define bmpBITMAP_WIDTH 128 - -const unsigned char pucBasicBitmap[] = -{ -0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, -0x00, 0x8f, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xf0, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, -0x00, 0x70, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0x88, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0x87, 0x77, -0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x88, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0x80, 0x00, 0x8f, 0x8f, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x8f, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, -0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x08, 0x00, 0x88, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x70, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x87, 0x88, -0x88, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x7f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf7, 0x88, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, -0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x88, 0x88, 0x88, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, -0x00, 0x00, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x07, 0xff, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, -0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x77, -0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x07, 0x70, 0x07, -0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 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, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 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, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 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, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x00, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, -0x00 }; - -const unsigned char pucGrLibBitmap[] = -{ - IMAGE_FMT_4BPP_COMP, - 124, 0, - 49, 0, - - 15, - 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, - 0x20, 0x44, 0x20, - 0x00, 0x75, 0x00, - 0x69, 0x69, 0x69, - 0x00, 0xc2, 0x00, - 0x00, 0xd2, 0x00, - 0x38, 0xb6, 0x38, - 0x00, 0xea, 0x00, - 0x00, 0xf2, 0x00, - 0xaa, 0xb2, 0xaa, - 0x65, 0xff, 0x65, - 0x69, 0xff, 0x69, - 0x6d, 0xff, 0x6d, - 0x71, 0xff, 0x71, - 0xff, 0xff, 0xff, - - 0x03, 0x21, 0x33, 0x53, 0x33, 0x33, 0x33, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x35, 0x33, 0x12, 0x03, 0x23, 0x96, 0x68, 0x88, 0x88, - 0x88, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x69, 0x32, - 0x03, 0x29, 0x66, 0x65, 0x66, 0x66, 0x66, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x56, 0x66, 0x92, 0x07, 0x78, 0x63, 0x11, 0x11, 0x11, - 0xe9, 0xd4, 0xa7, 0xf0, 0x5f, 0x17, 0x07, 0x07, 0x11, 0x36, 0x87, 0x78, - 0x0f, 0x63, 0x00, 0x00, 0x00, 0xe9, 0xd4, 0xa7, 0x5f, 0xe0, 0x17, 0x07, - 0x07, 0x00, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, 0x77, 0x2f, 0x07, - 0x07, 0x02, 0x36, 0x1e, 0x87, 0x78, 0x63, 0x07, 0x07, 0x77, 0x2f, 0x00, - 0x10, 0x01, 0x22, 0x20, 0x07, 0x00, 0x00, 0x22, 0x21, 0x84, 0x03, 0x36, - 0x87, 0x78, 0x63, 0x02, 0x02, 0xaa, 0x01, 0xa2, 0x22, 0x20, 0x02, 0x77, - 0x77, 0x77, 0xe9, 0x3a, 0x22, 0x22, 0x7a, 0xa4, 0x71, 0x20, 0x0a, 0x27, - 0xb8, 0x29, 0x72, 0xb2, 0x9e, 0x93, 0x36, 0x87, 0x78, 0x40, 0x63, 0x62, - 0x2a, 0xff, 0xf2, 0xaa, 0x40, 0x07, 0x08, 0xad, 0xdd, 0xdd, 0xdd, 0xe9, - 0xd7, 0x72, 0x00, 0x40, 0x00, 0xa6, 0xdd, 0xda, 0x70, 0x00, 0x00, 0x02, - 0x00, 0x77, 0xdd, 0xdc, 0xcc, 0xcd, 0xde, 0xc7, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x27, 0xde, 0xdc, 0x08, 0xcc, 0xcc, 0xdd, 0xea, 0x99, - 0x36, 0x87, 0x78, 0x40, 0x63, 0x69, 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, - 0x04, 0x02, 0xdb, 0xbb, 0xbb, 0xbb, 0xe9, 0xbc, 0xe7, 0x10, 0x20, 0x00, - 0x07, 0xa5, 0xbb, 0xbd, 0x70, 0x00, 0x10, 0x00, 0x27, 0xec, 0x3b, 0xcd, - 0xd7, 0x00, 0x00, 0x80, 0x9f, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, - 0x40, 0x63, 0x69, 0x02, 0xfa, 0x2a, 0xf2, 0x2f, 0xa0, 0x31, 0x02, 0xdb, - 0x43, 0x31, 0x42, 0x00, 0x07, 0xa7, 0x0a, 0x70, 0x00, 0x02, 0xdd, 0x41, - 0xcc, 0x21, 0xce, 0x04, 0x70, 0x00, 0x00, 0x02, 0x7d, 0x39, 0xbc, 0xcb, - 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, 0x20, 0x63, 0x00, - 0x69, 0xfa, 0x0a, 0xf2, 0x2f, 0xa0, 0x01, 0x02, 0xdb, 0xbb, 0xbb, 0xdd, - 0xdd, 0xdc, 0x11, 0x08, 0xe7, 0x00, 0x07, 0xad, 0xbb, 0xcd, 0xdd, 0xda, - 0x09, 0x70, 0x00, 0x2d, 0xcb, 0x41, 0xcc, 0xdd, 0xd1, 0x04, 0xe7, 0x00, - 0x00, 0x07, 0xeb, 0x51, 0xdc, 0xcd, 0x00, 0xdd, 0xdd, 0x20, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0xfa, 0x2a, 0xf2, - 0x00, 0xaf, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x22, 0x00, 0x77, 0xdc, - 0xbb, 0xbb, 0xc7, 0x20, 0x07, 0x77, 0x04, 0x77, 0x77, 0xcb, 0xbb, 0xbc, - 0xd1, 0x20, 0x01, 0x28, 0x7d, 0xbb, 0x42, 0x27, 0x41, 0xcd, 0x20, 0x00, - 0x40, 0x27, 0x51, 0x72, 0x22, 0x22, 0x27, 0x7c, 0x20, 0x00, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x00, 0x02, 0xaf, 0xaa, 0xfa, - 0xff, 0x20, 0x02, 0x10, 0xdb, 0xbb, 0xbe, 0x61, 0x2d, 0xbb, 0xbb, 0xcc, - 0xa8, 0x29, 0x00, 0x89, 0xbd, 0xc3, 0xeb, 0xbb, 0xbb, 0x00, 0xd7, 0x10, - 0x00, 0x00, 0x2c, 0xcb, 0xbb, 0xbd, 0x58, 0x70, 0x12, 0xc7, 0x13, 0x29, - 0x36, 0x87, 0x78, 0x40, 0x63, 0xa9, 0x00, 0xaf, 0xff, 0xff, 0xfa, 0x20, - 0x08, 0x02, 0xdb, 0xbb, 0xbd, 0x39, 0x07, 0xdb, 0xbb, 0x72, 0xcc, 0x03, - 0x8c, 0x82, 0xbd, 0x70, 0x84, 0xbc, 0x03, 0xd2, 0x00, 0x2d, 0xbb, 0xbb, - 0xd7, 0x19, 0x01, 0x02, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0xa2, 0x0a, - 0x10, 0xaf, 0xff, 0xa2, 0x0a, 0xbd, 0x20, 0x00, 0x00, 0x0c, 0x07, 0xdb, - 0xbb, 0xc7, 0xc9, 0x8e, 0x00, 0x2c, 0x40, 0xcb, 0xc4, 0x00, 0x7c, 0xbb, - 0xbb, 0xe7, 0x00, 0x06, 0x2d, 0xbb, 0xbb, 0xc7, 0x10, 0x92, 0x31, 0x36, - 0x10, 0x87, 0x78, 0x63, 0xab, 0x22, 0x22, 0x00, 0x00, 0x00, 0x02, 0xdb, - 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x07, 0x18, 0xcb, 0xbb, 0xd7, 0x0a, 0x8d, - 0x00, 0x2d, 0xbb, 0x23, 0xbb, 0xc7, 0x82, 0x00, 0x2e, 0xbb, 0x39, 0x91, - 0x20, 0xbd, 0x72, 0x8b, 0x00, 0x00, 0x36, 0x87, 0x78, 0x48, 0x63, 0x33, - 0x02, 0x20, 0xe1, 0xdb, 0xbb, 0xbd, 0x01, 0x20, 0x00, 0x02, 0x7d, 0xbb, - 0xbb, 0xe2, 0x6b, 0x94, 0x8b, 0x00, 0x00, 0x81, 0xd7, 0x82, 0x00, 0x2d, - 0x00, 0xbb, 0xbb, 0xc7, 0x20, 0x2c, 0xcb, 0xbb, 0xbb, 0x10, 0xdd, 0x77, - 0x22, 0x7b, 0x36, 0x87, 0x78, 0x63, 0x80, 0x32, 0x02, 0xaa, 0xf2, 0x22, - 0x20, 0x02, 0xdb, 0x00, 0xbb, 0xbc, 0x77, 0x77, 0x77, 0xdb, 0xbb, 0xce, - 0x42, 0x71, 0x63, 0xdb, 0xbb, 0xbd, 0x20, 0x19, 0x7d, 0x10, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x27, 0xcb, 0xbb, 0x00, 0xc7, 0x20, 0x07, 0xeb, 0xbb, - 0xbb, 0xbb, 0xcd, 0x21, 0xd7, 0x72, 0x72, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x01, 0x4f, 0xff, 0xf2, 0xaf, 0xa0, 0x02, 0xdb, 0x41, 0x03, 0xdd, 0xdc, - 0xbb, 0xbc, 0xd7, 0x20, 0x22, 0x89, 0x42, 0xbd, 0xba, 0x7d, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x02, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x02, 0x89, 0xbb, - 0x08, 0xbb, 0xbc, 0xdd, 0x72, 0x31, 0x36, 0x87, 0x78, 0x40, 0x63, 0x31, - 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, 0x21, 0x02, 0xdb, 0x3a, 0xbb, 0xbb, - 0xc7, 0x20, 0x31, 0x88, 0x59, 0xdb, 0xbb, 0xbd, 0xb2, 0x7d, 0xbb, 0xbb, - 0x40, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x00, 0x00, 0x27, 0xec, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xe7, 0x84, 0x29, 0x36, 0x87, 0x78, 0x63, - 0x31, 0x02, 0xfa, 0x02, 0x0a, 0xf2, 0x2f, 0xa0, 0x02, 0xdb, 0x42, 0xbb, - 0x31, 0xbb, 0xc7, 0x39, 0x5a, 0xdb, 0xbb, 0xbd, 0xb2, 0x08, 0x7d, 0xbb, - 0xbb, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0x00, 0xcc, 0x20, 0x00, 0x02, 0x77, - 0xed, 0xcb, 0xbb, 0x00, 0xbb, 0xbb, 0xbd, 0x71, 0x00, 0x00, 0x36, 0x87, - 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, 0x0a, 0xf2, 0x2f, 0x00, 0xa0, 0x02, - 0xdb, 0xbb, 0xbb, 0xcd, 0xdd, 0xcb, 0x18, 0xbb, 0xbc, 0xe2, 0x69, 0x59, - 0xdb, 0xbb, 0xbd, 0x42, 0x20, 0x19, 0x7d, 0xbb, 0xbb, 0xd2, 0x7b, 0x27, - 0x10, 0xcb, 0xbb, 0xcb, 0x79, 0x02, 0x27, 0x7d, 0xdc, 0x00, 0xbb, 0xbb, - 0xbb, 0xe2, 0x00, 0x00, 0x36, 0x87, 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, - 0x2a, 0xf2, 0xaf, 0x00, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x27, 0x4c, - 0x1d, 0xbb, 0xbb, 0xd7, 0x69, 0x59, 0x89, 0x20, 0x19, 0x42, 0x7d, 0x7e, - 0x2c, 0xbb, 0xbb, 0xc7, 0x7a, 0x00, 0x10, 0x22, 0x7c, 0xcb, 0x63, 0x36, - 0x87, 0x78, 0x63, 0x80, 0x31, 0x02, 0xaf, 0xfa, 0xff, 0xff, 0x20, 0x02, - 0x00, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x2c, 0xcb, 0xbb, 0x28, 0xcb, 0x20, - 0x61, 0x00, 0x8c, 0x00, 0x00, 0x2d, 0x12, 0xbb, 0xbb, 0xd7, 0x82, 0x00, - 0x2e, 0xbe, 0x00, 0x21, 0x02, 0x7c, 0x63, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x00, 0x2f, 0xff, 0xff, 0xfa, 0x00, 0x02, 0xdb, 0xbb, 0x00, 0xbd, 0x20, - 0x00, 0x07, 0xdb, 0xbb, 0xbe, 0x20, 0xc2, 0x62, 0x8c, 0x00, 0x00, 0x2c, - 0xcb, 0xc4, 0x00, 0x0c, 0x7d, 0xbb, 0xbb, 0xe7, 0x3a, 0x19, 0x2d, 0xbb, - 0x00, 0xbb, 0xc7, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x80, 0x3a, 0x02, - 0xaa, 0xaa, 0x40, 0x00, 0x02, 0xdb, 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x02, - 0xcc, 0xbb, 0xbd, 0x63, 0x70, 0x63, 0x8b, 0x00, 0x00, 0x07, 0x49, 0x7a, - 0x98, 0x09, 0xbb, 0xd2, 0x3a, 0x19, 0x2d, 0xbb, 0xbb, 0x01, 0xd7, 0x00, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x3a, 0x14, 0xaa, 0x22, 0x20, 0x0b, 0xbd, - 0xc9, 0x7d, 0xbb, 0x30, 0xbb, 0xd2, 0x61, 0x8e, 0x00, 0x02, 0xeb, 0xbb, - 0x20, 0xbb, 0xd7, 0x79, 0x27, 0xcb, 0xbb, 0xbd, 0x70, 0x24, 0x00, 0x02, - 0x6a, 0x00, 0x7d, 0x6b, 0x36, 0x87, 0x24, 0x78, 0x63, 0x39, 0x02, 0xff, - 0x62, 0x02, 0xdb, 0x21, 0xbb, 0xbd, 0x21, 0x2e, 0xbb, 0xbb, 0xe7, 0x61, - 0x80, 0x8e, 0x00, 0x02, 0x7d, 0xbb, 0xbb, 0xbd, 0x72, 0x00, 0x22, 0x27, - 0xcc, 0xbb, 0xbb, 0xcd, 0x20, 0x00, 0x08, 0x07, 0xe7, 0x72, 0x22, 0xa3, - 0xe2, 0x00, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x02, - 0x20, 0xaf, 0xa0, 0xd2, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x03, 0x00, 0x2b, - 0xcb, 0xbb, 0xc7, 0x10, 0x8f, 0x11, 0x01, 0x2d, 0xcb, 0xbb, 0xbb, 0xdd, - 0xb7, 0xcd, 0xd1, 0x00, 0xe7, 0x00, 0x00, 0x07, 0xdc, 0xdd, 0xcb, 0x7b, - 0x00, 0xdd, 0xcb, 0xbb, 0xbc, 0x72, 0x00, 0x00, 0x36, 0x10, 0x87, 0x78, - 0x63, 0x01, 0x00, 0x2a, 0xfa, 0x42, 0x01, 0x22, 0x20, 0x02, 0xdb, 0xbb, - 0xbd, 0x20, 0x01, 0xb0, 0xcc, 0x00, 0x8d, 0xb9, 0xec, 0xbb, 0xbb, 0xbb, - 0x00, 0xcc, 0xcb, 0xbb, 0xbb, 0xbe, 0x71, 0x00, 0x00, 0x05, 0x27, 0xcb, - 0xbb, 0xcc, 0xcc, 0x81, 0xce, 0x29, 0x08, 0x36, 0x87, 0x78, 0x63, 0x02, - 0xaa, 0xff, 0xff, 0x02, 0xff, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x61, 0x02, - 0x0e, 0xeb, 0xbb, 0xbd, 0x70, 0x5a, 0x8c, 0x09, 0x27, 0x00, 0xec, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbd, 0xd7, 0x54, 0x10, 0xa1, 0xcb, 0xa4, 0xd2, - 0x31, 0x36, 0x87, 0x20, 0x78, 0x63, 0x01, 0x02, 0xff, 0xff, 0xff, 0xff, - 0x02, 0xa0, 0x07, 0xad, 0xdd, 0xda, 0x20, 0x99, 0xde, 0x1c, 0xdd, 0xde, - 0xc2, 0x21, 0x8d, 0x0a, 0x7c, 0xed, 0x04, 0xcc, 0xcc, 0xcc, 0xde, 0xd7, - 0x92, 0x2c, 0xed, 0x40, 0xdc, 0xa7, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, - 0x00, 0x22, 0x02, 0xaa, 0xaa, 0xaa, 0xaa, 0x20, 0x02, 0x1b, 0x77, 0x77, - 0x77, 0x5a, 0xc9, 0x72, 0x21, 0x8e, 0x88, 0xaa, 0x27, 0x77, 0x7b, 0x9d, - 0x12, 0x27, 0x77, 0x20, 0x77, 0xb7, 0x3d, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x3e, 0x02, 0xaa, 0x43, 0x22, 0xc6, 0x87, 0x3e, 0x12, 0x21, 0x22, 0x22, - 0x06, 0x01, 0x22, 0x22, 0x21, 0x04, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x02, 0xfa, 0x22, 0x3f, 0xaa, 0x20, 0x26, 0xc6, 0x87, 0x3f, 0x07, 0x07, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, 0xfa, 0x02, 0x7e, 0xff, 0x07, - 0x07, 0x77, 0x2f, 0x07, 0x06, 0x36, 0x00, 0x87, 0x78, 0x63, 0x00, 0x02, - 0xff, 0xaa, 0xfa, 0x07, 0x44, 0x44, 0x44, 0x20, 0x02, 0xd9, 0xc1, 0xd4, - 0xf0, 0xa7, 0x5f, 0x17, 0x04, 0x42, 0x00, 0x00, 0x36, 0x00, 0x87, 0x78, - 0x63, 0x00, 0x02, 0xff, 0xff, 0xff, 0x9f, 0xe9, 0xa0, 0x0a, 0xc4, 0x94, - 0xa7, 0x5f, 0x17, 0x80, 0x04, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x78, 0x63, - 0x13, 0x00, 0x00, 0xaf, 0x03, 0xa0, 0x0a, 0x07, 0xbf, 0xe0, 0x77, 0x2f, - 0x07, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x00, 0x78, 0x63, 0x00, 0x00, 0x02, - 0xaa, 0xfa, 0xaa, 0x0f, 0xaa, 0xaa, 0x20, 0x02, 0xd9, 0xc1, 0xd4, 0xa7, - 0xe0, 0x5f, 0x17, 0x05, 0x00, 0x00, 0x36, 0x87, 0x78, 0x03, 0x63, 0x00, - 0x00, 0x00, 0x02, 0xff, 0xd9, 0xc1, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x03, 0x36, 0x87, 0x23, 0x78, 0x63, 0x01, 0x02, 0x44, 0x20, 0x07, 0x07, - 0xf0, 0x77, 0x2f, 0x07, 0x05, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0x07, 0x02, 0x36, 0x1f, 0x87, 0x78, 0x63, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0xc0, 0x07, 0x02, 0x36, 0x87, 0x78, 0x63, 0x11, 0x11, - 0x7f, 0x11, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x07, 0x00, 0x11, 0x36, - 0x87, 0x29, 0x66, 0x55, 0x55, 0x55, 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, - 0x07, 0x07, 0x55, 0x00, 0x66, 0x92, 0x23, 0x96, 0x68, 0x88, 0x88, 0x88, - 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x01, 0x69, 0x32, - 0x21, 0x33, 0x55, 0x55, 0x55, 0xe9, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x07, 0x55, 0x33, 0x00, 0x12, -}; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c deleted file mode 100644 index 188099a49..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c +++ /dev/null @@ -1,902 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.c - Display driver for the Formike Electronic -// KWH015C04-F01 CSTN panel with an ST7637 controller. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3s3748_api -//! @{ -// -//***************************************************************************** - -#include "hw_gpio.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "gpio.h" -#include "sysctl.h" -#include "rom.h" -#include "grlib.h" -#include "formike128x128x16.h" -#include - -//***************************************************************************** -// -// Defines for the pins that are used to communicate with the ST7637. -// -//***************************************************************************** -#define LCD_A0_BASE GPIO_PORTB_BASE -#define LCD_A0_PIN GPIO_PIN_2 -#define LCD_WR_BASE GPIO_PORTC_BASE -#define LCD_WR_PIN GPIO_PIN_4 -#define LCD_RD_BASE GPIO_PORTC_BASE -#define LCD_RD_PIN GPIO_PIN_5 -#define LCD_BL_BASE GPIO_PORTF_BASE -#define LCD_BL_PIN GPIO_PIN_1 -#define LCD_DATA_BASE GPIO_PORTG_BASE - -//***************************************************************************** -// -// Translates a 24-bit RGB color to a display driver-specific color. -// -// \param c is the 24-bit RGB color. The least-significant byte is the blue -// channel, the next byte is the green channel, and the third byte is the red -// channel. -// -// This macro translates a 24-bit RGB color into a value that can be written -// into the display's frame buffer in order to reproduce that color, or the -// closest possible approximation of that color. -// -// \return Returns the display-driver specific color. -// -//***************************************************************************** -#define DPYCOLORTRANSLATE(c) ((((c) & 0x00ff0000) >> 19) | \ - ((((c) & 0x0000ff00) >> 5) & 0x000007e0) | \ - ((((c) & 0x000000ff) << 8) & 0x0000f800)) - -//***************************************************************************** -// -// Writes a data word to the ST7637. -// -//***************************************************************************** -static void -WriteData(unsigned char ucData) -{ - // - // Write the data to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; -} - -//***************************************************************************** -// -// Writes a command to the ST7637. -// -//***************************************************************************** -static void -WriteCommand(unsigned char ucData) -{ - // - // Write the command to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Set the A0 signal low, indicating a command. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = 0; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; - - // - // Set the A0 signal high, indicating that following writes are data. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = LCD_A0_PIN; -} - -//***************************************************************************** -// -//! Initializes the display driver. -//! -//! This function initializes the ST7637 display controller on the panel, -//! preparing it to display data. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16Init(void) -{ - unsigned long ulClockMS, ulCount; - - // - // Get the value to pass to SysCtlDelay() in order to delay for 1 ms. - // - ulClockMS = SysCtlClockGet() / (3 * 1000); - - // - // Enable the GPIO peripherals used to interface to the ST7637. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); - - // - // Configure the pins that connect to the LCD as GPIO outputs. - // - GPIOPinTypeGPIOOutput(LCD_A0_BASE, LCD_A0_PIN); - GPIOPinTypeGPIOOutput(LCD_WR_BASE, LCD_WR_PIN); - GPIOPinTypeGPIOOutput(LCD_RD_BASE, LCD_RD_PIN); - GPIOPinTypeGPIOOutput(LCD_BL_BASE, LCD_BL_PIN); - GPIOPinTypeGPIOOutput(LCD_DATA_BASE, 0xff); - - // - // Set the LCD control pins to their default values. - // - GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, LCD_A0_PIN); - GPIOPinWrite(LCD_WR_BASE, LCD_WR_PIN | LCD_RD_PIN, - LCD_WR_PIN | LCD_RD_PIN); - GPIOPinWrite(LCD_BL_BASE, LCD_BL_PIN, 0); - GPIOPinWrite(LCD_DATA_BASE, 0xff, 0x00); - - // - // Perform a software reset of the ST7637. - // - WriteCommand(0x01); - - // - // Delay for 120ms. - // - SysCtlDelay(ulClockMS * 120); - - // - // Disable auto-load of mask rom data. - // - WriteCommand(0xD7); - WriteData(0xBF); - - // - // Set the OTP control mode to read. - // - WriteCommand(0xE0); - WriteData(0x00); - - // - // Delay for 10ms. - // - SysCtlDelay(ulClockMS * 10); - - // - // Start the OTP read. - // - WriteCommand(0xE3); - - // - // Delay for 20ms. - // - SysCtlDelay(ulClockMS * 20); - - // - // Cancel the OTP read (it should have finished by now). - // - WriteCommand(0xE1); - - // - // Turn off the display. - // - WriteCommand(0x28); - - // - // Exit sleep mode. - // - WriteCommand(0x11); - - // - // Delay for 50ms. - // - SysCtlDelay(ulClockMS * 50); - - // - // Program the LCD supply voltage V0 to 14V. - // - WriteCommand(0xC0); - WriteData(0x04); - WriteData(0x01); - - // - // Select an LCD bias voltage ratio of 1/12. - // - WriteCommand(0xC3); - WriteData(0x00); - - // - // Enable the x8 booster circuit. - // - WriteCommand(0xC4); - WriteData(0x07); - - // - // Invert the column scan direction for the panel. - // - WriteCommand(0xB7); - WriteData(0xC0); - - // - // Select 16bpp, 5-6-5 data input mode. - // - WriteCommand(0x3A); - WriteData(0x05); - - // - // Select the memory scanning direction. The scanning mode does not matter - // for this driver since the row/column selects will constrain the writes - // to the desired area of the display. - // - WriteCommand(0x36); - WriteData(0x00); - - // - // Turn on the display. - // - WriteCommand(0x29); - - // - // Clear the contents of the display buffer. - // - WriteCommand(0x2A); - WriteData(0x00); - WriteData(0x7F); - WriteCommand(0x2B); - WriteData(0x01); - WriteData(0x80); - WriteCommand(0x2c); - for(ulCount = 0; ulCount < (128 * 128); ulCount++) - { - WriteData(0x00); - WriteData(0x00); - } - - // - // Enable normal operation of the LCD. - // - WriteCommand(0x13); -} - -//***************************************************************************** -// -//! Turns on the backlight. -//! -//! This function turns on the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOn(void) -{ - // - // Assert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = LCD_BL_PIN; -} - -//***************************************************************************** -// -//! Turns off the backlight. -//! -//! This function turns off the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOff(void) -{ - // - // Deassert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = 0; -} - -//***************************************************************************** -// -//! Draws a pixel on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the pixel. -//! \param lY is the Y coordinate of the pixel. -//! \param ulValue is the color of the pixel. -//! -//! This function sets the given pixel to a particular color. The coordinates -//! of the pixel are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDraw(void *pvDisplayData, long lX, long lY, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the pixel value. - // - WriteCommand(0x2c); - WriteData(ulValue >> 8); - WriteData(ulValue); -} - -//***************************************************************************** -// -//! Draws a horizontal sequence of pixels on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the first pixel. -//! \param lY is the Y coordinate of the first pixel. -//! \param lX0 is sub-pixel offset within the pixel data, which is valid for 1 -//! or 4 bit per pixel formats. -//! \param lCount is the number of pixels to draw. -//! \param lBPP is the number of bits per pixel; must be 1, 4, or 8. -//! \param pucData is a pointer to the pixel data. For 1 and 4 bit per pixel -//! formats, the most significant bit(s) represent the left-most pixel. -//! \param pucPalette is a pointer to the palette used to draw the pixels. -//! -//! This function draws a horizontal sequence of pixels on the screen, using -//! the supplied palette. For 1 bit per pixel format, the palette contains -//! pre-translated colors; for 4 and 8 bit per pixel formats, the palette -//! contains 24-bit RGB values that must be translated before being written to -//! the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDrawMultiple(void *pvDisplayData, long lX, long lY, - long lX0, long lCount, long lBPP, - const unsigned char *pucData, - const unsigned char *pucPalette) -{ - unsigned long ulByte; - - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX + lCount - 1); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Determine how to interpret the pixel data based on the number of bits - // per pixel. - // - switch(lBPP) - { - // - // The pixel data is in 1 bit per pixel format. - // - case 1: - { - // - // Loop while there are more pixels to draw. - // - while(lCount) - { - // - // Get the next byte of image data. - // - ulByte = *pucData++; - - // - // Loop through the pixels in this byte of image data. - // - for(; (lX0 < 8) && lCount; lX0++, lCount--) - { - // - // Draw this pixel in the appropriate color. - // - lBPP = ((unsigned long *)pucPalette)[(ulByte >> - (7 - lX0)) & 1]; - WriteData(lBPP >> 8); - WriteData(lBPP); - } - - // - // Start at the beginning of the next byte of image data. - // - lX0 = 0; - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 4 bit per pixel format. - // - case 4: - { - // - // Loop while there are more pixels to draw. "Duff's device" is - // used to jump into the middle of the loop if the first nibble of - // the pixel data should not be used. Duff's device makes use of - // the fact that a case statement is legal anywhere within a - // sub-block of a switch statement. See - // http://en.wikipedia.org/wiki/Duff's_device for detailed - // information about Duff's device. - // - switch(lX0 & 1) - { - case 0: - while(lCount) - { - // - // Get the upper nibble of the next byte of pixel data - // and extract the corresponding entry from the - // palette. - // - ulByte = (*pucData >> 4) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - - // - // See if there is another pixel to draw. - // - if(lCount) - { - case 1: - // - // Get the lower nibble of the next byte of pixel - // data and extract the corresponding entry from - // the palette. - // - ulByte = (*pucData++ & 15) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - } - } - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 8 bit per pixel format. - // - case 8: - { - // - // Loop while there are more pixels to draw. - // - while(lCount--) - { - // - // Get the next byte of pixel data and extract the - // corresponding entry from the palette. - // - ulByte = *pucData++ * 3; - ulByte = *(unsigned long *)(pucPalette + ulByte) & 0x00ffffff; - - // - // Translate this palette entry and write it to the screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - } - - // - // The image data has been drawn. - // - break; - } - } -} - -//***************************************************************************** -// -//! Flushes any cached drawing operations. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! -//! This functions flushes any cached drawing operations to the display. This -//! is useful when a local frame buffer is used for drawing operations, and the -//! flush would copy the local frame buffer to the display. For the ST7637 -//! driver, the flush is a no operation. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16Flush(void *pvDisplayData) -{ - // - // There is nothing to be done. - // -} - -//***************************************************************************** -// -//! Draws a horizontal line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX1 is the X coordinate of the start of the line. -//! \param lX2 is the X coordinate of the end of the line. -//! \param lY is the Y coordinate of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a horizontal line on the display. The coordinates of -//! the line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawH(void *pvDisplayData, long lX1, long lX2, long lY, - unsigned long ulValue) -{ - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX1); - WriteData(lX2); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this horizontal line. - // - while(lX1++ <= lX2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Draws a vertical line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the line. -//! \param lY1 is the Y coordinate of the start of the line. -//! \param lY2 is the Y coordinate of the end of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a vertical line on the display. The coordinates of the -//! line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawV(void *pvDisplayData, long lX, long lY1, long lY2, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the extent of the line along the Y axis. - // - WriteCommand(0x2b); - WriteData(lY1 + 1); - WriteData(lY2 + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this vertical line. - // - while(lY1++ <= lY2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Fills a rectangle. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param pRect is a pointer to the structure describing the rectangle. -//! \param ulValue is the color of the rectangle. -//! -//! This function fills a rectangle on the display. The coordinates of the -//! rectangle are assumed to be within the extents of the display, and the -//! rectangle specification is fully inclusive (i.e. both sXMin and sXMax are -//! drawn, along with sYMin and sYMax). -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16RectFill(void *pvDisplayData, const tRectangle *pRect, - unsigned long ulValue) -{ - long lCount; - - // - // Set the extent of the rectangle along the X axis. - // - WriteCommand(0x2a); - WriteData(pRect->sXMin); - WriteData(pRect->sXMax); - - // - // Set the extent of the rectangle along the Y axis. - // - WriteCommand(0x2b); - WriteData(pRect->sYMin + 1); - WriteData(pRect->sYMax + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels in this rectangle. - // - for(lCount = ((pRect->sXMax - pRect->sXMin + 1) * - (pRect->sYMax - pRect->sYMin + 1)); lCount > 0; lCount--) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Translates a 24-bit RGB color to a display driver-specific color. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param ulValue is the 24-bit RGB color. The least-significant byte is the -//! blue channel, the next byte is the green channel, and the third byte is the -//! red channel. -//! -//! This function translates a 24-bit RGB color into a value that can be -//! written into the display's frame buffer in order to reproduce that color, -//! or the closest possible approximation of that color. -//! -//! \return Returns the display-driver specific color. -// -//***************************************************************************** -static unsigned long -Formike128x128x16ColorTranslate(void *pvDisplayData, unsigned long ulValue) -{ - // - // Translate from a 24-bit RGB color to a 5-6-5 RGB color. - // - return(DPYCOLORTRANSLATE(ulValue)); -} - -//***************************************************************************** -// -//! The display structure that describes the driver for the Formike Electronic -//! KWH015C04-F01 CSTN panel with an ST7637 controller. -// -//***************************************************************************** -const tDisplay g_sFormike128x128x16 = -{ - sizeof(tDisplay), - 0, - 128, - 128, - Formike128x128x16PixelDraw, - Formike128x128x16PixelDrawMultiple, - Formike128x128x16LineDrawH, - Formike128x128x16LineDrawV, - Formike128x128x16RectFill, - Formike128x128x16ColorTranslate, - Formike128x128x16Flush -}; - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** - - - - - - - - - - - - - - - - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ - -static tContext sContext; - -void vFormike128x128x16Clear( void ) -{ -const tRectangle xRectangle = { 0, 0, 127, 127 }; - - GrContextForegroundSet( &sContext, ClrBlack ); - GrRectFill( &sContext, &xRectangle ); - GrContextForegroundSet(&sContext, ClrWhite); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ) -{ - GrContextForegroundSet(&sContext, ClrWhite); - GrStringDraw( &sContext, pcString, strlen( pcString ), lX, lY, false ); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16Init( unsigned long ul ) -{ -tRectangle rectScreen; - - ( void ) ul; - - Formike128x128x16Init(); - Formike128x128x16BacklightOn(); - GrContextInit(&sContext, &g_sFormike128x128x16); - GrContextFontSet(&sContext, &g_sFontCmss12); - rectScreen.sXMin = 0; - - /* Fill the screen with a black rectangle. */ - rectScreen.sYMin = 0; - rectScreen.sXMax = g_sFormike128x128x16.usWidth - 1; - rectScreen.sYMax = g_sFormike128x128x16.usHeight - 1; - GrContextForegroundSet(&sContext, ClrBlack); - GrRectFill(&sContext, &rectScreen); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ) -{ - GrImageDraw( &sContext, pucImage, ( long ) ulX, ( long ) ulY); - -} - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h deleted file mode 100644 index feaec758f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h +++ /dev/null @@ -1,51 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.h - Prototypes for the Formike Electronic KWH015C04-F01 -// display driver. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __FORMIKE128X128X16_H__ -#define __FORMIKE128X128X16_H__ - -//***************************************************************************** -// -// Prototypes for the globals exported by this driver. -// -//***************************************************************************** -extern void Formike128x128x16Init(void); -extern void Formike128x128x16BacklightOn(void); -extern void Formike128x128x16BacklightOff(void); -extern const tDisplay g_sFormike128x128x16; - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ -void vFormike128x128x16Clear( void ); -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ); -void vFormike128x128x16Init( unsigned long ul ); -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ); - -#endif // __FORMIKE128X128X16_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h deleted file mode 100644 index adfc18b8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef LCD_MESSAGE_H -#define LCD_MESSAGE_H - -typedef struct -{ - signed char *pcMessage; -} xOLEDMessage; - -#endif /* LCD_MESSAGE_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c deleted file mode 100644 index 22335c473..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Fast Interrupt Test" - A high frequency periodic interrupt is generated - * using a free running timer to demonstrate the use of the - * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt - * service routine measures the number of processor clocks that occur between - * each interrupt - and in so doing measures the jitter in the interrupt timing. - * The maximum measured jitter time is latched in the ulMaxJitter variable, and - * displayed on the OLED display by the 'OLED' task as described below. The - * fast interrupt is configured and handled in the timertest.c source file. - * - * "OLED" task - the OLED task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the OLED send the message on a queue to the OLED task instead of - * accessing the OLED themselves. The OLED task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. - * - * "Check" hook - This only executes every five seconds from the tick hook. - * Its main function is to check that all the standard demo tasks are still - * operational. Should any unexpected behaviour within a demo task be discovered - * the tick hook will write an error to the OLED (via the OLED task). If all the - * demo tasks are executing with their expected behaviour then the check task - * writes PASS to the OLED (again via the OLED task), as described above. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * Use the following command to execute in QEMU from the IAR IDE: - * qemu-system-arm -machine lm3s6965evb -s -S -kernel [pat_to]\RTOSDemo.out - * and set IAR connect GDB server to "localhost,1234" in project debug options. - */ - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portlm3sx965.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ - -/* Set the following option to 1 to include the WEB server in the build. By -default the WEB server is excluded to keep the compiled code size under the 32K -limit imposed by the KickStart version of the IAR compiler. The graphics -libraries take up a lot of ROM space, hence including the graphics libraries -and the TCP/IP stack together cannot be accommodated with the 32K size limit. */ -#define mainINCLUDE_WEB_SERVER 0 - - -/* Standard includes. */ -#include -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Hardware library includes. */ -#include "hw_memmap.h" -#include "hw_types.h" -#include "hw_sysctl.h" -#include "hw_uart.h" -#include "sysctl.h" -#include "gpio.h" -#include "grlib.h" -#include "rit128x96x4.h" -#include "osram128x64x4.h" -#include "formike128x128x16.h" -#include "uart.h" - -/* Demo app includes. */ -#include "death.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "lcd_message.h" -#include "bitmap.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "IntQueue.h" -#include "QueueSet.h" -#include "EventGroupsDemo.h" -#include "MessageBufferDemo.h" -#include "StreamBufferDemo.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Size of the stack allocated to the uIP task. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The OLED task uses the sprintf function so requires a little more stack too. */ -#define mainOLED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The maximum number of message that can be waiting for display at any one -time. */ -#define mainOLED_QUEUE_SIZE ( 3 ) - -/* Dimensions the buffer into which the jitter time is written. */ -#define mainMAX_MSG_LEN 25 - -/* The period of the system clock in nano seconds. This is used to calculate -the jitter time in nano seconds. */ -#define mainNS_PER_CLOCK ( ( unsigned long ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) ) - -/* Constants used when writing strings to the display. */ -#define mainCHARACTER_HEIGHT ( 9 ) -#define mainMAX_ROWS_128 ( mainCHARACTER_HEIGHT * 14 ) -#define mainMAX_ROWS_96 ( mainCHARACTER_HEIGHT * 10 ) -#define mainMAX_ROWS_64 ( mainCHARACTER_HEIGHT * 7 ) -#define mainFULL_SCALE ( 15 ) -#define ulSSI_FREQUENCY ( 3500000UL ) - -/*-----------------------------------------------------------*/ - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The display is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the display directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vOLEDTask( void *pvParameters ); - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Configures the high frequency timers - those used to measure the timing - * jitter while the real time kernel is executing. - */ -extern void vSetupHighFrequencyTimer( void ); - -/* - * Hook functions that can get called by the kernel. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); -void vApplicationTickHook( void ); - -static void prvPrintString( const char * pcString ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send messages to the OLED task. */ -QueueHandle_t xOLEDQueue; - -/* The welcome text. */ -const char * const pcWelcomeMessage = " www.FreeRTOS.org"; - -/*-----------------------------------------------------------*/ - - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portlm3sx965.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ -int main( void ) -{ - prvSetupHardware(); - - /* Create the queue used by the OLED task. Messages for display on the OLED - are received via this queue. */ - xOLEDQueue = xQueueCreate( mainOLED_QUEUE_SIZE, sizeof( xOLEDMessage ) ); - - /* Start the standard demo tasks. */ - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartInterruptQueueTasks(); - vStartRecursiveMutexTasks(); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartQueuePeekTasks(); - vStartQueueSetTasks(); - vStartEventGroupTasks(); - vStartMessageBufferTasks( configMINIMAL_STACK_SIZE ); - vStartStreamBufferTasks(); - - /* Exclude some tasks if using the kickstart version to ensure we stay within - the 32K code size limit. */ - #if mainINCLUDE_WEB_SERVER != 0 - { - /* Create the uIP task if running on a processor that includes a MAC and - PHY. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - } - } - #endif - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vOLEDTask, "OLED", mainOLED_TASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Uncomment the following line to configure the high frequency interrupt - used to measure the interrupt jitter time. - vSetupHighFrequencyTimer(); */ - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is - a workaround to allow the PLL to operate reliably. */ - if( DEVICE_IS_REVA2 ) - { - SysCtlLDOSet( SYSCTL_LDO_2_75V ); - } - - /* Set the clocking to run from the PLL at 50 MHz */ - SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ ); - - /* Enable Port F for Ethernet LEDs - LED0 Bit 3 Output - LED1 Bit 2 Output */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF ); - GPIODirModeSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3), GPIO_DIR_MODE_HW ); - GPIOPadConfigSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3 ), GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - - vParTestInitialise(); - - /* Initialise the UART - QEMU usage does not seem to require this - initialisation. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_UART0 ); - UARTEnable( UART0_BASE ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static xOLEDMessage xMessage = { "PASS" }; -static unsigned long ulTicksSinceLastDisplay = 0; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt. Have enough ticks passed to make it - time to perform our health status check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreStreamBufferTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN STRM"; - } - else if( xAreMessageBufferTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN MSG"; - } - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN GEN Q"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN CREATE"; - } - else if( xAreIntQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN INT QUEUE"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN BLOCK TIME"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN SEMAPHORE"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN POLL Q"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN PEEK Q"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN REC MUTEX"; - } - else if( xAreQueueSetTasksStillRunning() != pdPASS ) - { - xMessage.pcMessage = "ERROR IN Q SET"; - } - else if( xAreEventGroupTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN EVNT GRP"; - } - - /* Send the message to the OLED gatekeeper for display. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken ); - } - - /* Write to a queue that is in use as part of the queue set demo to - demonstrate using queue sets from an ISR. */ - vQueueSetAccessQueueSetFromISR(); - - /* Call the event group ISR tests. */ - vPeriodicEventGroupsProcessing(); -} -/*-----------------------------------------------------------*/ - -static void prvPrintString( const char * pcString ) -{ - while( *pcString != 0x00 ) - { - UARTCharPut( UART0_BASE, *pcString ); - pcString++; - } -} -/*-----------------------------------------------------------*/ - -void vOLEDTask( void *pvParameters ) -{ -xOLEDMessage xMessage; -unsigned long ulY, ulMaxY; -static char cMessage[ mainMAX_MSG_LEN ]; -extern volatile unsigned long ulMaxJitter; -const unsigned char *pucImage; - -/* Functions to access the OLED. The one used depends on the dev kit -being used. */ -void ( *vOLEDInit )( unsigned long ) = NULL; -void ( *vOLEDStringDraw )( const char *, unsigned long, unsigned long, unsigned char ) = NULL; -void ( *vOLEDImageDraw )( const unsigned char *, unsigned long, unsigned long, unsigned long, unsigned long ) = NULL; -void ( *vOLEDClear )( void ) = NULL; - - /* Map the OLED access functions to the driver functions that are appropriate - for the evaluation kit being used. */ - switch( HWREG( SYSCTL_DID1 ) & SYSCTL_DID1_PRTNO_MASK ) - { - case SYSCTL_DID1_PRTNO_6965 : - case SYSCTL_DID1_PRTNO_2965 : vOLEDInit = OSRAM128x64x4Init; - vOLEDStringDraw = OSRAM128x64x4StringDraw; - vOLEDImageDraw = OSRAM128x64x4ImageDraw; - vOLEDClear = OSRAM128x64x4Clear; - ulMaxY = mainMAX_ROWS_64; - pucImage = pucBasicBitmap; - break; - - case SYSCTL_DID1_PRTNO_1968 : - case SYSCTL_DID1_PRTNO_8962 : vOLEDInit = RIT128x96x4Init; - vOLEDStringDraw = RIT128x96x4StringDraw; - vOLEDImageDraw = RIT128x96x4ImageDraw; - vOLEDClear = RIT128x96x4Clear; - ulMaxY = mainMAX_ROWS_96; - pucImage = pucBasicBitmap; - break; - - default : vOLEDInit = vFormike128x128x16Init; - vOLEDStringDraw = vFormike128x128x16StringDraw; - vOLEDImageDraw = vFormike128x128x16ImageDraw; - vOLEDClear = vFormike128x128x16Clear; - ulMaxY = mainMAX_ROWS_128; - pucImage = pucGrLibBitmap; - break; - - } - - ulY = ulMaxY; - - /* Initialise the OLED and display a startup message. */ - vOLEDInit( ulSSI_FREQUENCY ); - vOLEDStringDraw( "POWERED BY FreeRTOS", 0, 0, mainFULL_SCALE ); - vOLEDImageDraw( pucImage, 0, mainCHARACTER_HEIGHT + 1, bmpBITMAP_WIDTH, bmpBITMAP_HEIGHT ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - xQueueReceive( xOLEDQueue, &xMessage, portMAX_DELAY ); - - /* Write the message on the next available row. */ - ulY += mainCHARACTER_HEIGHT; - if( ulY >= ulMaxY ) - { - ulY = mainCHARACTER_HEIGHT; - vOLEDClear(); - vOLEDStringDraw( pcWelcomeMessage, 0, 0, mainFULL_SCALE ); - } - - /* Display the message along with the maximum jitter time from the - high priority time test. */ - sprintf( cMessage, "%s [%uns]", xMessage.pcMessage, ulMaxJitter * mainNS_PER_CLOCK ); - vOLEDStringDraw( cMessage, 0, ulY, mainFULL_SCALE ); - prvPrintString( cMessage ); - } -} -/*-----------------------------------------------------------*/ - -volatile char *pcOverflowedTask = NULL; -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pxTask; - pcOverflowedTask = pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vAssertCalled( const char *pcFile, unsigned long ulLine ) -{ -volatile unsigned long ulSetTo1InDebuggerToExit = 0; - - taskENTER_CRITICAL(); - { - while( ulSetTo1InDebuggerToExit == 0 ) - { - /* Nothing to do here. Set the loop variable to a non zero value in - the debugger to step out of this function to the point that caused - the assertion. */ - ( void ) pcFile; - ( void ) ulLine; - } - } - taskEXIT_CRITICAL(); -} - -/* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an -implementation of vApplicationGetIdleTaskMemory() to provide the memory that is -used by the Idle task. */ -void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ) -{ -/* If the buffers to be provided to the Idle task are declared inside this -function then they must be declared static - otherwise they will be allocated on -the stack and so not exists after this function exits. */ -static StaticTask_t xIdleTaskTCB; -static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ]; - - /* Pass out a pointer to the StaticTask_t structure in which the Idle task's - state will be stored. */ - *ppxIdleTaskTCBBuffer = &xIdleTaskTCB; - - /* Pass out the array that will be used as the Idle task's stack. */ - *ppxIdleTaskStackBuffer = uxIdleTaskStack; - - /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer. - Note that, as the array is necessarily of type StackType_t, - configMINIMAL_STACK_SIZE is specified in words, not bytes. */ - *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE; -} -/*-----------------------------------------------------------*/ - -/* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the -application must provide an implementation of vApplicationGetTimerTaskMemory() -to provide the memory that is used by the Timer service task. */ -void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize ) -{ -/* If the buffers to be provided to the Timer task are declared inside this -function then they must be declared static - otherwise they will be allocated on -the stack and so not exists after this function exits. */ -static StaticTask_t xTimerTaskTCB; -static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ]; - - /* Pass out a pointer to the StaticTask_t structure in which the Timer - task's state will be stored. */ - *ppxTimerTaskTCBBuffer = &xTimerTaskTCB; - - /* Pass out the array that will be used as the Timer task's stack. */ - *ppxTimerTaskStackBuffer = uxTimerTaskStack; - - /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer. - Note that, as the array is necessarily of type StackType_t, - configMINIMAL_STACK_SIZE is specified in words, not bytes. */ - *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH; -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c deleted file mode 100644 index 3353a82e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c +++ /dev/null @@ -1,933 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.c - Driver for the OSRAM 128x64x4 graphical OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sx965_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "osram128x64x4.h" - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for OSRAM usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Define the OSRAM 128x64x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-39 on one side, 40-79 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-79 map to COM 79-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define OSRAM_INIT_REMAP 0x52 -#define OSRAM_INIT_OFFSET 0x4C -static const unsigned char g_pucOSRAM128x64x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucOSRAM128x64x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD0303 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from OSRAM App Note AN018. -// -//***************************************************************************** -static const unsigned char g_pucOSRAM128x64x4Init[] = -{ - // - // Column Address - // - 4, 0x15, 0, 63, 0xe3, - - // - // Row Address - // - 4, 0x75, 0, 63, 0xe3, - - // - // Contrast Control - // - 3, 0x81, 50, 0xe3, - - // - // Half Current Range - // - 2, 0x85, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, OSRAM_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, OSRAM_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Multiplex Ratio - // - 3, 0xA8, 63, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x22, 0xe3, - - // - // Row Period - // - 3, 0xB2, 70, 0xe3, - - // - // Display Clock Divide - // - 3, 0xB3, 0xF1, 0xe3, - - // - // VSL - // - 3, 0xBF, 0x0D, 0xe3, - - // - // VCOMH - // - 3, 0xBE, 0x02, 0xe3, - - // - // VP - // - 3, 0xBC, 0x10, 0xe3, - - // - // Gamma - // - 10, 0xB8, 0x01, 0x11, 0x22, 0x32, 0x43, 0x54, 0x65, 0x76, 0xe3, - - // - // Set DC-DC - 3, 0xAD, 0x03, 0xe3, - - // - // Display ON/OFF - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 79 }; - unsigned long ulRow, ulColumn; - static unsigned char pucZeroBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0}; - - // - // Set the window to fill the entire display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); - OSRAMWriteCommand(pucCommand2, sizeof(pucCommand2)); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // In vertical address increment mode, loop through each column, filling - // each row with 0. - // - for(ulColumn = 0; ulColumn < (128/2); ulColumn++) - { - // - // 8 rows (bytes) per row of text. - // - for(ulRow = 0; ulRow < 80; ulRow += 8) - { - OSRAMWriteData(pucZeroBuffer, sizeof(pucZeroBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - static unsigned char pucBuffer[8]; - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = 63; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + 7; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - OSRAMWriteData(pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (/e ulX) and the number of -//! columns (/e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+--3------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by` -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - static unsigned char pucBuffer[8]; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 64); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = (ulX + ulWidth - 2) / 2; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + ulHeight - 1; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4HorizontalInc, - sizeof(g_pucOSRAM128x64x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - OSRAMWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the OSRAM driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the OSRAM driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); - -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD0323 controller on the panel. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the PC7 pin as a D/Cn signal for OLED device. - // - GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD); - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Configure and enable the SSI0 port for master mode. - // - OSRAM128x64x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - OSRAM128x64x4Clear(); - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xAD, 0x02 - }; - - // - // Turn off the DC-DC converter and the display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h deleted file mode 100644 index 2ba7cb956..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h +++ /dev/null @@ -1,63 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.h - Prototypes for the driver for the OSRAM 128x64x4 graphical -// OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __OSRAM128X64X4_H__ -#define __OSRAM128X64X4_H__ - -//***************************************************************************** -// -// Prototypes for the driver APIs. -// -//***************************************************************************** -extern void OSRAM128x64x4Clear(void); -extern void OSRAM128x64x4StringDraw(const char *pcStr, - unsigned long ulX, - unsigned long ulY, - unsigned char ucLevel); -extern void OSRAM128x64x4ImageDraw(const unsigned char *pucImage, - unsigned long ulX, - unsigned long ulY, - unsigned long ulWidth, - unsigned long ulHeight); -extern void OSRAM128x64x4Init(unsigned long ulFrequency); -extern void OSRAM128x64x4Enable(unsigned long ulFrequency); -extern void OSRAM128x64x4Disable(void); -extern void OSRAM128x64x4DisplayOn(void); -extern void OSRAM128x64x4DisplayOff(void); - -//***************************************************************************** -// -// The following macro(s) map old names for the OSRAM functions to the new -// names. In new code, the new names should be used in favor of the old names. -// -//***************************************************************************** -#ifndef DEPRECATED -#define OSRAM128x64x1InitSSI OSRAM128x64x4Enable -#endif - -#endif // __OSRAM128X64X4_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c deleted file mode 100644 index cff38d557..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c +++ /dev/null @@ -1,981 +0,0 @@ -//***************************************************************************** -// -// rit128x96x4.c - Driver for the RIT 128x96x4 graphical OLED display. -// -// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1504-conf of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sLM3S8962_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "rit128x96x4.h" - -//***************************************************************************** -// -// Macros that define the peripheral, port, and pin used for the OLEDDC -// panel control signal. -// -//***************************************************************************** - -unsigned long ulGPIOId = 0, ulGPIOBase = 0, ulOLEDDC_PIN = 0, ulOLEDEN_PIN = 0; - -#define LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOA -#define LM3S8962_GPIO_OLEDDC_BASE GPIO_PORTA_BASE -#define LM3S8962_GPIO_OLEDDC_PIN GPIO_PIN_6 -#define LM3S8962_GPIO_OLEDEN_PIN GPIO_PIN_7 - -#define LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOH -#define LM3S1968_GPIO_OLEDDC_BASE GPIO_PORTH_BASE -#define LM3S1968_GPIO_OLEDDC_PIN GPIO_PIN_2 -#define LM3S1968_GPIO_OLEDEN_PIN GPIO_PIN_3 - - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for display usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Buffer for storing sequences of command and data for the display. -// -//***************************************************************************** -static unsigned char g_pucBuffer[8]; - -//***************************************************************************** -// -// Define the SSD1329 128x96x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. Note that the controller support 128 rows while -// the RIT display only uses 96. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-63 on one side, 64-127 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-127 map to COM 127-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define RIT_INIT_REMAP 0x52 // app note says 0x51 -#define RIT_INIT_OFFSET 0x00 -static const unsigned char g_pucRIT128x96x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucRIT128x96x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD1329 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from RIT App Note for -// the P14201. Values used are from the RIT app note, except where noted. -// -//***************************************************************************** -static const unsigned char g_pucRIT128x96x4Init[] = -{ - // - // Unlock commands - // - 3, 0xFD, 0x12, 0xe3, - - // - // Display off - // - 2, 0xAE, 0xe3, - - // - // Icon off - // - 3, 0x94, 0, 0xe3, - - // - // Multiplex ratio - // - 3, 0xA8, 95, 0xe3, - - // - // Contrast - // - 3, 0x81, 0xb7, 0xe3, - - // - // Pre-charge current - // - 3, 0x82, 0x3f, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, RIT_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, RIT_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x11, 0xe3, - - // - // Frame frequency - // - 3, 0xB2, 0x23, 0xe3, - - // - // Front Clock Divider - // - 3, 0xB3, 0xe2, 0xe3, - - // - // Set gray scale table. App note uses default command: - // 2, 0xB7, 0xe3 - // This gray scale attempts some gamma correction to reduce the - // the brightness of the low levels. - // - 17, 0xB8, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 22, 26, 30, 0xe3, - - // - // Second pre-charge period. App note uses value 0x04. - // - 3, 0xBB, 0x01, 0xe3, - - // - // Pre-charge voltage - // - 3, 0xBC, 0x3f, 0xe3, - - // - // Display ON - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, ulOLEDDC_PIN); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 127 }; - unsigned long ulRow, ulColumn; - - // - // Clear out the buffer used for sending bytes to the display. - *(unsigned long *)&g_pucBuffer[0] = 0; - *(unsigned long *)&g_pucBuffer[4] = 0; - - // - // Set the window to fill the entire display. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); - RITWriteCommand(pucCommand2, sizeof(pucCommand2)); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop through the rows - // - for(ulRow = 0; ulRow < 96; ulRow++) - { - // - // Loop through the columns. Each byte is two pixels, - // and the buffer hold 8 bytes, so 16 pixels are cleared - // at a time. - // - for(ulColumn = 0; ulColumn < 128; ulColumn += 8 * 2) - { - // - // Write 8 clearing bytes to the display, which will - // clear 16 pixels across. - // - RITWriteData(g_pucBuffer, sizeof(g_pucBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = 63; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + 7; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4VerticalInc, - sizeof(g_pucRIT128x96x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - g_pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - g_pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - g_pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - RITWriteData(g_pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (\e ulX) and the number of -//! columns (\e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 96); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = (ulX + ulWidth - 2) / 2; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + ulHeight - 1; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - RITWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the RIT driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the RIT driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD1329 controller on the panel. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - - /* Determine which board is being used. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - /* Ethernet is present, we must be using the LM3S8962 EK. */ - ulGPIOId = LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S8962_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_6; - ulOLEDEN_PIN = GPIO_PIN_7; - } - else - { - /* Ethernet is not present, we must be using the LM3S1968 EK. */ - ulGPIOId = LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S1968_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_2; - ulOLEDEN_PIN = GPIO_PIN_3; - } - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(ulGPIOId); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the GPIO port pin used as a D/Cn signal for OLED device, - // and the port pin used to enable power to the OLED panel. - // - GPIOPinTypeGPIOOutput(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN); - GPIOPadConfigSet(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - ulOLEDDC_PIN | ulOLEDEN_PIN); - - // - // Configure and enable the SSI0 port for master mode. - // - RIT128x96x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - RIT128x96x4Clear(); - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xe3 - }; - - // - // Put the display to sleep. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat deleted file mode 100644 index 9d325f6a3..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,24 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM -@REM Read about available command line parameters in the C-SPY Debugging -@REM Guide. Hints about additional command line parameters that may be -@REM useful in specific cases: -@REM --download_only Downloads a code image without starting a debug -@REM session afterwards. -@REM --silent Omits the sign-on message. -@REM --timeout Limits the maximum allowed execution time. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.5\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\bin\armlmiftdi.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.dll" --flash_loader "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\config\flashloader\TexasInstruments\FlashLM3Sx8xx.board" --backend -B "--endian=little" "--cpu=Cortex-M3" "--fpu=None" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\CONFIG\debugger\TexasInstruments\LM3S6965.ddf" "--drv_verify_download" "--semihosting=none" "--device=LM3S6965" "--lmiftdi_speed=500" - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt deleted file mode 100644 index 373cdbf9d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,1604 +0,0 @@ - - - - - - - 3 - 0 - 0 - - - 20 - 1622 - - - 20 - 1006 - 268 - 67 - - 3 - 0 - 0 - - - Debug-Log - - - Breakpoints - - - - - - - 148 - 27 - 27 - 27 - - - - - 2 - 0 - 0 - - - 1 - 0 - - Disassembly - _I0 - - - 500 - 20 - - - 0 - 0 - - - - - - - - - - 2 - 0 - 0 - - - 100 - 100 - 100 - 100 - - - - 3 - 0 - 0 - - - 200 - 100 - 100 - 100 - 100 - 100 - 100 - 100 - 150 - - - 300 - 100 - 100 - 100 - 100 - 100 - 100 - - - - 3 - 0 - 0 - - - Debug-Log - - - Build - - - - - - - - - - TabID-21213-12021 - Workspace - Workspace - - - RTOSDemo - RTOSDemo/Demo files - RTOSDemo/Scheduler files - RTOSDemo/System files - RTOSDemo/uIP files - - - - - 0 - - - - - TabID-21977-24465 - Disassembly - Disassembly - - - - 0 - - - - - TabID-19886-24505 - Queues - QUEUEVIEW - - - - 0 - - - - - TabID-3889-27875 - Debug Log - Debug-Log - - - - 0 - - - - - - TextEditor - $WS_DIR$\main.c - 0 - 0 - 0 - 0 - 0 - 240 - 10549 - 10549 - - 0 - - TextEditor - $WS_DIR$\..\..\Source\list.c - 0 - 0 - 0 - 0 - 0 - 109 - 6001 - 6001 - - - TextEditor - $WS_DIR$\FreeRTOSConfig.h - 0 - 0 - 0 - 0 - 0 - 65 - 5070 - 5070 - - - TextEditor - $WS_DIR$\..\..\Source\queue.c - 0 - 0 - 0 - 0 - 0 - 2129 - 66681 - 66681 - - - TextEditor - $WS_DIR$\..\Common\Minimal\GenQTest.c - 0 - 0 - 0 - 0 - 0 - 149 - 8126 - 8126 - - - TextEditor - $WS_DIR$\..\Common\Minimal\semtest.c - 0 - 0 - 0 - 0 - 0 - 225 - 10789 - 10789 - - - TextEditor - $WS_DIR$\..\..\Source\timers.c - 0 - 0 - 0 - 0 - 0 - 59 - 3992 - 4022 - - - TextEditor - $WS_DIR$\..\Common\Minimal\EventGroupsDemo.c - 0 - 0 - 0 - 0 - 0 - 272 - 12088 - 12088 - - - TextEditor - $WS_DIR$\..\Common\Minimal\integer.c - 0 - 0 - 0 - 0 - 0 - 122 - 6361 - 6361 - - - 0 - - - 1000000 - 1000000 - - - 1 - - - - - - - iaridepm.enu1 - - - debuggergui.enu1 - - - - - - - - - - - - - -2 - -2 - 542 - 238 - -2 - -2 - 240 - 200 - 142857 - 203666 - 142857 - 553971 - - - - - - - - - - - -2 - -2 - 542 - 198 - -2 - -2 - 200 - 200 - 119048 - 203666 - 119048 - 553971 - - - - - - - - - - - -2 - -2 - 198 - 1682 - -2 - -2 - 1684 - 200 - 1002381 - 203666 - 119048 - 203666 - - - - - - - - - 196 - -2 - 396 - 1682 - -2 - 196 - 1684 - 200 - 1002381 - 203666 - 119048 - 203666 - - - - - - - - - - - - - 34048 - 34049 - 34050 - 34051 - 34052 - 34053 - 34054 - 34055 - 34056 - 34057 - 34058 - 34059 - 34060 - 34061 - 34062 - 34063 - 34064 - 34065 - 34066 - 34067 - 34068 - 34069 - 34070 - 34071 - 34072 - 34073 - 34074 - 34075 - 34076 - 34077 - 34078 - 34079 - 34080 - 34081 - 34082 - 34083 - 34084 - 34085 - 34086 - 34087 - 34088 - 34089 - 34090 - 34091 - 34092 - 34093 - 34094 - 34095 - 34096 - 34097 - 34098 - 34099 - 34100 - 34101 - 34102 - 34103 - 34104 - 34105 - 34106 - 34107 - 34108 - 34109 - 34110 - 34111 - 34112 - 34113 - 34114 - 34115 - - - - - 34000 - 34001 - 0 - - - - - 34390 - 34323 - 34398 - 34400 - 34397 - 34320 - 34321 - 34324 - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33055 - 33056 - 33094 - 0 - - - - 14 - 23 - - - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 5E000000110000DA000002000000108600002200000005B00000020000000F810000010000001BB000000100000004B000000200000001B00000010000001A860000020000000E81000001000000058100000100000055860000010000001AB00000010000001186000010000000468100001C000000608600000100000000B00000010000000886000001000000 - - - 30001AB000001BB00000FFFFFFFF1CB000001DB0000000DA0000838600005886000004DC00007784000007840000808C000044D500007486000000DC000001DC000002DC000003DC000016B0000017B000000C84000033840000788400001184000008800000098000000A8000000B8000000C800000158000000A81000001E80000439200001E920000289200002992000024960000259600001F96000000B0000001B0000007DE000008DE00003787000008D6000006D6000004B0000005B00000 - 4500028600001000000013860000260000000484000073000000578600001800000059920000250000000481000043000000768600003000000010860000240000008486000031000000318400007A00000023920000000000000A8600002C00000020810000520000000F8100004A0000001D920000120000000C81000047000000008D00001F000000078600001F00000009810000450000000684000075000000048600001C000000018600000F000000568600002A00000003840000720000009A86000016000000259200001A000000008400006E00000044920000230000000E840000770000003084000079000000098600002B0000001F920000200000005E8600002C0000001F810000510000000E810000490000001A860000290000002D920000220000000B810000460000008E86000032000000068600001E000000D18400001B000000038600001100000014860000270000000584000074000000698600002F000000008600000E0000002396000089000000058100004400000011860000250000000284000071000000558600000700000046810000590000001084000078000000328400007B0000000E860000170000000B8600002D000000608600002E000000088600002A00000035E100006B00000002E100005E0000005D8600002B0000000A840000760000000D81000048000000C386000003000000A18600003300000016860000320000002C92000021000000C08600000B000000058600001D000000 - - - 0 - 0A0000000A0000006E0000006E000000 - 0000000054050000700D000067050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34048 - 00000000220000003801000018010000 - 00000000C1040000700D000054050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 300 - 100 - 100 - 100 - 100 - 100 - 100 - - - 34049 - 00000000220000003801000018010000 - 0000000030040000700D000054050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 200 - 100 - 100 - 100 - 100 - 100 - 100 - 100 - 150 - - - 34053 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34054 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 4294967295 - 1E010000580000003802000040050000 - 1E010000410000003802000029050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34055 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34058 - 00000000220000003801000004010000 - 040000006C0400002414000005050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34066 - 00000000220000003801000004010000 - 00000000E4040000700D000054050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34069 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34070 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34071 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34091 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34103 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34056 - 0000000022000000AF020000DC000000 - 0000000000000000AF020000BA000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34057 - 00000000220000001A010000E0010000 - 00000000320000001A0100007F020000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - - Frame - _I0 - - - 3500 - 20 - - - - 34059 - 0000000022000000CE010000DC000000 - 040000007D06000024140000EE060000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34084 - 00000000220000003801000004010000 - 040000007D06000024140000EE060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34060 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34061 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34062 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34063 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34064 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34065 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34067 - 00000000220000001A010000E0010000 - 800A000032000000700D0000CC040000 - 16384 - 0 - 0 - 32767 - 0 - - - 1 - - - - Disassembly - _I0 - - - 500 - 20 - - - 1 - 1 - - - 34068 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34072 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34073 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34074 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34075 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34076 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34077 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34078 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34079 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34080 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34081 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34082 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34083 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34085 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34086 - 0B000000CF020000250100008D040000 - 00000000830200001A010000CC040000 - 16384 - 0 - 0 - 32767 - 0 - - - 1 - - - - Access - Name - Value - - - 180 - 180 - 180 - - - 0 - - - 34087 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34088 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34089 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34090 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34092 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34093 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34094 - 00000000220000001A010000E0010000 - 22010000660000003402000014040000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34112 - 00000000220000001A010000E0010000 - 1E010000550000003802000029050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34095 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34096 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34097 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34098 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34099 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34100 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34101 - 0000000022000000CE01000018010000 - 0000000000000000CE010000F6000000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34102 - 0000000022000000CE01000018010000 - 0000000000000000CE010000F6000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34104 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34105 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34106 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34107 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34108 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34109 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34110 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34111 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 000000004B000000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003F85000000000000000000000000000000000000010000003F850000010000003F850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003E85000000000000000000000000000000000000010000003E850000010000003E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003D85000000000000000000000000000000000000010000003D850000010000003D850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003C85000000000000000000000000000000000000010000003C850000010000003C850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000358500000000000000000000000000000000000001000000358500000100000035850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000348500000000000000000000000000000000000001000000348500000100000034850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000338500000000000000000000000000000000000001000000338500000100000033850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000318500000000000000000000000000000000000001000000318500000100000031850000000000000010000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000308500000000000000000000000000000000000001000000308500000100000030850000000000000010000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002F85000000000000000000000000000000000000010000002F850000010000002F850000000000000010000000000000FFFFFFFFFFFFFFFF38020000410000003C02000029050000000000000200000004000000010000000000000000000000FFFFFFFF0100000040850000FFFF02000B004354616262656450616E6500100000000000001E0100005800000038020000400500001E010000410000003802000029050000000000004010004601000000FFFEFF0957006F0072006B0073007000610063006500000000004085000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF4085000001000000FFFFFFFF40850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002A85000000000000000000000000000000000000010000002A850000010000002A850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000298500000000000000000000000000000000000001000000298500000100000029850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000288500000000000000000000000000000000000001000000288500000100000028850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000278500000000000000000000000000000000000001000000278500000100000027850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000258500000000000000000000000000000000000001000000258500000100000025850000000000000080000000000000FFFFFFFFFFFFFFFF0000000018060000281400001C060000000000000100000004000000010000000000000000000000FFFFFFFF040000001F8500002085000021850000228500000180008000000000000000000000330600002814000029070000000000001C0600002814000012070000000000004080004604000000FFFEFF084D0065006D006F007200790020003100000000001F85000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003200000000002085000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003300000000002185000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003400000000002285000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF1F85000001000000FFFFFFFF1F850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001E85000000000000000000000000000000000000010000001E850000010000001E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001D85000000000000000000000000000000000000010000001D850000010000001D850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001C85000000000000000000000000000000000000010000001C850000010000001C850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000198500000000000000000000000000000000000001000000198500000100000019850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000148500000000000000000000000000000000000001000000148500000100000014850000000000000040000001000000FFFFFFFFFFFFFFFF7C0A000032000000800A0000CC0400000100000002000010040000000100000041FCFFFFC9000000138500000000000000000000000000000000000001000000138500000100000013850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000118500000000000000000000000000000000000001000000118500000100000011850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000E85000000000000000000000000000000000000010000000E850000010000000E850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000020000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000010000001000000FFFFFFFFFFFFFFFF1A010000320000001E010000CC04000001000000020000100400000001000000000000000000000000000000000000000000000001000000098500002685000001000000000000000100000001000000FFFFFFFF000000007F0200001A0100008302000001000000010000100400000000000000A6FFFFFF4900000000000000000000000000000002000000098500002685000001000000268500000100000009850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000088500000000000000000000000000000000000001000000088500000100000008850000000000000080000001000000FFFFFFFFFFFFFFFF00000000CC040000700D0000D00400000100000001000010040000000100000033FEFFFFFFFFFFFFFFFFFFFF0700000007850000128500001585000016850000178500002B850000378500000180008000000100000000000000E7040000700D00006B05000000000000D0040000700D000054050000000000004080005607000000FFFEFF054200750069006C006400000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000001285000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000001585000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000001685000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000001785000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000002B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000003785000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF0785000001000000FFFFFFFF07850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000000000000FFFFFFFFFFFFFFFF000000002C040000700D00003004000000000000010000000400000001000000A8FEFFFF44000000018500000000000000000000000000000000000001000000018500000100000001850000000000000080000000000000FFFFFFFFFFFFFFFF00000000BD040000700D0000C104000000000000010000000400000001000000D5FCFFFF7A000000008500000000000000000000000000000000000001000000008500000100000000850000000000000080000000000000FFFFFFFFFFFFFFFF0000000085040000700D000089040000000000000100000004000000010000009BFEFFFF36010000418500000000000000000000000000000000000001000000418500000100000041850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000438500000000000000000000000000000000000001000000438500000100000043850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000428500000000000000000000000000000000000001000000428500000100000042850000000000000000000000000000 - - - CMSIS-Pack - 00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6ED0840000000004001D000000FFFEFF0000000000000000000000000001000000010000000180D1840000000000001B000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B002F000000 - - - 34050 - 0A0000000A0000006E0000006E000000 - 0004000000000000450400001A000000 - 8192 - 0 - 0 - 47 - 0 - - - 1 - - - Debug - 00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E56860000000004002A000000FFFEFF0000000000000000000000000001000000010000000180138600000000040026000000FFFEFF00000000000000000000000000010000000100000001805E860000000004002C000000FFFEFF000000000000000000000000000100000001000000018060860000000004002E000000FFFEFF00000000000000000000000000010000000100000001805D860000000004002B000000FFFEFF0000000000000000000000000001000000010000000180108600000000040024000000FFFEFF0000000000000000000000000001000000010000000180118600000000000025000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000040027000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000020009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000 - - - 34051 - 0A0000000A0000006E0000006E000000 - 1A03000000000000F60300001A000000 - 8192 - 0 - 0 - 198 - 0 - - - 1 - - - Main - 00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000005C000000FFFEFF000000000000000000000000000100000001000000018001E10000000000005D000000FFFEFF000000000000000000000000000100000001000000018003E10000000000005F000000FFFEFF0000000000000000000000000001000000010000000180008100000000000040000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000000062000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040064000000FFFEFF000000000000000000000000000100000001000000018022E100000000040063000000FFFEFF000000000000000000000000000100000001000000018025E100000000000066000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040069000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004006A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000200FFFEFF095400490043004B005F0048004F004F004B00FFFEFF1975006C0049006E007400650072007200750070007400540072006900670067006500720043006F0075006E0074006500720000000000000000000180218100000000040053000000FFFEFF000000000000000000000000000100000001000000018024E100000000000065000000FFFEFF000000000000000000000000000100000001000000018028E100000000040067000000FFFEFF000000000000000000000000000100000001000000018029E100000000000068000000FFFEFF0000000000000000000000000001000000010000000180028100000000000042000000FFFEFF0000000000000000000000000001000000010000000180298100000000000057000000FFFEFF0000000000000000000000000001000000010000000180278100000000000055000000FFFEFF0000000000000000000000000001000000010000000180288100000000000056000000FFFEFF00000000000000000000000000010000000100000001801D810000000000004F000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040050000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000046000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000047000000FFFEFF00000000000000000000000000010000000100000001805F860000000000005B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F8100000000000051000000FFFEFF0000000000000000000000000001000000010000000180208100000000000052000000FFFEFF0000000000000000000000000001000000010000000180468100000000020059000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000 - - - 34052 - 0A0000000A0000006E0000006E000000 - 0000000000000000150300001A000000 - 8192 - 0 - 0 - 767 - 0 - - - 1 - - - - Base Priority - Handle - Name - Priority - Run Count - Stack End - Stack Ptr - Stack Size - Stack Start - State - - - 65 - 125 - 100 - 65 - 75 - 125 - 125 - 75 - 125 - 100 - - - - 34113 - 00000000220000003801000004010000 - 0000000089040000700D000054050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34114 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34115 - 000000001700000080020000A8000000 - 00000000000000008002000091000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni deleted file mode 100644 index 3899c2345..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni +++ /dev/null @@ -1,61 +0,0 @@ -[CodeCoverage] -Enabled=_ 0 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[LMIFTDIDriver] -LMI_ResetMode=0x00000000 -[DebugChecksum] -Checksum=-658913587 -[Exceptions] -StopOnUncaught=_ 0 -StopOnThrow=_ 0 -[CallStack] -ShowArgs=0 -[Disassembly] -MixedMode=1 -[CallStackLog] -Enabled=0 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[DriverProfiling] -Enabled=0 -Mode=0 -Graph=0 -Symbiont=0 -Exclusions= -[Disassemble mode] -mode=1 -[Breakpoints] -Bp0=_ "STD_CODE" "{$PROJ_DIR$\main.c}.495.3" 1 0 0 0 "" 0 "" -Count=1 -[Aliases] -Count=0 -SuppressDialog=0 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt deleted file mode 100644 index 1f60c71cb..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,666 +0,0 @@ - - - - - - - - - - 241 - 27 - 27 - 27 - - - - 482 - 68 - 826 - - - 19 - 1007 - 268 - 67 - - - - 20 - 1622 - - - - - - - TabID-18883-22024 - Workspace - Workspace - - - RTOSDemo - - - - - 0 - - - - - TabID-29040-7360 - Find in Files - Find-in-Files - - - - TabID-19024-10413 - Build - Build - - - - TabID-19202-19100 - Debug Log - Debug-Log - - - - 1 - - - - - - TextEditor - $WS_DIR$\main.c - 0 - 0 - 0 - 0 - 0 - 61 - 10549 - 10549 - - 0 - - 0 - - - 1000000 - 1000000 - - - 1 - - - - - - - iaridepm.enu1 - - - - - - - - - - - - - - - - -2 - -2 - 719 - 315 - -2 - -2 - 200 - 200 - 119048 - 203666 - 188690 - 734216 - - - - - - - - - - - - - - - - -2 - -2 - 219 - 1682 - -2 - -2 - 1684 - 221 - 1002381 - 225051 - 119048 - 203666 - - - - - - - - - - - - - 34048 - 34049 - 34050 - 34051 - 34052 - 34053 - 34054 - 34055 - 34056 - 34057 - 34058 - 34059 - 34060 - 34061 - 34062 - 34063 - 34064 - 34065 - 34066 - 34067 - 34068 - - - - - 34000 - 34001 - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33038 - 33039 - 0 - - - - 26 - 3389 - 2 - - 0 - -1 - - - - 210 - 30 - 30 - 30 - - - - - 14 - 23 - - - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 20000000120000DA000001000000108600000100000005B00000010000000F810000010000001BB0000001000000148100000100000004B000000100000001B00000010000001A860000010000000E8100001E000000058100000100000055860000010000001AB000000100000011860000010000004681000001000000608600000100000000B00000010000000886000001000000 - - - 30000D8400000F84000008840000FFFFFFFF54840000328100001C81000009840000D484000020F1000010F0000000F0000020F0000030F0000060F0000000880000018800000288000003880000048800000588000008800000098000000A8000000B8000000C800000158000000A81000001E80000D6840000D7840000D8840000D9840000DA840000DB840000DC840000DD840000DE840000DF840000E0840000E1840000E2840000EA840000248100000C840000338400007884000011840000 - 1A000484000047000000158100001C0000000481000016000000268100002700000007E100003200000004E100003000000001E100002D0000000D8000000E00000009810000180000000684000049000000178100001E000000148100001B0000000081000010000000308400004C0000000E8400004A00000003E100002F00000000E100002C0000000B8100001900000041E100003C000000168100001D000000058100001700000005E1000031000000518400004D00000035E100003E00000002E100002E0000000D8100001B000000 - - - 0 - 0A0000000A0000006E0000006E000000 - 0000000058050000700D00006B050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 4294967295 - 00000000490000001A01000042040000 - 00000000320000001A0100002C040000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34050 - 00000000220000003801000004010000 - 04000000BB0400006C0D00003A050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34051 - 00000000220000003801000004010000 - 04000000480400006C0D00003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 21 - 3825 - 1020 - 255 - 2 - C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\CORTEX_LM3Sxxxx_IAR_Keil\BuildLog.log - 0 - -1 - - - 34053 - 00000000220000003801000004010000 - 04000000EA050000FC0E0000DF070000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34056 - 00000000220000003801000004010000 - 04000000BB0400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34057 - 00000000220000003801000004010000 - 04000000480400006C0D00003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 1198 - 171 - 2054 - 2 - - 0 - -1 - - - 34058 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34059 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34060 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34062 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34052 - 0000000022000000AF020000DC000000 - 0000000000000000AF020000BA000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34054 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 1 - 32767 - 0 - - - 0 - - - - 34055 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34061 - 00000000220000001A010000E0010000 - 0400000066000000160100009D050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 2147483647 - 1 - - - 34063 - 00000000220000001A010000E0010000 - 00000000460000001A0100002C040000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 000000000C000000000000000010000001000000FFFFFFFFFFFFFFFF1A010000320000001E0100002C040000010000000200001004000000010000000000000000000000FFFFFFFF010000000F850000FFFF02000B004354616262656450616E65001000000100000000000000490000001A0100004204000000000000320000001A0100002C040000000000004010005601000000FFFEFF0957006F0072006B0073007000610063006500010000000F85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0F85000001000000FFFFFFFF0F850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000048500000000000000000000000000000000000001000000048500000100000004850000000000000080000001000000FFFFFFFFFFFFFFFF000000002C040000700D00003004000001000000010000100400000001000000AAFDFFFF45000000FFFFFFFF0600000003850000098500000A8500000B8500000C8500000E850000018000800000010000000000000046040000000A00006E0500000000000030040000700D000058050000000000004080005606000000FFFEFF054200750069006C006400010000000385000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300010000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000C85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0385000001000000FFFFFFFF03850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000138500000000000000000000000000000000000001000000138500000100000013850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000128500000000000000000000000000000000000001000000128500000100000012850000000000000000000000000000 - - - CMSIS-Pack - 00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6ED0840000000004000C000000FFFEFF0000000000000000000000000001000000010000000180D1840000000000000C000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B002F000000 - - - 34048 - 0A0000000A0000006E0000006E000000 - 0303000000000000480300001A000000 - 8192 - 0 - 0 - 47 - 0 - - - 1 - - - Main - 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000002F000000FFFEFF000000000000000000000000000100000001000000018001E100000000000030000000FFFEFF000000000000000000000000000100000001000000018003E100000000040032000000FFFEFF0000000000000000000000000001000000010000000180008100000000000013000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040035000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040037000000FFFEFF000000000000000000000000000100000001000000018022E100000000040036000000FFFEFF000000000000000000000000000100000001000000018025E100000000040039000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003C000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000600FFFEFF09510055004500550045005F00520045004700FFFEFF0A78004F004C004500440051007500650075006500FFFEFF107000720076005300650074007500700048006100720064007700610072006500FFFEFF0C76005000720069006E00740053007400720069006E006700FFFEFF0F69006E0069007400690061006C0069007300650073007400610063006B00FFFEFF0963006800650063006B007400610073006B000000000000000000000000000000000000000000000000000180218100000000040026000000FFFEFF000000000000000000000000000100000001000000018024E100000000040038000000FFFEFF000000000000000000000000000100000001000000018028E10000000004003A000000FFFEFF000000000000000000000000000100000001000000018029E10000000004003B000000FFFEFF0000000000000000000000000001000000010000000180028100000000040015000000FFFEFF000000000000000000000000000100000001000000018029810000000004002A000000FFFEFF0000000000000000000000000001000000010000000180278100000000040028000000FFFEFF0000000000000000000000000001000000010000000180288100000000040029000000FFFEFF00000000000000000000000000010000000100000001801D8100000000000022000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040023000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000040019000000FFFEFF00000000000000000000000000010000000100000001800C810000000000001A000000FFFEFF00000000000000000000000000010000000100000001805F860000000000002E000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001C000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001D000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 - - - 34049 - 0A0000000A0000006E0000006E000000 - 0000000000000000FE0200001A000000 - 8192 - 0 - 0 - 744 - 0 - - - 1 - - - 34064 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34065 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34066 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34067 - 000000001700000080020000A8000000 - 00000000000000008002000091000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33038 - 33039 - 0 - - - - Main - 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000002C000000FFFEFF000000000000000000000000000100000001000000018001E10000000000002D000000FFFEFF000000000000000000000000000100000001000000018003E10000000004002F000000FFFEFF0000000000000000000000000001000000010000000180008100000000000010000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040032000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040034000000FFFEFF000000000000000000000000000100000001000000018022E100000000040033000000FFFEFF000000000000000000000000000100000001000000018025E100000000040036000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040039000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01000D005061737465436F6D626F426F784281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF00960000000000000000000180218100000000040023000000FFFEFF000000000000000000000000000100000001000000018024E100000000040035000000FFFEFF000000000000000000000000000100000001000000018028E100000000040037000000FFFEFF000000000000000000000000000100000001000000018029E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180028100000000040012000000FFFEFF0000000000000000000000000001000000010000000180298100000000040027000000FFFEFF0000000000000000000000000001000000010000000180278100000000040025000000FFFEFF0000000000000000000000000001000000010000000180288100000000040026000000FFFEFF00000000000000000000000000010000000100000001801D810000000004001F000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040020000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000040016000000FFFEFF00000000000000000000000000010000000100000001800C8100000000040017000000FFFEFF00000000000000000000000000010000000100000001805F860000000004002B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000040019000000FFFEFF00000000000000000000000000010000000100000001800F810000000004001A000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 - - - 34068 - 0A0000000A0000006E0000006E000000 - 0000000000000000FE0200001A000000 - 8192 - 0 - 0 - 744 - 0 - - - 1 - - - - - 010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000000000000 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c deleted file mode 100644 index dfb51d9ff..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c +++ /dev/null @@ -1,219 +0,0 @@ -//***************************************************************************** -// -// startup_ewarm.c - Boot code for Stellaris. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 100 of the Stellaris Ethernet -// Applications Library. -// -//***************************************************************************** - -//***************************************************************************** -// -// Enable the IAR extensions for this source file. -// -//***************************************************************************** -#pragma language=extended - -//***************************************************************************** -// -// Forward declaration of the default fault handlers. -// -//***************************************************************************** -static void NmiSR(void); -static void FaultISR(void); -static void IntDefaultHandler(void); - -//***************************************************************************** -// -// External declaration for the interrupt handler used by the application. -// -//***************************************************************************** - - -//***************************************************************************** -// -// The entry point for the application. -// -//***************************************************************************** -extern void __iar_program_start(void); -extern void xPortPendSVHandler(void); -extern void xPortSysTickHandler(void); -extern void vPortSVCHandler(void); -extern void vT2InterruptHandler( void ); -extern void vT3InterruptHandler( void ); -extern void vEMAC_ISR( void ); -extern void Timer0IntHandler( void ); - -//***************************************************************************** -// -// Reserve space for the system stack. -// -//***************************************************************************** -#ifndef STACK_SIZE -#define STACK_SIZE 120 -#endif -static unsigned long pulStack[STACK_SIZE] @ ".noinit"; - -//***************************************************************************** -// -// A union that describes the entries of the vector table. The union is needed -// since the first entry is the stack pointer and the remainder are function -// pointers. -// -//***************************************************************************** -typedef union -{ - void (*pfnHandler)(void); - unsigned long ulPtr; -} -uVectorEntry; - -//***************************************************************************** -// -// The minimal vector table for a Cortex-M3. Note that the proper constructs -// must be placed on this to ensure that it ends up at physical address -// 0x0000.0000. -// -//***************************************************************************** -__root const uVectorEntry __vector_table[] @ ".intvec" = -{ - { .ulPtr = (unsigned long)pulStack + sizeof(pulStack) }, - // The initial stack pointer - __iar_program_start, // The reset handler - NmiSR, // The NMI handler - FaultISR, // The hard fault handler - IntDefaultHandler, // The MPU fault handler - IntDefaultHandler, // The bus fault handler - IntDefaultHandler, // The usage fault handler - 0, // Reserved - 0, // Reserved - 0, // Reserved - 0, // Reserved - vPortSVCHandler, // SVCall handler - IntDefaultHandler, // Debug monitor handler - 0, // Reserved - xPortPendSVHandler, // The PendSV handler - xPortSysTickHandler, // The SysTick handler - IntDefaultHandler, // GPIO Port A - IntDefaultHandler, // GPIO Port B - IntDefaultHandler, // GPIO Port C - IntDefaultHandler, // GPIO Port D - IntDefaultHandler, // GPIO Port E - IntDefaultHandler, // UART0 Rx and Tx - IntDefaultHandler, // UART1 Rx and Tx - IntDefaultHandler, // SSI Rx and Tx - IntDefaultHandler, // I2C Master and Slave - IntDefaultHandler, // PWM Fault - IntDefaultHandler, // PWM Generator 0 - IntDefaultHandler, // PWM Generator 1 - IntDefaultHandler, // PWM Generator 2 - IntDefaultHandler, // Quadrature Encoder - IntDefaultHandler, // ADC Sequence 0 - IntDefaultHandler, // ADC Sequence 1 - IntDefaultHandler, // ADC Sequence 2 - IntDefaultHandler, // ADC Sequence 3 - IntDefaultHandler, // Watchdog timer - Timer0IntHandler, // Timer 0 subtimer A - IntDefaultHandler, // Timer 0 subtimer B - IntDefaultHandler, // Timer 1 subtimer A - IntDefaultHandler, // Timer 1 subtimer B - vT2InterruptHandler, // Timer 2 subtimer A - IntDefaultHandler, // Timer 2 subtimer B - IntDefaultHandler, // Analog Comparator 0 - IntDefaultHandler, // Analog Comparator 1 - IntDefaultHandler, // Analog Comparator 2 - IntDefaultHandler, // System Control (PLL, OSC, BO) - IntDefaultHandler, // FLASH Control - IntDefaultHandler, // GPIO Port F - IntDefaultHandler, // GPIO Port G - IntDefaultHandler, // GPIO Port H - IntDefaultHandler, // UART2 Rx and Tx - IntDefaultHandler, // SSI1 Rx and Tx - vT3InterruptHandler, // Timer 3 subtimer A - IntDefaultHandler, // Timer 3 subtimer B - IntDefaultHandler, // I2C1 Master and Slave - IntDefaultHandler, // Quadrature Encoder 1 - IntDefaultHandler, // CAN0 - IntDefaultHandler, // CAN1 - IntDefaultHandler, // CAN2 - vEMAC_ISR, // Ethernet - IntDefaultHandler, // Hibernate - IntDefaultHandler, // USB0 - IntDefaultHandler, // PWM Generator 3 - IntDefaultHandler, // uDMA Software Transfer - IntDefaultHandler // uDMA Error -}; - - -//***************************************************************************** -// -// This is the code that gets called when the processor receives a NMI. This -// simply enters an infinite loop, preserving the system state for examination -// by a debugger. -// -//***************************************************************************** -static void -NmiSR(void) -{ - // - // Enter an infinite loop. - // - while(1) - { - } -} - -//***************************************************************************** -// -// This is the code that gets called when the processor receives a fault -// interrupt. This simply enters an infinite loop, preserving the system state -// for examination by a debugger. -// -//***************************************************************************** -static void -FaultISR(void) -{ - // - // Enter an infinite loop. - // - while(1) - { - } -} - -//***************************************************************************** -// -// This is the code that gets called when the processor receives an unexpected -// interrupt. This simply enters an infinite loop, preserving the system state -// for examination by a debugger. -// -//***************************************************************************** -static void -IntDefaultHandler(void) -{ - // - // Go into an infinite loop. - // - while(1) - { - } -} diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S deleted file mode 100644 index b7077b164..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S +++ /dev/null @@ -1,251 +0,0 @@ -; <<< Use Configuration Wizard in Context Menu >>> -;****************************************************************************** -; -; startup_rvmdk.S - Startup code for use with Keil's uVision. -; -; Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -; -; Software License Agreement -; -; Luminary Micro, Inc. (LMI) is supplying this software for use solely and -; exclusively on LMI's microcontroller products. -; -; The software is owned by LMI and/or its suppliers, and is protected under -; applicable copyright laws. All rights are reserved. Any use in violation -; of the foregoing restrictions may subject the user to criminal sanctions -; under applicable laws, as well as to civil liability for the breach of the -; terms and conditions of this license. -; -; THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -; OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -; LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -; -; This is part of revision 1408 of the Stellaris Peripheral Driver Library. -; -;****************************************************************************** - -;****************************************************************************** -; -; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -; -;****************************************************************************** -Stack EQU 0x00000800 - -;****************************************************************************** -; -; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -; -;****************************************************************************** -Heap EQU 0x00000000 - -;****************************************************************************** -; -; Allocate space for the stack. -; -;****************************************************************************** - AREA STACK, NOINIT, READWRITE, ALIGN=3 -StackMem - SPACE Stack -__initial_sp - -;****************************************************************************** -; -; Allocate space for the heap. -; -;****************************************************************************** - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -HeapMem - SPACE Heap -__heap_limit - -;****************************************************************************** -; -; Indicate that the code in this file preserves 8-byte alignment of the stack. -; -;****************************************************************************** - PRESERVE8 - -;****************************************************************************** -; -; Place code into the reset code section. -; -;****************************************************************************** - AREA RESET, CODE, READONLY - THUMB - -;****************************************************************************** -; -; The vector table. -; -;****************************************************************************** - EXPORT __Vectors -__Vectors - DCD StackMem + Stack ; Top of Stack - DCD Reset_Handler ; Reset Handler - DCD NmiSR ; NMI Handler - DCD FaultISR ; Hard Fault Handler - DCD IntDefaultHandler ; MPU Fault Handler - DCD IntDefaultHandler ; Bus Fault Handler - DCD IntDefaultHandler ; Usage Fault Handler - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - EXTERN vPortSVCHandler - DCD vPortSVCHandler ; SVCall Handler - DCD IntDefaultHandler ; Debug Monitor Handler - DCD 0 ; Reserved - EXTERN xPortPendSVHandler - DCD xPortPendSVHandler ; PendSV Handler - EXTERN xPortSysTickHandler - DCD xPortSysTickHandler ; SysTick Handler - DCD IntDefaultHandler ; GPIO Port A - DCD IntDefaultHandler ; GPIO Port B - DCD IntDefaultHandler ; GPIO Port C - DCD IntDefaultHandler ; GPIO Port D - DCD IntDefaultHandler ; GPIO Port E - DCD IntDefaultHandler ; UART0 - DCD IntDefaultHandler ; UART1 - DCD IntDefaultHandler ; SSI - DCD IntDefaultHandler ; I2C - DCD IntDefaultHandler ; PWM Fault - DCD IntDefaultHandler ; PWM Generator 0 - DCD IntDefaultHandler ; PWM Generator 1 - DCD IntDefaultHandler ; PWM Generator 2 - DCD IntDefaultHandler ; Quadrature Encoder - DCD IntDefaultHandler ; ADC Sequence 0 - DCD IntDefaultHandler ; ADC Sequence 1 - DCD IntDefaultHandler ; ADC Sequence 2 - DCD IntDefaultHandler ; ADC Sequence 3 - DCD IntDefaultHandler ; Watchdog - EXTERN Timer0IntHandler - DCD Timer0IntHandler ; Timer 0A - DCD IntDefaultHandler ; Timer 0B - DCD IntDefaultHandler ; Timer 1A - DCD IntDefaultHandler ; Timer 1B - EXTERN vT2InterruptHandler - DCD vT2InterruptHandler ; Timer 2A - DCD IntDefaultHandler ; Timer 2B - DCD IntDefaultHandler ; Comp 0 - DCD IntDefaultHandler ; Comp 1 - DCD IntDefaultHandler ; Comp 2 - DCD IntDefaultHandler ; System Control - DCD IntDefaultHandler ; Flash Control - DCD IntDefaultHandler ; GPIO Port F - DCD IntDefaultHandler ; GPIO Port G - DCD IntDefaultHandler ; GPIO Port H - DCD IntDefaultHandler ; UART2 Rx and Tx - DCD IntDefaultHandler ; SSI1 Rx and Tx - EXTERN vT3InterruptHandler - DCD vT3InterruptHandler ; Timer 3 subtimer A - DCD IntDefaultHandler ; Timer 3 subtimer B - DCD IntDefaultHandler ; I2C1 Master and Slave - DCD IntDefaultHandler ; Quadrature Encoder 1 - DCD IntDefaultHandler ; CAN0 - DCD IntDefaultHandler ; CAN1 - DCD 0 ; Reserved - EXTERN vEMAC_ISR - DCD vEMAC_ISR ; Ethernet - DCD IntDefaultHandler ; Hibernate - -;****************************************************************************** -; -; This is the code that gets called when the processor first starts execution -; following a reset event. -; -;****************************************************************************** - EXPORT Reset_Handler -Reset_Handler - ; - ; Call the C library enty point that handles startup. This will copy - ; the .data section initializers from flash to SRAM and zero fill the - ; .bss section. It will then call __rt_entry, which will be either the - ; C library version or the one supplied here depending on the - ; configured startup type. - ; - IMPORT __main - B __main - -;****************************************************************************** -; -; This is the code that gets called when the processor receives a NMI. This -; simply enters an infinite loop, preserving the system state for examination -; by a debugger. -; -;****************************************************************************** -NmiSR - B NmiSR - -;****************************************************************************** -; -; This is the code that gets called when the processor receives a fault -; interrupt. This simply enters an infinite loop, preserving the system state -; for examination by a debugger. -; -;****************************************************************************** -FaultISR - B FaultISR - -;****************************************************************************** -; -; This is the code that gets called when the processor receives an unexpected -; interrupt. This simply enters an infinite loop, preserving the system state -; for examination by a debugger. -; -;****************************************************************************** -IntDefaultHandler - B IntDefaultHandler - -;****************************************************************************** -; -; Make sure the end of this section is aligned. -; -;****************************************************************************** - ALIGN - -;****************************************************************************** -; -; Some code in the normal code section for initializing the heap and stack. -; -;****************************************************************************** - AREA |.text|, CODE, READONLY - -;****************************************************************************** -; -; The function expected of the C library startup code for defining the stack -; and heap memory locations. For the C library version of the startup code, -; provide this function so that the C library initialization code can find out -; the location of the stack and heap. -; -;****************************************************************************** - IF :DEF: __MICROLIB - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - ELSE - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - LDR R0, =HeapMem - LDR R1, =(StackMem + Stack) - LDR R2, =(HeapMem + Heap) - LDR R3, =StackMem - BX LR - ENDIF - -;****************************************************************************** -; -; Make sure the end of this section is aligned. -; -;****************************************************************************** - ALIGN - -;****************************************************************************** -; -; Tell the assembler that we're done. -; -;****************************************************************************** - END diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c deleted file mode 100644 index cbe03f5de..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* High speed timer test as described in main.c. */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" -#include "hw_timer.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 0 ) - -/* Misc defines. */ -#define timerMAX_32BIT_VALUE ( 0xffffffffUL ) -#define timerTIMER_1_COUNT_VALUE ( * ( ( volatile unsigned long * ) ( ( unsigned long ) TIMER1_BASE + 0x48UL ) ) ) - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void Timer0IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned long ulMaxJitter = 0; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ -unsigned long ulFrequency; - - /* Timer zero is used to generate the interrupts, and timer 1 is used - to measure the jitter. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER1 ); - TimerConfigure( TIMER0_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER1_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupt to be above the kernel - highest. */ - IntPrioritySet( INT_TIMER0A, timerHIGHEST_PRIORITY ); - - /* Just used to measure time. */ - TimerLoadSet(TIMER1_BASE, TIMER_A, timerMAX_32BIT_VALUE ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timer will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY; - TimerLoadSet( TIMER0_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER0A ); - TimerIntEnable( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER0_BASE, TIMER_A ); - TimerEnable( TIMER1_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void Timer0IntHandler( void ) -{ -unsigned long ulDifference; -volatile unsigned long ulCurrentCount; -static unsigned long ulMaxDifference = 0, ulLastCount = 0; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. */ - ulCurrentCount = timerTIMER_1_COUNT_VALUE; - - TimerIntClear( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - if( ulCurrentCount < ulLastCount ) - { - /* How many times has timer 1 counted since the last interrupt? */ - ulDifference = ulLastCount - ulCurrentCount; - - /* Is this the largest difference we have measured yet? */ - if( ulDifference > ulMaxDifference ) - { - ulMaxDifference = ulDifference; - ulMaxJitter = ulMaxDifference - timerEXPECTED_DIFFERENCE_VALUE; - } - } - - ulLastCount = ulCurrentCount; -} - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c deleted file mode 100644 index 82b780477..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Demo includes. */ -#include "emac.h" - -/* uIP includes. */ -#include "uip.h" - -/* Hardware library includes. */ -#include "hw_types.h" -#include "hw_memmap.h" -#include "hw_ints.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "interrupt.h" - -#define emacNUM_RX_BUFFERS 5 -#define emacFRAM_SIZE_BYTES 2 -#define macNEGOTIATE_DELAY 2000 -#define macWAIT_SEND_TIME ( 10 ) - -/* The task that handles the MAC peripheral. This is created at a high -priority and is effectively a deferred interrupt handler. The peripheral -handling is deferred to a task to prevent the entire FIFO having to be read -from within an ISR. */ -void vMACHandleTask( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/* The semaphore used to wake the interrupt handler task. The peripheral -is processed at the task level to prevent the need to read the entire FIFO from -within the ISR itself. */ -SemaphoreHandle_t xMACInterruptSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers. */ -unsigned char *uip_buf; - -/* Buffers into which Rx data is placed. */ -static union -{ - unsigned long ulJustForAlignment; - unsigned char ucRxBuffers[ emacNUM_RX_BUFFERS ][ UIP_BUFSIZE + ( 4 * emacFRAM_SIZE_BYTES ) ]; -} uxRxBuffers; - -/* The length of the data within each of the Rx buffers. */ -static unsigned long ulRxLength[ emacNUM_RX_BUFFERS ]; - -/* Used to keep a track of the number of bytes to transmit. */ -static unsigned long ulNextTxSpace; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE vInitEMAC( void ) -{ -unsigned long ulTemp; -portBASE_TYPE xReturn; - - /* Ensure all interrupts are disabled. */ - EthernetIntDisable( ETH_BASE, ( ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); - - /* Clear any interrupts that were already pending. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Initialise the MAC and connect. */ - EthernetInit( ETH_BASE ); - EthernetConfigSet( ETH_BASE, ( ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | ETH_CFG_TX_PADEN ) ); - EthernetEnable( ETH_BASE ); - - /* Mark each Rx buffer as empty. */ - for( ulTemp = 0; ulTemp < emacNUM_RX_BUFFERS; ulTemp++ ) - { - ulRxLength[ ulTemp ] = 0; - } - - /* Create the queue and task used to defer the MAC processing to the - task level. */ - vSemaphoreCreateBinary( xMACInterruptSemaphore ); - xSemaphoreTake( xMACInterruptSemaphore, 0 ); - xReturn = xTaskCreate( vMACHandleTask, "MAC", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL ); - vTaskDelay( macNEGOTIATE_DELAY ); - - /* We are only interested in Rx interrupts. */ - IntPrioritySet( INT_ETH, configKERNEL_INTERRUPT_PRIORITY ); - IntEnable( INT_ETH ); - EthernetIntEnable(ETH_BASE, ETH_INT_RX); - - return xReturn; -} -/*-----------------------------------------------------------*/ - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -static unsigned long ulNextRxBuffer = 0; -unsigned int iLen; - - iLen = ulRxLength[ ulNextRxBuffer ]; - - if( iLen != 0 ) - { - /* Leave room for the size at the start of the buffer. */ - uip_buf = &( uxRxBuffers.ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - - ulRxLength[ ulNextRxBuffer ] = 0; - - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - } - - return iLen; -} -/*-----------------------------------------------------------*/ - -void vInitialiseSend( void ) -{ - /* Set the index to the first byte to send - skipping over the size - bytes. */ - ulNextTxSpace = 2; -} -/*-----------------------------------------------------------*/ - -void vIncrementTxLength( unsigned long ulLength ) -{ - ulNextTxSpace += ulLength; -} -/*-----------------------------------------------------------*/ - -void vSendBufferToMAC( void ) -{ -unsigned long *pulSource; -unsigned short * pus; -unsigned long ulNextWord; - - /* Locate the data to be send. */ - pus = ( unsigned short * ) uip_buf; - - /* Add in the size of the data. */ - pus--; - *pus = ulNextTxSpace; - - /* Wait for data to be sent if there is no space immediately. */ - while( !EthernetSpaceAvail( ETH_BASE ) ) - { - vTaskDelay( macWAIT_SEND_TIME ); - } - - pulSource = ( unsigned long * ) pus; - - for( ulNextWord = 0; ulNextWord < ulNextTxSpace; ulNextWord += sizeof( unsigned long ) ) - { - HWREG(ETH_BASE + MAC_O_DATA) = *pulSource; - pulSource++; - } - - /* Go. */ - HWREG( ETH_BASE + MAC_O_TR ) = MAC_TR_NEWTX; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; -unsigned long ulTemp; - - /* Clear the interrupt. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Was it an Rx interrupt? */ - if( ulTemp & ETH_INT_RX ) - { - xSemaphoreGiveFromISR( xMACInterruptSemaphore, &xHigherPriorityTaskWoken ); - EthernetIntDisable( ETH_BASE, ETH_INT_RX ); - } - - /* Switch to the uIP task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vMACHandleTask( void *pvParameters ) -{ -unsigned long i, ulInt; -unsigned long ulLength; -unsigned long *pulBuffer; -static unsigned long ulNextRxBuffer = 0; - - for( ;; ) - { - /* Wait for something to do. */ - xSemaphoreTake( xMACInterruptSemaphore, portMAX_DELAY ); - - while( ( ulInt = ( EthernetIntStatus( ETH_BASE, pdFALSE ) & ETH_INT_RX ) ) != 0 ) - { - ulLength = HWREG( ETH_BASE + MAC_O_DATA ); - - /* Leave room at the start of the buffer for the size. */ - pulBuffer = ( unsigned long * ) &( uxRxBuffers.ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - *pulBuffer = ( ulLength >> 16 ); - - /* Get the size of the data. */ - pulBuffer = ( unsigned long * ) &( uxRxBuffers.ucRxBuffers[ ulNextRxBuffer ][ 4 ] ); - ulLength &= 0xFFFF; - - if( ulLength > 4 ) - { - ulLength -= 4; - - if( ulLength >= UIP_BUFSIZE ) - { - /* The data won't fit in our buffer. Ensure we don't - try to write into the buffer. */ - ulLength = 0; - } - - /* Read out the data into our buffer. */ - for( i = 0; i < ulLength; i += sizeof( unsigned long ) ) - { - *pulBuffer = HWREG( ETH_BASE + MAC_O_DATA ); - pulBuffer++; - } - - /* Store the length of the data into the separate array. */ - ulRxLength[ ulNextRxBuffer ] = ulLength; - - /* Use the next buffer the next time through. */ - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGive( xEMACSemaphore ); - } - } - - EthernetIntEnable( ETH_BASE, ETH_INT_RX ); - - ( void ) ulInt; - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h deleted file mode 100644 index a49b59828..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE vInitEMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void vIncrementTxLength(unsigned long ulLength); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void vInitialiseSend(void); -unsigned int Rdy4Tx(void); -void vSendBufferToMAC(void); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c deleted file mode 100644 index 76e1c3d2b..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - if( uxParTestGetLED( 0 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, - "LED"\ - "

"\ - "", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml deleted file mode 100644 index 1923ea762..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml deleted file mode 100644 index 07554bb71..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 654d61f21..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c deleted file mode 100644 index a7fcfab5a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c +++ /dev/null @@ -1,470 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, - 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, - 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, - 0x66, 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, - 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, - 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, - 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, - 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, - 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, - 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, - 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, - 0x22, 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, - 0x2d, 0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, - 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, - 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, - 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f, - 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, - 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, - 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, - 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, - 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, - 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, - 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 6 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c deleted file mode 100644 index 5676b1094..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "hw_types.h" -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "hw_memmap.h" -#include "lmi_flash.h" -#include "sysctl.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" -#include "lcd_message.h" - -struct timer { - clock_time_t start; - clock_time_t interval; -}; - - -/*-----------------------------------------------------------*/ - -/* IP address configuration. */ -#define uipIP_ADDR0 172 -#define uipIP_ADDR1 25 -#define uipIP_ADDR2 218 -#define uipIP_ADDR3 19 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 100 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -/* Define clock functions here to avoid header file name clash between uIP -and the Luminary Micro driver library. */ -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -extern void timer_set(struct timer *t, clock_time_t interval); -extern int timer_expired(struct timer *t); -extern void timer_reset(struct timer *t); - - - - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR )( void ); - - /* Enable/Reset the Ethernet Controller */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_ETH ); - SysCtlPeripheralReset( SYSCTL_PERIPH_ETH ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - httpd_init(); - - while( vInitEMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - prvSetMACAddress(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - vInitialiseSend(); - vIncrementTxLength( uip_len ); - vSendBufferToMAC(); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -unsigned long ulUser0, ulUser1; -unsigned char pucMACArray[8]; -struct uip_eth_addr xAddr; - - /* Get the device MAC address from flash */ - FlashUserGet(&ulUser0, &ulUser1); - - /* Convert the MAC address from flash into sequence of bytes. */ - pucMACArray[0] = ((ulUser0 >> 0) & 0xff); - pucMACArray[1] = ((ulUser0 >> 8) & 0xff); - pucMACArray[2] = ((ulUser0 >> 16) & 0xff); - pucMACArray[3] = ((ulUser1 >> 0) & 0xff); - pucMACArray[4] = ((ulUser1 >> 8) & 0xff); - pucMACArray[5] = ((ulUser1 >> 16) & 0xff); - - /* Program the MAC address. */ - EthernetMACAddrSet(ETH_BASE, pucMACArray); - - xAddr.addr[ 0 ] = pucMACArray[0]; - xAddr.addr[ 1 ] = pucMACArray[1]; - xAddr.addr[ 2 ] = pucMACArray[2]; - xAddr.addr[ 3 ] = pucMACArray[3]; - xAddr.addr[ 4 ] = pucMACArray[4]; - xAddr.addr[ 5 ] = pucMACArray[5]; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xOLEDQueue; -xOLEDMessage xOLEDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 0, 1 ); - } - else - { - vParTestSetLED( 0, 0 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xOLEDMessage.pcMessage = ( signed char * ) cMessageForDisplay; - xQueueSend( xOLEDQueue, &xOLEDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h deleted file mode 100644 index 455540da1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h deleted file mode 100644 index f056af38f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( 50000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24000 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_QUEUE_SETS 1 -#define configUSE_COUNTING_SEMAPHORES 1 - -#define configMAX_PRIORITIES ( 5UL ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer related constants. */ -#define configUSE_TIMERS 0 -#define configTIMER_TASK_PRIORITY 2 -#define configTIMER_QUEUE_LENGTH 20 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configKERNEL_INTERRUPT_PRIORITY ( ( unsigned char ) 7 << ( unsigned char ) 5 ) /* Priority 7, or 255 as only the top three bits are implemented. This is the lowest priority. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( ( unsigned char ) 5 << ( unsigned char ) 5 ) /* Priority 5, or 160 as only the top three bits are implemented. */ - -extern volatile unsigned long ulHighFrequencyTimerTicks; -/* There is already a high frequency timer running - just reset its count back -to zero. */ -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ( ulHighFrequencyTimerTicks = 0UL ) -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTimerTicks - -/* Use Cortex-M3 optimised task selection rather than the generic C code -version. */ -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 - -/* Disable interrupts and sit in a null loop if assert is called. */ -#define configASSERT( x ) if( ( ( x ) == 0 ) ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c deleted file mode 100644 index e75116215..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" - -#define tmrTIMER_2_FREQUENCY ( 2000UL ) -#define tmrTIMER_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ -unsigned long ulFrequency; - - /* Timer 2 and 3 are utilised for this test. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER3 ); - TimerConfigure( TIMER2_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER3_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IntPrioritySet( INT_TIMER2A, configMAX_SYSCALL_INTERRUPT_PRIORITY + ( 1 << 5 ) ); /* Shift left 5 as only the top 3 bits are implemented. */ - IntPrioritySet( INT_TIMER3A, configMAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_2_FREQUENCY; - TimerLoadSet( TIMER2_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER2A ); - TimerIntEnable( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_3_FREQUENCY; - TimerLoadSet( TIMER3_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER3A ); - TimerIntEnable( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER2_BASE, TIMER_A ); - TimerEnable( TIMER3_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void vT2InterruptHandler( void ) -{ - TimerIntClear( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT3InterruptHandler( void ) -{ - TimerIntClear( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xSecondTimerHandler() ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s deleted file mode 100644 index 53ce62b7a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s +++ /dev/null @@ -1,199 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2006 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * - * STARTUP_FROM_RESET - * - * If defined, the program will startup from power-on/reset. If not defined - * the program will just loop endlessly from power-on/reset. - * - * This definition is not defined by default on this target because the - * debugger is unable to reset this target and maintain control of it over the - * JTAG interface. The advantage of doing this is that it allows the debugger - * to reset the CPU and run programs from a known reset CPU state on each run. - * It also acts as a safety net if you accidently download a program in FLASH - * that crashes and prevents the debugger from taking control over JTAG - * rendering the target unusable over JTAG. The obvious disadvantage of doing - * this is that your application will not startup without the debugger. - * - * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst - * you are developing and only define STARTUP_FROM_RESET when development is - * complete. - * - *****************************************************************************/ - -.extern xPortPendSVHandler -.extern xPortSysTickHandler -.extern vPortSVCHandler -.extern Timer0IntHandler -.extern vT2InterruptHandler -.extern vT3InterruptHandler -.extern vEMAC_ISR - - -.global reset_handler - -.macro DEFAULT_ISR_HANDLER name= - .thumb_func - .weak \name -\name: -1: b 1b /* endless loop */ -.endm - - .section .vectors, "ax" - .code 16 - .align 0 - .global _vectors - -_vectors: - .word __stack_end__ -#ifdef STARTUP_FROM_RESET - .word reset_handler -#else - .word reset_wait -#endif /* STARTUP_FROM_RESET */ - .word Nmi_ISR - .word Fault_ISR - .word MPU_Fault_ISR - .word 0 /* Populate if using Bus fault */ - .word 0 /* Populate if using Usage fault */ - .word 0 /* Reserved */ - .word 0 /* Reserved */ - .word 0 /* Reserved */ - .word 0 /* Reserved */ - .word vPortSVCHandler - .word 0 /* Populate if using a debug monitor */ - .word 0 /* Reserved */ - .word xPortPendSVHandler - .word xPortSysTickHandler - .word GPIO_Port_A_ISR - .word GPIO_Port_B_ISR - .word GPIO_Port_C_ISR - .word GPIO_Port_D_ISR - .word GPIO_Port_E_ISR - .word UART0_ISR - .word UART1_ISR - .word SSI_ISR - .word I2C_ISR - .word PWM_Fault_ISR - .word PWM_Generator_0_ISR - .word PWM_Generator_1_ISR - .word PWM_Generator_2_ISR - .word QEI_ISR - .word ADC_Sequence_0_ISR - .word ADC_Sequence_1_ISR - .word ADC_Sequence_2_ISR - .word ADC_Sequence_3_ISR - .word Watchdog_Timer_ISR - .word Timer0IntHandler - .word Timer0B_ISR - .word Timer1A_ISR - .word Timer1B_ISR - .word vT2InterruptHandler - .word Timer2B_ISR - .word Analog_Comparator_0_ISR - .word Analog_Comparator_1_ISR - .word Analog_Comparator_2_ISR - .word System_Control_ISR - .word FLASH_Control_ISR - .word GPIO_Port_F_ISR - .word GPIO_Port_G_ISR - .word GPIO_Port_H_ISR - .word UART2_ISR - .word SSI1_ISR - .word vT3InterruptHandler - .word Timer3B_ISR - .word I2C1_ISR - .word QEI1_ISR - .word CAN0_ISR - .word CAN1_ISR - .word CAN2_ISR - .word vEMAC_ISR - .word HIBERNATE_ISR - .word USB0_ISR - .word PWM_Generator_3_ISR - .word uDMA_Software_Transfer_ISR - .word uDMA_Error_ISR -_vectors_end: - - .section .init, "ax" - .thumb_func - -reset_handler: -#ifdef __RAM_BUILD - /* If this is a RAM build, configure vector table offset register to point - to the RAM vector table. */ - ldr r0, =0xE000ED08 - ldr r1, =_vectors - str r1, [r0] -#endif - b _start - -DEFAULT_ISR_HANDLER Nmi_ISR -DEFAULT_ISR_HANDLER Fault_ISR -DEFAULT_ISR_HANDLER MPU_Fault_ISR -DEFAULT_ISR_HANDLER SVCall_ISR -DEFAULT_ISR_HANDLER SysTick_ISR -DEFAULT_ISR_HANDLER PendSV_ISR -DEFAULT_ISR_HANDLER GPIO_Port_A_ISR -DEFAULT_ISR_HANDLER GPIO_Port_B_ISR -DEFAULT_ISR_HANDLER GPIO_Port_C_ISR -DEFAULT_ISR_HANDLER GPIO_Port_D_ISR -DEFAULT_ISR_HANDLER GPIO_Port_E_ISR -DEFAULT_ISR_HANDLER UART0_ISR -DEFAULT_ISR_HANDLER UART1_ISR -DEFAULT_ISR_HANDLER SSI_ISR -DEFAULT_ISR_HANDLER I2C_ISR -DEFAULT_ISR_HANDLER PWM_Fault_ISR -DEFAULT_ISR_HANDLER PWM_Generator_0_ISR -DEFAULT_ISR_HANDLER PWM_Generator_1_ISR -DEFAULT_ISR_HANDLER PWM_Generator_2_ISR -DEFAULT_ISR_HANDLER QEI_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_0_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_1_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_2_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_3_ISR -DEFAULT_ISR_HANDLER Watchdog_Timer_ISR -DEFAULT_ISR_HANDLER Timer0A_ISR -DEFAULT_ISR_HANDLER Timer0B_ISR -DEFAULT_ISR_HANDLER Timer1A_ISR -DEFAULT_ISR_HANDLER Timer1B_ISR -DEFAULT_ISR_HANDLER Timer2A_ISR -DEFAULT_ISR_HANDLER Timer2B_ISR -DEFAULT_ISR_HANDLER Analog_Comparator_0_ISR -DEFAULT_ISR_HANDLER Analog_Comparator_1_ISR -DEFAULT_ISR_HANDLER Analog_Comparator_2_ISR -DEFAULT_ISR_HANDLER System_Control_ISR -DEFAULT_ISR_HANDLER FLASH_Control_ISR -DEFAULT_ISR_HANDLER GPIO_Port_F_ISR -DEFAULT_ISR_HANDLER GPIO_Port_G_ISR -DEFAULT_ISR_HANDLER GPIO_Port_H_ISR -DEFAULT_ISR_HANDLER UART2_ISR -DEFAULT_ISR_HANDLER SSI1_ISR -DEFAULT_ISR_HANDLER Timer3A_ISR -DEFAULT_ISR_HANDLER Timer3B_ISR -DEFAULT_ISR_HANDLER I2C1_ISR -DEFAULT_ISR_HANDLER QEI1_ISR -DEFAULT_ISR_HANDLER CAN0_ISR -DEFAULT_ISR_HANDLER CAN1_ISR -DEFAULT_ISR_HANDLER CAN2_ISR -DEFAULT_ISR_HANDLER ETHERNET_ISR -DEFAULT_ISR_HANDLER HIBERNATE_ISR -DEFAULT_ISR_HANDLER USB0_ISR -DEFAULT_ISR_HANDLER PWM_Generator_3_ISR -DEFAULT_ISR_HANDLER uDMA_Software_Transfer_ISR -DEFAULT_ISR_HANDLER uDMA_Error_ISR - -#ifndef STARTUP_FROM_RESET -DEFAULT_ISR_HANDLER reset_wait -#endif /* STARTUP_FROM_RESET */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js deleted file mode 100644 index 55a9c2c7c..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js +++ /dev/null @@ -1,28 +0,0 @@ -/****************************************************************************** - Target Script for LM3S. - - Copyright (c) 2006 Rowley Associates Limited. - - This file may be distributed under the terms of the License Agreement - provided with this software. - - THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE - WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - ******************************************************************************/ - -function Reset() -{ - TargetInterface.resetAndStop(1000); -} - -function RAMReset() -{ - Reset(); -} - -function FLASHReset() -{ - Reset(); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c deleted file mode 100644 index 5c697cfe0..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* -*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Library includes. */ -#include "hw_types.h" -#include "gpio.h" -#include "hw_memmap.h" - - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - GPIODirModeSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT ); - GPIOPadConfigSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, 0 ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, xValue ); -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - return GPIOPinRead( GPIO_PORTF_BASE, GPIO_PIN_0 ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp deleted file mode 100644 index 7e91c498e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs deleted file mode 100644 index a250220fb..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h deleted file mode 100644 index 29f813fd1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h +++ /dev/null @@ -1,336 +0,0 @@ -#ifndef BITMAP_H -#define BITMAP_H - -#define bmpBITMAP_HEIGHT 50 -#define bmpBITMAP_WIDTH 128 - -const unsigned char pucBasicBitmap[] = -{ -0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, -0x00, 0x8f, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xf0, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, -0x00, 0x70, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0x88, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0x87, 0x77, -0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x88, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0x80, 0x00, 0x8f, 0x8f, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x8f, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, -0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x08, 0x00, 0x88, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x70, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x87, 0x88, -0x88, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x7f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf7, 0x88, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, -0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x88, 0x88, 0x88, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, -0x00, 0x00, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x07, 0xff, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, -0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x77, -0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x07, 0x70, 0x07, -0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 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, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 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, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 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, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x00, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, -0x00 }; - -const unsigned char pucGrLibBitmap[] = -{ - IMAGE_FMT_4BPP_COMP, - 124, 0, - 49, 0, - - 15, - 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, - 0x20, 0x44, 0x20, - 0x00, 0x75, 0x00, - 0x69, 0x69, 0x69, - 0x00, 0xc2, 0x00, - 0x00, 0xd2, 0x00, - 0x38, 0xb6, 0x38, - 0x00, 0xea, 0x00, - 0x00, 0xf2, 0x00, - 0xaa, 0xb2, 0xaa, - 0x65, 0xff, 0x65, - 0x69, 0xff, 0x69, - 0x6d, 0xff, 0x6d, - 0x71, 0xff, 0x71, - 0xff, 0xff, 0xff, - - 0x03, 0x21, 0x33, 0x53, 0x33, 0x33, 0x33, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x35, 0x33, 0x12, 0x03, 0x23, 0x96, 0x68, 0x88, 0x88, - 0x88, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x69, 0x32, - 0x03, 0x29, 0x66, 0x65, 0x66, 0x66, 0x66, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x56, 0x66, 0x92, 0x07, 0x78, 0x63, 0x11, 0x11, 0x11, - 0xe9, 0xd4, 0xa7, 0xf0, 0x5f, 0x17, 0x07, 0x07, 0x11, 0x36, 0x87, 0x78, - 0x0f, 0x63, 0x00, 0x00, 0x00, 0xe9, 0xd4, 0xa7, 0x5f, 0xe0, 0x17, 0x07, - 0x07, 0x00, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, 0x77, 0x2f, 0x07, - 0x07, 0x02, 0x36, 0x1e, 0x87, 0x78, 0x63, 0x07, 0x07, 0x77, 0x2f, 0x00, - 0x10, 0x01, 0x22, 0x20, 0x07, 0x00, 0x00, 0x22, 0x21, 0x84, 0x03, 0x36, - 0x87, 0x78, 0x63, 0x02, 0x02, 0xaa, 0x01, 0xa2, 0x22, 0x20, 0x02, 0x77, - 0x77, 0x77, 0xe9, 0x3a, 0x22, 0x22, 0x7a, 0xa4, 0x71, 0x20, 0x0a, 0x27, - 0xb8, 0x29, 0x72, 0xb2, 0x9e, 0x93, 0x36, 0x87, 0x78, 0x40, 0x63, 0x62, - 0x2a, 0xff, 0xf2, 0xaa, 0x40, 0x07, 0x08, 0xad, 0xdd, 0xdd, 0xdd, 0xe9, - 0xd7, 0x72, 0x00, 0x40, 0x00, 0xa6, 0xdd, 0xda, 0x70, 0x00, 0x00, 0x02, - 0x00, 0x77, 0xdd, 0xdc, 0xcc, 0xcd, 0xde, 0xc7, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x27, 0xde, 0xdc, 0x08, 0xcc, 0xcc, 0xdd, 0xea, 0x99, - 0x36, 0x87, 0x78, 0x40, 0x63, 0x69, 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, - 0x04, 0x02, 0xdb, 0xbb, 0xbb, 0xbb, 0xe9, 0xbc, 0xe7, 0x10, 0x20, 0x00, - 0x07, 0xa5, 0xbb, 0xbd, 0x70, 0x00, 0x10, 0x00, 0x27, 0xec, 0x3b, 0xcd, - 0xd7, 0x00, 0x00, 0x80, 0x9f, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, - 0x40, 0x63, 0x69, 0x02, 0xfa, 0x2a, 0xf2, 0x2f, 0xa0, 0x31, 0x02, 0xdb, - 0x43, 0x31, 0x42, 0x00, 0x07, 0xa7, 0x0a, 0x70, 0x00, 0x02, 0xdd, 0x41, - 0xcc, 0x21, 0xce, 0x04, 0x70, 0x00, 0x00, 0x02, 0x7d, 0x39, 0xbc, 0xcb, - 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, 0x20, 0x63, 0x00, - 0x69, 0xfa, 0x0a, 0xf2, 0x2f, 0xa0, 0x01, 0x02, 0xdb, 0xbb, 0xbb, 0xdd, - 0xdd, 0xdc, 0x11, 0x08, 0xe7, 0x00, 0x07, 0xad, 0xbb, 0xcd, 0xdd, 0xda, - 0x09, 0x70, 0x00, 0x2d, 0xcb, 0x41, 0xcc, 0xdd, 0xd1, 0x04, 0xe7, 0x00, - 0x00, 0x07, 0xeb, 0x51, 0xdc, 0xcd, 0x00, 0xdd, 0xdd, 0x20, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0xfa, 0x2a, 0xf2, - 0x00, 0xaf, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x22, 0x00, 0x77, 0xdc, - 0xbb, 0xbb, 0xc7, 0x20, 0x07, 0x77, 0x04, 0x77, 0x77, 0xcb, 0xbb, 0xbc, - 0xd1, 0x20, 0x01, 0x28, 0x7d, 0xbb, 0x42, 0x27, 0x41, 0xcd, 0x20, 0x00, - 0x40, 0x27, 0x51, 0x72, 0x22, 0x22, 0x27, 0x7c, 0x20, 0x00, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x00, 0x02, 0xaf, 0xaa, 0xfa, - 0xff, 0x20, 0x02, 0x10, 0xdb, 0xbb, 0xbe, 0x61, 0x2d, 0xbb, 0xbb, 0xcc, - 0xa8, 0x29, 0x00, 0x89, 0xbd, 0xc3, 0xeb, 0xbb, 0xbb, 0x00, 0xd7, 0x10, - 0x00, 0x00, 0x2c, 0xcb, 0xbb, 0xbd, 0x58, 0x70, 0x12, 0xc7, 0x13, 0x29, - 0x36, 0x87, 0x78, 0x40, 0x63, 0xa9, 0x00, 0xaf, 0xff, 0xff, 0xfa, 0x20, - 0x08, 0x02, 0xdb, 0xbb, 0xbd, 0x39, 0x07, 0xdb, 0xbb, 0x72, 0xcc, 0x03, - 0x8c, 0x82, 0xbd, 0x70, 0x84, 0xbc, 0x03, 0xd2, 0x00, 0x2d, 0xbb, 0xbb, - 0xd7, 0x19, 0x01, 0x02, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0xa2, 0x0a, - 0x10, 0xaf, 0xff, 0xa2, 0x0a, 0xbd, 0x20, 0x00, 0x00, 0x0c, 0x07, 0xdb, - 0xbb, 0xc7, 0xc9, 0x8e, 0x00, 0x2c, 0x40, 0xcb, 0xc4, 0x00, 0x7c, 0xbb, - 0xbb, 0xe7, 0x00, 0x06, 0x2d, 0xbb, 0xbb, 0xc7, 0x10, 0x92, 0x31, 0x36, - 0x10, 0x87, 0x78, 0x63, 0xab, 0x22, 0x22, 0x00, 0x00, 0x00, 0x02, 0xdb, - 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x07, 0x18, 0xcb, 0xbb, 0xd7, 0x0a, 0x8d, - 0x00, 0x2d, 0xbb, 0x23, 0xbb, 0xc7, 0x82, 0x00, 0x2e, 0xbb, 0x39, 0x91, - 0x20, 0xbd, 0x72, 0x8b, 0x00, 0x00, 0x36, 0x87, 0x78, 0x48, 0x63, 0x33, - 0x02, 0x20, 0xe1, 0xdb, 0xbb, 0xbd, 0x01, 0x20, 0x00, 0x02, 0x7d, 0xbb, - 0xbb, 0xe2, 0x6b, 0x94, 0x8b, 0x00, 0x00, 0x81, 0xd7, 0x82, 0x00, 0x2d, - 0x00, 0xbb, 0xbb, 0xc7, 0x20, 0x2c, 0xcb, 0xbb, 0xbb, 0x10, 0xdd, 0x77, - 0x22, 0x7b, 0x36, 0x87, 0x78, 0x63, 0x80, 0x32, 0x02, 0xaa, 0xf2, 0x22, - 0x20, 0x02, 0xdb, 0x00, 0xbb, 0xbc, 0x77, 0x77, 0x77, 0xdb, 0xbb, 0xce, - 0x42, 0x71, 0x63, 0xdb, 0xbb, 0xbd, 0x20, 0x19, 0x7d, 0x10, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x27, 0xcb, 0xbb, 0x00, 0xc7, 0x20, 0x07, 0xeb, 0xbb, - 0xbb, 0xbb, 0xcd, 0x21, 0xd7, 0x72, 0x72, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x01, 0x4f, 0xff, 0xf2, 0xaf, 0xa0, 0x02, 0xdb, 0x41, 0x03, 0xdd, 0xdc, - 0xbb, 0xbc, 0xd7, 0x20, 0x22, 0x89, 0x42, 0xbd, 0xba, 0x7d, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x02, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x02, 0x89, 0xbb, - 0x08, 0xbb, 0xbc, 0xdd, 0x72, 0x31, 0x36, 0x87, 0x78, 0x40, 0x63, 0x31, - 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, 0x21, 0x02, 0xdb, 0x3a, 0xbb, 0xbb, - 0xc7, 0x20, 0x31, 0x88, 0x59, 0xdb, 0xbb, 0xbd, 0xb2, 0x7d, 0xbb, 0xbb, - 0x40, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x00, 0x00, 0x27, 0xec, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xe7, 0x84, 0x29, 0x36, 0x87, 0x78, 0x63, - 0x31, 0x02, 0xfa, 0x02, 0x0a, 0xf2, 0x2f, 0xa0, 0x02, 0xdb, 0x42, 0xbb, - 0x31, 0xbb, 0xc7, 0x39, 0x5a, 0xdb, 0xbb, 0xbd, 0xb2, 0x08, 0x7d, 0xbb, - 0xbb, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0x00, 0xcc, 0x20, 0x00, 0x02, 0x77, - 0xed, 0xcb, 0xbb, 0x00, 0xbb, 0xbb, 0xbd, 0x71, 0x00, 0x00, 0x36, 0x87, - 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, 0x0a, 0xf2, 0x2f, 0x00, 0xa0, 0x02, - 0xdb, 0xbb, 0xbb, 0xcd, 0xdd, 0xcb, 0x18, 0xbb, 0xbc, 0xe2, 0x69, 0x59, - 0xdb, 0xbb, 0xbd, 0x42, 0x20, 0x19, 0x7d, 0xbb, 0xbb, 0xd2, 0x7b, 0x27, - 0x10, 0xcb, 0xbb, 0xcb, 0x79, 0x02, 0x27, 0x7d, 0xdc, 0x00, 0xbb, 0xbb, - 0xbb, 0xe2, 0x00, 0x00, 0x36, 0x87, 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, - 0x2a, 0xf2, 0xaf, 0x00, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x27, 0x4c, - 0x1d, 0xbb, 0xbb, 0xd7, 0x69, 0x59, 0x89, 0x20, 0x19, 0x42, 0x7d, 0x7e, - 0x2c, 0xbb, 0xbb, 0xc7, 0x7a, 0x00, 0x10, 0x22, 0x7c, 0xcb, 0x63, 0x36, - 0x87, 0x78, 0x63, 0x80, 0x31, 0x02, 0xaf, 0xfa, 0xff, 0xff, 0x20, 0x02, - 0x00, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x2c, 0xcb, 0xbb, 0x28, 0xcb, 0x20, - 0x61, 0x00, 0x8c, 0x00, 0x00, 0x2d, 0x12, 0xbb, 0xbb, 0xd7, 0x82, 0x00, - 0x2e, 0xbe, 0x00, 0x21, 0x02, 0x7c, 0x63, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x00, 0x2f, 0xff, 0xff, 0xfa, 0x00, 0x02, 0xdb, 0xbb, 0x00, 0xbd, 0x20, - 0x00, 0x07, 0xdb, 0xbb, 0xbe, 0x20, 0xc2, 0x62, 0x8c, 0x00, 0x00, 0x2c, - 0xcb, 0xc4, 0x00, 0x0c, 0x7d, 0xbb, 0xbb, 0xe7, 0x3a, 0x19, 0x2d, 0xbb, - 0x00, 0xbb, 0xc7, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x80, 0x3a, 0x02, - 0xaa, 0xaa, 0x40, 0x00, 0x02, 0xdb, 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x02, - 0xcc, 0xbb, 0xbd, 0x63, 0x70, 0x63, 0x8b, 0x00, 0x00, 0x07, 0x49, 0x7a, - 0x98, 0x09, 0xbb, 0xd2, 0x3a, 0x19, 0x2d, 0xbb, 0xbb, 0x01, 0xd7, 0x00, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x3a, 0x14, 0xaa, 0x22, 0x20, 0x0b, 0xbd, - 0xc9, 0x7d, 0xbb, 0x30, 0xbb, 0xd2, 0x61, 0x8e, 0x00, 0x02, 0xeb, 0xbb, - 0x20, 0xbb, 0xd7, 0x79, 0x27, 0xcb, 0xbb, 0xbd, 0x70, 0x24, 0x00, 0x02, - 0x6a, 0x00, 0x7d, 0x6b, 0x36, 0x87, 0x24, 0x78, 0x63, 0x39, 0x02, 0xff, - 0x62, 0x02, 0xdb, 0x21, 0xbb, 0xbd, 0x21, 0x2e, 0xbb, 0xbb, 0xe7, 0x61, - 0x80, 0x8e, 0x00, 0x02, 0x7d, 0xbb, 0xbb, 0xbd, 0x72, 0x00, 0x22, 0x27, - 0xcc, 0xbb, 0xbb, 0xcd, 0x20, 0x00, 0x08, 0x07, 0xe7, 0x72, 0x22, 0xa3, - 0xe2, 0x00, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x02, - 0x20, 0xaf, 0xa0, 0xd2, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x03, 0x00, 0x2b, - 0xcb, 0xbb, 0xc7, 0x10, 0x8f, 0x11, 0x01, 0x2d, 0xcb, 0xbb, 0xbb, 0xdd, - 0xb7, 0xcd, 0xd1, 0x00, 0xe7, 0x00, 0x00, 0x07, 0xdc, 0xdd, 0xcb, 0x7b, - 0x00, 0xdd, 0xcb, 0xbb, 0xbc, 0x72, 0x00, 0x00, 0x36, 0x10, 0x87, 0x78, - 0x63, 0x01, 0x00, 0x2a, 0xfa, 0x42, 0x01, 0x22, 0x20, 0x02, 0xdb, 0xbb, - 0xbd, 0x20, 0x01, 0xb0, 0xcc, 0x00, 0x8d, 0xb9, 0xec, 0xbb, 0xbb, 0xbb, - 0x00, 0xcc, 0xcb, 0xbb, 0xbb, 0xbe, 0x71, 0x00, 0x00, 0x05, 0x27, 0xcb, - 0xbb, 0xcc, 0xcc, 0x81, 0xce, 0x29, 0x08, 0x36, 0x87, 0x78, 0x63, 0x02, - 0xaa, 0xff, 0xff, 0x02, 0xff, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x61, 0x02, - 0x0e, 0xeb, 0xbb, 0xbd, 0x70, 0x5a, 0x8c, 0x09, 0x27, 0x00, 0xec, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbd, 0xd7, 0x54, 0x10, 0xa1, 0xcb, 0xa4, 0xd2, - 0x31, 0x36, 0x87, 0x20, 0x78, 0x63, 0x01, 0x02, 0xff, 0xff, 0xff, 0xff, - 0x02, 0xa0, 0x07, 0xad, 0xdd, 0xda, 0x20, 0x99, 0xde, 0x1c, 0xdd, 0xde, - 0xc2, 0x21, 0x8d, 0x0a, 0x7c, 0xed, 0x04, 0xcc, 0xcc, 0xcc, 0xde, 0xd7, - 0x92, 0x2c, 0xed, 0x40, 0xdc, 0xa7, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, - 0x00, 0x22, 0x02, 0xaa, 0xaa, 0xaa, 0xaa, 0x20, 0x02, 0x1b, 0x77, 0x77, - 0x77, 0x5a, 0xc9, 0x72, 0x21, 0x8e, 0x88, 0xaa, 0x27, 0x77, 0x7b, 0x9d, - 0x12, 0x27, 0x77, 0x20, 0x77, 0xb7, 0x3d, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x3e, 0x02, 0xaa, 0x43, 0x22, 0xc6, 0x87, 0x3e, 0x12, 0x21, 0x22, 0x22, - 0x06, 0x01, 0x22, 0x22, 0x21, 0x04, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x02, 0xfa, 0x22, 0x3f, 0xaa, 0x20, 0x26, 0xc6, 0x87, 0x3f, 0x07, 0x07, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, 0xfa, 0x02, 0x7e, 0xff, 0x07, - 0x07, 0x77, 0x2f, 0x07, 0x06, 0x36, 0x00, 0x87, 0x78, 0x63, 0x00, 0x02, - 0xff, 0xaa, 0xfa, 0x07, 0x44, 0x44, 0x44, 0x20, 0x02, 0xd9, 0xc1, 0xd4, - 0xf0, 0xa7, 0x5f, 0x17, 0x04, 0x42, 0x00, 0x00, 0x36, 0x00, 0x87, 0x78, - 0x63, 0x00, 0x02, 0xff, 0xff, 0xff, 0x9f, 0xe9, 0xa0, 0x0a, 0xc4, 0x94, - 0xa7, 0x5f, 0x17, 0x80, 0x04, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x78, 0x63, - 0x13, 0x00, 0x00, 0xaf, 0x03, 0xa0, 0x0a, 0x07, 0xbf, 0xe0, 0x77, 0x2f, - 0x07, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x00, 0x78, 0x63, 0x00, 0x00, 0x02, - 0xaa, 0xfa, 0xaa, 0x0f, 0xaa, 0xaa, 0x20, 0x02, 0xd9, 0xc1, 0xd4, 0xa7, - 0xe0, 0x5f, 0x17, 0x05, 0x00, 0x00, 0x36, 0x87, 0x78, 0x03, 0x63, 0x00, - 0x00, 0x00, 0x02, 0xff, 0xd9, 0xc1, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x03, 0x36, 0x87, 0x23, 0x78, 0x63, 0x01, 0x02, 0x44, 0x20, 0x07, 0x07, - 0xf0, 0x77, 0x2f, 0x07, 0x05, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0x07, 0x02, 0x36, 0x1f, 0x87, 0x78, 0x63, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0xc0, 0x07, 0x02, 0x36, 0x87, 0x78, 0x63, 0x11, 0x11, - 0x7f, 0x11, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x07, 0x00, 0x11, 0x36, - 0x87, 0x29, 0x66, 0x55, 0x55, 0x55, 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, - 0x07, 0x07, 0x55, 0x00, 0x66, 0x92, 0x23, 0x96, 0x68, 0x88, 0x88, 0x88, - 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x01, 0x69, 0x32, - 0x21, 0x33, 0x55, 0x55, 0x55, 0xe9, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x07, 0x55, 0x33, 0x00, 0x12, -}; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c deleted file mode 100644 index 87ff5feb4..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c +++ /dev/null @@ -1,902 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.c - Display driver for the Formike Electronic -// KWH015C04-F01 CSTN panel with an ST7637 controller. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3s3748_api -//! @{ -// -//***************************************************************************** - -#include "hw_gpio.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "gpio.h" -#include "sysctl.h" -#include "rom.h" -#include "grlib.h" -#include "formike128x128x16.h" -#include - -//***************************************************************************** -// -// Defines for the pins that are used to communicate with the ST7637. -// -//***************************************************************************** -#define LCD_A0_BASE GPIO_PORTB_BASE -#define LCD_A0_PIN GPIO_PIN_2 -#define LCD_WR_BASE GPIO_PORTC_BASE -#define LCD_WR_PIN GPIO_PIN_4 -#define LCD_RD_BASE GPIO_PORTC_BASE -#define LCD_RD_PIN GPIO_PIN_5 -#define LCD_BL_BASE GPIO_PORTF_BASE -#define LCD_BL_PIN GPIO_PIN_1 -#define LCD_DATA_BASE GPIO_PORTG_BASE - -//***************************************************************************** -// -// Translates a 24-bit RGB color to a display driver-specific color. -// -// \param c is the 24-bit RGB color. The least-significant byte is the blue -// channel, the next byte is the green channel, and the third byte is the red -// channel. -// -// This macro translates a 24-bit RGB color into a value that can be written -// into the display's frame buffer in order to reproduce that color, or the -// closest possible approximation of that color. -// -// \return Returns the display-driver specific color. -// -//***************************************************************************** -#define DPYCOLORTRANSLATE(c) ((((c) & 0x00ff0000) >> 19) | \ - ((((c) & 0x0000ff00) >> 5) & 0x000007e0) | \ - ((((c) & 0x000000ff) << 8) & 0x0000f800)) - -//***************************************************************************** -// -// Writes a data word to the ST7637. -// -//***************************************************************************** -static void -WriteData(unsigned char ucData) -{ - // - // Write the data to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; -} - -//***************************************************************************** -// -// Writes a command to the ST7637. -// -//***************************************************************************** -static void -WriteCommand(unsigned char ucData) -{ - // - // Write the command to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Set the A0 signal low, indicating a command. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = 0; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; - - // - // Set the A0 signal high, indicating that following writes are data. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = LCD_A0_PIN; -} - -//***************************************************************************** -// -//! Initializes the display driver. -//! -//! This function initializes the ST7637 display controller on the panel, -//! preparing it to display data. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16Init(void) -{ - unsigned long ulClockMS, ulCount; - - // - // Get the value to pass to SysCtlDelay() in order to delay for 1 ms. - // - ulClockMS = SysCtlClockGet() / (3 * 1000); - - // - // Enable the GPIO peripherals used to interface to the ST7637. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); - - // - // Configure the pins that connect to the LCD as GPIO outputs. - // - GPIOPinTypeGPIOOutput(LCD_A0_BASE, LCD_A0_PIN); - GPIOPinTypeGPIOOutput(LCD_WR_BASE, LCD_WR_PIN); - GPIOPinTypeGPIOOutput(LCD_RD_BASE, LCD_RD_PIN); - GPIOPinTypeGPIOOutput(LCD_BL_BASE, LCD_BL_PIN); - GPIOPinTypeGPIOOutput(LCD_DATA_BASE, 0xff); - - // - // Set the LCD control pins to their default values. - // - GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, LCD_A0_PIN); - GPIOPinWrite(LCD_WR_BASE, LCD_WR_PIN | LCD_RD_PIN, - LCD_WR_PIN | LCD_RD_PIN); - GPIOPinWrite(LCD_BL_BASE, LCD_BL_PIN, 0); - GPIOPinWrite(LCD_DATA_BASE, 0xff, 0x00); - - // - // Perform a software reset of the ST7637. - // - WriteCommand(0x01); - - // - // Delay for 120ms. - // - SysCtlDelay(ulClockMS * 120); - - // - // Disable auto-load of mask rom data. - // - WriteCommand(0xD7); - WriteData(0xBF); - - // - // Set the OTP control mode to read. - // - WriteCommand(0xE0); - WriteData(0x00); - - // - // Delay for 10ms. - // - SysCtlDelay(ulClockMS * 10); - - // - // Start the OTP read. - // - WriteCommand(0xE3); - - // - // Delay for 20ms. - // - SysCtlDelay(ulClockMS * 20); - - // - // Cancel the OTP read (it should have finished by now). - // - WriteCommand(0xE1); - - // - // Turn off the display. - // - WriteCommand(0x28); - - // - // Exit sleep mode. - // - WriteCommand(0x11); - - // - // Delay for 50ms. - // - SysCtlDelay(ulClockMS * 50); - - // - // Program the LCD supply voltage V0 to 14V. - // - WriteCommand(0xC0); - WriteData(0x04); - WriteData(0x01); - - // - // Select an LCD bias voltage ratio of 1/12. - // - WriteCommand(0xC3); - WriteData(0x00); - - // - // Enable the x8 booster circuit. - // - WriteCommand(0xC4); - WriteData(0x07); - - // - // Invert the column scan direction for the panel. - // - WriteCommand(0xB7); - WriteData(0xC0); - - // - // Select 16bpp, 5-6-5 data input mode. - // - WriteCommand(0x3A); - WriteData(0x05); - - // - // Select the memory scanning direction. The scanning mode does not matter - // for this driver since the row/column selects will constrain the writes - // to the desired area of the display. - // - WriteCommand(0x36); - WriteData(0x00); - - // - // Turn on the display. - // - WriteCommand(0x29); - - // - // Clear the contents of the display buffer. - // - WriteCommand(0x2A); - WriteData(0x00); - WriteData(0x7F); - WriteCommand(0x2B); - WriteData(0x01); - WriteData(0x80); - WriteCommand(0x2c); - for(ulCount = 0; ulCount < (128 * 128); ulCount++) - { - WriteData(0x00); - WriteData(0x00); - } - - // - // Enable normal operation of the LCD. - // - WriteCommand(0x13); -} - -//***************************************************************************** -// -//! Turns on the backlight. -//! -//! This function turns on the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOn(void) -{ - // - // Assert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = LCD_BL_PIN; -} - -//***************************************************************************** -// -//! Turns off the backlight. -//! -//! This function turns off the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOff(void) -{ - // - // Deassert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = 0; -} - -//***************************************************************************** -// -//! Draws a pixel on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the pixel. -//! \param lY is the Y coordinate of the pixel. -//! \param ulValue is the color of the pixel. -//! -//! This function sets the given pixel to a particular color. The coordinates -//! of the pixel are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDraw(void *pvDisplayData, long lX, long lY, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the pixel value. - // - WriteCommand(0x2c); - WriteData(ulValue >> 8); - WriteData(ulValue); -} - -//***************************************************************************** -// -//! Draws a horizontal sequence of pixels on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the first pixel. -//! \param lY is the Y coordinate of the first pixel. -//! \param lX0 is sub-pixel offset within the pixel data, which is valid for 1 -//! or 4 bit per pixel formats. -//! \param lCount is the number of pixels to draw. -//! \param lBPP is the number of bits per pixel; must be 1, 4, or 8. -//! \param pucData is a pointer to the pixel data. For 1 and 4 bit per pixel -//! formats, the most significant bit(s) represent the left-most pixel. -//! \param pucPalette is a pointer to the palette used to draw the pixels. -//! -//! This function draws a horizontal sequence of pixels on the screen, using -//! the supplied palette. For 1 bit per pixel format, the palette contains -//! pre-translated colors; for 4 and 8 bit per pixel formats, the palette -//! contains 24-bit RGB values that must be translated before being written to -//! the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDrawMultiple(void *pvDisplayData, long lX, long lY, - long lX0, long lCount, long lBPP, - const unsigned char *pucData, - const unsigned char *pucPalette) -{ - unsigned long ulByte; - - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX + lCount - 1); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Determine how to interpret the pixel data based on the number of bits - // per pixel. - // - switch(lBPP) - { - // - // The pixel data is in 1 bit per pixel format. - // - case 1: - { - // - // Loop while there are more pixels to draw. - // - while(lCount) - { - // - // Get the next byte of image data. - // - ulByte = *pucData++; - - // - // Loop through the pixels in this byte of image data. - // - for(; (lX0 < 8) && lCount; lX0++, lCount--) - { - // - // Draw this pixel in the appropriate color. - // - lBPP = ((unsigned long *)pucPalette)[(ulByte >> - (7 - lX0)) & 1]; - WriteData(lBPP >> 8); - WriteData(lBPP); - } - - // - // Start at the beginning of the next byte of image data. - // - lX0 = 0; - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 4 bit per pixel format. - // - case 4: - { - // - // Loop while there are more pixels to draw. "Duff's device" is - // used to jump into the middle of the loop if the first nibble of - // the pixel data should not be used. Duff's device makes use of - // the fact that a case statement is legal anywhere within a - // sub-block of a switch statement. See - // http://en.wikipedia.org/wiki/Duff's_device for detailed - // information about Duff's device. - // - switch(lX0 & 1) - { - case 0: - while(lCount) - { - // - // Get the upper nibble of the next byte of pixel data - // and extract the corresponding entry from the - // palette. - // - ulByte = (*pucData >> 4) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - - // - // See if there is another pixel to draw. - // - if(lCount) - { - case 1: - // - // Get the lower nibble of the next byte of pixel - // data and extract the corresponding entry from - // the palette. - // - ulByte = (*pucData++ & 15) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - } - } - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 8 bit per pixel format. - // - case 8: - { - // - // Loop while there are more pixels to draw. - // - while(lCount--) - { - // - // Get the next byte of pixel data and extract the - // corresponding entry from the palette. - // - ulByte = *pucData++ * 3; - ulByte = *(unsigned long *)(pucPalette + ulByte) & 0x00ffffff; - - // - // Translate this palette entry and write it to the screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - } - - // - // The image data has been drawn. - // - break; - } - } -} - -//***************************************************************************** -// -//! Flushes any cached drawing operations. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! -//! This functions flushes any cached drawing operations to the display. This -//! is useful when a local frame buffer is used for drawing operations, and the -//! flush would copy the local frame buffer to the display. For the ST7637 -//! driver, the flush is a no operation. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16Flush(void *pvDisplayData) -{ - // - // There is nothing to be done. - // -} - -//***************************************************************************** -// -//! Draws a horizontal line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX1 is the X coordinate of the start of the line. -//! \param lX2 is the X coordinate of the end of the line. -//! \param lY is the Y coordinate of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a horizontal line on the display. The coordinates of -//! the line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawH(void *pvDisplayData, long lX1, long lX2, long lY, - unsigned long ulValue) -{ - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX1); - WriteData(lX2); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this horizontal line. - // - while(lX1++ <= lX2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Draws a vertical line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the line. -//! \param lY1 is the Y coordinate of the start of the line. -//! \param lY2 is the Y coordinate of the end of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a vertical line on the display. The coordinates of the -//! line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawV(void *pvDisplayData, long lX, long lY1, long lY2, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the extent of the line along the Y axis. - // - WriteCommand(0x2b); - WriteData(lY1 + 1); - WriteData(lY2 + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this vertical line. - // - while(lY1++ <= lY2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Fills a rectangle. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param pRect is a pointer to the structure describing the rectangle. -//! \param ulValue is the color of the rectangle. -//! -//! This function fills a rectangle on the display. The coordinates of the -//! rectangle are assumed to be within the extents of the display, and the -//! rectangle specification is fully inclusive (i.e. both sXMin and sXMax are -//! drawn, along with sYMin and sYMax). -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16RectFill(void *pvDisplayData, const tRectangle *pRect, - unsigned long ulValue) -{ - long lCount; - - // - // Set the extent of the rectangle along the X axis. - // - WriteCommand(0x2a); - WriteData(pRect->sXMin); - WriteData(pRect->sXMax); - - // - // Set the extent of the rectangle along the Y axis. - // - WriteCommand(0x2b); - WriteData(pRect->sYMin + 1); - WriteData(pRect->sYMax + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels in this rectangle. - // - for(lCount = ((pRect->sXMax - pRect->sXMin + 1) * - (pRect->sYMax - pRect->sYMin + 1)); lCount > 0; lCount--) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Translates a 24-bit RGB color to a display driver-specific color. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param ulValue is the 24-bit RGB color. The least-significant byte is the -//! blue channel, the next byte is the green channel, and the third byte is the -//! red channel. -//! -//! This function translates a 24-bit RGB color into a value that can be -//! written into the display's frame buffer in order to reproduce that color, -//! or the closest possible approximation of that color. -//! -//! \return Returns the display-driver specific color. -// -//***************************************************************************** -static unsigned long -Formike128x128x16ColorTranslate(void *pvDisplayData, unsigned long ulValue) -{ - // - // Translate from a 24-bit RGB color to a 5-6-5 RGB color. - // - return(DPYCOLORTRANSLATE(ulValue)); -} - -//***************************************************************************** -// -//! The display structure that describes the driver for the Formike Electronic -//! KWH015C04-F01 CSTN panel with an ST7637 controller. -// -//***************************************************************************** -const tDisplay g_sFormike128x128x16 = -{ - sizeof(tDisplay), - 0, - 128, - 128, - Formike128x128x16PixelDraw, - Formike128x128x16PixelDrawMultiple, - Formike128x128x16LineDrawH, - Formike128x128x16LineDrawV, - Formike128x128x16RectFill, - Formike128x128x16ColorTranslate, - Formike128x128x16Flush -}; - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** - - - - - - - - - - - - - - - - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ - -static tContext sContext; - -void vFormike128x128x16Clear( void ) -{ -const tRectangle xRectangle = { 0, 0, 127, 127 }; - - GrContextForegroundSet( &sContext, ClrBlack ); - GrRectFill( &sContext, &xRectangle ); - GrContextForegroundSet(&sContext, ClrWhite); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ) -{ - GrContextForegroundSet(&sContext, ClrWhite); - GrStringDraw( &sContext, pcString, strlen( pcString ), lX, lY, false ); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16Init( unsigned long ul ) -{ -tRectangle rectScreen; -const unsigned char *pcAppName = "www.FreeRTOS.org"; - - ( void ) ul; - - Formike128x128x16Init(); - Formike128x128x16BacklightOn(); - GrContextInit(&sContext, &g_sFormike128x128x16); - GrContextFontSet(&sContext, &g_sFontCmss12); - rectScreen.sXMin = 0; - - /* Fill the screen with a black rectangle. */ - rectScreen.sYMin = 0; - rectScreen.sXMax = g_sFormike128x128x16.usWidth - 1; - rectScreen.sYMax = g_sFormike128x128x16.usHeight - 1; - GrContextForegroundSet(&sContext, ClrBlack); - GrRectFill(&sContext, &rectScreen); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ) -{ - GrImageDraw( &sContext, pucImage, ( long ) ulX, ( long ) ulY); -} - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h deleted file mode 100644 index feaec758f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h +++ /dev/null @@ -1,51 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.h - Prototypes for the Formike Electronic KWH015C04-F01 -// display driver. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __FORMIKE128X128X16_H__ -#define __FORMIKE128X128X16_H__ - -//***************************************************************************** -// -// Prototypes for the globals exported by this driver. -// -//***************************************************************************** -extern void Formike128x128x16Init(void); -extern void Formike128x128x16BacklightOn(void); -extern void Formike128x128x16BacklightOff(void); -extern const tDisplay g_sFormike128x128x16; - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ -void vFormike128x128x16Clear( void ); -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ); -void vFormike128x128x16Init( unsigned long ul ); -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ); - -#endif // __FORMIKE128X128X16_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h deleted file mode 100644 index ced7a1dbc..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef LCD_MESSAGE_H -#define LCD_MESSAGE_H - -typedef struct -{ - char *pcMessage; -} xOLEDMessage; - -#endif /* LCD_MESSAGE_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c deleted file mode 100644 index 81097e713..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c +++ /dev/null @@ -1,445 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Fast Interrupt Test" - A high frequency periodic interrupt is generated - * using a free running timer to demonstrate the use of the - * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt - * service routine measures the number of processor clocks that occur between - * each interrupt - and in so doing measures the jitter in the interrupt timing. - * The maximum measured jitter time is latched in the ulMaxJitter variable, and - * displayed on the OLED display by the 'OLED' task as described below. The - * fast interrupt is configured and handled in the timertest.c source file. - * - * "OLED" task - the OLED task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the OLED send the message on a queue to the OLED task instead of - * accessing the OLED themselves. The OLED task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. - * - * "Check" hook - This only executes every five seconds from the tick hook. - * Its main function is to check that all the standard demo tasks are still - * operational. Should any unexpected behaviour within a demo task be discovered - * the tick hook will write an error to the OLED (via the OLED task). If all the - * demo tasks are executing with their expected behaviour then the check task - * writes PASS to the OLED (again via the OLED task), as described above. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - */ - - - - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ - - - - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Hardware library includes. */ -#include "hw_memmap.h" -#include "hw_types.h" -#include "hw_sysctl.h" -#include "sysctl.h" -#include "gpio.h" -#include "grlib.h" -#include "rit128x96x4.h" -#include "osram128x64x4.h" -#include "formike128x128x16.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "lcd_message.h" -#include "bitmap.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "IntQueue.h" -#include "QueueSet.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Size of the stack allocated to the uIP task. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The OLED task uses the sprintf function so requires a little more stack too. */ -#define mainOLED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The maximum number of message that can be waiting for display at any one -time. */ -#define mainOLED_QUEUE_SIZE ( 3 ) - -/* Dimensions the buffer into which the jitter time is written. */ -#define mainMAX_MSG_LEN 25 - -/* The period of the system clock in nano seconds. This is used to calculate -the jitter time in nano seconds. */ -#define mainNS_PER_CLOCK ( ( unsigned long ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) ) - -/* Constants used when writing strings to the display. */ -#define mainCHARACTER_HEIGHT ( 9 ) -#define mainMAX_ROWS_128 ( mainCHARACTER_HEIGHT * 14 ) -#define mainMAX_ROWS_96 ( mainCHARACTER_HEIGHT * 10 ) -#define mainMAX_ROWS_64 ( mainCHARACTER_HEIGHT * 7 ) -#define mainFULL_SCALE ( 15 ) -#define ulSSI_FREQUENCY ( 3500000UL ) - -/*-----------------------------------------------------------*/ - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The display is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the display directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vOLEDTask( void *pvParameters ); - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Configures the high frequency timers - those used to measure the timing - * jitter while the real time kernel is executing. - */ -extern void vSetupHighFrequencyTimer( void ); - -/* - * The idle hook is used to run a test of the scheduler context switch - * mechanism. - */ -void vApplicationIdleHook( void ) __attribute__((naked)); -/*-----------------------------------------------------------*/ - -/* The queue used to send messages to the OLED task. */ -QueueHandle_t xOLEDQueue; - -/* The welcome text. */ -const char * const pcWelcomeMessage = " www.FreeRTOS.org"; - -/* Variables used to detect the test in the idle hook failing. */ -unsigned long ulIdleError = pdFALSE; - -/*-----------------------------------------------------------*/ - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ -int main( void ) -{ - prvSetupHardware(); - - /* Create the queue used by the OLED task. Messages for display on the OLED - are received via this queue. */ - xOLEDQueue = xQueueCreate( mainOLED_QUEUE_SIZE, sizeof( xOLEDMessage ) ); - - /* Create the uIP task if running on a processor that includes a MAC and - PHY. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - } - - /* Start the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartQueueSetTasks(); - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vOLEDTask, "OLED", mainOLED_TASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Configure the high frequency interrupt used to measure the interrupt - jitter time. */ - vSetupHighFrequencyTimer(); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - for( ;; ); - return 0; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is - a workaround to allow the PLL to operate reliably. */ - if( DEVICE_IS_REVA2 ) - { - SysCtlLDOSet( SYSCTL_LDO_2_75V ); - } - - /* Set the clocking to run from the PLL at 50 MHz */ - SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ ); - - /* Enable Port F for Ethernet LEDs - LED0 Bit 3 Output - LED1 Bit 2 Output */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF ); - GPIODirModeSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3), GPIO_DIR_MODE_HW ); - GPIOPadConfigSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3 ), GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static xOLEDMessage xMessage = { "PASS" }; -static unsigned long ulTicksSinceLastDisplay = 0; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt. Have enough ticks passed to make it - time to perform our health status check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN GEN Q"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN PEEK Q"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN BLOCK Q"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN BLOCK TIME"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN SEMAPHORE"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN POLL Q"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN CREATE"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN MATH"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN REC MUTEX"; - } - else if( ulIdleError != pdFALSE ) - { - xMessage.pcMessage = "ERROR IN HOOK"; - } - else if( xAreIntQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN INT QUEUE"; - } - else if( xAreQueueSetTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN QUEUE SET"; - } - - /* Send the message to the OLED gatekeeper for display. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken ); - } - - /* Exercise the queue sets from an ISR. */ - vQueueSetAccessQueueSetFromISR(); -} -/*-----------------------------------------------------------*/ - -void vOLEDTask( void *pvParameters ) -{ -xOLEDMessage xMessage; -unsigned long ulY, ulMaxY; -static char cMessage[ mainMAX_MSG_LEN ]; -extern volatile unsigned long ulMaxJitter; -unsigned portBASE_TYPE uxUnusedStackOnEntry; -const unsigned char *pucImage; - -/* Functions to access the OLED. The one used depends on the dev kit -being used. */ -void ( *vOLEDInit )( unsigned long ) = NULL; -void ( *vOLEDStringDraw )( const char *, unsigned long, unsigned long, unsigned char ) = NULL; -void ( *vOLEDImageDraw )( const unsigned char *, unsigned long, unsigned long, unsigned long, unsigned long ) = NULL; -void ( *vOLEDClear )( void ) = NULL; - - /* Just for demo purposes. */ - uxUnusedStackOnEntry = uxTaskGetStackHighWaterMark( NULL ); - - /* Map the OLED access functions to the driver functions that are appropriate - for the evaluation kit being used. */ - switch( HWREG( SYSCTL_DID1 ) & SYSCTL_DID1_PRTNO_MASK ) - { - case SYSCTL_DID1_PRTNO_6965 : - case SYSCTL_DID1_PRTNO_2965 : vOLEDInit = OSRAM128x64x4Init; - vOLEDStringDraw = OSRAM128x64x4StringDraw; - vOLEDImageDraw = OSRAM128x64x4ImageDraw; - vOLEDClear = OSRAM128x64x4Clear; - ulMaxY = mainMAX_ROWS_64; - pucImage = pucBasicBitmap; - break; - - case SYSCTL_DID1_PRTNO_1968 : - case SYSCTL_DID1_PRTNO_8962 : vOLEDInit = RIT128x96x4Init; - vOLEDStringDraw = RIT128x96x4StringDraw; - vOLEDImageDraw = RIT128x96x4ImageDraw; - vOLEDClear = RIT128x96x4Clear; - ulMaxY = mainMAX_ROWS_96; - pucImage = pucBasicBitmap; - break; - - default : vOLEDInit = vFormike128x128x16Init; - vOLEDStringDraw = vFormike128x128x16StringDraw; - vOLEDImageDraw = vFormike128x128x16ImageDraw; - vOLEDClear = vFormike128x128x16Clear; - ulMaxY = mainMAX_ROWS_128; - pucImage = pucGrLibBitmap; - break; - } - - ulY = ulMaxY; - - /* Initialise the OLED and display a startup message. */ - vOLEDInit( ulSSI_FREQUENCY ); - vOLEDStringDraw( "POWERED BY FreeRTOS", 0, 0, mainFULL_SCALE ); - vOLEDImageDraw( pucImage, 0, mainCHARACTER_HEIGHT + 1, bmpBITMAP_WIDTH, bmpBITMAP_HEIGHT ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - xQueueReceive( xOLEDQueue, &xMessage, portMAX_DELAY ); - - /* Write the message on the next available row. */ - ulY += mainCHARACTER_HEIGHT; - if( ulY >= ulMaxY ) - { - ulY = mainCHARACTER_HEIGHT; - vOLEDClear(); - vOLEDStringDraw( pcWelcomeMessage, 0, 0, mainFULL_SCALE ); - } - - /* Display the message along with the maximum jitter time from the - high priority time test. */ - sprintf( cMessage, "%s [%uns]", xMessage.pcMessage, ulMaxJitter * mainNS_PER_CLOCK ); - vOLEDStringDraw( cMessage, 0, ulY, mainFULL_SCALE ); - } -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* Just to keep the linker happy. */ -void __error__( char *pcFilename, unsigned long ulLine ) -{ - for( ;; ); -} - -int uipprintf( const char *fmt, ... ) -{ - return( 0 ); -} diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c deleted file mode 100644 index 3353a82e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c +++ /dev/null @@ -1,933 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.c - Driver for the OSRAM 128x64x4 graphical OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sx965_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "osram128x64x4.h" - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for OSRAM usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Define the OSRAM 128x64x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-39 on one side, 40-79 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-79 map to COM 79-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define OSRAM_INIT_REMAP 0x52 -#define OSRAM_INIT_OFFSET 0x4C -static const unsigned char g_pucOSRAM128x64x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucOSRAM128x64x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD0303 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from OSRAM App Note AN018. -// -//***************************************************************************** -static const unsigned char g_pucOSRAM128x64x4Init[] = -{ - // - // Column Address - // - 4, 0x15, 0, 63, 0xe3, - - // - // Row Address - // - 4, 0x75, 0, 63, 0xe3, - - // - // Contrast Control - // - 3, 0x81, 50, 0xe3, - - // - // Half Current Range - // - 2, 0x85, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, OSRAM_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, OSRAM_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Multiplex Ratio - // - 3, 0xA8, 63, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x22, 0xe3, - - // - // Row Period - // - 3, 0xB2, 70, 0xe3, - - // - // Display Clock Divide - // - 3, 0xB3, 0xF1, 0xe3, - - // - // VSL - // - 3, 0xBF, 0x0D, 0xe3, - - // - // VCOMH - // - 3, 0xBE, 0x02, 0xe3, - - // - // VP - // - 3, 0xBC, 0x10, 0xe3, - - // - // Gamma - // - 10, 0xB8, 0x01, 0x11, 0x22, 0x32, 0x43, 0x54, 0x65, 0x76, 0xe3, - - // - // Set DC-DC - 3, 0xAD, 0x03, 0xe3, - - // - // Display ON/OFF - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 79 }; - unsigned long ulRow, ulColumn; - static unsigned char pucZeroBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0}; - - // - // Set the window to fill the entire display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); - OSRAMWriteCommand(pucCommand2, sizeof(pucCommand2)); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // In vertical address increment mode, loop through each column, filling - // each row with 0. - // - for(ulColumn = 0; ulColumn < (128/2); ulColumn++) - { - // - // 8 rows (bytes) per row of text. - // - for(ulRow = 0; ulRow < 80; ulRow += 8) - { - OSRAMWriteData(pucZeroBuffer, sizeof(pucZeroBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - static unsigned char pucBuffer[8]; - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = 63; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + 7; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - OSRAMWriteData(pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (/e ulX) and the number of -//! columns (/e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+--3------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by` -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - static unsigned char pucBuffer[8]; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 64); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = (ulX + ulWidth - 2) / 2; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + ulHeight - 1; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4HorizontalInc, - sizeof(g_pucOSRAM128x64x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - OSRAMWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the OSRAM driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the OSRAM driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); - -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD0323 controller on the panel. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the PC7 pin as a D/Cn signal for OLED device. - // - GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD); - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Configure and enable the SSI0 port for master mode. - // - OSRAM128x64x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - OSRAM128x64x4Clear(); - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xAD, 0x02 - }; - - // - // Turn off the DC-DC converter and the display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h deleted file mode 100644 index 2ba7cb956..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h +++ /dev/null @@ -1,63 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.h - Prototypes for the driver for the OSRAM 128x64x4 graphical -// OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __OSRAM128X64X4_H__ -#define __OSRAM128X64X4_H__ - -//***************************************************************************** -// -// Prototypes for the driver APIs. -// -//***************************************************************************** -extern void OSRAM128x64x4Clear(void); -extern void OSRAM128x64x4StringDraw(const char *pcStr, - unsigned long ulX, - unsigned long ulY, - unsigned char ucLevel); -extern void OSRAM128x64x4ImageDraw(const unsigned char *pucImage, - unsigned long ulX, - unsigned long ulY, - unsigned long ulWidth, - unsigned long ulHeight); -extern void OSRAM128x64x4Init(unsigned long ulFrequency); -extern void OSRAM128x64x4Enable(unsigned long ulFrequency); -extern void OSRAM128x64x4Disable(void); -extern void OSRAM128x64x4DisplayOn(void); -extern void OSRAM128x64x4DisplayOff(void); - -//***************************************************************************** -// -// The following macro(s) map old names for the OSRAM functions to the new -// names. In new code, the new names should be used in favor of the old names. -// -//***************************************************************************** -#ifndef DEPRECATED -#define OSRAM128x64x1InitSSI OSRAM128x64x4Enable -#endif - -#endif // __OSRAM128X64X4_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h deleted file mode 100644 index 621c9fe39..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Note used by this port of uIP, but required for compilation. */ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h deleted file mode 100644 index 621c9fe39..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Note used by this port of uIP, but required for compilation. */ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c deleted file mode 100644 index cff38d557..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c +++ /dev/null @@ -1,981 +0,0 @@ -//***************************************************************************** -// -// rit128x96x4.c - Driver for the RIT 128x96x4 graphical OLED display. -// -// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1504-conf of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sLM3S8962_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "rit128x96x4.h" - -//***************************************************************************** -// -// Macros that define the peripheral, port, and pin used for the OLEDDC -// panel control signal. -// -//***************************************************************************** - -unsigned long ulGPIOId = 0, ulGPIOBase = 0, ulOLEDDC_PIN = 0, ulOLEDEN_PIN = 0; - -#define LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOA -#define LM3S8962_GPIO_OLEDDC_BASE GPIO_PORTA_BASE -#define LM3S8962_GPIO_OLEDDC_PIN GPIO_PIN_6 -#define LM3S8962_GPIO_OLEDEN_PIN GPIO_PIN_7 - -#define LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOH -#define LM3S1968_GPIO_OLEDDC_BASE GPIO_PORTH_BASE -#define LM3S1968_GPIO_OLEDDC_PIN GPIO_PIN_2 -#define LM3S1968_GPIO_OLEDEN_PIN GPIO_PIN_3 - - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for display usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Buffer for storing sequences of command and data for the display. -// -//***************************************************************************** -static unsigned char g_pucBuffer[8]; - -//***************************************************************************** -// -// Define the SSD1329 128x96x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. Note that the controller support 128 rows while -// the RIT display only uses 96. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-63 on one side, 64-127 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-127 map to COM 127-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define RIT_INIT_REMAP 0x52 // app note says 0x51 -#define RIT_INIT_OFFSET 0x00 -static const unsigned char g_pucRIT128x96x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucRIT128x96x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD1329 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from RIT App Note for -// the P14201. Values used are from the RIT app note, except where noted. -// -//***************************************************************************** -static const unsigned char g_pucRIT128x96x4Init[] = -{ - // - // Unlock commands - // - 3, 0xFD, 0x12, 0xe3, - - // - // Display off - // - 2, 0xAE, 0xe3, - - // - // Icon off - // - 3, 0x94, 0, 0xe3, - - // - // Multiplex ratio - // - 3, 0xA8, 95, 0xe3, - - // - // Contrast - // - 3, 0x81, 0xb7, 0xe3, - - // - // Pre-charge current - // - 3, 0x82, 0x3f, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, RIT_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, RIT_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x11, 0xe3, - - // - // Frame frequency - // - 3, 0xB2, 0x23, 0xe3, - - // - // Front Clock Divider - // - 3, 0xB3, 0xe2, 0xe3, - - // - // Set gray scale table. App note uses default command: - // 2, 0xB7, 0xe3 - // This gray scale attempts some gamma correction to reduce the - // the brightness of the low levels. - // - 17, 0xB8, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 22, 26, 30, 0xe3, - - // - // Second pre-charge period. App note uses value 0x04. - // - 3, 0xBB, 0x01, 0xe3, - - // - // Pre-charge voltage - // - 3, 0xBC, 0x3f, 0xe3, - - // - // Display ON - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, ulOLEDDC_PIN); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 127 }; - unsigned long ulRow, ulColumn; - - // - // Clear out the buffer used for sending bytes to the display. - *(unsigned long *)&g_pucBuffer[0] = 0; - *(unsigned long *)&g_pucBuffer[4] = 0; - - // - // Set the window to fill the entire display. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); - RITWriteCommand(pucCommand2, sizeof(pucCommand2)); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop through the rows - // - for(ulRow = 0; ulRow < 96; ulRow++) - { - // - // Loop through the columns. Each byte is two pixels, - // and the buffer hold 8 bytes, so 16 pixels are cleared - // at a time. - // - for(ulColumn = 0; ulColumn < 128; ulColumn += 8 * 2) - { - // - // Write 8 clearing bytes to the display, which will - // clear 16 pixels across. - // - RITWriteData(g_pucBuffer, sizeof(g_pucBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = 63; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + 7; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4VerticalInc, - sizeof(g_pucRIT128x96x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - g_pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - g_pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - g_pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - RITWriteData(g_pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (\e ulX) and the number of -//! columns (\e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 96); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = (ulX + ulWidth - 2) / 2; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + ulHeight - 1; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - RITWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the RIT driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the RIT driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD1329 controller on the panel. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - - /* Determine which board is being used. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - /* Ethernet is present, we must be using the LM3S8962 EK. */ - ulGPIOId = LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S8962_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_6; - ulOLEDEN_PIN = GPIO_PIN_7; - } - else - { - /* Ethernet is not present, we must be using the LM3S1968 EK. */ - ulGPIOId = LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S1968_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_2; - ulOLEDEN_PIN = GPIO_PIN_3; - } - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(ulGPIOId); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the GPIO port pin used as a D/Cn signal for OLED device, - // and the port pin used to enable power to the OLED panel. - // - GPIOPinTypeGPIOOutput(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN); - GPIOPadConfigSet(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - ulOLEDDC_PIN | ulOLEDEN_PIN); - - // - // Configure and enable the SSI0 port for master mode. - // - RIT128x96x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - RIT128x96x4Clear(); - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xe3 - }; - - // - // Put the display to sleep. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s deleted file mode 100644 index 4c4b71dc1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s +++ /dev/null @@ -1,227 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2009 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * APP_ENTRY_POINT - * - * Defines the application entry point function, if undefined this setting - * defaults to "main". - * - * USE_PROCESS_STACK - * - * If defined, thread mode will be configured to use the process stack if - * the size of the process stack is greater than zero bytes in length. - * - * INITIALIZE_STACK - * - * If defined, the contents of the stack will be initialized to a the - * value 0xCC. - * - * FULL_LIBRARY - * - * If defined then - * - argc, argv are setup by the debug_getargs. - * - the exit symbol is defined and executes on return from main. - * - the exit symbol calls destructors, atexit functions and then debug_exit. - * - * If not defined then - * - argc and argv are zero. - * - no exit symbol, code loops on return from main. - *****************************************************************************/ - -#ifndef APP_ENTRY_POINT -#define APP_ENTRY_POINT main -#endif - -#ifndef ARGSSPACE -#define ARGSSPACE 128 -#endif - - .global _start - .syntax unified - .extern APP_ENTRY_POINT -#ifdef FULL_LIBRARY - .global exit -#endif - - .section .init, "ax" - .code 16 - .align 2 - .thumb_func - -_start: -#ifdef __RAM_BUILD - ldr r1, =__stack_end__ - mov sp, r1 -#endif -#ifdef INITIALIZE_STACK - mov r2, #0xCC - ldr r0, =__stack_start__ -#ifndef __RAM_BUILD - mov r1, sp -#endif - bl memory_set -#endif - -#ifdef USE_PROCESS_STACK - /* Set up process stack if size > 0 */ - ldr r1, =__stack_process_end__ - ldr r0, =__stack_process_start__ - subs r2, r1, r0 - beq 1f - msr psp, r1 - mov r2, #2 - msr control, r2 -#ifdef INITIALIZE_STACK - mov r2, #0xCC - bl memory_set -#endif -1: -#endif - /* Copy initialised memory sections into RAM (if necessary). */ - ldr r0, =__data_load_start__ - ldr r1, =__data_start__ - ldr r2, =__data_end__ - bl memory_copy - ldr r0, =__text_load_start__ - ldr r1, =__text_start__ - ldr r2, =__text_end__ - bl memory_copy - ldr r0, =__fast_load_start__ - ldr r1, =__fast_start__ - ldr r2, =__fast_end__ - bl memory_copy - ldr r0, =__ctors_load_start__ - ldr r1, =__ctors_start__ - ldr r2, =__ctors_end__ - bl memory_copy - ldr r0, =__dtors_load_start__ - ldr r1, =__dtors_start__ - ldr r2, =__dtors_end__ - bl memory_copy - ldr r0, =__rodata_load_start__ - ldr r1, =__rodata_start__ - ldr r2, =__rodata_end__ - bl memory_copy - - /* Zero the bss. */ - ldr r0, =__bss_start__ - ldr r1, =__bss_end__ - mov r2, #0 - bl memory_set - - /* Initialise the heap */ - ldr r0, = __heap_start__ - ldr r1, = __heap_end__ - sub r1, r1, r0 - mov r2, #0 - str r2, [r0] - add r0, r0, #4 - str r1, [r0] - - /* Call constructors */ - ldr r0, =__ctors_start__ - ldr r1, =__ctors_end__ -ctor_loop: - cmp r0, r1 - beq ctor_end - ldr r2, [r0] - add r0, #4 - push {r0-r1} - blx r2 - pop {r0-r1} - b ctor_loop -ctor_end: - - /* Setup initial call frame */ - mov r0, #0 - mov lr, r0 - mov r12, sp - -start: - /* Jump to application entry point */ -#ifdef FULL_LIBRARY - mov r0, #ARGSSPACE - ldr r1, =args - ldr r2, =debug_getargs - blx r2 - ldr r1, =args -#else - mov r0, #0 - mov r1, #0 -#endif - ldr r2, =APP_ENTRY_POINT - blx r2 - -#ifdef FULL_LIBRARY - .thumb_func -exit: - mov r5, r0 // save the exit parameter/return result - - /* Call destructors */ - ldr r0, =__dtors_start__ - ldr r1, =__dtors_end__ -dtor_loop: - cmp r0, r1 - beq dtor_end - ldr r2, [r0] - add r0, #4 - push {r0-r1} - blx r2 - pop {r0-r1} - b dtor_loop -dtor_end: - - /* Call atexit functions */ - ldr r2, =_execute_at_exit_fns - blx r2 - - /* Call debug_exit with return result/exit parameter */ - mov r0, r5 - ldr r2, =debug_exit - blx r2 -#endif - - /* Returned from application entry point, loop forever. */ -exit_loop: - b exit_loop - -memory_copy: - cmp r0, r1 - beq 2f - subs r2, r2, r1 - beq 2f -1: - ldrb r3, [r0] - add r0, r0, #1 - strb r3, [r1] - add r1, r1, #1 - subs r2, r2, #1 - bne 1b -2: - bx lr - -memory_set: - cmp r0, r1 - beq 1f - strb r2, [r0] - add r0, r0, #1 - b memory_set -1: - bx lr - -#ifdef FULL_LIBRARY - .bss -args: - .space ARGSSPACE -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c deleted file mode 100644 index 2c8011b5c..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* High speed timer test as described in main.c. */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 0 ) - -/* Misc defines. */ -#define timerMAX_32BIT_VALUE ( 0xffffffffUL ) -#define timerTIMER_1_COUNT_VALUE ( * ( ( unsigned long * ) ( TIMER1_BASE + 0x48 ) ) ) - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void Timer0IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned long ulMaxJitter = 0UL; - -/* Counts the total number of times that the high frequency timer has 'ticked'. -This value is used by the run time stats function to work out what percentage -of CPU time each task is taking. */ -volatile unsigned long ulHighFrequencyTimerTicks = 0UL; -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ -unsigned long ulFrequency; - - /* Timer zero is used to generate the interrupts, and timer 1 is used - to measure the jitter. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER1 ); - TimerConfigure( TIMER0_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER1_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupt to be above the kernel - highest. */ - IntPrioritySet( INT_TIMER0A, timerHIGHEST_PRIORITY ); - - /* Just used to measure time. */ - TimerLoadSet(TIMER1_BASE, TIMER_A, timerMAX_32BIT_VALUE ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timer will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY; - TimerLoadSet( TIMER0_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER0A ); - TimerIntEnable( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER0_BASE, TIMER_A ); - TimerEnable( TIMER1_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void Timer0IntHandler( void ) -{ -unsigned long ulDifference; -volatile unsigned long ulCurrentCount; -static unsigned long ulMaxDifference = 0, ulLastCount = 0; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. */ - ulCurrentCount = timerTIMER_1_COUNT_VALUE; - - TimerIntClear( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - if( ulCurrentCount < ulLastCount ) - { - /* How many times has timer 1 counted since the last interrupt? */ - ulDifference = ulLastCount - ulCurrentCount; - - /* Is this the largest difference we have measured yet? */ - if( ulDifference > ulMaxDifference ) - { - ulMaxDifference = ulDifference; - ulMaxJitter = ulMaxDifference - timerEXPECTED_DIFFERENCE_VALUE; - } - } - - ulLastCount = ulCurrentCount; - - /* Keep a count of the total number of 20KHz ticks. This is used by the - run time stats functionality to calculate how much CPU time is used by - each task. */ - ulHighFrequencyTimerTicks++; -} - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c deleted file mode 100644 index aa4438ba6..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c +++ /dev/null @@ -1,274 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Demo includes. */ -#include "emac.h" - -/* uIP includes. */ -#include "uip.h" - -/* Hardware library includes. */ -#include "hw_types.h" -#include "hw_memmap.h" -#include "hw_ints.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "interrupt.h" - -#define emacNUM_RX_BUFFERS 5 -#define emacFRAM_SIZE_BYTES 2 -#define macNEGOTIATE_DELAY 2000 -#define macWAIT_SEND_TIME ( 10 ) - -/* The task that handles the MAC peripheral. This is created at a high -priority and is effectively a deferred interrupt handler. The peripheral -handling is deferred to a task to prevent the entire FIFO having to be read -from within an ISR. */ -void vMACHandleTask( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/* The semaphore used to wake the interrupt handler task. The peripheral -is processed at the task level to prevent the need to read the entire FIFO from -within the ISR itself. */ -SemaphoreHandle_t xMACInterruptSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers. */ -unsigned char *uip_buf; - -/* Buffers into which Rx data is placed. */ -static unsigned char ucRxBuffers[ emacNUM_RX_BUFFERS ][ UIP_BUFSIZE + ( 4 * emacFRAM_SIZE_BYTES ) ] __attribute__((aligned(4))); - -/* The length of the data within each of the Rx buffers. */ -static unsigned long ulRxLength[ emacNUM_RX_BUFFERS ]; - -/* Used to keep a track of the number of bytes to transmit. */ -static unsigned long ulNextTxSpace; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE vInitEMAC( void ) -{ -unsigned long ulTemp; -portBASE_TYPE xReturn; - - /* Ensure all interrupts are disabled. */ - EthernetIntDisable( ETH_BASE, ( ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); - - /* Clear any interrupts that were already pending. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Initialise the MAC and connect. */ - EthernetInit( ETH_BASE ); - EthernetConfigSet( ETH_BASE, ( ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | ETH_CFG_TX_PADEN ) ); - EthernetEnable( ETH_BASE ); - - /* Mark each Rx buffer as empty. */ - for( ulTemp = 0; ulTemp < emacNUM_RX_BUFFERS; ulTemp++ ) - { - ulRxLength[ ulTemp ] = 0; - } - - /* Create the queue and task used to defer the MAC processing to the - task level. */ - vSemaphoreCreateBinary( xMACInterruptSemaphore ); - xSemaphoreTake( xMACInterruptSemaphore, 0 ); - xReturn = xTaskCreate( vMACHandleTask, "MAC", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL ); - vTaskDelay( macNEGOTIATE_DELAY ); - - /* We are only interested in Rx interrupts. */ - IntPrioritySet( INT_ETH, configKERNEL_INTERRUPT_PRIORITY ); - IntEnable( INT_ETH ); - EthernetIntEnable(ETH_BASE, ETH_INT_RX); - - return xReturn; -} -/*-----------------------------------------------------------*/ - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -static unsigned long ulNextRxBuffer = 0; -unsigned int iLen; - - iLen = ulRxLength[ ulNextRxBuffer ]; - - if( iLen != 0 ) - { - /* Leave room for the size at the start of the buffer. */ - uip_buf = &( ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - - ulRxLength[ ulNextRxBuffer ] = 0; - - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - } - - return iLen; -} -/*-----------------------------------------------------------*/ - -void vInitialiseSend( void ) -{ - /* Set the index to the first byte to send - skipping over the size - bytes. */ - ulNextTxSpace = 2; -} -/*-----------------------------------------------------------*/ - -void vIncrementTxLength( unsigned long ulLength ) -{ - ulNextTxSpace += ulLength; -} -/*-----------------------------------------------------------*/ - -void vSendBufferToMAC( void ) -{ -unsigned long *pulSource; -unsigned short * pus; -unsigned long ulNextWord; - - /* Locate the data to be send. */ - pus = ( unsigned short * ) uip_buf; - - /* Add in the size of the data. */ - pus--; - *pus = ulNextTxSpace; - - /* Wait for data to be sent if there is no space immediately. */ - while( !EthernetSpaceAvail( ETH_BASE ) ) - { - vTaskDelay( macWAIT_SEND_TIME ); - } - - pulSource = ( unsigned long * ) pus; - - for( ulNextWord = 0; ulNextWord < ulNextTxSpace; ulNextWord += sizeof( unsigned long ) ) - { - HWREG(ETH_BASE + MAC_O_DATA) = *pulSource; - pulSource++; - } - - /* Go. */ - HWREG( ETH_BASE + MAC_O_TR ) = MAC_TR_NEWTX; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; -unsigned long ulTemp; - - /* Clear the interrupt. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Was it an Rx interrupt? */ - if( ulTemp & ETH_INT_RX ) - { - xSemaphoreGiveFromISR( xMACInterruptSemaphore, &xHigherPriorityTaskWoken ); - EthernetIntDisable( ETH_BASE, ETH_INT_RX ); - } - - /* Switch to the uIP task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vMACHandleTask( void *pvParameters ) -{ -unsigned long i; -unsigned long ulLength, ulInt; -unsigned long *pulBuffer; -static unsigned long ulNextRxBuffer = 0; - - for( ;; ) - { - /* Wait for something to do. */ - xSemaphoreTake( xMACInterruptSemaphore, portMAX_DELAY ); - - while( ( ulInt = ( EthernetIntStatus( ETH_BASE, pdFALSE ) & ETH_INT_RX ) ) != 0 ) - { - ulLength = HWREG( ETH_BASE + MAC_O_DATA ); - - /* Leave room at the start of the buffer for the size. */ - pulBuffer = ( unsigned long * ) &( ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - *pulBuffer = ( ulLength >> 16 ); - - /* Get the size of the data. */ - pulBuffer = ( unsigned long * ) &( ucRxBuffers[ ulNextRxBuffer ][ 4 ] ); - ulLength &= 0xFFFF; - - if( ulLength > 4 ) - { - ulLength -= 4; - - if( ulLength >= UIP_BUFSIZE ) - { - /* The data won't fit in our buffer. Ensure we don't - try to write into the buffer. */ - ulLength = 0; - } - - /* Read out the data into our buffer. */ - for( i = 0; i < ulLength; i += sizeof( unsigned long ) ) - { - *pulBuffer = HWREG( ETH_BASE + MAC_O_DATA ); - pulBuffer++; - } - - /* Store the length of the data into the separate array. */ - ulRxLength[ ulNextRxBuffer ] = ulLength; - - /* Use the next buffer the next time through. */ - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGive( xEMACSemaphore ); - } - } - - EthernetIntEnable( ETH_BASE, ETH_INT_RX ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h deleted file mode 100644 index a49b59828..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE vInitEMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void vIncrementTxLength(unsigned long ulLength); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void vInitialiseSend(void); -unsigned int Rdy4Tx(void); -void vSendBufferToMAC(void); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index c45a19a69..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,293 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - if( uxParTestGetLED( 0 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, - "LED"\ - "

"\ - "", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index 7348902e7..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, - 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, - 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, 0x73, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x25, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, - 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x75, 0x6e, - 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 4e997a42d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -#include "lcd_message.h" - -/* uip includes. */ -#include "hw_types.h" - -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "hw_memmap.h" -#include "lmi_flash.h" -#include "sysctl.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* IP address configuration. */ -#define uipIP_ADDR0 192 -#define uipIP_ADDR1 168 -#define uipIP_ADDR2 0 -#define uipIP_ADDR3 201 - -/* Netmask configuration. */ -#define uipNETMASK_0 255 -#define uipNETMASK_1 255 -#define uipNETMASK_2 255 -#define uipNETMASK_3 0 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 100 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} - - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR )( void ); - - /* Enable/Reset the Ethernet Controller */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_ETH ); - SysCtlPeripheralReset( SYSCTL_PERIPH_ETH ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, uipNETMASK_0, uipNETMASK_1, uipNETMASK_2, uipNETMASK_3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - while( vInitEMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - prvSetMACAddress(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - vInitialiseSend(); - vIncrementTxLength( uip_len ); - vSendBufferToMAC(); - vInitialiseSend(); - vIncrementTxLength( uip_len ); - vSendBufferToMAC(); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -unsigned long ulUser0, ulUser1; -unsigned char pucMACArray[8]; -struct uip_eth_addr xAddr; - - /* Get the device MAC address from flash */ - FlashUserGet(&ulUser0, &ulUser1); - - /* Convert the MAC address from flash into sequence of bytes. */ - pucMACArray[0] = ((ulUser0 >> 0) & 0xff); - pucMACArray[1] = ((ulUser0 >> 8) & 0xff); - pucMACArray[2] = ((ulUser0 >> 16) & 0xff); - pucMACArray[3] = ((ulUser1 >> 0) & 0xff); - pucMACArray[4] = ((ulUser1 >> 8) & 0xff); - pucMACArray[5] = ((ulUser1 >> 16) & 0xff); - - /* Program the MAC address. */ - EthernetMACAddrSet(ETH_BASE, pucMACArray); - - xAddr.addr[ 0 ] = pucMACArray[0]; - xAddr.addr[ 1 ] = pucMACArray[1]; - xAddr.addr[ 2 ] = pucMACArray[2]; - xAddr.addr[ 3 ] = pucMACArray[3]; - xAddr.addr[ 4 ] = pucMACArray[4]; - xAddr.addr[ 5 ] = pucMACArray[5]; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xOLEDQueue; -xOLEDMessage xOLEDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 0, 1 ); - } - else - { - vParTestSetLED( 0, 0 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xOLEDMessage.pcMessage = cMessageForDisplay; - xQueueSend( xOLEDQueue, &xOLEDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h deleted file mode 100644 index 664077d89..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1500 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject deleted file mode 100644 index 002260673..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?xml version="1.0" encoding="UTF-8"?> -<TargetConfig> -<Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/> -<infoList vendor="NXP"> -<info chip="LPC1768" match_id="0x00013f37,0x26013F37" name="LPC1768" package="lpc17_lqfp100.xml"> -<chip> -<name>LPC1768</name> -<family>LPC17xx</family> -<vendor>NXP (formerly Philips)</vendor> -<reset board="None" core="Real" sys="Real"/> -<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/> -<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> -<memory id="RAM" type="RAM"/> -<memory id="Periph" is_volatile="true" type="Peripheral"/> -<memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/> -<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/> -<memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/> -<prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> -<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> -<peripheralInstance derived_from="SVD_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;0x1" id="TIMER0" location="0x40004000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;0x1" id="TIMER1" location="0x40008000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;0x1" id="TIMER2" location="0x40090000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;0x1" id="TIMER3" location="0x40094000"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO0" location="0x2009C000"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO1" location="0x2009C020"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO2" location="0x2009C040"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO3" location="0x2009C060"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO4" location="0x2009C080"/> -<peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;0x08000000" id="I2S" location="0x400A8000"/> -<peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/> -<peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;0x2=2" id="DAC" location="0x4008C000"/> -<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;0x1" id="UART0" location="0x4000C000"/> -<peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;0x1" id="UART1" location="0x40010000"/> -<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;0x1" id="UART2" location="0x40098000"/> -<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;0x1" id="UART3" location="0x4009C000"/> -<peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;0x1" id="SPI" location="0x40020000"/> -<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;0x1" id="SSP0" location="0x40088000"/> -<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;0x1" id="SSP1" location="0x40030000"/> -<peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;0x1" id="ADC" location="0x40034000"/> -<peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/> -<peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/> -<peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x12=0x12" id="USBDEV" location="0x5000C200"/> -<peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;0x1" id="PWM" location="0x40018000"/> -<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;0x1" id="I2C0" location="0x4001C000"/> -<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;0x1" id="I2C1" location="0x4005C000"/> -<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;0x1" id="I2C2" location="0x400A0000"/> -<peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;0x1" id="DMA" location="0x50004000"/> -<peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;0x1" id="ENET" location="0x50000000"/> -<peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/> -<peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/> -<peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;0x1" id="QEI" location="0x400bc000"/> -<peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x11=0x11" id="USBHOST" location="0x5000C000"/> -<peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/> -<peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;0x1" id="RTC" location="0x40024000"/> -<peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/> -<peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/> -<peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/> -<peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/> -<memoryInstance derived_from="RAM" id="CANAccFilterRAM" location="0x40038000" size="0x800"/> -<peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANAFR" location="0x4003C000"/> -<peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCEN" location="0x40040000"/> -<peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/> -<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1" id="CANCON1" location="0x40044000"/> -<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCON2" location="0x40048000"/> -</chip> -<processor> -<name gcc_name="cortex-m3">Cortex-M3</name> -<family>Cortex-M</family> -</processor> -<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> -</info> -</infoList> -</TargetConfig> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project deleted file mode 100644 index 51c0342cf..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project +++ /dev/null @@ -1,81 +0,0 @@ - - - RTOSDemo_RDB1768 - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo_RDB1768/Debug} - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml deleted file mode 100644 index 05c347560..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat deleted file mode 100644 index a189206bf..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat +++ /dev/null @@ -1,50 +0,0 @@ -REM This file should be executed from the command line prior to the first -REM build. It will be necessary to refresh the Eclipse project once the -REM .bat file has been executed (normally just press F5 to refresh). - -REM Copies all the required files from their location within the standard -REM FreeRTOS directory structure to under the Eclipse project directory. -REM This permits the Eclipse project to be used in 'managed' mode and without -REM having to setup any linked resources. - -REM Have the files already been copied? -IF EXIST src\FreeRTOS Goto END - - REM Create the required directory structure. - MD src\FreeRTOS - MD src\FreeRTOS\include - MD src\FreeRTOS\portable\GCC\ARM_CM3 - MD src\FreeRTOS\portable\MemMang - MD "src\Common Demo Tasks" - MD "src\Common Demo Tasks\include" - - REM Copy the core kernel files. - copy ..\..\Source\tasks.c src\FreeRTOS - copy ..\..\Source\queue.c src\FreeRTOS - copy ..\..\Source\list.c src\FreeRTOS - - REM Copy the common header files - - copy ..\..\Source\include\*.* src\FreeRTOS\include - - REM Copy the portable layer files - copy ..\..\Source\portable\GCC\ARM_CM3\*.* src\FreeRTOS\portable\GCC\ARM_CM3 - - REM Copy the basic memory allocation files - copy ..\..\Source\portable\MemMang\heap_4.c src\FreeRTOS\portable\MemMang - - REM Copy the files that define the common demo tasks. - copy ..\Common\minimal\BlockQ.c "src\Common Demo Tasks" - copy ..\Common\minimal\blocktim.c "src\Common Demo Tasks" - copy ..\Common\minimal\flash.c "src\Common Demo Tasks" - copy ..\Common\minimal\GenQTest.c "src\Common Demo Tasks" - copy ..\Common\minimal\integer.c "src\Common Demo Tasks" - copy ..\Common\minimal\PollQ.c "src\Common Demo Tasks" - copy ..\Common\minimal\QPeek.c "src\Common Demo Tasks" - copy ..\Common\minimal\recmutex.c "src\Common Demo Tasks" - copy ..\Common\minimal\semtest.c "src\Common Demo Tasks" - - REM Copy the common demo file headers. - copy ..\Common\include\*.* "src\Common Demo Tasks\include" - -: END \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h deleted file mode 100644 index 0562fca5e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* - * The following #error directive is to remind users that a batch file must be - * executed prior to this project being built. The batch file *cannot* be - * executed from within the IDE! Once it has been executed, re-open or refresh - * the Eclipse project and remove the #error line below. - */ -#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. - -#include "LPC17xx.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configMAX_PRIORITIES ( 5 ) -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 100000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 - -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 32 priority levels */ -#endif - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) ) - -/* Priorities passed to NVIC_SetPriority() do not require shifting as the -function does the shifting itself. Note these priorities need to be equal to -or lower than configMAX_SYSCALL_INTERRUPT_PRIORITY - therefore the numeric -value needs to be equal to or greater than 5 (on the Cortex-M3 the lower the -numeric value the higher the interrupt priority). */ -#define configEMAC_INTERRUPT_PRIORITY 5 -#define configUSB_INTERRUPT_PRIORITY 6 - - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -extern void vConfigureTimerForRunTimeStats( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() LPC_TIM0->TC - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h deleted file mode 100644 index 8c4050b3a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h +++ /dev/null @@ -1,1035 +0,0 @@ -/**************************************************************************//** - * @file LPC17xx.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File for - * NXP LPC17xx Device Series - * @version: V1.09 - * @date: 17. March 2010 - - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __LPC17xx_H__ -#define __LPC17xx_H__ - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** LPC17xx Specific Interrupt Numbers *******************************************************/ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ - TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ - TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ - TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ - UART0_IRQn = 5, /*!< UART0 Interrupt */ - UART1_IRQn = 6, /*!< UART1 Interrupt */ - UART2_IRQn = 7, /*!< UART2 Interrupt */ - UART3_IRQn = 8, /*!< UART3 Interrupt */ - PWM1_IRQn = 9, /*!< PWM1 Interrupt */ - I2C0_IRQn = 10, /*!< I2C0 Interrupt */ - I2C1_IRQn = 11, /*!< I2C1 Interrupt */ - I2C2_IRQn = 12, /*!< I2C2 Interrupt */ - SPI_IRQn = 13, /*!< SPI Interrupt */ - SSP0_IRQn = 14, /*!< SSP0 Interrupt */ - SSP1_IRQn = 15, /*!< SSP1 Interrupt */ - PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ - RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ - EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ - EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ - EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ - EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ - ADC_IRQn = 22, /*!< A/D Converter Interrupt */ - BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ - USB_IRQn = 24, /*!< USB Interrupt */ - CAN_IRQn = 25, /*!< CAN Interrupt */ - DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ - I2S_IRQn = 27, /*!< I2S Interrupt */ - ENET_IRQn = 28, /*!< Ethernet Interrupt */ - RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ - MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ - QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ - PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ - USBActivity_IRQn = 33, /* USB Activity interrupt */ - CANActivity_IRQn = 34, /* CAN Activity interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -#include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "system_LPC17xx.h" /* System Header */ - - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ - -#if defined ( __CC_ARM ) -#pragma anon_unions -#endif - -/*------------- System Control (SC) ------------------------------------------*/ -typedef struct -{ - __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ - uint32_t RESERVED0[31]; - __IO uint32_t PLL0CON; /* Clocking and Power Control */ - __IO uint32_t PLL0CFG; - __I uint32_t PLL0STAT; - __O uint32_t PLL0FEED; - uint32_t RESERVED1[4]; - __IO uint32_t PLL1CON; - __IO uint32_t PLL1CFG; - __I uint32_t PLL1STAT; - __O uint32_t PLL1FEED; - uint32_t RESERVED2[4]; - __IO uint32_t PCON; - __IO uint32_t PCONP; - uint32_t RESERVED3[15]; - __IO uint32_t CCLKCFG; - __IO uint32_t USBCLKCFG; - __IO uint32_t CLKSRCSEL; - __IO uint32_t CANSLEEPCLR; - __IO uint32_t CANWAKEFLAGS; - uint32_t RESERVED4[10]; - __IO uint32_t EXTINT; /* External Interrupts */ - uint32_t RESERVED5; - __IO uint32_t EXTMODE; - __IO uint32_t EXTPOLAR; - uint32_t RESERVED6[12]; - __IO uint32_t RSID; /* Reset */ - uint32_t RESERVED7[7]; - __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ - __IO uint32_t IRCTRIM; /* Clock Dividers */ - __IO uint32_t PCLKSEL0; - __IO uint32_t PCLKSEL1; - uint32_t RESERVED8[4]; - __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ - __IO uint32_t DMAREQSEL; - __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ - } LPC_SC_TypeDef; - -/*------------- Pin Connect Block (PINCON) -----------------------------------*/ -typedef struct -{ - __IO uint32_t PINSEL0; - __IO uint32_t PINSEL1; - __IO uint32_t PINSEL2; - __IO uint32_t PINSEL3; - __IO uint32_t PINSEL4; - __IO uint32_t PINSEL5; - __IO uint32_t PINSEL6; - __IO uint32_t PINSEL7; - __IO uint32_t PINSEL8; - __IO uint32_t PINSEL9; - __IO uint32_t PINSEL10; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE0; - __IO uint32_t PINMODE1; - __IO uint32_t PINMODE2; - __IO uint32_t PINMODE3; - __IO uint32_t PINMODE4; - __IO uint32_t PINMODE5; - __IO uint32_t PINMODE6; - __IO uint32_t PINMODE7; - __IO uint32_t PINMODE8; - __IO uint32_t PINMODE9; - __IO uint32_t PINMODE_OD0; - __IO uint32_t PINMODE_OD1; - __IO uint32_t PINMODE_OD2; - __IO uint32_t PINMODE_OD3; - __IO uint32_t PINMODE_OD4; - __IO uint32_t I2CPADCFG; -} LPC_PINCON_TypeDef; - -/*------------- General Purpose Input/Output (GPIO) --------------------------*/ -typedef struct -{ - union { - __IO uint32_t FIODIR; - struct { - __IO uint16_t FIODIRL; - __IO uint16_t FIODIRH; - }; - struct { - __IO uint8_t FIODIR0; - __IO uint8_t FIODIR1; - __IO uint8_t FIODIR2; - __IO uint8_t FIODIR3; - }; - }; - uint32_t RESERVED0[3]; - union { - __IO uint32_t FIOMASK; - struct { - __IO uint16_t FIOMASKL; - __IO uint16_t FIOMASKH; - }; - struct { - __IO uint8_t FIOMASK0; - __IO uint8_t FIOMASK1; - __IO uint8_t FIOMASK2; - __IO uint8_t FIOMASK3; - }; - }; - union { - __IO uint32_t FIOPIN; - struct { - __IO uint16_t FIOPINL; - __IO uint16_t FIOPINH; - }; - struct { - __IO uint8_t FIOPIN0; - __IO uint8_t FIOPIN1; - __IO uint8_t FIOPIN2; - __IO uint8_t FIOPIN3; - }; - }; - union { - __IO uint32_t FIOSET; - struct { - __IO uint16_t FIOSETL; - __IO uint16_t FIOSETH; - }; - struct { - __IO uint8_t FIOSET0; - __IO uint8_t FIOSET1; - __IO uint8_t FIOSET2; - __IO uint8_t FIOSET3; - }; - }; - union { - __O uint32_t FIOCLR; - struct { - __O uint16_t FIOCLRL; - __O uint16_t FIOCLRH; - }; - struct { - __O uint8_t FIOCLR0; - __O uint8_t FIOCLR1; - __O uint8_t FIOCLR2; - __O uint8_t FIOCLR3; - }; - }; -} LPC_GPIO_TypeDef; - -typedef struct -{ - __I uint32_t IntStatus; - __I uint32_t IO0IntStatR; - __I uint32_t IO0IntStatF; - __O uint32_t IO0IntClr; - __IO uint32_t IO0IntEnR; - __IO uint32_t IO0IntEnF; - uint32_t RESERVED0[3]; - __I uint32_t IO2IntStatR; - __I uint32_t IO2IntStatF; - __O uint32_t IO2IntClr; - __IO uint32_t IO2IntEnR; - __IO uint32_t IO2IntEnF; -} LPC_GPIOINT_TypeDef; - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - uint32_t RESERVED0[2]; - __IO uint32_t EMR; - uint32_t RESERVED1[12]; - __IO uint32_t CTCR; -} LPC_TIM_TypeDef; - -/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - __I uint32_t CR2; - __I uint32_t CR3; - uint32_t RESERVED0; - __IO uint32_t MR4; - __IO uint32_t MR5; - __IO uint32_t MR6; - __IO uint32_t PCR; - __IO uint32_t LER; - uint32_t RESERVED1[7]; - __IO uint32_t CTCR; -} LPC_PWM_TypeDef; - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __I uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[39]; - __IO uint32_t FIFOLVL; -} LPC_UART_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __I uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[39]; - __IO uint32_t FIFOLVL; -} LPC_UART0_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[3]; - __IO uint8_t MCR; - uint8_t RESERVED2[3]; - __I uint8_t LSR; - uint8_t RESERVED3[3]; - __I uint8_t MSR; - uint8_t RESERVED4[3]; - __IO uint8_t SCR; - uint8_t RESERVED5[3]; - __IO uint32_t ACR; - uint32_t RESERVED6; - __IO uint32_t FDR; - uint32_t RESERVED7; - __IO uint8_t TER; - uint8_t RESERVED8[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED9[3]; - __IO uint8_t ADRMATCH; - uint8_t RESERVED10[3]; - __IO uint8_t RS485DLY; - uint8_t RESERVED11[3]; - __IO uint32_t FIFOLVL; -} LPC_UART1_TypeDef; - -/*------------- Serial Peripheral Interface (SPI) ----------------------------*/ -typedef struct -{ - __IO uint32_t SPCR; - __I uint32_t SPSR; - __IO uint32_t SPDR; - __IO uint32_t SPCCR; - uint32_t RESERVED0[3]; - __IO uint32_t SPINT; -} LPC_SPI_TypeDef; - -/*------------- Synchronous Serial Communication (SSP) -----------------------*/ -typedef struct -{ - __IO uint32_t CR0; - __IO uint32_t CR1; - __IO uint32_t DR; - __I uint32_t SR; - __IO uint32_t CPSR; - __IO uint32_t IMSC; - __IO uint32_t RIS; - __IO uint32_t MIS; - __IO uint32_t ICR; - __IO uint32_t DMACR; -} LPC_SSP_TypeDef; - -/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ -typedef struct -{ - __IO uint32_t I2CONSET; - __I uint32_t I2STAT; - __IO uint32_t I2DAT; - __IO uint32_t I2ADR0; - __IO uint32_t I2SCLH; - __IO uint32_t I2SCLL; - __O uint32_t I2CONCLR; - __IO uint32_t MMCTRL; - __IO uint32_t I2ADR1; - __IO uint32_t I2ADR2; - __IO uint32_t I2ADR3; - __I uint32_t I2DATA_BUFFER; - __IO uint32_t I2MASK0; - __IO uint32_t I2MASK1; - __IO uint32_t I2MASK2; - __IO uint32_t I2MASK3; -} LPC_I2C_TypeDef; - -/*------------- Inter IC Sound (I2S) -----------------------------------------*/ -typedef struct -{ - __IO uint32_t I2SDAO; - __IO uint32_t I2SDAI; - __O uint32_t I2STXFIFO; - __I uint32_t I2SRXFIFO; - __I uint32_t I2SSTATE; - __IO uint32_t I2SDMA1; - __IO uint32_t I2SDMA2; - __IO uint32_t I2SIRQ; - __IO uint32_t I2STXRATE; - __IO uint32_t I2SRXRATE; - __IO uint32_t I2STXBITRATE; - __IO uint32_t I2SRXBITRATE; - __IO uint32_t I2STXMODE; - __IO uint32_t I2SRXMODE; -} LPC_I2S_TypeDef; - -/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ -typedef struct -{ - __IO uint32_t RICOMPVAL; - __IO uint32_t RIMASK; - __IO uint8_t RICTRL; - uint8_t RESERVED0[3]; - __IO uint32_t RICOUNTER; -} LPC_RIT_TypeDef; - -/*------------- Real-Time Clock (RTC) ----------------------------------------*/ -typedef struct -{ - __IO uint8_t ILR; - uint8_t RESERVED0[7]; - __IO uint8_t CCR; - uint8_t RESERVED1[3]; - __IO uint8_t CIIR; - uint8_t RESERVED2[3]; - __IO uint8_t AMR; - uint8_t RESERVED3[3]; - __I uint32_t CTIME0; - __I uint32_t CTIME1; - __I uint32_t CTIME2; - __IO uint8_t SEC; - uint8_t RESERVED4[3]; - __IO uint8_t MIN; - uint8_t RESERVED5[3]; - __IO uint8_t HOUR; - uint8_t RESERVED6[3]; - __IO uint8_t DOM; - uint8_t RESERVED7[3]; - __IO uint8_t DOW; - uint8_t RESERVED8[3]; - __IO uint16_t DOY; - uint16_t RESERVED9; - __IO uint8_t MONTH; - uint8_t RESERVED10[3]; - __IO uint16_t YEAR; - uint16_t RESERVED11; - __IO uint32_t CALIBRATION; - __IO uint32_t GPREG0; - __IO uint32_t GPREG1; - __IO uint32_t GPREG2; - __IO uint32_t GPREG3; - __IO uint32_t GPREG4; - __IO uint8_t RTC_AUXEN; - uint8_t RESERVED12[3]; - __IO uint8_t RTC_AUX; - uint8_t RESERVED13[3]; - __IO uint8_t ALSEC; - uint8_t RESERVED14[3]; - __IO uint8_t ALMIN; - uint8_t RESERVED15[3]; - __IO uint8_t ALHOUR; - uint8_t RESERVED16[3]; - __IO uint8_t ALDOM; - uint8_t RESERVED17[3]; - __IO uint8_t ALDOW; - uint8_t RESERVED18[3]; - __IO uint16_t ALDOY; - uint16_t RESERVED19; - __IO uint8_t ALMON; - uint8_t RESERVED20[3]; - __IO uint16_t ALYEAR; - uint16_t RESERVED21; -} LPC_RTC_TypeDef; - -/*------------- Watchdog Timer (WDT) -----------------------------------------*/ -typedef struct -{ - __IO uint8_t WDMOD; - uint8_t RESERVED0[3]; - __IO uint32_t WDTC; - __O uint8_t WDFEED; - uint8_t RESERVED1[3]; - __I uint32_t WDTV; - __IO uint32_t WDCLKSEL; -} LPC_WDT_TypeDef; - -/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ -typedef struct -{ - __IO uint32_t ADCR; - __IO uint32_t ADGDR; - uint32_t RESERVED0; - __IO uint32_t ADINTEN; - __I uint32_t ADDR0; - __I uint32_t ADDR1; - __I uint32_t ADDR2; - __I uint32_t ADDR3; - __I uint32_t ADDR4; - __I uint32_t ADDR5; - __I uint32_t ADDR6; - __I uint32_t ADDR7; - __I uint32_t ADSTAT; - __IO uint32_t ADTRM; -} LPC_ADC_TypeDef; - -/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ -typedef struct -{ - __IO uint32_t DACR; - __IO uint32_t DACCTRL; - __IO uint16_t DACCNTVAL; -} LPC_DAC_TypeDef; - -/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ -typedef struct -{ - __I uint32_t MCCON; - __O uint32_t MCCON_SET; - __O uint32_t MCCON_CLR; - __I uint32_t MCCAPCON; - __O uint32_t MCCAPCON_SET; - __O uint32_t MCCAPCON_CLR; - __IO uint32_t MCTIM0; - __IO uint32_t MCTIM1; - __IO uint32_t MCTIM2; - __IO uint32_t MCPER0; - __IO uint32_t MCPER1; - __IO uint32_t MCPER2; - __IO uint32_t MCPW0; - __IO uint32_t MCPW1; - __IO uint32_t MCPW2; - __IO uint32_t MCDEADTIME; - __IO uint32_t MCCCP; - __IO uint32_t MCCR0; - __IO uint32_t MCCR1; - __IO uint32_t MCCR2; - __I uint32_t MCINTEN; - __O uint32_t MCINTEN_SET; - __O uint32_t MCINTEN_CLR; - __I uint32_t MCCNTCON; - __O uint32_t MCCNTCON_SET; - __O uint32_t MCCNTCON_CLR; - __I uint32_t MCINTFLAG; - __O uint32_t MCINTFLAG_SET; - __O uint32_t MCINTFLAG_CLR; - __O uint32_t MCCAP_CLR; -} LPC_MCPWM_TypeDef; - -/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ -typedef struct -{ - __O uint32_t QEICON; - __I uint32_t QEISTAT; - __IO uint32_t QEICONF; - __I uint32_t QEIPOS; - __IO uint32_t QEIMAXPOS; - __IO uint32_t CMPOS0; - __IO uint32_t CMPOS1; - __IO uint32_t CMPOS2; - __I uint32_t INXCNT; - __IO uint32_t INXCMP; - __IO uint32_t QEILOAD; - __I uint32_t QEITIME; - __I uint32_t QEIVEL; - __I uint32_t QEICAP; - __IO uint32_t VELCOMP; - __IO uint32_t FILTER; - uint32_t RESERVED0[998]; - __O uint32_t QEIIEC; - __O uint32_t QEIIES; - __I uint32_t QEIINTSTAT; - __I uint32_t QEIIE; - __O uint32_t QEICLR; - __O uint32_t QEISET; -} LPC_QEI_TypeDef; - -/*------------- Controller Area Network (CAN) --------------------------------*/ -typedef struct -{ - __IO uint32_t mask[512]; /* ID Masks */ -} LPC_CANAF_RAM_TypeDef; - -typedef struct /* Acceptance Filter Registers */ -{ - __IO uint32_t AFMR; - __IO uint32_t SFF_sa; - __IO uint32_t SFF_GRP_sa; - __IO uint32_t EFF_sa; - __IO uint32_t EFF_GRP_sa; - __IO uint32_t ENDofTable; - __I uint32_t LUTerrAd; - __I uint32_t LUTerr; - __IO uint32_t FCANIE; - __IO uint32_t FCANIC0; - __IO uint32_t FCANIC1; -} LPC_CANAF_TypeDef; - -typedef struct /* Central Registers */ -{ - __I uint32_t CANTxSR; - __I uint32_t CANRxSR; - __I uint32_t CANMSR; -} LPC_CANCR_TypeDef; - -typedef struct /* Controller Registers */ -{ - __IO uint32_t MOD; - __O uint32_t CMR; - __IO uint32_t GSR; - __I uint32_t ICR; - __IO uint32_t IER; - __IO uint32_t BTR; - __IO uint32_t EWL; - __I uint32_t SR; - __IO uint32_t RFS; - __IO uint32_t RID; - __IO uint32_t RDA; - __IO uint32_t RDB; - __IO uint32_t TFI1; - __IO uint32_t TID1; - __IO uint32_t TDA1; - __IO uint32_t TDB1; - __IO uint32_t TFI2; - __IO uint32_t TID2; - __IO uint32_t TDA2; - __IO uint32_t TDB2; - __IO uint32_t TFI3; - __IO uint32_t TID3; - __IO uint32_t TDA3; - __IO uint32_t TDB3; -} LPC_CAN_TypeDef; - -/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ -typedef struct /* Common Registers */ -{ - __I uint32_t DMACIntStat; - __I uint32_t DMACIntTCStat; - __O uint32_t DMACIntTCClear; - __I uint32_t DMACIntErrStat; - __O uint32_t DMACIntErrClr; - __I uint32_t DMACRawIntTCStat; - __I uint32_t DMACRawIntErrStat; - __I uint32_t DMACEnbldChns; - __IO uint32_t DMACSoftBReq; - __IO uint32_t DMACSoftSReq; - __IO uint32_t DMACSoftLBReq; - __IO uint32_t DMACSoftLSReq; - __IO uint32_t DMACConfig; - __IO uint32_t DMACSync; -} LPC_GPDMA_TypeDef; - -typedef struct /* Channel Registers */ -{ - __IO uint32_t DMACCSrcAddr; - __IO uint32_t DMACCDestAddr; - __IO uint32_t DMACCLLI; - __IO uint32_t DMACCControl; - __IO uint32_t DMACCConfig; -} LPC_GPDMACH_TypeDef; - -/*------------- Universal Serial Bus (USB) -----------------------------------*/ -typedef struct -{ - __I uint32_t HcRevision; /* USB Host Registers */ - __IO uint32_t HcControl; - __IO uint32_t HcCommandStatus; - __IO uint32_t HcInterruptStatus; - __IO uint32_t HcInterruptEnable; - __IO uint32_t HcInterruptDisable; - __IO uint32_t HcHCCA; - __I uint32_t HcPeriodCurrentED; - __IO uint32_t HcControlHeadED; - __IO uint32_t HcControlCurrentED; - __IO uint32_t HcBulkHeadED; - __IO uint32_t HcBulkCurrentED; - __I uint32_t HcDoneHead; - __IO uint32_t HcFmInterval; - __I uint32_t HcFmRemaining; - __I uint32_t HcFmNumber; - __IO uint32_t HcPeriodicStart; - __IO uint32_t HcLSTreshold; - __IO uint32_t HcRhDescriptorA; - __IO uint32_t HcRhDescriptorB; - __IO uint32_t HcRhStatus; - __IO uint32_t HcRhPortStatus1; - __IO uint32_t HcRhPortStatus2; - uint32_t RESERVED0[40]; - __I uint32_t Module_ID; - - __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ - __IO uint32_t OTGIntEn; - __O uint32_t OTGIntSet; - __O uint32_t OTGIntClr; - __IO uint32_t OTGStCtrl; - __IO uint32_t OTGTmr; - uint32_t RESERVED1[58]; - - __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ - __IO uint32_t USBDevIntEn; - __O uint32_t USBDevIntClr; - __O uint32_t USBDevIntSet; - - __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ - __I uint32_t USBCmdData; - - __I uint32_t USBRxData; /* USB Device Transfer Registers */ - __O uint32_t USBTxData; - __I uint32_t USBRxPLen; - __O uint32_t USBTxPLen; - __IO uint32_t USBCtrl; - __O uint32_t USBDevIntPri; - - __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ - __IO uint32_t USBEpIntEn; - __O uint32_t USBEpIntClr; - __O uint32_t USBEpIntSet; - __O uint32_t USBEpIntPri; - - __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ - __O uint32_t USBEpInd; - __IO uint32_t USBMaxPSize; - - __I uint32_t USBDMARSt; /* USB Device DMA Registers */ - __O uint32_t USBDMARClr; - __O uint32_t USBDMARSet; - uint32_t RESERVED2[9]; - __IO uint32_t USBUDCAH; - __I uint32_t USBEpDMASt; - __O uint32_t USBEpDMAEn; - __O uint32_t USBEpDMADis; - __I uint32_t USBDMAIntSt; - __IO uint32_t USBDMAIntEn; - uint32_t RESERVED3[2]; - __I uint32_t USBEoTIntSt; - __O uint32_t USBEoTIntClr; - __O uint32_t USBEoTIntSet; - __I uint32_t USBNDDRIntSt; - __O uint32_t USBNDDRIntClr; - __O uint32_t USBNDDRIntSet; - __I uint32_t USBSysErrIntSt; - __O uint32_t USBSysErrIntClr; - __O uint32_t USBSysErrIntSet; - uint32_t RESERVED4[15]; - - union { - __I uint32_t I2C_RX; /* USB OTG I2C Registers */ - __O uint32_t I2C_TX; - }; - __I uint32_t I2C_STS; - __IO uint32_t I2C_CTL; - __IO uint32_t I2C_CLKHI; - __O uint32_t I2C_CLKLO; - uint32_t RESERVED5[824]; - - union { - __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ - __IO uint32_t OTGClkCtrl; - }; - union { - __I uint32_t USBClkSt; - __I uint32_t OTGClkSt; - }; -} LPC_USB_TypeDef; - -/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ -typedef struct -{ - __IO uint32_t MAC1; /* MAC Registers */ - __IO uint32_t MAC2; - __IO uint32_t IPGT; - __IO uint32_t IPGR; - __IO uint32_t CLRT; - __IO uint32_t MAXF; - __IO uint32_t SUPP; - __IO uint32_t TEST; - __IO uint32_t MCFG; - __IO uint32_t MCMD; - __IO uint32_t MADR; - __O uint32_t MWTD; - __I uint32_t MRDD; - __I uint32_t MIND; - uint32_t RESERVED0[2]; - __IO uint32_t SA0; - __IO uint32_t SA1; - __IO uint32_t SA2; - uint32_t RESERVED1[45]; - __IO uint32_t Command; /* Control Registers */ - __I uint32_t Status; - __IO uint32_t RxDescriptor; - __IO uint32_t RxStatus; - __IO uint32_t RxDescriptorNumber; - __I uint32_t RxProduceIndex; - __IO uint32_t RxConsumeIndex; - __IO uint32_t TxDescriptor; - __IO uint32_t TxStatus; - __IO uint32_t TxDescriptorNumber; - __IO uint32_t TxProduceIndex; - __I uint32_t TxConsumeIndex; - uint32_t RESERVED2[10]; - __I uint32_t TSV0; - __I uint32_t TSV1; - __I uint32_t RSV; - uint32_t RESERVED3[3]; - __IO uint32_t FlowControlCounter; - __I uint32_t FlowControlStatus; - uint32_t RESERVED4[34]; - __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ - __IO uint32_t RxFilterWoLStatus; - __IO uint32_t RxFilterWoLClear; - uint32_t RESERVED5; - __IO uint32_t HashFilterL; - __IO uint32_t HashFilterH; - uint32_t RESERVED6[882]; - __I uint32_t IntStatus; /* Module Control Registers */ - __IO uint32_t IntEnable; - __O uint32_t IntClear; - __O uint32_t IntSet; - uint32_t RESERVED7; - __IO uint32_t PowerDown; - uint32_t RESERVED8; - __IO uint32_t Module_ID; -} LPC_EMAC_TypeDef; - -#if defined ( __CC_ARM ) -#pragma no_anon_unions -#endif - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/* Base addresses */ -#define LPC_FLASH_BASE (0x00000000UL) -#define LPC_RAM_BASE (0x10000000UL) -#define LPC_GPIO_BASE (0x2009C000UL) -#define LPC_APB0_BASE (0x40000000UL) -#define LPC_APB1_BASE (0x40080000UL) -#define LPC_AHB_BASE (0x50000000UL) -#define LPC_CM3_BASE (0xE0000000UL) - -/* APB0 peripherals */ -#define LPC_WDT_BASE (LPC_APB0_BASE + 0x00000) -#define LPC_TIM0_BASE (LPC_APB0_BASE + 0x04000) -#define LPC_TIM1_BASE (LPC_APB0_BASE + 0x08000) -#define LPC_UART0_BASE (LPC_APB0_BASE + 0x0C000) -#define LPC_UART1_BASE (LPC_APB0_BASE + 0x10000) -#define LPC_PWM1_BASE (LPC_APB0_BASE + 0x18000) -#define LPC_I2C0_BASE (LPC_APB0_BASE + 0x1C000) -#define LPC_SPI_BASE (LPC_APB0_BASE + 0x20000) -#define LPC_RTC_BASE (LPC_APB0_BASE + 0x24000) -#define LPC_GPIOINT_BASE (LPC_APB0_BASE + 0x28080) -#define LPC_PINCON_BASE (LPC_APB0_BASE + 0x2C000) -#define LPC_SSP1_BASE (LPC_APB0_BASE + 0x30000) -#define LPC_ADC_BASE (LPC_APB0_BASE + 0x34000) -#define LPC_CANAF_RAM_BASE (LPC_APB0_BASE + 0x38000) -#define LPC_CANAF_BASE (LPC_APB0_BASE + 0x3C000) -#define LPC_CANCR_BASE (LPC_APB0_BASE + 0x40000) -#define LPC_CAN1_BASE (LPC_APB0_BASE + 0x44000) -#define LPC_CAN2_BASE (LPC_APB0_BASE + 0x48000) -#define LPC_I2C1_BASE (LPC_APB0_BASE + 0x5C000) - -/* APB1 peripherals */ -#define LPC_SSP0_BASE (LPC_APB1_BASE + 0x08000) -#define LPC_DAC_BASE (LPC_APB1_BASE + 0x0C000) -#define LPC_TIM2_BASE (LPC_APB1_BASE + 0x10000) -#define LPC_TIM3_BASE (LPC_APB1_BASE + 0x14000) -#define LPC_UART2_BASE (LPC_APB1_BASE + 0x18000) -#define LPC_UART3_BASE (LPC_APB1_BASE + 0x1C000) -#define LPC_I2C2_BASE (LPC_APB1_BASE + 0x20000) -#define LPC_I2S_BASE (LPC_APB1_BASE + 0x28000) -#define LPC_RIT_BASE (LPC_APB1_BASE + 0x30000) -#define LPC_MCPWM_BASE (LPC_APB1_BASE + 0x38000) -#define LPC_QEI_BASE (LPC_APB1_BASE + 0x3C000) -#define LPC_SC_BASE (LPC_APB1_BASE + 0x7C000) - -/* AHB peripherals */ -#define LPC_EMAC_BASE (LPC_AHB_BASE + 0x00000) -#define LPC_GPDMA_BASE (LPC_AHB_BASE + 0x04000) -#define LPC_GPDMACH0_BASE (LPC_AHB_BASE + 0x04100) -#define LPC_GPDMACH1_BASE (LPC_AHB_BASE + 0x04120) -#define LPC_GPDMACH2_BASE (LPC_AHB_BASE + 0x04140) -#define LPC_GPDMACH3_BASE (LPC_AHB_BASE + 0x04160) -#define LPC_GPDMACH4_BASE (LPC_AHB_BASE + 0x04180) -#define LPC_GPDMACH5_BASE (LPC_AHB_BASE + 0x041A0) -#define LPC_GPDMACH6_BASE (LPC_AHB_BASE + 0x041C0) -#define LPC_GPDMACH7_BASE (LPC_AHB_BASE + 0x041E0) -#define LPC_USB_BASE (LPC_AHB_BASE + 0x0C000) - -/* GPIOs */ -#define LPC_GPIO0_BASE (LPC_GPIO_BASE + 0x00000) -#define LPC_GPIO1_BASE (LPC_GPIO_BASE + 0x00020) -#define LPC_GPIO2_BASE (LPC_GPIO_BASE + 0x00040) -#define LPC_GPIO3_BASE (LPC_GPIO_BASE + 0x00060) -#define LPC_GPIO4_BASE (LPC_GPIO_BASE + 0x00080) - - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define LPC_SC ((LPC_SC_TypeDef *) LPC_SC_BASE ) -#define LPC_GPIO0 ((LPC_GPIO_TypeDef *) LPC_GPIO0_BASE ) -#define LPC_GPIO1 ((LPC_GPIO_TypeDef *) LPC_GPIO1_BASE ) -#define LPC_GPIO2 ((LPC_GPIO_TypeDef *) LPC_GPIO2_BASE ) -#define LPC_GPIO3 ((LPC_GPIO_TypeDef *) LPC_GPIO3_BASE ) -#define LPC_GPIO4 ((LPC_GPIO_TypeDef *) LPC_GPIO4_BASE ) -#define LPC_WDT ((LPC_WDT_TypeDef *) LPC_WDT_BASE ) -#define LPC_TIM0 ((LPC_TIM_TypeDef *) LPC_TIM0_BASE ) -#define LPC_TIM1 ((LPC_TIM_TypeDef *) LPC_TIM1_BASE ) -#define LPC_TIM2 ((LPC_TIM_TypeDef *) LPC_TIM2_BASE ) -#define LPC_TIM3 ((LPC_TIM_TypeDef *) LPC_TIM3_BASE ) -#define LPC_RIT ((LPC_RIT_TypeDef *) LPC_RIT_BASE ) -#define LPC_UART0 ((LPC_UART0_TypeDef *) LPC_UART0_BASE ) -#define LPC_UART1 ((LPC_UART1_TypeDef *) LPC_UART1_BASE ) -#define LPC_UART2 ((LPC_UART_TypeDef *) LPC_UART2_BASE ) -#define LPC_UART3 ((LPC_UART_TypeDef *) LPC_UART3_BASE ) -#define LPC_PWM1 ((LPC_PWM_TypeDef *) LPC_PWM1_BASE ) -#define LPC_I2C0 ((LPC_I2C_TypeDef *) LPC_I2C0_BASE ) -#define LPC_I2C1 ((LPC_I2C_TypeDef *) LPC_I2C1_BASE ) -#define LPC_I2C2 ((LPC_I2C_TypeDef *) LPC_I2C2_BASE ) -#define LPC_I2S ((LPC_I2S_TypeDef *) LPC_I2S_BASE ) -#define LPC_SPI ((LPC_SPI_TypeDef *) LPC_SPI_BASE ) -#define LPC_RTC ((LPC_RTC_TypeDef *) LPC_RTC_BASE ) -#define LPC_GPIOINT ((LPC_GPIOINT_TypeDef *) LPC_GPIOINT_BASE ) -#define LPC_PINCON ((LPC_PINCON_TypeDef *) LPC_PINCON_BASE ) -#define LPC_SSP0 ((LPC_SSP_TypeDef *) LPC_SSP0_BASE ) -#define LPC_SSP1 ((LPC_SSP_TypeDef *) LPC_SSP1_BASE ) -#define LPC_ADC ((LPC_ADC_TypeDef *) LPC_ADC_BASE ) -#define LPC_DAC ((LPC_DAC_TypeDef *) LPC_DAC_BASE ) -#define LPC_CANAF_RAM ((LPC_CANAF_RAM_TypeDef *) LPC_CANAF_RAM_BASE) -#define LPC_CANAF ((LPC_CANAF_TypeDef *) LPC_CANAF_BASE ) -#define LPC_CANCR ((LPC_CANCR_TypeDef *) LPC_CANCR_BASE ) -#define LPC_CAN1 ((LPC_CAN_TypeDef *) LPC_CAN1_BASE ) -#define LPC_CAN2 ((LPC_CAN_TypeDef *) LPC_CAN2_BASE ) -#define LPC_MCPWM ((LPC_MCPWM_TypeDef *) LPC_MCPWM_BASE ) -#define LPC_QEI ((LPC_QEI_TypeDef *) LPC_QEI_BASE ) -#define LPC_EMAC ((LPC_EMAC_TypeDef *) LPC_EMAC_BASE ) -#define LPC_GPDMA ((LPC_GPDMA_TypeDef *) LPC_GPDMA_BASE ) -#define LPC_GPDMACH0 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH0_BASE ) -#define LPC_GPDMACH1 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH1_BASE ) -#define LPC_GPDMACH2 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH2_BASE ) -#define LPC_GPDMACH3 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH3_BASE ) -#define LPC_GPDMACH4 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH4_BASE ) -#define LPC_GPDMACH5 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH5_BASE ) -#define LPC_GPDMACH6 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH6_BASE ) -#define LPC_GPDMACH7 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH7_BASE ) -#define LPC_USB ((LPC_USB_TypeDef *) LPC_USB_BASE ) - -#endif // __LPC17xx_H__ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c deleted file mode 100644 index c88ff9a48..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Minimal implementation of a USB serial port, using the CDC class. - This example application simply echoes everything it receives right back - to the host. - - Windows: - Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386 - and store it somewhere (C:\temp is a good place) along with the usbser.inf - file. Then plug in the LPC176x and direct windows to the usbser driver. - Windows then creates an extra COMx port that you can open in a terminal - program, like hyperterminal. [Note for FreeRTOS users - the required .inf - file is included in the project directory.] - - Linux: - The device should be recognised automatically by the cdc_acm driver, - which creates a /dev/ttyACMx device file that acts just like a regular - serial port. - -*/ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -#include -#include - -#include "usbapi.h" -#include "usbdebug.h" -#include "usbstruct.h" - -#include "LPC17xx.h" - -#define usbMAX_SEND_BLOCK ( 20 / portTICK_PERIOD_MS ) -#define usbBUFFER_LEN ( 20 ) - -#define INCREMENT_ECHO_BY 1 -#define BAUD_RATE 115200 - -#define INT_IN_EP 0x81 -#define BULK_OUT_EP 0x05 -#define BULK_IN_EP 0x82 - -#define MAX_PACKET_SIZE 64 - -#define LE_WORD(x) ((x)&0xFF),((x)>>8) - -// CDC definitions -#define CS_INTERFACE 0x24 -#define CS_ENDPOINT 0x25 - -#define SET_LINE_CODING 0x20 -#define GET_LINE_CODING 0x21 -#define SET_CONTROL_LINE_STATE 0x22 - -// data structure for GET_LINE_CODING / SET_LINE_CODING class requests -typedef struct { - unsigned long dwDTERate; - unsigned char bCharFormat; - unsigned char bParityType; - unsigned char bDataBits; -} TLineCoding; - -static TLineCoding LineCoding = {115200, 0, 0, 8}; -static unsigned char abBulkBuf[64]; -static unsigned char abClassReqData[8]; - -static QueueHandle_t xRxedChars = NULL, xCharsForTx = NULL; - -// forward declaration of interrupt handler -void USBIntHandler(void); - -static const unsigned char abDescriptors[] = { - -// device descriptor - 0x12, - DESC_DEVICE, - LE_WORD(0x0101), // bcdUSB - 0x02, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - MAX_PACKET_SIZE0, // bMaxPacketSize - LE_WORD(0xFFFF), // idVendor - LE_WORD(0x0005), // idProduct - LE_WORD(0x0100), // bcdDevice - 0x01, // iManufacturer - 0x02, // iProduct - 0x03, // iSerialNumber - 0x01, // bNumConfigurations - -// configuration descriptor - 0x09, - DESC_CONFIGURATION, - LE_WORD(67), // wTotalLength - 0x02, // bNumInterfaces - 0x01, // bConfigurationValue - 0x00, // iConfiguration - 0xC0, // bmAttributes - 0x32, // bMaxPower -// control class interface - 0x09, - DESC_INTERFACE, - 0x00, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x01, // bNumEndPoints - 0x02, // bInterfaceClass - 0x02, // bInterfaceSubClass - 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module - 0x00, // iInterface -// header functional descriptor - 0x05, - CS_INTERFACE, - 0x00, - LE_WORD(0x0110), -// call management functional descriptor - 0x05, - CS_INTERFACE, - 0x01, - 0x01, // bmCapabilities = device handles call management - 0x01, // bDataInterface -// ACM functional descriptor - 0x04, - CS_INTERFACE, - 0x02, - 0x02, // bmCapabilities -// union functional descriptor - 0x05, - CS_INTERFACE, - 0x06, - 0x00, // bMasterInterface - 0x01, // bSlaveInterface0 -// notification EP - 0x07, - DESC_ENDPOINT, - INT_IN_EP, // bEndpointAddress - 0x03, // bmAttributes = intr - LE_WORD(8), // wMaxPacketSize - 0x0A, // bInterval -// data class interface descriptor - 0x09, - DESC_INTERFACE, - 0x01, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x02, // bNumEndPoints - 0x0A, // bInterfaceClass = data - 0x00, // bInterfaceSubClass - 0x00, // bInterfaceProtocol - 0x00, // iInterface -// data EP OUT - 0x07, - DESC_ENDPOINT, - BULK_OUT_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval -// data EP in - 0x07, - DESC_ENDPOINT, - BULK_IN_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval - - // string descriptors - 0x04, - DESC_STRING, - LE_WORD(0x0409), - - 0x0E, - DESC_STRING, - 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0, - - 0x14, - DESC_STRING, - 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0, - - 0x12, - DESC_STRING, - 'D', 0, 'E', 0, 'A', 0, 'D', 0, 'C', 0, '0', 0, 'D', 0, 'E', 0, - -// terminating zero - 0 -}; - - -/** - Local function to handle incoming bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkOut(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - // get data from USB into intermediate buffer - iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf)); - for (i = 0; i < iLen; i++) { - // put into queue - xQueueSendFromISR( xRxedChars, &( abBulkBuf[ i ] ), &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle outgoing bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkIn(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - if (uxQueueMessagesWaitingFromISR( xCharsForTx ) == 0) { - // no more data, disable further NAK interrupts until next USB frame - USBHwNakIntEnable(0); - return; - } - - // get bytes from transmit FIFO into intermediate buffer - for (i = 0; i < MAX_PACKET_SIZE; i++) { - if( xQueueReceiveFromISR( xCharsForTx, ( &abBulkBuf[i] ), &lHigherPriorityTaskWoken ) != pdPASS ) - { - break; - } - } - iLen = i; - - // send over USB - if (iLen > 0) { - USBHwEPWrite(bEP, abBulkBuf, iLen); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle the USB-CDC class requests - - @param [in] pSetup - @param [out] piLen - @param [out] ppbData - */ -static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - switch (pSetup->bRequest) { - - // set line coding - case SET_LINE_CODING: -DBG("SET_LINE_CODING\n"); - memcpy((unsigned char *)&LineCoding, *ppbData, 7); - *piLen = 7; -DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n", - LineCoding.dwDTERate, - LineCoding.bCharFormat, - LineCoding.bParityType, - LineCoding.bDataBits); - break; - - // get line coding - case GET_LINE_CODING: -DBG("GET_LINE_CODING\n"); - *ppbData = (unsigned char *)&LineCoding; - *piLen = 7; - break; - - // set control line state - case SET_CONTROL_LINE_STATE: - // bit0 = DTR, bit = RTS -DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue); - break; - - default: - return FALSE; - } - return TRUE; -} - - -/** - Writes one character to VCOM port - - @param [in] c character to write - @returns character written, or EOF if character could not be written - */ -int VCOM_putchar(int c) -{ -char cc = ( char ) c; - - if( xQueueSend( xCharsForTx, &cc, usbMAX_SEND_BLOCK ) == pdPASS ) - { - return c; - } - else - { - return EOF; - } -} - - -/** - Reads one character from VCOM port - - @returns character read, or EOF if character could not be read - */ -int VCOM_getchar(void) -{ - unsigned char c; - - /* Block the task until a character is available. */ - xQueueReceive( xRxedChars, &c, portMAX_DELAY ); - return c; -} - - -/** - Interrupt handler - - Simply calls the USB ISR - */ -//void USBIntHandler(void) -void USB_IRQHandler(void) -{ - USBHwISR(); -} - - -static void USBFrameHandler(unsigned short wFrame) -{ - ( void ) wFrame; - - if( uxQueueMessagesWaitingFromISR( xCharsForTx ) > 0 ) - { - // data available, enable NAK interrupt on bulk in - USBHwNakIntEnable(INACK_BI); - } -} - -// CodeRed - added CPUcpsie - -unsigned long CPUcpsie(void) -{ - unsigned long ulRet; - - // - // Read PRIMASK and enable interrupts. - // - __asm(" mrs %0, PRIMASK\n" - " cpsie i\n" - " bx lr\n" - : "=r" (ulRet)); - - // - // The return is handled in the inline assembly, but the compiler will - // still complain if there is not an explicit return here (despite the fact - // that this does not result in any code being produced because of the - // naked attribute). - // - return(ulRet); -} - -void vUSBTask( void *pvParameters ) -{ - int c; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - DBG("Initialising USB stack\n"); - - xRxedChars = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - xCharsForTx = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - - if( ( xRxedChars == NULL ) || ( xCharsForTx == NULL ) ) - { - /* Not enough heap available to create the buffer queues, can't do - anything so just delete ourselves. */ - vTaskDelete( NULL ); - } - - - // initialise stack - USBInit(); - - // register descriptors - USBRegisterDescriptors(abDescriptors); - - // register class request handler - USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); - - // register endpoint handlers - USBHwRegisterEPIntHandler(INT_IN_EP, NULL); - USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); - USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); - - // register frame handler - USBHwRegisterFrameHandler(USBFrameHandler); - - // enable bulk-in interrupts on NAKs - USBHwNakIntEnable(INACK_BI); - - DBG("Starting USB communication\n"); - - NVIC_SetPriority( USB_IRQn, configUSB_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( USB_IRQn ); - - // connect to bus - - DBG("Connecting to USB bus\n"); - USBHwConnect(TRUE); - - // echo any character received (do USB stuff in interrupt) - for( ;; ) - { - c = VCOM_getchar(); - if (c != EOF) - { - // Echo character back with INCREMENT_ECHO_BY offset, so for example if - // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back. - VCOM_putchar(c + INCREMENT_ECHO_BY ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h deleted file mode 100644 index 89d36850a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************** - * type.h: Type definition Header file for NXP LPC17xx Family - * Microprocessors - * - * Copyright(C) 2008, NXP Semiconductor - * All rights reserved. - * - * History - * 2008.08.21 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned int BOOL; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -/* Pointer to Function returning Void (any number of parameters) */ -typedef void (*PFV)(); - -#endif /* __TYPE_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h deleted file mode 100644 index 050f0d95b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - @file -*/ - -#include "usbstruct.h" // for TSetupPacket - -/************************************************************************* - USB configuration -**************************************************************************/ - -#define MAX_PACKET_SIZE0 64 /**< maximum packet size for EP 0 */ - -/************************************************************************* - USB hardware interface -**************************************************************************/ - -// endpoint status sent through callback -#define EP_STATUS_DATA (1<<0) /**< EP has data */ -#define EP_STATUS_STALLED (1<<1) /**< EP is stalled */ -#define EP_STATUS_SETUP (1<<2) /**< EP received setup packet */ -#define EP_STATUS_ERROR (1<<3) /**< EP data was overwritten by setup packet */ -#define EP_STATUS_NACKED (1<<4) /**< EP sent NAK */ - -// device status sent through callback -#define DEV_STATUS_CONNECT (1<<0) /**< device just got connected */ -#define DEV_STATUS_SUSPEND (1<<2) /**< device entered suspend state */ -#define DEV_STATUS_RESET (1<<4) /**< device just got reset */ - -// interrupt bits for NACK events in USBHwNakIntEnable -// (these bits conveniently coincide with the LPC176x USB controller bit) -#define INACK_CI (1<<1) /**< interrupt on NACK for control in */ -#define INACK_CO (1<<2) /**< interrupt on NACK for control out */ -#define INACK_II (1<<3) /**< interrupt on NACK for interrupt in */ -#define INACK_IO (1<<4) /**< interrupt on NACK for interrupt out */ -#define INACK_BI (1<<5) /**< interrupt on NACK for bulk in */ -#define INACK_BO (1<<6) /**< interrupt on NACK for bulk out */ - -BOOL USBHwInit (void); -void USBHwISR (void); - -void USBHwNakIntEnable (unsigned char bIntBits); - -void USBHwConnect (BOOL fConnect); - -void USBHwSetAddress (unsigned char bAddr); -void USBHwConfigDevice (BOOL fConfigured); - -// endpoint operations -void USBHwEPConfig (unsigned char bEP, unsigned short wMaxPacketSize); -int USBHwEPRead (unsigned char bEP, unsigned char *pbBuf, int iMaxLen); -int USBHwEPWrite (unsigned char bEP, unsigned char *pbBuf, int iLen); -void USBHwEPStall (unsigned char bEP, BOOL fStall); -unsigned char USBHwEPGetStatus (unsigned char bEP); - -/** Endpoint interrupt handler callback */ -typedef void (TFnEPIntHandler) (unsigned char bEP, unsigned char bEPStatus); -void USBHwRegisterEPIntHandler (unsigned char bEP, TFnEPIntHandler *pfnHandler); - -/** Device status handler callback */ -typedef void (TFnDevIntHandler) (unsigned char bDevStatus); -void USBHwRegisterDevIntHandler (TFnDevIntHandler *pfnHandler); - -/** Frame event handler callback */ -typedef void (TFnFrameHandler)(unsigned short wFrame); -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler); - - -/************************************************************************* - USB application interface -**************************************************************************/ - -// initialise the complete stack, including HW -BOOL USBInit(void); - -/** Request handler callback (standard, vendor, class) */ -typedef BOOL (TFnHandleRequest)(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore); -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler); - -/** Descriptor handler callback */ -typedef BOOL (TFnGetDescriptor)(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); - -/** Default standard request handler */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); - -/** Default EP0 handler */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat); - -/** Descriptor handling */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors); -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c deleted file mode 100644 index 18ff180fe..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Control transfer handler. - - This module handles control transfers and is normally installed on the - endpoint 0 callback. - - Control transfers can be of the following type: - 0 Standard; - 1 Class; - 2 Vendor; - 3 Reserved. - - A callback can be installed for each of these control transfers using - USBRegisterRequestHandler. - When an OUT request arrives, data is collected in the data store provided - with the USBRegisterRequestHandler call. When the transfer is done, the - callback is called. - When an IN request arrives, the callback is called immediately to either - put the control transfer data in the data store, or to get a pointer to - control transfer data. The data is then packetised and sent to the host. -*/ - -#include "usbdebug.h" - -#include "usbstruct.h" -#include "usbapi.h" - - - -#define MAX_CONTROL_SIZE 128 /**< maximum total size of control transfer data */ -#define MAX_REQ_HANDLERS 4 /**< standard, class, vendor, reserved */ - -static TSetupPacket Setup; /**< setup packet */ - -static unsigned char *pbData; /**< pointer to data buffer */ -static int iResidue; /**< remaining bytes in buffer */ -static int iLen; /**< total length of control transfer */ - -/** Array of installed request handler callbacks */ -static TFnHandleRequest *apfnReqHandlers[4] = {NULL, NULL, NULL, NULL}; -/** Array of installed request data pointers */ -static unsigned char *apbDataStore[4] = {NULL, NULL, NULL, NULL}; - -/** - Local function to handle a request by calling one of the installed - request handlers. - - In case of data going from host to device, the data is at *ppbData. - In case of data going from device to host, the handler can either - choose to write its data at *ppbData or update the data pointer. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handles successfully - */ -static BOOL _HandleRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - TFnHandleRequest *pfnHandler; - int iType; - - iType = REQTYPE_GET_TYPE(pSetup->bmRequestType); - pfnHandler = apfnReqHandlers[iType]; - if (pfnHandler == NULL) { - DBG("No handler for reqtype %d\n", iType); - return FALSE; - } - - return pfnHandler(pSetup, piLen, ppbData); -} - - -/** - Local function to stall the control endpoint - - @param [in] bEPStat Endpoint status - */ -static void StallControlPipe(unsigned char bEPStat) -{ - unsigned char *pb; - int i; - - USBHwEPStall(0x80, TRUE); - -// dump setup packet - DBG("STALL on ["); - pb = (unsigned char *)&Setup; - for (i = 0; i < 8; i++) { - DBG(" %02x", *pb++); - } - DBG("] stat=%x\n", bEPStat); -} - - -/** - Sends next chunk of data (possibly 0 bytes) to host - */ -static void DataIn(void) -{ - int iChunk; - - if( MAX_PACKET_SIZE0 < iResidue ) - { - iChunk = MAX_PACKET_SIZE0; - } - else - { - iChunk = iResidue; - } - - USBHwEPWrite(0x80, pbData, iChunk); - pbData += iChunk; - iResidue -= iChunk; -} - - -/** - * Handles IN/OUT transfers on EP0 - * - * @param [in] bEP Endpoint address - * @param [in] bEPStat Endpoint status - */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat) -{ - int iChunk, iType; - - if (bEP == 0x00) { - // OUT transfer - if (bEPStat & EP_STATUS_SETUP) { - // setup packet, reset request message state machine - USBHwEPRead(0x00, (unsigned char *)&Setup, sizeof(Setup)); - DBG("S%x", Setup.bRequest); - - // defaults for data pointer and residue - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - iResidue = Setup.wLength; - iLen = Setup.wLength; - - if ((Setup.wLength == 0) || - (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { - // ask installed handler to process request - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest1 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send smallest of requested and offered length - if( iLen < Setup.wLength ) - { - iResidue = iLen; - } - else - { - iResidue = Setup.wLength; - } - - // send first part (possibly a zero-length status message) - DataIn(); - } - } - else { - if (iResidue > 0) { - // store data - iChunk = USBHwEPRead(0x00, pbData, iResidue); - if (iChunk < 0) { - StallControlPipe(bEPStat); - return; - } - pbData += iChunk; - iResidue -= iChunk; - if (iResidue == 0) { - // received all, send data to handler - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest2 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send status to host - DataIn(); - } - } - else { - // absorb zero-length status message - iChunk = USBHwEPRead(0x00, NULL, 0); - DBG(iChunk > 0 ? "?" : ""); - } - } - } - else if (bEP == 0x80) { - // IN transfer - // send more data if available (possibly a 0-length packet) - DataIn(); - } - else { - ASSERT(FALSE); - } -} - - -/** - Registers a callback for handling requests - - @param [in] iType Type of request, e.g. REQTYPE_TYPE_STANDARD - @param [in] *pfnHandler Callback function pointer - @param [in] *pbDataStore Data storage area for this type of request - */ -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore) -{ - ASSERT(iType >= 0); - ASSERT(iType < 4); - apfnReqHandlers[iType] = pfnHandler; - apbDataStore[iType] = pbDataStore; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h deleted file mode 100644 index 4a14862e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// CodeRed - comment out this printf, as will use real one from stdio.h -// to implement output via semihosting - -//int printf(const char *format, ...); -# include - -#ifdef _DEBUG -#define DBG printf -#define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} -#else -#define DBG(x ...) -#define ASSERT(x) -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c deleted file mode 100644 index 70f8f8653..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c +++ /dev/null @@ -1,526 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB hardware layer - */ - - -#include "usbdebug.h" -#include "usbhw_lpc.h" -#include "usbapi.h" - -#ifdef DEBUG -// comment out the following line if you don't want to use debug LEDs -//#define DEBUG_LED -#endif - -/** Installed device interrupt handler */ -static TFnDevIntHandler *_pfnDevIntHandler = NULL; -/** Installed endpoint interrupt handlers */ -static TFnEPIntHandler *_apfnEPIntHandlers[16]; -/** Installed frame interrupt handlers */ -static TFnFrameHandler *_pfnFrameHandler = NULL; - -/** convert from endpoint address to endpoint index */ -#define EP2IDX(bEP) ((((bEP)&0xF)<<1)|(((bEP)&0x80)>>7)) -/** convert from endpoint index to endpoint address */ -#define IDX2EP(idx) ((((idx)<<7)&0x80)|(((idx)>>1)&0xF)) - - - -/** - Local function to wait for a device interrupt (and clear it) - - @param [in] dwIntr Bitmask of interrupts to wait for - */ -static void Wait4DevInt(unsigned long dwIntr) -{ - // wait for specific interrupt - while ((LPC_USB->USBDevIntSt & dwIntr) != dwIntr); - // clear the interrupt bits - LPC_USB->USBDevIntClr = dwIntr; -} - - -/** - Local function to send a command to the USB protocol engine - - @param [in] bCmd Command to send - */ -static void USBHwCmd(unsigned char bCmd) -{ - // clear CDFULL/CCEMTY - LPC_USB->USBDevIntClr = CDFULL | CCEMTY; - // write command code - LPC_USB->USBCmdCode = 0x00000500 | (bCmd << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command + data to the USB protocol engine - - @param [in] bCmd Command to send - @param [in] bData Data to send - */ -static void USBHwCmdWrite(unsigned char bCmd, unsigned short bData) -{ - // write command code - USBHwCmd(bCmd); - - // write command data - LPC_USB->USBCmdCode = 0x00000100 | (bData << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command to the USB protocol engine and read data - - @param [in] bCmd Command to send - - @return the data - */ -static unsigned char USBHwCmdRead(unsigned char bCmd) -{ - // write command code - USBHwCmd(bCmd); - - // get data - LPC_USB->USBCmdCode = 0x00000200 | (bCmd << 16); - Wait4DevInt(CDFULL); - return LPC_USB->USBCmdData; -} - - -/** - 'Realizes' an endpoint, meaning that buffer space is reserved for - it. An endpoint needs to be realised before it can be used. - - From experiments, it appears that a USB reset causes USBReEP to - re-initialise to 3 (= just the control endpoints). - However, a USB bus reset does not disturb the USBMaxPSize settings. - - @param [in] idx Endpoint index - @param [in] wMaxPSize Maximum packet size for this endpoint - */ -static void USBHwEPRealize(int idx, unsigned short wMaxPSize) -{ - LPC_USB->USBReEP |= (1 << idx); - LPC_USB->USBEpInd = idx; - LPC_USB->USBMaxPSize = wMaxPSize; - Wait4DevInt(EP_RLZED); -} - - -/** - Enables or disables an endpoint - - @param [in] idx Endpoint index - @param [in] fEnable TRUE to enable, FALSE to disable - */ -static void USBHwEPEnable(int idx, BOOL fEnable) -{ - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); -} - - -/** - Configures an endpoint and enables it - - @param [in] bEP Endpoint number - @param [in] wMaxPacketSize Maximum packet size for this EP - */ -void USBHwEPConfig(unsigned char bEP, unsigned short wMaxPacketSize) -{ - int idx; - - idx = EP2IDX(bEP); - - // realise EP - USBHwEPRealize(idx, wMaxPacketSize); - - // enable EP - USBHwEPEnable(idx, TRUE); -} - - -/** - Registers an endpoint event callback - - @param [in] bEP Endpoint number - @param [in] pfnHandler Callback function - */ -void USBHwRegisterEPIntHandler(unsigned char bEP, TFnEPIntHandler *pfnHandler) -{ - int idx; - - idx = EP2IDX(bEP); - - ASSERT(idx<32); - - /* add handler to list of EP handlers */ - _apfnEPIntHandlers[idx / 2] = pfnHandler; - - /* enable EP interrupt */ - LPC_USB->USBEpIntEn |= (1 << idx); - LPC_USB->USBDevIntEn |= EP_SLOW; - - DBG("Registered handler for EP 0x%x\n", bEP); -} - - -/** - Registers an device status callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterDevIntHandler(TFnDevIntHandler *pfnHandler) -{ - _pfnDevIntHandler = pfnHandler; - - // enable device interrupt - LPC_USB->USBDevIntEn |= DEV_STAT; - - DBG("Registered handler for device status\n"); -} - - -/** - Registers the frame callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler) -{ - _pfnFrameHandler = pfnHandler; - - // enable device interrupt - LPC_USB->USBDevIntEn |= FRAME; - - DBG("Registered handler for frame\n"); -} - - -/** - Sets the USB address. - - @param [in] bAddr Device address to set - */ -void USBHwSetAddress(unsigned char bAddr) -{ - USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); -} - - -/** - Connects or disconnects from the USB bus - - @param [in] fConnect If TRUE, connect, otherwise disconnect - */ -void USBHwConnect(BOOL fConnect) -{ - USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); -} - - -/** - Enables interrupt on NAK condition - - For IN endpoints a NAK is generated when the host wants to read data - from the device, but none is available in the endpoint buffer. - For OUT endpoints a NAK is generated when the host wants to write data - to the device, but the endpoint buffer is still full. - - The endpoint interrupt handlers can distinguish regular (ACK) interrupts - from NAK interrupt by checking the bits in their bEPStatus argument. - - @param [in] bIntBits Bitmap indicating which NAK interrupts to enable - */ -void USBHwNakIntEnable(unsigned char bIntBits) -{ - USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); -} - - -/** - Gets the status from a specific endpoint. - - @param [in] bEP Endpoint number - @return Endpoint status byte (containing EP_STATUS_xxx bits) - */ -unsigned char USBHwEPGetStatus(unsigned char bEP) -{ - int idx = EP2IDX(bEP); - - return USBHwCmdRead(CMD_EP_SELECT | idx); -} - - -/** - Sets the stalled property of an endpoint - - @param [in] bEP Endpoint number - @param [in] fStall TRUE to stall, FALSE to unstall - */ -void USBHwEPStall(unsigned char bEP, BOOL fStall) -{ - int idx = EP2IDX(bEP); - - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); -} - - -/** - Writes data to an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iLen Number of bytes to write - - @return TRUE if the data was successfully written or <0 in case of error. -*/ -int USBHwEPWrite(unsigned char bEP, unsigned char *pbBuf, int iLen) -{ - int idx; - - idx = EP2IDX(bEP); - - // set write enable for specific endpoint - LPC_USB->USBCtrl = WR_EN | ((bEP & 0xF) << 2); - - // set packet length - LPC_USB->USBTxPLen = iLen; - - // write data - while (LPC_USB->USBCtrl & WR_EN) { - LPC_USB->USBTxData = (pbBuf[3] << 24) | (pbBuf[2] << 16) | (pbBuf[1] << 8) | pbBuf[0]; - pbBuf += 4; - } - - // select endpoint and validate buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_VALIDATE_BUFFER); - - return iLen; -} - - -/** - Reads data from an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iMaxLen Maximum number of bytes to read - - @return the number of bytes available in the EP (possibly more than iMaxLen), - or <0 in case of error. - */ -int USBHwEPRead(unsigned char bEP, unsigned char *pbBuf, int iMaxLen) -{ - int i, idx; - unsigned long dwData, dwLen; - - idx = EP2IDX(bEP); - - // set read enable bit for specific endpoint - LPC_USB->USBCtrl = RD_EN | ((bEP & 0xF) << 2); - - // wait for PKT_RDY - do { - dwLen = LPC_USB->USBRxPLen; - } while ((dwLen & PKT_RDY) == 0); - - // packet valid? - if ((dwLen & DV) == 0) { - return -1; - } - - // get length - dwLen &= PKT_LNGTH_MASK; - - // get data - dwData = 0; - for (i = 0; i < dwLen; i++) { - if ((i % 4) == 0) { - dwData = LPC_USB->USBRxData; - } - if ((pbBuf != NULL) && (i < iMaxLen)) { - pbBuf[i] = dwData & 0xFF; - } - dwData >>= 8; - } - - // make sure RD_EN is clear - LPC_USB->USBCtrl = 0; - - // select endpoint and clear buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_CLEAR_BUFFER); - - return dwLen; -} - - -/** - Sets the 'configured' state. - - All registered endpoints are 'realised' and enabled, and the - 'configured' bit is set in the device status register. - - @param [in] fConfigured If TRUE, configure device, else unconfigure - */ -void USBHwConfigDevice(BOOL fConfigured) -{ - // set configured bit - USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); -} - - -/** - USB interrupt handler - - @todo Get all 11 bits of frame number instead of just 8 - - Endpoint interrupts are mapped to the slow interrupt - */ -void USBHwISR(void) -{ - unsigned long dwStatus; - unsigned long dwIntBit; - unsigned char bEPStat, bDevStat, bStat; - int i; - unsigned short wFrame; - - // handle device interrupts - dwStatus = LPC_USB->USBDevIntSt; - - // frame interrupt - if (dwStatus & FRAME) { - // clear int - LPC_USB->USBDevIntClr = FRAME; - // call handler - if (_pfnFrameHandler != NULL) { - wFrame = USBHwCmdRead(CMD_DEV_READ_CUR_FRAME_NR); - _pfnFrameHandler(wFrame); - } - } - - // device status interrupt - if (dwStatus & DEV_STAT) { - /* Clear DEV_STAT interrupt before reading DEV_STAT register. - This prevents corrupted device status reads, see - LPC2148 User manual revision 2, 25 july 2006. - */ - LPC_USB->USBDevIntClr = DEV_STAT; - bDevStat = USBHwCmdRead(CMD_DEV_STATUS); - if (bDevStat & (CON_CH | SUS_CH | RST)) { - // convert device status into something HW independent - bStat = ((bDevStat & CON) ? DEV_STATUS_CONNECT : 0) | - ((bDevStat & SUS) ? DEV_STATUS_SUSPEND : 0) | - ((bDevStat & RST) ? DEV_STATUS_RESET : 0); - // call handler - if (_pfnDevIntHandler != NULL) { - _pfnDevIntHandler(bStat); - } - } - } - - // endpoint interrupt - if (dwStatus & EP_SLOW) { - // clear EP_SLOW - LPC_USB->USBDevIntClr = EP_SLOW; - // check all endpoints - for (i = 0; i < 32; i++) { - dwIntBit = (1 << i); - if (LPC_USB->USBEpIntSt & dwIntBit) { - // clear int (and retrieve status) - LPC_USB->USBEpIntClr = dwIntBit; - Wait4DevInt(CDFULL); - bEPStat = LPC_USB->USBCmdData; - // convert EP pipe stat into something HW independent - bStat = ((bEPStat & EPSTAT_FE) ? EP_STATUS_DATA : 0) | - ((bEPStat & EPSTAT_ST) ? EP_STATUS_STALLED : 0) | - ((bEPStat & EPSTAT_STP) ? EP_STATUS_SETUP : 0) | - ((bEPStat & EPSTAT_EPN) ? EP_STATUS_NACKED : 0) | - ((bEPStat & EPSTAT_PO) ? EP_STATUS_ERROR : 0); - // call handler - if (_apfnEPIntHandlers[i / 2] != NULL) { - _apfnEPIntHandlers[i / 2](IDX2EP(i), bStat); - } - } - } - } -} - - - -/** - Initialises the USB hardware - - - @return TRUE if the hardware was successfully initialised - */ -BOOL USBHwInit(void) -{ - // P2.9 -> USB_CONNECT - LPC_PINCON->PINSEL4 &= ~0x000C0000; - LPC_PINCON->PINSEL4 |= 0x00040000; - - // P1.18 -> USB_UP_LED - // P1.30 -> VBUS - LPC_PINCON->PINSEL3 &= ~0x30000030; - LPC_PINCON->PINSEL3 |= 0x20000010; - - // P0.29 -> USB_D+ - // P0.30 -> USB_D- - LPC_PINCON->PINSEL1 &= ~0x3C000000; - LPC_PINCON->PINSEL1 |= 0x14000000; - - // enable PUSB - LPC_SC->PCONP |= (1 << 31); - - LPC_USB->OTGClkCtrl = 0x12; /* Dev clock, AHB clock enable */ - while ((LPC_USB->OTGClkSt & 0x12) != 0x12); - - // disable/clear all interrupts for now - LPC_USB->USBDevIntEn = 0; - LPC_USB->USBDevIntClr = 0xFFFFFFFF; - LPC_USB->USBDevIntPri = 0; - - LPC_USB->USBEpIntEn = 0; - LPC_USB->USBEpIntClr = 0xFFFFFFFF; - LPC_USB->USBEpIntPri = 0; - - // by default, only ACKs generate interrupts - USBHwNakIntEnable(0); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h deleted file mode 100644 index 2a4de7949..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Hardware definitions for the LPC176x USB controller - - These are private to the usbhw module -*/ - -// CodeRed - pull in defines from NXP header file -//#include "NXP\LPC17xx\LPC17xx.h" -#include "LPC17xx.h" - - -// CodeRed - these registers have been renamed on LPC176x -#define USBReEP USBReEp -#define OTG_CLK_CTRL USBClkCtrl -#define OTG_CLK_STAT USBClkSt - -/* USBIntSt bits */ -#define USB_INT_REQ_LP (1<<0) -#define USB_INT_REQ_HP (1<<1) -#define USB_INT_REQ_DMA (1<<2) -#define USB_need_clock (1<<8) -#define EN_USB_BITS (1<<31) - -/* USBDevInt... bits */ -#define FRAME (1<<0) -#define EP_FAST (1<<1) -#define EP_SLOW (1<<2) -#define DEV_STAT (1<<3) -#define CCEMTY (1<<4) -#define CDFULL (1<<5) -#define RxENDPKT (1<<6) -#define TxENDPKT (1<<7) -#define EP_RLZED (1<<8) -#define ERR_INT (1<<9) - -/* USBRxPLen bits */ -#define PKT_LNGTH (1<<0) -#define PKT_LNGTH_MASK 0x3FF -#define DV (1<<10) -#define PKT_RDY (1<<11) - -/* USBCtrl bits */ -#define RD_EN (1<<0) -#define WR_EN (1<<1) -#define LOG_ENDPOINT (1<<2) - -/* protocol engine command codes */ - /* device commands */ -#define CMD_DEV_SET_ADDRESS 0xD0 -#define CMD_DEV_CONFIG 0xD8 -#define CMD_DEV_SET_MODE 0xF3 -#define CMD_DEV_READ_CUR_FRAME_NR 0xF5 -#define CMD_DEV_READ_TEST_REG 0xFD -#define CMD_DEV_STATUS 0xFE /* read/write */ -#define CMD_DEV_GET_ERROR_CODE 0xFF -#define CMD_DEV_READ_ERROR_STATUS 0xFB - /* endpoint commands */ -#define CMD_EP_SELECT 0x00 -#define CMD_EP_SELECT_CLEAR 0x40 -#define CMD_EP_SET_STATUS 0x40 -#define CMD_EP_CLEAR_BUFFER 0xF2 -#define CMD_EP_VALIDATE_BUFFER 0xFA - -/* set address command */ -#define DEV_ADDR (1<<0) -#define DEV_EN (1<<7) - -/* configure device command */ -#define CONF_DEVICE (1<<0) - -/* set mode command */ -#define AP_CLK (1<<0) -#define INAK_CI (1<<1) -#define INAK_CO (1<<2) -#define INAK_II (1<<3) -#define INAK_IO (1<<4) -#define INAK_BI (1<<5) -#define INAK_BO (1<<6) - -/* set get device status command */ -#define CON (1<<0) -#define CON_CH (1<<1) -#define SUS (1<<2) -#define SUS_CH (1<<3) -#define RST (1<<4) - -/* get error code command */ -// ... - -/* Select Endpoint command read bits */ -#define EPSTAT_FE (1<<0) -#define EPSTAT_ST (1<<1) -#define EPSTAT_STP (1<<2) -#define EPSTAT_PO (1<<3) -#define EPSTAT_EPN (1<<4) -#define EPSTAT_B1FULL (1<<5) -#define EPSTAT_B2FULL (1<<6) - -/* CMD_EP_SET_STATUS command */ -#define EP_ST (1<<0) -#define EP_DA (1<<5) -#define EP_RF_MO (1<<6) -#define EP_CND_ST (1<<7) - -/* read error status command */ -#define PID_ERR (1<<0) -#define UEPKT (1<<1) -#define DCRC (1<<2) -#define TIMEOUT (1<<3) -#define EOP (1<<4) -#define B_OVRN (1<<5) -#define BTSTF (1<<6) -#define TGL_ERR (1<<7) - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c deleted file mode 100644 index 8bb718317..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB stack initialisation - */ - - -#include "usbdebug.h" -#include "usbapi.h" - - -/** data storage area for standard requests */ -static unsigned char abStdReqData[8]; - - -/** - USB reset handler - - @param [in] bDevStatus Device status - */ -static void HandleUsbReset(unsigned char bDevStatus) -{ - if (bDevStatus & DEV_STATUS_RESET) { - DBG("\n!"); - } -} - - -/** - Initialises the USB hardware and sets up the USB stack by - installing default callbacks. - - @return TRUE if initialisation was successful - */ -BOOL USBInit(void) -{ - // init hardware - USBHwInit(); - - // register bus reset handler - USBHwRegisterDevIntHandler(HandleUsbReset); - - // register control transfer handler on EP0 - USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); - USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); - - // setup control endpoints - USBHwEPConfig(0x00, MAX_PACKET_SIZE0); - USBHwEPConfig(0x80, MAX_PACKET_SIZE0); - - // register standard request handler - USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c deleted file mode 100644 index 05e58b417..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c +++ /dev/null @@ -1,430 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Standard request handler. - - This modules handles the 'chapter 9' processing, specifically the - standard device requests in table 9-3 from the universal serial bus - specification revision 2.0 - - Specific types of devices may specify additional requests (for example - HID devices add a GET_DESCRIPTOR request for interfaces), but they - will not be part of this module. - - @todo some requests have to return a request error if device not configured: - @todo GET_INTERFACE, GET_STATUS, SET_INTERFACE, SYNCH_FRAME - @todo this applies to the following if endpoint != 0: - @todo SET_FEATURE, GET_FEATURE -*/ - -#include "usbdebug.h" -#include "usbstruct.h" -#include "usbapi.h" - -#define MAX_DESC_HANDLERS 4 /**< device, interface, endpoint, other */ - - -/* general descriptor field offsets */ -#define DESC_bLength 0 /**< length offset */ -#define DESC_bDescriptorType 1 /**< descriptor type offset */ - -/* config descriptor field offsets */ -#define CONF_DESC_wTotalLength 2 /**< total length offset */ -#define CONF_DESC_bConfigurationValue 5 /**< configuration value offset */ -#define CONF_DESC_bmAttributes 7 /**< configuration characteristics */ - -/* interface descriptor field offsets */ -#define INTF_DESC_bAlternateSetting 3 /**< alternate setting offset */ - -/* endpoint descriptor field offsets */ -#define ENDP_DESC_bEndpointAddress 2 /**< endpoint address offset */ -#define ENDP_DESC_wMaxPacketSize 4 /**< maximum packet size offset */ - - -/** Currently selected configuration */ -static unsigned char bConfiguration = 0; -/** Installed custom request handler */ -static TFnHandleRequest *pfnHandleCustomReq = NULL; -/** Pointer to registered descriptors */ -static const unsigned char *pabDescrip = NULL; - - -/** - Registers a pointer to a descriptor block containing all descriptors - for the device. - - @param [in] pabDescriptors The descriptor byte array - */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors) -{ - pabDescrip = pabDescriptors; -} - - -/** - Parses the list of installed USB descriptors and attempts to find - the specified USB descriptor. - - @param [in] wTypeIndex Type and index of the descriptor - @param [in] wLangID Language ID of the descriptor (currently unused) - @param [out] *piLen Descriptor length - @param [out] *ppbData Descriptor data - - @return TRUE if the descriptor was found, FALSE otherwise - */ -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData) -{ - unsigned char bType, bIndex; - unsigned char *pab; - int iCurIndex; - - ASSERT(pabDescrip != NULL); - - bType = GET_DESC_TYPE(wTypeIndex); - bIndex = GET_DESC_INDEX(wTypeIndex); - - pab = (unsigned char *)pabDescrip; - iCurIndex = 0; - - while (pab[DESC_bLength] != 0) { - if (pab[DESC_bDescriptorType] == bType) { - if (iCurIndex == bIndex) { - // set data pointer - *ppbData = pab; - // get length from structure - if (bType == DESC_CONFIGURATION) { - // configuration descriptor is an exception, length is at offset 2 and 3 - *piLen = (pab[CONF_DESC_wTotalLength]) | - (pab[CONF_DESC_wTotalLength + 1] << 8); - } - else { - // normally length is at offset 0 - *piLen = pab[DESC_bLength]; - } - return TRUE; - } - iCurIndex++; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - // nothing found - DBG("Desc %x not found!\n", wTypeIndex); - return FALSE; -} - - -/** - Configures the device according to the specified configuration index and - alternate setting by parsing the installed USB descriptor list. - A configuration index of 0 unconfigures the device. - - @param [in] bConfigIndex Configuration index - @param [in] bAltSetting Alternate setting number - - @todo function always returns TRUE, add stricter checking? - - @return TRUE if successfully configured, FALSE otherwise - */ -static BOOL USBSetConfiguration(unsigned char bConfigIndex, unsigned char bAltSetting) -{ - unsigned char *pab; - unsigned char bCurConfig, bCurAltSetting; - unsigned char bEP; - unsigned short wMaxPktSize; - - ASSERT(pabDescrip != NULL); - - if (bConfigIndex == 0) { - // unconfigure device - USBHwConfigDevice(FALSE); - } - else { - // configure endpoints for this configuration/altsetting - pab = (unsigned char *)pabDescrip; - bCurConfig = 0xFF; - bCurAltSetting = 0xFF; - - while (pab[DESC_bLength] != 0) { - - switch (pab[DESC_bDescriptorType]) { - - case DESC_CONFIGURATION: - // remember current configuration index - bCurConfig = pab[CONF_DESC_bConfigurationValue]; - break; - - case DESC_INTERFACE: - // remember current alternate setting - bCurAltSetting = pab[INTF_DESC_bAlternateSetting]; - break; - - case DESC_ENDPOINT: - if ((bCurConfig == bConfigIndex) && - (bCurAltSetting == bAltSetting)) { - // endpoint found for desired config and alternate setting - bEP = pab[ENDP_DESC_bEndpointAddress]; - wMaxPktSize = (pab[ENDP_DESC_wMaxPacketSize]) | - (pab[ENDP_DESC_wMaxPacketSize + 1] << 8); - // configure endpoint - USBHwEPConfig(bEP, wMaxPktSize); - } - break; - - default: - break; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - - // configure device - USBHwConfigDevice(TRUE); - } - - return TRUE; -} - - -/** - Local function to handle a standard device request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdDeviceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // bit 0: self-powered - // bit 1: remote wakeup = not supported - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_SET_ADDRESS: - USBHwSetAddress(pSetup->wValue); - break; - - case REQ_GET_DESCRIPTOR: - DBG("D%x", pSetup->wValue); - return USBGetDescriptor(pSetup->wValue, pSetup->wIndex, piLen, ppbData); - - case REQ_GET_CONFIGURATION: - // indicate if we are configured - pbData[0] = bConfiguration; - *piLen = 1; - break; - - case REQ_SET_CONFIGURATION: - if (!USBSetConfiguration(pSetup->wValue & 0xFF, 0)) { - DBG("USBSetConfiguration failed!\n"); - return FALSE; - } - // configuration successful, update current configuration - bConfiguration = pSetup->wValue & 0xFF; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_REMOTE_WAKEUP) { - // put DEVICE_REMOTE_WAKEUP code here - } - if (pSetup->wValue == FEA_TEST_MODE) { - // put TEST_MODE code here - } - return FALSE; - - case REQ_SET_DESCRIPTOR: - DBG("Device req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal device req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard interface request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdInterfaceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // no bits specified - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - // not defined for interface - return FALSE; - - case REQ_GET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface, return n-1 (= 0) - pbData[0] = 0; - *piLen = 1; - break; - - case REQ_SET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface (= 0) - if (pSetup->wValue != 0) { - return FALSE; - } - *piLen = 0; - break; - - default: - DBG("Illegal interface req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard endpoint request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdEndPointReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - case REQ_GET_STATUS: - // bit 0 = endpointed halted or not - pbData[0] = (USBHwEPGetStatus(pSetup->wIndex) & EP_STATUS_STALLED) ? 1 : 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // clear HALT by unstalling - USBHwEPStall(pSetup->wIndex, FALSE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // set HALT by stalling - USBHwEPStall(pSetup->wIndex, TRUE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SYNCH_FRAME: - DBG("EP req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal EP req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Default handler for standard ('chapter 9') requests - - If a custom request handler was installed, this handler is called first. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - // try the custom request handler first - if ((pfnHandleCustomReq != NULL) && pfnHandleCustomReq(pSetup, piLen, ppbData)) { - return TRUE; - } - - switch (REQTYPE_GET_RECIP(pSetup->bmRequestType)) { - case REQTYPE_RECIP_DEVICE: return HandleStdDeviceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_INTERFACE: return HandleStdInterfaceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_ENDPOINT: return HandleStdEndPointReq(pSetup, piLen, ppbData); - default: return FALSE; - } -} - - -/** - Registers a callback for custom device requests - - In USBHandleStandardRequest, the custom request handler gets a first - chance at handling the request before it is handed over to the 'chapter 9' - request handler. - - This can be used for example in HID devices, where a REQ_GET_DESCRIPTOR - request is sent to an interface, which is not covered by the 'chapter 9' - specification. - - @param [in] pfnHandler Callback function pointer - */ -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler) -{ - pfnHandleCustomReq = pfnHandler; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h deleted file mode 100644 index 113e2fef4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Definitions of structures of standard USB packets -*/ - -#ifndef _USBSTRUCT_H_ -#define _USBSTRUCT_H_ - -// CodeRed - include the LPCUSB type.h file rather than NXP one directly -#include "type.h" - -/** setup packet definitions */ -typedef struct { - unsigned char bmRequestType; /**< characteristics of the specific request */ - unsigned char bRequest; /**< specific request */ - unsigned short wValue; /**< request specific parameter */ - unsigned short wIndex; /**< request specific parameter */ - unsigned short wLength; /**< length of data transfered in data phase */ -} TSetupPacket; - - -#define REQTYPE_GET_DIR(x) (((x)>>7)&0x01) -#define REQTYPE_GET_TYPE(x) (((x)>>5)&0x03) -#define REQTYPE_GET_RECIP(x) ((x)&0x1F) - -#define REQTYPE_DIR_TO_DEVICE 0 -#define REQTYPE_DIR_TO_HOST 1 - -#define REQTYPE_TYPE_STANDARD 0 -#define REQTYPE_TYPE_CLASS 1 -#define REQTYPE_TYPE_VENDOR 2 -#define REQTYPE_TYPE_RESERVED 3 - -#define REQTYPE_RECIP_DEVICE 0 -#define REQTYPE_RECIP_INTERFACE 1 -#define REQTYPE_RECIP_ENDPOINT 2 -#define REQTYPE_RECIP_OTHER 3 - -/* standard requests */ -#define REQ_GET_STATUS 0x00 -#define REQ_CLEAR_FEATURE 0x01 -#define REQ_SET_FEATURE 0x03 -#define REQ_SET_ADDRESS 0x05 -#define REQ_GET_DESCRIPTOR 0x06 -#define REQ_SET_DESCRIPTOR 0x07 -#define REQ_GET_CONFIGURATION 0x08 -#define REQ_SET_CONFIGURATION 0x09 -#define REQ_GET_INTERFACE 0x0A -#define REQ_SET_INTERFACE 0x0B -#define REQ_SYNCH_FRAME 0x0C - -/* class requests HID */ -#define HID_GET_REPORT 0x01 -#define HID_GET_IDLE 0x02 -#define HID_GET_PROTOCOL 0x03 -#define HID_SET_REPORT 0x09 -#define HID_SET_IDLE 0x0A -#define HID_SET_PROTOCOL 0x0B - -/* feature selectors */ -#define FEA_ENDPOINT_HALT 0x00 -#define FEA_REMOTE_WAKEUP 0x01 -#define FEA_TEST_MODE 0x02 - -/* - USB descriptors -*/ - -/** USB descriptor header */ -typedef struct { - unsigned char bLength; /**< descriptor length */ - unsigned char bDescriptorType; /**< descriptor type */ -} TUSBDescHeader; - -#define DESC_DEVICE 1 -#define DESC_CONFIGURATION 2 -#define DESC_STRING 3 -#define DESC_INTERFACE 4 -#define DESC_ENDPOINT 5 -#define DESC_DEVICE_QUALIFIER 6 -#define DESC_OTHER_SPEED 7 -#define DESC_INTERFACE_POWER 8 - -#define DESC_HID_HID 0x21 -#define DESC_HID_REPORT 0x22 -#define DESC_HID_PHYSICAL 0x23 - -#define GET_DESC_TYPE(x) (((x)>>8)&0xFF) -#define GET_DESC_INDEX(x) ((x)&0xFF) - -#endif /* _USBSTRUCT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c deleted file mode 100644 index 91f9c2af9..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define LED_2 ( 1UL << 24UL ) -#define LED_3 ( 1UL << 25UL ) -#define LED_4 ( 1UL << 28UL ) -#define LED_5 ( 1UL << 29UL ) - -#define partstFIO1_BITS ( LED_2 | LED_3 | LED_4 | LED_5 ) -#define partstNUM_LEDS ( 4 ) - -static unsigned long ulLEDs[] = { LED_3, LED_2, LED_5, LED_4 }; - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* LEDs on port 1. */ - LPC_GPIO1->FIODIR = partstFIO1_BITS; - - /* Start will all LEDs off. */ - LPC_GPIO1->FIOCLR = partstFIO1_BITS; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstNUM_LEDS ) - { - /* Set of clear the output. */ - if( xValue ) - { - LPC_GPIO1->FIOCLR = ulLEDs[ uxLED ]; - } - else - { - LPC_GPIO1->FIOSET = ulLEDs[ uxLED ]; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDS ) - { - if( LPC_GPIO1->FIOPIN & ulLEDs[ uxLED ] ) - { - LPC_GPIO1->FIOCLR = ulLEDs[ uxLED ]; - } - else - { - LPC_GPIO1->FIOSET = ulLEDs[ uxLED ]; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDS ) - { - return ( LPC_GPIO1->FIOPIN & ulLEDs[ uxLED ] ); - } - else - { - return 0; - } -} -/*-----------------------------------------------------------*/ - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h deleted file mode 100644 index 2b6b51a7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h +++ /dev/null @@ -1,1818 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration - * - * List of Lint messages which will be suppressed and not shown: - * - Error 10: \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' - * . - * - Error 530: \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized - * . - * - Error 550: \n - * __regBasePri = (basePri & 0x1ff); \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed - * . - * - Error 754: \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced - * . - * - Error 750: \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced - * . - * - Error 528: \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced - * . - * - Error 751: \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced - * . - * Note: To re-enable a Message, insert a space before 'lint' * - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions - This file defines all structures and symbols for CMSIS core: - - CMSIS version number - - Cortex-M core registers and bitfields - - Cortex-M core peripheral base address - @{ - */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus - #define __I volatile /*!< defines 'read only' permissions */ -#else - #define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ -/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register - @{ -*/ - - -/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC - memory mapped structure for Nested Vectored Interrupt Controller (NVIC) - @{ - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ -} NVIC_Type; -/*@}*/ /* end of group CMSIS_CM3_NVIC */ - - -/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB - memory mapped structure for System Control Block (SCB) - @{ - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ -/*@}*/ /* end of group CMSIS_CM3_SCB */ - - -/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick - memory mapped structure for SysTick - @{ - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ -/*@}*/ /* end of group CMSIS_CM3_SysTick */ - - -/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM - memory mapped structure for Instrumentation Trace Macrocell (ITM) - @{ - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ - __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ - __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ -/*@}*/ /* end of group CMSIS_CM3_ITM */ - - -/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type - memory mapped structure for Interrupt Type - @{ - */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - -/* Interrupt Controller Type Register Definitions */ -#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ -#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ -#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ - -#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ -#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ - -#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ -#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ -/*@}*/ /* end of group CMSIS_CM3_InterruptType */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU - memory mapped structure for Memory Protection Unit (MPU) - @{ - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ -#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ -#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ -#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ -#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ -#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ -#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@}*/ /* end of group CMSIS_CM3_MPU */ -#endif - - -/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug - memory mapped structure for Core Debug Register - @{ - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ -/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_register */ - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP() { __ASM volatile ("nop"); } -static __INLINE void __WFI() { __ASM volatile ("wfi"); } -static __INLINE void __WFE() { __ASM volatile ("wfe"); } -static __INLINE void __SEV() { __ASM volatile ("sev"); } -static __INLINE void __ISB() { __ASM volatile ("isb"); } -static __INLINE void __DSB() { __ASM volatile ("dsb"); } -static __INLINE void __DMB() { __ASM volatile ("dmb"); } -static __INLINE void __CLREX() { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - -/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface - Core Function Interface containing: - - Core NVIC Functions - - Core SysTick Functions - - Core Reset Functions -*/ -/*@{*/ - -/* ########################## NVIC functions #################################### */ - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param PriorityGroup is priority grouping field - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - (0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @return priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn The positive number of the external interrupt to enable - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn The positive number of the external interrupt to disable - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn The number of the device specifc interrupt - * @return 1 = interrupt pending, 0 = interrupt not pending - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for set pending - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for clear pending - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn The number of the interrupt for read active bit - * @return 1 = interrupt active, 0 = interrupt not active - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn The number of the interrupt for set priority - * @param priority The priority to set - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn The number of the interrupt for get priority - * @return The priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param PriorityGroup The used priority group - * @param PreemptPriority The preemptive priority value (starting from 0) - * @param SubPriority The sub priority value (starting from 0) - * @return The encoded priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param Priority The priority for the interrupt - * @param PriorityGroup The used priority group - * @param pPreemptPriority The preemptive priority value (starting from 0) - * @param pSubPriority The sub priority value (starting from 0) - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param ticks number of ticks between two interrupts - * @return 1 = failed, 0 = successful - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - - - - -/* ################################## Reset function ############################################ */ - -/** - * @brief Initiate a system reset request. - * - * Initiate a system reset request to reset the MCU - */ -static __INLINE void NVIC_SystemReset(void) -{ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ - - - -/* ##################################### Debug In/Output function ########################################### */ - -/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface - Core Debug Interface containing: - - Core Debug Receive / Transmit Functions - - Core Debug Defines - - Core Debug Variables -*/ -/*@{*/ - -extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ - - -/** - * @brief Outputs a character via the ITM channel 0 - * - * @param ch character to output - * @return character to output - * - * The function outputs a character via the ITM channel 0. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ - (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** - * @brief Inputs a character via variable ITM_RxBuffer - * - * @return received character, -1 = no character received - * - * The function inputs a character via variable ITM_RxBuffer. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE int ITM_ReceiveChar (void) { - int ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** - * @brief Check if a character via variable ITM_RxBuffer is available - * - * @return 1 = character available, 0 = no character available - * - * The function checks variable ITM_RxBuffer whether a character is available or not. - * The function returns '1' if a character is available and '0' if no character is available. - */ -static __INLINE int ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ - - -#ifdef __cplusplus -} -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_definitions */ - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c deleted file mode 100644 index 170fdecf7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c +++ /dev/null @@ -1,349 +0,0 @@ -//***************************************************************************** -// +--+ -// | ++----+ -// +-++ | -// | | -// +-+--+ | -// | +--+--+ -// +----+ Copyright (c) 2009-10 Code Red Technologies Ltd. -// -// Microcontroller Startup code for use with Red Suite -// -// Software License Agreement -// -// The software is owned by Code Red Technologies and/or its suppliers, and is -// protected under applicable copyright laws. All rights are reserved. Any -// use in violation of the foregoing restrictions may subject the user to criminal -// sanctions under applicable laws, as well as to civil liability for the breach -// of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// USE OF THIS SOFTWARE FOR COMMERCIAL DEVELOPMENT AND/OR EDUCATION IS SUBJECT -// TO A CURRENT END USER LICENSE AGREEMENT (COMMERCIAL OR EDUCATIONAL) WITH -// CODE RED TECHNOLOGIES LTD. -// -//***************************************************************************** -#if defined (__cplusplus) -#ifdef __REDLIB__ -#error Redlib does not support C++ -#else -//***************************************************************************** -// -// The entry point for the C++ library startup -// -//***************************************************************************** -extern "C" { - extern void __libc_init_array(void); -} -#endif -#endif - -#define WEAK __attribute__ ((weak)) -#define ALIAS(f) __attribute__ ((weak, alias (#f))) - -// Code Red - if CMSIS is being used, then SystemInit() routine -// will be called by startup code rather than in application's main() -#if defined (__USE_CMSIS) -#include "system_LPC17xx.h" -#endif - -//***************************************************************************** -#if defined (__cplusplus) -extern "C" { -#endif - -//***************************************************************************** -// -// Forward declaration of the default handlers. These are aliased. -// When the application defines a handler (with the same name), this will -// automatically take precedence over these weak definitions -// -//***************************************************************************** - void ResetISR(void); -WEAK void NMI_Handler(void); -WEAK void HardFault_Handler(void); -WEAK void MemManage_Handler(void); -WEAK void BusFault_Handler(void); -WEAK void UsageFault_Handler(void); -WEAK void SVCall_Handler(void); -WEAK void DebugMon_Handler(void); -WEAK void PendSV_Handler(void); -WEAK void SysTick_Handler(void); -WEAK void IntDefaultHandler(void); - -//***************************************************************************** -// -// Forward declaration of the specific IRQ handlers. These are aliased -// to the IntDefaultHandler, which is a 'forever' loop. When the application -// defines a handler (with the same name), this will automatically take -// precedence over these weak definitions -// -//***************************************************************************** -void WDT_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER0_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER1_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER2_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER3_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART0_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART1_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART2_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART3_IRQHandler(void) ALIAS(IntDefaultHandler); -void PWM1_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2C1_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2C2_IRQHandler(void) ALIAS(IntDefaultHandler); -void SPI_IRQHandler(void) ALIAS(IntDefaultHandler); -void SSP0_IRQHandler(void) ALIAS(IntDefaultHandler); -void SSP1_IRQHandler(void) ALIAS(IntDefaultHandler); -void PLL0_IRQHandler(void) ALIAS(IntDefaultHandler); -void RTC_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT0_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT1_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT2_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT3_IRQHandler(void) ALIAS(IntDefaultHandler); -void ADC_IRQHandler(void) ALIAS(IntDefaultHandler); -void BOD_IRQHandler(void) ALIAS(IntDefaultHandler); -void USB_IRQHandler(void) ALIAS(IntDefaultHandler); -void CAN_IRQHandler(void) ALIAS(IntDefaultHandler); -void DMA_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2S_IRQHandler(void) ALIAS(IntDefaultHandler); -void ENET_IRQHandler(void) ALIAS(IntDefaultHandler); -void RIT_IRQHandler(void) ALIAS(IntDefaultHandler); -void MCPWM_IRQHandler(void) ALIAS(IntDefaultHandler); -void QEI_IRQHandler(void) ALIAS(IntDefaultHandler); -void PLL1_IRQHandler(void) ALIAS(IntDefaultHandler); -void USBActivity_IRQHandler(void) ALIAS(IntDefaultHandler); -void CANActivity_IRQHandler(void) ALIAS(IntDefaultHandler); - -extern void xPortSysTickHandler(void); -extern void xPortPendSVHandler(void); -extern void vPortSVCHandler( void ); -extern void vEMAC_ISR( void ); - -//***************************************************************************** -// -// The entry point for the application. -// __main() is the entry point for Redlib based applications -// main() is the entry point for Newlib based applications -// -//***************************************************************************** -#if defined (__REDLIB__) -extern void __main(void); -#endif -extern int main(void); -//***************************************************************************** -// -// External declaration for the pointer to the stack top from the Linker Script -// -//***************************************************************************** -extern void _vStackTop(void); - -//***************************************************************************** -#if defined (__cplusplus) -} // extern "C" -#endif -//***************************************************************************** -// -// The vector table. -// This relies on the linker script to place at correct location in memory. -// -//***************************************************************************** -extern void (* const g_pfnVectors[])(void); -__attribute__ ((section(".isr_vector"))) -void (* const g_pfnVectors[])(void) = -{ - // Core Level - CM3 - (void *)&_vStackTop, // The initial stack pointer - ResetISR, // The reset handler - NMI_Handler, // The NMI handler - HardFault_Handler, // The hard fault handler - MemManage_Handler, // The MPU fault handler - BusFault_Handler, // The bus fault handler - UsageFault_Handler, // The usage fault handler - 0, // Reserved - 0, // Reserved - 0, // Reserved - 0, // Reserved - vPortSVCHandler, // SVCall handler - DebugMon_Handler, // Debug monitor handler - 0, // Reserved - xPortPendSVHandler, // The PendSV handler - xPortSysTickHandler, // The SysTick handler - - // Chip Level - LPC17 - WDT_IRQHandler, // 16, 0x40 - WDT - TIMER0_IRQHandler, // 17, 0x44 - TIMER0 - TIMER1_IRQHandler, // 18, 0x48 - TIMER1 - TIMER2_IRQHandler, // 19, 0x4c - TIMER2 - TIMER3_IRQHandler, // 20, 0x50 - TIMER3 - UART0_IRQHandler, // 21, 0x54 - UART0 - UART1_IRQHandler, // 22, 0x58 - UART1 - UART2_IRQHandler, // 23, 0x5c - UART2 - UART3_IRQHandler, // 24, 0x60 - UART3 - PWM1_IRQHandler, // 25, 0x64 - PWM1 - I2C0_IRQHandler, // 26, 0x68 - I2C0 - I2C1_IRQHandler, // 27, 0x6c - I2C1 - I2C2_IRQHandler, // 28, 0x70 - I2C2 - SPI_IRQHandler, // 29, 0x74 - SPI - SSP0_IRQHandler, // 30, 0x78 - SSP0 - SSP1_IRQHandler, // 31, 0x7c - SSP1 - PLL0_IRQHandler, // 32, 0x80 - PLL0 (Main PLL) - RTC_IRQHandler, // 33, 0x84 - RTC - EINT0_IRQHandler, // 34, 0x88 - EINT0 - EINT1_IRQHandler, // 35, 0x8c - EINT1 - EINT2_IRQHandler, // 36, 0x90 - EINT2 - EINT3_IRQHandler, // 37, 0x94 - EINT3 - ADC_IRQHandler, // 38, 0x98 - ADC - BOD_IRQHandler, // 39, 0x9c - BOD - USB_IRQHandler, // 40, 0xA0 - USB - CAN_IRQHandler, // 41, 0xa4 - CAN - DMA_IRQHandler, // 42, 0xa8 - GP DMA - I2S_IRQHandler, // 43, 0xac - I2S - vEMAC_ISR, // Ethernet. - RIT_IRQHandler, // 45, 0xb4 - RITINT - MCPWM_IRQHandler, // 46, 0xb8 - Motor Control PWM - QEI_IRQHandler, // 47, 0xbc - Quadrature Encoder - PLL1_IRQHandler, // 48, 0xc0 - PLL1 (USB PLL) - USBActivity_IRQHandler, // 49, 0xc4 - USB Activity interrupt to wakeup - CANActivity_IRQHandler, // 50, 0xc8 - CAN Activity interrupt to wakeup -}; - -//***************************************************************************** -// -// The following are constructs created by the linker, indicating where the -// the "data" and "bss" segments reside in memory. The initializers for the -// for the "data" segment resides immediately following the "text" segment. -// -//***************************************************************************** -extern unsigned long _etext; -extern unsigned long _data; -extern unsigned long _edata; -extern unsigned long _bss; -extern unsigned long _ebss; - -//***************************************************************************** -// Reset entry point for your code. -// Sets up a simple runtime environment and initializes the C/C++ -// library. -// -//***************************************************************************** -void -ResetISR(void) { - unsigned long *pulSrc, *pulDest; - - // - // Copy the data segment initializers from flash to SRAM. - // - pulSrc = &_etext; - for(pulDest = &_data; pulDest < &_edata; ) - { - *pulDest++ = *pulSrc++; - } - - // - // Zero fill the bss segment. This is done with inline assembly since this - // will clear the value of pulDest if it is not kept in a register. - // - __asm(" ldr r0, =_bss\n" - " ldr r1, =_ebss\n" - " mov r2, #0\n" - " .thumb_func\n" - "zero_loop:\n" - " cmp r0, r1\n" - " it lt\n" - " strlt r2, [r0], #4\n" - " blt zero_loop"); - -#ifdef __USE_CMSIS - SystemInit(); -#endif - -#if defined (__cplusplus) - // - // Call C++ library initialisation - // - __libc_init_array(); -#endif - -#if defined (__REDLIB__) - // Call the Redlib library, which in turn calls main() - __main() ; -#else - main(); -#endif - - // - // main() shouldn't return, but if it does, we'll just enter an infinite loop - // - while (1) { - ; - } -} - -//***************************************************************************** -// -// This is the code that gets called when the processor receives a NMI. This -// simply enters an infinite loop, preserving the system state for examination -// by a debugger. -// -//***************************************************************************** -void NMI_Handler(void) -{ - while(1) - { - } -} - -void HardFault_Handler(void) -{ - while(1) - { - } -} - -void MemManage_Handler(void) -{ - while(1) - { - } -} - -void BusFault_Handler(void) -{ - while(1) - { - } -} - -void UsageFault_Handler(void) -{ - while(1) - { - } -} - - -void DebugMon_Handler(void) -{ - while(1) - { - } -} - -//***************************************************************************** -// -// Processor ends up here if an unexpected interrupt occurs or a handler -// is not present in the application code. -// -//***************************************************************************** -void IntDefaultHandler(void) -{ - // - // Go into an infinite loop. - // - while(1) - { - } -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c deleted file mode 100644 index 33a6920a5..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. The status can be viewed using on the Task Stats page - * served by the WEB server. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "USB" task - Enumerates the USB device as a CDC class, then echoes back all - * received characters with a configurable offset (for example, if the offset - * is 1 and 'A' is received then 'B' will be sent back). A dumb terminal such - * as Hyperterminal can be used to talk to the USB task. - */ - -/* Standard includes. */ -#include "stdio.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The message displayed by the WEB server when all tasks are executing -without an error being reported. */ -#define mainPASS_STATUS_MESSAGE "All tasks are executing without error." - -/* Bit definitions. */ -#define PCONP_PCGPIO 0x00008000 -#define PLLFEED_FEED1 0x000000AA -#define PLLFEED_FEED2 0x00000055 -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The task that handles the USB stack. - */ -extern void vUSBTask( void *pvParameters ); - -/* - * Simply returns the current status message for display on served WEB pages. - */ -char *pcGetTaskStatusMessage( void ); - -/*-----------------------------------------------------------*/ - -/* Holds the status message displayed by the WEB server. */ -static char *pcStatusMessage = mainPASS_STATUS_MESSAGE; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ -char cIPAddress[ 16 ]; /* Enough space for "xxx.xxx.xxx.xxx\0". */ - - /* Configure the hardware for use by this demo. */ - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - - /* Create the USB task. */ - xTaskCreate( vUSBTask, "USB", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Display the IP address, then create the uIP task. The WEB server runs - in this task. --- Due to tool changes since this demo was created the LCD - is no longer used. - LCDdriver_initialisation(); - LCD_PrintString( 5, 10, "FreeRTOS.org", 14, COLOR_GREEN); - sprintf( cIPAddress, "%d.%d.%d.%d", configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - LCD_PrintString( 5, 30, cIPAddress, 14, COLOR_RED); - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); */ - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulTicksSinceLastDisplay = 0; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Generic Queue test/demo."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Peek Queue test/demo."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Queue test/demo."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Time test/demo."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Semaphore test/demo."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Poll Queue test/demo."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Int Math test/demo."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Mutex test/demo."; - } - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* Disable peripherals power. */ - LPC_SC->PCONP = 0; - - /* Enable GPIO power. */ - LPC_SC->PCONP = PCONP_PCGPIO; - - /* Disable TPIU. */ - LPC_PINCON->PINSEL10 = 0; - - if ( LPC_SC->PLL0STAT & ( 1 << 25 ) ) - { - /* Enable PLL, disconnected. */ - LPC_SC->PLL0CON = 1; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - LPC_SC->PLL0CON = 0; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable main OSC. */ - LPC_SC->SCS |= 0x20; - while( !( LPC_SC->SCS & 0x40 ) ); - - /* select main OSC, 12MHz, as the PLL clock source. */ - LPC_SC->CLKSRCSEL = 0x1; - - LPC_SC->PLL0CFG = 0x20031; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - LPC_SC->PLL0CON = 1; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - - /* Set clock divider. */ - LPC_SC->CCLKCFG = 0x03; - - /* Configure flash accelerator. */ - LPC_SC->FLASHCFG = 0x403a; - - /* Check lock bit status. */ - while( ( ( LPC_SC->PLL0STAT & ( 1 << 26 ) ) == 0 ) ); - - /* Enable and connect. */ - LPC_SC->PLL0CON = 3; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - while( ( ( LPC_SC->PLL0STAT & ( 1 << 25 ) ) == 0 ) ); - - - - - /* Configure the clock for the USB. */ - if( LPC_SC->PLL1STAT & ( 1 << 9 ) ) - { - /* Enable PLL, disconnected. */ - LPC_SC->PLL1CON = 1; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - LPC_SC->PLL1CON = 0; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - - LPC_SC->PLL1CFG = 0x23; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - LPC_SC->PLL1CON = 1; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( LPC_SC->PLL1STAT & ( 1 << 10 ) ) == 0 ) ); - - /* Enable and connect. */ - LPC_SC->PLL1CON = 3; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( LPC_SC->PLL1STAT & ( 1 << 9 ) ) == 0 ) ); - - /* Setup the peripheral bus to be the same as the CPU output (100 MHz). */ - LPC_SC->PCLKSEL0 = 0x05555555; - - /* Configure the LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ -const unsigned long TCR_COUNT_RESET = 2, CTCR_CTM_TIMER = 0x00, TCR_COUNT_ENABLE = 0x01; - - /* This function configures a timer that is used as the time base when - collecting run time statistical information - basically the percentage - of CPU time that each task is utilising. It is called automatically when - the scheduler is started (assuming configGENERATE_RUN_TIME_STATS is set - to 1). */ - - /* Power up and feed the timer. */ - LPC_SC->PCONP |= 0x02UL; - LPC_SC->PCLKSEL0 = (LPC_SC->PCLKSEL0 & (~(0x3<<2))) | (0x01 << 2); - - /* Reset Timer 0 */ - LPC_TIM0->TCR = TCR_COUNT_RESET; - - /* Just count up. */ - LPC_TIM0->CTCR = CTCR_CTM_TIMER; - - /* Prescale to a frequency that is good enough to get a decent resolution, - but not too fast so as to overflow all the time. */ - LPC_TIM0->PR = ( configCPU_CLOCK_HZ / 10000UL ) - 1UL; - - /* Start the counter. */ - LPC_TIM0->TCR = TCR_COUNT_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld deleted file mode 100644 index 3bb097757..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld +++ /dev/null @@ -1,87 +0,0 @@ -/* - * GENERATED FILE - DO NOT EDIT - * (C) Code Red Technologies Ltd, 2008-9 - * Generated C linker script file for LPC1768 - * (created from nxp_lpc13_c.ld (v2.0.11 (200907061347)) on Thu Jul 09 12:44:31 BST 2009) -*/ - -GROUP(libgcc.a libc.a) - -MEMORY -{ - FLASH (rx) : ORIGIN = 0x0 LENGTH = 0x80000 - SRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 0x8000 - AHBRAM0 : ORIGIN = 0x2007c000, LENGTH = 0x4000 - AHBRAM1 : ORIGIN = 0x20080000, LENGTH = 0x4000 -} - -_vRamTop = 0x10000000 + 0x8000; - -ENTRY(ResetISR) - -SECTIONS -{ - .text : - { - KEEP(*(.isr_vector)) - *(.text*) - *(.rodata*) - - } > FLASH - - - /* for exception handling/unwind - some Newlib functions (in common with C++ and STDC++) use this. */ - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH - - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH - __exidx_end = .; - - _etext = .; - - .data : AT (__exidx_end) - { - _data = .; - *(vtable) - *(.data*) - _edata = .; - } > SRAM - - /* zero initialized data */ - .bss : - { - _bss = .; - *(.bss*) - *(COMMON) - _ebss = .; - } > SRAM - - /* Where we put the heap with cr_clib */ - .cr_heap : - { - end = .; - _pvHeapStart = .; - } > SRAM - -/* - Note: (ref: M0000066) - Moving the stack down by 16 is to work around a GDB bug. - This space can be reclaimed for Production Builds. -*/ - _vStackTop = _vRamTop - 16; - - .ETHRAM : - { - } > AHBRAM0 - - .USBRAM : - { - } > AHBRAM1 -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h deleted file mode 100644 index e58767e9c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************//** - * @file system_LPC17xx.h - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File - * for the NXP LPC17xx Device Series - * @version V1.02 - * @date 08. September 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __SYSTEM_LPC17xx_H -#define __SYSTEM_LPC17xx_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemCoreClock variable. - */ -extern void SystemInit (void); - -/** - * Update SystemCoreClock variable - * - * @param none - * @return none - * - * @brief Updates the SystemCoreClock with current core Clock - * retrieved from cpu registers. - */ -extern void SystemCoreClockUpdate (void); - -#ifdef __cplusplus -} -#endif - -#endif /* __SYSTEM_LPC17xx_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h deleted file mode 100644 index f67789f44..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * @file: EthDev.h - * @purpose: Ethernet Device Definitions - * @version: V1.10 - * @date: 24. Feb. 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef _ETHDEV__H -#define _ETHDEV__H - -#ifndef NULL - #define NULL 0 -#endif - -/*---------------------------------------------------------------------------- - Ethernet Device Defines - *----------------------------------------------------------------------------*/ -#define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ -#define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ - - -/*---------------------------------------------------------------------------- - Ethernet Device Configuration and Control Command Defines - *----------------------------------------------------------------------------*/ -typedef enum { - EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ - EthDev_LINK_UP = 1, /*!< Ethernet link established */ -} EthDev_LINK; - -typedef enum { - EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ - EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ - EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ -} EthDev_SPEED; - -typedef enum { - EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ - EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ -} EthDev_DUPLEX; - -typedef enum { - EthDev_MODE_AUTO = 0, - EthDev_MODE_10M_FULL = 1, - EthDev_MODE_10M_HALF = 2, - EthDev_MODE_100M_FULL = 3, - EthDev_MODE_100M_HALF = 4, - EthDev_MODE_1000M_FULL = 5, - EthDev_MODE_1000M_HALF = 6, -} EthDev_MODE; - -typedef struct { - EthDev_LINK Link : 1; - EthDev_DUPLEX Duplex : 1; - EthDev_SPEED Speed : 2; -} EthDev_STATUS; - - -/*---------------------------------------------------------------------------- - Ethernet Device IO Block Structure - *----------------------------------------------------------------------------*/ -typedef struct { - - /* Initialized by the user application before call to Init. */ - EthDev_MODE Mode; - unsigned char HwAddr[EthDev_ADDR_SIZE]; - void *(*RxFrame) (int size); - void (*RxFrameReady) (int size); - - /* Initialized by Ethernet driver. */ - int (*Init) (void); - int (*UnInit) (void); - int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); - int (*TxFrame) (void *pData, int size); - void (*Lock) (void); - void (*UnLock) (void); - EthDev_STATUS (*LinkChk) (void); -} EthDev_IOB; - - -/* - * Look for received data. If data is found then uip_buf is assigned to the - * new data and the length of the data is returned. If no data is found then - * uip_buf is not updated and 0 is returned. - */ -unsigned long ulGetEMACRxData( void ); - -/* - * Send usTxDataLen bytes from uip_buf. - */ -void vSendEMACTxData( unsigned short usTxDataLen ); - -/* - * Prepare the Ethernet hardware ready for TCP/IP comms. - */ -long lEMACInit(void); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h deleted file mode 100644 index 93134430f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * @file: EthDev_LPC17xx.h - * @purpose: Ethernet Device Definitions for NXP LPC17xx - * @version: V0.01 - * @date: 14. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef __ETHDEV_LPC17XX_H -#define __ETHDEV_LPC17XX_H - -#include - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 3 /* Num.of RX Fragments. */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments. */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -typedef struct { /* RX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} RX_DESC_TypeDef; - -typedef struct { /* RX Status struct */ - uint32_t Info; - uint32_t HashCRC; -} RX_STAT_TypeDef; - -typedef struct { /* TX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} TX_DESC_TypeDef; - -typedef struct { /* TX Status struct */ - uint32_t Info; -} TX_STAT_TypeDef; - - -/* EMAC variables located in AHB SRAM bank 1*/ -#define AHB_SRAM_BANK1_BASE 0x2007c000UL -#define RX_DESC_BASE (AHB_SRAM_BANK1_BASE ) -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_DESC_TypeDef */ -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_STAT_TypeDef */ -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*(2*4)) /* 2 * uint32_t, see TX_DESC_TypeDef */ -#define ETH_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*(1*4)) /* 1 * uint32_t, see TX_STAT_TypeDef */ - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define ETH_BUF(i) ( ETH_BUF_BASE + ETH_FRAG_SIZE*i ) -#define ETH_NUM_BUFFERS ( NUM_TX_FRAG + NUM_RX_FRAG + 1 ) /* There are in fact 2 more buffers than descriptors as the two Tx descriptors use the same buffer to speed up the uip Tx. */ - - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000003C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#define MCMD_READ 0x00000001 /* MII Read */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* ENET Device Revision ID */ -#define OLD_EMAC_MODULE_ID 0x39022000 /* Rev. ID for first rev '-' */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ -#define PHY_AUTO_NEG_COMPLETE 0x0020 /* Auto negotiation have finished. */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h deleted file mode 100644 index dae68745f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \defgroup clock Clock interface - * - * The clock interface is the interface between the \ref timer "timer library" - * and the platform specific clock functionality. The clock - * interface must be implemented for each platform that uses the \ref - * timer "timer library". - * - * The clock interface does only one this: it measures time. The clock - * interface provides a macro, CLOCK_SECOND, which corresponds to one - * second of system time. - * - * \sa \ref timer "Timer library" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "clock-arch.h" - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init(void); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -clock_time_t clock_time(void); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND (clock_time_t)32 -#endif - -#endif /* __CLOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c deleted file mode 100644 index a1135026c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c +++ /dev/null @@ -1,579 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Originally adapted from file written by Andreas Dannenberg. Supplied with permission. */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "EthDev_LPC17xx.h" - -/* Time to wait between each inspection of the link status. */ -#define emacWAIT_FOR_LINK_TO_ESTABLISH ( 500 / portTICK_PERIOD_MS ) - -/* Short delay used in several places during the initialisation process. */ -#define emacSHORT_DELAY ( 2 ) - -/* Hardware specific bit definitions. */ -#define emacLINK_ESTABLISHED ( 0x0001 ) -#define emacFULL_DUPLEX_ENABLED ( 0x0004 ) -#define emac10BASE_T_MODE ( 0x0002 ) -#define emacPINSEL2_VALUE 0x50150105 - -/* If no buffers are available, then wait this long before looking again.... */ -#define emacBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Index to the Tx descriptor that is always used first for every Tx. The second -descriptor is then used to re-send in order to speed up the uIP Tx process. */ -#define emacTX_DESC_INDEX ( 0 ) - -#define PCONP_PCENET 0x40000000 -/*-----------------------------------------------------------*/ - -/* - * Configure both the Rx and Tx descriptors during the init process. - */ -static void prvInitDescriptors( void ); - -/* - * Setup the IO and peripherals required for Ethernet communication. - */ -static void prvSetupEMACHardware( void ); - -/* - * Control the auto negotiate process. - */ -static void prvConfigurePHY( void ); - -/* - * Wait for a link to be established, then setup the PHY according to the link - * parameters. - */ -static long prvSetupLinkStatus( void ); - -/* - * Search the pool of buffers to find one that is free. If a buffer is found - * mark it as in use before returning its address. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return an allocated buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Send lValue to the lPhyReg within the PHY. - */ -static long prvWritePHY( long lPhyReg, long lValue ); - -/* - * Read a value from ucPhyReg within the PHY. *plStatus will be set to - * pdFALSE if there is an error. - */ -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/* Each ucBufferInUse index corresponds to a position in the pool of buffers. -If the index contains a 1 then the buffer within pool is in use, if it -contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ ETH_NUM_BUFFERS ] = { pdFALSE }; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -unsigned char * uip_buf; - -/* Store the length of the data being sent so the data can be sent twice. The -value will be set back to 0 once the data has been sent twice. */ -static unsigned short usSendLen = 0; - -/*-----------------------------------------------------------*/ - -long lEMACInit( void ) -{ -long lReturn = pdPASS; -unsigned long ulID1, ulID2; - - /* Reset peripherals, configure port pins and registers. */ - prvSetupEMACHardware(); - - /* Check the PHY part number is as expected. */ - ulID1 = prvReadPHY( PHY_REG_IDR1, &lReturn ); - ulID2 = prvReadPHY( PHY_REG_IDR2, &lReturn ); - if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFF0UL ) ) == DP83848C_ID ) - { - /* Set the Ethernet MAC Address registers */ - LPC_EMAC->SA0 = ( configMAC_ADDR0 << 8 ) | configMAC_ADDR1; - LPC_EMAC->SA1 = ( configMAC_ADDR2 << 8 ) | configMAC_ADDR3; - LPC_EMAC->SA2 = ( configMAC_ADDR4 << 8 ) | configMAC_ADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - prvInitDescriptors(); - - /* Receive broadcast and perfect match packets */ - LPC_EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Setup the PHY. */ - prvConfigurePHY(); - } - else - { - lReturn = pdFAIL; - } - - /* Check the link status. */ - if( lReturn == pdPASS ) - { - lReturn = prvSetupLinkStatus(); - } - - if( lReturn == pdPASS ) - { - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* Reset all interrupts */ - LPC_EMAC->IntClear = ( INT_RX_OVERRUN | INT_RX_ERR | INT_RX_FIN | INT_RX_DONE | INT_TX_UNDERRUN | INT_TX_ERR | INT_TX_FIN | INT_TX_DONE | INT_SOFT_INT | INT_WAKEUP ); - - /* Enable receive and transmit mode of MAC Ethernet core */ - LPC_EMAC->Command |= ( CR_RX_EN | CR_TX_EN ); - LPC_EMAC->MAC1 |= MAC1_REC_EN; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < ETH_NUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) ETH_BUF( x ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitDescriptors( void ) -{ -long x, lNextBuffer = 0; - - for( x = 0; x < NUM_RX_FRAG; x++ ) - { - /* Allocate the next Ethernet buffer to this descriptor. */ - RX_DESC_PACKET( x ) = ETH_BUF( lNextBuffer ); - RX_DESC_CTRL( x ) = RCTRL_INT | ( ETH_FRAG_SIZE - 1 ); - RX_STAT_INFO( x ) = 0; - RX_STAT_HASHCRC( x ) = 0; - - /* The Ethernet buffer is now in use. */ - ucBufferInUse[ lNextBuffer ] = pdTRUE; - lNextBuffer++; - } - - /* Set EMAC Receive Descriptor Registers. */ - LPC_EMAC->RxDescriptor = RX_DESC_BASE; - LPC_EMAC->RxStatus = RX_STAT_BASE; - LPC_EMAC->RxDescriptorNumber = NUM_RX_FRAG - 1; - - /* Rx Descriptors Point to 0 */ - LPC_EMAC->RxConsumeIndex = 0; - - /* A buffer is not allocated to the Tx descriptors until they are actually - used. */ - for( x = 0; x < NUM_TX_FRAG; x++ ) - { - TX_DESC_PACKET( x ) = ( unsigned long ) NULL; - TX_DESC_CTRL( x ) = 0; - TX_STAT_INFO( x ) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - LPC_EMAC->TxDescriptor = TX_DESC_BASE; - LPC_EMAC->TxStatus = TX_STAT_BASE; - LPC_EMAC->TxDescriptorNumber = NUM_TX_FRAG - 1; - - /* Tx Descriptors Point to 0 */ - LPC_EMAC->TxProduceIndex = 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupEMACHardware( void ) -{ -unsigned short us; -long x, lDummy; - - /* Enable P1 Ethernet Pins. */ - LPC_PINCON->PINSEL2 = emacPINSEL2_VALUE; - LPC_PINCON->PINSEL3 = ( LPC_PINCON->PINSEL3 & ~0x0000000F ) | 0x00000005; - - /* Power Up the EMAC controller. */ - LPC_SC->PCONP |= PCONP_PCENET; - vTaskDelay( emacSHORT_DELAY ); - - /* Reset all EMAC internal modules. */ - LPC_EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - LPC_EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM; - - /* A short delay after reset. */ - vTaskDelay( emacSHORT_DELAY ); - - /* Initialize MAC control registers. */ - LPC_EMAC->MAC1 = MAC1_PASS_ALL; - LPC_EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - LPC_EMAC->MAXF = ETH_MAX_FLEN; - LPC_EMAC->CLRT = CLRT_DEF; - LPC_EMAC->IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - LPC_EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - LPC_EMAC->SUPP = SUPP_RES_RMII; - vTaskDelay( emacSHORT_DELAY ); - LPC_EMAC->SUPP = 0; - - /* Put the PHY in reset mode */ - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - - /* Wait for hardware reset to end. */ - for( x = 0; x < 100; x++ ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - us = prvReadPHY( PHY_REG_BMCR, &lDummy ); - if( !( us & MCFG_RES_MII ) ) - { - /* Reset complete */ - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvConfigurePHY( void ) -{ -unsigned short us; -long x, lDummy; - - /* Auto negotiate the configuration. */ - if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - - for( x = 0; x < 10; x++ ) - { - us = prvReadPHY( PHY_REG_BMSR, &lDummy ); - - if( us & PHY_AUTO_NEG_COMPLETE ) - { - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - } -} -/*-----------------------------------------------------------*/ - -static long prvSetupLinkStatus( void ) -{ -long lReturn = pdFAIL, x; -unsigned short usLinkStatus; - - /* Wait with timeout for the link to be established. */ - for( x = 0; x < 10; x++ ) - { - usLinkStatus = prvReadPHY( PHY_REG_STS, &lReturn ); - if( usLinkStatus & emacLINK_ESTABLISHED ) - { - /* Link is established. */ - lReturn = pdPASS; - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - - if( lReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if( usLinkStatus & emacFULL_DUPLEX_ENABLED ) - { - /* Full duplex is enabled. */ - LPC_EMAC->MAC2 |= MAC2_FULL_DUP; - LPC_EMAC->Command |= CR_FULL_DUP; - LPC_EMAC->IPGT = IPGT_FULL_DUP; - } - else - { - /* Half duplex mode. */ - LPC_EMAC->IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if( usLinkStatus & emac10BASE_T_MODE ) - { - /* 10MBit mode. */ - LPC_EMAC->SUPP = 0; - } - else - { - /* 100MBit mode. */ - LPC_EMAC->SUPP = SUPP_SPEED; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < ETH_NUM_BUFFERS; ul++ ) - { - if( ETH_BUF( ul ) == ( unsigned long ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetEMACRxData( void ) -{ -unsigned long ulLen = 0; -long lIndex; - - if( LPC_EMAC->RxProduceIndex != LPC_EMAC->RxConsumeIndex ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - ulLen = ( RX_STAT_INFO( LPC_EMAC->RxConsumeIndex ) & RINFO_SIZE ) - 3; - uip_buf = ( unsigned char * ) RX_DESC_PACKET( LPC_EMAC->RxConsumeIndex ); - - /* Allocate a new buffer to the descriptor. */ - RX_DESC_PACKET( LPC_EMAC->RxConsumeIndex ) = ( unsigned long ) prvGetNextBuffer(); - - /* Move the consume index onto the next position, ensuring it wraps to - the beginning at the appropriate place. */ - lIndex = LPC_EMAC->RxConsumeIndex; - - lIndex++; - if( lIndex >= NUM_RX_FRAG ) - { - lIndex = 0; - } - - LPC_EMAC->RxConsumeIndex = lIndex; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vSendEMACTxData( unsigned short usTxDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free, indicated by its buffer being - NULL. */ - while( TX_DESC_PACKET( emacTX_DESC_INDEX ) != ( unsigned long ) NULL ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > emacBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - break; - } - } - - /* Setup the Tx descriptor for transmission. Remember the length of the - data being sent so the second descriptor can be used to send it again from - within the ISR. */ - usSendLen = usTxDataLen; - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) uip_buf; - TX_DESC_CTRL( emacTX_DESC_INDEX ) = ( usTxDataLen | TCTRL_LAST | TCTRL_INT ); - LPC_EMAC->TxProduceIndex = ( emacTX_DESC_INDEX + 1 ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static long prvWritePHY( long lPhyReg, long lValue ) -{ -const long lMaxTime = 10; -long x; - - LPC_EMAC->MADR = DP83848C_DEF_ADR | lPhyReg; - LPC_EMAC->MWTD = lValue; - - x = 0; - for( x = 0; x < lMaxTime; x++ ) - { - if( ( LPC_EMAC->MIND & MIND_BUSY ) == 0 ) - { - /* Operation has finished. */ - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - if( x < lMaxTime ) - { - return pdPASS; - } - else - { - return pdFAIL; - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ) -{ -long x; -const long lMaxTime = 10; - - LPC_EMAC->MADR = DP83848C_DEF_ADR | ucPhyReg; - LPC_EMAC->MCMD = MCMD_READ; - - for( x = 0; x < lMaxTime; x++ ) - { - /* Operation has finished. */ - if( ( LPC_EMAC->MIND & MIND_BUSY ) == 0 ) - { - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - LPC_EMAC->MCMD = 0; - - if( x >= lMaxTime ) - { - *plStatus = pdFAIL; - } - - return( LPC_EMAC->MRDD ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -unsigned long ulStatus; -long lHigherPriorityTaskWoken = pdFALSE; - - ulStatus = LPC_EMAC->IntStatus; - - /* Clear the interrupt. */ - LPC_EMAC->IntClear = ulStatus; - - if( ulStatus & INT_RX_DONE ) - { - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - } - - if( ulStatus & INT_TX_DONE ) - { - if( usSendLen > 0 ) - { - /* Send the data again, using the second descriptor. As there are - only two descriptors the index is set back to 0. */ - TX_DESC_PACKET( ( emacTX_DESC_INDEX + 1 ) ) = TX_DESC_PACKET( emacTX_DESC_INDEX ); - TX_DESC_CTRL( ( emacTX_DESC_INDEX + 1 ) ) = ( usSendLen | TCTRL_LAST | TCTRL_INT ); - LPC_EMAC->TxProduceIndex = ( emacTX_DESC_INDEX ); - - /* This is the second Tx so set usSendLen to 0 to indicate that the - Tx descriptors will be free again. */ - usSendLen = 0UL; - } - else - { - /* The Tx buffer is no longer required. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) NULL; - } - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c deleted file mode 100644 index 319fb1c18..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[ 128 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", (int)lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ -extern long uxParTextGetLED( unsigned long ulLED ); -const unsigned long ulLEDNo = 3; - - ( void ) arg; - - if( uxParTextGetLED( ulLEDNo ) == 0 ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED

", pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c deleted file mode 100644 index 0c390d0a8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include -#include - -#include "uipopt.h" -#include "psock.h" -#include "uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void -buf_setup(struct psock_buf *buf, - u8_t *bufptr, u16_t bufsize) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufdata(struct psock_buf *buf, u16_t len, - u8_t **dataptr, u16_t *datalen) -{ - ( void ) len; - if(*datalen < buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } else if(*datalen == buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } else { - memcpy(buf->ptr, *dataptr, buf->left); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufto(register struct psock_buf *buf, u8_t endmarker, - register u8_t **dataptr, register u16_t *datalen) -{ - u8_t c; - while(buf->left > 0 && *datalen > 0) { - c = *buf->ptr = **dataptr; - ++*dataptr; - ++buf->ptr; - --*datalen; - --buf->left; - - if(c == endmarker) { - return BUF_FOUND; - } - } - - if(*datalen == 0) { - return BUF_NOT_FOUND; - } - - while(*datalen > 0) { - c = **dataptr; - --*datalen; - ++*dataptr; - - if(c == endmarker) { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} -/*---------------------------------------------------------------------------*/ -static char -send_data(register struct psock *s) -{ - if(s->state != STATE_DATA_SENT || uip_rexmit()) { - if(s->sendlen > uip_mss()) { - uip_send(s->sendptr, uip_mss()); - } else { - uip_send(s->sendptr, s->sendlen); - } - s->state = STATE_DATA_SENT; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static char -data_acked(register struct psock *s) -{ - if(s->state == STATE_DATA_SENT && uip_acked()) { - if(s->sendlen > uip_mss()) { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } else { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - s->state = STATE_ACKED; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_send(register struct psock *s, const char *buf, - unsigned int len)) -{ - PT_BEGIN(&s->psockpt); - - /* If there is no data to send, we exit immediately. */ - if(len == 0) { - PT_EXIT(&s->psockpt); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = (unsigned char*)buf; - s->sendlen = len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while(s->sendlen > 0) { - - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_generator_send(register struct psock *s, - unsigned short (*generate)(void *), void *arg)) -{ - PT_BEGIN(&s->psockpt); - - /* Ensure that there is a generator function to call. */ - if(generate == NULL) { - PT_EXIT(&s->psockpt); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate(arg); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do { - /* Call the generator function again if we are called to perform a - retransmission. */ - if(uip_rexmit()) { - generate(arg); - } - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } while(s->sendlen > 0); - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -u16_t -psock_datalen(struct psock *psock) -{ - return psock->bufsize - psock->buf.left; -} -/*---------------------------------------------------------------------------*/ -char -psock_newdata(struct psock *s) -{ - if(s->readlen > 0) { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } else if(s->state == STATE_READ) { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } else if(uip_newdata()) { - /* There is new data that has not been consumed. */ - return 1; - } else { - /* There is no new data. */ - return 0; - } -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char*)psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while((buf_bufto(&psock->buf, c, - &psock->readptr, - &psock->readlen) & BUF_FOUND) == 0); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readbuf(register struct psock *psock)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char * ) psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - printf("Waited for newdata\n"); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while(buf_bufdata(&psock->buf, psock->bufsize, - &psock->readptr, - &psock->readlen) != BUF_FULL); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -void -psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup(&psock->buf, (unsigned char*) buffer, buffersize); - PT_INIT(&psock->pt); - PT_INIT(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c deleted file mode 100644 index 8c270b233..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c +++ /dev/null @@ -1,127 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include "clock.h" -#include "timer.h" - -/*---------------------------------------------------------------------------*/ -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void -timer_set(struct timer *t, clock_time_t interval) -{ - t->interval = interval; - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_rester() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void -timer_reset(struct timer *t) -{ - t->start += t->interval; -} -/*---------------------------------------------------------------------------*/ -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void -timer_restart(struct timer *t) -{ - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int -timer_expired(struct timer *t) -{ - return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval; -} -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c deleted file mode 100644 index 1303bb65c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "EthDev_LPC17xx.h" -#include "EthDev.h" -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - while( lEMACInit() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - LPC_EMAC->IntEnable = ( INT_RX_DONE | INT_TX_DONE ); - - /* Set the interrupt priority to the max permissible to cause some - interrupt nesting. */ - NVIC_SetPriority( ENET_IRQn, configEMAC_INTERRUPT_PRIORITY ); - - /* Enable the interrupt. */ - NVIC_EnableIRQ( ENET_IRQn ); - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ulGetEMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendEMACTxData( uip_len ); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -const unsigned long ulLEDNo = 3; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Set LED7. */ - vParTestSetLED( ulLEDNo, pdFALSE ); - } - else - { - /* Clear LED7. */ - vParTestSetLED( ulLEDNo, pdTRUE ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c deleted file mode 100644 index d323e99b9..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c +++ /dev/null @@ -1,1906 +0,0 @@ -#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/ - -/** - * \defgroup uip The uIP TCP/IP stack - * @{ - * - * uIP is an implementation of the TCP/IP protocol stack intended for - * small 8-bit and 16-bit microcontrollers. - * - * uIP provides the necessary protocols for Internet communication, - * with a very small code footprint and RAM requirements - the uIP - * code size is on the order of a few kilobytes and RAM usage is on - * the order of a few hundred bytes. - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ - -#include "uip.h" -#include "uipopt.h" -#include "uip_arch.h" - -#if UIP_CONF_IPV6 -#include "uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ -/* Variable definitions. */ - - -/* The IP address of this host. If it is defined to be fixed (by - setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set - here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 -const uip_ipaddr_t uip_hostaddr = - {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), - HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; -const uip_ipaddr_t uip_draddr = - {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), - HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; -const uip_ipaddr_t uip_netmask = - {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), - HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; -#else -uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -static const uip_ipaddr_t all_ones_addr = -#if UIP_CONF_IPV6 - {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; -#else /* UIP_CONF_IPV6 */ - {0xffff,0xffff}; -#endif /* UIP_CONF_IPV6 */ -static const uip_ipaddr_t all_zeroes_addr = -#if UIP_CONF_IPV6 - {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; -#else /* UIP_CONF_IPV6 */ - {0x0000,0x0000}; -#endif /* UIP_CONF_IPV6 */ - -#if UIP_FIXEDETHADDR -const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, - UIP_ETHADDR1, - UIP_ETHADDR2, - UIP_ETHADDR3, - UIP_ETHADDR4, - UIP_ETHADDR5}}; -#else -struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}; -#endif - -#ifndef UIP_CONF_EXTERNAL_BUFFER - -#ifdef __ICCARM__ - #pragma data_alignment=4 - u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains incoming packets. */ -#else - u8_t uip_buf[UIP_BUFSIZE + 2] ALIGN_STRUCT_END; /* The packet buffer that contains incoming packets. */ -#endif - -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -void *uip_appdata; /* The uip_appdata pointer points to - application data. */ -void *uip_sappdata; /* The uip_appdata pointer points to - the application data which is to - be sent. */ -#if UIP_URGDATA > 0 -void *uip_urgdata; /* The uip_urgdata pointer points to - urgent data (out-of-band data), if - present. */ -u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -u16_t uip_len, uip_slen; - /* The uip_len is either 8 or 16 bits, - depending on the maximum packet - size. */ - -u8_t uip_flags; /* The uip_flags variable is used for - communication between the TCP/IP stack - and the application program. */ -struct uip_conn *uip_conn; /* uip_conn always points to the current - connection. */ - -struct uip_conn uip_conns[UIP_CONNS]; - /* The uip_conns array holds all TCP - connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - /* The uip_listenports list all currently - listning ports. */ -#if UIP_UDP -struct uip_udp_conn *uip_udp_conn; -struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -static u16_t ipid; /* Ths ipid variable is an increasing - number that is used for the IP ID - field. */ - -void uip_setipid(u16_t id) { ipid = id; } - -static u8_t iss[4]; /* The iss variable is used for the TCP - initial sequence number. */ - -#if UIP_ACTIVE_OPEN -static u16_t lastport; /* Keeps track of the last port used for - a new connection. */ -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[4]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S (1 << 6) - -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - - -/* Macros. */ -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0]) -#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) - - -#if UIP_STATISTICS == 1 -struct uip_stats uip_stat; -#define UIP_STAT(s) s -#else -#define UIP_STAT(s) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 -#include -void uip_log(char *msg); -#define UIP_LOG(m) uip_log(m) -#else -#define UIP_LOG(m) -#endif /* UIP_LOGGING == 1 */ - -#if ! UIP_ARCH_ADD32 -void -uip_add32(u8_t *op32, u16_t op16) -{ - uip_acc32[3] = op32[3] + (op16 & 0xff); - uip_acc32[2] = op32[2] + (op16 >> 8); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if(uip_acc32[2] < (op16 >> 8)) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - - - if(uip_acc32[3] < (op16 & 0xff)) { - ++uip_acc32[2]; - if(uip_acc32[2] == 0) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - } -} - -#endif /* UIP_ARCH_ADD32 */ - -#if ! UIP_ARCH_CHKSUM -/*---------------------------------------------------------------------------*/ -static u16_t -chksum(u16_t sum, const u8_t *data, u16_t len) -{ - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while(dataptr < last_byte) { /* At least two more bytes */ - t = (dataptr[0] << 8) + dataptr[1]; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - dataptr += 2; - } - - if(dataptr == last_byte) { - t = (dataptr[0] << 8) + 0; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; -} -/*---------------------------------------------------------------------------*/ -u16_t -uip_chksum(u16_t *data, u16_t len) -{ - return htons(chksum(0, (u8_t *)data, len)); -} -/*---------------------------------------------------------------------------*/ -#ifndef UIP_ARCH_IPCHKSUM -u16_t -uip_ipchksum(void) -{ - u16_t sum; - - sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN); - DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum); - return (sum == 0) ? 0xffff : htons(sum); -} -#endif -/*---------------------------------------------------------------------------*/ -static u16_t -upper_layer_chksum(u8_t proto) -{ - u16_t upper_layer_len; - u16_t sum; - -#if UIP_CONF_IPV6 - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]); -#else /* UIP_CONF_IPV6 */ - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN; -#endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - /* Sum IP source and destination addresses. */ - sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t)); - - /* Sum TCP header and data. */ - sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], - upper_layer_len); - - return (sum == 0) ? 0xffff : htons(sum); -} -/*---------------------------------------------------------------------------*/ -#if UIP_CONF_IPV6 -u16_t -uip_icmp6chksum(void) -{ - return upper_layer_chksum(UIP_PROTO_ICMP6); - -} -#endif /* UIP_CONF_IPV6 */ -/*---------------------------------------------------------------------------*/ -u16_t -uip_tcpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_TCP); -} -/*---------------------------------------------------------------------------*/ -#if UIP_UDP_CHECKSUMS -u16_t -uip_udpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_UDP); -} -#endif /* UIP_UDP_CHECKSUMS */ -#endif /* UIP_ARCH_CHKSUM */ -/*---------------------------------------------------------------------------*/ -void -uip_init(void) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - uip_listenports[c] = 0; - } - for(c = 0; c < UIP_CONNS; ++c) { - uip_conns[c].tcpstateflags = UIP_CLOSED; - } -#if UIP_ACTIVE_OPEN - lastport = 1024; -#endif /* UIP_ACTIVE_OPEN */ - -#if UIP_UDP - for(c = 0; c < UIP_UDP_CONNS; ++c) { - uip_udp_conns[c].lport = 0; - } -#endif /* UIP_UDP */ - - - /* IPv4 initialization. */ -#if UIP_FIXEDADDR == 0 - /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ -#endif /* UIP_FIXEDADDR */ - -} -/*---------------------------------------------------------------------------*/ -#if UIP_ACTIVE_OPEN -struct uip_conn * -uip_connect(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for(c = 0; c < UIP_CONNS; ++c) { - conn = &uip_conns[c]; - if(conn->tcpstateflags != UIP_CLOSED && - conn->lport == htons(lastport)) { - goto again; - } - } - - conn = 0; - for(c = 0; c < UIP_CONNS; ++c) { - cconn = &uip_conns[c]; - if(cconn->tcpstateflags == UIP_CLOSED) { - conn = cconn; - break; - } - if(cconn->tcpstateflags == UIP_TIME_WAIT) { - if(conn == 0 || - cconn->timer > conn->timer) { - conn = cconn; - } - } - } - - if(conn == 0) { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = iss[0]; - conn->snd_nxt[1] = iss[1]; - conn->snd_nxt[2] = iss[2]; - conn->snd_nxt[3] = iss[3]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons(lastport); - conn->rport = rport; - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - - return conn; -} -#endif /* UIP_ACTIVE_OPEN */ -/*---------------------------------------------------------------------------*/ -#if UIP_UDP -struct uip_udp_conn * -uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == htons(lastport)) { - goto again; - } - } - - - conn = 0; - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == 0) { - conn = &uip_udp_conns[c]; - break; - } - } - - if(conn == 0) { - return 0; - } - - conn->lport = HTONS(lastport); - conn->rport = rport; - if(ripaddr == NULL) { - memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t)); - } else { - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - } - conn->ttl = UIP_TTL; - - return conn; -} -#endif /* UIP_UDP */ -/*---------------------------------------------------------------------------*/ -void -uip_unlisten(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == port) { - uip_listenports[c] = 0; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -void -uip_listen(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == 0) { - uip_listenports[c] = port; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -/* XXX: IP fragment reassembly: not well-tested. */ - -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 -#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) -static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; -static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, - 0x0f, 0x07, 0x03, 0x01}; -static u16_t uip_reasslen; -static u8_t uip_reassflags; -#define UIP_REASS_FLAG_LASTFRAG 0x01 -static u8_t uip_reasstmr; - -#define IP_MF 0x20 - -static u8_t -uip_reass(void) -{ - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if(uip_reasstmr == 0) { - memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - /* Clear the bitmap. */ - memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap)); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && - BUF->srcipaddr[1] == FBUF->srcipaddr[1] && - BUF->destipaddr[0] == FBUF->destipaddr[0] && - BUF->destipaddr[1] == FBUF->destipaddr[1] && - BUF->ipid[0] == FBUF->ipid[0] && - BUF->ipid[1] == FBUF->ipid[1]) { - - len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; - offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if(offset > UIP_REASS_BUFSIZE || - offset + len > UIP_REASS_BUFSIZE) { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy(&uip_reassbuf[UIP_IPH_LEN + offset], - (char *)BUF + (int)((BUF->vhl & 0x0f) * 4), - len); - - /* Update the bitmap. */ - if(offset / (8 * 8) == (offset + len) / (8 * 8)) { - /* If the two endpoints are in the same byte, we only update - that byte. */ - - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7] & - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } else { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7]; - for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { - uip_reassbitmap[i] = 0xff; - } - uip_reassbitmap[(offset + len) / (8 * 8)] |= - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - - if((BUF->ipoffset[0] & IP_MF) == 0) { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { - if(uip_reassbitmap[i] != 0xff) { - goto nullreturn; - } - } - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if(uip_reassbitmap[uip_reasslen / (8 * 8)] != - (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy(BUF, FBUF, uip_reasslen); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - BUF->len[0] = uip_reasslen >> 8; - BUF->len[1] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - - return uip_reasslen; - } - } - - nullreturn: - return 0; -} -#endif /* UIP_REASSEMBLY */ -/*---------------------------------------------------------------------------*/ -static void -uip_add_rcv_nxt(u16_t n) -{ - uip_add32(uip_conn->rcv_nxt, n); - uip_conn->rcv_nxt[0] = uip_acc32[0]; - uip_conn->rcv_nxt[1] = uip_acc32[1]; - uip_conn->rcv_nxt[2] = uip_acc32[2]; - uip_conn->rcv_nxt[3] = uip_acc32[3]; -} -/*---------------------------------------------------------------------------*/ -void -uip_process(u8_t flag) -{ - register struct uip_conn *uip_connr = uip_conn; - -#if UIP_UDP - if(flag == UIP_UDP_SEND_CONN) { - goto udp_send; - } -#endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if(flag == UIP_POLL_REQUEST) { - if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && - !uip_outstanding(uip_connr)) { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } else if(flag == UIP_TIMER) { -#if UIP_REASSEMBLY - if(uip_reasstmr != 0) { - --uip_reasstmr; - } -#endif /* UIP_REASSEMBLY */ - /* Increase the initial sequence number. */ - if(++iss[3] == 0) { - if(++iss[2] == 0) { - if(++iss[1] == 0) { - ++iss[0]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if(uip_connr->tcpstateflags == UIP_TIME_WAIT || - uip_connr->tcpstateflags == UIP_FIN_WAIT_2) { - ++(uip_connr->timer); - if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } else if(uip_connr->tcpstateflags != UIP_CLOSED) { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if(uip_outstanding(uip_connr)) { - uip_connr->timer = uip_connr->timer - 1; - if(uip_connr->timer == 0) { - if(uip_connr->nrtx == UIP_MAXRTX || - ((uip_connr->tcpstateflags == UIP_SYN_SENT || - uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX)) { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? - 4: - uip_connr->nrtx); - ++(uip_connr->nrtx); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT(++uip_stat.tcp.rexmit); - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - - } - } - } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - goto drop; - } -#if UIP_UDP - if(flag == UIP_UDP_TIMER) { - if(uip_udp_conn->lport != 0) { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } else { - goto drop; - } - } -#endif - - /* This is where the input processing starts. */ - UIP_STAT(++uip_stat.ip.recv); - - /* Start of IP input header processing code. */ - -#if UIP_CONF_IPV6 - /* Check validity of the IP header. */ - if((BUF->vtc & 0xf0) != 0x60) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ipv6: invalid version."); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* Check validity of the IP header. */ - if(BUF->vhl != 0x45) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ip: invalid version or header length."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - - if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) { - uip_len = (BUF->len[0] << 8) + BUF->len[1]; -#if UIP_CONF_IPV6 - uip_len += 40; /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ -#endif /* UIP_CONF_IPV6 */ - } else { - UIP_LOG("ip: packet shorter than reported in IP header."); - goto drop; - } - -#if !UIP_CONF_IPV6 - /* Check the fragment flag. */ - if((BUF->ipoffset[0] & 0x3f) != 0 || - BUF->ipoffset[1] != 0) { -#if UIP_REASSEMBLY - uip_len = uip_reass(); - if(uip_len == 0) { - goto drop; - } -#else /* UIP_REASSEMBLY */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.fragerr); - UIP_LOG("ip: fragment dropped."); - goto drop; -#endif /* UIP_REASSEMBLY */ - } -#endif /* UIP_CONF_IPV6 */ - - if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ -#if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if(BUF->proto == UIP_PROTO_ICMP) { - UIP_LOG("ip: possible ping config packet received."); - goto icmp_input; - } else { - UIP_LOG("ip: packet dropped since no address assigned."); - goto drop; - } -#endif /* UIP_PINGADDRCONF */ - - } else { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ -#if UIP_BROADCAST - DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum()); - if(BUF->proto == UIP_PROTO_UDP && - uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) - /*&& - uip_ipchksum() == 0xffff*/) { - goto udp_input; - } -#endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ -#if !UIP_CONF_IPV6 - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && - BUF->destipaddr[0] != HTONS(0xff02)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - } - -#if !UIP_CONF_IPV6 - if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header - checksum. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.chkerr); - UIP_LOG("ip: bad checksum."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so, - proceed with TCP input - processing. */ - goto tcp_input; - } - -#if UIP_UDP - if(BUF->proto == UIP_PROTO_UDP) { - goto udp_input; - } -#endif /* UIP_UDP */ - -#if !UIP_CONF_IPV6 - /* ICMPv4 processing code follows. */ - if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp."); - goto drop; - } - -#if UIP_PINGADDRCONF - icmp_input: -#endif /* UIP_PINGADDRCONF */ - UIP_STAT(++uip_stat.icmp.recv); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if(ICMPBUF->type != ICMP_ECHO) { - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: not icmp echo."); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ -#if UIP_PINGADDRCONF - if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { - uip_hostaddr[0] = BUF->destipaddr[0]; - uip_hostaddr[1] = BUF->destipaddr[1]; - } -#endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; - } else { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - - /* End of IPv4 input header processing code. */ -#else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - DEBUG_PRINTF("icmp6_input: length %d\n", uip_len); - - if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp6."); - goto drop; - } - - UIP_STAT(++uip_stat.icmp.recv); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) { - if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) { - - if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2])); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr); - uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr); - ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ - memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr)); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - goto send; - - } - goto drop; - } else if(ICMPBUF->type == ICMP6_ECHO) { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - } else { - DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type); - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: unknown ICMP message."); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - -#endif /* !UIP_CONF_IPV6 */ - -#if UIP_UDP - /* UDP input processing. */ - udp_input: - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ -#if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) { - UIP_STAT(++uip_stat.udp.drop); - UIP_STAT(++uip_stat.udp.chkerr); - UIP_LOG("udp: bad checksum."); - goto drop; - } -#else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; -#endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for(uip_udp_conn = &uip_udp_conns[0]; - uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; - ++uip_udp_conn) { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if(uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || - UDPBUF->srcport == uip_udp_conn->rport) && - (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || - uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) { - goto udp_found; - } - } - UIP_LOG("udp: no matching connection found"); - goto drop; - - udp_found: - UIP_STAT(++uip_stat.udp.recv); - uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); - udp_send: - if(uip_slen == 0) { - goto drop; - } - uip_len = uip_slen + UIP_IPUDPH_LEN; - -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - -#if UIP_UDP_CHECKSUMS - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~(uip_udpchksum()); - if(UDPBUF->udpchksum == 0) { - UDPBUF->udpchksum = 0xffff; - } -#endif /* UIP_UDP_CHECKSUMS */ - UIP_STAT(++uip_stat.udp.sent); - goto ip_send_nolen; -#endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input: - UIP_STAT(++uip_stat.tcp.recv); - - /* Start of TCP input header processing code. */ - - if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP - checksum. */ - UIP_STAT(++uip_stat.tcp.drop); - UIP_STAT(++uip_stat.tcp.chkerr); - UIP_LOG("tcp: bad checksum."); - goto drop; - } - - - /* Demultiplex this segment. */ - /* First check any active connections. */ - for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; - ++uip_connr) { - if(uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if((BUF->flags & TCP_CTL) != TCP_SYN) { - goto reset; - } - - tmp16 = BUF->destport; - /* Next, check listening connections. */ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(tmp16 == uip_listenports[c]) - goto found_listen; - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT(++uip_stat.tcp.synrst); - reset: - - /* We do not send resets in response to resets. */ - if(BUF->flags & TCP_RST) { - goto drop; - } - - UIP_STAT(++uip_stat.tcp.rst); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[3]; - BUF->seqno[3] = BUF->ackno[3]; - BUF->ackno[3] = c; - - c = BUF->seqno[2]; - BUF->seqno[2] = BUF->ackno[2]; - BUF->ackno[2] = c; - - c = BUF->seqno[1]; - BUF->seqno[1] = BUF->ackno[1]; - BUF->ackno[1] = c; - - c = BUF->seqno[0]; - BUF->seqno[0] = BUF->ackno[0]; - BUF->ackno[0] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if(++BUF->ackno[3] == 0) { - if(++BUF->ackno[2] == 0) { - if(++BUF->ackno[1] == 0) { - ++BUF->ackno[0]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ - found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for(c = 0; c < UIP_CONNS; ++c) { - if(uip_conns[c].tcpstateflags == UIP_CLOSED) { - uip_connr = &uip_conns[c]; - break; - } - if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) { - if(uip_connr == 0 || - uip_conns[c].timer > uip_connr->timer) { - uip_connr = &uip_conns[c]; - } - } - } - - if(uip_connr == 0) { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT(++uip_stat.tcp.syndrop); - UIP_LOG("tcp: found no unused connections."); - goto drop; - } - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[0] = iss[0]; - uip_connr->snd_nxt[1] = iss[1]; - uip_connr->snd_nxt[2] = iss[2]; - uip_connr->snd_nxt[3] = iss[3]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_add_rcv_nxt(1); - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = - tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ -#if UIP_ACTIVE_OPEN - tcp_send_synack: - BUF->flags = TCP_ACK; - - tcp_send_syn: - BUF->flags |= TCP_SYN; -#else /* UIP_ACTIVE_OPEN */ - tcp_send_synack: - BUF->flags = TCP_SYN | TCP_ACK; -#endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[0] = TCP_OPT_MSS; - BUF->optdata[1] = TCP_OPT_MSS_LEN; - BUF->optdata[2] = (UIP_TCP_MSS) / 256; - BUF->optdata[3] = (UIP_TCP_MSS) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ - found: - uip_conn = uip_connr; - uip_flags = 0; - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if(BUF->flags & TCP_RST) { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG("tcp: got reset, aborting connection."); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - /* Calculated the length of the data, if the application has sent - any data to us. */ - c = (BUF->tcpoffset >> 4) << 2; - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && - ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { - if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - (BUF->seqno[0] != uip_connr->rcv_nxt[0] || - BUF->seqno[1] != uip_connr->rcv_nxt[1] || - BUF->seqno[2] != uip_connr->rcv_nxt[2] || - BUF->seqno[3] != uip_connr->rcv_nxt[3])) { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { - uip_add32(uip_connr->snd_nxt, uip_connr->len); - - if(BUF->ackno[0] == uip_acc32[0] && - BUF->ackno[1] == uip_acc32[1] && - BUF->ackno[2] == uip_acc32[2] && - BUF->ackno[3] == uip_acc32[3]) { - /* Update sequence number. */ - uip_connr->snd_nxt[0] = uip_acc32[0]; - uip_connr->snd_nxt[1] = uip_acc32[1]; - uip_connr->snd_nxt[2] = uip_acc32[2]; - uip_connr->snd_nxt[3] = uip_acc32[3]; - - - /* Do RTT estimation, unless we have done retransmissions. */ - if(uip_connr->nrtx == 0) { - signed char m; - m = uip_connr->rto - uip_connr->timer; - /* This is taken directly from VJs original code in his paper */ - m = m - (uip_connr->sa >> 3); - uip_connr->sa += m; - if(m < 0) { - m = -m; - } - m = m - (uip_connr->sv >> 2); - uip_connr->sv += m; - uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; - - } - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - - } - - /* Do different things depending on in what state the connection is. */ - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - goto drop; -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if((uip_flags & UIP_ACKDATA) && - (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) { - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = - uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_add_rcv_nxt(1); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - - if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - if(uip_outstanding(uip_connr)) { - goto drop; - } - uip_add_rcv_nxt(1 + uip_len); - uip_flags |= UIP_CLOSE; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - } - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if((BUF->flags & TCP_URG) != 0) { -#if UIP_URGDATA > 0 - uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; - if(uip_urglen > uip_len) { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - uip_add_rcv_nxt(uip_urglen); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } else { - uip_urglen = 0; -#else /* UIP_URGDATA > 0 */ - uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]); - uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; -#endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1]; - if(tmp16 > uip_connr->initialmss || - tmp16 == 0) { - tmp16 = uip_connr->initialmss; - } - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { - uip_slen = 0; - UIP_APPCALL(); - - appsend: - - if(uip_flags & UIP_ABORT) { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if(uip_flags & UIP_CLOSE) { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if(uip_slen > 0) { - - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if((uip_flags & UIP_ACKDATA) != 0) { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if(uip_connr->len == 0) { - - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if(uip_slen > uip_connr->mss) { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } else { - - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - uip_connr->nrtx = 0; - apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if(uip_slen > 0 && uip_connr->len > 0) { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - /* Send the packet. */ - goto tcp_send_noopts; - } - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if(uip_flags & UIP_NEWDATA) { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - goto drop; - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } else { - uip_connr->tcpstateflags = UIP_CLOSING; - } - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } else if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_FIN_WAIT_2: - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - goto drop; - - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ - tcp_send_ack: - BUF->flags = TCP_ACK; - tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; - tcp_send_noopts: - BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4; - tcp_send: - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ - BUF->ackno[0] = uip_connr->rcv_nxt[0]; - BUF->ackno[1] = uip_connr->rcv_nxt[1]; - BUF->ackno[2] = uip_connr->rcv_nxt[2]; - BUF->ackno[3] = uip_connr->rcv_nxt[3]; - - BUF->seqno[0] = uip_connr->snd_nxt[0]; - BUF->seqno[1] = uip_connr->snd_nxt[1]; - BUF->seqno[2] = uip_connr->snd_nxt[2]; - BUF->seqno[3] = uip_connr->snd_nxt[3]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr); - - if(uip_connr->tcpstateflags & UIP_STOPPED) { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[0] = BUF->wnd[1] = 0; - } else { - BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); - BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); - } - - tcp_send_noconn: - BUF->ttl = UIP_TTL; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->urgp[0] = BUF->urgp[1] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if UIP_UDP - ip_send_nolen: -#endif /* UIP_UDP */ - -#if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; -#else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - ++ipid; - BUF->ipid[0] = ipid >> 8; - BUF->ipid[1] = ipid & 0xff; - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - UIP_STAT(++uip_stat.tcp.sent); - send: - DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len, - (BUF->len[0] << 8) | BUF->len[1]); - - UIP_STAT(++uip_stat.ip.sent); - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; - drop: - uip_len = 0; - uip_flags = 0; - return; -} -/*---------------------------------------------------------------------------*/ -u16_t -htons(u16_t val) -{ - return HTONS(val); -} -/*---------------------------------------------------------------------------*/ -void -uip_send(const void *data, int len) -{ - if(len > 0) { - uip_slen = len; - if(data != uip_sappdata) { - memcpy(uip_sappdata, (data), uip_slen); - } - } -} -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h deleted file mode 100644 index 82da6fbd2..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h +++ /dev/null @@ -1,1638 +0,0 @@ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ - * - */ - -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "uipopt.h" - -/** - * Repressentation of an IP address. - * - */ -typedef u16_t uip_ip4addr_t[2]; -typedef u16_t uip_ip6addr_t[8]; -#if UIP_CONF_IPV6 -typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ -typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -/* First, the functions that should be called from the - * system. Initialization, the periodic timer and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) - - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init(void); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid(u16_t id); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process(UIP_DATA) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The ususal way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ - uip_process(UIP_TIMER); } while (0) - -/** - * - * - */ -#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_TIMER); } while (0) - -/** - * Reuqest that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_POLL_REQUEST); } while (0) - - -#if UIP_UDP -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process(UIP_UDP_TIMER); } while (0) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ - uip_process(UIP_UDP_TIMER); } while (0) - - -#endif /* UIP_UDP */ - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode - */ -#ifndef UIP_CONF_EXTERNAL_BUFFER - extern u8_t uip_buf[UIP_BUFSIZE+2]; -#else - extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. -*/ -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen(u16_t port); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten(u16_t port); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specied host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is avaliable only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote hot. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); - - - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding(conn) ((conn)->len) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * funcion is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -void uip_send(const void *data, int len); - -/** - * The length of any incoming data that is currently avaliable (if avaliable) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() (uip_flags = UIP_CLOSE) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occured that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() (uip_flags = UIP_ABORT) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while(0) - - -/* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() (uip_conn == NULL) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * avaliable through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() (uip_flags & UIP_NEWDATA) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() (uip_flags & UIP_ACKDATA) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() (uip_flags & UIP_CONNECTED) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() (uip_flags & UIP_CLOSE) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() (uip_flags & UIP_ABORT) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() (uip_flags & UIP_TIMEDOUT) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() (uip_flags & UIP_REXMIT) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() (uip_flags & UIP_POLL) - -/** - * Get the initial maxium segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() (uip_conn->initialmss) - -/** - * Get the current maxium segment size that can be sent on the current - * connection. - * - * The current maxiumum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() (uip_conn->mss) - -/** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ -struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove(conn) (conn)->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind(conn, port) (conn)->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send(len) uip_send((char *)uip_appdata, len) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ - ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ - ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ - } while(0) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ - ((u16_t *)(addr))[0] = HTONS((addr0)); \ - ((u16_t *)(addr))[1] = HTONS((addr1)); \ - ((u16_t *)(addr))[2] = HTONS((addr2)); \ - ((u16_t *)(addr))[3] = HTONS((addr3)); \ - ((u16_t *)(addr))[4] = HTONS((addr4)); \ - ((u16_t *)(addr))[5] = HTONS((addr5)); \ - ((u16_t *)(addr))[6] = HTONS((addr6)); \ - ((u16_t *)(addr))[7] = HTONS((addr7)); \ - } while(0) - -/** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_copy(dest, src) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ - } while(0) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ - ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ - (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ - (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ - ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ - (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) - - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask(dest, src, mask) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ - } while(0) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons -u16_t htons(u16_t val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -extern void *uip_appdata; - -#if UIP_URGDATA > 0 -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -extern u16_t uip_len; - -/** @} */ - -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whos purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -extern struct uip_conn *uip_conn; -/* The array containing all uIP connections. */ -extern struct uip_conn uip_conns[UIP_CONNS]; -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ - - -#if UIP_UDP -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats { - struct { - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - } icmp; /**< ICMP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#if UIP_UDP - struct { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -}; - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -extern struct uip_stats uip_stat; - - -/*---------------------------------------------------------------------------*/ -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ -/*---------------------------------------------------------------------------*/ -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * infomation. - */ -extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutualy exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ - -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process(u8_t flag); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macrose defined in this file. */ - -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#if UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_tcpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/* The ICMP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_icmpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#else /* !UIP_CONF_IPV6 */ - u8_t flags, reserved1, reserved2, reserved3; - u8_t icmp6data[16]; - u8_t options[1]; -#endif /* !UIP_CONF_IPV6 */ -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - -/* The UDP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_udpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, - destport; - u16_t udplen; - u16_t udpchksum; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -/* Header sizes. */ -#if UIP_CONF_IPV6 -#define UIP_IPH_LEN 40 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + - UDP - header */ -#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + - TCP - header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN - - -#if UIP_FIXEDADDR -extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ - - - -/** - * Representation of a 48-bit Ethernet address. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_addr { - u8_t addr[6]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum(void); - - -#endif /* __UIP_H__ */ - - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h deleted file mode 100644 index 5ea45787c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c deleted file mode 100644 index 44c7975fc..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c +++ /dev/null @@ -1,439 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ - * - */ - - -#include "uip_arp.h" - -#include - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct arp_hdr { - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - u16_t sipaddr[2]; - struct uip_eth_addr dhwaddr; - u16_t dipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct ethip_hdr { - struct uip_eth_hdr ethhdr; - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry { - u16_t ipaddr[2]; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = - {{0xff,0xff,0xff,0xff,0xff,0xff}}; -static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff}; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static u16_t ipaddr[2]; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ((struct arp_hdr *)&uip_buf[0]) -#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) -/*-----------------------------------------------------------------------------------*/ -/** - * Initialize the ARP module. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_init(void) -{ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - memset(arp_table[i].ipaddr, 0, 4); - } -} -/*-----------------------------------------------------------------------------------*/ -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_timer(void) -{ - struct arp_entry *tabptr; - - ++arptime; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && - arptime - tabptr->time >= UIP_ARP_MAXAGE) { - memset(tabptr->ipaddr, 0, 4); - } - } - -} -/*-----------------------------------------------------------------------------------*/ -static void -uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) -{ - register struct arp_entry *tabptr; - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - - tabptr = &arp_table[i]; - /* Only check those entries that are actually in use. */ - if(tabptr->ipaddr[0] != 0 && - tabptr->ipaddr[1] != 0) { - - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if(ipaddr[0] == tabptr->ipaddr[0] && - ipaddr[1] == tabptr->ipaddr[1]) { - - /* An old entry found, update this and return. */ - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(tabptr->ipaddr[0] == 0 && - tabptr->ipaddr[1] == 0) { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if(i == UIP_ARPTAB_SIZE) { - tmpage = 0; - c = 0; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(arptime - tabptr->time > tmpage) { - tmpage = arptime - tabptr->time; - c = i; - } - } - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - memcpy(tabptr->ipaddr, ipaddr, 4); - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; -} -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -#if 1 -void -uip_arp_ipin(void) -{ - uip_len -= sizeof(struct uip_eth_hdr); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if((IPBUF->srcipaddr[0] & uip_netmask[0]) != - (uip_hostaddr[0] & uip_netmask[0])) { - return; - } - if((IPBUF->srcipaddr[1] & uip_netmask[1]) != - (uip_hostaddr[1] & uip_netmask[1])) { - return; - } - uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); - - return; -} -#endif /* 0 */ -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_arpin(void) -{ - - if(uip_len < sizeof(struct arp_hdr)) { - uip_len = 0; - return; - } - uip_len = 0; - - switch(BUF->opcode) { - case HTONS(ARP_REQUEST): - /* ARP request. If it asked for our address, we send out a - reply. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - - /* The reply opcode is 2. */ - BUF->opcode = HTONS(2); - - memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); - - BUF->dipaddr[0] = BUF->sipaddr[0]; - BUF->dipaddr[1] = BUF->sipaddr[1]; - BUF->sipaddr[0] = uip_hostaddr[0]; - BUF->sipaddr[1] = uip_hostaddr[1]; - - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - uip_len = sizeof(struct arp_hdr); - } - break; - case HTONS(ARP_REPLY): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - } - break; - } - - return; -} -/*-----------------------------------------------------------------------------------*/ -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_out(void) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) { - memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6); - } else { - /* Check if the destination address is on the local network. */ - if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy(ipaddr, uip_draddr); - } else { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy(ipaddr, IPBUF->destipaddr); - } - - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) { - break; - } - } - - if(i == UIP_ARPTAB_SIZE) { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - - memset(BUF->ethhdr.dest.addr, 0xff, 6); - memset(BUF->dhwaddr.addr, 0x00, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - - uip_ipaddr_copy(BUF->dipaddr, ipaddr); - uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr); - BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ - BUF->hwtype = HTONS(ARP_HWTYPE_ETH); - BUF->protocol = HTONS(UIP_ETHTYPE_IP); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof(struct arp_hdr); - return; - } - - /* Build an ethernet header. */ - memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); - } - memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - - IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); - - uip_len += sizeof(struct uip_eth_hdr); -} -/*-----------------------------------------------------------------------------------*/ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h deleted file mode 100644 index b6b2b66b4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ - * - */ - -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "uip.h" - - -extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_hdr { - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -}PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IP6 0x86dd - - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init(void); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ -void uip_arp_ipin(void); -//#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin(void); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out(void); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer(void); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1];\ - uip_ethaddr.addr[2] = eaddr.addr[2];\ - uip_ethaddr.addr[3] = eaddr.addr[3];\ - uip_ethaddr.addr[4] = eaddr.addr[4];\ - uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) - -/** @} */ -/** @} */ - -#endif /* __UIP_ARP_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h deleted file mode 100644 index f7c3e0f80..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h +++ /dev/null @@ -1,539 +0,0 @@ -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * uipopt.h. This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Most of the configuration options in the uipopt.h should not - * be changed, but rather the per-project uip-conf.h file. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ - * - */ - -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \name Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are appliciable only - * if uIP should be run over Ethernet. - * - * All of these should be changed to suit your project. -*/ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#define UIP_FIXEDADDR 0 - -/** - * Ping IP address asignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name IP configuration options - * @{ - * - */ -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additonal amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#define UIP_REASSEMBLY 0 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 40 - -/** @} */ - -/*------------------------------------------------------------------------------*/ -/** - * \name UDP configuration options - * @{ - */ - -/** - * Toggles wether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name TCP configuration options - * @{ - */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#define UIP_ACTIVE_OPEN 1 - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximatly 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) is the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configiration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maxium age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \name General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1500 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE 1500 -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log(char *msg); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_CONF_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either BIG_ENDIAN (Motorola byte order) or - * LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#ifdef UIP_CONF_BYTE_ORDER -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -#else /* UIP_CONF_BYTE_ORDER */ -#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -#endif /* UIP_CONF_BYTE_ORDER */ - -/** @} */ -/*------------------------------------------------------------------------------*/ - -/** - * \name Appication specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - -void httpd_appcall(void); -#define UIP_APPCALL httpd_appcall - -struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; -}; -typedef struct httpd_state uip_tcp_appstate_t - \endcode - */ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ -/** @} */ -/** @} */ - -#endif /* __UIPOPT_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf deleted file mode 100644 index 607fc9e6d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf +++ /dev/null @@ -1,45 +0,0 @@ -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%LINUX% -DriverVer=08/17/2004,0.0.2.0 -; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com) -; released under GNU General Public License - -[Manufacturer] -%LINUX%=GSerialDeviceList - -[GSerialDeviceList] -%GSERIAL%=GSerialInstall, USB\VID_FFFF&PID_0005 - -[DestinationDirs] -DefaultDestDir=10,System32\Drivers - -[GSerialInstall] -CopyFiles=GSerialCopyFiles -AddReg=GSerialAddReg - -[GSerialCopyFiles] -usbser.sys - -[GSerialAddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[GSerialInstall.Services] -AddService = usbser,0x0002,GSerialService - -[GSerialService] -DisplayName = %GSERIAL_DISPLAY_NAME% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\System32\Drivers\usbser.sys -LoadOrderGroup = Base - -[Strings] -LINUX = "Linux" -GSERIAL = "USB CDC serial port emulation" -GSERIAL_DISPLAY_NAME = "USB CDC serial port emulation" \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h deleted file mode 100644 index 6c5e75d55..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include "LPC17xx.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configMAX_PRIORITIES ( 5 ) -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 100000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 - -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 32 priority levels */ -#endif - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) ) - -/* Priorities passed to NVIC_SetPriority() do not require shifting as the -function does the shifting itself. Note these priorities need to be equal to -or lower than configMAX_SYSCALL_INTERRUPT_PRIORITY - therefore the numeric -value needs to be equal to or greater than 5 (on the Cortex-M3 the lower the -numeric value the higher the interrupt priority). */ -#define configEMAC_INTERRUPT_PRIORITY 5 -#define configUSB_INTERRUPT_PRIORITY 6 - - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -extern void vConfigureTimerForRunTimeStats( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() TIM0->TC - - -/* The structure that is passed on the xLCDQueue. Put here for convenience. */ -typedef struct -{ - char *pcMessage; -} xLCDMessage; - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h deleted file mode 100644 index 3e1c6731c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef LED_HH -#define LED_HH - -void vToggleLED( unsigned long ulLED ); -void vSetLEDState( unsigned long ulLED, long lState ); -long lGetLEDState( unsigned long ulLED ); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s deleted file mode 100644 index 5c7a94ea1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s +++ /dev/null @@ -1,364 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2009 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * - * STARTUP_FROM_RESET - * - * If defined, the program will startup from power-on/reset. If not defined - * the program will just loop endlessly from power-on/reset. - * - * This definition is not defined by default on this target because the - * debugger is unable to reset this target and maintain control of it over the - * JTAG interface. The advantage of doing this is that it allows the debugger - * to reset the CPU and run programs from a known reset CPU state on each run. - * It also acts as a safety net if you accidently download a program in FLASH - * that crashes and prevents the debugger from taking control over JTAG - * rendering the target unusable over JTAG. The obvious disadvantage of doing - * this is that your application will not startup without the debugger. - * - * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst - * you are developing and only define STARTUP_FROM_RESET when development is - * complete.A - * - * - * CONFIGURE_USB - * - * If defined, the USB clock will be configured. - * - *****************************************************************************/ - -#include - -#if OSCILLATOR_CLOCK_FREQUENCY==12000000 - -#ifdef FULL_SPEED - -/* Fosc = 12Mhz, Fcco = 400Mhz, cclk = 100Mhz */ -#ifndef PLL0CFG_VAL -#define PLL0CFG_VAL ((49 << PLL0CFG_MSEL0_BIT) | (2 << PLL0CFG_NSEL0_BIT)) -#endif - -#ifndef CCLKCFG_VAL -#define CCLKCFG_VAL 3 -#endif - -#ifndef FLASHCFG_VAL -#define FLASHCFG_VAL 0x0000403A -#endif - -#else - -/* Fosc = 12Mhz, Fcco = 288Mhz, cclk = 72Mhz */ -#ifndef PLL0CFG_VAL -#define PLL0CFG_VAL ((11 << PLL0CFG_MSEL0_BIT) | (0 << PLL0CFG_NSEL0_BIT)) -#endif - -#ifndef CCLKCFG_VAL -#define CCLKCFG_VAL 3 -#endif - -#ifndef FLASHCFG_VAL -#define FLASHCFG_VAL 0x0000303A -#endif - -#endif - -/* Fosc = 12Mhz, Fcco = 192Mhz, usbclk = 48Mhz */ -#ifndef PLL1CFG_VAL -#define PLL1CFG_VAL ((3 << PLL1CFG_MSEL1_BIT) | (1 << PLL1CFG_PSEL1_BIT)) -#endif - -#endif - - .global reset_handler - - .syntax unified - - .section .vectors, "ax" - .code 16 - .align 0 - .global _vectors - -.macro DEFAULT_ISR_HANDLER name= - .thumb_func - .weak \name -\name: -1: b 1b /* endless loop */ -.endm - -.extern xPortPendSVHandler -.extern xPortSysTickHandler -.extern vPortSVCHandler -.extern vEMAC_ISR; - -_vectors: - .word __stack_end__ -#ifdef STARTUP_FROM_RESET - .word reset_handler -#else - .word reset_wait -#endif /* STARTUP_FROM_RESET */ - .word NMI_Handler - .word HardFault_Handler - .word MemManage_Handler - .word BusFault_Handler - .word UsageFault_Handler - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word vPortSVCHandler - .word DebugMon_Handler - .word 0 // Reserved - .word xPortPendSVHandler - .word xPortSysTickHandler - .word WDT_IRQHandler - .word TIMER0_IRQHandler - .word TIMER1_IRQHandler - .word TIMER2_IRQHandler - .word TIMER3_IRQHandler - .word UART0_IRQHandler - .word UART1_IRQHandler - .word UART2_IRQHandler - .word UART3_IRQHandler - .word PWM1_IRQHandler - .word I2C0_IRQHandler - .word I2C1_IRQHandler - .word I2C2_IRQHandler - .word SPI_IRQHandler - .word SSP0_IRQHandler - .word SSP1_IRQHandler - .word PLL0_IRQHandler - .word RTC_IRQHandler - .word EINT0_IRQHandler - .word EINT1_IRQHandler - .word EINT2_IRQHandler - .word EINT3_IRQHandler - .word ADC_IRQHandler - .word BOD_IRQHandler - .word USB_IRQHandler - .word CAN_IRQHandler - .word GPDMA_IRQHandler - .word I2S_IRQHandler - .word vEMAC_ISR - .word RIT_IRQHandler - .word MCPWM_IRQHandler - .word QEI_IRQHandler - .word PLL1_IRQHandler - .word USBACT_IRQHandler - .word CANACT_IRQHandler - - .section .init, "ax" - .thumb_func - - reset_handler: -#ifndef __FLASH_BUILD - /* If this is a RAM build, configure vector table offset register to point - to the RAM vector table. */ - ldr r0, =0xE000ED08 - ldr r1, =_vectors - str r1, [r0] -#endif - - ldr r0, =SC_BASE_ADDRESS - - /* Configure PLL0 Multiplier/Divider */ - ldr r1, [r0, #PLL0STAT_OFFSET] - tst r1, #PLL0STAT_PLLC0_STAT - beq 1f - - /* Disconnect PLL0 */ - ldr r1, =PLL0CON_PLLE0 - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] -1: - /* Disable PLL0 */ - ldr r1, =0 - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - - /* Enable main oscillator */ - ldr r1, [r0, #SCS_OFFSET] - orr r1, r1, #SCS_OSCEN - str r1, [r0, #SCS_OFFSET] -1: - ldr r1, [r0, #SCS_OFFSET] - tst r1, #SCS_OSCSTAT - beq 1b - - /* Select main oscillator as the PLL0 clock source */ - ldr r1, =1 - str r1, [r0, #CLKSRCSEL_OFFSET] - - /* Set PLL0CFG */ - ldr r1, =PLL0CFG_VAL - str r1, [r0, #PLL0CFG_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - - /* Enable PLL0 */ - ldr r1, =PLL0CON_PLLE0 - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - -#ifdef CCLKCFG_VAL - /* Set the CPU clock divider */ - ldr r1, =CCLKCFG_VAL - str r1, [r0, #CCLKCFG_OFFSET] -#endif - -#ifdef FLASHCFG_VAL - /* Configure the FLASH accelerator */ - ldr r1, =FLASHCFG_VAL - str r1, [r0, #FLASHCFG_OFFSET] -#endif - - /* Wait for PLL0 to lock */ -1: - ldr r1, [r0, #PLL0STAT_OFFSET] - tst r1, #PLL0STAT_PLOCK0 - beq 1b - - /* PLL0 Locked, connect PLL as clock source */ - mov r1, #(PLL0CON_PLLE0 | PLL0CON_PLLC0) - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - /* Wait for PLL0 to connect */ -1: - ldr r1, [r0, #PLL0STAT_OFFSET] - tst r1, #PLL0STAT_PLLC0_STAT - beq 1b - -#ifdef CONFIGURE_USB - /* Configure PLL1 Multiplier/Divider */ - ldr r1, [r0, #PLL1STAT_OFFSET] - tst r1, #PLL1STAT_PLLC1_STAT - beq 1f - - /* Disconnect PLL1 */ - ldr r1, =PLL1CON_PLLE1 - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] -1: - /* Disable PLL1 */ - ldr r1, =0 - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - - /* Set PLL1CFG */ - ldr r1, =PLL1CFG_VAL - str r1, [r0, #PLL1CFG_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - - /* Enable PLL1 */ - ldr r1, =PLL1CON_PLLE1 - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - - /* Wait for PLL1 to lock */ -1: - ldr r1, [r0, #PLL1STAT_OFFSET] - tst r1, #PLL1STAT_PLOCK1 - beq 1b - - /* PLL1 Locked, connect PLL as clock source */ - mov r1, #(PLL1CON_PLLE1 | PLL1CON_PLLC1) - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - /* Wait for PLL1 to connect */ -1: - ldr r1, [r0, #PLL1STAT_OFFSET] - tst r1, #PLL1STAT_PLLC1_STAT - beq 1b -#endif - - b _start - -DEFAULT_ISR_HANDLER NMI_Handler -DEFAULT_ISR_HANDLER HardFault_Handler -DEFAULT_ISR_HANDLER MemManage_Handler -DEFAULT_ISR_HANDLER BusFault_Handler -DEFAULT_ISR_HANDLER UsageFault_Handler -DEFAULT_ISR_HANDLER SVC_Handler -DEFAULT_ISR_HANDLER DebugMon_Handler -DEFAULT_ISR_HANDLER PendSV_Handler -DEFAULT_ISR_HANDLER SysTick_Handler -DEFAULT_ISR_HANDLER WDT_IRQHandler -DEFAULT_ISR_HANDLER TIMER0_IRQHandler -DEFAULT_ISR_HANDLER TIMER1_IRQHandler -DEFAULT_ISR_HANDLER TIMER2_IRQHandler -DEFAULT_ISR_HANDLER TIMER3_IRQHandler -DEFAULT_ISR_HANDLER UART0_IRQHandler -DEFAULT_ISR_HANDLER UART1_IRQHandler -DEFAULT_ISR_HANDLER UART2_IRQHandler -DEFAULT_ISR_HANDLER UART3_IRQHandler -DEFAULT_ISR_HANDLER PWM1_IRQHandler -DEFAULT_ISR_HANDLER I2C0_IRQHandler -DEFAULT_ISR_HANDLER I2C1_IRQHandler -DEFAULT_ISR_HANDLER I2C2_IRQHandler -DEFAULT_ISR_HANDLER SPI_IRQHandler -DEFAULT_ISR_HANDLER SSP0_IRQHandler -DEFAULT_ISR_HANDLER SSP1_IRQHandler -DEFAULT_ISR_HANDLER PLL0_IRQHandler -DEFAULT_ISR_HANDLER RTC_IRQHandler -DEFAULT_ISR_HANDLER EINT0_IRQHandler -DEFAULT_ISR_HANDLER EINT1_IRQHandler -DEFAULT_ISR_HANDLER EINT2_IRQHandler -DEFAULT_ISR_HANDLER EINT3_IRQHandler -DEFAULT_ISR_HANDLER ADC_IRQHandler -DEFAULT_ISR_HANDLER BOD_IRQHandler -DEFAULT_ISR_HANDLER USB_IRQHandler -DEFAULT_ISR_HANDLER CAN_IRQHandler -DEFAULT_ISR_HANDLER GPDMA_IRQHandler -DEFAULT_ISR_HANDLER I2S_IRQHandler -DEFAULT_ISR_HANDLER ENET_IRQHandler -DEFAULT_ISR_HANDLER RIT_IRQHandler -DEFAULT_ISR_HANDLER MCPWM_IRQHandler -DEFAULT_ISR_HANDLER QEI_IRQHandler -DEFAULT_ISR_HANDLER PLL1_IRQHandler -DEFAULT_ISR_HANDLER USBACT_IRQHandler -DEFAULT_ISR_HANDLER CANACT_IRQHandler - -#ifndef STARTUP_FROM_RESET -DEFAULT_ISR_HANDLER reset_wait -#endif /* STARTUP_FROM_RESET */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h deleted file mode 100644 index f2480b138..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h +++ /dev/null @@ -1,1081 +0,0 @@ -#ifndef __LPC17xx_H -#define __LPC17xx_H - -/* System Control Block (SCB) includes: - Flash Accelerator Module, Clocking and Power Control, External Interrupts, - Reset, System Control and Status -*/ -#define SCB_BASE_ADDR 0x400FC000 - -#define PCONP_PCTIM0 0x00000002 -#define PCONP_PCTIM1 0x00000004 -#define PCONP_PCUART0 0x00000008 -#define PCONP_PCUART1 0x00000010 -#define PCONP_PCPWM1 0x00000040 -#define PCONP_PCI2C0 0x00000080 -#define PCONP_PCSPI 0x00000100 -#define PCONP_PCRTC 0x00000200 -#define PCONP_PCSSP1 0x00000400 -#define PCONP_PCAD 0x00001000 -#define PCONP_PCCAN1 0x00002000 -#define PCONP_PCCAN2 0x00004000 -#define PCONP_PCGPIO 0x00008000 -#define PCONP_PCRIT 0x00010000 -#define PCONP_PCMCPWM 0x00020000 -#define PCONP_PCQEI 0x00040000 -#define PCONP_PCI2C1 0x00080000 -#define PCONP_PCSSP0 0x00200000 -#define PCONP_PCTIM2 0x00400000 -#define PCONP_PCTIM3 0x00800000 -#define PCONP_PCUART2 0x01000000 -#define PCONP_PCUART3 0x02000000 -#define PCONP_PCI2C2 0x04000000 -#define PCONP_PCI2S 0x08000000 -#define PCONP_PCGPDMA 0x20000000 -#define PCONP_PCENET 0x40000000 -#define PCONP_PCUSB 0x80000000 - -#define PLLCON_PLLE 0x00000001 -#define PLLCON_PLLC 0x00000002 -#define PLLCON_MASK 0x00000003 - -#define PLLCFG_MUL1 0x00000000 -#define PLLCFG_MUL2 0x00000001 -#define PLLCFG_MUL3 0x00000002 -#define PLLCFG_MUL4 0x00000003 -#define PLLCFG_MUL5 0x00000004 -#define PLLCFG_MUL6 0x00000005 -#define PLLCFG_MUL7 0x00000006 -#define PLLCFG_MUL8 0x00000007 -#define PLLCFG_MUL9 0x00000008 -#define PLLCFG_MUL10 0x00000009 -#define PLLCFG_MUL11 0x0000000A -#define PLLCFG_MUL12 0x0000000B -#define PLLCFG_MUL13 0x0000000C -#define PLLCFG_MUL14 0x0000000D -#define PLLCFG_MUL15 0x0000000E -#define PLLCFG_MUL16 0x0000000F -#define PLLCFG_MUL17 0x00000010 -#define PLLCFG_MUL18 0x00000011 -#define PLLCFG_MUL19 0x00000012 -#define PLLCFG_MUL20 0x00000013 -#define PLLCFG_MUL21 0x00000014 -#define PLLCFG_MUL22 0x00000015 -#define PLLCFG_MUL23 0x00000016 -#define PLLCFG_MUL24 0x00000017 -#define PLLCFG_MUL25 0x00000018 -#define PLLCFG_MUL26 0x00000019 -#define PLLCFG_MUL27 0x0000001A -#define PLLCFG_MUL28 0x0000001B -#define PLLCFG_MUL29 0x0000001C -#define PLLCFG_MUL30 0x0000001D -#define PLLCFG_MUL31 0x0000001E -#define PLLCFG_MUL32 0x0000001F -#define PLLCFG_MUL33 0x00000020 -#define PLLCFG_MUL34 0x00000021 -#define PLLCFG_MUL35 0x00000022 -#define PLLCFG_MUL36 0x00000023 - -#define PLLCFG_DIV1 0x00000000 -#define PLLCFG_DIV2 0x00010000 -#define PLLCFG_DIV3 0x00020000 -#define PLLCFG_DIV4 0x00030000 -#define PLLCFG_DIV5 0x00040000 -#define PLLCFG_DIV6 0x00050000 -#define PLLCFG_DIV7 0x00060000 -#define PLLCFG_DIV8 0x00070000 -#define PLLCFG_DIV9 0x00080000 -#define PLLCFG_DIV10 0x00090000 -#define PLLCFG_MASK 0x00FF7FFF - -#define PLLSTAT_MSEL_MASK 0x00007FFF -#define PLLSTAT_NSEL_MASK 0x00FF0000 - -#define PLLSTAT_PLLE (1 << 24) -#define PLLSTAT_PLLC (1 << 25) -#define PLLSTAT_PLOCK (1 << 26) - -#define PLLFEED_FEED1 0x000000AA -#define PLLFEED_FEED2 0x00000055 - -#define NVIC_IRQ_WDT 0u // IRQ0, exception number 16 -#define NVIC_IRQ_TIMER0 1u // IRQ1, exception number 17 -#define NVIC_IRQ_TIMER1 2u // IRQ2, exception number 18 -#define NVIC_IRQ_TIMER2 3u // IRQ3, exception number 19 -#define NVIC_IRQ_TIMER3 4u // IRQ4, exception number 20 -#define NVIC_IRQ_UART0 5u // IRQ5, exception number 21 -#define NVIC_IRQ_UART1 6u // IRQ6, exception number 22 -#define NVIC_IRQ_UART2 7u // IRQ7, exception number 23 -#define NVIC_IRQ_UART3 8u // IRQ8, exception number 24 -#define NVIC_IRQ_PWM1 9u // IRQ9, exception number 25 -#define NVIC_IRQ_I2C0 10u // IRQ10, exception number 26 -#define NVIC_IRQ_I2C1 11u // IRQ11, exception number 27 -#define NVIC_IRQ_I2C2 12u // IRQ12, exception number 28 -#define NVIC_IRQ_SPI 13u // IRQ13, exception number 29 -#define NVIC_IRQ_SSP0 14u // IRQ14, exception number 30 -#define NVIC_IRQ_SSP1 15u // IRQ15, exception number 31 -#define NVIC_IRQ_PLL0 16u // IRQ16, exception number 32 -#define NVIC_IRQ_RTC 17u // IRQ17, exception number 33 -#define NVIC_IRQ_EINT0 18u // IRQ18, exception number 34 -#define NVIC_IRQ_EINT1 19u // IRQ19, exception number 35 -#define NVIC_IRQ_EINT2 20u // IRQ20, exception number 36 -#define NVIC_IRQ_EINT3 21u // IRQ21, exception number 37 -#define NVIC_IRQ_ADC 22u // IRQ22, exception number 38 -#define NVIC_IRQ_BOD 23u // IRQ23, exception number 39 -#define NVIC_IRQ_USB 24u // IRQ24, exception number 40 -#define NVIC_IRQ_CAN 25u // IRQ25, exception number 41 -#define NVIC_IRQ_GPDMA 26u // IRQ26, exception number 42 -#define NVIC_IRQ_I2S 27u // IRQ27, exception number 43 -#define NVIC_IRQ_ETHERNET 28u // IRQ28, exception number 44 -#define NVIC_IRQ_RIT 29u // IRQ29, exception number 45 -#define NVIC_IRQ_MCPWM 30u // IRQ30, exception number 46 -#define NVIC_IRQ_QE 31u // IRQ31, exception number 47 -#define NVIC_IRQ_PLL1 32u // IRQ32, exception number 48 -#define NVIC_IRQ_USB_ACT 33u // IRQ33, exception number 49 -#define NVIC_IRQ_CAN_ACT 34u // IRQ34, exception number 50 - - -#endif // __LPC17xx_H - - -#ifndef CMSIS_17xx_H -#define CMSIS_17xx_H - -/****************************************************************************** - * @file: LPC17xx.h - * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for - * NXP LPC17xx Device Series - * @version: V1.1 - * @date: 14th May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __LPC17xx_H__ -#define __LPC17xx_H__ - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** LPC17xx Specific Interrupt Numbers *******************************************************/ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ - TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ - TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ - TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ - UART0_IRQn = 5, /*!< UART0 Interrupt */ - UART1_IRQn = 6, /*!< UART1 Interrupt */ - UART2_IRQn = 7, /*!< UART2 Interrupt */ - UART3_IRQn = 8, /*!< UART3 Interrupt */ - PWM1_IRQn = 9, /*!< PWM1 Interrupt */ - I2C0_IRQn = 10, /*!< I2C0 Interrupt */ - I2C1_IRQn = 11, /*!< I2C1 Interrupt */ - I2C2_IRQn = 12, /*!< I2C2 Interrupt */ - SPI_IRQn = 13, /*!< SPI Interrupt */ - SSP0_IRQn = 14, /*!< SSP0 Interrupt */ - SSP1_IRQn = 15, /*!< SSP1 Interrupt */ - PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ - RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ - EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ - EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ - EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ - EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ - ADC_IRQn = 22, /*!< A/D Converter Interrupt */ - BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ - USB_IRQn = 24, /*!< USB Interrupt */ - CAN_IRQn = 25, /*!< CAN Interrupt */ - DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ - I2S_IRQn = 27, /*!< I2S Interrupt */ - ENET_IRQn = 28, /*!< Ethernet Interrupt */ - RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ - MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ - QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ - PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -//#include "..\core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "core_cm3.h" -#include "system_LPC17xx.h" /* System Header */ - - - -/** - * Initialize the system clock - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); - - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ - -/*------------- System Control (SC) ------------------------------------------*/ -typedef struct -{ - __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ - uint32_t RESERVED0[31]; - __IO uint32_t PLL0CON; /* Clocking and Power Control */ - __IO uint32_t PLL0CFG; - __I uint32_t PLL0STAT; - __O uint32_t PLL0FEED; - uint32_t RESERVED1[4]; - __IO uint32_t PLL1CON; - __IO uint32_t PLL1CFG; - __I uint32_t PLL1STAT; - __O uint32_t PLL1FEED; - uint32_t RESERVED2[4]; - __IO uint32_t PCON; - __IO uint32_t PCONP; - uint32_t RESERVED3[15]; - __IO uint32_t CCLKCFG; - __IO uint32_t USBCLKCFG; - __IO uint32_t CLKSRCSEL; - uint32_t RESERVED4[12]; - __IO uint32_t EXTINT; /* External Interrupts */ - uint32_t RESERVED5; - __IO uint32_t EXTMODE; - __IO uint32_t EXTPOLAR; - uint32_t RESERVED6[12]; - __IO uint32_t RSID; /* Reset */ - uint32_t RESERVED7[7]; - __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ - __IO uint32_t IRCTRIM; /* Clock Dividers */ - __IO uint32_t PCLKSEL0; - __IO uint32_t PCLKSEL1; - uint32_t RESERVED8[4]; - __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ - uint32_t RESERVED9; - __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ - } SC_TypeDef; - -/*------------- Pin Connect Block (PINCON) -----------------------------------*/ -typedef struct -{ - __IO uint32_t PINSEL0; - __IO uint32_t PINSEL1; - __IO uint32_t PINSEL2; - __IO uint32_t PINSEL3; - __IO uint32_t PINSEL4; - __IO uint32_t PINSEL5; - __IO uint32_t PINSEL6; - __IO uint32_t PINSEL7; - __IO uint32_t PINSEL8; - __IO uint32_t PINSEL9; - __IO uint32_t PINSEL10; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE0; - __IO uint32_t PINMODE1; - __IO uint32_t PINMODE2; - __IO uint32_t PINMODE3; - __IO uint32_t PINMODE4; - __IO uint32_t PINMODE5; - __IO uint32_t PINMODE6; - __IO uint32_t PINMODE7; - __IO uint32_t PINMODE8; - __IO uint32_t PINMODE9; - __IO uint32_t PINMODE_OD0; - __IO uint32_t PINMODE_OD1; - __IO uint32_t PINMODE_OD2; - __IO uint32_t PINMODE_OD3; - __IO uint32_t PINMODE_OD4; -} PINCON_TypeDef; - -/*------------- General Purpose Input/Output (GPIO) --------------------------*/ -typedef struct -{ - __IO uint32_t FIODIR; - uint32_t RESERVED0[3]; - __IO uint32_t FIOMASK; - __IO uint32_t FIOPIN; - __IO uint32_t FIOSET; - __O uint32_t FIOCLR; -} GPIO_TypeDef; - -typedef struct -{ - __I uint32_t IntStatus; - __I uint32_t IO0IntStatR; - __I uint32_t IO0IntStatF; - __O uint32_t IO0IntClr; - __IO uint32_t IO0IntEnR; - __IO uint32_t IO0IntEnF; - uint32_t RESERVED0[3]; - __I uint32_t IO2IntStatR; - __I uint32_t IO2IntStatF; - __O uint32_t IO2IntClr; - __IO uint32_t IO2IntEnR; - __IO uint32_t IO2IntEnF; -} GPIOINT_TypeDef; - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - uint32_t RESERVED0[2]; - __IO uint32_t EMR; - uint32_t RESERVED1[24]; - __IO uint32_t CTCR; -} TIM_TypeDef; - -/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - __I uint32_t CR2; - __I uint32_t CR3; - __IO uint32_t MR4; - __IO uint32_t MR5; - __IO uint32_t MR6; - __IO uint32_t PCR; - __IO uint32_t LER; - uint32_t RESERVED0[7]; - __IO uint32_t CTCR; -} PWM_TypeDef; - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __IO uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED7[3]; - __IO uint8_t ADRMATCH; -} UART_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[3]; - __IO uint8_t MCR; - uint8_t RESERVED2[3]; - __IO uint8_t LSR; - uint8_t RESERVED3[3]; - __IO uint8_t MSR; - uint8_t RESERVED4[3]; - __IO uint8_t SCR; - uint8_t RESERVED5[3]; - __IO uint32_t ACR; - uint32_t RESERVED6; - __IO uint32_t FDR; - uint32_t RESERVED7; - __IO uint8_t TER; - uint8_t RESERVED8[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED9[3]; - __IO uint8_t ADRMATCH; - uint8_t RESERVED10[3]; - __IO uint8_t RS485DLY; -} UART1_TypeDef; - -/*------------- Serial Peripheral Interface (SPI) ----------------------------*/ -typedef struct -{ - __IO uint32_t SPCR; - __I uint32_t SPSR; - __IO uint32_t SPDR; - __IO uint32_t SPCCR; - uint32_t RESERVED0[3]; - __IO uint32_t SPINT; -} SPI_TypeDef; - -/*------------- Synchronous Serial Communication (SSP) -----------------------*/ -typedef struct -{ - __IO uint32_t CR0; - __IO uint32_t CR1; - __IO uint32_t DR; - __I uint32_t SR; - __IO uint32_t CPSR; - __IO uint32_t IMSC; - __IO uint32_t RIS; - __IO uint32_t MIS; - __IO uint32_t ICR; - __IO uint32_t DMACR; -} SSP_TypeDef; - -/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ -typedef struct -{ - __IO uint32_t I2CONSET; - __I uint32_t I2STAT; - __IO uint32_t I2DAT; - __IO uint32_t I2ADR0; - __IO uint32_t I2SCLH; - __IO uint32_t I2SCLL; - __O uint32_t I2CONCLR; - __IO uint32_t MMCTRL; - __IO uint32_t I2ADR1; - __IO uint32_t I2ADR2; - __IO uint32_t I2ADR3; - __I uint32_t I2DATA_BUFFER; - __IO uint32_t I2MASK0; - __IO uint32_t I2MASK1; - __IO uint32_t I2MASK2; - __IO uint32_t I2MASK3; -} I2C_TypeDef; - -/*------------- Inter IC Sound (I2S) -----------------------------------------*/ -typedef struct -{ - __IO uint32_t I2SDAO; - __IO uint32_t I2SDAI; - __O uint32_t I2STXFIFO; - __I uint32_t I2SRXFIFO; - __I uint32_t I2SSTATE; - __IO uint32_t I2SDMA1; - __IO uint32_t I2SDMA2; - __IO uint32_t I2SIRQ; - __IO uint32_t I2STXRATE; - __IO uint32_t I2SRXRATE; - __IO uint32_t I2STXBITRATE; - __IO uint32_t I2SRXBITRATE; - __IO uint32_t I2STXMODE; - __IO uint32_t I2SRXMODE; -} I2S_TypeDef; - -/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ -typedef struct -{ - __IO uint32_t RICOMPVAL; - __IO uint32_t RIMASK; - __IO uint8_t RICTRL; - uint8_t RESERVED0[3]; - __IO uint32_t RICOUNTER; -} RIT_TypeDef; - -/*------------- Real-Time Clock (RTC) ----------------------------------------*/ -typedef struct -{ - __IO uint8_t ILR; - uint8_t RESERVED0[3]; - __IO uint8_t CCR; - uint8_t RESERVED1[3]; - __IO uint8_t CIIR; - uint8_t RESERVED2[3]; - __IO uint8_t AMR; - uint8_t RESERVED3[3]; - __I uint32_t CTIME0; - __I uint32_t CTIME1; - __I uint32_t CTIME2; - __IO uint8_t SEC; - uint8_t RESERVED4[3]; - __IO uint8_t MIN; - uint8_t RESERVED5[3]; - __IO uint8_t HOUR; - uint8_t RESERVED6[3]; - __IO uint8_t DOM; - uint8_t RESERVED7[3]; - __IO uint8_t DOW; - uint8_t RESERVED8[3]; - __IO uint16_t DOY; - uint16_t RESERVED9; - __IO uint8_t MONTH; - uint8_t RESERVED10[3]; - __IO uint16_t YEAR; - uint16_t RESERVED11; - __IO uint32_t CALIBRATION; - __IO uint32_t GPREG0; - __IO uint32_t GPREG1; - __IO uint32_t GPREG2; - __IO uint32_t GPREG3; - __IO uint32_t GPREG4; - __IO uint8_t WAKEUPDIS; - uint8_t RESERVED12[3]; - __IO uint8_t PWRCTRL; - uint8_t RESERVED13[3]; - __IO uint8_t ALSEC; - uint8_t RESERVED14[3]; - __IO uint8_t ALMIN; - uint8_t RESERVED15[3]; - __IO uint8_t ALHOUR; - uint8_t RESERVED16[3]; - __IO uint8_t ALDOM; - uint8_t RESERVED17[3]; - __IO uint8_t ALDOW; - uint8_t RESERVED18[3]; - __IO uint16_t ALDOY; - uint16_t RESERVED19; - __IO uint8_t ALMON; - uint8_t RESERVED20[3]; - __IO uint16_t ALYEAR; - uint16_t RESERVED21; -} RTC_TypeDef; - -/*------------- Watchdog Timer (WDT) -----------------------------------------*/ -typedef struct -{ - __IO uint8_t WDMOD; - uint8_t RESERVED0[3]; - __IO uint32_t WDTC; - __O uint8_t WDFEED; - uint8_t RESERVED1[3]; - __I uint32_t WDTV; - __IO uint32_t WDCLKSEL; -} WDT_TypeDef; - -/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ -typedef struct -{ - __IO uint32_t ADCR; - __IO uint32_t ADGDR; - uint32_t RESERVED0; - __IO uint32_t ADINTEN; - __I uint32_t ADDR0; - __I uint32_t ADDR1; - __I uint32_t ADDR2; - __I uint32_t ADDR3; - __I uint32_t ADDR4; - __I uint32_t ADDR5; - __I uint32_t ADDR6; - __I uint32_t ADDR7; - __I uint32_t ADSTAT; - __IO uint32_t ADTRM; -} ADC_TypeDef; - -/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ -typedef struct -{ - __IO uint32_t DACR; - __IO uint32_t DACCTRL; - __IO uint16_t DACCNTVAL; -} DAC_TypeDef; - -/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ -typedef struct -{ - __I uint32_t MCCON; - __O uint32_t MCCON_SET; - __O uint32_t MCCON_CLR; - __I uint32_t MCCAPCON; - __O uint32_t MCCAPCON_SET; - __O uint32_t MCCAPCON_CLR; - __IO uint32_t MCTIM0; - __IO uint32_t MCTIM1; - __IO uint32_t MCTIM2; - __IO uint32_t MCPER0; - __IO uint32_t MCPER1; - __IO uint32_t MCPER2; - __IO uint32_t MCPW0; - __IO uint32_t MCPW1; - __IO uint32_t MCPW2; - __IO uint32_t MCDEADTIME; - __IO uint32_t MCCCP; - __IO uint32_t MCCR0; - __IO uint32_t MCCR1; - __IO uint32_t MCCR2; - __I uint32_t MCINTEN; - __O uint32_t MCINTEN_SET; - __O uint32_t MCINTEN_CLR; - __I uint32_t MCCNTCON; - __O uint32_t MCCNTCON_SET; - __O uint32_t MCCNTCON_CLR; - __I uint32_t MCINTFLAG; - __O uint32_t MCINTFLAG_SET; - __O uint32_t MCINTFLAG_CLR; - __O uint32_t MCCAP_CLR; -} MCPWM_TypeDef; - -/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ -typedef struct -{ - __O uint32_t QEICON; - __I uint32_t QEISTAT; - __IO uint32_t QEICONF; - __I uint32_t QEIPOS; - __IO uint32_t QEIMAXPOS; - __IO uint32_t CMPOS0; - __IO uint32_t CMPOS1; - __IO uint32_t CMPOS2; - __I uint32_t INXCNT; - __IO uint32_t INXCMP; - __IO uint32_t QEILOAD; - __I uint32_t QEITIME; - __I uint32_t QEIVEL; - __I uint32_t QEICAP; - __IO uint32_t VELCOMP; - __IO uint32_t FILTER; - uint32_t RESERVED0[998]; - __O uint32_t QEIIEC; - __O uint32_t QEIIES; - __I uint32_t QEIINTSTAT; - __I uint32_t QEIIE; - __O uint32_t QEICLR; - __O uint32_t QEISET; -} QEI_TypeDef; - -/*------------- Controller Area Network (CAN) --------------------------------*/ -typedef struct -{ - __IO uint32_t mask[512]; /* ID Masks */ -} CANAF_RAM_TypeDef; - -typedef struct /* Acceptance Filter Registers */ -{ - __IO uint32_t AFMR; - __IO uint32_t SFF_sa; - __IO uint32_t SFF_GRP_sa; - __IO uint32_t EFF_sa; - __IO uint32_t EFF_GRP_sa; - __IO uint32_t ENDofTable; - __I uint32_t LUTerrAd; - __I uint32_t LUTerr; -} CANAF_TypeDef; - -typedef struct /* Central Registers */ -{ - __I uint32_t CANTxSR; - __I uint32_t CANRxSR; - __I uint32_t CANMSR; -} CANCR_TypeDef; - -typedef struct /* Controller Registers */ -{ - __IO uint32_t MOD; - __O uint32_t CMR; - __IO uint32_t GSR; - __I uint32_t ICR; - __IO uint32_t IER; - __IO uint32_t BTR; - __IO uint32_t EWL; - __I uint32_t SR; - __IO uint32_t RFS; - __IO uint32_t RID; - __IO uint32_t RDA; - __IO uint32_t RDB; - __IO uint32_t TFI1; - __IO uint32_t TID1; - __IO uint32_t TDA1; - __IO uint32_t TDB1; - __IO uint32_t TFI2; - __IO uint32_t TID2; - __IO uint32_t TDA2; - __IO uint32_t TDB2; - __IO uint32_t TFI3; - __IO uint32_t TID3; - __IO uint32_t TDA3; - __IO uint32_t TDB3; -} CAN_TypeDef; - -/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ -typedef struct /* Common Registers */ -{ - __I uint32_t DMACIntStat; - __I uint32_t DMACIntTCStat; - __O uint32_t DMACIntTCClear; - __I uint32_t DMACIntErrStat; - __O uint32_t DMACIntErrClr; - __I uint32_t DMACRawIntTCStat; - __I uint32_t DMACRawIntErrStat; - __I uint32_t DMACEnbldChns; - __IO uint32_t DMACSoftBReq; - __IO uint32_t DMACSoftSReq; - __IO uint32_t DMACSoftLBReq; - __IO uint32_t DMACSoftLSReq; - __IO uint32_t DMACConfig; - __IO uint32_t DMACSync; -} GPDMA_TypeDef; - -typedef struct /* Channel Registers */ -{ - __IO uint32_t DMACCSrcAddr; - __IO uint32_t DMACCDestAddr; - __IO uint32_t DMACCLLI; - __IO uint32_t DMACCControl; - __IO uint32_t DMACCConfig; -} GPDMACH_TypeDef; - -/*------------- Universal Serial Bus (USB) -----------------------------------*/ -typedef struct -{ - __I uint32_t HcRevision; /* USB Host Registers */ - __IO uint32_t HcControl; - __IO uint32_t HcCommandStatus; - __IO uint32_t HcInterruptStatus; - __IO uint32_t HcInterruptEnable; - __IO uint32_t HcInterruptDisable; - __IO uint32_t HcHCCA; - __I uint32_t HcPeriodCurrentED; - __IO uint32_t HcControlHeadED; - __IO uint32_t HcControlCurrentED; - __IO uint32_t HcBulkHeadED; - __IO uint32_t HcBulkCurrentED; - __I uint32_t HcDoneHead; - __IO uint32_t HcFmInterval; - __I uint32_t HcFmRemaining; - __I uint32_t HcFmNumber; - __IO uint32_t HcPeriodicStart; - __IO uint32_t HcLSTreshold; - __IO uint32_t HcRhDescriptorA; - __IO uint32_t HcRhDescriptorB; - __IO uint32_t HcRhStatus; - __IO uint32_t HcRhPortStatus1; - __IO uint32_t HcRhPortStatus2; - uint32_t RESERVED0[40]; - __I uint32_t Module_ID; - - __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ - __IO uint32_t OTGIntEn; - __O uint32_t OTGIntSet; - __O uint32_t OTGIntClr; - __IO uint32_t OTGStCtrl; - __IO uint32_t OTGTmr; - uint32_t RESERVED1[58]; - - __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ - __IO uint32_t USBDevIntEn; - __O uint32_t USBDevIntClr; - __O uint32_t USBDevIntSet; - - __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ - __I uint32_t USBCmdData; - - __I uint32_t USBRxData; /* USB Device Transfer Registers */ - __O uint32_t USBTxData; - __I uint32_t USBRxPLen; - __O uint32_t USBTxPLen; - __IO uint32_t USBCtrl; - __O uint32_t USBDevIntPri; - - __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ - __IO uint32_t USBEpIntEn; - __O uint32_t USBEpIntClr; - __O uint32_t USBEpIntSet; - __O uint32_t USBEpIntPri; - - __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ - __O uint32_t USBEpInd; - __IO uint32_t USBMaxPSize; - - __I uint32_t USBDMARSt; /* USB Device DMA Registers */ - __O uint32_t USBDMARClr; - __O uint32_t USBDMARSet; - uint32_t RESERVED2[9]; - __IO uint32_t USBUDCAH; - __I uint32_t USBEpDMASt; - __O uint32_t USBEpDMAEn; - __O uint32_t USBEpDMADis; - __I uint32_t USBDMAIntSt; - __IO uint32_t USBDMAIntEn; - uint32_t RESERVED3[2]; - __I uint32_t USBEoTIntSt; - __O uint32_t USBEoTIntClr; - __O uint32_t USBEoTIntSet; - __I uint32_t USBNDDRIntSt; - __O uint32_t USBNDDRIntClr; - __O uint32_t USBNDDRIntSet; - __I uint32_t USBSysErrIntSt; - __O uint32_t USBSysErrIntClr; - __O uint32_t USBSysErrIntSet; - uint32_t RESERVED4[15]; - - __I uint32_t I2C_RX; /* USB OTG I2C Registers */ - __O uint32_t I2C_WO; - __I uint32_t I2C_STS; - __IO uint32_t I2C_CTL; - __IO uint32_t I2C_CLKHI; - __O uint32_t I2C_CLKLO; - uint32_t RESERVED5[823]; - - union { - __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ - __IO uint32_t OTGClkCtrl; - } ; - union { - __I uint32_t USBClkSt; - __I uint32_t OTGClkSt; - }; -} USB_TypeDef; - -/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ -typedef struct -{ - __IO uint32_t MAC1; /* MAC Registers */ - __IO uint32_t MAC2; - __IO uint32_t IPGT; - __IO uint32_t IPGR; - __IO uint32_t CLRT; - __IO uint32_t MAXF; - __IO uint32_t SUPP; - __IO uint32_t TEST; - __IO uint32_t MCFG; - __IO uint32_t MCMD; - __IO uint32_t MADR; - __O uint32_t MWTD; - __I uint32_t MRDD; - __I uint32_t MIND; - uint32_t RESERVED0[2]; - __IO uint32_t SA0; - __IO uint32_t SA1; - __IO uint32_t SA2; - uint32_t RESERVED1[45]; - __IO uint32_t Command; /* Control Registers */ - __I uint32_t Status; - __IO uint32_t RxDescriptor; - __IO uint32_t RxStatus; - __IO uint32_t RxDescriptorNumber; - __I uint32_t RxProduceIndex; - __IO uint32_t RxConsumeIndex; - __IO uint32_t TxDescriptor; - __IO uint32_t TxStatus; - __IO uint32_t TxDescriptorNumber; - __IO uint32_t TxProduceIndex; - __I uint32_t TxConsumeIndex; - uint32_t RESERVED2[10]; - __I uint32_t TSV0; - __I uint32_t TSV1; - __I uint32_t RSV; - uint32_t RESERVED3[3]; - __IO uint32_t FlowControlCounter; - __I uint32_t FlowControlStatus; - uint32_t RESERVED4[34]; - __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ - __IO uint32_t RxFilterWoLStatus; - __IO uint32_t RxFilterWoLClear; - uint32_t RESERVED5; - __IO uint32_t HashFilterL; - __IO uint32_t HashFilterH; - uint32_t RESERVED6[882]; - __I uint32_t IntStatus; /* Module Control Registers */ - __IO uint32_t IntEnable; - __O uint32_t IntClear; - __O uint32_t IntSet; - uint32_t RESERVED7; - __IO uint32_t PowerDown; - uint32_t RESERVED8; - __IO uint32_t Module_ID; -} EMAC_TypeDef; - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/* Base addresses */ -#define FLASH_BASE (0x00000000UL) -#define RAM_BASE (0x10000000UL) -#define GPIO_BASE (0x2009C000UL) -#define APB0_BASE (0x40000000UL) -#define APB1_BASE (0x40080000UL) -#define AHB_BASE (0x50000000UL) -#define CM3_BASE (0xE0000000UL) - -/* APB0 peripherals */ -#define WDT_BASE (APB0_BASE + 0x00000) -#define TIM0_BASE (APB0_BASE + 0x04000) -#define TIM1_BASE (APB0_BASE + 0x08000) -#define UART0_BASE (APB0_BASE + 0x0C000) -#define UART1_BASE (APB0_BASE + 0x10000) -#define PWM1_BASE (APB0_BASE + 0x18000) -#define I2C0_BASE (APB0_BASE + 0x1C000) -#define SPI_BASE (APB0_BASE + 0x20000) -#define RTC_BASE (APB0_BASE + 0x24000) -#define GPIOINT_BASE (APB0_BASE + 0x28080) -#define PINCON_BASE (APB0_BASE + 0x2C000) -#define SSP1_BASE (APB0_BASE + 0x30000) -#define ADC_BASE (APB0_BASE + 0x34000) -#define CANAF_RAM_BASE (APB0_BASE + 0x38000) -#define CANAF_BASE (APB0_BASE + 0x3C000) -#define CANCR_BASE (APB0_BASE + 0x40000) -#define CAN1_BASE (APB0_BASE + 0x44000) -#define CAN2_BASE (APB0_BASE + 0x48000) -#define I2C1_BASE (APB0_BASE + 0x5C000) - -/* APB1 peripherals */ -#define SSP0_BASE (APB1_BASE + 0x08000) -#define DAC_BASE (APB1_BASE + 0x0C000) -#define TIM2_BASE (APB1_BASE + 0x10000) -#define TIM3_BASE (APB1_BASE + 0x14000) -#define UART2_BASE (APB1_BASE + 0x18000) -#define UART3_BASE (APB1_BASE + 0x1C000) -#define I2C2_BASE (APB1_BASE + 0x20000) -#define I2S_BASE (APB1_BASE + 0x28000) -#define RIT_BASE (APB1_BASE + 0x30000) -#define MCPWM_BASE (APB1_BASE + 0x38000) -#define QEI_BASE (APB1_BASE + 0x3C000) -#define SC_BASE (APB1_BASE + 0x7C000) - -/* AHB peripherals */ -#define EMAC_BASE (AHB_BASE + 0x00000) -#define GPDMA_BASE (AHB_BASE + 0x04000) -#define GPDMACH0_BASE (AHB_BASE + 0x04100) -#define GPDMACH1_BASE (AHB_BASE + 0x04120) -#define GPDMACH2_BASE (AHB_BASE + 0x04140) -#define GPDMACH3_BASE (AHB_BASE + 0x04160) -#define GPDMACH4_BASE (AHB_BASE + 0x04180) -#define GPDMACH5_BASE (AHB_BASE + 0x041A0) -#define GPDMACH6_BASE (AHB_BASE + 0x041C0) -#define GPDMACH7_BASE (AHB_BASE + 0x041E0) -#define USB_BASE (AHB_BASE + 0x0C000) - -/* GPIOs */ -#define GPIO0_BASE (GPIO_BASE + 0x00000) -#define GPIO1_BASE (GPIO_BASE + 0x00020) -#define GPIO2_BASE (GPIO_BASE + 0x00040) -#define GPIO3_BASE (GPIO_BASE + 0x00060) -#define GPIO4_BASE (GPIO_BASE + 0x00080) - - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define SC (( SC_TypeDef *) SC_BASE) -#define GPIO0 (( GPIO_TypeDef *) GPIO0_BASE) -#define GPIO1 (( GPIO_TypeDef *) GPIO1_BASE) -#define GPIO2 (( GPIO_TypeDef *) GPIO2_BASE) -#define GPIO3 (( GPIO_TypeDef *) GPIO3_BASE) -#define GPIO4 (( GPIO_TypeDef *) GPIO4_BASE) -#define WDT (( WDT_TypeDef *) WDT_BASE) -#define TIM0 (( TIM_TypeDef *) TIM0_BASE) -#define TIM1 (( TIM_TypeDef *) TIM1_BASE) -#define TIM2 (( TIM_TypeDef *) TIM2_BASE) -#define TIM3 (( TIM_TypeDef *) TIM3_BASE) -#define RIT (( RIT_TypeDef *) RIT_BASE) -#define UART0 (( UART_TypeDef *) UART0_BASE) -#define UART1 (( UART1_TypeDef *) UART1_BASE) -#define UART2 (( UART_TypeDef *) UART2_BASE) -#define UART3 (( UART_TypeDef *) UART3_BASE) -#define PWM1 (( PWM_TypeDef *) PWM1_BASE) -#define I2C0 (( I2C_TypeDef *) I2C0_BASE) -#define I2C1 (( I2C_TypeDef *) I2C1_BASE) -#define I2C2 (( I2C_TypeDef *) I2C2_BASE) -#define I2S (( I2S_TypeDef *) I2S_BASE) -#define SPI (( SPI_TypeDef *) SPI_BASE) -#define RTC (( RTC_TypeDef *) RTC_BASE) -#define GPIOINT (( GPIOINT_TypeDef *) GPIOINT_BASE) -#define PINCON (( PINCON_TypeDef *) PINCON_BASE) -#define SSP0 (( SSP_TypeDef *) SSP0_BASE) -#define SSP1 (( SSP_TypeDef *) SSP1_BASE) -#define ADC (( ADC_TypeDef *) ADC_BASE) -#define DAC (( DAC_TypeDef *) DAC_BASE) -#define CANAF_RAM ((CANAF_RAM_TypeDef *) CANAF_RAM_BASE) -#define CANAF (( CANAF_TypeDef *) CANAF_BASE) -#define CANCR (( CANCR_TypeDef *) CANCR_BASE) -#define CAN1 (( CAN_TypeDef *) CAN1_BASE) -#define CAN2 (( CAN_TypeDef *) CAN2_BASE) -#define MCPWM (( MCPWM_TypeDef *) MCPWM_BASE) -#define QEI (( QEI_TypeDef *) QEI_BASE) -#define EMAC (( EMAC_TypeDef *) EMAC_BASE) -#define GPDMA (( GPDMA_TypeDef *) GPDMA_BASE) -#define GPDMACH0 (( GPDMACH_TypeDef *) GPDMACH0_BASE) -#define GPDMACH1 (( GPDMACH_TypeDef *) GPDMACH1_BASE) -#define GPDMACH2 (( GPDMACH_TypeDef *) GPDMACH2_BASE) -#define GPDMACH3 (( GPDMACH_TypeDef *) GPDMACH3_BASE) -#define GPDMACH4 (( GPDMACH_TypeDef *) GPDMACH4_BASE) -#define GPDMACH5 (( GPDMACH_TypeDef *) GPDMACH5_BASE) -#define GPDMACH6 (( GPDMACH_TypeDef *) GPDMACH6_BASE) -#define GPDMACH7 (( GPDMACH_TypeDef *) GPDMACH7_BASE) -#define USB (( USB_TypeDef *) USB_BASE) - -#endif // __LPC17xx_H__ - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c deleted file mode 100644 index 19ef83122..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Minimal implementation of a USB serial port, using the CDC class. - This example application simply echoes everything it receives right back - to the host. - - Windows: - Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386 - and store it somewhere (C:\temp is a good place) along with the usbser.inf - file. Then plug in the LPC176x and direct windows to the usbser driver. - Windows then creates an extra COMx port that you can open in a terminal - program, like hyperterminal. [Note for FreeRTOS users - the required .inf - file is included in the project directory.] - - Linux: - The device should be recognised automatically by the cdc_acm driver, - which creates a /dev/ttyACMx device file that acts just like a regular - serial port. - -*/ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -#include -#include - -#include "usbapi.h" -#include "usbdebug.h" -#include "usbstruct.h" - -#include "LPC17xx.h" - -#define usbMAX_SEND_BLOCK ( 20 / portTICK_PERIOD_MS ) -#define usbBUFFER_LEN ( 20 ) - -#define INCREMENT_ECHO_BY 1 -#define BAUD_RATE 115200 - -#define INT_IN_EP 0x81 -#define BULK_OUT_EP 0x05 -#define BULK_IN_EP 0x82 - -#define MAX_PACKET_SIZE 64 - -#define LE_WORD(x) ((x)&0xFF),((x)>>8) - -// CDC definitions -#define CS_INTERFACE 0x24 -#define CS_ENDPOINT 0x25 - -#define SET_LINE_CODING 0x20 -#define GET_LINE_CODING 0x21 -#define SET_CONTROL_LINE_STATE 0x22 - -// data structure for GET_LINE_CODING / SET_LINE_CODING class requests -typedef struct { - unsigned long dwDTERate; - unsigned char bCharFormat; - unsigned char bParityType; - unsigned char bDataBits; -} TLineCoding; - -static TLineCoding LineCoding = {115200, 0, 0, 8}; -static unsigned char abBulkBuf[64]; -static unsigned char abClassReqData[8]; - -static QueueHandle_t xRxedChars = NULL, xCharsForTx = NULL; - -// forward declaration of interrupt handler -void USBIntHandler(void); - -static const unsigned char abDescriptors[] = { - -// device descriptor - 0x12, - DESC_DEVICE, - LE_WORD(0x0101), // bcdUSB - 0x02, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - MAX_PACKET_SIZE0, // bMaxPacketSize - LE_WORD(0xFFFF), // idVendor - LE_WORD(0x0005), // idProduct - LE_WORD(0x0100), // bcdDevice - 0x01, // iManufacturer - 0x02, // iProduct - 0x03, // iSerialNumber - 0x01, // bNumConfigurations - -// configuration descriptor - 0x09, - DESC_CONFIGURATION, - LE_WORD(67), // wTotalLength - 0x02, // bNumInterfaces - 0x01, // bConfigurationValue - 0x00, // iConfiguration - 0xC0, // bmAttributes - 0x32, // bMaxPower -// control class interface - 0x09, - DESC_INTERFACE, - 0x00, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x01, // bNumEndPoints - 0x02, // bInterfaceClass - 0x02, // bInterfaceSubClass - 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module - 0x00, // iInterface -// header functional descriptor - 0x05, - CS_INTERFACE, - 0x00, - LE_WORD(0x0110), -// call management functional descriptor - 0x05, - CS_INTERFACE, - 0x01, - 0x01, // bmCapabilities = device handles call management - 0x01, // bDataInterface -// ACM functional descriptor - 0x04, - CS_INTERFACE, - 0x02, - 0x02, // bmCapabilities -// union functional descriptor - 0x05, - CS_INTERFACE, - 0x06, - 0x00, // bMasterInterface - 0x01, // bSlaveInterface0 -// notification EP - 0x07, - DESC_ENDPOINT, - INT_IN_EP, // bEndpointAddress - 0x03, // bmAttributes = intr - LE_WORD(8), // wMaxPacketSize - 0x0A, // bInterval -// data class interface descriptor - 0x09, - DESC_INTERFACE, - 0x01, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x02, // bNumEndPoints - 0x0A, // bInterfaceClass = data - 0x00, // bInterfaceSubClass - 0x00, // bInterfaceProtocol - 0x00, // iInterface -// data EP OUT - 0x07, - DESC_ENDPOINT, - BULK_OUT_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval -// data EP in - 0x07, - DESC_ENDPOINT, - BULK_IN_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval - - // string descriptors - 0x04, - DESC_STRING, - LE_WORD(0x0409), - - 0x0E, - DESC_STRING, - 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0, - - 0x14, - DESC_STRING, - 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0, - - 0x12, - DESC_STRING, - 'D', 0, 'E', 0, 'A', 0, 'D', 0, 'C', 0, '0', 0, 'D', 0, 'E', 0, - -// terminating zero - 0 -}; - - -/** - Local function to handle incoming bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkOut(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - // get data from USB into intermediate buffer - iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf)); - for (i = 0; i < iLen; i++) { - // put into queue - xQueueSendFromISR( xRxedChars, &( abBulkBuf[ i ] ), &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle outgoing bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkIn(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - if (uxQueueMessagesWaitingFromISR( xCharsForTx ) == 0) { - // no more data, disable further NAK interrupts until next USB frame - USBHwNakIntEnable(0); - return; - } - - // get bytes from transmit FIFO into intermediate buffer - for (i = 0; i < MAX_PACKET_SIZE; i++) { - if( xQueueReceiveFromISR( xCharsForTx, ( &abBulkBuf[i] ), &lHigherPriorityTaskWoken ) != pdPASS ) - { - break; - } - } - iLen = i; - - // send over USB - if (iLen > 0) { - USBHwEPWrite(bEP, abBulkBuf, iLen); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle the USB-CDC class requests - - @param [in] pSetup - @param [out] piLen - @param [out] ppbData - */ -static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - switch (pSetup->bRequest) { - - // set line coding - case SET_LINE_CODING: -DBG("SET_LINE_CODING\n"); - memcpy((unsigned char *)&LineCoding, *ppbData, 7); - *piLen = 7; -DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n", - LineCoding.dwDTERate, - LineCoding.bCharFormat, - LineCoding.bParityType, - LineCoding.bDataBits); - break; - - // get line coding - case GET_LINE_CODING: -DBG("GET_LINE_CODING\n"); - *ppbData = (unsigned char *)&LineCoding; - *piLen = 7; - break; - - // set control line state - case SET_CONTROL_LINE_STATE: - // bit0 = DTR, bit = RTS -DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue); - break; - - default: - return FALSE; - } - return TRUE; -} - - -/** - Writes one character to VCOM port - - @param [in] c character to write - @returns character written, or EOF if character could not be written - */ -int VCOM_putchar(int c) -{ -char cc = ( char ) c; - - if( xQueueSend( xCharsForTx, &cc, usbMAX_SEND_BLOCK ) == pdPASS ) - { - return c; - } - else - { - return EOF; - } -} - - -/** - Reads one character from VCOM port - - @returns character read, or EOF if character could not be read - */ -int VCOM_getchar(void) -{ - unsigned char c; - - /* Block the task until a character is available. */ - xQueueReceive( xRxedChars, &c, portMAX_DELAY ); - return c; -} - - -/** - Interrupt handler - - Simply calls the USB ISR - */ -//void USBIntHandler(void) -void USB_IRQHandler(void) -{ - USBHwISR(); -} - - -static void USBFrameHandler(unsigned short wFrame) -{ - ( void ) wFrame; - - if( uxQueueMessagesWaitingFromISR( xCharsForTx ) > 0 ) - { - // data available, enable NAK interrupt on bulk in - USBHwNakIntEnable(INACK_BI); - } -} - -// CodeRed - added CPUcpsie - -unsigned long CPUcpsie(void) -{ - unsigned long ulRet; - - // - // Read PRIMASK and enable interrupts. - // - __asm(" mrs %0, PRIMASK\n" - " cpsie i\n" - " bx lr\n" - : "=r" (ulRet)); - - // - // The return is handled in the inline assembly, but the compiler will - // still complain if there is not an explicit return here (despite the fact - // that this does not result in any code being produced because of the - // naked attribute). - // - return(ulRet); -} - -void vUSBTask( void *pvParameters ) -{ - int c; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - DBG("Initialising USB stack\n"); - - xRxedChars = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - xCharsForTx = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - - if( ( xRxedChars == NULL ) || ( xCharsForTx == NULL ) ) - { - /* Not enough heap available to create the buffer queues, can't do - anything so just delete ourselves. */ - vTaskDelete( NULL ); - } - - - // initialise stack - USBInit(); - - // register descriptors - USBRegisterDescriptors(abDescriptors); - - // register class request handler - USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); - - // register endpoint handlers - USBHwRegisterEPIntHandler(INT_IN_EP, NULL); - USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); - USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); - - // register frame handler - USBHwRegisterFrameHandler(USBFrameHandler); - - // enable bulk-in interrupts on NAKs - USBHwNakIntEnable(INACK_BI); - - DBG("Starting USB communication\n"); - - NVIC_SetPriority( USB_IRQn, configUSB_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( USB_IRQn ); - - // connect to bus - - DBG("Connecting to USB bus\n"); - USBHwConnect(TRUE); - - // echo any character received (do USB stuff in interrupt) - for( ;; ) - { - c = VCOM_getchar(); - if (c != EOF) - { - // Echo character back with INCREMENT_ECHO_BY offset, so for example if - // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back. - VCOM_putchar(c + INCREMENT_ECHO_BY ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h deleted file mode 100644 index 89d36850a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************** - * type.h: Type definition Header file for NXP LPC17xx Family - * Microprocessors - * - * Copyright(C) 2008, NXP Semiconductor - * All rights reserved. - * - * History - * 2008.08.21 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned int BOOL; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -/* Pointer to Function returning Void (any number of parameters) */ -typedef void (*PFV)(); - -#endif /* __TYPE_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h deleted file mode 100644 index 050f0d95b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - @file -*/ - -#include "usbstruct.h" // for TSetupPacket - -/************************************************************************* - USB configuration -**************************************************************************/ - -#define MAX_PACKET_SIZE0 64 /**< maximum packet size for EP 0 */ - -/************************************************************************* - USB hardware interface -**************************************************************************/ - -// endpoint status sent through callback -#define EP_STATUS_DATA (1<<0) /**< EP has data */ -#define EP_STATUS_STALLED (1<<1) /**< EP is stalled */ -#define EP_STATUS_SETUP (1<<2) /**< EP received setup packet */ -#define EP_STATUS_ERROR (1<<3) /**< EP data was overwritten by setup packet */ -#define EP_STATUS_NACKED (1<<4) /**< EP sent NAK */ - -// device status sent through callback -#define DEV_STATUS_CONNECT (1<<0) /**< device just got connected */ -#define DEV_STATUS_SUSPEND (1<<2) /**< device entered suspend state */ -#define DEV_STATUS_RESET (1<<4) /**< device just got reset */ - -// interrupt bits for NACK events in USBHwNakIntEnable -// (these bits conveniently coincide with the LPC176x USB controller bit) -#define INACK_CI (1<<1) /**< interrupt on NACK for control in */ -#define INACK_CO (1<<2) /**< interrupt on NACK for control out */ -#define INACK_II (1<<3) /**< interrupt on NACK for interrupt in */ -#define INACK_IO (1<<4) /**< interrupt on NACK for interrupt out */ -#define INACK_BI (1<<5) /**< interrupt on NACK for bulk in */ -#define INACK_BO (1<<6) /**< interrupt on NACK for bulk out */ - -BOOL USBHwInit (void); -void USBHwISR (void); - -void USBHwNakIntEnable (unsigned char bIntBits); - -void USBHwConnect (BOOL fConnect); - -void USBHwSetAddress (unsigned char bAddr); -void USBHwConfigDevice (BOOL fConfigured); - -// endpoint operations -void USBHwEPConfig (unsigned char bEP, unsigned short wMaxPacketSize); -int USBHwEPRead (unsigned char bEP, unsigned char *pbBuf, int iMaxLen); -int USBHwEPWrite (unsigned char bEP, unsigned char *pbBuf, int iLen); -void USBHwEPStall (unsigned char bEP, BOOL fStall); -unsigned char USBHwEPGetStatus (unsigned char bEP); - -/** Endpoint interrupt handler callback */ -typedef void (TFnEPIntHandler) (unsigned char bEP, unsigned char bEPStatus); -void USBHwRegisterEPIntHandler (unsigned char bEP, TFnEPIntHandler *pfnHandler); - -/** Device status handler callback */ -typedef void (TFnDevIntHandler) (unsigned char bDevStatus); -void USBHwRegisterDevIntHandler (TFnDevIntHandler *pfnHandler); - -/** Frame event handler callback */ -typedef void (TFnFrameHandler)(unsigned short wFrame); -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler); - - -/************************************************************************* - USB application interface -**************************************************************************/ - -// initialise the complete stack, including HW -BOOL USBInit(void); - -/** Request handler callback (standard, vendor, class) */ -typedef BOOL (TFnHandleRequest)(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore); -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler); - -/** Descriptor handler callback */ -typedef BOOL (TFnGetDescriptor)(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); - -/** Default standard request handler */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); - -/** Default EP0 handler */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat); - -/** Descriptor handling */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors); -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c deleted file mode 100644 index 6dd022c58..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Control transfer handler. - - This module handles control transfers and is normally installed on the - endpoint 0 callback. - - Control transfers can be of the following type: - 0 Standard; - 1 Class; - 2 Vendor; - 3 Reserved. - - A callback can be installed for each of these control transfers using - USBRegisterRequestHandler. - When an OUT request arrives, data is collected in the data store provided - with the USBRegisterRequestHandler call. When the transfer is done, the - callback is called. - When an IN request arrives, the callback is called immediately to either - put the control transfer data in the data store, or to get a pointer to - control transfer data. The data is then packetised and sent to the host. -*/ - -#include "usbdebug.h" - -#include "usbstruct.h" -#include "usbapi.h" - - - -#define MAX_CONTROL_SIZE 128 /**< maximum total size of control transfer data */ -#define MAX_REQ_HANDLERS 4 /**< standard, class, vendor, reserved */ - -static TSetupPacket Setup; /**< setup packet */ - -static unsigned char *pbData; /**< pointer to data buffer */ -static int iResidue; /**< remaining bytes in buffer */ -static int iLen; /**< total length of control transfer */ - -/** Array of installed request handler callbacks */ -static TFnHandleRequest *apfnReqHandlers[4] = {NULL, NULL, NULL, NULL}; -/** Array of installed request data pointers */ -static unsigned char *apbDataStore[4] = {NULL, NULL, NULL, NULL}; - -/** - Local function to handle a request by calling one of the installed - request handlers. - - In case of data going from host to device, the data is at *ppbData. - In case of data going from device to host, the handler can either - choose to write its data at *ppbData or update the data pointer. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handles successfully - */ -static BOOL _HandleRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - TFnHandleRequest *pfnHandler; - int iType; - - iType = REQTYPE_GET_TYPE(pSetup->bmRequestType); - pfnHandler = apfnReqHandlers[iType]; - if (pfnHandler == NULL) { - DBG("No handler for reqtype %d\n", iType); - return FALSE; - } - - return pfnHandler(pSetup, piLen, ppbData); -} - - -/** - Local function to stall the control endpoint - - @param [in] bEPStat Endpoint status - */ -static void StallControlPipe(unsigned char bEPStat) -{ - unsigned char *pb; - int i; - - ( void ) bEPStat; - USBHwEPStall(0x80, TRUE); - -// dump setup packet - DBG("STALL on ["); - pb = (unsigned char *)&Setup; - for (i = 0; i < 8; i++) { - DBG(" %02x", *pb++); - } - DBG("] stat=%x\n", bEPStat); -} - - -/** - Sends next chunk of data (possibly 0 bytes) to host - */ -static void DataIn(void) -{ - int iChunk; - - if( MAX_PACKET_SIZE0 < iResidue ) - { - iChunk = MAX_PACKET_SIZE0; - } - else - { - iChunk = iResidue; - } - - USBHwEPWrite(0x80, pbData, iChunk); - pbData += iChunk; - iResidue -= iChunk; -} - - -/** - * Handles IN/OUT transfers on EP0 - * - * @param [in] bEP Endpoint address - * @param [in] bEPStat Endpoint status - */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat) -{ - int iChunk, iType; - - if (bEP == 0x00) { - // OUT transfer - if (bEPStat & EP_STATUS_SETUP) { - // setup packet, reset request message state machine - USBHwEPRead(0x00, (unsigned char *)&Setup, sizeof(Setup)); - DBG("S%x", Setup.bRequest); - - // defaults for data pointer and residue - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - iResidue = Setup.wLength; - iLen = Setup.wLength; - - if ((Setup.wLength == 0) || - (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { - // ask installed handler to process request - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest1 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send smallest of requested and offered length - if( iLen < Setup.wLength ) - { - iResidue = iLen; - } - else - { - iResidue = Setup.wLength; - } - - // send first part (possibly a zero-length status message) - DataIn(); - } - } - else { - if (iResidue > 0) { - // store data - iChunk = USBHwEPRead(0x00, pbData, iResidue); - if (iChunk < 0) { - StallControlPipe(bEPStat); - return; - } - pbData += iChunk; - iResidue -= iChunk; - if (iResidue == 0) { - // received all, send data to handler - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest2 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send status to host - DataIn(); - } - } - else { - // absorb zero-length status message - iChunk = USBHwEPRead(0x00, NULL, 0); - DBG(iChunk > 0 ? "?" : ""); - } - } - } - else if (bEP == 0x80) { - // IN transfer - // send more data if available (possibly a 0-length packet) - DataIn(); - } - else { - ASSERT(FALSE); - } -} - - -/** - Registers a callback for handling requests - - @param [in] iType Type of request, e.g. REQTYPE_TYPE_STANDARD - @param [in] *pfnHandler Callback function pointer - @param [in] *pbDataStore Data storage area for this type of request - */ -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore) -{ - ASSERT(iType >= 0); - ASSERT(iType < 4); - apfnReqHandlers[iType] = pfnHandler; - apbDataStore[iType] = pbDataStore; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h deleted file mode 100644 index 4a14862e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// CodeRed - comment out this printf, as will use real one from stdio.h -// to implement output via semihosting - -//int printf(const char *format, ...); -# include - -#ifdef _DEBUG -#define DBG printf -#define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} -#else -#define DBG(x ...) -#define ASSERT(x) -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c deleted file mode 100644 index e9bd46015..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c +++ /dev/null @@ -1,521 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB hardware layer - */ - - -#include "usbdebug.h" -#include "usbhw_lpc.h" -#include "usbapi.h" - -/** Installed device interrupt handler */ -static TFnDevIntHandler *_pfnDevIntHandler = NULL; -/** Installed endpoint interrupt handlers */ -static TFnEPIntHandler *_apfnEPIntHandlers[16]; -/** Installed frame interrupt handlers */ -static TFnFrameHandler *_pfnFrameHandler = NULL; - -/** convert from endpoint address to endpoint index */ -#define EP2IDX(bEP) ((((bEP)&0xF)<<1)|(((bEP)&0x80)>>7)) -/** convert from endpoint index to endpoint address */ -#define IDX2EP(idx) ((((idx)<<7)&0x80)|(((idx)>>1)&0xF)) - - - -/** - Local function to wait for a device interrupt (and clear it) - - @param [in] dwIntr Bitmask of interrupts to wait for - */ -static void Wait4DevInt(unsigned long dwIntr) -{ - // wait for specific interrupt - while ((USB->USBDevIntSt & dwIntr) != dwIntr); - // clear the interrupt bits - USB->USBDevIntClr = dwIntr; -} - - -/** - Local function to send a command to the USB protocol engine - - @param [in] bCmd Command to send - */ -static void USBHwCmd(unsigned char bCmd) -{ - // clear CDFULL/CCEMTY - USB->USBDevIntClr = CDFULL | CCEMTY; - // write command code - USB->USBCmdCode = 0x00000500 | (bCmd << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command + data to the USB protocol engine - - @param [in] bCmd Command to send - @param [in] bData Data to send - */ -static void USBHwCmdWrite(unsigned char bCmd, unsigned short bData) -{ - // write command code - USBHwCmd(bCmd); - - // write command data - USB->USBCmdCode = 0x00000100 | (bData << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command to the USB protocol engine and read data - - @param [in] bCmd Command to send - - @return the data - */ -static unsigned char USBHwCmdRead(unsigned char bCmd) -{ - // write command code - USBHwCmd(bCmd); - - // get data - USB->USBCmdCode = 0x00000200 | (bCmd << 16); - Wait4DevInt(CDFULL); - return USB->USBCmdData; -} - - -/** - 'Realizes' an endpoint, meaning that buffer space is reserved for - it. An endpoint needs to be realised before it can be used. - - From experiments, it appears that a USB reset causes USBReEP to - re-initialise to 3 (= just the control endpoints). - However, a USB bus reset does not disturb the USBMaxPSize settings. - - @param [in] idx Endpoint index - @param [in] wMaxPSize Maximum packet size for this endpoint - */ -static void USBHwEPRealize(int idx, unsigned short wMaxPSize) -{ - USB->USBReEP |= (1 << idx); - USB->USBEpInd = idx; - USB->USBMaxPSize = wMaxPSize; - Wait4DevInt(EP_RLZED); -} - - -/** - Enables or disables an endpoint - - @param [in] idx Endpoint index - @param [in] fEnable TRUE to enable, FALSE to disable - */ -static void USBHwEPEnable(int idx, BOOL fEnable) -{ - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); -} - - -/** - Configures an endpoint and enables it - - @param [in] bEP Endpoint number - @param [in] wMaxPacketSize Maximum packet size for this EP - */ -void USBHwEPConfig(unsigned char bEP, unsigned short wMaxPacketSize) -{ - int idx; - - idx = EP2IDX(bEP); - - // realise EP - USBHwEPRealize(idx, wMaxPacketSize); - - // enable EP - USBHwEPEnable(idx, TRUE); -} - - -/** - Registers an endpoint event callback - - @param [in] bEP Endpoint number - @param [in] pfnHandler Callback function - */ -void USBHwRegisterEPIntHandler(unsigned char bEP, TFnEPIntHandler *pfnHandler) -{ - int idx; - - idx = EP2IDX(bEP); - - ASSERT(idx<32); - - /* add handler to list of EP handlers */ - _apfnEPIntHandlers[idx / 2] = pfnHandler; - - /* enable EP interrupt */ - USB->USBEpIntEn |= (1 << idx); - USB->USBDevIntEn |= EP_SLOW; - - DBG("Registered handler for EP 0x%x\n", bEP); -} - - -/** - Registers an device status callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterDevIntHandler(TFnDevIntHandler *pfnHandler) -{ - _pfnDevIntHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= DEV_STAT; - - DBG("Registered handler for device status\n"); -} - - -/** - Registers the frame callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler) -{ - _pfnFrameHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= FRAME; - - DBG("Registered handler for frame\n"); -} - - -/** - Sets the USB address. - - @param [in] bAddr Device address to set - */ -void USBHwSetAddress(unsigned char bAddr) -{ - USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); -} - - -/** - Connects or disconnects from the USB bus - - @param [in] fConnect If TRUE, connect, otherwise disconnect - */ -void USBHwConnect(BOOL fConnect) -{ - USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); -} - - -/** - Enables interrupt on NAK condition - - For IN endpoints a NAK is generated when the host wants to read data - from the device, but none is available in the endpoint buffer. - For OUT endpoints a NAK is generated when the host wants to write data - to the device, but the endpoint buffer is still full. - - The endpoint interrupt handlers can distinguish regular (ACK) interrupts - from NAK interrupt by checking the bits in their bEPStatus argument. - - @param [in] bIntBits Bitmap indicating which NAK interrupts to enable - */ -void USBHwNakIntEnable(unsigned char bIntBits) -{ - USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); -} - - -/** - Gets the status from a specific endpoint. - - @param [in] bEP Endpoint number - @return Endpoint status byte (containing EP_STATUS_xxx bits) - */ -unsigned char USBHwEPGetStatus(unsigned char bEP) -{ - int idx = EP2IDX(bEP); - - return USBHwCmdRead(CMD_EP_SELECT | idx); -} - - -/** - Sets the stalled property of an endpoint - - @param [in] bEP Endpoint number - @param [in] fStall TRUE to stall, FALSE to unstall - */ -void USBHwEPStall(unsigned char bEP, BOOL fStall) -{ - int idx = EP2IDX(bEP); - - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); -} - - -/** - Writes data to an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iLen Number of bytes to write - - @return TRUE if the data was successfully written or <0 in case of error. -*/ -int USBHwEPWrite(unsigned char bEP, unsigned char *pbBuf, int iLen) -{ - int idx; - - idx = EP2IDX(bEP); - - // set write enable for specific endpoint - USB->USBCtrl = WR_EN | ((bEP & 0xF) << 2); - - // set packet length - USB->USBTxPLen = iLen; - - // write data - while (USB->USBCtrl & WR_EN) { - USB->USBTxData = (pbBuf[3] << 24) | (pbBuf[2] << 16) | (pbBuf[1] << 8) | pbBuf[0]; - pbBuf += 4; - } - - // select endpoint and validate buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_VALIDATE_BUFFER); - - return iLen; -} - - -/** - Reads data from an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iMaxLen Maximum number of bytes to read - - @return the number of bytes available in the EP (possibly more than iMaxLen), - or <0 in case of error. - */ -int USBHwEPRead(unsigned char bEP, unsigned char *pbBuf, int iMaxLen) -{ - unsigned int i, idx; - unsigned long dwData, dwLen; - - idx = EP2IDX(bEP); - - // set read enable bit for specific endpoint - USB->USBCtrl = RD_EN | ((bEP & 0xF) << 2); - - // wait for PKT_RDY - do { - dwLen = USB->USBRxPLen; - } while ((dwLen & PKT_RDY) == 0); - - // packet valid? - if ((dwLen & DV) == 0) { - return -1; - } - - // get length - dwLen &= PKT_LNGTH_MASK; - - // get data - dwData = 0; - for (i = 0; i < dwLen; i++) { - if ((i % 4) == 0) { - dwData = USB->USBRxData; - } - if ((pbBuf != NULL) && ((int)i < iMaxLen)) { - pbBuf[i] = dwData & 0xFF; - } - dwData >>= 8; - } - - // make sure RD_EN is clear - USB->USBCtrl = 0; - - // select endpoint and clear buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_CLEAR_BUFFER); - - return dwLen; -} - - -/** - Sets the 'configured' state. - - All registered endpoints are 'realised' and enabled, and the - 'configured' bit is set in the device status register. - - @param [in] fConfigured If TRUE, configure device, else unconfigure - */ -void USBHwConfigDevice(BOOL fConfigured) -{ - // set configured bit - USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); -} - - -/** - USB interrupt handler - - @todo Get all 11 bits of frame number instead of just 8 - - Endpoint interrupts are mapped to the slow interrupt - */ -void USBHwISR(void) -{ - unsigned long dwStatus; - unsigned long dwIntBit; - unsigned char bEPStat, bDevStat, bStat; - int i; - unsigned short wFrame; - - // handle device interrupts - dwStatus = USB->USBDevIntSt; - - // frame interrupt - if (dwStatus & FRAME) { - // clear int - USB->USBDevIntClr = FRAME; - // call handler - if (_pfnFrameHandler != NULL) { - wFrame = USBHwCmdRead(CMD_DEV_READ_CUR_FRAME_NR); - _pfnFrameHandler(wFrame); - } - } - - // device status interrupt - if (dwStatus & DEV_STAT) { - /* Clear DEV_STAT interrupt before reading DEV_STAT register. - This prevents corrupted device status reads, see - LPC2148 User manual revision 2, 25 july 2006. - */ - USB->USBDevIntClr = DEV_STAT; - bDevStat = USBHwCmdRead(CMD_DEV_STATUS); - if (bDevStat & (CON_CH | SUS_CH | RST)) { - // convert device status into something HW independent - bStat = ((bDevStat & CON) ? DEV_STATUS_CONNECT : 0) | - ((bDevStat & SUS) ? DEV_STATUS_SUSPEND : 0) | - ((bDevStat & RST) ? DEV_STATUS_RESET : 0); - // call handler - if (_pfnDevIntHandler != NULL) { - _pfnDevIntHandler(bStat); - } - } - } - - // endpoint interrupt - if (dwStatus & EP_SLOW) { - // clear EP_SLOW - USB->USBDevIntClr = EP_SLOW; - // check all endpoints - for (i = 0; i < 32; i++) { - dwIntBit = (1 << i); - if (USB->USBEpIntSt & dwIntBit) { - // clear int (and retrieve status) - USB->USBEpIntClr = dwIntBit; - Wait4DevInt(CDFULL); - bEPStat = USB->USBCmdData; - // convert EP pipe stat into something HW independent - bStat = ((bEPStat & EPSTAT_FE) ? EP_STATUS_DATA : 0) | - ((bEPStat & EPSTAT_ST) ? EP_STATUS_STALLED : 0) | - ((bEPStat & EPSTAT_STP) ? EP_STATUS_SETUP : 0) | - ((bEPStat & EPSTAT_EPN) ? EP_STATUS_NACKED : 0) | - ((bEPStat & EPSTAT_PO) ? EP_STATUS_ERROR : 0); - // call handler - if (_apfnEPIntHandlers[i / 2] != NULL) { - _apfnEPIntHandlers[i / 2](IDX2EP(i), bStat); - } - } - } - } -} - - - -/** - Initialises the USB hardware - - - @return TRUE if the hardware was successfully initialised - */ -BOOL USBHwInit(void) -{ - // P2.9 -> USB_CONNECT - PINCON->PINSEL4 &= ~0x000C0000; - PINCON->PINSEL4 |= 0x00040000; - - // P1.18 -> USB_UP_LED - // P1.30 -> VBUS - PINCON->PINSEL3 &= ~0x30000030; - PINCON->PINSEL3 |= 0x20000010; - - // P0.29 -> USB_D+ - // P0.30 -> USB_D- - PINCON->PINSEL1 &= ~0x3C000000; - PINCON->PINSEL1 |= 0x14000000; - - // enable PUSB - SC->PCONP |= (1 << 31); - - USB->OTGClkCtrl = 0x12; /* Dev clock, AHB clock enable */ - while ((USB->OTGClkSt & 0x12) != 0x12); - - // disable/clear all interrupts for now - USB->USBDevIntEn = 0; - USB->USBDevIntClr = 0xFFFFFFFF; - USB->USBDevIntPri = 0; - - USB->USBEpIntEn = 0; - USB->USBEpIntClr = 0xFFFFFFFF; - USB->USBEpIntPri = 0; - - // by default, only ACKs generate interrupts - USBHwNakIntEnable(0); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h deleted file mode 100644 index 2a4de7949..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Hardware definitions for the LPC176x USB controller - - These are private to the usbhw module -*/ - -// CodeRed - pull in defines from NXP header file -//#include "NXP\LPC17xx\LPC17xx.h" -#include "LPC17xx.h" - - -// CodeRed - these registers have been renamed on LPC176x -#define USBReEP USBReEp -#define OTG_CLK_CTRL USBClkCtrl -#define OTG_CLK_STAT USBClkSt - -/* USBIntSt bits */ -#define USB_INT_REQ_LP (1<<0) -#define USB_INT_REQ_HP (1<<1) -#define USB_INT_REQ_DMA (1<<2) -#define USB_need_clock (1<<8) -#define EN_USB_BITS (1<<31) - -/* USBDevInt... bits */ -#define FRAME (1<<0) -#define EP_FAST (1<<1) -#define EP_SLOW (1<<2) -#define DEV_STAT (1<<3) -#define CCEMTY (1<<4) -#define CDFULL (1<<5) -#define RxENDPKT (1<<6) -#define TxENDPKT (1<<7) -#define EP_RLZED (1<<8) -#define ERR_INT (1<<9) - -/* USBRxPLen bits */ -#define PKT_LNGTH (1<<0) -#define PKT_LNGTH_MASK 0x3FF -#define DV (1<<10) -#define PKT_RDY (1<<11) - -/* USBCtrl bits */ -#define RD_EN (1<<0) -#define WR_EN (1<<1) -#define LOG_ENDPOINT (1<<2) - -/* protocol engine command codes */ - /* device commands */ -#define CMD_DEV_SET_ADDRESS 0xD0 -#define CMD_DEV_CONFIG 0xD8 -#define CMD_DEV_SET_MODE 0xF3 -#define CMD_DEV_READ_CUR_FRAME_NR 0xF5 -#define CMD_DEV_READ_TEST_REG 0xFD -#define CMD_DEV_STATUS 0xFE /* read/write */ -#define CMD_DEV_GET_ERROR_CODE 0xFF -#define CMD_DEV_READ_ERROR_STATUS 0xFB - /* endpoint commands */ -#define CMD_EP_SELECT 0x00 -#define CMD_EP_SELECT_CLEAR 0x40 -#define CMD_EP_SET_STATUS 0x40 -#define CMD_EP_CLEAR_BUFFER 0xF2 -#define CMD_EP_VALIDATE_BUFFER 0xFA - -/* set address command */ -#define DEV_ADDR (1<<0) -#define DEV_EN (1<<7) - -/* configure device command */ -#define CONF_DEVICE (1<<0) - -/* set mode command */ -#define AP_CLK (1<<0) -#define INAK_CI (1<<1) -#define INAK_CO (1<<2) -#define INAK_II (1<<3) -#define INAK_IO (1<<4) -#define INAK_BI (1<<5) -#define INAK_BO (1<<6) - -/* set get device status command */ -#define CON (1<<0) -#define CON_CH (1<<1) -#define SUS (1<<2) -#define SUS_CH (1<<3) -#define RST (1<<4) - -/* get error code command */ -// ... - -/* Select Endpoint command read bits */ -#define EPSTAT_FE (1<<0) -#define EPSTAT_ST (1<<1) -#define EPSTAT_STP (1<<2) -#define EPSTAT_PO (1<<3) -#define EPSTAT_EPN (1<<4) -#define EPSTAT_B1FULL (1<<5) -#define EPSTAT_B2FULL (1<<6) - -/* CMD_EP_SET_STATUS command */ -#define EP_ST (1<<0) -#define EP_DA (1<<5) -#define EP_RF_MO (1<<6) -#define EP_CND_ST (1<<7) - -/* read error status command */ -#define PID_ERR (1<<0) -#define UEPKT (1<<1) -#define DCRC (1<<2) -#define TIMEOUT (1<<3) -#define EOP (1<<4) -#define B_OVRN (1<<5) -#define BTSTF (1<<6) -#define TGL_ERR (1<<7) - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c deleted file mode 100644 index 8bb718317..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB stack initialisation - */ - - -#include "usbdebug.h" -#include "usbapi.h" - - -/** data storage area for standard requests */ -static unsigned char abStdReqData[8]; - - -/** - USB reset handler - - @param [in] bDevStatus Device status - */ -static void HandleUsbReset(unsigned char bDevStatus) -{ - if (bDevStatus & DEV_STATUS_RESET) { - DBG("\n!"); - } -} - - -/** - Initialises the USB hardware and sets up the USB stack by - installing default callbacks. - - @return TRUE if initialisation was successful - */ -BOOL USBInit(void) -{ - // init hardware - USBHwInit(); - - // register bus reset handler - USBHwRegisterDevIntHandler(HandleUsbReset); - - // register control transfer handler on EP0 - USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); - USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); - - // setup control endpoints - USBHwEPConfig(0x00, MAX_PACKET_SIZE0); - USBHwEPConfig(0x80, MAX_PACKET_SIZE0); - - // register standard request handler - USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c deleted file mode 100644 index cb2f55a09..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c +++ /dev/null @@ -1,431 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Standard request handler. - - This modules handles the 'chapter 9' processing, specifically the - standard device requests in table 9-3 from the universal serial bus - specification revision 2.0 - - Specific types of devices may specify additional requests (for example - HID devices add a GET_DESCRIPTOR request for interfaces), but they - will not be part of this module. - - @todo some requests have to return a request error if device not configured: - @todo GET_INTERFACE, GET_STATUS, SET_INTERFACE, SYNCH_FRAME - @todo this applies to the following if endpoint != 0: - @todo SET_FEATURE, GET_FEATURE -*/ - -#include "usbdebug.h" -#include "usbstruct.h" -#include "usbapi.h" - -#define MAX_DESC_HANDLERS 4 /**< device, interface, endpoint, other */ - - -/* general descriptor field offsets */ -#define DESC_bLength 0 /**< length offset */ -#define DESC_bDescriptorType 1 /**< descriptor type offset */ - -/* config descriptor field offsets */ -#define CONF_DESC_wTotalLength 2 /**< total length offset */ -#define CONF_DESC_bConfigurationValue 5 /**< configuration value offset */ -#define CONF_DESC_bmAttributes 7 /**< configuration characteristics */ - -/* interface descriptor field offsets */ -#define INTF_DESC_bAlternateSetting 3 /**< alternate setting offset */ - -/* endpoint descriptor field offsets */ -#define ENDP_DESC_bEndpointAddress 2 /**< endpoint address offset */ -#define ENDP_DESC_wMaxPacketSize 4 /**< maximum packet size offset */ - - -/** Currently selected configuration */ -static unsigned char bConfiguration = 0; -/** Installed custom request handler */ -static TFnHandleRequest *pfnHandleCustomReq = NULL; -/** Pointer to registered descriptors */ -static const unsigned char *pabDescrip = NULL; - - -/** - Registers a pointer to a descriptor block containing all descriptors - for the device. - - @param [in] pabDescriptors The descriptor byte array - */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors) -{ - pabDescrip = pabDescriptors; -} - - -/** - Parses the list of installed USB descriptors and attempts to find - the specified USB descriptor. - - @param [in] wTypeIndex Type and index of the descriptor - @param [in] wLangID Language ID of the descriptor (currently unused) - @param [out] *piLen Descriptor length - @param [out] *ppbData Descriptor data - - @return TRUE if the descriptor was found, FALSE otherwise - */ -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData) -{ - unsigned char bType, bIndex; - unsigned char *pab; - int iCurIndex; - - ( void ) wLangID; - ASSERT(pabDescrip != NULL); - - bType = GET_DESC_TYPE(wTypeIndex); - bIndex = GET_DESC_INDEX(wTypeIndex); - - pab = (unsigned char *)pabDescrip; - iCurIndex = 0; - - while (pab[DESC_bLength] != 0) { - if (pab[DESC_bDescriptorType] == bType) { - if (iCurIndex == bIndex) { - // set data pointer - *ppbData = pab; - // get length from structure - if (bType == DESC_CONFIGURATION) { - // configuration descriptor is an exception, length is at offset 2 and 3 - *piLen = (pab[CONF_DESC_wTotalLength]) | - (pab[CONF_DESC_wTotalLength + 1] << 8); - } - else { - // normally length is at offset 0 - *piLen = pab[DESC_bLength]; - } - return TRUE; - } - iCurIndex++; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - // nothing found - DBG("Desc %x not found!\n", wTypeIndex); - return FALSE; -} - - -/** - Configures the device according to the specified configuration index and - alternate setting by parsing the installed USB descriptor list. - A configuration index of 0 unconfigures the device. - - @param [in] bConfigIndex Configuration index - @param [in] bAltSetting Alternate setting number - - @todo function always returns TRUE, add stricter checking? - - @return TRUE if successfully configured, FALSE otherwise - */ -static BOOL USBSetConfiguration(unsigned char bConfigIndex, unsigned char bAltSetting) -{ - unsigned char *pab; - unsigned char bCurConfig, bCurAltSetting; - unsigned char bEP; - unsigned short wMaxPktSize; - - ASSERT(pabDescrip != NULL); - - if (bConfigIndex == 0) { - // unconfigure device - USBHwConfigDevice(FALSE); - } - else { - // configure endpoints for this configuration/altsetting - pab = (unsigned char *)pabDescrip; - bCurConfig = 0xFF; - bCurAltSetting = 0xFF; - - while (pab[DESC_bLength] != 0) { - - switch (pab[DESC_bDescriptorType]) { - - case DESC_CONFIGURATION: - // remember current configuration index - bCurConfig = pab[CONF_DESC_bConfigurationValue]; - break; - - case DESC_INTERFACE: - // remember current alternate setting - bCurAltSetting = pab[INTF_DESC_bAlternateSetting]; - break; - - case DESC_ENDPOINT: - if ((bCurConfig == bConfigIndex) && - (bCurAltSetting == bAltSetting)) { - // endpoint found for desired config and alternate setting - bEP = pab[ENDP_DESC_bEndpointAddress]; - wMaxPktSize = (pab[ENDP_DESC_wMaxPacketSize]) | - (pab[ENDP_DESC_wMaxPacketSize + 1] << 8); - // configure endpoint - USBHwEPConfig(bEP, wMaxPktSize); - } - break; - - default: - break; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - - // configure device - USBHwConfigDevice(TRUE); - } - - return TRUE; -} - - -/** - Local function to handle a standard device request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdDeviceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // bit 0: self-powered - // bit 1: remote wakeup = not supported - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_SET_ADDRESS: - USBHwSetAddress(pSetup->wValue); - break; - - case REQ_GET_DESCRIPTOR: - DBG("D%x", pSetup->wValue); - return USBGetDescriptor(pSetup->wValue, pSetup->wIndex, piLen, ppbData); - - case REQ_GET_CONFIGURATION: - // indicate if we are configured - pbData[0] = bConfiguration; - *piLen = 1; - break; - - case REQ_SET_CONFIGURATION: - if (!USBSetConfiguration(pSetup->wValue & 0xFF, 0)) { - DBG("USBSetConfiguration failed!\n"); - return FALSE; - } - // configuration successful, update current configuration - bConfiguration = pSetup->wValue & 0xFF; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_REMOTE_WAKEUP) { - // put DEVICE_REMOTE_WAKEUP code here - } - if (pSetup->wValue == FEA_TEST_MODE) { - // put TEST_MODE code here - } - return FALSE; - - case REQ_SET_DESCRIPTOR: - DBG("Device req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal device req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard interface request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdInterfaceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // no bits specified - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - // not defined for interface - return FALSE; - - case REQ_GET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface, return n-1 (= 0) - pbData[0] = 0; - *piLen = 1; - break; - - case REQ_SET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface (= 0) - if (pSetup->wValue != 0) { - return FALSE; - } - *piLen = 0; - break; - - default: - DBG("Illegal interface req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard endpoint request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdEndPointReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - case REQ_GET_STATUS: - // bit 0 = endpointed halted or not - pbData[0] = (USBHwEPGetStatus(pSetup->wIndex) & EP_STATUS_STALLED) ? 1 : 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // clear HALT by unstalling - USBHwEPStall(pSetup->wIndex, FALSE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // set HALT by stalling - USBHwEPStall(pSetup->wIndex, TRUE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SYNCH_FRAME: - DBG("EP req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal EP req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Default handler for standard ('chapter 9') requests - - If a custom request handler was installed, this handler is called first. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - // try the custom request handler first - if ((pfnHandleCustomReq != NULL) && pfnHandleCustomReq(pSetup, piLen, ppbData)) { - return TRUE; - } - - switch (REQTYPE_GET_RECIP(pSetup->bmRequestType)) { - case REQTYPE_RECIP_DEVICE: return HandleStdDeviceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_INTERFACE: return HandleStdInterfaceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_ENDPOINT: return HandleStdEndPointReq(pSetup, piLen, ppbData); - default: return FALSE; - } -} - - -/** - Registers a callback for custom device requests - - In USBHandleStandardRequest, the custom request handler gets a first - chance at handling the request before it is handed over to the 'chapter 9' - request handler. - - This can be used for example in HID devices, where a REQ_GET_DESCRIPTOR - request is sent to an interface, which is not covered by the 'chapter 9' - specification. - - @param [in] pfnHandler Callback function pointer - */ -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler) -{ - pfnHandleCustomReq = pfnHandler; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h deleted file mode 100644 index 113e2fef4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Definitions of structures of standard USB packets -*/ - -#ifndef _USBSTRUCT_H_ -#define _USBSTRUCT_H_ - -// CodeRed - include the LPCUSB type.h file rather than NXP one directly -#include "type.h" - -/** setup packet definitions */ -typedef struct { - unsigned char bmRequestType; /**< characteristics of the specific request */ - unsigned char bRequest; /**< specific request */ - unsigned short wValue; /**< request specific parameter */ - unsigned short wIndex; /**< request specific parameter */ - unsigned short wLength; /**< length of data transfered in data phase */ -} TSetupPacket; - - -#define REQTYPE_GET_DIR(x) (((x)>>7)&0x01) -#define REQTYPE_GET_TYPE(x) (((x)>>5)&0x03) -#define REQTYPE_GET_RECIP(x) ((x)&0x1F) - -#define REQTYPE_DIR_TO_DEVICE 0 -#define REQTYPE_DIR_TO_HOST 1 - -#define REQTYPE_TYPE_STANDARD 0 -#define REQTYPE_TYPE_CLASS 1 -#define REQTYPE_TYPE_VENDOR 2 -#define REQTYPE_TYPE_RESERVED 3 - -#define REQTYPE_RECIP_DEVICE 0 -#define REQTYPE_RECIP_INTERFACE 1 -#define REQTYPE_RECIP_ENDPOINT 2 -#define REQTYPE_RECIP_OTHER 3 - -/* standard requests */ -#define REQ_GET_STATUS 0x00 -#define REQ_CLEAR_FEATURE 0x01 -#define REQ_SET_FEATURE 0x03 -#define REQ_SET_ADDRESS 0x05 -#define REQ_GET_DESCRIPTOR 0x06 -#define REQ_SET_DESCRIPTOR 0x07 -#define REQ_GET_CONFIGURATION 0x08 -#define REQ_SET_CONFIGURATION 0x09 -#define REQ_GET_INTERFACE 0x0A -#define REQ_SET_INTERFACE 0x0B -#define REQ_SYNCH_FRAME 0x0C - -/* class requests HID */ -#define HID_GET_REPORT 0x01 -#define HID_GET_IDLE 0x02 -#define HID_GET_PROTOCOL 0x03 -#define HID_SET_REPORT 0x09 -#define HID_SET_IDLE 0x0A -#define HID_SET_PROTOCOL 0x0B - -/* feature selectors */ -#define FEA_ENDPOINT_HALT 0x00 -#define FEA_REMOTE_WAKEUP 0x01 -#define FEA_TEST_MODE 0x02 - -/* - USB descriptors -*/ - -/** USB descriptor header */ -typedef struct { - unsigned char bLength; /**< descriptor length */ - unsigned char bDescriptorType; /**< descriptor type */ -} TUSBDescHeader; - -#define DESC_DEVICE 1 -#define DESC_CONFIGURATION 2 -#define DESC_STRING 3 -#define DESC_INTERFACE 4 -#define DESC_ENDPOINT 5 -#define DESC_DEVICE_QUALIFIER 6 -#define DESC_OTHER_SPEED 7 -#define DESC_INTERFACE_POWER 8 - -#define DESC_HID_HID 0x21 -#define DESC_HID_REPORT 0x22 -#define DESC_HID_PHYSICAL 0x23 - -#define GET_DESC_TYPE(x) (((x)>>8)&0xFF) -#define GET_DESC_INDEX(x) ((x)&0xFF) - -#endif /* _USBSTRUCT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c deleted file mode 100644 index 0d57314ff..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstFIRST_IO ( ( unsigned long ) 0x04 ) -#define partstFIO2_BITS ( ( unsigned long ) 0x0000007C ) -#define partstFIO1_BITS ( ( unsigned long ) 0xB0000000 ) -#define partstNUM_LEDS ( 5 ) -#define partstALL_OUTPUTS_OFF ( ( unsigned long ) 0xff ) - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* LEDs on ports 1 and 2 to output. */ - GPIO2->FIODIR = partstFIO2_BITS; - GPIO1->FIODIR = partstFIO1_BITS; - - /* Start will all LEDs off. */ - GPIO2->FIOCLR = partstFIO2_BITS; - GPIO1->FIOCLR = partstFIO1_BITS; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLEDIn, signed long xValue ) -{ -unsigned long ulLED = partstFIRST_IO; - - /* Used to set and clear LEDs on FIO2. */ - - if( ulLEDIn < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port */ - ulLED <<= ( unsigned long ) ulLEDIn; - - /* Set of clear the output. */ - if( xValue ) - { - GPIO2->FIOCLR = ulLED; - } - else - { - GPIO2->FIOSET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLEDIn ) -{ -unsigned long ulLED = partstFIRST_IO, ulCurrentState; - - /* Used to toggle LEDs on FIO2. */ - - if( ulLEDIn < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED - attached. */ - ulLED <<= ( unsigned long ) ulLEDIn; - - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = GPIO2->FIOPIN; - if( ulCurrentState & ulLED ) - { - GPIO2->FIOCLR = ulLED; - } - else - { - GPIO2->FIOSET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( void ) -{ - /* Returns the state of the LEDs on FIO1. */ - if( ( GPIO1->FIOPIN & partstFIO1_BITS ) != 0 ) - { - return pdFALSE; - } - else - { - return pdTRUE; - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDState( long lState ) -{ - /* Used to set and clear the LEDs on FIO1. */ - if( lState != pdFALSE ) - { - GPIO1->FIOSET = partstFIO1_BITS; - } - else - { - GPIO1->FIOCLR = partstFIO1_BITS; - } -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp deleted file mode 100644 index 7e4edca2b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs deleted file mode 100644 index bb4101afc..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h deleted file mode 100644 index b6f9696bf..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h +++ /dev/null @@ -1,1367 +0,0 @@ -/****************************************************************************** - * @file: core_cm3.h - * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version: V1.20 - * @date: 22. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-Mx - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -/** - * Lint configuration \n - * ----------------------- \n - * - * The following Lint messages will be suppressed and not shown: \n - * \n - * --- Error 10: --- \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' \n - * \n - * --- Error 530: --- \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized \n - * \n - * --- Error 550: --- \n - * __regBasePri = (basePri & 0x1ff); \n - * } \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed \n - * \n - * --- Error 754: --- \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced \n - * \n - * --- Error 750: --- \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced \n - * \n - * --- Error 528: --- \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced \n - * \n - * --- Error 751: --- \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced \n - * \n - * \n - * Note: To re-enable a Message, insert a space before 'lint' * \n - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus -#define __I volatile /*!< defines 'read only' permissions */ -#else -#define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ - - -/* System Reset */ -#define NVIC_VECTRESET 0 /*!< Vector Reset Bit */ -#define NVIC_SYSRESETREQ 2 /*!< System Reset Request */ -#define NVIC_AIRCR_VECTKEY (0x5FA << 16) /*!< AIRCR Key for write access */ -#define NVIC_AIRCR_ENDIANESS 15 /*!< Endianess */ - -/* Core Debug */ -#define CoreDebug_DEMCR_TRCENA (1 << 24) /*!< DEMCR TRCENA enable */ -#define ITM_TCR_ITMENA 1 /*!< ITM enable */ - - - - -/* memory mapping struct for Nested Vectored Interrupt Controller (NVIC) */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Interrupt Priority Register, 8Bit wide */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Software Trigger Interrupt Register */ -} NVIC_Type; - - -/* memory mapping struct for System Control Block */ -typedef struct -{ - __I uint32_t CPUID; /*!< CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< System Control Register */ - __IO uint32_t CCR; /*!< Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Processor Feature Register */ - __I uint32_t DFR; /*!< Debug Feature Register */ - __I uint32_t ADR; /*!< Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< ISA Feature Register */ -} SCB_Type; - - -/* memory mapping struct for SysTick */ -typedef struct -{ - __IO uint32_t CTRL; /*!< SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< SysTick Current Value Register */ - __I uint32_t CALIB; /*!< SysTick Calibration Register */ -} SysTick_Type; - - -/* memory mapping structur for ITM */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< ITM Integration Write Register */ - __IO uint32_t IRR; /*!< ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< ITM Lock Access Register */ - __IO uint32_t LSR; /*!< ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< ITM Product ID Registers */ - __I uint32_t PID5; - __I uint32_t PID6; - __I uint32_t PID7; - __I uint32_t PID0; - __I uint32_t PID1; - __I uint32_t PID2; - __I uint32_t PID3; - __I uint32_t CID0; - __I uint32_t CID1; - __I uint32_t CID2; - __I uint32_t CID3; -} ITM_Type; - - -/* memory mapped struct for Interrupt Type */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - - -/* Memory Protection Unit */ -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -typedef struct -{ - __I uint32_t TYPE; /*!< MPU Type Register */ - __IO uint32_t CTRL; /*!< MPU Control Register */ - __IO uint32_t RNR; /*!< MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; -#endif - - -/* Core Debug Register */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @param none - * @return uint32_t ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param uint32_t Process Stack Pointer - * @return none - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @param none - * @return uint32_t Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param uint32_t Main Stack Pointer - * @return none - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param uint16_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/* - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param int16_t value to reverse - * @return int32_t reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * @param none - * @return none - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @param none - * @return uint32_t BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param uint32_t BasePriority - * @return none - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @param none - * @return uint32_t PriMask - * - * Return the state of the priority mask bit from the priority mask - * register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param uint32_t PriMask - * @return none - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @param none - * @return uint32_t FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param uint32_t faultMask value - * @return none - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @param none - * @return uint32_t Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param uint32_t Control value - * @return none - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - - -/** - * @brief Remove the exclusive lock created by ldrex - * - * @param none - * @return none - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @param none - * @return uint32_t BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param uint32_t BasePriority - * @return none - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0x1ff); -} - -/** - * @brief Return the Priority Mask value - * - * @param none - * @return uint32_t PriMask - * - * Return the state of the priority mask bit from the priority mask - * register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param uint32_t PriMask - * @return none - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @param none - * @return uint32_t FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param uint32_t faultMask value - * @return none - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @param none - * @return uint32_t Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param uint32_t Control value - * @return none - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation() /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @param none - * @return uint32_t ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param uint32_t Process Stack Pointer - * @return none - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @param none - * @return uint32_t Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param uint32_t Main Stack Pointer - * @return none - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param uint16_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param uint32_t value to reverse - * @return uint32_t reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive - * - * @param uint8_t* address - * @return uint8_t value of (*address) - * - * Exclusive LDR command - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint16_t* address - * @return uint16_t value of (*address) - * - * Exclusive LDR command - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint32_t* address - * @return uint32_t value of (*address) - * - * Exclusive LDR command - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint8_t *address - * @param uint8_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint16_t *address - * @param uint16_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint32_t *address - * @param uint32_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP() { __ASM volatile ("nop"); } -static __INLINE void __WFI() { __ASM volatile ("wfi"); } -static __INLINE void __WFE() { __ASM volatile ("wfe"); } -static __INLINE void __SEV() { __ASM volatile ("sev"); } -static __INLINE void __ISB() { __ASM volatile ("isb"); } -static __INLINE void __DSB() { __ASM volatile ("dsb"); } -static __INLINE void __DMB() { __ASM volatile ("dmb"); } -static __INLINE void __CLREX() { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @param none - * @return uint32_t ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param uint32_t Process Stack Pointer - * @return none - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @param none - * @return uint32_t Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param uint32_t Main Stack Pointer - * @return none - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @param none - * @return uint32_t BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param uint32_t BasePriority - * @return none - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @param none - * @return uint32_t PriMask - * - * Return the state of the priority mask bit from the priority mask - * register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param uint32_t PriMask - * @return none - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @param none - * @return uint32_t FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param uint32_t faultMask value - * @return none - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @param none -* @return uint32_t Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param uint32_t Control value - * @return none - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param uint32_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param uint16_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/* - * Reverse byte order in signed short value with sign extension to integer - * - * @param int16_t value to reverse - * @return int32_t reversed value - * - * @brief Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param uint32_t value to reverse - * @return uint32_t reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive - * - * @param uint8_t* address - * @return uint8_t value of (*address) - * - * Exclusive LDR command - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint16_t* address - * @return uint16_t value of (*address) - * - * Exclusive LDR command - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint32_t* address - * @return uint32_t value of (*address) - * - * Exclusive LDR command - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint8_t *address - * @param uint8_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint16_t *address - * @param uint16_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint32_t *address - * @param uint32_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - - -/* ########################## NVIC functions #################################### */ - - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param uint32_t priority_grouping is priority grouping field - * @return none - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~((0xFFFFU << 16) | (0x0F << 8)); /* clear bits to change */ - reg_value = ((reg_value | NVIC_AIRCR_VECTKEY | (PriorityGroupTmp << 8))); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @param none - * @return uint32_t priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR >> 8) & 0x07); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn_Type IRQn specifies the interrupt number - * @return none - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn_Type IRQn is the positive number of the external interrupt - * @return none - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn_Type IRQn is the number of the device specifc interrupt - * @return uint32_t 1 if pending interrupt else 0 - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return none - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return none - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return uint32_t 1 if active else 0 - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @param priority is the priority for the interrupt - * @return none - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. \n - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return uint32_t priority is the priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param uint32_t PriorityGroup is the used priority group - * @param uint32_t PreemptPriority is the preemptive priority value (starting from 0) - * @param uint32_t SubPriority is the sub priority value (starting from 0) - * @return uint32_t the priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param uint32_t Priority the priority for the interrupt - * @param uint32_t PrioGroup is the used priority group - * @param uint32_t* pPreemptPrio is the preemptive priority value (starting from 0) - * @param uint32_t* pSubPrio is the sub priority value (starting from 0) - * @return none - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/* SysTick constants */ -#define SYSTICK_ENABLE 0 /* Config-Bit to start or stop the SysTick Timer */ -#define SYSTICK_TICKINT 1 /* Config-Bit to enable or disable the SysTick interrupt */ -#define SYSTICK_CLKSOURCE 2 /* Clocksource has the offset 2 in SysTick Control and Status Register */ -#define SYSTICK_MAXCOUNT ((1<<24) -1) /* SysTick MaxCount */ - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param uint32_t ticks is the number of ticks between two interrupts - * @return none - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SYSTICK_MAXCOUNT) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SYSTICK_MAXCOUNT) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = (0x00); /* Load the SysTick Counter Value */ - SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1<AIRCR = (NVIC_AIRCR_VECTKEY | (SCB->AIRCR & (0x700)) | (1<DEMCR & CoreDebug_DEMCR_TRCENA) && - (ITM->TCR & ITM_TCR_ITMENA) && - (ITM->TER & (1UL << 0)) ) - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - -#ifdef __cplusplus -} -#endif - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml deleted file mode 100644 index 95fef0a7f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c deleted file mode 100644 index 3269c625e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. The status can be viewed using on the Task Stats page - * served by the WEB server. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "USB" task - Enumerates the USB device as a CDC class, then echoes back all - * received characters with a configurable offset (for example, if the offset - * is 1 and 'A' is received then 'B' will be sent back). A dumb terminal such - * as Hyperterminal can be used to talk to the USB task. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook). */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The message displayed by the WEB server when all tasks are executing -without an error being reported. */ -#define mainPASS_STATUS_MESSAGE "All tasks are executing without error." - -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The task that handles the USB stack. - */ -extern void vUSBTask( void *pvParameters ); - -/* - * Simply returns the current status message for display on served WEB pages. - */ -char *pcGetTaskStatusMessage( void ); - -/*-----------------------------------------------------------*/ - -/* Holds the status message displayed by the WEB server. */ -static char *pcStatusMessage = mainPASS_STATUS_MESSAGE; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Configure the hardware for use by this demo. */ - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - - /* Create the USB task. */ - xTaskCreate( vUSBTask, "USB", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Create the uIP task. The WEB server runs in this task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulTicksSinceLastDisplay = 0; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Generic Queue test/demo."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Peek Queue test/demo."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Queue test/demo."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Time test/demo."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Semaphore test/demo."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Poll Queue test/demo."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Int Math test/demo."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Mutex test/demo."; - } - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* Disable peripherals power. */ - SC->PCONP = 0; - - /* Enable GPIO power. */ - SC->PCONP = PCONP_PCGPIO; - - /* Disable TPIU. */ - PINCON->PINSEL10 = 0; - - /* Setup the peripheral bus to be the same as the CPU output (100 MHz). */ - SC->PCLKSEL0 = 0x05555555; - - /* Configure the LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ -const unsigned long TCR_COUNT_RESET = 2, CTCR_CTM_TIMER = 0x00, TCR_COUNT_ENABLE = 0x01; - - /* This function configures a timer that is used as the time base when - collecting run time statistical information - basically the percentage - of CPU time that each task is utilising. It is called automatically when - the scheduler is started (assuming configGENERATE_RUN_TIME_STATS is set - to 1). */ - - /* Power up and feed the timer. */ - SC->PCONP |= 0x02UL; - SC->PCLKSEL0 = (SC->PCLKSEL0 & (~(0x3<<2))) | (0x01 << 2); - - /* Reset Timer 0 */ - TIM0->TCR = TCR_COUNT_RESET; - - /* Just count up. */ - TIM0->CTCR = CTCR_CTM_TIMER; - - /* Prescale to a frequency that is good enough to get a decent resolution, - but not too fast so as to overflow all the time. */ - TIM0->PR = ( configCPU_CLOCK_HZ / 10000UL ) - 1UL; - - /* Start the counter. */ - TIM0->TCR = TCR_COUNT_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h deleted file mode 100644 index a5c9727d4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h +++ /dev/null @@ -1,40 +0,0 @@ -/****************************************************************************** - * @file: system_LPC17xx.h - * @purpose: CMSIS Cortex-M3 Device Peripheral Access Layer Header File - * for the NXP LPC17xx Device Series - * @version: V1.0 - * @date: 25. Nov. 2008 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __SYSTEM_LPC17xx_H -#define __SYSTEM_LPC17xx_H - -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf deleted file mode 100644 index 607fc9e6d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf +++ /dev/null @@ -1,45 +0,0 @@ -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%LINUX% -DriverVer=08/17/2004,0.0.2.0 -; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com) -; released under GNU General Public License - -[Manufacturer] -%LINUX%=GSerialDeviceList - -[GSerialDeviceList] -%GSERIAL%=GSerialInstall, USB\VID_FFFF&PID_0005 - -[DestinationDirs] -DefaultDestDir=10,System32\Drivers - -[GSerialInstall] -CopyFiles=GSerialCopyFiles -AddReg=GSerialAddReg - -[GSerialCopyFiles] -usbser.sys - -[GSerialAddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[GSerialInstall.Services] -AddService = usbser,0x0002,GSerialService - -[GSerialService] -DisplayName = %GSERIAL_DISPLAY_NAME% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\System32\Drivers\usbser.sys -LoadOrderGroup = Base - -[Strings] -LINUX = "Linux" -GSERIAL = "USB CDC serial port emulation" -GSERIAL_DISPLAY_NAME = "USB CDC serial port emulation" \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h deleted file mode 100644 index f67789f44..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * @file: EthDev.h - * @purpose: Ethernet Device Definitions - * @version: V1.10 - * @date: 24. Feb. 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef _ETHDEV__H -#define _ETHDEV__H - -#ifndef NULL - #define NULL 0 -#endif - -/*---------------------------------------------------------------------------- - Ethernet Device Defines - *----------------------------------------------------------------------------*/ -#define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ -#define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ - - -/*---------------------------------------------------------------------------- - Ethernet Device Configuration and Control Command Defines - *----------------------------------------------------------------------------*/ -typedef enum { - EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ - EthDev_LINK_UP = 1, /*!< Ethernet link established */ -} EthDev_LINK; - -typedef enum { - EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ - EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ - EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ -} EthDev_SPEED; - -typedef enum { - EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ - EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ -} EthDev_DUPLEX; - -typedef enum { - EthDev_MODE_AUTO = 0, - EthDev_MODE_10M_FULL = 1, - EthDev_MODE_10M_HALF = 2, - EthDev_MODE_100M_FULL = 3, - EthDev_MODE_100M_HALF = 4, - EthDev_MODE_1000M_FULL = 5, - EthDev_MODE_1000M_HALF = 6, -} EthDev_MODE; - -typedef struct { - EthDev_LINK Link : 1; - EthDev_DUPLEX Duplex : 1; - EthDev_SPEED Speed : 2; -} EthDev_STATUS; - - -/*---------------------------------------------------------------------------- - Ethernet Device IO Block Structure - *----------------------------------------------------------------------------*/ -typedef struct { - - /* Initialized by the user application before call to Init. */ - EthDev_MODE Mode; - unsigned char HwAddr[EthDev_ADDR_SIZE]; - void *(*RxFrame) (int size); - void (*RxFrameReady) (int size); - - /* Initialized by Ethernet driver. */ - int (*Init) (void); - int (*UnInit) (void); - int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); - int (*TxFrame) (void *pData, int size); - void (*Lock) (void); - void (*UnLock) (void); - EthDev_STATUS (*LinkChk) (void); -} EthDev_IOB; - - -/* - * Look for received data. If data is found then uip_buf is assigned to the - * new data and the length of the data is returned. If no data is found then - * uip_buf is not updated and 0 is returned. - */ -unsigned long ulGetEMACRxData( void ); - -/* - * Send usTxDataLen bytes from uip_buf. - */ -void vSendEMACTxData( unsigned short usTxDataLen ); - -/* - * Prepare the Ethernet hardware ready for TCP/IP comms. - */ -long lEMACInit(void); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h deleted file mode 100644 index 93134430f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * @file: EthDev_LPC17xx.h - * @purpose: Ethernet Device Definitions for NXP LPC17xx - * @version: V0.01 - * @date: 14. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef __ETHDEV_LPC17XX_H -#define __ETHDEV_LPC17XX_H - -#include - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 3 /* Num.of RX Fragments. */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments. */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -typedef struct { /* RX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} RX_DESC_TypeDef; - -typedef struct { /* RX Status struct */ - uint32_t Info; - uint32_t HashCRC; -} RX_STAT_TypeDef; - -typedef struct { /* TX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} TX_DESC_TypeDef; - -typedef struct { /* TX Status struct */ - uint32_t Info; -} TX_STAT_TypeDef; - - -/* EMAC variables located in AHB SRAM bank 1*/ -#define AHB_SRAM_BANK1_BASE 0x2007c000UL -#define RX_DESC_BASE (AHB_SRAM_BANK1_BASE ) -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_DESC_TypeDef */ -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_STAT_TypeDef */ -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*(2*4)) /* 2 * uint32_t, see TX_DESC_TypeDef */ -#define ETH_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*(1*4)) /* 1 * uint32_t, see TX_STAT_TypeDef */ - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define ETH_BUF(i) ( ETH_BUF_BASE + ETH_FRAG_SIZE*i ) -#define ETH_NUM_BUFFERS ( NUM_TX_FRAG + NUM_RX_FRAG + 1 ) /* There are in fact 2 more buffers than descriptors as the two Tx descriptors use the same buffer to speed up the uip Tx. */ - - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000003C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#define MCMD_READ 0x00000001 /* MII Read */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* ENET Device Revision ID */ -#define OLD_EMAC_MODULE_ID 0x39022000 /* Rev. ID for first rev '-' */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ -#define PHY_AUTO_NEG_COMPLETE 0x0020 /* Auto negotiation have finished. */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c deleted file mode 100644 index 7c13b671f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c +++ /dev/null @@ -1,578 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Originally adapted from file written by Andreas Dannenberg. Supplied with permission. */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "EthDev_LPC17xx.h" - -/* Time to wait between each inspection of the link status. */ -#define emacWAIT_FOR_LINK_TO_ESTABLISH ( 500 / portTICK_PERIOD_MS ) - -/* Short delay used in several places during the initialisation process. */ -#define emacSHORT_DELAY ( 2 ) - -/* Hardware specific bit definitions. */ -#define emacLINK_ESTABLISHED ( 0x0001 ) -#define emacFULL_DUPLEX_ENABLED ( 0x0004 ) -#define emac10BASE_T_MODE ( 0x0002 ) -#define emacPINSEL2_VALUE ( 0x50150105 ) - -/* If no buffers are available, then wait this long before looking again.... */ -#define emacBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Index to the Tx descriptor that is always used first for every Tx. The second -descriptor is then used to re-send in order to speed up the uIP Tx process. */ -#define emacTX_DESC_INDEX ( 0 ) - -/*-----------------------------------------------------------*/ - -/* - * Configure both the Rx and Tx descriptors during the init process. - */ -static void prvInitDescriptors( void ); - -/* - * Setup the IO and peripherals required for Ethernet communication. - */ -static void prvSetupEMACHardware( void ); - -/* - * Control the auto negotiate process. - */ -static void prvConfigurePHY( void ); - -/* - * Wait for a link to be established, then setup the PHY according to the link - * parameters. - */ -static long prvSetupLinkStatus( void ); - -/* - * Search the pool of buffers to find one that is free. If a buffer is found - * mark it as in use before returning its address. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return an allocated buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Send lValue to the lPhyReg within the PHY. - */ -static long prvWritePHY( long lPhyReg, long lValue ); - -/* - * Read a value from ucPhyReg within the PHY. *plStatus will be set to - * pdFALSE if there is an error. - */ -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/* Each ucBufferInUse index corresponds to a position in the pool of buffers. -If the index contains a 1 then the buffer within pool is in use, if it -contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ ETH_NUM_BUFFERS ] = { pdFALSE }; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -unsigned char * uip_buf; - -/* Store the length of the data being sent so the data can be sent twice. The -value will be set back to 0 once the data has been sent twice. */ -static unsigned short usSendLen = 0; - -/*-----------------------------------------------------------*/ - -long lEMACInit( void ) -{ -long lReturn = pdPASS; -unsigned long ulID1, ulID2; - - /* Reset peripherals, configure port pins and registers. */ - prvSetupEMACHardware(); - - /* Check the PHY part number is as expected. */ - ulID1 = prvReadPHY( PHY_REG_IDR1, &lReturn ); - ulID2 = prvReadPHY( PHY_REG_IDR2, &lReturn ); - if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFF0UL ) ) == DP83848C_ID ) - { - /* Set the Ethernet MAC Address registers */ - EMAC->SA0 = ( configMAC_ADDR0 << 8 ) | configMAC_ADDR1; - EMAC->SA1 = ( configMAC_ADDR2 << 8 ) | configMAC_ADDR3; - EMAC->SA2 = ( configMAC_ADDR4 << 8 ) | configMAC_ADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - prvInitDescriptors(); - - /* Receive broadcast and perfect match packets */ - EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Setup the PHY. */ - prvConfigurePHY(); - } - else - { - lReturn = pdFAIL; - } - - /* Check the link status. */ - if( lReturn == pdPASS ) - { - lReturn = prvSetupLinkStatus(); - } - - if( lReturn == pdPASS ) - { - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* Reset all interrupts */ - EMAC->IntClear = ( INT_RX_OVERRUN | INT_RX_ERR | INT_RX_FIN | INT_RX_DONE | INT_TX_UNDERRUN | INT_TX_ERR | INT_TX_FIN | INT_TX_DONE | INT_SOFT_INT | INT_WAKEUP ); - - /* Enable receive and transmit mode of MAC Ethernet core */ - EMAC->Command |= ( CR_RX_EN | CR_TX_EN ); - EMAC->MAC1 |= MAC1_REC_EN; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < ETH_NUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) ETH_BUF( x ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitDescriptors( void ) -{ -long x, lNextBuffer = 0; - - for( x = 0; x < NUM_RX_FRAG; x++ ) - { - /* Allocate the next Ethernet buffer to this descriptor. */ - RX_DESC_PACKET( x ) = ETH_BUF( lNextBuffer ); - RX_DESC_CTRL( x ) = RCTRL_INT | ( ETH_FRAG_SIZE - 1 ); - RX_STAT_INFO( x ) = 0; - RX_STAT_HASHCRC( x ) = 0; - - /* The Ethernet buffer is now in use. */ - ucBufferInUse[ lNextBuffer ] = pdTRUE; - lNextBuffer++; - } - - /* Set EMAC Receive Descriptor Registers. */ - EMAC->RxDescriptor = RX_DESC_BASE; - EMAC->RxStatus = RX_STAT_BASE; - EMAC->RxDescriptorNumber = NUM_RX_FRAG - 1; - - /* Rx Descriptors Point to 0 */ - EMAC->RxConsumeIndex = 0; - - /* A buffer is not allocated to the Tx descriptors until they are actually - used. */ - for( x = 0; x < NUM_TX_FRAG; x++ ) - { - TX_DESC_PACKET( x ) = ( unsigned long ) NULL; - TX_DESC_CTRL( x ) = 0; - TX_STAT_INFO( x ) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - EMAC->TxDescriptor = TX_DESC_BASE; - EMAC->TxStatus = TX_STAT_BASE; - EMAC->TxDescriptorNumber = NUM_TX_FRAG - 1; - - /* Tx Descriptors Point to 0 */ - EMAC->TxProduceIndex = 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupEMACHardware( void ) -{ -unsigned short us; -long x, lDummy; - - /* Enable P1 Ethernet Pins. */ - PINCON->PINSEL2 = emacPINSEL2_VALUE; - PINCON->PINSEL3 = ( PINCON->PINSEL3 & ~0x0000000F ) | 0x00000005; - - /* Power Up the EMAC controller. */ - SC->PCONP |= PCONP_PCENET; - vTaskDelay( emacSHORT_DELAY ); - - /* Reset all EMAC internal modules. */ - EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM; - - /* A short delay after reset. */ - vTaskDelay( emacSHORT_DELAY ); - - /* Initialize MAC control registers. */ - EMAC->MAC1 = MAC1_PASS_ALL; - EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - EMAC->MAXF = ETH_MAX_FLEN; - EMAC->CLRT = CLRT_DEF; - EMAC->IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - EMAC->SUPP = SUPP_RES_RMII; - vTaskDelay( emacSHORT_DELAY ); - EMAC->SUPP = 0; - - /* Put the PHY in reset mode */ - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - - /* Wait for hardware reset to end. */ - for( x = 0; x < 100; x++ ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - us = prvReadPHY( PHY_REG_BMCR, &lDummy ); - if( !( us & MCFG_RES_MII ) ) - { - /* Reset complete */ - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvConfigurePHY( void ) -{ -unsigned short us; -long x, lDummy; - - /* Auto negotiate the configuration. */ - if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - - for( x = 0; x < 10; x++ ) - { - us = prvReadPHY( PHY_REG_BMSR, &lDummy ); - - if( us & PHY_AUTO_NEG_COMPLETE ) - { - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - } -} -/*-----------------------------------------------------------*/ - -static long prvSetupLinkStatus( void ) -{ -long lReturn = pdFAIL, x; -unsigned short usLinkStatus; - - /* Wait with timeout for the link to be established. */ - for( x = 0; x < 10; x++ ) - { - usLinkStatus = prvReadPHY( PHY_REG_STS, &lReturn ); - if( usLinkStatus & emacLINK_ESTABLISHED ) - { - /* Link is established. */ - lReturn = pdPASS; - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - - if( lReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if( usLinkStatus & emacFULL_DUPLEX_ENABLED ) - { - /* Full duplex is enabled. */ - EMAC->MAC2 |= MAC2_FULL_DUP; - EMAC->Command |= CR_FULL_DUP; - EMAC->IPGT = IPGT_FULL_DUP; - } - else - { - /* Half duplex mode. */ - EMAC->IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if( usLinkStatus & emac10BASE_T_MODE ) - { - /* 10MBit mode. */ - EMAC->SUPP = 0; - } - else - { - /* 100MBit mode. */ - EMAC->SUPP = SUPP_SPEED; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < ETH_NUM_BUFFERS; ul++ ) - { - if( ETH_BUF( ul ) == ( unsigned long ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetEMACRxData( void ) -{ -unsigned long ulLen = 0; -long lIndex; - - if( EMAC->RxProduceIndex != EMAC->RxConsumeIndex ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - ulLen = ( RX_STAT_INFO( EMAC->RxConsumeIndex ) & RINFO_SIZE ) - 3; - uip_buf = ( unsigned char * ) RX_DESC_PACKET( EMAC->RxConsumeIndex ); - - /* Allocate a new buffer to the descriptor. */ - RX_DESC_PACKET( EMAC->RxConsumeIndex ) = ( unsigned long ) prvGetNextBuffer(); - - /* Move the consume index onto the next position, ensuring it wraps to - the beginning at the appropriate place. */ - lIndex = EMAC->RxConsumeIndex; - - lIndex++; - if( lIndex >= NUM_RX_FRAG ) - { - lIndex = 0; - } - - EMAC->RxConsumeIndex = lIndex; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vSendEMACTxData( unsigned short usTxDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free, indicated by its buffer being - NULL. */ - while( TX_DESC_PACKET( emacTX_DESC_INDEX ) != ( unsigned long ) NULL ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > emacBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - break; - } - } - - /* Setup the Tx descriptor for transmission. Remember the length of the - data being sent so the second descriptor can be used to send it again from - within the ISR. */ - usSendLen = usTxDataLen; - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) uip_buf; - TX_DESC_CTRL( emacTX_DESC_INDEX ) = ( usTxDataLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX + 1 ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static long prvWritePHY( long lPhyReg, long lValue ) -{ -const long lMaxTime = 10; -long x; - - EMAC->MADR = DP83848C_DEF_ADR | lPhyReg; - EMAC->MWTD = lValue; - - x = 0; - for( x = 0; x < lMaxTime; x++ ) - { - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - /* Operation has finished. */ - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - if( x < lMaxTime ) - { - return pdPASS; - } - else - { - return pdFAIL; - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ) -{ -long x; -const long lMaxTime = 10; - - EMAC->MADR = DP83848C_DEF_ADR | ucPhyReg; - EMAC->MCMD = MCMD_READ; - - for( x = 0; x < lMaxTime; x++ ) - { - /* Operation has finished. */ - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - EMAC->MCMD = 0; - - if( x >= lMaxTime ) - { - *plStatus = pdFAIL; - } - - return( EMAC->MRDD ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -unsigned long ulStatus; -long lHigherPriorityTaskWoken = pdFALSE; - - ulStatus = EMAC->IntStatus; - - /* Clear the interrupt. */ - EMAC->IntClear = ulStatus; - - if( ulStatus & INT_RX_DONE ) - { - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - } - - if( ulStatus & INT_TX_DONE ) - { - if( usSendLen > 0 ) - { - /* Send the data again, using the second descriptor. As there are - only two descriptors the index is set back to 0. */ - TX_DESC_PACKET( ( emacTX_DESC_INDEX + 1 ) ) = TX_DESC_PACKET( emacTX_DESC_INDEX ); - TX_DESC_CTRL( ( emacTX_DESC_INDEX + 1 ) ) = ( usSendLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX ); - - /* This is the second Tx so set usSendLen to 0 to indicate that the - Tx descriptors will be free again. */ - usSendLen = 0UL; - } - else - { - /* The Tx buffer is no longer required. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) NULL; - } - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index 9a51bc76a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[ 128 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", (int)lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ -extern long lParTestGetLEDState( void ); - - ( void ) arg; - - /* Get the state of the LEDs that are on the FIO1 port. */ - if( lParTestGetLEDState() ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED

", pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 9bb89b5c1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "EthDev_LPC17xx.h" -#include "EthDev.h" -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - while( lEMACInit() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - EMAC->IntEnable = ( INT_RX_DONE | INT_TX_DONE ); - - /* Set the interrupt priority to the max permissible to cause some - interrupt nesting. */ - NVIC_SetPriority( ENET_IRQn, configEMAC_INTERRUPT_PRIORITY ); - - /* Enable the interrupt. */ - NVIC_EnableIRQ( ENET_IRQn ); - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ulGetEMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendEMACTxData( uip_len ); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -extern void vParTestSetLEDState( long lState ); - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the FIO1 LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLEDState( pdTRUE ); - } - else - { - vParTestSetLEDState( pdFALSE ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac deleted file mode 100644 index 95eeeaa81..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac +++ /dev/null @@ -1,13 +0,0 @@ -execUserReset() -{ - __writeMemory32(0x00000000, 0xE000ED08, "Memory"); //Vector table remap at 0x00000000 -} - -execUserPreload() -{ - // If the MAM values was wrong, a dummy read is necessary to get the flash memory in sync. - __writeMemory32(0x00000001, 0x400FC040, "Memory"); // MEMMAP = 1 - __readMemory32(0x00000000, "Memory"); - __writeMemory32(0x00000000, 0xE000ED08, "Memory"); //Vector table remap at 0x00000000 -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h deleted file mode 100644 index 8c0234f30..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configMAX_PRIORITIES ( 5 ) -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 100000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 - -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 32 priority levels */ -#endif - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) ) - -/* Priorities passed to NVIC_SetPriority() do not require shifting as the -function does the shifting itself. Note these priorities need to be equal to -or lower than configMAX_SYSCALL_INTERRUPT_PRIORITY - therefore the numeric -value needs to be equal to or greater than 5 (on the Cortex-M3 the lower the -numeric value the higher the interrupt priority). */ -#define configEMAC_INTERRUPT_PRIORITY 5 -#define configUSB_INTERRUPT_PRIORITY 6 - - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -#ifdef __ICCARM__ - #include "LPC17xx.h" - extern void vConfigureTimerForRunTimeStats( void ); - #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() - #define portGET_RUN_TIME_COUNTER_VALUE() TIM0->TC -#endif - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h deleted file mode 100644 index 3e1c6731c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef LED_HH -#define LED_HH - -void vToggleLED( unsigned long ulLED ); -void vSetLEDState( unsigned long ulLED, long lState ); -long lGetLEDState( unsigned long ulLED ); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf deleted file mode 100644 index 1f035952e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf +++ /dev/null @@ -1,37 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00000100; -define symbol __ICFEDIT_region_ROM_end__ = 0x0007FFFF; -define symbol __ICFEDIT_region_RAM_start__ = 0x10000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x10007FFF; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x800; -define symbol __ICFEDIT_size_heap__ = 0x400; -/**** End of ICF editor section. ###ICF###*/ - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; - -define symbol _AHB_RAM_start__ = 0x2007C000; -define symbol _AHB_RAM_end__ = 0x20083FFF; -define region AHB_RAM_region = mem:[from _AHB_RAM_start__ to _AHB_RAM_end__]; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -initialize by copy { readwrite }; -do not initialize { section .noinit }; -do not initialize { section USB_DMA_RAM }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; -place in ROM_region { readonly }; -place in RAM_region { readwrite, - block CSTACK, block HEAP }; -place in AHB_RAM_region - { readwrite data section AHB_RAM_MEMORY, section USB_DMA_RAM, section EMAC_DMA_RAM}; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h deleted file mode 100644 index f2480b138..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h +++ /dev/null @@ -1,1081 +0,0 @@ -#ifndef __LPC17xx_H -#define __LPC17xx_H - -/* System Control Block (SCB) includes: - Flash Accelerator Module, Clocking and Power Control, External Interrupts, - Reset, System Control and Status -*/ -#define SCB_BASE_ADDR 0x400FC000 - -#define PCONP_PCTIM0 0x00000002 -#define PCONP_PCTIM1 0x00000004 -#define PCONP_PCUART0 0x00000008 -#define PCONP_PCUART1 0x00000010 -#define PCONP_PCPWM1 0x00000040 -#define PCONP_PCI2C0 0x00000080 -#define PCONP_PCSPI 0x00000100 -#define PCONP_PCRTC 0x00000200 -#define PCONP_PCSSP1 0x00000400 -#define PCONP_PCAD 0x00001000 -#define PCONP_PCCAN1 0x00002000 -#define PCONP_PCCAN2 0x00004000 -#define PCONP_PCGPIO 0x00008000 -#define PCONP_PCRIT 0x00010000 -#define PCONP_PCMCPWM 0x00020000 -#define PCONP_PCQEI 0x00040000 -#define PCONP_PCI2C1 0x00080000 -#define PCONP_PCSSP0 0x00200000 -#define PCONP_PCTIM2 0x00400000 -#define PCONP_PCTIM3 0x00800000 -#define PCONP_PCUART2 0x01000000 -#define PCONP_PCUART3 0x02000000 -#define PCONP_PCI2C2 0x04000000 -#define PCONP_PCI2S 0x08000000 -#define PCONP_PCGPDMA 0x20000000 -#define PCONP_PCENET 0x40000000 -#define PCONP_PCUSB 0x80000000 - -#define PLLCON_PLLE 0x00000001 -#define PLLCON_PLLC 0x00000002 -#define PLLCON_MASK 0x00000003 - -#define PLLCFG_MUL1 0x00000000 -#define PLLCFG_MUL2 0x00000001 -#define PLLCFG_MUL3 0x00000002 -#define PLLCFG_MUL4 0x00000003 -#define PLLCFG_MUL5 0x00000004 -#define PLLCFG_MUL6 0x00000005 -#define PLLCFG_MUL7 0x00000006 -#define PLLCFG_MUL8 0x00000007 -#define PLLCFG_MUL9 0x00000008 -#define PLLCFG_MUL10 0x00000009 -#define PLLCFG_MUL11 0x0000000A -#define PLLCFG_MUL12 0x0000000B -#define PLLCFG_MUL13 0x0000000C -#define PLLCFG_MUL14 0x0000000D -#define PLLCFG_MUL15 0x0000000E -#define PLLCFG_MUL16 0x0000000F -#define PLLCFG_MUL17 0x00000010 -#define PLLCFG_MUL18 0x00000011 -#define PLLCFG_MUL19 0x00000012 -#define PLLCFG_MUL20 0x00000013 -#define PLLCFG_MUL21 0x00000014 -#define PLLCFG_MUL22 0x00000015 -#define PLLCFG_MUL23 0x00000016 -#define PLLCFG_MUL24 0x00000017 -#define PLLCFG_MUL25 0x00000018 -#define PLLCFG_MUL26 0x00000019 -#define PLLCFG_MUL27 0x0000001A -#define PLLCFG_MUL28 0x0000001B -#define PLLCFG_MUL29 0x0000001C -#define PLLCFG_MUL30 0x0000001D -#define PLLCFG_MUL31 0x0000001E -#define PLLCFG_MUL32 0x0000001F -#define PLLCFG_MUL33 0x00000020 -#define PLLCFG_MUL34 0x00000021 -#define PLLCFG_MUL35 0x00000022 -#define PLLCFG_MUL36 0x00000023 - -#define PLLCFG_DIV1 0x00000000 -#define PLLCFG_DIV2 0x00010000 -#define PLLCFG_DIV3 0x00020000 -#define PLLCFG_DIV4 0x00030000 -#define PLLCFG_DIV5 0x00040000 -#define PLLCFG_DIV6 0x00050000 -#define PLLCFG_DIV7 0x00060000 -#define PLLCFG_DIV8 0x00070000 -#define PLLCFG_DIV9 0x00080000 -#define PLLCFG_DIV10 0x00090000 -#define PLLCFG_MASK 0x00FF7FFF - -#define PLLSTAT_MSEL_MASK 0x00007FFF -#define PLLSTAT_NSEL_MASK 0x00FF0000 - -#define PLLSTAT_PLLE (1 << 24) -#define PLLSTAT_PLLC (1 << 25) -#define PLLSTAT_PLOCK (1 << 26) - -#define PLLFEED_FEED1 0x000000AA -#define PLLFEED_FEED2 0x00000055 - -#define NVIC_IRQ_WDT 0u // IRQ0, exception number 16 -#define NVIC_IRQ_TIMER0 1u // IRQ1, exception number 17 -#define NVIC_IRQ_TIMER1 2u // IRQ2, exception number 18 -#define NVIC_IRQ_TIMER2 3u // IRQ3, exception number 19 -#define NVIC_IRQ_TIMER3 4u // IRQ4, exception number 20 -#define NVIC_IRQ_UART0 5u // IRQ5, exception number 21 -#define NVIC_IRQ_UART1 6u // IRQ6, exception number 22 -#define NVIC_IRQ_UART2 7u // IRQ7, exception number 23 -#define NVIC_IRQ_UART3 8u // IRQ8, exception number 24 -#define NVIC_IRQ_PWM1 9u // IRQ9, exception number 25 -#define NVIC_IRQ_I2C0 10u // IRQ10, exception number 26 -#define NVIC_IRQ_I2C1 11u // IRQ11, exception number 27 -#define NVIC_IRQ_I2C2 12u // IRQ12, exception number 28 -#define NVIC_IRQ_SPI 13u // IRQ13, exception number 29 -#define NVIC_IRQ_SSP0 14u // IRQ14, exception number 30 -#define NVIC_IRQ_SSP1 15u // IRQ15, exception number 31 -#define NVIC_IRQ_PLL0 16u // IRQ16, exception number 32 -#define NVIC_IRQ_RTC 17u // IRQ17, exception number 33 -#define NVIC_IRQ_EINT0 18u // IRQ18, exception number 34 -#define NVIC_IRQ_EINT1 19u // IRQ19, exception number 35 -#define NVIC_IRQ_EINT2 20u // IRQ20, exception number 36 -#define NVIC_IRQ_EINT3 21u // IRQ21, exception number 37 -#define NVIC_IRQ_ADC 22u // IRQ22, exception number 38 -#define NVIC_IRQ_BOD 23u // IRQ23, exception number 39 -#define NVIC_IRQ_USB 24u // IRQ24, exception number 40 -#define NVIC_IRQ_CAN 25u // IRQ25, exception number 41 -#define NVIC_IRQ_GPDMA 26u // IRQ26, exception number 42 -#define NVIC_IRQ_I2S 27u // IRQ27, exception number 43 -#define NVIC_IRQ_ETHERNET 28u // IRQ28, exception number 44 -#define NVIC_IRQ_RIT 29u // IRQ29, exception number 45 -#define NVIC_IRQ_MCPWM 30u // IRQ30, exception number 46 -#define NVIC_IRQ_QE 31u // IRQ31, exception number 47 -#define NVIC_IRQ_PLL1 32u // IRQ32, exception number 48 -#define NVIC_IRQ_USB_ACT 33u // IRQ33, exception number 49 -#define NVIC_IRQ_CAN_ACT 34u // IRQ34, exception number 50 - - -#endif // __LPC17xx_H - - -#ifndef CMSIS_17xx_H -#define CMSIS_17xx_H - -/****************************************************************************** - * @file: LPC17xx.h - * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for - * NXP LPC17xx Device Series - * @version: V1.1 - * @date: 14th May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __LPC17xx_H__ -#define __LPC17xx_H__ - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** LPC17xx Specific Interrupt Numbers *******************************************************/ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ - TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ - TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ - TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ - UART0_IRQn = 5, /*!< UART0 Interrupt */ - UART1_IRQn = 6, /*!< UART1 Interrupt */ - UART2_IRQn = 7, /*!< UART2 Interrupt */ - UART3_IRQn = 8, /*!< UART3 Interrupt */ - PWM1_IRQn = 9, /*!< PWM1 Interrupt */ - I2C0_IRQn = 10, /*!< I2C0 Interrupt */ - I2C1_IRQn = 11, /*!< I2C1 Interrupt */ - I2C2_IRQn = 12, /*!< I2C2 Interrupt */ - SPI_IRQn = 13, /*!< SPI Interrupt */ - SSP0_IRQn = 14, /*!< SSP0 Interrupt */ - SSP1_IRQn = 15, /*!< SSP1 Interrupt */ - PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ - RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ - EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ - EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ - EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ - EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ - ADC_IRQn = 22, /*!< A/D Converter Interrupt */ - BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ - USB_IRQn = 24, /*!< USB Interrupt */ - CAN_IRQn = 25, /*!< CAN Interrupt */ - DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ - I2S_IRQn = 27, /*!< I2S Interrupt */ - ENET_IRQn = 28, /*!< Ethernet Interrupt */ - RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ - MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ - QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ - PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -//#include "..\core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "core_cm3.h" -#include "system_LPC17xx.h" /* System Header */ - - - -/** - * Initialize the system clock - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); - - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ - -/*------------- System Control (SC) ------------------------------------------*/ -typedef struct -{ - __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ - uint32_t RESERVED0[31]; - __IO uint32_t PLL0CON; /* Clocking and Power Control */ - __IO uint32_t PLL0CFG; - __I uint32_t PLL0STAT; - __O uint32_t PLL0FEED; - uint32_t RESERVED1[4]; - __IO uint32_t PLL1CON; - __IO uint32_t PLL1CFG; - __I uint32_t PLL1STAT; - __O uint32_t PLL1FEED; - uint32_t RESERVED2[4]; - __IO uint32_t PCON; - __IO uint32_t PCONP; - uint32_t RESERVED3[15]; - __IO uint32_t CCLKCFG; - __IO uint32_t USBCLKCFG; - __IO uint32_t CLKSRCSEL; - uint32_t RESERVED4[12]; - __IO uint32_t EXTINT; /* External Interrupts */ - uint32_t RESERVED5; - __IO uint32_t EXTMODE; - __IO uint32_t EXTPOLAR; - uint32_t RESERVED6[12]; - __IO uint32_t RSID; /* Reset */ - uint32_t RESERVED7[7]; - __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ - __IO uint32_t IRCTRIM; /* Clock Dividers */ - __IO uint32_t PCLKSEL0; - __IO uint32_t PCLKSEL1; - uint32_t RESERVED8[4]; - __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ - uint32_t RESERVED9; - __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ - } SC_TypeDef; - -/*------------- Pin Connect Block (PINCON) -----------------------------------*/ -typedef struct -{ - __IO uint32_t PINSEL0; - __IO uint32_t PINSEL1; - __IO uint32_t PINSEL2; - __IO uint32_t PINSEL3; - __IO uint32_t PINSEL4; - __IO uint32_t PINSEL5; - __IO uint32_t PINSEL6; - __IO uint32_t PINSEL7; - __IO uint32_t PINSEL8; - __IO uint32_t PINSEL9; - __IO uint32_t PINSEL10; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE0; - __IO uint32_t PINMODE1; - __IO uint32_t PINMODE2; - __IO uint32_t PINMODE3; - __IO uint32_t PINMODE4; - __IO uint32_t PINMODE5; - __IO uint32_t PINMODE6; - __IO uint32_t PINMODE7; - __IO uint32_t PINMODE8; - __IO uint32_t PINMODE9; - __IO uint32_t PINMODE_OD0; - __IO uint32_t PINMODE_OD1; - __IO uint32_t PINMODE_OD2; - __IO uint32_t PINMODE_OD3; - __IO uint32_t PINMODE_OD4; -} PINCON_TypeDef; - -/*------------- General Purpose Input/Output (GPIO) --------------------------*/ -typedef struct -{ - __IO uint32_t FIODIR; - uint32_t RESERVED0[3]; - __IO uint32_t FIOMASK; - __IO uint32_t FIOPIN; - __IO uint32_t FIOSET; - __O uint32_t FIOCLR; -} GPIO_TypeDef; - -typedef struct -{ - __I uint32_t IntStatus; - __I uint32_t IO0IntStatR; - __I uint32_t IO0IntStatF; - __O uint32_t IO0IntClr; - __IO uint32_t IO0IntEnR; - __IO uint32_t IO0IntEnF; - uint32_t RESERVED0[3]; - __I uint32_t IO2IntStatR; - __I uint32_t IO2IntStatF; - __O uint32_t IO2IntClr; - __IO uint32_t IO2IntEnR; - __IO uint32_t IO2IntEnF; -} GPIOINT_TypeDef; - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - uint32_t RESERVED0[2]; - __IO uint32_t EMR; - uint32_t RESERVED1[24]; - __IO uint32_t CTCR; -} TIM_TypeDef; - -/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - __I uint32_t CR2; - __I uint32_t CR3; - __IO uint32_t MR4; - __IO uint32_t MR5; - __IO uint32_t MR6; - __IO uint32_t PCR; - __IO uint32_t LER; - uint32_t RESERVED0[7]; - __IO uint32_t CTCR; -} PWM_TypeDef; - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __IO uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED7[3]; - __IO uint8_t ADRMATCH; -} UART_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[3]; - __IO uint8_t MCR; - uint8_t RESERVED2[3]; - __IO uint8_t LSR; - uint8_t RESERVED3[3]; - __IO uint8_t MSR; - uint8_t RESERVED4[3]; - __IO uint8_t SCR; - uint8_t RESERVED5[3]; - __IO uint32_t ACR; - uint32_t RESERVED6; - __IO uint32_t FDR; - uint32_t RESERVED7; - __IO uint8_t TER; - uint8_t RESERVED8[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED9[3]; - __IO uint8_t ADRMATCH; - uint8_t RESERVED10[3]; - __IO uint8_t RS485DLY; -} UART1_TypeDef; - -/*------------- Serial Peripheral Interface (SPI) ----------------------------*/ -typedef struct -{ - __IO uint32_t SPCR; - __I uint32_t SPSR; - __IO uint32_t SPDR; - __IO uint32_t SPCCR; - uint32_t RESERVED0[3]; - __IO uint32_t SPINT; -} SPI_TypeDef; - -/*------------- Synchronous Serial Communication (SSP) -----------------------*/ -typedef struct -{ - __IO uint32_t CR0; - __IO uint32_t CR1; - __IO uint32_t DR; - __I uint32_t SR; - __IO uint32_t CPSR; - __IO uint32_t IMSC; - __IO uint32_t RIS; - __IO uint32_t MIS; - __IO uint32_t ICR; - __IO uint32_t DMACR; -} SSP_TypeDef; - -/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ -typedef struct -{ - __IO uint32_t I2CONSET; - __I uint32_t I2STAT; - __IO uint32_t I2DAT; - __IO uint32_t I2ADR0; - __IO uint32_t I2SCLH; - __IO uint32_t I2SCLL; - __O uint32_t I2CONCLR; - __IO uint32_t MMCTRL; - __IO uint32_t I2ADR1; - __IO uint32_t I2ADR2; - __IO uint32_t I2ADR3; - __I uint32_t I2DATA_BUFFER; - __IO uint32_t I2MASK0; - __IO uint32_t I2MASK1; - __IO uint32_t I2MASK2; - __IO uint32_t I2MASK3; -} I2C_TypeDef; - -/*------------- Inter IC Sound (I2S) -----------------------------------------*/ -typedef struct -{ - __IO uint32_t I2SDAO; - __IO uint32_t I2SDAI; - __O uint32_t I2STXFIFO; - __I uint32_t I2SRXFIFO; - __I uint32_t I2SSTATE; - __IO uint32_t I2SDMA1; - __IO uint32_t I2SDMA2; - __IO uint32_t I2SIRQ; - __IO uint32_t I2STXRATE; - __IO uint32_t I2SRXRATE; - __IO uint32_t I2STXBITRATE; - __IO uint32_t I2SRXBITRATE; - __IO uint32_t I2STXMODE; - __IO uint32_t I2SRXMODE; -} I2S_TypeDef; - -/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ -typedef struct -{ - __IO uint32_t RICOMPVAL; - __IO uint32_t RIMASK; - __IO uint8_t RICTRL; - uint8_t RESERVED0[3]; - __IO uint32_t RICOUNTER; -} RIT_TypeDef; - -/*------------- Real-Time Clock (RTC) ----------------------------------------*/ -typedef struct -{ - __IO uint8_t ILR; - uint8_t RESERVED0[3]; - __IO uint8_t CCR; - uint8_t RESERVED1[3]; - __IO uint8_t CIIR; - uint8_t RESERVED2[3]; - __IO uint8_t AMR; - uint8_t RESERVED3[3]; - __I uint32_t CTIME0; - __I uint32_t CTIME1; - __I uint32_t CTIME2; - __IO uint8_t SEC; - uint8_t RESERVED4[3]; - __IO uint8_t MIN; - uint8_t RESERVED5[3]; - __IO uint8_t HOUR; - uint8_t RESERVED6[3]; - __IO uint8_t DOM; - uint8_t RESERVED7[3]; - __IO uint8_t DOW; - uint8_t RESERVED8[3]; - __IO uint16_t DOY; - uint16_t RESERVED9; - __IO uint8_t MONTH; - uint8_t RESERVED10[3]; - __IO uint16_t YEAR; - uint16_t RESERVED11; - __IO uint32_t CALIBRATION; - __IO uint32_t GPREG0; - __IO uint32_t GPREG1; - __IO uint32_t GPREG2; - __IO uint32_t GPREG3; - __IO uint32_t GPREG4; - __IO uint8_t WAKEUPDIS; - uint8_t RESERVED12[3]; - __IO uint8_t PWRCTRL; - uint8_t RESERVED13[3]; - __IO uint8_t ALSEC; - uint8_t RESERVED14[3]; - __IO uint8_t ALMIN; - uint8_t RESERVED15[3]; - __IO uint8_t ALHOUR; - uint8_t RESERVED16[3]; - __IO uint8_t ALDOM; - uint8_t RESERVED17[3]; - __IO uint8_t ALDOW; - uint8_t RESERVED18[3]; - __IO uint16_t ALDOY; - uint16_t RESERVED19; - __IO uint8_t ALMON; - uint8_t RESERVED20[3]; - __IO uint16_t ALYEAR; - uint16_t RESERVED21; -} RTC_TypeDef; - -/*------------- Watchdog Timer (WDT) -----------------------------------------*/ -typedef struct -{ - __IO uint8_t WDMOD; - uint8_t RESERVED0[3]; - __IO uint32_t WDTC; - __O uint8_t WDFEED; - uint8_t RESERVED1[3]; - __I uint32_t WDTV; - __IO uint32_t WDCLKSEL; -} WDT_TypeDef; - -/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ -typedef struct -{ - __IO uint32_t ADCR; - __IO uint32_t ADGDR; - uint32_t RESERVED0; - __IO uint32_t ADINTEN; - __I uint32_t ADDR0; - __I uint32_t ADDR1; - __I uint32_t ADDR2; - __I uint32_t ADDR3; - __I uint32_t ADDR4; - __I uint32_t ADDR5; - __I uint32_t ADDR6; - __I uint32_t ADDR7; - __I uint32_t ADSTAT; - __IO uint32_t ADTRM; -} ADC_TypeDef; - -/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ -typedef struct -{ - __IO uint32_t DACR; - __IO uint32_t DACCTRL; - __IO uint16_t DACCNTVAL; -} DAC_TypeDef; - -/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ -typedef struct -{ - __I uint32_t MCCON; - __O uint32_t MCCON_SET; - __O uint32_t MCCON_CLR; - __I uint32_t MCCAPCON; - __O uint32_t MCCAPCON_SET; - __O uint32_t MCCAPCON_CLR; - __IO uint32_t MCTIM0; - __IO uint32_t MCTIM1; - __IO uint32_t MCTIM2; - __IO uint32_t MCPER0; - __IO uint32_t MCPER1; - __IO uint32_t MCPER2; - __IO uint32_t MCPW0; - __IO uint32_t MCPW1; - __IO uint32_t MCPW2; - __IO uint32_t MCDEADTIME; - __IO uint32_t MCCCP; - __IO uint32_t MCCR0; - __IO uint32_t MCCR1; - __IO uint32_t MCCR2; - __I uint32_t MCINTEN; - __O uint32_t MCINTEN_SET; - __O uint32_t MCINTEN_CLR; - __I uint32_t MCCNTCON; - __O uint32_t MCCNTCON_SET; - __O uint32_t MCCNTCON_CLR; - __I uint32_t MCINTFLAG; - __O uint32_t MCINTFLAG_SET; - __O uint32_t MCINTFLAG_CLR; - __O uint32_t MCCAP_CLR; -} MCPWM_TypeDef; - -/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ -typedef struct -{ - __O uint32_t QEICON; - __I uint32_t QEISTAT; - __IO uint32_t QEICONF; - __I uint32_t QEIPOS; - __IO uint32_t QEIMAXPOS; - __IO uint32_t CMPOS0; - __IO uint32_t CMPOS1; - __IO uint32_t CMPOS2; - __I uint32_t INXCNT; - __IO uint32_t INXCMP; - __IO uint32_t QEILOAD; - __I uint32_t QEITIME; - __I uint32_t QEIVEL; - __I uint32_t QEICAP; - __IO uint32_t VELCOMP; - __IO uint32_t FILTER; - uint32_t RESERVED0[998]; - __O uint32_t QEIIEC; - __O uint32_t QEIIES; - __I uint32_t QEIINTSTAT; - __I uint32_t QEIIE; - __O uint32_t QEICLR; - __O uint32_t QEISET; -} QEI_TypeDef; - -/*------------- Controller Area Network (CAN) --------------------------------*/ -typedef struct -{ - __IO uint32_t mask[512]; /* ID Masks */ -} CANAF_RAM_TypeDef; - -typedef struct /* Acceptance Filter Registers */ -{ - __IO uint32_t AFMR; - __IO uint32_t SFF_sa; - __IO uint32_t SFF_GRP_sa; - __IO uint32_t EFF_sa; - __IO uint32_t EFF_GRP_sa; - __IO uint32_t ENDofTable; - __I uint32_t LUTerrAd; - __I uint32_t LUTerr; -} CANAF_TypeDef; - -typedef struct /* Central Registers */ -{ - __I uint32_t CANTxSR; - __I uint32_t CANRxSR; - __I uint32_t CANMSR; -} CANCR_TypeDef; - -typedef struct /* Controller Registers */ -{ - __IO uint32_t MOD; - __O uint32_t CMR; - __IO uint32_t GSR; - __I uint32_t ICR; - __IO uint32_t IER; - __IO uint32_t BTR; - __IO uint32_t EWL; - __I uint32_t SR; - __IO uint32_t RFS; - __IO uint32_t RID; - __IO uint32_t RDA; - __IO uint32_t RDB; - __IO uint32_t TFI1; - __IO uint32_t TID1; - __IO uint32_t TDA1; - __IO uint32_t TDB1; - __IO uint32_t TFI2; - __IO uint32_t TID2; - __IO uint32_t TDA2; - __IO uint32_t TDB2; - __IO uint32_t TFI3; - __IO uint32_t TID3; - __IO uint32_t TDA3; - __IO uint32_t TDB3; -} CAN_TypeDef; - -/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ -typedef struct /* Common Registers */ -{ - __I uint32_t DMACIntStat; - __I uint32_t DMACIntTCStat; - __O uint32_t DMACIntTCClear; - __I uint32_t DMACIntErrStat; - __O uint32_t DMACIntErrClr; - __I uint32_t DMACRawIntTCStat; - __I uint32_t DMACRawIntErrStat; - __I uint32_t DMACEnbldChns; - __IO uint32_t DMACSoftBReq; - __IO uint32_t DMACSoftSReq; - __IO uint32_t DMACSoftLBReq; - __IO uint32_t DMACSoftLSReq; - __IO uint32_t DMACConfig; - __IO uint32_t DMACSync; -} GPDMA_TypeDef; - -typedef struct /* Channel Registers */ -{ - __IO uint32_t DMACCSrcAddr; - __IO uint32_t DMACCDestAddr; - __IO uint32_t DMACCLLI; - __IO uint32_t DMACCControl; - __IO uint32_t DMACCConfig; -} GPDMACH_TypeDef; - -/*------------- Universal Serial Bus (USB) -----------------------------------*/ -typedef struct -{ - __I uint32_t HcRevision; /* USB Host Registers */ - __IO uint32_t HcControl; - __IO uint32_t HcCommandStatus; - __IO uint32_t HcInterruptStatus; - __IO uint32_t HcInterruptEnable; - __IO uint32_t HcInterruptDisable; - __IO uint32_t HcHCCA; - __I uint32_t HcPeriodCurrentED; - __IO uint32_t HcControlHeadED; - __IO uint32_t HcControlCurrentED; - __IO uint32_t HcBulkHeadED; - __IO uint32_t HcBulkCurrentED; - __I uint32_t HcDoneHead; - __IO uint32_t HcFmInterval; - __I uint32_t HcFmRemaining; - __I uint32_t HcFmNumber; - __IO uint32_t HcPeriodicStart; - __IO uint32_t HcLSTreshold; - __IO uint32_t HcRhDescriptorA; - __IO uint32_t HcRhDescriptorB; - __IO uint32_t HcRhStatus; - __IO uint32_t HcRhPortStatus1; - __IO uint32_t HcRhPortStatus2; - uint32_t RESERVED0[40]; - __I uint32_t Module_ID; - - __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ - __IO uint32_t OTGIntEn; - __O uint32_t OTGIntSet; - __O uint32_t OTGIntClr; - __IO uint32_t OTGStCtrl; - __IO uint32_t OTGTmr; - uint32_t RESERVED1[58]; - - __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ - __IO uint32_t USBDevIntEn; - __O uint32_t USBDevIntClr; - __O uint32_t USBDevIntSet; - - __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ - __I uint32_t USBCmdData; - - __I uint32_t USBRxData; /* USB Device Transfer Registers */ - __O uint32_t USBTxData; - __I uint32_t USBRxPLen; - __O uint32_t USBTxPLen; - __IO uint32_t USBCtrl; - __O uint32_t USBDevIntPri; - - __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ - __IO uint32_t USBEpIntEn; - __O uint32_t USBEpIntClr; - __O uint32_t USBEpIntSet; - __O uint32_t USBEpIntPri; - - __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ - __O uint32_t USBEpInd; - __IO uint32_t USBMaxPSize; - - __I uint32_t USBDMARSt; /* USB Device DMA Registers */ - __O uint32_t USBDMARClr; - __O uint32_t USBDMARSet; - uint32_t RESERVED2[9]; - __IO uint32_t USBUDCAH; - __I uint32_t USBEpDMASt; - __O uint32_t USBEpDMAEn; - __O uint32_t USBEpDMADis; - __I uint32_t USBDMAIntSt; - __IO uint32_t USBDMAIntEn; - uint32_t RESERVED3[2]; - __I uint32_t USBEoTIntSt; - __O uint32_t USBEoTIntClr; - __O uint32_t USBEoTIntSet; - __I uint32_t USBNDDRIntSt; - __O uint32_t USBNDDRIntClr; - __O uint32_t USBNDDRIntSet; - __I uint32_t USBSysErrIntSt; - __O uint32_t USBSysErrIntClr; - __O uint32_t USBSysErrIntSet; - uint32_t RESERVED4[15]; - - __I uint32_t I2C_RX; /* USB OTG I2C Registers */ - __O uint32_t I2C_WO; - __I uint32_t I2C_STS; - __IO uint32_t I2C_CTL; - __IO uint32_t I2C_CLKHI; - __O uint32_t I2C_CLKLO; - uint32_t RESERVED5[823]; - - union { - __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ - __IO uint32_t OTGClkCtrl; - } ; - union { - __I uint32_t USBClkSt; - __I uint32_t OTGClkSt; - }; -} USB_TypeDef; - -/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ -typedef struct -{ - __IO uint32_t MAC1; /* MAC Registers */ - __IO uint32_t MAC2; - __IO uint32_t IPGT; - __IO uint32_t IPGR; - __IO uint32_t CLRT; - __IO uint32_t MAXF; - __IO uint32_t SUPP; - __IO uint32_t TEST; - __IO uint32_t MCFG; - __IO uint32_t MCMD; - __IO uint32_t MADR; - __O uint32_t MWTD; - __I uint32_t MRDD; - __I uint32_t MIND; - uint32_t RESERVED0[2]; - __IO uint32_t SA0; - __IO uint32_t SA1; - __IO uint32_t SA2; - uint32_t RESERVED1[45]; - __IO uint32_t Command; /* Control Registers */ - __I uint32_t Status; - __IO uint32_t RxDescriptor; - __IO uint32_t RxStatus; - __IO uint32_t RxDescriptorNumber; - __I uint32_t RxProduceIndex; - __IO uint32_t RxConsumeIndex; - __IO uint32_t TxDescriptor; - __IO uint32_t TxStatus; - __IO uint32_t TxDescriptorNumber; - __IO uint32_t TxProduceIndex; - __I uint32_t TxConsumeIndex; - uint32_t RESERVED2[10]; - __I uint32_t TSV0; - __I uint32_t TSV1; - __I uint32_t RSV; - uint32_t RESERVED3[3]; - __IO uint32_t FlowControlCounter; - __I uint32_t FlowControlStatus; - uint32_t RESERVED4[34]; - __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ - __IO uint32_t RxFilterWoLStatus; - __IO uint32_t RxFilterWoLClear; - uint32_t RESERVED5; - __IO uint32_t HashFilterL; - __IO uint32_t HashFilterH; - uint32_t RESERVED6[882]; - __I uint32_t IntStatus; /* Module Control Registers */ - __IO uint32_t IntEnable; - __O uint32_t IntClear; - __O uint32_t IntSet; - uint32_t RESERVED7; - __IO uint32_t PowerDown; - uint32_t RESERVED8; - __IO uint32_t Module_ID; -} EMAC_TypeDef; - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/* Base addresses */ -#define FLASH_BASE (0x00000000UL) -#define RAM_BASE (0x10000000UL) -#define GPIO_BASE (0x2009C000UL) -#define APB0_BASE (0x40000000UL) -#define APB1_BASE (0x40080000UL) -#define AHB_BASE (0x50000000UL) -#define CM3_BASE (0xE0000000UL) - -/* APB0 peripherals */ -#define WDT_BASE (APB0_BASE + 0x00000) -#define TIM0_BASE (APB0_BASE + 0x04000) -#define TIM1_BASE (APB0_BASE + 0x08000) -#define UART0_BASE (APB0_BASE + 0x0C000) -#define UART1_BASE (APB0_BASE + 0x10000) -#define PWM1_BASE (APB0_BASE + 0x18000) -#define I2C0_BASE (APB0_BASE + 0x1C000) -#define SPI_BASE (APB0_BASE + 0x20000) -#define RTC_BASE (APB0_BASE + 0x24000) -#define GPIOINT_BASE (APB0_BASE + 0x28080) -#define PINCON_BASE (APB0_BASE + 0x2C000) -#define SSP1_BASE (APB0_BASE + 0x30000) -#define ADC_BASE (APB0_BASE + 0x34000) -#define CANAF_RAM_BASE (APB0_BASE + 0x38000) -#define CANAF_BASE (APB0_BASE + 0x3C000) -#define CANCR_BASE (APB0_BASE + 0x40000) -#define CAN1_BASE (APB0_BASE + 0x44000) -#define CAN2_BASE (APB0_BASE + 0x48000) -#define I2C1_BASE (APB0_BASE + 0x5C000) - -/* APB1 peripherals */ -#define SSP0_BASE (APB1_BASE + 0x08000) -#define DAC_BASE (APB1_BASE + 0x0C000) -#define TIM2_BASE (APB1_BASE + 0x10000) -#define TIM3_BASE (APB1_BASE + 0x14000) -#define UART2_BASE (APB1_BASE + 0x18000) -#define UART3_BASE (APB1_BASE + 0x1C000) -#define I2C2_BASE (APB1_BASE + 0x20000) -#define I2S_BASE (APB1_BASE + 0x28000) -#define RIT_BASE (APB1_BASE + 0x30000) -#define MCPWM_BASE (APB1_BASE + 0x38000) -#define QEI_BASE (APB1_BASE + 0x3C000) -#define SC_BASE (APB1_BASE + 0x7C000) - -/* AHB peripherals */ -#define EMAC_BASE (AHB_BASE + 0x00000) -#define GPDMA_BASE (AHB_BASE + 0x04000) -#define GPDMACH0_BASE (AHB_BASE + 0x04100) -#define GPDMACH1_BASE (AHB_BASE + 0x04120) -#define GPDMACH2_BASE (AHB_BASE + 0x04140) -#define GPDMACH3_BASE (AHB_BASE + 0x04160) -#define GPDMACH4_BASE (AHB_BASE + 0x04180) -#define GPDMACH5_BASE (AHB_BASE + 0x041A0) -#define GPDMACH6_BASE (AHB_BASE + 0x041C0) -#define GPDMACH7_BASE (AHB_BASE + 0x041E0) -#define USB_BASE (AHB_BASE + 0x0C000) - -/* GPIOs */ -#define GPIO0_BASE (GPIO_BASE + 0x00000) -#define GPIO1_BASE (GPIO_BASE + 0x00020) -#define GPIO2_BASE (GPIO_BASE + 0x00040) -#define GPIO3_BASE (GPIO_BASE + 0x00060) -#define GPIO4_BASE (GPIO_BASE + 0x00080) - - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define SC (( SC_TypeDef *) SC_BASE) -#define GPIO0 (( GPIO_TypeDef *) GPIO0_BASE) -#define GPIO1 (( GPIO_TypeDef *) GPIO1_BASE) -#define GPIO2 (( GPIO_TypeDef *) GPIO2_BASE) -#define GPIO3 (( GPIO_TypeDef *) GPIO3_BASE) -#define GPIO4 (( GPIO_TypeDef *) GPIO4_BASE) -#define WDT (( WDT_TypeDef *) WDT_BASE) -#define TIM0 (( TIM_TypeDef *) TIM0_BASE) -#define TIM1 (( TIM_TypeDef *) TIM1_BASE) -#define TIM2 (( TIM_TypeDef *) TIM2_BASE) -#define TIM3 (( TIM_TypeDef *) TIM3_BASE) -#define RIT (( RIT_TypeDef *) RIT_BASE) -#define UART0 (( UART_TypeDef *) UART0_BASE) -#define UART1 (( UART1_TypeDef *) UART1_BASE) -#define UART2 (( UART_TypeDef *) UART2_BASE) -#define UART3 (( UART_TypeDef *) UART3_BASE) -#define PWM1 (( PWM_TypeDef *) PWM1_BASE) -#define I2C0 (( I2C_TypeDef *) I2C0_BASE) -#define I2C1 (( I2C_TypeDef *) I2C1_BASE) -#define I2C2 (( I2C_TypeDef *) I2C2_BASE) -#define I2S (( I2S_TypeDef *) I2S_BASE) -#define SPI (( SPI_TypeDef *) SPI_BASE) -#define RTC (( RTC_TypeDef *) RTC_BASE) -#define GPIOINT (( GPIOINT_TypeDef *) GPIOINT_BASE) -#define PINCON (( PINCON_TypeDef *) PINCON_BASE) -#define SSP0 (( SSP_TypeDef *) SSP0_BASE) -#define SSP1 (( SSP_TypeDef *) SSP1_BASE) -#define ADC (( ADC_TypeDef *) ADC_BASE) -#define DAC (( DAC_TypeDef *) DAC_BASE) -#define CANAF_RAM ((CANAF_RAM_TypeDef *) CANAF_RAM_BASE) -#define CANAF (( CANAF_TypeDef *) CANAF_BASE) -#define CANCR (( CANCR_TypeDef *) CANCR_BASE) -#define CAN1 (( CAN_TypeDef *) CAN1_BASE) -#define CAN2 (( CAN_TypeDef *) CAN2_BASE) -#define MCPWM (( MCPWM_TypeDef *) MCPWM_BASE) -#define QEI (( QEI_TypeDef *) QEI_BASE) -#define EMAC (( EMAC_TypeDef *) EMAC_BASE) -#define GPDMA (( GPDMA_TypeDef *) GPDMA_BASE) -#define GPDMACH0 (( GPDMACH_TypeDef *) GPDMACH0_BASE) -#define GPDMACH1 (( GPDMACH_TypeDef *) GPDMACH1_BASE) -#define GPDMACH2 (( GPDMACH_TypeDef *) GPDMACH2_BASE) -#define GPDMACH3 (( GPDMACH_TypeDef *) GPDMACH3_BASE) -#define GPDMACH4 (( GPDMACH_TypeDef *) GPDMACH4_BASE) -#define GPDMACH5 (( GPDMACH_TypeDef *) GPDMACH5_BASE) -#define GPDMACH6 (( GPDMACH_TypeDef *) GPDMACH6_BASE) -#define GPDMACH7 (( GPDMACH_TypeDef *) GPDMACH7_BASE) -#define USB (( USB_TypeDef *) USB_BASE) - -#endif // __LPC17xx_H__ - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c deleted file mode 100644 index 420c59194..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c +++ /dev/null @@ -1,437 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Minimal implementation of a USB serial port, using the CDC class. - This example application simply echoes everything it receives right back - to the host. - - Windows: - Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386 - and store it somewhere (C:\temp is a good place) along with the usbser.inf - file. Then plug in the LPC176x and direct windows to the usbser driver. - Windows then creates an extra COMx port that you can open in a terminal - program, like hyperterminal. [Note for FreeRTOS users - the required .inf - file is included in the project directory.] - - Linux: - The device should be recognised automatically by the cdc_acm driver, - which creates a /dev/ttyACMx device file that acts just like a regular - serial port. - -*/ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -#include -#include - -#include "usbapi.h" -#include "usbdebug.h" -#include "usbstruct.h" - -#include "LPC17xx.h" - -#define usbMAX_SEND_BLOCK ( 20 / portTICK_PERIOD_MS ) -#define usbBUFFER_LEN ( 20 ) - -#define INCREMENT_ECHO_BY 1 -#define BAUD_RATE 115200 - -#define INT_IN_EP 0x81 -#define BULK_OUT_EP 0x05 -#define BULK_IN_EP 0x82 - -#define MAX_PACKET_SIZE 64 - -#define LE_WORD(x) ((x)&0xFF),((x)>>8) - -// CDC definitions -#define CS_INTERFACE 0x24 -#define CS_ENDPOINT 0x25 - -#define SET_LINE_CODING 0x20 -#define GET_LINE_CODING 0x21 -#define SET_CONTROL_LINE_STATE 0x22 - -// data structure for GET_LINE_CODING / SET_LINE_CODING class requests -typedef struct { - unsigned long dwDTERate; - unsigned char bCharFormat; - unsigned char bParityType; - unsigned char bDataBits; -} TLineCoding; - -static TLineCoding LineCoding = {115200, 0, 0, 8}; -static unsigned char abBulkBuf[64]; -static unsigned char abClassReqData[8]; - -static QueueHandle_t xRxedChars = NULL, xCharsForTx = NULL; - -// forward declaration of interrupt handler -void USBIntHandler(void); - -static const unsigned char abDescriptors[] = { - -// device descriptor - 0x12, - DESC_DEVICE, - LE_WORD(0x0101), // bcdUSB - 0x02, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - MAX_PACKET_SIZE0, // bMaxPacketSize - LE_WORD(0xFFFF), // idVendor - LE_WORD(0x0005), // idProduct - LE_WORD(0x0100), // bcdDevice - 0x01, // iManufacturer - 0x02, // iProduct - 0x03, // iSerialNumber - 0x01, // bNumConfigurations - -// configuration descriptor - 0x09, - DESC_CONFIGURATION, - LE_WORD(67), // wTotalLength - 0x02, // bNumInterfaces - 0x01, // bConfigurationValue - 0x00, // iConfiguration - 0xC0, // bmAttributes - 0x32, // bMaxPower -// control class interface - 0x09, - DESC_INTERFACE, - 0x00, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x01, // bNumEndPoints - 0x02, // bInterfaceClass - 0x02, // bInterfaceSubClass - 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module - 0x00, // iInterface -// header functional descriptor - 0x05, - CS_INTERFACE, - 0x00, - LE_WORD(0x0110), -// call management functional descriptor - 0x05, - CS_INTERFACE, - 0x01, - 0x01, // bmCapabilities = device handles call management - 0x01, // bDataInterface -// ACM functional descriptor - 0x04, - CS_INTERFACE, - 0x02, - 0x02, // bmCapabilities -// union functional descriptor - 0x05, - CS_INTERFACE, - 0x06, - 0x00, // bMasterInterface - 0x01, // bSlaveInterface0 -// notification EP - 0x07, - DESC_ENDPOINT, - INT_IN_EP, // bEndpointAddress - 0x03, // bmAttributes = intr - LE_WORD(8), // wMaxPacketSize - 0x0A, // bInterval -// data class interface descriptor - 0x09, - DESC_INTERFACE, - 0x01, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x02, // bNumEndPoints - 0x0A, // bInterfaceClass = data - 0x00, // bInterfaceSubClass - 0x00, // bInterfaceProtocol - 0x00, // iInterface -// data EP OUT - 0x07, - DESC_ENDPOINT, - BULK_OUT_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval -// data EP in - 0x07, - DESC_ENDPOINT, - BULK_IN_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval - - // string descriptors - 0x04, - DESC_STRING, - LE_WORD(0x0409), - - 0x0E, - DESC_STRING, - 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0, - - 0x14, - DESC_STRING, - 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0, - - 0x12, - DESC_STRING, - 'D', 0, 'E', 0, 'A', 0, 'D', 0, 'C', 0, '0', 0, 'D', 0, 'E', 0, - -// terminating zero - 0 -}; - - -/** - Local function to handle incoming bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkOut(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - // get data from USB into intermediate buffer - iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf)); - for (i = 0; i < iLen; i++) { - // put into queue - xQueueSendFromISR( xRxedChars, &( abBulkBuf[ i ] ), &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle outgoing bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkIn(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - if (uxQueueMessagesWaitingFromISR( xCharsForTx ) == 0) { - // no more data, disable further NAK interrupts until next USB frame - USBHwNakIntEnable(0); - return; - } - - // get bytes from transmit FIFO into intermediate buffer - for (i = 0; i < MAX_PACKET_SIZE; i++) { - if( xQueueReceiveFromISR( xCharsForTx, ( &abBulkBuf[i] ), &lHigherPriorityTaskWoken ) != pdPASS ) - { - break; - } - } - iLen = i; - - // send over USB - if (iLen > 0) { - USBHwEPWrite(bEP, abBulkBuf, iLen); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle the USB-CDC class requests - - @param [in] pSetup - @param [out] piLen - @param [out] ppbData - */ -static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - switch (pSetup->bRequest) { - - // set line coding - case SET_LINE_CODING: -DBG("SET_LINE_CODING\n"); - memcpy((unsigned char *)&LineCoding, *ppbData, 7); - *piLen = 7; -DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n", - LineCoding.dwDTERate, - LineCoding.bCharFormat, - LineCoding.bParityType, - LineCoding.bDataBits); - break; - - // get line coding - case GET_LINE_CODING: -DBG("GET_LINE_CODING\n"); - *ppbData = (unsigned char *)&LineCoding; - *piLen = 7; - break; - - // set control line state - case SET_CONTROL_LINE_STATE: - // bit0 = DTR, bit = RTS -DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue); - break; - - default: - return FALSE; - } - return TRUE; -} - - -/** - Writes one character to VCOM port - - @param [in] c character to write - @returns character written, or EOF if character could not be written - */ -int VCOM_putchar(int c) -{ -char cc = ( char ) c; - - if( xQueueSend( xCharsForTx, &cc, usbMAX_SEND_BLOCK ) == pdPASS ) - { - return c; - } - else - { - return EOF; - } -} - - -/** - Reads one character from VCOM port - - @returns character read, or EOF if character could not be read - */ -int VCOM_getchar(void) -{ - unsigned char c; - - /* Block the task until a character is available. */ - xQueueReceive( xRxedChars, &c, portMAX_DELAY ); - return c; -} - - -/** - Interrupt handler - - Simply calls the USB ISR - */ -//void USBIntHandler(void) -void USB_IRQHandler(void) -{ - USBHwISR(); -} - - -static void USBFrameHandler(unsigned short wFrame) -{ - ( void ) wFrame; - - if( uxQueueMessagesWaitingFromISR( xCharsForTx ) > 0 ) - { - // data available, enable NAK interrupt on bulk in - USBHwNakIntEnable(INACK_BI); - } -} - -void vUSBTask( void *pvParameters ) -{ - int c; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - DBG("Initialising USB stack\n"); - - xRxedChars = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - xCharsForTx = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - - if( ( xRxedChars == NULL ) || ( xCharsForTx == NULL ) ) - { - /* Not enough heap available to create the buffer queues, can't do - anything so just delete ourselves. */ - vTaskDelete( NULL ); - } - - - // initialise stack - USBInit(); - - // register descriptors - USBRegisterDescriptors(abDescriptors); - - // register class request handler - USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); - - // register endpoint handlers - USBHwRegisterEPIntHandler(INT_IN_EP, NULL); - USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); - USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); - - // register frame handler - USBHwRegisterFrameHandler(USBFrameHandler); - - // enable bulk-in interrupts on NAKs - USBHwNakIntEnable(INACK_BI); - - DBG("Starting USB communication\n"); - - NVIC_SetPriority( USB_IRQn, configUSB_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( USB_IRQn ); - - // connect to bus - - DBG("Connecting to USB bus\n"); - USBHwConnect(TRUE); - - // echo any character received (do USB stuff in interrupt) - for( ;; ) - { - c = VCOM_getchar(); - if (c != EOF) - { - // Echo character back with INCREMENT_ECHO_BY offset, so for example if - // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back. - VCOM_putchar(c + INCREMENT_ECHO_BY ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h deleted file mode 100644 index 89d36850a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************** - * type.h: Type definition Header file for NXP LPC17xx Family - * Microprocessors - * - * Copyright(C) 2008, NXP Semiconductor - * All rights reserved. - * - * History - * 2008.08.21 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned int BOOL; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -/* Pointer to Function returning Void (any number of parameters) */ -typedef void (*PFV)(); - -#endif /* __TYPE_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h deleted file mode 100644 index 050f0d95b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - @file -*/ - -#include "usbstruct.h" // for TSetupPacket - -/************************************************************************* - USB configuration -**************************************************************************/ - -#define MAX_PACKET_SIZE0 64 /**< maximum packet size for EP 0 */ - -/************************************************************************* - USB hardware interface -**************************************************************************/ - -// endpoint status sent through callback -#define EP_STATUS_DATA (1<<0) /**< EP has data */ -#define EP_STATUS_STALLED (1<<1) /**< EP is stalled */ -#define EP_STATUS_SETUP (1<<2) /**< EP received setup packet */ -#define EP_STATUS_ERROR (1<<3) /**< EP data was overwritten by setup packet */ -#define EP_STATUS_NACKED (1<<4) /**< EP sent NAK */ - -// device status sent through callback -#define DEV_STATUS_CONNECT (1<<0) /**< device just got connected */ -#define DEV_STATUS_SUSPEND (1<<2) /**< device entered suspend state */ -#define DEV_STATUS_RESET (1<<4) /**< device just got reset */ - -// interrupt bits for NACK events in USBHwNakIntEnable -// (these bits conveniently coincide with the LPC176x USB controller bit) -#define INACK_CI (1<<1) /**< interrupt on NACK for control in */ -#define INACK_CO (1<<2) /**< interrupt on NACK for control out */ -#define INACK_II (1<<3) /**< interrupt on NACK for interrupt in */ -#define INACK_IO (1<<4) /**< interrupt on NACK for interrupt out */ -#define INACK_BI (1<<5) /**< interrupt on NACK for bulk in */ -#define INACK_BO (1<<6) /**< interrupt on NACK for bulk out */ - -BOOL USBHwInit (void); -void USBHwISR (void); - -void USBHwNakIntEnable (unsigned char bIntBits); - -void USBHwConnect (BOOL fConnect); - -void USBHwSetAddress (unsigned char bAddr); -void USBHwConfigDevice (BOOL fConfigured); - -// endpoint operations -void USBHwEPConfig (unsigned char bEP, unsigned short wMaxPacketSize); -int USBHwEPRead (unsigned char bEP, unsigned char *pbBuf, int iMaxLen); -int USBHwEPWrite (unsigned char bEP, unsigned char *pbBuf, int iLen); -void USBHwEPStall (unsigned char bEP, BOOL fStall); -unsigned char USBHwEPGetStatus (unsigned char bEP); - -/** Endpoint interrupt handler callback */ -typedef void (TFnEPIntHandler) (unsigned char bEP, unsigned char bEPStatus); -void USBHwRegisterEPIntHandler (unsigned char bEP, TFnEPIntHandler *pfnHandler); - -/** Device status handler callback */ -typedef void (TFnDevIntHandler) (unsigned char bDevStatus); -void USBHwRegisterDevIntHandler (TFnDevIntHandler *pfnHandler); - -/** Frame event handler callback */ -typedef void (TFnFrameHandler)(unsigned short wFrame); -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler); - - -/************************************************************************* - USB application interface -**************************************************************************/ - -// initialise the complete stack, including HW -BOOL USBInit(void); - -/** Request handler callback (standard, vendor, class) */ -typedef BOOL (TFnHandleRequest)(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore); -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler); - -/** Descriptor handler callback */ -typedef BOOL (TFnGetDescriptor)(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); - -/** Default standard request handler */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); - -/** Default EP0 handler */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat); - -/** Descriptor handling */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors); -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c deleted file mode 100644 index d78e553ec..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Control transfer handler. - - This module handles control transfers and is normally installed on the - endpoint 0 callback. - - Control transfers can be of the following type: - 0 Standard; - 1 Class; - 2 Vendor; - 3 Reserved. - - A callback can be installed for each of these control transfers using - USBRegisterRequestHandler. - When an OUT request arrives, data is collected in the data store provided - with the USBRegisterRequestHandler call. When the transfer is done, the - callback is called. - When an IN request arrives, the callback is called immediately to either - put the control transfer data in the data store, or to get a pointer to - control transfer data. The data is then packetised and sent to the host. -*/ - -#include "usbdebug.h" - -#include "usbstruct.h" -#include "usbapi.h" - - - -#define MAX_CONTROL_SIZE 128 /**< maximum total size of control transfer data */ -#define MAX_REQ_HANDLERS 4 /**< standard, class, vendor, reserved */ - -static TSetupPacket Setup; /**< setup packet */ - -static unsigned char *pbData; /**< pointer to data buffer */ -static int iResidue; /**< remaining bytes in buffer */ -static int iLen; /**< total length of control transfer */ - -/** Array of installed request handler callbacks */ -static TFnHandleRequest *apfnReqHandlers[4] = {NULL, NULL, NULL, NULL}; -/** Array of installed request data pointers */ -static unsigned char *apbDataStore[4] = {NULL, NULL, NULL, NULL}; - -/** - Local function to handle a request by calling one of the installed - request handlers. - - In case of data going from host to device, the data is at *ppbData. - In case of data going from device to host, the handler can either - choose to write its data at *ppbData or update the data pointer. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handles successfully - */ -static BOOL _HandleRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - TFnHandleRequest *pfnHandler; - int iType; - - iType = REQTYPE_GET_TYPE(pSetup->bmRequestType); - pfnHandler = apfnReqHandlers[iType]; - if (pfnHandler == NULL) { - DBG("No handler for reqtype %d\n", iType); - return FALSE; - } - - return pfnHandler(pSetup, piLen, ppbData); -} - - -/** - Local function to stall the control endpoint - - @param [in] bEPStat Endpoint status - */ -static void StallControlPipe(unsigned char bEPStat) -{ - unsigned char *pb; - int i; - - USBHwEPStall(0x80, TRUE); - -// dump setup packet - DBG("STALL on ["); - pb = (unsigned char *)&Setup; - for (i = 0; i < 8; i++) { - DBG(" %02x", *pb++); - } - DBG("] stat=%x\n", bEPStat); -} - - -/** - Sends next chunk of data (possibly 0 bytes) to host - */ -static void DataIn(void) -{ - int iChunk; - - if( MAX_PACKET_SIZE0 < iResidue ) - { - iChunk = MAX_PACKET_SIZE0; - } - else - { - iChunk = iResidue; - } - - USBHwEPWrite(0x80, pbData, iChunk); - pbData += iChunk; - iResidue -= iChunk; -} - - -/** - * Handles IN/OUT transfers on EP0 - * - * @param [in] bEP Endpoint address - * @param [in] bEPStat Endpoint status - */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat) -{ - int iChunk, iType; - - if (bEP == 0x00) { - // OUT transfer - if (bEPStat & EP_STATUS_SETUP) { - // setup packet, reset request message state machine - USBHwEPRead(0x00, (unsigned char *)&Setup, sizeof(Setup)); - DBG("S%x", Setup.bRequest); - - // defaults for data pointer and residue - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - iResidue = Setup.wLength; - iLen = Setup.wLength; - - if ((Setup.wLength == 0) || - (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { - // ask installed handler to process request - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest1 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send smallest of requested and offered length - if( iLen < Setup.wLength ) - { - iResidue = iLen; - } - else - { - iResidue = Setup.wLength; - } - - // send first part (possibly a zero-length status message) - DataIn(); - } - } - else { - if (iResidue > 0) { - // store data - iChunk = USBHwEPRead(0x00, pbData, iResidue); - if (iChunk < 0) { - StallControlPipe(bEPStat); - return; - } - pbData += iChunk; - iResidue -= iChunk; - if (iResidue == 0) { - // received all, send data to handler - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest2 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send status to host - DataIn(); - } - } - else { - // absorb zero-length status message - iChunk = USBHwEPRead(0x00, NULL, 0); - DBG(iChunk > 0 ? "?" : ""); - } - } - } - else if (bEP == 0x80) { - // IN transfer - // send more data if available (possibly a 0-length packet) - DataIn(); - } - else { - ASSERT(FALSE); - } -} - - -/** - Registers a callback for handling requests - - @param [in] iType Type of request, e.g. REQTYPE_TYPE_STANDARD - @param [in] *pfnHandler Callback function pointer - @param [in] *pbDataStore Data storage area for this type of request - */ -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore) -{ - ASSERT(iType >= 0); - ASSERT(iType < 4); - apfnReqHandlers[iType] = pfnHandler; - apbDataStore[iType] = pbDataStore; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h deleted file mode 100644 index 490f0a7f7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// CodeRed - comment out this printf, as will use real one from stdio.h -// to implement output via semihosting - -//int printf(const char *format, ...); -# include - -#ifdef _DEBUG -#define DBG printf -#define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} -#else -#define DBG(...) -#define ASSERT(x) -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c deleted file mode 100644 index 3105685f5..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c +++ /dev/null @@ -1,521 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB hardware layer - */ - - -#include "usbdebug.h" -#include "usbhw_lpc.h" -#include "usbapi.h" - -/** Installed device interrupt handler */ -static TFnDevIntHandler *_pfnDevIntHandler = NULL; -/** Installed endpoint interrupt handlers */ -static TFnEPIntHandler *_apfnEPIntHandlers[16]; -/** Installed frame interrupt handlers */ -static TFnFrameHandler *_pfnFrameHandler = NULL; - -/** convert from endpoint address to endpoint index */ -#define EP2IDX(bEP) ((((bEP)&0xF)<<1)|(((bEP)&0x80)>>7)) -/** convert from endpoint index to endpoint address */ -#define IDX2EP(idx) ((((idx)<<7)&0x80)|(((idx)>>1)&0xF)) - - - -/** - Local function to wait for a device interrupt (and clear it) - - @param [in] dwIntr Bitmask of interrupts to wait for - */ -static void Wait4DevInt(unsigned long dwIntr) -{ - // wait for specific interrupt - while ((USB->USBDevIntSt & dwIntr) != dwIntr); - // clear the interrupt bits - USB->USBDevIntClr = dwIntr; -} - - -/** - Local function to send a command to the USB protocol engine - - @param [in] bCmd Command to send - */ -static void USBHwCmd(unsigned char bCmd) -{ - // clear CDFULL/CCEMTY - USB->USBDevIntClr = CDFULL | CCEMTY; - // write command code - USB->USBCmdCode = 0x00000500 | (bCmd << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command + data to the USB protocol engine - - @param [in] bCmd Command to send - @param [in] bData Data to send - */ -static void USBHwCmdWrite(unsigned char bCmd, unsigned short bData) -{ - // write command code - USBHwCmd(bCmd); - - // write command data - USB->USBCmdCode = 0x00000100 | (bData << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command to the USB protocol engine and read data - - @param [in] bCmd Command to send - - @return the data - */ -static unsigned char USBHwCmdRead(unsigned char bCmd) -{ - // write command code - USBHwCmd(bCmd); - - // get data - USB->USBCmdCode = 0x00000200 | (bCmd << 16); - Wait4DevInt(CDFULL); - return USB->USBCmdData; -} - - -/** - 'Realizes' an endpoint, meaning that buffer space is reserved for - it. An endpoint needs to be realised before it can be used. - - From experiments, it appears that a USB reset causes USBReEP to - re-initialise to 3 (= just the control endpoints). - However, a USB bus reset does not disturb the USBMaxPSize settings. - - @param [in] idx Endpoint index - @param [in] wMaxPSize Maximum packet size for this endpoint - */ -static void USBHwEPRealize(int idx, unsigned short wMaxPSize) -{ - USB->USBReEP |= (1 << idx); - USB->USBEpInd = idx; - USB->USBMaxPSize = wMaxPSize; - Wait4DevInt(EP_RLZED); -} - - -/** - Enables or disables an endpoint - - @param [in] idx Endpoint index - @param [in] fEnable TRUE to enable, FALSE to disable - */ -static void USBHwEPEnable(int idx, BOOL fEnable) -{ - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); -} - - -/** - Configures an endpoint and enables it - - @param [in] bEP Endpoint number - @param [in] wMaxPacketSize Maximum packet size for this EP - */ -void USBHwEPConfig(unsigned char bEP, unsigned short wMaxPacketSize) -{ - int idx; - - idx = EP2IDX(bEP); - - // realise EP - USBHwEPRealize(idx, wMaxPacketSize); - - // enable EP - USBHwEPEnable(idx, TRUE); -} - - -/** - Registers an endpoint event callback - - @param [in] bEP Endpoint number - @param [in] pfnHandler Callback function - */ -void USBHwRegisterEPIntHandler(unsigned char bEP, TFnEPIntHandler *pfnHandler) -{ - int idx; - - idx = EP2IDX(bEP); - - ASSERT(idx<32); - - /* add handler to list of EP handlers */ - _apfnEPIntHandlers[idx / 2] = pfnHandler; - - /* enable EP interrupt */ - USB->USBEpIntEn |= (1 << idx); - USB->USBDevIntEn |= EP_SLOW; - - DBG("Registered handler for EP 0x%x\n", bEP); -} - - -/** - Registers an device status callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterDevIntHandler(TFnDevIntHandler *pfnHandler) -{ - _pfnDevIntHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= DEV_STAT; - - DBG("Registered handler for device status\n"); -} - - -/** - Registers the frame callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler) -{ - _pfnFrameHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= FRAME; - - DBG("Registered handler for frame\n"); -} - - -/** - Sets the USB address. - - @param [in] bAddr Device address to set - */ -void USBHwSetAddress(unsigned char bAddr) -{ - USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); -} - - -/** - Connects or disconnects from the USB bus - - @param [in] fConnect If TRUE, connect, otherwise disconnect - */ -void USBHwConnect(BOOL fConnect) -{ - USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); -} - - -/** - Enables interrupt on NAK condition - - For IN endpoints a NAK is generated when the host wants to read data - from the device, but none is available in the endpoint buffer. - For OUT endpoints a NAK is generated when the host wants to write data - to the device, but the endpoint buffer is still full. - - The endpoint interrupt handlers can distinguish regular (ACK) interrupts - from NAK interrupt by checking the bits in their bEPStatus argument. - - @param [in] bIntBits Bitmap indicating which NAK interrupts to enable - */ -void USBHwNakIntEnable(unsigned char bIntBits) -{ - USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); -} - - -/** - Gets the status from a specific endpoint. - - @param [in] bEP Endpoint number - @return Endpoint status byte (containing EP_STATUS_xxx bits) - */ -unsigned char USBHwEPGetStatus(unsigned char bEP) -{ - int idx = EP2IDX(bEP); - - return USBHwCmdRead(CMD_EP_SELECT | idx); -} - - -/** - Sets the stalled property of an endpoint - - @param [in] bEP Endpoint number - @param [in] fStall TRUE to stall, FALSE to unstall - */ -void USBHwEPStall(unsigned char bEP, BOOL fStall) -{ - int idx = EP2IDX(bEP); - - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); -} - - -/** - Writes data to an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iLen Number of bytes to write - - @return TRUE if the data was successfully written or <0 in case of error. -*/ -int USBHwEPWrite(unsigned char bEP, unsigned char *pbBuf, int iLen) -{ - int idx; - - idx = EP2IDX(bEP); - - // set write enable for specific endpoint - USB->USBCtrl = WR_EN | ((bEP & 0xF) << 2); - - // set packet length - USB->USBTxPLen = iLen; - - // write data - while (USB->USBCtrl & WR_EN) { - USB->USBTxData = (pbBuf[3] << 24) | (pbBuf[2] << 16) | (pbBuf[1] << 8) | pbBuf[0]; - pbBuf += 4; - } - - // select endpoint and validate buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_VALIDATE_BUFFER); - - return iLen; -} - - -/** - Reads data from an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iMaxLen Maximum number of bytes to read - - @return the number of bytes available in the EP (possibly more than iMaxLen), - or <0 in case of error. - */ -int USBHwEPRead(unsigned char bEP, unsigned char *pbBuf, int iMaxLen) -{ - unsigned int i, idx; - unsigned long dwData, dwLen; - - idx = EP2IDX(bEP); - - // set read enable bit for specific endpoint - USB->USBCtrl = RD_EN | ((bEP & 0xF) << 2); - - // wait for PKT_RDY - do { - dwLen = USB->USBRxPLen; - } while ((dwLen & PKT_RDY) == 0); - - // packet valid? - if ((dwLen & DV) == 0) { - return -1; - } - - // get length - dwLen &= PKT_LNGTH_MASK; - - // get data - dwData = 0; - for (i = 0; i < dwLen; i++) { - if ((i % 4) == 0) { - dwData = USB->USBRxData; - } - if ((pbBuf != NULL) && ((int)i < iMaxLen)) { - pbBuf[i] = dwData & 0xFF; - } - dwData >>= 8; - } - - // make sure RD_EN is clear - USB->USBCtrl = 0; - - // select endpoint and clear buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_CLEAR_BUFFER); - - return dwLen; -} - - -/** - Sets the 'configured' state. - - All registered endpoints are 'realised' and enabled, and the - 'configured' bit is set in the device status register. - - @param [in] fConfigured If TRUE, configure device, else unconfigure - */ -void USBHwConfigDevice(BOOL fConfigured) -{ - // set configured bit - USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); -} - - -/** - USB interrupt handler - - @todo Get all 11 bits of frame number instead of just 8 - - Endpoint interrupts are mapped to the slow interrupt - */ -void USBHwISR(void) -{ - unsigned long dwStatus; - unsigned long dwIntBit; - unsigned char bEPStat, bDevStat, bStat; - int i; - unsigned short wFrame; - - // handle device interrupts - dwStatus = USB->USBDevIntSt; - - // frame interrupt - if (dwStatus & FRAME) { - // clear int - USB->USBDevIntClr = FRAME; - // call handler - if (_pfnFrameHandler != NULL) { - wFrame = USBHwCmdRead(CMD_DEV_READ_CUR_FRAME_NR); - _pfnFrameHandler(wFrame); - } - } - - // device status interrupt - if (dwStatus & DEV_STAT) { - /* Clear DEV_STAT interrupt before reading DEV_STAT register. - This prevents corrupted device status reads, see - LPC2148 User manual revision 2, 25 july 2006. - */ - USB->USBDevIntClr = DEV_STAT; - bDevStat = USBHwCmdRead(CMD_DEV_STATUS); - if (bDevStat & (CON_CH | SUS_CH | RST)) { - // convert device status into something HW independent - bStat = ((bDevStat & CON) ? DEV_STATUS_CONNECT : 0) | - ((bDevStat & SUS) ? DEV_STATUS_SUSPEND : 0) | - ((bDevStat & RST) ? DEV_STATUS_RESET : 0); - // call handler - if (_pfnDevIntHandler != NULL) { - _pfnDevIntHandler(bStat); - } - } - } - - // endpoint interrupt - if (dwStatus & EP_SLOW) { - // clear EP_SLOW - USB->USBDevIntClr = EP_SLOW; - // check all endpoints - for (i = 0; i < 32; i++) { - dwIntBit = (1 << i); - if (USB->USBEpIntSt & dwIntBit) { - // clear int (and retrieve status) - USB->USBEpIntClr = dwIntBit; - Wait4DevInt(CDFULL); - bEPStat = USB->USBCmdData; - // convert EP pipe stat into something HW independent - bStat = ((bEPStat & EPSTAT_FE) ? EP_STATUS_DATA : 0) | - ((bEPStat & EPSTAT_ST) ? EP_STATUS_STALLED : 0) | - ((bEPStat & EPSTAT_STP) ? EP_STATUS_SETUP : 0) | - ((bEPStat & EPSTAT_EPN) ? EP_STATUS_NACKED : 0) | - ((bEPStat & EPSTAT_PO) ? EP_STATUS_ERROR : 0); - // call handler - if (_apfnEPIntHandlers[i / 2] != NULL) { - _apfnEPIntHandlers[i / 2](IDX2EP(i), bStat); - } - } - } - } -} - - - -/** - Initialises the USB hardware - - - @return TRUE if the hardware was successfully initialised - */ -BOOL USBHwInit(void) -{ - // P2.9 -> USB_CONNECT - PINCON->PINSEL4 &= ~0x000C0000; - PINCON->PINSEL4 |= 0x00040000; - - // P1.18 -> USB_UP_LED - // P1.30 -> VBUS - PINCON->PINSEL3 &= ~0x30000030; - PINCON->PINSEL3 |= 0x20000010; - - // P0.29 -> USB_D+ - // P0.30 -> USB_D- - PINCON->PINSEL1 &= ~0x3C000000; - PINCON->PINSEL1 |= 0x14000000; - - // enable PUSB - SC->PCONP |= (1UL << 31UL); - - USB->OTGClkCtrl = 0x12; /* Dev clock, AHB clock enable */ - while ((USB->OTGClkSt & 0x12) != 0x12); - - // disable/clear all interrupts for now - USB->USBDevIntEn = 0; - USB->USBDevIntClr = 0xFFFFFFFF; - USB->USBDevIntPri = 0; - - USB->USBEpIntEn = 0; - USB->USBEpIntClr = 0xFFFFFFFF; - USB->USBEpIntPri = 0; - - // by default, only ACKs generate interrupts - USBHwNakIntEnable(0); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h deleted file mode 100644 index 8578177e5..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Hardware definitions for the LPC176x USB controller - - These are private to the usbhw module -*/ - -// CodeRed - pull in defines from NXP header file -//#include "NXP\LPC17xx\LPC17xx.h" -#include "LPC17xx.h" - - -// CodeRed - these registers have been renamed on LPC176x -#define USBReEP USBReEp -#define OTG_CLK_CTRL USBClkCtrl -#define OTG_CLK_STAT USBClkSt - -/* USBIntSt bits */ -#define USB_INT_REQ_LP (1<<0) -#define USB_INT_REQ_HP (1<<1) -#define USB_INT_REQ_DMA (1<<2) -#define USB_need_clock (1<<8) -#define EN_USB_BITS (1<<31) - -/* USBDevInt... bits */ -#define FRAME (1<<0) -#define EP_FAST (1<<1) -#define EP_SLOW (1<<2) -#define DEV_STAT (1<<3) -#define CCEMTY (1<<4) -#define CDFULL (1<<5) -#define RxENDPKT (1<<6) -#define TxENDPKT (1<<7) -#define EP_RLZED (1<<8) -#define ERR_INT (1<<9) - -/* USBRxPLen bits */ -#define PKT_LNGTH (1<<0) -#define PKT_LNGTH_MASK 0x3FF -#define DV (1<<10) -#define PKT_RDY (1<<11) - -/* USBCtrl bits */ -#define RD_EN (1<<0) -#define WR_EN (1<<1) -#define LOG_ENDPOINT (1<<2) - -/* protocol engine command codes */ - /* device commands */ -#define CMD_DEV_SET_ADDRESS 0xD0 -#define CMD_DEV_CONFIG 0xD8 -#define CMD_DEV_SET_MODE 0xF3 -#define CMD_DEV_READ_CUR_FRAME_NR 0xF5 -#define CMD_DEV_READ_TEST_REG 0xFD -#define CMD_DEV_STATUS 0xFE /* read/write */ -#define CMD_DEV_GET_ERROR_CODE 0xFF -#define CMD_DEV_READ_ERROR_STATUS 0xFB - /* endpoint commands */ -#define CMD_EP_SELECT 0x00 -#define CMD_EP_SELECT_CLEAR 0x40 -#define CMD_EP_SET_STATUS 0x40 -#define CMD_EP_CLEAR_BUFFER 0xF2 -#define CMD_EP_VALIDATE_BUFFER 0xFA - -/* set address command */ -#define DEV_ADDR (1<<0) -#define DEV_EN (1<<7) - -/* configure device command */ -#define CONF_DEVICE (1<<0) - -/* set mode command */ -#define AP_CLK (1<<0) -#define INAK_CI (1<<1) -#define INAK_CO (1<<2) -#define INAK_II (1<<3) -#define INAK_IO (1<<4) -#define INAK_BI (1<<5) -#define INAK_BO (1<<6) - -/* set get device status command */ -#define CON (1<<0) -#define CON_CH (1<<1) -#define SUS (1<<2) -#define SUS_CH (1<<3) -#define RST (1<<4) - -/* get error code command */ -// ... - -/* Select Endpoint command read bits */ -#define EPSTAT_FE (1<<0) -#define EPSTAT_ST (1<<1) -#define EPSTAT_STP (1<<2) -#define EPSTAT_PO (1<<3) -#define EPSTAT_EPN (1<<4) -#define EPSTAT_B1FULL (1<<5) -#define EPSTAT_B2FULL (1<<6) - -/* CMD_EP_SET_STATUS command */ -#define EP_ST (1<<0) -#define EP_DA (1<<5) -#define EP_RF_MO (1<<6) -#define EP_CND_ST (1<<7) - -/* read error status command */ -#define PID_ERR (1<<0) -#define UEPKT (1<<1) -#define DCRC (1<<2) -#define TIMEOUT (1<<3) -#define EOP (1<<4) -#define B_OVRN (1<<5) -#define BTSTF (1<<6) -#define TGL_ERR (1<<7) - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c deleted file mode 100644 index f1784c20b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB stack initialisation - */ - - -#include "usbdebug.h" -#include "usbapi.h" - - -/** data storage area for standard requests */ -static unsigned char abStdReqData[8]; - - -/** - USB reset handler - - @param [in] bDevStatus Device status - */ -static void HandleUsbReset(unsigned char bDevStatus) -{ - if (bDevStatus & DEV_STATUS_RESET) { - DBG("\n!"); - } -} - - -/** - Initialises the USB hardware and sets up the USB stack by - installing default callbacks. - - @return TRUE if initialisation was successful - */ -BOOL USBInit(void) -{ - // init hardware - USBHwInit(); - - // register bus reset handler - USBHwRegisterDevIntHandler(HandleUsbReset); - - // register control transfer handler on EP0 - USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); - USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); - - // setup control endpoints - USBHwEPConfig(0x00, MAX_PACKET_SIZE0); - USBHwEPConfig(0x80, MAX_PACKET_SIZE0); - - // register standard request handler - USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c deleted file mode 100644 index 05e58b417..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c +++ /dev/null @@ -1,430 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Standard request handler. - - This modules handles the 'chapter 9' processing, specifically the - standard device requests in table 9-3 from the universal serial bus - specification revision 2.0 - - Specific types of devices may specify additional requests (for example - HID devices add a GET_DESCRIPTOR request for interfaces), but they - will not be part of this module. - - @todo some requests have to return a request error if device not configured: - @todo GET_INTERFACE, GET_STATUS, SET_INTERFACE, SYNCH_FRAME - @todo this applies to the following if endpoint != 0: - @todo SET_FEATURE, GET_FEATURE -*/ - -#include "usbdebug.h" -#include "usbstruct.h" -#include "usbapi.h" - -#define MAX_DESC_HANDLERS 4 /**< device, interface, endpoint, other */ - - -/* general descriptor field offsets */ -#define DESC_bLength 0 /**< length offset */ -#define DESC_bDescriptorType 1 /**< descriptor type offset */ - -/* config descriptor field offsets */ -#define CONF_DESC_wTotalLength 2 /**< total length offset */ -#define CONF_DESC_bConfigurationValue 5 /**< configuration value offset */ -#define CONF_DESC_bmAttributes 7 /**< configuration characteristics */ - -/* interface descriptor field offsets */ -#define INTF_DESC_bAlternateSetting 3 /**< alternate setting offset */ - -/* endpoint descriptor field offsets */ -#define ENDP_DESC_bEndpointAddress 2 /**< endpoint address offset */ -#define ENDP_DESC_wMaxPacketSize 4 /**< maximum packet size offset */ - - -/** Currently selected configuration */ -static unsigned char bConfiguration = 0; -/** Installed custom request handler */ -static TFnHandleRequest *pfnHandleCustomReq = NULL; -/** Pointer to registered descriptors */ -static const unsigned char *pabDescrip = NULL; - - -/** - Registers a pointer to a descriptor block containing all descriptors - for the device. - - @param [in] pabDescriptors The descriptor byte array - */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors) -{ - pabDescrip = pabDescriptors; -} - - -/** - Parses the list of installed USB descriptors and attempts to find - the specified USB descriptor. - - @param [in] wTypeIndex Type and index of the descriptor - @param [in] wLangID Language ID of the descriptor (currently unused) - @param [out] *piLen Descriptor length - @param [out] *ppbData Descriptor data - - @return TRUE if the descriptor was found, FALSE otherwise - */ -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData) -{ - unsigned char bType, bIndex; - unsigned char *pab; - int iCurIndex; - - ASSERT(pabDescrip != NULL); - - bType = GET_DESC_TYPE(wTypeIndex); - bIndex = GET_DESC_INDEX(wTypeIndex); - - pab = (unsigned char *)pabDescrip; - iCurIndex = 0; - - while (pab[DESC_bLength] != 0) { - if (pab[DESC_bDescriptorType] == bType) { - if (iCurIndex == bIndex) { - // set data pointer - *ppbData = pab; - // get length from structure - if (bType == DESC_CONFIGURATION) { - // configuration descriptor is an exception, length is at offset 2 and 3 - *piLen = (pab[CONF_DESC_wTotalLength]) | - (pab[CONF_DESC_wTotalLength + 1] << 8); - } - else { - // normally length is at offset 0 - *piLen = pab[DESC_bLength]; - } - return TRUE; - } - iCurIndex++; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - // nothing found - DBG("Desc %x not found!\n", wTypeIndex); - return FALSE; -} - - -/** - Configures the device according to the specified configuration index and - alternate setting by parsing the installed USB descriptor list. - A configuration index of 0 unconfigures the device. - - @param [in] bConfigIndex Configuration index - @param [in] bAltSetting Alternate setting number - - @todo function always returns TRUE, add stricter checking? - - @return TRUE if successfully configured, FALSE otherwise - */ -static BOOL USBSetConfiguration(unsigned char bConfigIndex, unsigned char bAltSetting) -{ - unsigned char *pab; - unsigned char bCurConfig, bCurAltSetting; - unsigned char bEP; - unsigned short wMaxPktSize; - - ASSERT(pabDescrip != NULL); - - if (bConfigIndex == 0) { - // unconfigure device - USBHwConfigDevice(FALSE); - } - else { - // configure endpoints for this configuration/altsetting - pab = (unsigned char *)pabDescrip; - bCurConfig = 0xFF; - bCurAltSetting = 0xFF; - - while (pab[DESC_bLength] != 0) { - - switch (pab[DESC_bDescriptorType]) { - - case DESC_CONFIGURATION: - // remember current configuration index - bCurConfig = pab[CONF_DESC_bConfigurationValue]; - break; - - case DESC_INTERFACE: - // remember current alternate setting - bCurAltSetting = pab[INTF_DESC_bAlternateSetting]; - break; - - case DESC_ENDPOINT: - if ((bCurConfig == bConfigIndex) && - (bCurAltSetting == bAltSetting)) { - // endpoint found for desired config and alternate setting - bEP = pab[ENDP_DESC_bEndpointAddress]; - wMaxPktSize = (pab[ENDP_DESC_wMaxPacketSize]) | - (pab[ENDP_DESC_wMaxPacketSize + 1] << 8); - // configure endpoint - USBHwEPConfig(bEP, wMaxPktSize); - } - break; - - default: - break; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - - // configure device - USBHwConfigDevice(TRUE); - } - - return TRUE; -} - - -/** - Local function to handle a standard device request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdDeviceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // bit 0: self-powered - // bit 1: remote wakeup = not supported - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_SET_ADDRESS: - USBHwSetAddress(pSetup->wValue); - break; - - case REQ_GET_DESCRIPTOR: - DBG("D%x", pSetup->wValue); - return USBGetDescriptor(pSetup->wValue, pSetup->wIndex, piLen, ppbData); - - case REQ_GET_CONFIGURATION: - // indicate if we are configured - pbData[0] = bConfiguration; - *piLen = 1; - break; - - case REQ_SET_CONFIGURATION: - if (!USBSetConfiguration(pSetup->wValue & 0xFF, 0)) { - DBG("USBSetConfiguration failed!\n"); - return FALSE; - } - // configuration successful, update current configuration - bConfiguration = pSetup->wValue & 0xFF; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_REMOTE_WAKEUP) { - // put DEVICE_REMOTE_WAKEUP code here - } - if (pSetup->wValue == FEA_TEST_MODE) { - // put TEST_MODE code here - } - return FALSE; - - case REQ_SET_DESCRIPTOR: - DBG("Device req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal device req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard interface request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdInterfaceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // no bits specified - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - // not defined for interface - return FALSE; - - case REQ_GET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface, return n-1 (= 0) - pbData[0] = 0; - *piLen = 1; - break; - - case REQ_SET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface (= 0) - if (pSetup->wValue != 0) { - return FALSE; - } - *piLen = 0; - break; - - default: - DBG("Illegal interface req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard endpoint request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdEndPointReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - case REQ_GET_STATUS: - // bit 0 = endpointed halted or not - pbData[0] = (USBHwEPGetStatus(pSetup->wIndex) & EP_STATUS_STALLED) ? 1 : 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // clear HALT by unstalling - USBHwEPStall(pSetup->wIndex, FALSE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // set HALT by stalling - USBHwEPStall(pSetup->wIndex, TRUE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SYNCH_FRAME: - DBG("EP req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal EP req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Default handler for standard ('chapter 9') requests - - If a custom request handler was installed, this handler is called first. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - // try the custom request handler first - if ((pfnHandleCustomReq != NULL) && pfnHandleCustomReq(pSetup, piLen, ppbData)) { - return TRUE; - } - - switch (REQTYPE_GET_RECIP(pSetup->bmRequestType)) { - case REQTYPE_RECIP_DEVICE: return HandleStdDeviceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_INTERFACE: return HandleStdInterfaceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_ENDPOINT: return HandleStdEndPointReq(pSetup, piLen, ppbData); - default: return FALSE; - } -} - - -/** - Registers a callback for custom device requests - - In USBHandleStandardRequest, the custom request handler gets a first - chance at handling the request before it is handed over to the 'chapter 9' - request handler. - - This can be used for example in HID devices, where a REQ_GET_DESCRIPTOR - request is sent to an interface, which is not covered by the 'chapter 9' - specification. - - @param [in] pfnHandler Callback function pointer - */ -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler) -{ - pfnHandleCustomReq = pfnHandler; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h deleted file mode 100644 index a4b5fa72d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Definitions of structures of standard USB packets -*/ - -#ifndef _USBSTRUCT_H_ -#define _USBSTRUCT_H_ - -// CodeRed - include the LPCUSB type.h file rather than NXP one directly -#include "type.h" - -/** setup packet definitions */ -typedef struct { - unsigned char bmRequestType; /**< characteristics of the specific request */ - unsigned char bRequest; /**< specific request */ - unsigned short wValue; /**< request specific parameter */ - unsigned short wIndex; /**< request specific parameter */ - unsigned short wLength; /**< length of data transfered in data phase */ -} TSetupPacket; - - -#define REQTYPE_GET_DIR(x) (((x)>>7)&0x01) -#define REQTYPE_GET_TYPE(x) (((x)>>5)&0x03) -#define REQTYPE_GET_RECIP(x) ((x)&0x1F) - -#define REQTYPE_DIR_TO_DEVICE 0 -#define REQTYPE_DIR_TO_HOST 1 - -#define REQTYPE_TYPE_STANDARD 0 -#define REQTYPE_TYPE_CLASS 1 -#define REQTYPE_TYPE_VENDOR 2 -#define REQTYPE_TYPE_RESERVED 3 - -#define REQTYPE_RECIP_DEVICE 0 -#define REQTYPE_RECIP_INTERFACE 1 -#define REQTYPE_RECIP_ENDPOINT 2 -#define REQTYPE_RECIP_OTHER 3 - -/* standard requests */ -#define REQ_GET_STATUS 0x00 -#define REQ_CLEAR_FEATURE 0x01 -#define REQ_SET_FEATURE 0x03 -#define REQ_SET_ADDRESS 0x05 -#define REQ_GET_DESCRIPTOR 0x06 -#define REQ_SET_DESCRIPTOR 0x07 -#define REQ_GET_CONFIGURATION 0x08 -#define REQ_SET_CONFIGURATION 0x09 -#define REQ_GET_INTERFACE 0x0A -#define REQ_SET_INTERFACE 0x0B -#define REQ_SYNCH_FRAME 0x0C - -/* class requests HID */ -#define HID_GET_REPORT 0x01 -#define HID_GET_IDLE 0x02 -#define HID_GET_PROTOCOL 0x03 -#define HID_SET_REPORT 0x09 -#define HID_SET_IDLE 0x0A -#define HID_SET_PROTOCOL 0x0B - -/* feature selectors */ -#define FEA_ENDPOINT_HALT 0x00 -#define FEA_REMOTE_WAKEUP 0x01 -#define FEA_TEST_MODE 0x02 - -/* - USB descriptors -*/ - -/** USB descriptor header */ -typedef struct { - unsigned char bLength; /**< descriptor length */ - unsigned char bDescriptorType; /**< descriptor type */ -} TUSBDescHeader; - -#define DESC_DEVICE 1 -#define DESC_CONFIGURATION 2 -#define DESC_STRING 3 -#define DESC_INTERFACE 4 -#define DESC_ENDPOINT 5 -#define DESC_DEVICE_QUALIFIER 6 -#define DESC_OTHER_SPEED 7 -#define DESC_INTERFACE_POWER 8 - -#define DESC_HID_HID 0x21 -#define DESC_HID_REPORT 0x22 -#define DESC_HID_PHYSICAL 0x23 - -#define GET_DESC_TYPE(x) (((x)>>8)&0xFF) -#define GET_DESC_INDEX(x) ((x)&0xFF) - -#endif /* _USBSTRUCT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c deleted file mode 100644 index 9703eefa4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -#define partstLED1_OUTPUT ( 1 << 25 ) -#define partstLED2_OUTPUT ( 1 << 4 ) - -void vParTestInitialise( void ) -{ - /* Set LEDs to output. */ - GPIO1->FIODIR = partstLED1_OUTPUT; - GPIO0->FIODIR = partstLED2_OUTPUT; - - /* Start with LED off. */ - GPIO1->FIOSET = partstLED1_OUTPUT; - GPIO0->FIOSET = partstLED2_OUTPUT; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLEDIn, signed long xValue ) -{ - /* Used to set and clear LEDs on FIO2. */ - - if( ulLEDIn == 0 ) - { - /* Set of clear the output. */ - if( xValue ) - { - GPIO1->FIOCLR = partstLED1_OUTPUT; - } - else - { - GPIO1->FIOSET = partstLED1_OUTPUT; - } - } - else if( ulLEDIn == 1 ) - { - /* Set of clear the output. */ - if( xValue ) - { - GPIO0->FIOCLR = partstLED2_OUTPUT; - } - else - { - GPIO0->FIOSET = partstLED2_OUTPUT; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLEDIn ) -{ -unsigned long ulCurrentState; - - /* Used to toggle LEDs on FIO2. */ - - if( ulLEDIn == 0 ) - { - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = GPIO1->FIOPIN; - if( ulCurrentState & partstLED1_OUTPUT ) - { - GPIO1->FIOCLR = partstLED1_OUTPUT; - } - else - { - GPIO1->FIOSET = partstLED1_OUTPUT; - } - } - else if( ulLEDIn == 1 ) - { - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = GPIO0->FIOPIN; - if( ulCurrentState & partstLED2_OUTPUT ) - { - GPIO0->FIOCLR = partstLED2_OUTPUT; - } - else - { - GPIO0->FIOSET = partstLED2_OUTPUT; - } - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( void ) -{ - if( ( GPIO0->FIOPIN & partstLED2_OUTPUT ) == 0 ) - { - return pdFALSE; - } - else - { - return pdTRUE; - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDState( long lState ) -{ - /* Used to set and clear the LEDs on FIO1. */ - if( lState != pdFALSE ) - { - GPIO0->FIOCLR = partstLED2_OUTPUT; - } - else - { - GPIO0->FIOSET = partstLED2_OUTPUT; - } -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd deleted file mode 100644 index 9322a471c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,879 +0,0 @@ - - - - 2 - - Debug - - ARM - - 1 - - C-SPY - 2 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 1 - 1 - 1 - - - - - - - - - JLINK_ID - 2 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - MACRAIGOR_ID - 2 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - PEMICRO_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - STLINK_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp deleted file mode 100644 index 5a442fa71..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,1018 +0,0 @@ - - - - 2 - - Debug - - ARM - - 1 - - General - 3 - - 21 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 28 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common Demo Tasks - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - - FreeRTOS - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - - LPCUSB - - $PROJ_DIR$\LPCUSB\USB_CDC.c - - - $PROJ_DIR$\LPCUSB\usbcontrol.c - - - $PROJ_DIR$\LPCUSB\usbhw_lpc.c - - - $PROJ_DIR$\LPCUSB\usbinit.c - - - $PROJ_DIR$\LPCUSB\usbstdreq.c - - - - WEB Server - - $PROJ_DIR$\webserver\emac.c - - - $PROJ_DIR$\webserver\http-strings.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - $PROJ_DIR$\webserver\httpd-fs.c - - - $PROJ_DIR$\webserver\httpd.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - $PROJ_DIR$\webserver\uIP_Task.c - - - - $PROJ_DIR$\cstartup_M.s - - - $PROJ_DIR$\main.c - - - $PROJ_DIR$\ParTest.c - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s deleted file mode 100644 index e8be5f6c4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s +++ /dev/null @@ -1,271 +0,0 @@ -/************************************************** - * - * Part one of the system initialization code, contains low-level - * initialization, plain thumb variant. - * - * Copyright 2009 IAR Systems. All rights reserved. - * - * $Revision: 28532 $ - * - **************************************************/ - -; -; The modules in this file are included in the libraries, and may be replaced -; by any user-defined modules that define the PUBLIC symbol _program_start or -; a user defined start symbol. -; To override the cstartup defined in the library, simply add your modified -; version to the workbench project. -; -; The vector table is normally located at address 0. -; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. -; The name "__vector_table" has special meaning for C-SPY: -; it is where the SP start value is found, and the NVIC vector -; table register (VTOR) is initialized to this address if != 0. -; -; Cortex-M version -; - - MODULE ?cstartup - - ;; Forward declaration of sections. - SECTION CSTACK:DATA:NOROOT(3) - - SECTION .intvec:CODE:NOROOT(2) - - EXTERN __iar_program_start - EXTERN xPortPendSVHandler - EXTERN xPortSysTickHandler - EXTERN vPortSVCHandler - EXTERN vEMAC_ISR - PUBLIC __vector_table - PUBLIC __vector_table_0x1c - - DATA -__vector_table - DCD sfe(CSTACK) ; Top of Stack - DCD __iar_program_start ; Reset Handler - DCD NMI_Handler ; NMI Handler - DCD HardFault_Handler ; Hard Fault Handler - DCD MemManage_Handler ; MPU Fault Handler - DCD BusFault_Handler ; Bus Fault Handler - DCD UsageFault_Handler ; Usage Fault Handler -__vector_table_0x1c - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD vPortSVCHandler ; SVCall Handler - DCD DebugMon_Handler ; Debug Monitor Handler - DCD 0 ; Reserved - DCD xPortPendSVHandler ; PendSV Handler - DCD xPortSysTickHandler ; SysTick Handler - DCD WDT_IRQHandler ; Watchdog Handler - DCD TMR0_IRQHandler ; TIMER0 Handler - DCD TMR1_IRQHandler ; TIMER1 Handler - DCD TMR2_IRQHandler ; TIMER2 Handler - DCD TMR3_IRQHandler ; TIMER3 Handler - DCD UART0_IRQHandler ; UART0 Handler - DCD UART1_IRQHandler ; UART1 Handler - DCD UART2_IRQHandler ; UART2 Handler - DCD UART3_IRQHandler ; UART3 Handler - DCD PWM1_IRQHandler ; PWM1 Handler - DCD I2C0_IRQHandler ; I2C0 Handler - DCD I2C1_IRQHandler ; I2C1 Handler - DCD I2C2_IRQHandler ; I2C2 Handler - DCD SPI_IRQHandler ; SPI Handler - DCD SSP0_IRQHandler ; SSP0 Handler - DCD SSP1_IRQHandler ; SSP1 Handler - DCD PLL0_IRQHandler ; PLL0 Handler - DCD RTC_IRQHandler ; RTC Handler - DCD EINT0_IRQHandler ; EXT Interupt 0 Handler - DCD EINT1_IRQHandler ; EXT Interupt 1 Handler - DCD EINT2_IRQHandler ; EXT Interupt 2 Handler - DCD EINT3_IRQHandler ; EXT Interupt 3 Handler - DCD ADC_IRQHandler ; ADC Handler - DCD BOD_IRQHandler ; BOD Handler - DCD USB_IRQHandler ; USB Handler - DCD CAN_IRQHandler ; CAN Handler - DCD GPDMA_IRQHandler ; General Purpose DMA Handler - DCD I2S_IRQHandler ; I2S Handler - DCD vEMAC_ISR ; Ethernet Handler - DCD RIT_IRQHandler ; Repetitive Interrupt Timer Handler - DCD MotorControlPWM_IRQHandler ; Motor Control PWM Handler - DCD QE_IRQHandler ; Quadrature Encoder Handler - DCD PLL1_IRQHandler ; PLL1 Handler - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Default interrupt handlers. -;; - THUMB - - PUBWEAK NMI_Handler - SECTION .text:CODE:REORDER(1) -NMI_Handler - B NMI_Handler - PUBWEAK HardFault_Handler - SECTION .text:CODE:REORDER(1) -HardFault_Handler - B HardFault_Handler - PUBWEAK MemManage_Handler - SECTION .text:CODE:REORDER(1) -MemManage_Handler - B MemManage_Handler - PUBWEAK BusFault_Handler - SECTION .text:CODE:REORDER(1) -BusFault_Handler - B BusFault_Handler - PUBWEAK UsageFault_Handler - SECTION .text:CODE:REORDER(1) -UsageFault_Handler - B UsageFault_Handler - PUBWEAK SVC_Handler - SECTION .text:CODE:REORDER(1) -SVC_Handler - B SVC_Handler - PUBWEAK DebugMon_Handler - SECTION .text:CODE:REORDER(1) -DebugMon_Handler - B DebugMon_Handler - PUBWEAK PendSV_Handler - SECTION .text:CODE:REORDER(1) -PendSV_Handler - B PendSV_Handler - PUBWEAK SysTick_Handler - SECTION .text:CODE:REORDER(1) -SysTick_Handler - B SysTick_Handler - PUBWEAK WDT_IRQHandler - SECTION .text:CODE:REORDER(1) -WDT_IRQHandler - B WDT_IRQHandler - PUBWEAK TMR0_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR0_IRQHandler - B TMR0_IRQHandler - PUBWEAK TMR1_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR1_IRQHandler - B TMR1_IRQHandler - PUBWEAK TMR2_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR2_IRQHandler - B TMR2_IRQHandler - PUBWEAK TMR3_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR3_IRQHandler - B TMR3_IRQHandler - PUBWEAK UART0_IRQHandler - SECTION .text:CODE:REORDER(1) -UART0_IRQHandler - B UART0_IRQHandler - PUBWEAK UART1_IRQHandler - SECTION .text:CODE:REORDER(1) -UART1_IRQHandler - B UART1_IRQHandler - PUBWEAK UART2_IRQHandler - SECTION .text:CODE:REORDER(1) -UART2_IRQHandler - B UART2_IRQHandler - PUBWEAK UART3_IRQHandler - SECTION .text:CODE:REORDER(1) -UART3_IRQHandler - B UART3_IRQHandler - PUBWEAK PWM1_IRQHandler - SECTION .text:CODE:REORDER(1) -PWM1_IRQHandler - B PWM1_IRQHandler - PUBWEAK I2C0_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_IRQHandler - B I2C0_IRQHandler - PUBWEAK I2C1_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_IRQHandler - B I2C1_IRQHandler - PUBWEAK I2C2_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C2_IRQHandler - B I2C2_IRQHandler - PUBWEAK SPI_IRQHandler - SECTION .text:CODE:REORDER(1) -SPI_IRQHandler - B SPI_IRQHandler - PUBWEAK SSP0_IRQHandler - SECTION .text:CODE:REORDER(1) -SSP0_IRQHandler - B SSP0_IRQHandler - PUBWEAK SSP1_IRQHandler - SECTION .text:CODE:REORDER(1) -SSP1_IRQHandler - B SSP1_IRQHandler - PUBWEAK PLL0_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL0_IRQHandler - B PLL0_IRQHandler - PUBWEAK RTC_IRQHandler - SECTION .text:CODE:REORDER(1) -RTC_IRQHandler - B RTC_IRQHandler - PUBWEAK EINT0_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT0_IRQHandler - B EINT0_IRQHandler - PUBWEAK EINT1_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT1_IRQHandler - B EINT1_IRQHandler - PUBWEAK EINT2_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT2_IRQHandler - B EINT2_IRQHandler - PUBWEAK EINT3_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT3_IRQHandler - B EINT3_IRQHandler - PUBWEAK ADC_IRQHandler - SECTION .text:CODE:REORDER(1) -ADC_IRQHandler - B ADC_IRQHandler - PUBWEAK BOD_IRQHandler - SECTION .text:CODE:REORDER(1) -BOD_IRQHandler - B BOD_IRQHandler - PUBWEAK USB_IRQHandler - SECTION .text:CODE:REORDER(1) -USB_IRQHandler - B USB_IRQHandler - PUBWEAK CAN_IRQHandler - SECTION .text:CODE:REORDER(1) -CAN_IRQHandler - B CAN_IRQHandler - PUBWEAK GPDMA_IRQHandler - SECTION .text:CODE:REORDER(1) -GPDMA_IRQHandler - B GPDMA_IRQHandler - PUBWEAK I2S_IRQHandler - SECTION .text:CODE:REORDER(1) -I2S_IRQHandler - B I2S_IRQHandler - PUBWEAK Ethernet_IRQHandler - SECTION .text:CODE:REORDER(1) -Ethernet_IRQHandler - B Ethernet_IRQHandler - PUBWEAK RIT_IRQHandler - SECTION .text:CODE:REORDER(1) -RIT_IRQHandler - B RIT_IRQHandler - PUBWEAK MotorControlPWM_IRQHandler - SECTION .text:CODE:REORDER(1) -MotorControlPWM_IRQHandler - B MotorControlPWM_IRQHandler - PUBWEAK QE_IRQHandler - SECTION .text:CODE:REORDER(1) -QE_IRQHandler - B QE_IRQHandler - PUBWEAK PLL1_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL1_IRQHandler - B PLL1_IRQHandler - - END diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c deleted file mode 100644 index 89211e5f1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c +++ /dev/null @@ -1,376 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. The status can be viewed using on the Task Stats page - * served by the WEB server. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "USB" task - Enumerates the USB device as a CDC class, then echoes back all - * received characters with a configurable offset (for example, if the offset - * is 1 and 'A' is received then 'B' will be sent back). A dumb terminal such - * as Hyperterminal can be used to talk to the USB task. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook). */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* The toggle rate for the LED. */ -#define mainLED_TOGGLE_RATE ( ( TickType_t ) 1000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The message displayed by the WEB server when all tasks are executing -without an error being reported. */ -#define mainPASS_STATUS_MESSAGE "All tasks are executing without error." - -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The task that handles the USB stack. - */ -extern void vUSBTask( void *pvParameters ); - -/* - * Very basic task that does nothing but use delays to flash an LED. - */ -static void prvFlashTask( void *pvParameters ); - -/* - * Simply returns the current status message for display on served WEB pages. - */ -char *pcGetTaskStatusMessage( void ); - -/*-----------------------------------------------------------*/ - -/* Holds the status message displayed by the WEB server. */ -static char *pcStatusMessage = mainPASS_STATUS_MESSAGE; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Configure the hardware for use by this demo. */ - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Create the simple LED flash task. */ - xTaskCreate( prvFlashTask, "Flash", configMINIMAL_STACK_SIZE, ( void * ) NULL, mainFLASH_TASK_PRIORITY, NULL ); - - /* Create the USB task. */ - xTaskCreate( vUSBTask, "USB", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Create the uIP task. The WEB server runs in this task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulTicksSinceLastDisplay = 0; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Generic Queue test/demo."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Peek Queue test/demo."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Queue test/demo."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Time test/demo."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Semaphore test/demo."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Poll Queue test/demo."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Int Math test/demo."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Mutex test/demo."; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvFlashTask( void *pvParameters ) -{ -TickType_t xLastFlashTime; - - /* We need to initialise xLastFlashTime prior to the first call to - vTaskDelayUntil(). */ - xLastFlashTime = xTaskGetTickCount(); - - for(;;) - { - /* Simply toggle the LED between delays. */ - vTaskDelayUntil( &xLastFlashTime, mainLED_TOGGLE_RATE ); - vParTestToggleLED( 0 ); - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* Disable peripherals power. */ - SC->PCONP = 0; - - /* Enable GPIO power. */ - SC->PCONP = PCONP_PCGPIO; - - /* Disable TPIU. */ - PINCON->PINSEL10 = 0; - - if ( SC->PLL0STAT & ( 1 << 25 ) ) - { - /* Enable PLL, disconnected. */ - SC->PLL0CON = 1; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - SC->PLL0CON = 0; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable main OSC. */ - SC->SCS |= 0x20; - while( !( SC->SCS & 0x40 ) ); - - /* select main OSC, 12MHz, as the PLL clock source. */ - SC->CLKSRCSEL = 0x1; - - SC->PLL0CFG = 0x20031; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - SC->PLL0CON = 1; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - - /* Set clock divider. */ - SC->CCLKCFG = 0x03; - - /* Configure flash accelerator. */ - SC->FLASHCFG = 0x403a; - - /* Check lock bit status. */ - while( ( ( SC->PLL0STAT & ( 1 << 26 ) ) == 0 ) ); - - /* Enable and connect. */ - SC->PLL0CON = 3; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - while( ( ( SC->PLL0STAT & ( 1 << 25 ) ) == 0 ) ); - - - - - /* Configure the clock for the USB. */ - - if( SC->PLL1STAT & ( 1 << 9 ) ) - { - /* Enable PLL, disconnected. */ - SC->PLL1CON = 1; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - SC->PLL1CON = 0; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - - SC->PLL1CFG = 0x23; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - SC->PLL1CON = 1; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( SC->PLL1STAT & ( 1 << 10 ) ) == 0 ) ); - - /* Enable and connect. */ - SC->PLL1CON = 3; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( SC->PLL1STAT & ( 1 << 9 ) ) == 0 ) ); - - /* Setup the peripheral bus to be the same as the CPU output (100 MHz). */ - SC->PCLKSEL0 = 0x05555555; - - /* Configure the LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ -const unsigned long TCR_COUNT_RESET = 2, CTCR_CTM_TIMER = 0x00, TCR_COUNT_ENABLE = 0x01; - - /* This function configures a timer that is used as the time base when - collecting run time statistical information - basically the percentage - of CPU time that each task is utilising. It is called automatically when - the scheduler is started (assuming configGENERATE_RUN_TIME_STATS is set - to 1). */ - - /* Power up and feed the timer. */ - SC->PCONP |= 0x02UL; - SC->PCLKSEL0 = (SC->PCLKSEL0 & (~(0x3<<2))) | (0x01 << 2); - - /* Reset Timer 0 */ - TIM0->TCR = TCR_COUNT_RESET; - - /* Just count up. */ - TIM0->CTCR = CTCR_CTM_TIMER; - - /* Prescale to a frequency that is good enough to get a decent resolution, - but not too fast so as to overflow all the time. */ - TIM0->PR = ( configCPU_CLOCK_HZ / 10000UL ) - 1UL; - - /* Start the counter. */ - TIM0->TCR = TCR_COUNT_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index 597d84d1a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,15 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.0\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\bin\armproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\bin\armjlink.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\bin\armbat.dll" --macro "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\CORTEX_LPC1768_IAR\Flash.mac" --flash_loader "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\config\flashloader\NXP\FlashNXPLPC512K_Cortex.board" --backend -B "--endian=little" "--cpu=Cortex-M3" "--fpu=None" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\CONFIG\debugger\NXP\iolpc1768.ddf" "--drv_verify_download" "--semihosting=none" "--device=LPC1768" "--drv_communication=USB0" "--jlink_speed=auto" "--jlink_initial_speed=32" "--jlink_reset_strategy=0,0" "--drv_catch_exceptions=0x000" "--drv_swo_clock_setup=72000000,0,2000000" - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index 182e449d2..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - 201342 - - 20 - 1006 - 268 - 67 - - - - - - - - 277272727 - - - - - - 200100 - 200200100100100100 - - - - - - - - TabID-31842-26703 - Debug Log - Debug-Log - - - - TabID-31319-26713 - Build - Build - - - - - 0 - - - TabID-9822-26706 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\main.c0146526652660TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\ARM_CM3\port.c014558215821TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\ParTest.c07634673467TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Source\queue.c010553478834788TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\webserver\emac.c013052735273TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\webserver\EthDev_LPC17xx.h02821789217902TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\webserver\httpd-cgi.c0000TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\FreeRTOSConfig.h045000100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2742351-2-2200200142857203252252143756098-2-21981402-2-214042001002857203252142857203252 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni deleted file mode 100644 index 9c7bea544..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,73 +0,0 @@ -[DebugChecksum] -Checksum=-1523643934 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[InstructionProfiling] -Enabled=_ 0 -[CodeCoverage] -Enabled=_ 0 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[TraceHelper] -Enabled=0 -ShowSource=1 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[DriverProfiling] -Enabled=0 -Source=2 -Graph=0 -[Breakpoints] -Count=0 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[InterruptLog] -LogEnabled=0 -SumEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=1 -SumSortOrder=0 -[Interrupts] -Enabled=1 -[MemoryMap] -Enabled=0 -Base=0 -UseAuto=0 -TypeViolation=1 -UnspecRange=1 -ActionState=1 -[Trace1] -Enabled=0 -ShowSource=1 -[Disassemble mode] -mode=0 -[Breakpoints2] -Count=0 -[Aliases] -Count=0 -SuppressDialog=0 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index a54070a95..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 393272727 - - - - - - - 20100626867 - - 48268826191343 - - - - - - - TabID-17246-25544 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - TabID-17664-26559 - Build - Build - - - TabID-11527-1227Find in FilesFind-in-FilesTabID-6216-4192Debug LogDebug-Log - - 0 - - - - - - TextEditor$WS_DIR$\main.c000000100000010000001 - - - - - - - iaridepm.enu1-2-2639467-2-2240200142857203666279167652749-2-22991682-2-216843011002381306517142857203666 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink deleted file mode 100644 index e49918734..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink +++ /dev/null @@ -1,14 +0,0 @@ -[FLASH] -SkipProgOnCRCMatch = 1 -VerifyDownload = 1 -AllowCaching = 1 -EnableFlashDL = 2 -Override = 0 -Device="ADUC7020X62" -[BREAKPOINTS] -ShowInfoWin = 1 -EnableFlashBP = 2 -BPDuringExecution = 0 -[CPU] -OverrideMemMap = 0 -AllowSimulation = 1 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h deleted file mode 100644 index a5c9727d4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h +++ /dev/null @@ -1,40 +0,0 @@ -/****************************************************************************** - * @file: system_LPC17xx.h - * @purpose: CMSIS Cortex-M3 Device Peripheral Access Layer Header File - * for the NXP LPC17xx Device Series - * @version: V1.0 - * @date: 25. Nov. 2008 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __SYSTEM_LPC17xx_H -#define __SYSTEM_LPC17xx_H - -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf deleted file mode 100644 index 607fc9e6d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf +++ /dev/null @@ -1,45 +0,0 @@ -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%LINUX% -DriverVer=08/17/2004,0.0.2.0 -; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com) -; released under GNU General Public License - -[Manufacturer] -%LINUX%=GSerialDeviceList - -[GSerialDeviceList] -%GSERIAL%=GSerialInstall, USB\VID_FFFF&PID_0005 - -[DestinationDirs] -DefaultDestDir=10,System32\Drivers - -[GSerialInstall] -CopyFiles=GSerialCopyFiles -AddReg=GSerialAddReg - -[GSerialCopyFiles] -usbser.sys - -[GSerialAddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[GSerialInstall.Services] -AddService = usbser,0x0002,GSerialService - -[GSerialService] -DisplayName = %GSERIAL_DISPLAY_NAME% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\System32\Drivers\usbser.sys -LoadOrderGroup = Base - -[Strings] -LINUX = "Linux" -GSERIAL = "USB CDC serial port emulation" -GSERIAL_DISPLAY_NAME = "USB CDC serial port emulation" \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h deleted file mode 100644 index f67789f44..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * @file: EthDev.h - * @purpose: Ethernet Device Definitions - * @version: V1.10 - * @date: 24. Feb. 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef _ETHDEV__H -#define _ETHDEV__H - -#ifndef NULL - #define NULL 0 -#endif - -/*---------------------------------------------------------------------------- - Ethernet Device Defines - *----------------------------------------------------------------------------*/ -#define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ -#define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ - - -/*---------------------------------------------------------------------------- - Ethernet Device Configuration and Control Command Defines - *----------------------------------------------------------------------------*/ -typedef enum { - EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ - EthDev_LINK_UP = 1, /*!< Ethernet link established */ -} EthDev_LINK; - -typedef enum { - EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ - EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ - EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ -} EthDev_SPEED; - -typedef enum { - EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ - EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ -} EthDev_DUPLEX; - -typedef enum { - EthDev_MODE_AUTO = 0, - EthDev_MODE_10M_FULL = 1, - EthDev_MODE_10M_HALF = 2, - EthDev_MODE_100M_FULL = 3, - EthDev_MODE_100M_HALF = 4, - EthDev_MODE_1000M_FULL = 5, - EthDev_MODE_1000M_HALF = 6, -} EthDev_MODE; - -typedef struct { - EthDev_LINK Link : 1; - EthDev_DUPLEX Duplex : 1; - EthDev_SPEED Speed : 2; -} EthDev_STATUS; - - -/*---------------------------------------------------------------------------- - Ethernet Device IO Block Structure - *----------------------------------------------------------------------------*/ -typedef struct { - - /* Initialized by the user application before call to Init. */ - EthDev_MODE Mode; - unsigned char HwAddr[EthDev_ADDR_SIZE]; - void *(*RxFrame) (int size); - void (*RxFrameReady) (int size); - - /* Initialized by Ethernet driver. */ - int (*Init) (void); - int (*UnInit) (void); - int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); - int (*TxFrame) (void *pData, int size); - void (*Lock) (void); - void (*UnLock) (void); - EthDev_STATUS (*LinkChk) (void); -} EthDev_IOB; - - -/* - * Look for received data. If data is found then uip_buf is assigned to the - * new data and the length of the data is returned. If no data is found then - * uip_buf is not updated and 0 is returned. - */ -unsigned long ulGetEMACRxData( void ); - -/* - * Send usTxDataLen bytes from uip_buf. - */ -void vSendEMACTxData( unsigned short usTxDataLen ); - -/* - * Prepare the Ethernet hardware ready for TCP/IP comms. - */ -long lEMACInit(void); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h deleted file mode 100644 index 03a875cb7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - * @file: EthDev_LPC17xx.h - * @purpose: Ethernet Device Definitions for NXP LPC17xx - * @version: V0.01 - * @date: 14. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef __ETHDEV_LPC17XX_H -#define __ETHDEV_LPC17XX_H - -#include - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 3 /* Num.of RX Fragments. */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments. */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -typedef struct { /* RX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} RX_DESC_TypeDef; - -typedef struct { /* RX Status struct */ - uint32_t Info; - uint32_t HashCRC; -} RX_STAT_TypeDef; - -typedef struct { /* TX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} TX_DESC_TypeDef; - -typedef struct { /* TX Status struct */ - uint32_t Info; -} TX_STAT_TypeDef; - - -/* EMAC variables located in AHB SRAM bank 1*/ -#define AHB_SRAM_BANK1_BASE 0x2007c000UL -#define RX_DESC_BASE (AHB_SRAM_BANK1_BASE ) -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_DESC_TypeDef */ -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_STAT_TypeDef */ -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*(2*4)) /* 2 * uint32_t, see TX_DESC_TypeDef */ -#define ETH_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*(1*4)) /* 1 * uint32_t, see TX_STAT_TypeDef */ - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define ETH_BUF(i) ( ETH_BUF_BASE + ETH_FRAG_SIZE*i ) -#define ETH_NUM_BUFFERS ( NUM_TX_FRAG + NUM_RX_FRAG + 1 ) /* There are in fact 2 more buffers than descriptors as the two Tx descriptors use the same buffer to speed up the uip Tx. */ - - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000003C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#define MCMD_READ 0x00000001 /* MII Read */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* ENET Device Revision ID */ -#define OLD_EMAC_MODULE_ID 0x39022000 /* Rev. ID for first rev '-' */ - -/* KSZ8721BL PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_CTRLER 0x1f /* 100BASE-TX-PHY Controller */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ -#define PHY_AUTO_NEG_COMPLETE 0x0020 /* Auto negotiation have finished. */ - -#define KS8721_DEF_ADR 0x0100 /* Default PHY device address */ -#define KS8721_ID 0x00221619 /* PHY Identifier */ - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c deleted file mode 100644 index 0f92898fb..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c +++ /dev/null @@ -1,580 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Originally adapted from file written by Andreas Dannenberg. Supplied with permission. */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "EthDev_LPC17xx.h" - -/* Time to wait between each inspection of the link status. */ -#define emacWAIT_FOR_LINK_TO_ESTABLISH ( 500 / portTICK_PERIOD_MS ) - -/* Short delay used in several places during the initialisation process. */ -#define emacSHORT_DELAY ( 2 ) - -/* Hardware specific bit definitions. */ -#define emacLINK_ESTABLISHED ( 0x0020) -#define emacFULL_DUPLEX_ENABLED ( 0x0010 ) -#define emac10BASE_T_MODE ( 0x0004 ) -#define emacPINSEL2_VALUE ( 0x50150105 ) -#define emacDIV_44 ( 0x28 ) - -/* If no buffers are available, then wait this long before looking again.... */ -#define emacBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Index to the Tx descriptor that is always used first for every Tx. The second -descriptor is then used to re-send in order to speed up the uIP Tx process. */ -#define emacTX_DESC_INDEX ( 0 ) - -/*-----------------------------------------------------------*/ - -/* - * Configure both the Rx and Tx descriptors during the init process. - */ -static void prvInitDescriptors( void ); - -/* - * Setup the IO and peripherals required for Ethernet communication. - */ -static void prvSetupEMACHardware( void ); - -/* - * Control the auto negotiate process. - */ -static void prvConfigurePHY( void ); - -/* - * Wait for a link to be established, then setup the PHY according to the link - * parameters. - */ -static long prvSetupLinkStatus( void ); - -/* - * Search the pool of buffers to find one that is free. If a buffer is found - * mark it as in use before returning its address. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return an allocated buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Send lValue to the lPhyReg within the PHY. - */ -static long prvWritePHY( long lPhyReg, long lValue ); - -/* - * Read a value from ucPhyReg within the PHY. *plStatus will be set to - * pdFALSE if there is an error. - */ -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/* Each ucBufferInUse index corresponds to a position in the pool of buffers. -If the index contains a 1 then the buffer within pool is in use, if it -contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ ETH_NUM_BUFFERS ] = { pdFALSE }; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -unsigned char * uip_buf; - -/* Store the length of the data being sent so the data can be sent twice. The -value will be set back to 0 once the data has been sent twice. */ -static unsigned short usSendLen = 0; - -/*-----------------------------------------------------------*/ - -long lEMACInit( void ) -{ -long lReturn = pdPASS; -unsigned long ulID1, ulID2; - - /* Reset peripherals, configure port pins and registers. */ - prvSetupEMACHardware(); - - /* Check the PHY part number is as expected. */ - ulID1 = prvReadPHY( PHY_REG_IDR1, &lReturn ); - ulID2 = prvReadPHY( PHY_REG_IDR2, &lReturn ); - if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFFFUL ) ) == KS8721_ID ) - { - /* Set the Ethernet MAC Address registers */ - EMAC->SA0 = ( configMAC_ADDR0 << 8 ) | configMAC_ADDR1; - EMAC->SA1 = ( configMAC_ADDR2 << 8 ) | configMAC_ADDR3; - EMAC->SA2 = ( configMAC_ADDR4 << 8 ) | configMAC_ADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - prvInitDescriptors(); - - /* Receive broadcast and perfect match packets */ - EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Setup the PHY. */ - prvConfigurePHY(); - } - else - { - lReturn = pdFAIL; - } - - /* Check the link status. */ - if( lReturn == pdPASS ) - { - lReturn = prvSetupLinkStatus(); - } - - if( lReturn == pdPASS ) - { - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* Reset all interrupts */ - EMAC->IntClear = ( INT_RX_OVERRUN | INT_RX_ERR | INT_RX_FIN | INT_RX_DONE | INT_TX_UNDERRUN | INT_TX_ERR | INT_TX_FIN | INT_TX_DONE | INT_SOFT_INT | INT_WAKEUP ); - - /* Enable receive and transmit mode of MAC Ethernet core */ - EMAC->Command |= ( CR_RX_EN | CR_TX_EN ); - EMAC->MAC1 |= MAC1_REC_EN; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < ETH_NUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) ETH_BUF( x ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitDescriptors( void ) -{ -long x, lNextBuffer = 0; - - for( x = 0; x < NUM_RX_FRAG; x++ ) - { - /* Allocate the next Ethernet buffer to this descriptor. */ - RX_DESC_PACKET( x ) = ETH_BUF( lNextBuffer ); - RX_DESC_CTRL( x ) = RCTRL_INT | ( ETH_FRAG_SIZE - 1 ); - RX_STAT_INFO( x ) = 0; - RX_STAT_HASHCRC( x ) = 0; - - /* The Ethernet buffer is now in use. */ - ucBufferInUse[ lNextBuffer ] = pdTRUE; - lNextBuffer++; - } - - /* Set EMAC Receive Descriptor Registers. */ - EMAC->RxDescriptor = RX_DESC_BASE; - EMAC->RxStatus = RX_STAT_BASE; - EMAC->RxDescriptorNumber = NUM_RX_FRAG - 1; - - /* Rx Descriptors Point to 0 */ - EMAC->RxConsumeIndex = 0; - - /* A buffer is not allocated to the Tx descriptors until they are actually - used. */ - for( x = 0; x < NUM_TX_FRAG; x++ ) - { - TX_DESC_PACKET( x ) = ( unsigned long ) NULL; - TX_DESC_CTRL( x ) = 0; - TX_STAT_INFO( x ) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - EMAC->TxDescriptor = TX_DESC_BASE; - EMAC->TxStatus = TX_STAT_BASE; - EMAC->TxDescriptorNumber = NUM_TX_FRAG - 1; - - /* Tx Descriptors Point to 0 */ - EMAC->TxProduceIndex = 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupEMACHardware( void ) -{ -unsigned short us; -long x, lDummy; - - /* Enable P1 Ethernet Pins. */ - PINCON->PINSEL2 = emacPINSEL2_VALUE; - PINCON->PINSEL3 = ( PINCON->PINSEL3 & ~0x0000000F ) | 0x00000005; - - /* Power Up the EMAC controller. */ - SC->PCONP |= PCONP_PCENET; - vTaskDelay( emacSHORT_DELAY ); - - /* Reset all EMAC internal modules. */ - EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM; - - /* A short delay after reset. */ - vTaskDelay( emacSHORT_DELAY ); - - /* Initialize MAC control registers. */ - EMAC->MAC1 = MAC1_PASS_ALL; - EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - EMAC->MAXF = ETH_MAX_FLEN; - EMAC->CLRT = CLRT_DEF; - EMAC->IPGR = IPGR_DEF; - EMAC->MCFG = emacDIV_44; - - /* Enable Reduced MII interface. */ - EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - EMAC->SUPP = SUPP_RES_RMII; - vTaskDelay( emacSHORT_DELAY ); - EMAC->SUPP = 0; - - /* Put the PHY in reset mode */ - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - - /* Wait for hardware reset to end. */ - for( x = 0; x < 100; x++ ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - us = prvReadPHY( PHY_REG_BMCR, &lDummy ); - if( !( us & MCFG_RES_MII ) ) - { - /* Reset complete */ - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvConfigurePHY( void ) -{ -unsigned short us; -long x, lDummy; - - /* Auto negotiate the configuration. */ - if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - - for( x = 0; x < 10; x++ ) - { - us = prvReadPHY( PHY_REG_BMSR, &lDummy ); - - if( us & PHY_AUTO_NEG_COMPLETE ) - { - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - } -} -/*-----------------------------------------------------------*/ - -static long prvSetupLinkStatus( void ) -{ -long lReturn = pdFAIL, x; -unsigned short usLinkStatus; - - /* Wait with timeout for the link to be established. */ - for( x = 0; x < 10; x++ ) - { - usLinkStatus = prvReadPHY( PHY_CTRLER, &lReturn ); - if( usLinkStatus != 0x00 ) - { - /* Link is established. */ - lReturn = pdPASS; - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - - if( lReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if( usLinkStatus & emacFULL_DUPLEX_ENABLED ) - { - /* Full duplex is enabled. */ - EMAC->MAC2 |= MAC2_FULL_DUP; - EMAC->Command |= CR_FULL_DUP; - EMAC->IPGT = IPGT_FULL_DUP; - } - else - { - /* Half duplex mode. */ - EMAC->IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if( usLinkStatus & emac10BASE_T_MODE ) - { - /* 10MBit mode. */ - EMAC->SUPP = 0; - } - else - { - /* 100MBit mode. */ - EMAC->SUPP = SUPP_SPEED; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < ETH_NUM_BUFFERS; ul++ ) - { - if( ETH_BUF( ul ) == ( unsigned long ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetEMACRxData( void ) -{ -unsigned long ulLen = 0; -long lIndex; - - if( EMAC->RxProduceIndex != EMAC->RxConsumeIndex ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - ulLen = ( RX_STAT_INFO( EMAC->RxConsumeIndex ) & RINFO_SIZE ) - 3; - uip_buf = ( unsigned char * ) RX_DESC_PACKET( EMAC->RxConsumeIndex ); - - /* Allocate a new buffer to the descriptor. */ - RX_DESC_PACKET( EMAC->RxConsumeIndex ) = ( unsigned long ) prvGetNextBuffer(); - - /* Move the consume index onto the next position, ensuring it wraps to - the beginning at the appropriate place. */ - lIndex = EMAC->RxConsumeIndex; - - lIndex++; - if( lIndex >= NUM_RX_FRAG ) - { - lIndex = 0; - } - - EMAC->RxConsumeIndex = lIndex; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vSendEMACTxData( unsigned short usTxDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free, indicated by its buffer being - NULL. */ - while( TX_DESC_PACKET( emacTX_DESC_INDEX ) != ( unsigned long ) NULL ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > emacBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - break; - } - } - - /* Setup the Tx descriptor for transmission. Remember the length of the - data being sent so the second descriptor can be used to send it again from - within the ISR. */ - usSendLen = usTxDataLen; - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) uip_buf; - TX_DESC_CTRL( emacTX_DESC_INDEX ) = ( usTxDataLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX + 1 ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static long prvWritePHY( long lPhyReg, long lValue ) -{ -const long lMaxTime = 10; -long x; - - EMAC->MADR = KS8721_DEF_ADR | lPhyReg; - EMAC->MWTD = lValue; - - x = 0; - for( x = 0; x < lMaxTime; x++ ) - { - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - /* Operation has finished. */ - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - if( x < lMaxTime ) - { - return pdPASS; - } - else - { - return pdFAIL; - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ) -{ -long x; -const long lMaxTime = 10; - - EMAC->MADR = KS8721_DEF_ADR | ucPhyReg; - EMAC->MCMD = MCMD_READ; - - for( x = 0; x < lMaxTime; x++ ) - { - /* Operation has finished. */ - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - EMAC->MCMD = 0; - - if( x >= lMaxTime ) - { - *plStatus = pdFAIL; - } - - return( EMAC->MRDD ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -unsigned long ulStatus; -long lHigherPriorityTaskWoken = pdFALSE; - - ulStatus = EMAC->IntStatus; - - /* Clear the interrupt. */ - EMAC->IntClear = ulStatus; - - if( ulStatus & INT_RX_DONE ) - { - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - } - - if( ulStatus & INT_TX_DONE ) - { - if( usSendLen > 0 ) - { - /* Send the data again, using the second descriptor. As there are - only two descriptors the index is set back to 0. */ - TX_DESC_PACKET( ( emacTX_DESC_INDEX + 1 ) ) = TX_DESC_PACKET( emacTX_DESC_INDEX ); - TX_DESC_CTRL( ( emacTX_DESC_INDEX + 1 ) ) = ( usSendLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX ); - - /* This is the second Tx so set usSendLen to 0 to indicate that the - Tx descriptors will be free again. */ - usSendLen = 0UL; - } - else - { - /* The Tx buffer is no longer required. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) NULL; - } - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c deleted file mode 100644 index 9a51bc76a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[ 128 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", (int)lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ -extern long lParTestGetLEDState( void ); - - ( void ) arg; - - /* Get the state of the LEDs that are on the FIO1 port. */ - if( lParTestGetLEDState() ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED

", pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c deleted file mode 100644 index 9bb89b5c1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "EthDev_LPC17xx.h" -#include "EthDev.h" -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - while( lEMACInit() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - EMAC->IntEnable = ( INT_RX_DONE | INT_TX_DONE ); - - /* Set the interrupt priority to the max permissible to cause some - interrupt nesting. */ - NVIC_SetPriority( ENET_IRQn, configEMAC_INTERRUPT_PRIORITY ); - - /* Enable the interrupt. */ - NVIC_EnableIRQ( ENET_IRQn ); - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ulGetEMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendEMACTxData( uip_len ); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -extern void vParTestSetLEDState( long lState ); - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the FIO1 LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLEDState( pdTRUE ); - } - else - { - vParTestSetLEDState( pdFALSE ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h deleted file mode 100644 index 5ef89152e..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 62500000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_MUTEXES 1 -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* This is the raw value as per the Cortex-M3 NVIC. Values can be 255 -(lowest) to 0 (1?) (highest). */ -#define configKERNEL_INTERRUPT_PRIORITY 255 -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */ - - -/* This is the value being used as per the ST library which permits 16 -priority values, 0 to 15. This must correspond to the -configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest -NVIC value of 255. */ -#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 172 -#define configIP_ADDR1 25 -#define configIP_ADDR2 218 -#define configIP_ADDR3 202 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -/* The run time stats time base just uses the existing high frequency timer -test clock. All these macros do is clear and return the high frequency -interrupt count respectively. */ -extern unsigned long ulRunTimeStatsClock; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ulRunTimeStatsClock = 0 -#define portGET_RUN_TIME_COUNTER_VALUE() ulRunTimeStatsClock - - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h deleted file mode 100644 index 8c45b4164..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h +++ /dev/null @@ -1,205 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : lcd.h -* Author : MCD Application Team -* Version : VX.Y.Z -* Date : mm/dd/yyyy -* Description : This file contains all the functions prototypes for the -* lcd firmware driver. -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __LCD_H -#define __LCD_H - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x_lib.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* LCD Registers */ -#define R0 0x00 -#define R1 0x01 -#define R2 0x02 -#define R3 0x03 -#define R4 0x04 -#define R5 0x05 -#define R6 0x06 -#define R7 0x07 -#define R8 0x08 -#define R9 0x09 -#define R10 0x0A -#define R12 0x0C -#define R13 0x0D -#define R14 0x0E -#define R15 0x0F -#define R16 0x10 -#define R17 0x11 -#define R18 0x12 -#define R19 0x13 -#define R20 0x14 -#define R21 0x15 -#define R22 0x16 -#define R23 0x17 -#define R24 0x18 -#define R25 0x19 -#define R26 0x1A -#define R27 0x1B -#define R28 0x1C -#define R29 0x1D -#define R30 0x1E -#define R31 0x1F -#define R32 0x20 -#define R33 0x21 -#define R34 0x22 -#define R36 0x24 -#define R37 0x25 -#define R40 0x28 -#define R41 0x29 -#define R43 0x2B -#define R45 0x2D -#define R48 0x30 -#define R49 0x31 -#define R50 0x32 -#define R51 0x33 -#define R52 0x34 -#define R53 0x35 -#define R54 0x36 -#define R55 0x37 -#define R56 0x38 -#define R57 0x39 -#define R59 0x3B -#define R60 0x3C -#define R61 0x3D -#define R62 0x3E -#define R63 0x3F -#define R64 0x40 -#define R65 0x41 -#define R66 0x42 -#define R67 0x43 -#define R68 0x44 -#define R69 0x45 -#define R70 0x46 -#define R71 0x47 -#define R72 0x48 -#define R73 0x49 -#define R74 0x4A -#define R75 0x4B -#define R76 0x4C -#define R77 0x4D -#define R78 0x4E -#define R79 0x4F -#define R80 0x50 -#define R81 0x51 -#define R82 0x52 -#define R83 0x53 -#define R96 0x60 -#define R97 0x61 -#define R106 0x6A -#define R118 0x76 -#define R128 0x80 -#define R129 0x81 -#define R130 0x82 -#define R131 0x83 -#define R132 0x84 -#define R133 0x85 -#define R134 0x86 -#define R135 0x87 -#define R136 0x88 -#define R137 0x89 -#define R139 0x8B -#define R140 0x8C -#define R141 0x8D -#define R143 0x8F -#define R144 0x90 -#define R145 0x91 -#define R146 0x92 -#define R147 0x93 -#define R148 0x94 -#define R149 0x95 -#define R150 0x96 -#define R151 0x97 -#define R152 0x98 -#define R153 0x99 -#define R154 0x9A -#define R157 0x9D -#define R192 0xC0 -#define R193 0xC1 -#define R229 0xE5 - -/* LCD Control pins */ -#define CtrlPin_NCS GPIO_Pin_2 /* PB.02 */ - -/* LCD color */ -#define White 0xFFFF -#define Black 0x0000 -#define Grey 0xF7DE -#define Blue 0x001F -#define Blue2 0x051F -#define Red 0xF800 -#define Magenta 0xF81F -#define Green 0x07E0 -#define Cyan 0x7FFF -#define Yellow 0xFFE0 - -#define Line0 0 -#define Line1 24 -#define Line2 48 -#define Line3 72 -#define Line4 96 -#define Line5 120 -#define Line6 144 -#define Line7 168 -#define Line8 192 -#define Line9 216 - -#define Horizontal 0x00 -#define Vertical 0x01 - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -/*----- High layer function -----*/ -void LCD_Setup(void); -void STM3210D_LCD_Init(void); -void LCD_SetTextColor(vu16 Color); -void LCD_SetBackColor(vu16 Color); -void LCD_ClearLine(u8 Line); -void LCD_Clear(u16 Color); -void LCD_SetCursor(u8 Xpos, u16 Ypos); -void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c); -void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii); -void LCD_DisplayStringLine(u8 Line, u8 *ptr); -void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width); -void LCD_WindowModeDisable(void); -void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction); -void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width); -void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius); -void LCD_DrawMonoPict(uc32 *Pict); -//void LCD_DrawBMP(u32 BmpAddress); -void LCD_DrawBMP(uc16 *BmpAddress); -/*----- Medium layer function -----*/ -void LCD_nCS_StartByte(u8 Start_Byte); -void LCD_WriteRegIndex(u8 LCD_Reg); -void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue); -void LCD_WriteRAM_Prepare(void); -void LCD_WriteRAMWord(u16 RGB_Code); -u16 LCD_ReadReg(u8 LCD_Reg); -void LCD_WriteRAM(u16 RGB_Code); -void LCD_PowerOn(void); -void LCD_DisplayOn(void); -void LCD_DisplayOff(void); - -/*----- Low layer function -----*/ -void LCD_CtrlLinesConfig(void); -void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u16 CtrlPins, BitAction BitVal); -void LCD_SPIConfig(void); - -#endif /* __LCD_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h deleted file mode 100644 index 3aa1296c1..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h +++ /dev/null @@ -1,415 +0,0 @@ -/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** -* File Name : fonts.h -* Author : MCD Application Team -* Version : V1.1 -* Date : 11/26/2007 -* Description : This file contains all the LCD fonts size definition. -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __FONTS_H -#define __FONTS_H - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x_lib.h" - -/* Exported types ------------------------------------------------------------*/ - /* ASCII Table: each character is 16 column (16dots large) - and 24 raw (24 dots high) */ - uc16 ASCII_Table[] = - { - /* Space ' ' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '!' */ - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '"' */ - 0x0000, 0x0000, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '#' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C60, 0x0C60, - 0x0C60, 0x0630, 0x0630, 0x1FFE, 0x1FFE, 0x0630, 0x0738, 0x0318, - 0x1FFE, 0x1FFE, 0x0318, 0x0318, 0x018C, 0x018C, 0x018C, 0x0000, - /* '$' */ - 0x0000, 0x0080, 0x03E0, 0x0FF8, 0x0E9C, 0x1C8C, 0x188C, 0x008C, - 0x0098, 0x01F8, 0x07E0, 0x0E80, 0x1C80, 0x188C, 0x188C, 0x189C, - 0x0CB8, 0x0FF0, 0x03E0, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, - /* '%' */ - 0x0000, 0x0000, 0x0000, 0x180E, 0x0C1B, 0x0C11, 0x0611, 0x0611, - 0x0311, 0x0311, 0x019B, 0x018E, 0x38C0, 0x6CC0, 0x4460, 0x4460, - 0x4430, 0x4430, 0x4418, 0x6C18, 0x380C, 0x0000, 0x0000, 0x0000, - /* '&' */ - 0x0000, 0x01E0, 0x03F0, 0x0738, 0x0618, 0x0618, 0x0330, 0x01F0, - 0x00F0, 0x00F8, 0x319C, 0x330E, 0x1E06, 0x1C06, 0x1C06, 0x3F06, - 0x73FC, 0x21F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ''' */ - 0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '(' */ - 0x0000, 0x0200, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0200, 0x0000, - /* ')' */ - 0x0000, 0x0020, 0x0060, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0020, 0x0000, - /* '*' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, - 0x06D8, 0x07F8, 0x01E0, 0x0330, 0x0738, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '+' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x3FFC, 0x3FFC, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ',' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, - /* '-' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x07E0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '.' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '/' */ - 0x0000, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300, - 0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x00C0, - 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '0' */ - 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x180C, 0x180C, 0x180C, - 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C18, 0x0E38, - 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '1' */ - 0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '2' */ - 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x1800, - 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, - 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '3' */ - 0x0000, 0x01E0, 0x07F8, 0x0E18, 0x0C0C, 0x0C0C, 0x0C00, 0x0600, - 0x03C0, 0x07C0, 0x0C00, 0x1800, 0x1800, 0x180C, 0x180C, 0x0C18, - 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '4' */ - 0x0000, 0x0C00, 0x0E00, 0x0F00, 0x0F00, 0x0D80, 0x0CC0, 0x0C60, - 0x0C60, 0x0C30, 0x0C18, 0x0C0C, 0x3FFC, 0x3FFC, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '5' */ - 0x0000, 0x0FF8, 0x0FF8, 0x0018, 0x0018, 0x000C, 0x03EC, 0x07FC, - 0x0E1C, 0x1C00, 0x1800, 0x1800, 0x1800, 0x180C, 0x0C1C, 0x0E18, - 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '6' */ - 0x0000, 0x07C0, 0x0FF0, 0x1C38, 0x1818, 0x0018, 0x000C, 0x03CC, - 0x0FEC, 0x0E3C, 0x1C1C, 0x180C, 0x180C, 0x180C, 0x1C18, 0x0E38, - 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '7' */ - 0x0000, 0x1FFC, 0x1FFC, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0380, - 0x0180, 0x01C0, 0x00C0, 0x00E0, 0x0060, 0x0060, 0x0070, 0x0030, - 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '8' */ - 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x0C18, 0x0C18, 0x0638, - 0x07F0, 0x07F0, 0x0C18, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C38, - 0x0FF8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '9' */ - 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C1C, 0x180C, 0x180C, 0x180C, - 0x1C1C, 0x1E38, 0x1BF8, 0x19E0, 0x1800, 0x0C00, 0x0C00, 0x0E1C, - 0x07F8, 0x01F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ':' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ';' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, 0x0000, - /* '<' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1000, 0x1C00, 0x0F80, 0x03E0, 0x00F8, 0x0018, 0x00F8, 0x03E0, - 0x0F80, 0x1C00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '=' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FF8, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '>' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, 0x0038, 0x01F0, 0x07C0, 0x1F00, 0x1800, 0x1F00, 0x07C0, - 0x01F0, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '?' */ - 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x0C00, - 0x0600, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x0000, 0x0000, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '@' */ - 0x0000, 0x0000, 0x07E0, 0x1818, 0x2004, 0x29C2, 0x4A22, 0x4411, - 0x4409, 0x4409, 0x4409, 0x2209, 0x1311, 0x0CE2, 0x4002, 0x2004, - 0x1818, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'A' */ - 0x0000, 0x0380, 0x0380, 0x06C0, 0x06C0, 0x06C0, 0x0C60, 0x0C60, - 0x1830, 0x1830, 0x1830, 0x3FF8, 0x3FF8, 0x701C, 0x600C, 0x600C, - 0xC006, 0xC006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'B' */ - 0x0000, 0x03FC, 0x0FFC, 0x0C0C, 0x180C, 0x180C, 0x180C, 0x0C0C, - 0x07FC, 0x0FFC, 0x180C, 0x300C, 0x300C, 0x300C, 0x300C, 0x180C, - 0x1FFC, 0x07FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'C' */ - 0x0000, 0x07C0, 0x1FF0, 0x3838, 0x301C, 0x700C, 0x6006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x6006, 0x700C, 0x301C, - 0x1FF0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'D' */ - 0x0000, 0x03FE, 0x0FFE, 0x0E06, 0x1806, 0x1806, 0x3006, 0x3006, - 0x3006, 0x3006, 0x3006, 0x3006, 0x3006, 0x1806, 0x1806, 0x0E06, - 0x0FFE, 0x03FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'E' */ - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x1FFC, 0x1FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'F' */ - 0x0000, 0x3FF8, 0x3FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'G' */ - 0x0000, 0x0FE0, 0x3FF8, 0x783C, 0x600E, 0xE006, 0xC007, 0x0003, - 0x0003, 0xFE03, 0xFE03, 0xC003, 0xC007, 0xC006, 0xC00E, 0xF03C, - 0x3FF8, 0x0FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'H' */ - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'I' */ - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'J' */ - 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0618, 0x0618, 0x0738, - 0x03F0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'K' */ - 0x0000, 0x3006, 0x1806, 0x0C06, 0x0606, 0x0306, 0x0186, 0x00C6, - 0x0066, 0x0076, 0x00DE, 0x018E, 0x0306, 0x0606, 0x0C06, 0x1806, - 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'L' */ - 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'M' */ - 0x0000, 0xE00E, 0xF01E, 0xF01E, 0xF01E, 0xD836, 0xD836, 0xD836, - 0xD836, 0xCC66, 0xCC66, 0xCC66, 0xC6C6, 0xC6C6, 0xC6C6, 0xC6C6, - 0xC386, 0xC386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'N' */ - 0x0000, 0x300C, 0x301C, 0x303C, 0x303C, 0x306C, 0x306C, 0x30CC, - 0x30CC, 0x318C, 0x330C, 0x330C, 0x360C, 0x360C, 0x3C0C, 0x3C0C, - 0x380C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'O' */ - 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xC003, 0xC003, - 0xC003, 0xC003, 0xC003, 0xC003, 0xC003, 0x6006, 0x700E, 0x381C, - 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'P' */ - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x180C, 0x1FFC, 0x07FC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'Q' */ - 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xE003, 0xC003, - 0xC003, 0xC003, 0xC003, 0xC003, 0xE007, 0x6306, 0x3F0E, 0x3C1C, - 0x3FF8, 0xF7E0, 0xC000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'R' */ - 0x0000, 0x0FFE, 0x1FFE, 0x3806, 0x3006, 0x3006, 0x3006, 0x3806, - 0x1FFE, 0x07FE, 0x0306, 0x0606, 0x0C06, 0x1806, 0x1806, 0x3006, - 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'S' */ - 0x0000, 0x03E0, 0x0FF8, 0x0C1C, 0x180C, 0x180C, 0x000C, 0x001C, - 0x03F8, 0x0FE0, 0x1E00, 0x3800, 0x3006, 0x3006, 0x300E, 0x1C1C, - 0x0FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'T' */ - 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'U' */ - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x1818, - 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'V' */ - 0x0000, 0x6003, 0x3006, 0x3006, 0x3006, 0x180C, 0x180C, 0x180C, - 0x0C18, 0x0C18, 0x0E38, 0x0630, 0x0630, 0x0770, 0x0360, 0x0360, - 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'W' */ - 0x0000, 0x6003, 0x61C3, 0x61C3, 0x61C3, 0x3366, 0x3366, 0x3366, - 0x3366, 0x3366, 0x3366, 0x1B6C, 0x1B6C, 0x1B6C, 0x1A2C, 0x1E3C, - 0x0E38, 0x0E38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'X' */ - 0x0000, 0xE00F, 0x700C, 0x3018, 0x1830, 0x0C70, 0x0E60, 0x07C0, - 0x0380, 0x0380, 0x03C0, 0x06E0, 0x0C70, 0x1C30, 0x1818, 0x300C, - 0x600E, 0xE007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'Y' */ - 0x0000, 0xC003, 0x6006, 0x300C, 0x381C, 0x1838, 0x0C30, 0x0660, - 0x07E0, 0x03C0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'Z' */ - 0x0000, 0x7FFC, 0x7FFC, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600, - 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, 0x000C, 0x0006, - 0x7FFE, 0x7FFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '[' */ - 0x0000, 0x03E0, 0x03E0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x03E0, 0x03E0, 0x0000, - /* '\' */ - 0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x00C0, 0x00C0, - 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0300, - 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ']' */ - 0x0000, 0x03E0, 0x03E0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x03E0, 0x03E0, 0x0000, - /* '^' */ - 0x0000, 0x0000, 0x01C0, 0x01C0, 0x0360, 0x0360, 0x0360, 0x0630, - 0x0630, 0x0C18, 0x0C18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '_' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ''' */ - 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'a' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x07F8, - 0x0C1C, 0x0C0C, 0x0F00, 0x0FF0, 0x0CF8, 0x0C0C, 0x0C0C, 0x0F1C, - 0x0FF8, 0x18F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'b' */ - 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x03D8, 0x0FF8, - 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38, - 0x0FF8, 0x03D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'c' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07F0, - 0x0E30, 0x0C18, 0x0018, 0x0018, 0x0018, 0x0018, 0x0C18, 0x0E30, - 0x07F0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'd' */ - 0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1BC0, 0x1FF0, - 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30, - 0x1FF0, 0x1BC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'e' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0, - 0x0C30, 0x1818, 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x1838, 0x1C30, - 0x0FF0, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'f' */ - 0x0000, 0x0F80, 0x0FC0, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'g' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0DE0, 0x0FF8, - 0x0E18, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0E18, - 0x0FF8, 0x0DE0, 0x0C00, 0x0C0C, 0x061C, 0x07F8, 0x01F0, 0x0000, - /* 'h' */ - 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x07D8, 0x0FF8, - 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'i' */ - 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'j' */ - 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00F8, 0x0078, 0x0000, - /* 'k' */ - 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0C0C, 0x060C, - 0x030C, 0x018C, 0x00CC, 0x006C, 0x00FC, 0x019C, 0x038C, 0x030C, - 0x060C, 0x0C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'l' */ - 0x0000, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'm' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3C7C, 0x7EFF, - 0xE3C7, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, - 0xC183, 0xC183, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'n' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0798, 0x0FF8, - 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'o' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0, - 0x0C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C30, - 0x0FF0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'p' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D8, 0x0FF8, - 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38, - 0x0FF8, 0x03D8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0000, - /* 'q' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1BC0, 0x1FF0, - 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30, - 0x1FF0, 0x1BC0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, - /* 'r' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07B0, 0x03F0, - 0x0070, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 's' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03E0, 0x03F0, - 0x0E38, 0x0C18, 0x0038, 0x03F0, 0x07C0, 0x0C00, 0x0C18, 0x0E38, - 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 't' */ - 0x0000, 0x0000, 0x0080, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x07C0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'u' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, - 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38, - 0x1FF0, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'v' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180C, 0x0C18, - 0x0C18, 0x0C18, 0x0630, 0x0630, 0x0630, 0x0360, 0x0360, 0x0360, - 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'w' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0x41C1, - 0x61C3, 0x6363, 0x6363, 0x6363, 0x3636, 0x3636, 0x3636, 0x1C1C, - 0x1C1C, 0x1C1C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'x' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x381C, 0x1C38, - 0x0C30, 0x0660, 0x0360, 0x0360, 0x0360, 0x0360, 0x0660, 0x0C30, - 0x1C38, 0x381C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'y' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3018, 0x1830, - 0x1830, 0x1870, 0x0C60, 0x0C60, 0x0CE0, 0x06C0, 0x06C0, 0x0380, - 0x0380, 0x0380, 0x0180, 0x0180, 0x01C0, 0x00F0, 0x0070, 0x0000, - /* 'z' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFC, 0x1FFC, - 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, - 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '{' */ - 0x0000, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x0060, 0x0060, 0x0030, 0x0060, 0x0040, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0000, 0x0000, - /* '|' */ - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, - /* '}' */ - 0x0000, 0x0060, 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0300, 0x0300, 0x0600, 0x0300, 0x0100, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0000, 0x0000, - /* '~' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x10F0, 0x1FF8, 0x0F08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - }; -/* Exported constants --------------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -#endif /* __FONTS_H */ - -/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c deleted file mode 100644 index c36d1b961..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c +++ /dev/null @@ -1,972 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : lcd.c -* Author : MCD Application Team -* Version : VX.Y.Z -* Date : mm/dd/yyyy -* Description : This file includes the LCD driver for AM-240320L8TNQW00H -* (LCD_ILI9320) Liquid Crystal Display Module of STM3210D-EVAL -* board. -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "FreeRTOS.h" -#include "task.h" - -#include -#include -#include -#include -#include - -#include -#include - -#include "STM3210D_lcd.h" -#include "fonts.h" - -extern void timerDly(unsigned int); - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define START_BYTE 0x70 -#define SET_INDEX 0x00 -#define READ_STATUS 0x01 -#define LCD_WRITE_REG 0x02 -#define LCD_READ_REG 0x03 - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ - /* Global variables to set the written text color */ -static vu16 TextColor = 0x0000, BackColor = 0xFFFF; - -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -#define timerDly( x ) vTaskDelay( ( x * 10 ) / portTICK_PERIOD_MS ); -#define vBlockToWait( x ) - -/******************************************************************************* -* Function Name : LCD_Setup -* Description : Setups the LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Setup(void) -{ -/* Configure the LCD Control pins --------------------------------------------*/ - LCD_CtrlLinesConfig(); - -/* Configure the SPI3 interface ----------------------------------------------*/ - LCD_SPIConfig(); - - timerDly(5); /* Delay 50 ms */ - /* Start Initial Sequence ------------------------------------------------*/ - LCD_WriteReg(R229, 0x8000); /* Set the internal vcore voltage */ - LCD_WriteReg(R0, 0x0001); /* Start internal OSC. */ - LCD_WriteReg(R1, 0x0100); /* set SS and SM bit */ - LCD_WriteReg(R2, 0x0700); /* set 1 line inversion */ - LCD_WriteReg(R3, 0x1030); /* set GRAM write direction and BGR=1. */ - LCD_WriteReg(R4, 0x0000); /* Resize register */ - LCD_WriteReg(R8, 0x0202); /* set the back porch and front porch */ - LCD_WriteReg(R9, 0x0000); /* set non-display area refresh cycle ISC[3:0] */ - LCD_WriteReg(R10, 0x0000); /* FMARK function */ - LCD_WriteReg(R12, 0x0000); /* RGB interface setting */ - LCD_WriteReg(R13, 0x0000); /* Frame marker Position */ - LCD_WriteReg(R15, 0x0000); /* RGB interface polarity */ - - /* Power On sequence -----------------------------------------------------*/ - LCD_WriteReg(R16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - LCD_WriteReg(R18, 0x0000); /* VREG1OUT voltage */ - LCD_WriteReg(R19, 0x0000); /* VDV[4:0] for VCOM amplitude */ - timerDly(20); /* Dis-charge capacitor power voltage (200ms) */ - LCD_WriteReg(R16, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0137); /* DC1[2:0], DC0[2:0], VC[2:0] */ - timerDly(5); /* Delay 50 ms */ - LCD_WriteReg(R18, 0x0139); /* VREG1OUT voltage */ - timerDly(5); /* Delay 50 ms */ - LCD_WriteReg(R19, 0x1d00); /* VDV[4:0] for VCOM amplitude */ - LCD_WriteReg(R41, 0x0013); /* VCM[4:0] for VCOMH */ - timerDly(5); /* Delay 50 ms */ - LCD_WriteReg(R32, 0x0000); /* GRAM horizontal Address */ - LCD_WriteReg(R33, 0x0000); /* GRAM Vertical Address */ - - /* Adjust the Gamma Curve ------------------------------------------------*/ - LCD_WriteReg(R48, 0x0006); - LCD_WriteReg(R49, 0x0101); - LCD_WriteReg(R50, 0x0003); - LCD_WriteReg(R53, 0x0106); - LCD_WriteReg(R54, 0x0b02); - LCD_WriteReg(R55, 0x0302); - LCD_WriteReg(R56, 0x0707); - LCD_WriteReg(R57, 0x0007); - LCD_WriteReg(R60, 0x0600); - LCD_WriteReg(R61, 0x020b); - - /* Set GRAM area ---------------------------------------------------------*/ - LCD_WriteReg(R80, 0x0000); /* Horizontal GRAM Start Address */ - LCD_WriteReg(R81, 0x00EF); /* Horizontal GRAM End Address */ - LCD_WriteReg(R82, 0x0000); /* Vertical GRAM Start Address */ - LCD_WriteReg(R83, 0x013F); /* Vertical GRAM End Address */ - - LCD_WriteReg(R96, 0x2700); /* Gate Scan Line */ - LCD_WriteReg(R97, 0x0001); /* NDL,VLE, REV */ - LCD_WriteReg(R106, 0x0000); /* set scrolling line */ - - /* Partial Display Control -----------------------------------------------*/ - LCD_WriteReg(R128, 0x0000); - LCD_WriteReg(R129, 0x0000); - LCD_WriteReg(R130, 0x0000); - LCD_WriteReg(R131, 0x0000); - LCD_WriteReg(R132, 0x0000); - LCD_WriteReg(R133, 0x0000); - - /* Panel Control ---------------------------------------------------------*/ - LCD_WriteReg(R144, 0x0010); - LCD_WriteReg(R146, 0x0000); - LCD_WriteReg(R147, 0x0003); - LCD_WriteReg(R149, 0x0110); - LCD_WriteReg(R151, 0x0000); - LCD_WriteReg(R152, 0x0000); - - /* Set GRAM write direction and BGR = 1 */ - /* I/D=01 (Horizontal : increment, Vertical : decrement) */ - /* AM=1 (address is updated in vertical writing direction) */ - LCD_WriteReg(R3, 0x1018); - - LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ -} - -/******************************************************************************* -* Function Name : STM3210D_LCD_Init -* Description : Initializes the LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void STM3210D_LCD_Init(void) -{ - /* Setups the LCD */ - LCD_Setup(); -} - -/******************************************************************************* -* Function Name : LCD_SetTextColor -* Description : Sets the Text color. -* Input : - Color: specifies the Text color code RGB(5-6-5). -* Output : - TextColor: Text color global variable used by LCD_DrawChar -* and LCD_DrawPicture functions. -* Return : None -*******************************************************************************/ -void LCD_SetTextColor(vu16 Color) -{ - TextColor = Color; -} - -/******************************************************************************* -* Function Name : LCD_SetBackColor -* Description : Sets the Background color. -* Input : - Color: specifies the Background color code RGB(5-6-5). -* Output : - BackColor: Background color global variable used by -* LCD_DrawChar and LCD_DrawPicture functions. -* Return : None -*******************************************************************************/ -void LCD_SetBackColor(vu16 Color) -{ - BackColor = Color; -} - -/******************************************************************************* -* Function Name : LCD_ClearLine -* Description : Clears the selected line. -* Input : - Line: the Line to be cleared. -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* Output : None -* Return : None -*******************************************************************************/ -void LCD_ClearLine(u8 Line) -{ - LCD_DisplayStringLine(Line, ( unsigned char * ) " "); -} - -/******************************************************************************* -* Function Name : LCD_Clear -* Description : Clears the hole LCD. -* Input : Color: the color of the background. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Clear(u16 Color) -{ - vu32 index = 0; - - LCD_SetCursor(0x00, 0x013F); - - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(index = 0; index < 76800; index++) - { - LCD_WriteRAM(Color); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - -} - -/******************************************************************************* -* Function Name : LCD_SetCursor -* Description : Sets the cursor position. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetCursor(u8 Xpos, u16 Ypos) -{ - LCD_WriteReg(R32, Xpos); - LCD_WriteReg(R33, Ypos); -} - -/******************************************************************************* -* Function Name : LCD_DrawChar -* Description : Draws a character on LCD. -* Input : - Xpos: the Line where to display the character shape. -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* - Ypos: start column address. -* - c: pointer to the character data. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c) -{ - vu32 index = 0, i = 0; - vu8 Xaddress = 0; - - Xaddress = Xpos; - - LCD_SetCursor(Xaddress, Ypos); - - for(index = 0; index < 24; index++) - { - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(i = 0; i < 16; i++) - { - if((c[index] & (1 << i)) == 0x00) - { - LCD_WriteRAM(BackColor); - } - else - { - LCD_WriteRAM(TextColor); - } - } - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - Xaddress++; - LCD_SetCursor(Xaddress, Ypos); - } -} - -/******************************************************************************* -* Function Name : LCD_DisplayChar -* Description : Displays one character (16dots width, 24dots height). -* Input : - Line: the Line where to display the character shape . -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* - Column: start column address. -* - Ascii: character ascii code, must be between 0x20 and 0x7E. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii) -{ - Ascii -= 32; - LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]); -} - -/******************************************************************************* -* Function Name : LCD_DisplayStringLine -* Description : Displays a maximum of 20 char on the LCD. -* Input : - Line: the Line where to display the character shape . -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* - *ptr: pointer to string to display on LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayStringLine(u8 Line, u8 *ptr) -{ - vu32 i = 0; - vu16 refcolumn = 319; - - /* Send the string character by character on lCD */ - while ((*ptr != 0) & (i < 20)) - { - /* Display one character on LCD */ - LCD_DisplayChar(Line, refcolumn, *ptr); - /* Decrement the column position by 16 */ - refcolumn -= 16; - /* Point on the next character */ - ptr++; - /* Increment the character counter */ - i++; - } -} - -/******************************************************************************* -* Function Name : LCD_SetDisplayWindow -* Description : Sets a display window -* Input : - Xpos: specifies the X buttom left position. -* - Ypos: specifies the Y buttom left position. -* - Height: display window height. -* - Width: display window width. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width) -{ - /* Horizontal GRAM Start Address */ - if(Xpos >= Height) - { - LCD_WriteReg(R80, (Xpos - Height + 1)); - } - else - { - LCD_WriteReg(R80, 0); - } - /* Horizontal GRAM End Address */ - LCD_WriteReg(R81, Xpos); - /* Vertical GRAM Start Address */ - if(Ypos >= Width) - { - LCD_WriteReg(R82, (Ypos - Width + 1)); - } - else - { - LCD_WriteReg(R82, 0); - } - /* Vertical GRAM End Address */ - LCD_WriteReg(R83, Ypos); - LCD_SetCursor(Xpos, Ypos); -} - -/******************************************************************************* -* Function Name : LCD_WindowModeDisable -* Description : Disables LCD Window mode. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WindowModeDisable(void) -{ - LCD_SetDisplayWindow(239, 0x13F, 240, 320); - LCD_WriteReg(R3, 0x1018); -} -/******************************************************************************* -* Function Name : LCD_DrawLine -* Description : Displays a line. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* - Length: line length. -* - Direction: line direction. -* This parameter can be one of the following values: Vertical -* or Horizontal. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction) -{ - u32 i = 0; - - LCD_SetCursor(Xpos, Ypos); - - if(Direction == Horizontal) - { - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(i = 0; i < Length; i++) - { - LCD_WriteRAM(TextColor); - } - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - } - else - { - for(i = 0; i < Length; i++) - { - LCD_WriteRAMWord(TextColor); - Xpos++; - LCD_SetCursor(Xpos, Ypos); - } - } -} - -/******************************************************************************* -* Function Name : LCD_DrawRect -* Description : Displays a rectangle. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* - Height: display rectangle height. -* - Width: display rectangle width. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width) -{ - LCD_DrawLine(Xpos, Ypos, Width, Horizontal); - LCD_DrawLine((Xpos + Height), Ypos, Width, Horizontal); - - LCD_DrawLine(Xpos, Ypos, Height, Vertical); - LCD_DrawLine(Xpos, (Ypos - Width + 1), Height, Vertical); -} - -/******************************************************************************* -* Function Name : LCD_DrawCircle -* Description : Displays a circle. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* - Height: display rectangle height. -* - Width: display rectangle width. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius) -{ - s32 D;/* Decision Variable */ - u32 CurX;/* Current X Value */ - u32 CurY;/* Current Y Value */ - - D = 3 - (Radius << 1); - CurX = 0; - CurY = Radius; - - while (CurX <= CurY) - { - LCD_SetCursor(Xpos + CurX, Ypos + CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos + CurX, Ypos - CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurX, Ypos + CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurX, Ypos - CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos + CurY, Ypos + CurX); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos + CurY, Ypos - CurX); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurY, Ypos + CurX); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurY, Ypos - CurX); - LCD_WriteRAMWord(TextColor); - - if (D < 0) - { - D += (CurX << 2) + 6; - } - else - { - D += ((CurX - CurY) << 2) + 10; - CurY--; - } - CurX++; - } -} - -/******************************************************************************* -* Function Name : LCD_DrawMonoPict -* Description : Displays a monocolor picture. -* Input : - Pict: pointer to the picture array. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawMonoPict(uc32 *Pict) -{ - u32 index = 0, i = 0; - - LCD_SetCursor(0, 319); - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(index = 0; index < 2400; index++) - { - for(i = 0; i < 32; i++) - { - if((Pict[index] & (1 << i)) == 0x00) - { - LCD_WriteRAM(BackColor); - } - else - { - LCD_WriteRAM(TextColor); - } - } - } - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - -} - -///******************************************************************************* -//* Function Name : LCD_DrawBMP -//* Description : Displays a bitmap picture loaded in the SPI Flash. -//* Input : - BmpAddress: Bmp picture address in the SPI Flash. -//* Output : None -//* Return : None -//*******************************************************************************/ -//void LCD_DrawBMP(u32 BmpAddress) -//{ -// u32 i = 0, size = 0; -// -// /* Read bitmap size */ -// SPI_FLASH_BufferRead((u8*)&size, BmpAddress + 2, 4); -// -// /* get bitmap data address offset */ -// SPI_FLASH_BufferRead((u8*)&i, BmpAddress + 10, 4); -// -// size = (size - i)/2; -// -// SPI_FLASH_StartReadSequence(BmpAddress + i); -// -// /* Disable SPI1 */ -// SPI_Cmd(SPI1, DISABLE); -// /* SPI in 16-bit mode */ -// SPI_DataSizeConfig(SPI1, SPI_DataSize_16b); -// -// /* Enable SPI1 */ -// SPI_Cmd(SPI1, ENABLE); -// -// /* Set GRAM write direction and BGR = 1 */ -// /* I/D=00 (Horizontal : decrement, Vertical : decrement) */ -// /* AM=1 (address is updated in vertical writing direction) */ -// LCD_WriteReg(R3, 0x1008); -// -// LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ -// -// /* Read bitmap data from SPI Flash and send them to LCD */ -// for(i = 0; i < size; i++) -// { -// LCD_WriteRAM(__REV_HalfWord(SPI_FLASH_SendHalfWord(0xA5A5))); -// } -// -// LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -// -// /* Deselect the FLASH: Chip Select high */ -// SPI_FLASH_CS_HIGH(); -// -// /* Disable SPI1 */ -// SPI_Cmd(SPI1, DISABLE); -// /* SPI in 8-bit mode */ -// SPI_DataSizeConfig(SPI1, SPI_DataSize_8b); -// -// /* Enable SPI1 */ -// SPI_Cmd(SPI1, ENABLE); -// -// /* Set GRAM write direction and BGR = 1 */ -// /* I/D = 01 (Horizontal : increment, Vertical : decrement) */ -// /* AM = 1 (address is updated in vertical writing direction) */ -// LCD_WriteReg(R3, 0x1018); -//} - -/******************************************************************************* -* Function Name : LCD_DrawBMP -* Description : Displays a bitmap picture loaded in the SPI Flash. -* Input : - BmpAddress: Bmp picture address in the SPI Flash. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawBMP(uc16 *BmpAddress) -{ - u32 i = 0, size = 0; - - /* Read bitmap size */ - size = BmpAddress[1] | (BmpAddress[2] << 16); - - /* get bitmap data address offset */ - i = BmpAddress[5] | (BmpAddress[6] << 16); - - size = (size - i)/2; - - BmpAddress += i/2; - /* Set GRAM write direction and BGR = 1 */ - /* I/D=00 (Horizontal : decrement, Vertical : decrement) */ - /* AM=1 (address is updated in vertical writing direction) */ - LCD_WriteReg(R3, 0x1008); - - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - /* Read bitmap data from SPI Flash and send them to LCD */ - for(i = 0; i < size; i++) - { - LCD_WriteRAM(BmpAddress[i]); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - - /* Set GRAM write direction and BGR = 1 */ - /* I/D = 01 (Horizontal : increment, Vertical : decrement) */ - /* AM = 1 (address is updated in vertical writing direction) */ - LCD_WriteReg(R3, 0x1018); -} - -/******************************************************************************* -* Function Name : LCD_nCS_StartByte -* Description : Reset LCD control line(/CS) and Send Start-Byte -* Input : - Start_Byte: the Start-Byte to be sent -* Output : None -* Return : None -*******************************************************************************/ -void LCD_nCS_StartByte(u8 Start_Byte) -{ - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_RESET); - - SPI_I2S_SendData(SPI3, Start_Byte); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } -} - -/******************************************************************************* -* Function Name : LCD_WriteRegIndex -* Description : Writes index to select the LCD register. -* Input : - LCD_Reg: address of the selected register. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRegIndex(u8 LCD_Reg) -{ - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | SET_INDEX); - - /* Write 16-bit Reg Index (High Byte is 0) */ - SPI_I2S_SendData(SPI3, 0x00); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_SendData(SPI3, LCD_Reg); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -} - -/******************************************************************************* -* Function Name : LCD_ReadReg -* Description : Reads the selected LCD Register. -* Input : None -* Output : None -* Return : LCD Register Value. -*******************************************************************************/ -u16 LCD_ReadReg(u8 LCD_Reg) -{ - vu16 tmp = 0; - vu8 i = 0; - - /* SPI3 prescaler: 4 */ - SPI3->CR1 &= 0xFFC7; - SPI3->CR1 |= 0x0008; - - /* Write 16-bit Index (then Read Reg) */ - LCD_WriteRegIndex(LCD_Reg); - - /* Read 16-bit Reg */ - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | LCD_READ_REG); - - for(i = 0; i < 5; i++) - { - SPI_I2S_SendData(SPI3, 0xFF); - - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - /* One byte of invalid dummy data read after the start byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_ReceiveData(SPI3); - } - - SPI_I2S_SendData(SPI3, 0xFF); - /* Read upper byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - /* Read lower byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) - { - vBlockToWait( 1 ); - } - tmp = SPI_I2S_ReceiveData(SPI3); - - - SPI_I2S_SendData(SPI3, 0xFF); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - /* Read lower byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) - { - vBlockToWait( 1 ); - } - tmp = ((tmp & 0xFF) << 8) | SPI_I2S_ReceiveData(SPI3); - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - - /* SPI3 prescaler: 2 */ - SPI3->CR1 &= 0xFFC7; - - return tmp; -} - -/******************************************************************************* -* Function Name : LCD_WriteRAM_Prepare -* Description : Prepare to write to the LCD RAM. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRAM_Prepare(void) -{ - LCD_WriteRegIndex(R34); /* Select GRAM Reg */ - - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | LCD_WRITE_REG); -} - -/******************************************************************************* -* Function Name : LCD_WriteRAMWord -* Description : Writes 1 word to the LCD RAM. -* Input : - RGB_Code: the pixel color in RGB mode (5-6-5). -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRAMWord(u16 RGB_Code) -{ - LCD_WriteRAM_Prepare(); - - LCD_WriteRAM(RGB_Code); - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -} - -/******************************************************************************* -* Function Name : LCD_WriteReg -* Description : Writes to the selected LCD register. -* Input : - LCD_Reg: address of the selected register. -* - LCD_RegValue: value to write to the selected register. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue) -{ - /* Write 16-bit Index (then Write Reg) */ - LCD_WriteRegIndex(LCD_Reg); - - /* Write 16-bit Reg */ - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | LCD_WRITE_REG); - - SPI_I2S_SendData(SPI3, LCD_RegValue>>8); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_SendData(SPI3, (LCD_RegValue & 0xFF)); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -} - - -/******************************************************************************* -* Function Name : LCD_WriteRAM -* Description : Writes to the LCD RAM. -* Input : - RGB_Code: the pixel color in RGB mode (5-6-5). -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRAM(u16 RGB_Code) -{ - SPI_I2S_SendData(SPI3, RGB_Code >> 8); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_SendData(SPI3, RGB_Code & 0xFF); - - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } -} - -/******************************************************************************* -* Function Name : LCD_PowerOn -* Description : Power on the LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_PowerOn(void) -{ - /* Power On sequence ---------------------------------------------------------*/ - LCD_WriteReg(R16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - LCD_WriteReg(R18, 0x0000); /* VREG1OUT voltage */ - LCD_WriteReg(R19, 0x0000); /* VDV[4:0] for VCOM amplitude */ - timerDly(20); /* Dis-charge capacitor power voltage (200ms) */ - LCD_WriteReg(R16, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0137); /* DC1[2:0], DC0[2:0], VC[2:0] */ - timerDly(5); /* delay 50 ms */ - LCD_WriteReg(R18, 0x0139); /* VREG1OUT voltage */ - timerDly(5); /* delay 50 ms */ - LCD_WriteReg(R19, 0x1d00); /* VDV[4:0] for VCOM amplitude */ - LCD_WriteReg(R41, 0x0013); /* VCM[4:0] for VCOMH */ - timerDly(5); /* delay 50 ms */ - LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ -} - -/******************************************************************************* -* Function Name : LCD_DisplayOn -* Description : Enables the Display. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayOn(void) -{ - /* Display On */ - LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ - -} - -/******************************************************************************* -* Function Name : LCD_DisplayOff -* Description : Disables the Display. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayOff(void) -{ - /* Display Off */ - LCD_WriteReg(R7, 0x0); -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesConfig -* Description : Configures LCD control lines in Output Push-Pull mode. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesConfig(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - - /* Configure NCS (PB.02) in Output Push-Pull mode */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_Init(GPIOB, &GPIO_InitStructure); - - /* Configure NWR(RNW), RS (PD.15, PD.07) in Output Push-Pull mode */ -// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_15; -// GPIO_Init(GPIOD, &GPIO_InitStructure); - -// LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_SET); -// LCD_CtrlLinesWrite(GPIOD, CtrlPin_RS, Bit_SET); -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesWrite -* Description : Sets or reset LCD control lines. -* Input : - GPIOx: where x can be B or D to select the GPIO peripheral. -* - CtrlPins: the Control line. This parameter can be: -* - CtrlPin_NCS: Chip Select pin (PB.02) -* - CtrlPin_NWR: Read/Write Selection pin (PD.15) -* - CtrlPin_RS: Register/RAM Selection pin (PD.07) -* - BitVal: specifies the value to be written to the selected bit. -* This parameter can be: -* - Bit_RESET: to clear the port pin -* - Bit_SET: to set the port pin -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u16 CtrlPins, BitAction BitVal) -{ - /* Set or Reset the control line */ - GPIO_WriteBit(GPIOx, CtrlPins, BitVal); -} - -/******************************************************************************* -* Function Name : LCD_SPIConfig -* Description : Configures the SPI3 interface. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SPIConfig(void) -{ - SPI_InitTypeDef SPI_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; - - /* Enable GPIOC clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); - - //GPIO_PinRemapConfig(GPIO_Remap_SPI3, ENABLE); - AFIO->MAPR |= GPIO_Remap_SPI3; - - /* Enable SPI3 clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); - - /* Configure SPI3 pins: SCK, MISO and MOSI */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOC, &GPIO_InitStructure); - - SPI_I2S_DeInit(SPI3); - - /* SPI3 Config */ - SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; - SPI_InitStructure.SPI_Mode = SPI_Mode_Master; - SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; - SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; - SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; - SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; - SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - SPI_Init(SPI3, &SPI_InitStructure); - - /* SPI3 enable */ - SPI_Cmd(SPI3, ENABLE); -} - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h deleted file mode 100644 index 1cda53f4c..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h +++ /dev/null @@ -1,502 +0,0 @@ -#ifndef LCD_MESSAGE_H -#define LCD_MESSAGE_H - -/* The structure passed to the LCD when there is text to display. */ -typedef struct -{ - long xColumn; - signed char *pcMessage; -} xLCDMessage; - -/* The bitmap displayed on the LCD when the LCD task starts. */ -const unsigned char pcBitmap[] = -{ -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0x01, 0xfc, 0x03, 0x9f, 0x3f, 0xfe, 0x0c, 0x80, 0x03, 0xf8, 0x01, 0x70, 0x80, 0xff, 0x0f, 0xf0, 0xf8, 0xc7, -0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x78, 0x00, 0xf8, 0xc0, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0x01, 0xf8, 0x01, 0x9e, 0x3f, 0xfe, 0x0c, 0x80, 0x03, 0xf0, 0x01, 0x70, 0x00, 0xfe, 0x0f, 0xe0, 0xf9, 0xe7, -0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x70, 0x00, 0x78, 0x80, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xf1, 0x78, 0x3c, 0x9f, 0x7c, 0xce, 0xff, 0xf3, 0xe3, 0xf9, 0x7f, 0x7e, 0xfc, 0xcf, 0xc7, 0xf3, 0xf3, -0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x73, 0xfe, 0x39, 0x9f, 0x7c, 0xce, 0xff, 0xf3, 0xe7, 0xf9, 0x7f, 0xfe, 0xfc, 0xcf, 0xcf, 0xe3, 0xf1, -0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xe7, 0xcf, 0x9f, 0x7f, 0x9e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x33, 0xfe, 0x31, 0x9f, 0x7c, 0xce, 0xff, 0xf3, 0xe7, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0xcf, 0xc7, 0xf8, -0x3f, 0xff, 0x13, 0x0f, 0xff, 0xf0, 0xf3, 0xe7, 0xcf, 0x8f, 0x7f, 0x9c, 0xff, 0xff, 0x87, 0x4f, 0x1c, 0xf2, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x33, 0xff, 0x33, 0x9e, 0x3d, 0xce, 0xff, 0xf3, 0xe3, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0xc7, 0xcf, 0xfc, -0x3f, 0xff, 0x03, 0x03, 0x3c, 0xc0, 0xf3, 0xe3, 0xcf, 0xcf, 0xff, 0x1c, 0xff, 0xff, 0x01, 0x0e, 0x0c, 0xf0, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x31, 0xff, 0x73, 0xce, 0x39, 0x0f, 0xc0, 0x03, 0xf0, 0x01, 0x78, 0xfe, 0xf9, 0x0f, 0xe0, 0x1f, 0xfe, -0x3f, 0x80, 0xe3, 0xf3, 0x3c, 0xcf, 0x03, 0xf0, 0xcf, 0xcf, 0xff, 0x3c, 0xf0, 0xff, 0x79, 0x8e, 0xcf, 0xf1, 0xff, 0xff, -0xff, 0xff, 0x01, 0x38, 0xff, 0x73, 0xce, 0x39, 0x0f, 0xc0, 0x03, 0xf8, 0x01, 0x78, 0xfe, 0xf9, 0x0f, 0xe0, 0x1f, 0xfe, -0x3f, 0x80, 0xf3, 0xf9, 0x99, 0x9f, 0x03, 0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0xc0, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0x01, 0x3c, 0xff, 0x73, 0xce, 0x39, 0xcf, 0xff, 0xf3, 0xfc, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0xcf, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, 0xfc, 0xcf, 0xcf, 0xff, 0xfc, 0x8f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x3f, 0xff, 0xf3, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xf8, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0x9f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, 0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x3f, 0xfe, 0xf1, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xf9, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0x9f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, 0xf9, 0xcf, 0x8f, 0x7f, 0xcc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x7f, 0xfe, 0xf9, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xf1, 0xf9, 0x7f, 0xfe, 0xfc, 0xcf, 0x9f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, 0xf1, 0xcf, 0x9f, 0x7f, 0x8e, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xff, 0x78, 0xfc, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xe3, 0xf9, 0x7f, 0x7e, 0xfc, 0xcf, 0x8f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0xf3, 0x38, 0x8f, 0xf3, 0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0x79, 0xce, 0xcf, 0xf1, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xff, 0x01, 0xfe, 0xf1, 0xc7, 0x0f, 0x80, 0xf3, 0xe7, 0x01, 0x70, 0x00, 0xfe, 0x0f, 0xc0, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x03, 0x3c, 0xc0, 0xf3, 0xe7, 0xcf, 0x7f, 0x80, 0x3f, 0x80, 0xe7, 0x01, 0xce, 0x0f, 0xf0, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xff, 0x03, 0xff, 0xf1, 0xc7, 0x0f, 0x80, 0xf3, 0xc7, 0x01, 0x70, 0x80, 0xff, 0x0f, 0xe0, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x0f, 0xfe, 0xe0, 0xf3, 0xc7, 0xcf, 0xff, 0xc0, 0x7f, 0xe0, 0xe7, 0x87, 0xcf, 0x1f, 0xf2, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf1, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, -0x78, 0x00, 0xf8, 0xc0, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, -0x70, 0x00, 0x78, 0x80, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, -0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, -0xe7, 0xcf, 0x9f, 0x7f, 0x9e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x3e, 0x7c, 0x1f, 0xbe, 0xcf, 0x3f, 0xff, 0x13, 0x0f, 0xff, 0xf0, 0xf3, -0xe7, 0xcf, 0x8f, 0x7f, 0x9c, 0xff, 0xff, 0x87, 0x4f, 0x1c, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x3c, 0x3c, 0x1e, 0x1e, 0xcf, 0x3f, 0xff, 0x03, 0x03, 0x3c, 0xc0, 0xf3, -0xe3, 0xcf, 0xcf, 0xff, 0x1c, 0xff, 0xff, 0x01, 0x0e, 0x0c, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xbc, 0x3d, 0xde, 0x1e, 0xef, 0x3f, 0x80, 0xe3, 0xf3, 0x3c, 0xcf, 0x03, -0xf0, 0xcf, 0xcf, 0xff, 0x3c, 0xf0, 0xff, 0x79, 0x8e, 0xcf, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0x9d, 0xb9, 0xce, 0x5c, 0xe7, 0x3f, 0x80, 0xf3, 0xf9, 0x99, 0x9f, 0x03, -0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0xc0, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x99, 0x99, 0xcc, 0x4c, 0xe6, 0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, -0xfc, 0xcf, 0xcf, 0xff, 0xfc, 0x8f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xc9, 0x93, 0xe4, 0x49, 0xf2, 0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, -0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xc9, 0x93, 0xe4, 0x49, 0xf2, 0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, -0xf9, 0xcf, 0x8f, 0x7f, 0xcc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xeb, 0xd7, 0xf5, 0xeb, 0xfa, 0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, -0xf1, 0xcf, 0x9f, 0x7f, 0x8e, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xc7, 0xf1, 0xe3, 0xf8, 0x3f, 0xff, 0xf3, 0xf3, 0x38, 0x8f, 0xf3, -0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0x79, 0xce, 0xcf, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xc7, 0xf1, 0xe3, 0xf8, 0x3c, 0xff, 0xf3, 0x03, 0x3c, 0xc0, 0xf3, -0xe7, 0xcf, 0x7f, 0x80, 0x3f, 0x80, 0xe7, 0x01, 0xce, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf3, 0xcf, 0xf9, 0xe7, 0xfc, 0x3c, 0xff, 0xf3, 0x0f, 0xfe, 0xe0, 0xf3, -0xc7, 0xcf, 0xff, 0xc0, 0x7f, 0xe0, 0xe7, 0x87, 0xcf, 0x1f, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0x3f, 0xfc, 0x7f, 0x00, -0x0f, 0x00, 0x1f, 0xf8, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0x1f, 0xfc, 0x7f, 0x00, -0x0e, 0x00, 0x0f, 0xf0, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xc7, 0xff, 0x9f, 0xff, 0x7f, 0x7e, -0xfc, 0xf9, 0xc7, 0xe3, 0xe3, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xcf, 0xff, 0x9f, 0xff, 0x7f, 0xfe, -0xfc, 0xf9, 0xf3, 0xcf, 0xf3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xdf, 0x87, 0xef, 0xc3, 0xf7, 0xf9, 0xe7, 0xff, 0x03, 0x07, 0x1e, 0x7e, 0xfe, -0xfc, 0xf9, 0xf1, 0x8f, 0xf3, 0xff, 0xff, 0xf0, 0x87, 0x4f, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x8f, 0x87, 0xc7, 0xc3, 0xe3, 0xf9, 0xc7, 0xff, 0x00, 0x06, 0x06, 0x78, 0x7e, -0xfc, 0xf9, 0xf9, 0x9f, 0xe3, 0xff, 0x3f, 0xe0, 0x01, 0x0e, 0x08, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x8f, 0xb7, 0xc7, 0xdb, 0xe3, 0xfd, 0x0f, 0xfc, 0x7c, 0x9e, 0xe7, 0x79, 0x00, -0xfe, 0xf9, 0xf9, 0x9f, 0x07, 0xfe, 0x3f, 0xc7, 0x79, 0x8e, 0xe3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xae, 0x33, 0xd7, 0x99, 0xeb, 0xfc, 0x3f, 0xf0, 0x7f, 0x9e, 0xf3, 0x73, 0x00, -0xff, 0xf9, 0xf9, 0x9f, 0x1f, 0xf8, 0x9f, 0xcf, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x26, 0x33, 0x93, 0x99, 0xc9, 0xfc, 0xff, 0xe3, 0x0f, 0x9e, 0x03, 0x70, 0x9e, -0xff, 0xf9, 0xf9, 0x9f, 0xff, 0xf1, 0x9f, 0xff, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x24, 0x79, 0x92, 0x3c, 0x49, 0xfe, 0xff, 0xcf, 0x01, 0x9e, 0x03, 0x70, 0x1e, -0xff, 0xf9, 0xf9, 0x9f, 0xff, 0xe7, 0x9f, 0xff, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x24, 0x79, 0x92, 0x3c, 0x49, 0xfe, 0xf3, 0xcf, 0x70, 0x9e, 0xf3, 0x7f, 0x3e, -0xff, 0xf9, 0xf1, 0x8f, 0xf9, 0xe7, 0x9f, 0xff, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x75, 0xfd, 0xba, 0x7e, 0x5d, 0xff, 0xe3, 0xcf, 0x7c, 0x9e, 0xf3, 0x7f, 0x3e, -0xfe, 0xf9, 0xf3, 0xcf, 0xf1, 0xe7, 0x9f, 0xcf, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x71, 0xfc, 0x38, 0x7e, 0x1c, 0xff, 0xc7, 0xc7, 0x3c, 0x9e, 0xe7, 0x71, 0x7e, -0xfc, 0xf9, 0xc7, 0xe3, 0xe3, 0xe3, 0x3f, 0xc7, 0x79, 0xce, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x71, 0xfc, 0x38, 0x7e, 0x1c, 0x9f, 0x0f, 0xe0, 0x00, 0x9e, 0x07, 0x78, 0xfe, -0xfc, 0xf9, 0x0f, 0xf0, 0x07, 0xf0, 0x3c, 0xe0, 0x01, 0xce, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xfe, 0x39, 0xff, 0x9c, 0x9f, 0x1f, 0xf8, 0xc1, 0x9c, 0x1f, 0x7c, 0xfe, -0xf8, 0xf9, 0x1f, 0xf8, 0x0f, 0xfc, 0x7c, 0xf0, 0x87, 0xcf, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x1f, 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, 0xf8, -0x03, 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, 0xe0, -0x03, 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, 0xe0, -0x01, 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, 0xc0, -0x01, 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, 0xc0, -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, 0x80, -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, 0x80, -0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, -0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x00, 0x30, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x78, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x78, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x10, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x8f, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x01, 0x70, 0xf8, 0x1f, 0x00, 0xc0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x70, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x78, 0x30, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x10, 0x30, 0xf0, 0x1f, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x0f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x0f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0xff, 0x07, 0x00, 0xfc, -0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x18, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x18, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x1f, 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, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x07, 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, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0x1f, 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, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, -0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, -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, 0x80, -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, 0x80, -0x01, 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, 0xc0, -0x03, 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, 0xe0, -0x03, 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, 0xe0, -0x0f, 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, 0xf8, -0x3f, 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, 0xfe, -0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf0, -0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xbe, -0x4d, 0x42, 0x00 -}; - - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c deleted file mode 100644 index e0e0a887c..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "partest.h" - -/* Standard includes. */ -#include - -/* Library includes. */ -#include "stm32f10x_lib.h" - -#define partstNUM_LEDs 4 - -/* Holds the current output state for each of the LEDs. */ -static unsigned char ucBitStates[ partstNUM_LEDs ]; - -/* Holds the port used by each of the LEDs. */ -static GPIO_TypeDef * uxIO_Port[ partstNUM_LEDs ]; - -/* Holds the pin used by each of the LEDs. */ -static const unsigned short uxIO_Pins[ partstNUM_LEDs ] = { GPIO_Pin_14, GPIO_Pin_13, GPIO_Pin_3, GPIO_Pin_4 }; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ -GPIO_InitTypeDef GPIO_InitStructure; - - /* Configure PE14, PD13, PD3 and PD4 output push-pull */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init( GPIOE, &GPIO_InitStructure ); - - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init( GPIOD, &GPIO_InitStructure ); - - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init( GPIOD, &GPIO_InitStructure ); - - memset( ucBitStates, 0x00, sizeof( ucBitStates ) ); - - uxIO_Port[ 0 ] = GPIOE; - uxIO_Port[ 1 ] = GPIOD; - uxIO_Port[ 2 ] = GPIOD; - uxIO_Port[ 3 ] = GPIOD; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstNUM_LEDs ) - { - portENTER_CRITICAL(); - { - if( xValue != pdFALSE ) - { - ucBitStates[ uxLED ] = pdTRUE; - } - else - { - ucBitStates[ uxLED ] = pdFALSE; - } - - GPIO_WriteBit( uxIO_Port[ uxLED ], uxIO_Pins[ uxLED ], ucBitStates[ uxLED ] ); - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDs ) - { - portENTER_CRITICAL(); - { - ucBitStates[ uxLED ] = !ucBitStates[ uxLED ]; - GPIO_WriteBit( uxIO_Port[ uxLED ], uxIO_Pins[ uxLED ], ucBitStates[ uxLED ] ); - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -portBASE_TYPE xGetLEDState( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDs ) - { - return ( portBASE_TYPE ) ucBitStates[ uxLED ]; - } - else - { - return 0; - } -} diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp deleted file mode 100644 index 38747f260..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs deleted file mode 100644 index 0371ad70c..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s deleted file mode 100644 index 8c2b0762a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s +++ /dev/null @@ -1,294 +0,0 @@ -;/*****************************************************************************/ -;/* STM32F10x.s: Startup file for ST STM32F10x device series */ -;/*****************************************************************************/ -;/* <<< Use Configuration Wizard in Context Menu >>> */ -;/*****************************************************************************/ -;/* This file is part of the uVision/ARM development tools. */ -;/* Copyright (c) 2005-2007 Keil Software. All rights reserved. */ -;/* This software may only be used under the terms of a valid, current, */ -;/* end user licence from KEIL for a compatible version of KEIL software */ -;/* development tools. Nothing else gives you the right to use this software. */ -;/*****************************************************************************/ - - -;// Stack Configuration -;// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -;// - -Stack_Size EQU 0x00000200 - - AREA STACK, NOINIT, READWRITE, ALIGN=3 -Stack_Mem SPACE Stack_Size -__initial_sp - - -;// Heap Configuration -;// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -;// - -Heap_Size EQU 0x00000000 - - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -Heap_Mem SPACE Heap_Size -__heap_limit - - IMPORT xPortPendSVHandler - IMPORT xPortSysTickHandler - IMPORT vPortSVCHandler - IMPORT vUARTInterruptHandler - IMPORT vTimer2IntHandler - - PRESERVE8 - THUMB - - -; Vector Table Mapped to Address 0 at Reset - - AREA RESET, DATA, READONLY - EXPORT __Vectors - -__Vectors DCD __initial_sp ; Top of Stack - DCD Reset_Handler ; Reset Handler - DCD NMI_Handler ; NMI Handler - DCD HardFault_Handler ; Hard Fault Handler - DCD MemManage_Handler ; MPU Fault Handler - DCD BusFault_Handler ; Bus Fault Handler - DCD UsageFault_Handler ; Usage Fault Handler - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD vPortSVCHandler ; SVCall Handler - DCD DebugMon_Handler ; Debug Monitor Handler - DCD 0 ; Reserved - DCD xPortPendSVHandler ; PendSV Handler - DCD xPortSysTickHandler ; SysTick Handler - - ; External Interrupts - DCD WWDG_IRQHandler ; Window Watchdog - DCD PVD_IRQHandler ; PVD through EXTI Line detect - DCD TAMPER_IRQHandler ; Tamper - DCD RTC_IRQHandler ; RTC - DCD FLASH_IRQHandler ; Flash - DCD RCC_IRQHandler ; RCC - DCD EXTI0_IRQHandler ; EXTI Line 0 - DCD EXTI1_IRQHandler ; EXTI Line 1 - DCD EXTI2_IRQHandler ; EXTI Line 2 - DCD EXTI3_IRQHandler ; EXTI Line 3 - DCD EXTI4_IRQHandler ; EXTI Line 4 - DCD DMAChannel1_IRQHandler ; DMA Channel 1 - DCD DMAChannel2_IRQHandler ; DMA Channel 2 - DCD DMAChannel3_IRQHandler ; DMA Channel 3 - DCD DMAChannel4_IRQHandler ; DMA Channel 4 - DCD DMAChannel5_IRQHandler ; DMA Channel 5 - DCD DMAChannel6_IRQHandler ; DMA Channel 6 - DCD DMAChannel7_IRQHandler ; DMA Channel 7 - DCD ADC_IRQHandler ; ADC - DCD USB_HP_CAN_TX_IRQHandler ; USB High Priority or CAN TX - DCD USB_LP_CAN_RX0_IRQHandler ; USB Low Priority or CAN RX0 - DCD CAN_RX1_IRQHandler ; CAN RX1 - DCD CAN_SCE_IRQHandler ; CAN SCE - DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 - DCD TIM1_BRK_IRQHandler ; TIM1 Break - DCD TIM1_UP_IRQHandler ; TIM1 Update - DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation - DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare - DCD vTimer2IntHandler ; TIM2 - DCD TIM3_IRQHandler ; TIM3 - DCD TIM4_IRQHandler ; TIM4 - DCD I2C1_EV_IRQHandler ; I2C1 Event - DCD I2C1_ER_IRQHandler ; I2C1 Error - DCD I2C2_EV_IRQHandler ; I2C2 Event - DCD I2C2_ER_IRQHandler ; I2C2 Error - DCD SPI1_IRQHandler ; SPI1 - DCD SPI2_IRQHandler ; SPI2 - DCD vUARTInterruptHandler ; USART1 - DCD USART2_IRQHandler ; USART2 - DCD USART3_IRQHandler ; USART3 - DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 - DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line - DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend - - - AREA |.text|, CODE, READONLY - - -; Reset Handler - -Reset_Handler PROC - EXPORT Reset_Handler [WEAK] - IMPORT __main - LDR R0, =__main - BX R0 - ENDP - - -; Dummy Exception Handlers (infinite loops which can be modified) - -NMI_Handler PROC - EXPORT NMI_Handler [WEAK] - B . - ENDP -HardFault_Handler\ - PROC - EXPORT HardFault_Handler [WEAK] - B . - ENDP -MemManage_Handler\ - PROC - EXPORT MemManage_Handler [WEAK] - B . - ENDP -BusFault_Handler\ - PROC - EXPORT BusFault_Handler [WEAK] - B . - ENDP -UsageFault_Handler\ - PROC - EXPORT UsageFault_Handler [WEAK] - B . - ENDP -SVC_Handler PROC - EXPORT SVC_Handler [WEAK] - B . - ENDP -DebugMon_Handler\ - PROC - EXPORT DebugMon_Handler [WEAK] - B . - ENDP -PendSV_Handler PROC - EXPORT PendSV_Handler [WEAK] - B . - ENDP -SysTick_Handler PROC - EXPORT SysTick_Handler [WEAK] - B . - ENDP - -Default_Handler PROC - - EXPORT WWDG_IRQHandler [WEAK] - EXPORT PVD_IRQHandler [WEAK] - EXPORT TAMPER_IRQHandler [WEAK] - EXPORT RTC_IRQHandler [WEAK] - EXPORT FLASH_IRQHandler [WEAK] - EXPORT RCC_IRQHandler [WEAK] - EXPORT EXTI0_IRQHandler [WEAK] - EXPORT EXTI1_IRQHandler [WEAK] - EXPORT EXTI2_IRQHandler [WEAK] - EXPORT EXTI3_IRQHandler [WEAK] - EXPORT EXTI4_IRQHandler [WEAK] - EXPORT DMAChannel1_IRQHandler [WEAK] - EXPORT DMAChannel2_IRQHandler [WEAK] - EXPORT DMAChannel3_IRQHandler [WEAK] - EXPORT DMAChannel4_IRQHandler [WEAK] - EXPORT DMAChannel5_IRQHandler [WEAK] - EXPORT DMAChannel6_IRQHandler [WEAK] - EXPORT DMAChannel7_IRQHandler [WEAK] - EXPORT ADC_IRQHandler [WEAK] - EXPORT USB_HP_CAN_TX_IRQHandler [WEAK] - EXPORT USB_LP_CAN_RX0_IRQHandler [WEAK] - EXPORT CAN_RX1_IRQHandler [WEAK] - EXPORT CAN_SCE_IRQHandler [WEAK] - EXPORT EXTI9_5_IRQHandler [WEAK] - EXPORT TIM1_BRK_IRQHandler [WEAK] - EXPORT TIM1_UP_IRQHandler [WEAK] - EXPORT TIM1_TRG_COM_IRQHandler [WEAK] - EXPORT TIM1_CC_IRQHandler [WEAK] - EXPORT TIM2_IRQHandler [WEAK] - EXPORT TIM3_IRQHandler [WEAK] - EXPORT TIM4_IRQHandler [WEAK] - EXPORT I2C1_EV_IRQHandler [WEAK] - EXPORT I2C1_ER_IRQHandler [WEAK] - EXPORT I2C2_EV_IRQHandler [WEAK] - EXPORT I2C2_ER_IRQHandler [WEAK] - EXPORT SPI1_IRQHandler [WEAK] - EXPORT SPI2_IRQHandler [WEAK] - EXPORT USART1_IRQHandler [WEAK] - EXPORT USART2_IRQHandler [WEAK] - EXPORT USART3_IRQHandler [WEAK] - EXPORT EXTI15_10_IRQHandler [WEAK] - EXPORT RTCAlarm_IRQHandler [WEAK] - EXPORT USBWakeUp_IRQHandler [WEAK] - -WWDG_IRQHandler -PVD_IRQHandler -TAMPER_IRQHandler -RTC_IRQHandler -FLASH_IRQHandler -RCC_IRQHandler -EXTI0_IRQHandler -EXTI1_IRQHandler -EXTI2_IRQHandler -EXTI3_IRQHandler -EXTI4_IRQHandler -DMAChannel1_IRQHandler -DMAChannel2_IRQHandler -DMAChannel3_IRQHandler -DMAChannel4_IRQHandler -DMAChannel5_IRQHandler -DMAChannel6_IRQHandler -DMAChannel7_IRQHandler -ADC_IRQHandler -USB_HP_CAN_TX_IRQHandler -USB_LP_CAN_RX0_IRQHandler -CAN_RX1_IRQHandler -CAN_SCE_IRQHandler -EXTI9_5_IRQHandler -TIM1_BRK_IRQHandler -TIM1_UP_IRQHandler -TIM1_TRG_COM_IRQHandler -TIM1_CC_IRQHandler -TIM2_IRQHandler -TIM3_IRQHandler -TIM4_IRQHandler -I2C1_EV_IRQHandler -I2C1_ER_IRQHandler -I2C2_EV_IRQHandler -I2C2_ER_IRQHandler -SPI1_IRQHandler -SPI2_IRQHandler -USART1_IRQHandler -USART2_IRQHandler -USART3_IRQHandler -EXTI15_10_IRQHandler -RTCAlarm_IRQHandler -USBWakeUp_IRQHandler - - B . - - ENDP - - - ALIGN - - -; User Initial Stack & Heap - - IF :DEF:__MICROLIB - - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - - ELSE - - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - - LDR R0, = Heap_Mem - LDR R1, =(Stack_Mem + Stack_Size) - LDR R2, = (Heap_Mem + Heap_Size) - LDR R3, = Stack_Mem - BX LR - - ALIGN - - ENDIF - - - END diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s deleted file mode 100644 index 82c2386e4..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s +++ /dev/null @@ -1,336 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2007 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * - * STARTUP_FROM_RESET - * - * If defined, the program will startup from power-on/reset. If not defined - * the program will just loop endlessly from power-on/reset. - * - * This definition is not defined by default on this target because the - * debugger is unable to reset this target and maintain control of it over the - * JTAG interface. The advantage of doing this is that it allows the debugger - * to reset the CPU and run programs from a known reset CPU state on each run. - * It also acts as a safety net if you accidently download a program in FLASH - * that crashes and prevents the debugger from taking control over JTAG - * rendering the target unusable over JTAG. The obvious disadvantage of doing - * this is that your application will not startup without the debugger. - * - * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst - * you are developing and only define STARTUP_FROM_RESET when development is - * complete. - * - *****************************************************************************/ - - .global reset_handler - - .section .vectors, "ax" - .code 16 - .align 0 - .global _vectors - -.macro DEFAULT_ISR_HANDLER name= - .thumb_func - .weak \name -\name: -1: b 1b /* endless loop */ -.endm - -.extern xPortPendSVHandler -.extern xPortSysTickHandler -.extern vPortSVCHandler -.extern vMAC_ISR; - -_vectors: - .word __stack_end__ -#ifdef STARTUP_FROM_RESET - .word reset_handler -#else - .word reset_wait -#endif /* STARTUP_FROM_RESET */ - .word NMIException - .word HardFaultException - .word MemManageException - .word BusFaultException - .word UsageFaultException - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word vPortSVCHandler - .word DebugMonitor - .word 0 // Reserved - .word xPortPendSVHandler - .word xPortSysTickHandler - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMPER_IRQHandler - .word RTC_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMAChannel1_IRQHandler - .word DMAChannel2_IRQHandler - .word DMAChannel3_IRQHandler - .word DMAChannel4_IRQHandler - .word DMAChannel5_IRQHandler - .word DMAChannel6_IRQHandler - .word DMAChannel7_IRQHandler - .word ADC_IRQHandler - .word USB_HP_CAN_TX_IRQHandler - .word USB_LP_CAN_RX0_IRQHandler - .word CAN_RX1_IRQHandler - .word CAN_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_IRQHandler - .word TIM1_UP_IRQHandler - .word TIM1_TRG_COM_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word TIM4_IRQHandler - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word I2C2_EV_IRQHandler - .word I2C2_ER_IRQHandler - .word SPI1_IRQHandler - .word SPI2_IRQHandler - .word USART1_IRQHandler - .word USART2_IRQHandler - .word USART3_IRQHandler - .word EXTI15_10_IRQHandler - .word RTCAlarm_IRQHandler - .word USBWakeUp_IRQHandler - .word TIM8_BRK_IRQHandler - .word TIM8_UP_IRQHandler - .word TIM8_TRG_COM_IRQHandler - .word TIM8_CC_IRQHandler - .word ADC3_IRQHandler - .word FSMC_IRQHandler - .word SDIO_IRQHandler - .word TIM5_IRQHandler - .word SPI3_IRQHandler - .word UART4_IRQHandler - .word UART5_IRQHandler - .word TIM6_IRQHandler - .word TIM7_IRQHandler - .word DMA2_Channel1_IRQHandler - .word DMA2_Channel2_IRQHandler - .word DMA2_Channel3_IRQHandler - .word DMA2_Channel4_5_IRQHandler - .word vMAC_ISR - .word vMAC_ISR - - .section .init, "ax" - .thumb_func - - reset_handler: -#ifndef __FLASH_BUILD - /* If this is a RAM build, configure vector table offset register to point - to the RAM vector table. */ - ldr r0, =0xE000ED08 - ldr r1, =_vectors - str r1, [r0] -#endif - b _start - -DEFAULT_ISR_HANDLER HardFaultException -DEFAULT_ISR_HANDLER NMIException -DEFAULT_ISR_HANDLER MemManageException -DEFAULT_ISR_HANDLER BusFaultException -DEFAULT_ISR_HANDLER UsageFaultException -DEFAULT_ISR_HANDLER SVCHandler -DEFAULT_ISR_HANDLER DebugMonitor -DEFAULT_ISR_HANDLER PendSV -DEFAULT_ISR_HANDLER SysTickHandler -DEFAULT_ISR_HANDLER WWDG_IRQHandler -DEFAULT_ISR_HANDLER PVD_IRQHandler -DEFAULT_ISR_HANDLER TAMPER_IRQHandler -DEFAULT_ISR_HANDLER RTC_IRQHandler -DEFAULT_ISR_HANDLER FLASH_IRQHandler -DEFAULT_ISR_HANDLER RCC_IRQHandler -DEFAULT_ISR_HANDLER EXTI0_IRQHandler -DEFAULT_ISR_HANDLER EXTI1_IRQHandler -DEFAULT_ISR_HANDLER EXTI2_IRQHandler -DEFAULT_ISR_HANDLER EXTI3_IRQHandler -DEFAULT_ISR_HANDLER EXTI4_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel1_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel2_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel3_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel4_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel5_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel6_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel7_IRQHandler -DEFAULT_ISR_HANDLER ADC_IRQHandler -DEFAULT_ISR_HANDLER USB_HP_CAN_TX_IRQHandler -DEFAULT_ISR_HANDLER USB_LP_CAN_RX0_IRQHandler -DEFAULT_ISR_HANDLER CAN_RX1_IRQHandler -DEFAULT_ISR_HANDLER CAN_SCE_IRQHandler -DEFAULT_ISR_HANDLER EXTI9_5_IRQHandler -DEFAULT_ISR_HANDLER TIM1_BRK_IRQHandler -DEFAULT_ISR_HANDLER TIM1_UP_IRQHandler -DEFAULT_ISR_HANDLER TIM1_TRG_COM_IRQHandler -DEFAULT_ISR_HANDLER TIM1_CC_IRQHandler -DEFAULT_ISR_HANDLER TIM2_IRQHandler -DEFAULT_ISR_HANDLER TIM3_IRQHandler -DEFAULT_ISR_HANDLER TIM4_IRQHandler -DEFAULT_ISR_HANDLER I2C1_EV_IRQHandler -DEFAULT_ISR_HANDLER I2C1_ER_IRQHandler -DEFAULT_ISR_HANDLER I2C2_EV_IRQHandler -DEFAULT_ISR_HANDLER I2C2_ER_IRQHandler -DEFAULT_ISR_HANDLER SPI1_IRQHandler -DEFAULT_ISR_HANDLER SPI2_IRQHandler -DEFAULT_ISR_HANDLER USART1_IRQHandler -DEFAULT_ISR_HANDLER USART2_IRQHandler -DEFAULT_ISR_HANDLER USART3_IRQHandler -DEFAULT_ISR_HANDLER EXTI15_10_IRQHandler -DEFAULT_ISR_HANDLER RTCAlarm_IRQHandler -DEFAULT_ISR_HANDLER USBWakeUp_IRQHandler -DEFAULT_ISR_HANDLER TIM8_BRK_IRQHandler -DEFAULT_ISR_HANDLER TIM8_UP_IRQHandler -DEFAULT_ISR_HANDLER TIM8_TRG_COM_IRQHandler -DEFAULT_ISR_HANDLER TIM8_CC_IRQHandler -DEFAULT_ISR_HANDLER ADC3_IRQHandler -DEFAULT_ISR_HANDLER FSMC_IRQHandler -DEFAULT_ISR_HANDLER SDIO_IRQHandler -DEFAULT_ISR_HANDLER TIM5_IRQHandler -DEFAULT_ISR_HANDLER SPI3_IRQHandler -DEFAULT_ISR_HANDLER UART4_IRQHandler -DEFAULT_ISR_HANDLER UART5_IRQHandler -DEFAULT_ISR_HANDLER TIM6_IRQHandler -DEFAULT_ISR_HANDLER TIM7_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel1_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel2_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel3_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel4_5_IRQHandler - -#ifndef STARTUP_FROM_RESET -DEFAULT_ISR_HANDLER reset_wait -#endif /* STARTUP_FROM_RESET */ - - // STM32 library requires these - .global __WFI - .global __WFE - .global __SEV - .global __ISB - .global __DSB - .global __DMB - .global __SVC - .global __MRS_CONTROL - .global __MSR_CONTROL - .global __MRS_PSP - .global __MSR_PSP - .global __MRS_MSP - .global __MSR_MSP - .global __SETPRIMASK - .global __RESETPRIMASK - .global __SETFAULTMASK - .global __RESETFAULTMASK - .global __BASEPRICONFIG - .global __GetBASEPRI - .global __REV_HalfWord - .global __REV_Word - -.thumb_func -__WFI: - wfi - bx r14 -.thumb_func -__WFE: - wfe - bx r14 -.thumb_func -__SEV: - sev - bx r14 -.thumb_func -__ISB: - isb - bx r14 -.thumb_func -__DSB: - dsb - bx r14 -.thumb_func -__DMB: - dmb - bx r14 -.thumb_func -__SVC: - svc 0x01 - bx r14 -.thumb_func -__MRS_CONTROL: - mrs r0, control - bx r14 -.thumb_func -__MSR_CONTROL: - msr control, r0 - isb - bx r14 -.thumb_func -__MRS_PSP: - mrs r0, psp - bx r14 -.thumb_func -__MSR_PSP: - msr psp, r0 - bx r14 -.thumb_func -__MRS_MSP: - mrs r0, msp - bx r14 -.thumb_func -__MSR_MSP: - msr msp, r0 - bx r14 -.thumb_func -__SETPRIMASK: - cpsid i - bx r14 -.thumb_func -__RESETPRIMASK: - cpsie i - bx r14 -.thumb_func -__SETFAULTMASK: - cpsid f - bx r14 -.thumb_func -__RESETFAULTMASK: - cpsie f - bx r14 -.thumb_func -__BASEPRICONFIG: - msr basepri, r0 - bx r14 -.thumb_func -__GetBASEPRI: - mrs r0, basepri_max - bx r14 -.thumb_func -__REV_HalfWord: - rev16 r0, r0 - bx r14 -.thumb_func -__REV_Word: - rev r0, r0 - bx r14 - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c deleted file mode 100644 index 04e540693..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the LCD send the message on a queue to the LCD task instead of - * accessing the LCD themselves. The LCD task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. The use - * of a gatekeeper in this manner permits both tasks and interrupts to write to - * the LCD without worrying about mutual exclusion. This is demonstrated by the - * check hook (see below) which sends messages to the display even though it - * executes from an interrupt context. - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. Should any unexpected behaviour be discovered within a - * demo task then the tick hook will write an error to the LCD (via the LCD task). - * If all the demo tasks are executing with their expected behaviour then the - * check task writes PASS to the LCD (again via the LCD task), as described above. - * - * LED tasks - These just demonstrate how multiple instances of a single task - * definition can be created. Each LED task simply toggles an LED. The task - * parameter is used to pass the number of the LED to be toggled into the task. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "Fast Interrupt Test" - A high frequency periodic interrupt is generated - * using a free running timer to demonstrate the use of the - * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt - * service routine measures the number of processor clocks that occur between - * each interrupt - and in so doing measures the jitter in the interrupt timing. - * The maximum measured jitter time is latched in the ulMaxJitter variable, and - * displayed on the OLED display by the 'OLED' task as described below. The - * fast interrupt is configured and handled in the timertest.c source file. - * - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Library includes. */ -#include "stm32f10x_it.h" -#include "stm32f10x_tim.h" -#include "STM3210D_lcd.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The length of the queue used to send messages to the LCD task. */ -#define mainQUEUE_SIZE ( 3 ) - -/* The period of the system clock in nano seconds. This is used to calculate -the jitter time in nano seconds. */ -#define mainNS_PER_CLOCK ( ( unsigned long ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) ) - -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Very simple task that toggles an LED. - */ -static void prvLCDTask( void *pvparameters ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The LCD gatekeeper task as described in the comments at the top of this file. - * */ -static void prvLCDTask( void *pvParameters ); - -/* - * Configures the high frequency timers - those used to measure the timing - * jitter while the real time kernel is executing. - */ -extern void vSetupHighFrequencyTimer( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send messages to the LCD task. */ -QueueHandle_t xLCDQueue; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ -#ifdef DEBUG - debug(); -#endif - - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Create the uIP task. The WEB server runs in this task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); - - /* Create the queue used by the LCD task. Messages for display on the LCD - are received via this queue. */ - xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( char * ) ); - - /* Start the LCD gatekeeper task - as described in the comments at the top - of this file. */ - xTaskCreate( prvLCDTask, "LCD", configMINIMAL_STACK_SIZE * 2, NULL, mainLCD_TASK_PRIORITY, NULL ); - - /* Configure the high frequency interrupt used to measure the interrupt - jitter time. When debugging it can be helpful to comment this line out - to prevent the debugger repeatedly going into the interrupt service - routine. */ - vSetupHighFrequencyTimer(); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvLCDTask( void *pvParameters ) -{ -unsigned char *pucMessage; -unsigned long ulLine = Line3; -const unsigned long ulLineHeight = 24; -static char cMsgBuf[ 30 ]; -extern unsigned short usMaxJitter; - - ( void ) pvParameters; - - /* The LCD gatekeeper task as described in the comments at the top of this - file. */ - - /* Initialise the LCD and display a startup message that includes the - configured IP address. */ - STM3210D_LCD_Init(); - LCD_Clear(White); - LCD_SetTextColor(Green); - LCD_DisplayStringLine( Line0, ( unsigned char * ) " www.FreeRTOS.org" ); - LCD_SetTextColor(Blue); - sprintf( cMsgBuf, " %d.%d.%d.%d", configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - LCD_DisplayStringLine( Line1, ( unsigned char * ) cMsgBuf ); - LCD_SetTextColor(Black); - - for( ;; ) - { - /* Wait for a message to arrive to be displayed. */ - xQueueReceive( xLCDQueue, &pucMessage, portMAX_DELAY ); - - /* Clear the current line of text. */ - LCD_ClearLine( ulLine ); - - /* Move on to the next line. */ - ulLine += ulLineHeight; - if( ulLine > Line9 ) - { - ulLine = Line3; - } - - /* Display the received text, and the max jitter value. */ - sprintf( cMsgBuf, "%s [%uns]", pucMessage, usMaxJitter * mainNS_PER_CLOCK ); - LCD_DisplayStringLine( ulLine, ( unsigned char * ) cMsgBuf ); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Start with the clocks in their expected state. */ - RCC_DeInit(); - - /* Enable HSE (high speed external clock). */ - RCC_HSEConfig( RCC_HSE_ON ); - - /* Wait till HSE is ready. */ - while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET ) - { - } - - /* 2 wait states required on the flash. */ - *( ( unsigned long * ) 0x40022000 ) = 0x02; - - /* HCLK = SYSCLK */ - RCC_HCLKConfig( RCC_SYSCLK_Div1 ); - - /* PCLK2 = HCLK */ - RCC_PCLK2Config( RCC_HCLK_Div1 ); - - /* PCLK1 = HCLK/2 */ - RCC_PCLK1Config( RCC_HCLK_Div2 ); - - /* PLLCLK = (25MHz / 2 ) * 5 = 62.5 MHz. */ - RCC_PLLConfig( RCC_PLLSource_HSE_Div2, RCC_PLLMul_5 ); - - /* Enable PLL. */ - RCC_PLLCmd( ENABLE ); - - /* Wait till PLL is ready. */ - while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) - { - } - - /* Select PLL as system clock source. */ - RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK ); - - /* Wait till PLL is used as system clock source. */ - while( RCC_GetSYSCLKSource() != 0x08 ) - { - } - - /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */ - RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC - | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE ); - - /* Set the Vector Table base address at 0x08000000 */ - NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 ); - - NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); - - /* Configure HCLK clock as SysTick clock source. */ - SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK ); - - /* Initialise the IO used for the LED outputs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. If the - parameters are corrupt then inspect pxCurrentTCB to find which was the - offending task. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -char *pcMessage = "Status: PASS"; -static unsigned long ulTicksSinceLastDisplay = 0; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: GEN Q"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: PEEK Q"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: BLOCK Q"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: SEMAPHR"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: POLL Q"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: INT MATH"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: REC MUTEX"; - } - - /* Send the message to the OLED gatekeeper for display. The - xHigherPriorityTaskWoken parameter is not actually used here - as this function is running in the tick interrupt anyway - but - it must still be supplied. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR( xLCDQueue, &pcMessage, &xHigherPriorityTaskWoken ); - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp deleted file mode 100644 index b025e15bb..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp +++ /dev/null @@ -1,485 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* Library includes. */ -#include "stm32fxxx_eth.h" -#include "stm32f10x_gpio.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_nvic.h" - -/*-----------------------------------------------------------*/ - -/* Hardware specifics. */ -#define uipRCC_MAC_CLOCK ( 1UL << 14UL ) -#define uipRCC_MAC_TX_CLOCK ( 1UL << 15UL ) -#define uipRCC_MAC_RX_CLOCK ( 1UL << 16UL ) -#define uipPHY_ADDRESS ( 1 ) -#define uipENET_IRQ_NUM ( 61 ) -#define uipMODE_MII ( 1UL << 23UL ) -#define uipREMAP_MAC_IO ( 1UL << 21UL ) - -/* The number of descriptors to chain together for use by the Rx DMA. */ -#define uipNUM_RX_DESCRIPTORS 4 - -/* The total number of buffers to be available. At most (?) there should be -one available for each Rx descriptor, one for current use, and one that is -in the process of being transmitted. */ -#define uipNUM_BUFFERS ( uipNUM_RX_DESCRIPTORS + 2 ) - -/* Each buffer is sized to fit an entire Ethernet packet. This is for -simplicity and speed, but could waste RAM. */ -#define uipMAX_PACKET_SIZE 1520 - -/* The field in the descriptor that is unused by this configuration is used to -hold the send count. This is just #defined to a meaningful name. */ -#define SendCount Buffer2NextDescAddr - -/* If no buffers are available, then wait this long before looking again.... */ -#define uipBUFFER_WAIT_DELAY ( 3 / portTICK_RATE_MS ) - -/* ...and don't look more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Let the DMA know that a new descriptor has been made available to it. */ -#define prvRxDescriptorAvailable() ETH_DMA->DMARPDR = 0 - -/*-----------------------------------------------------------*/ - -/* - * Configure the IO for Ethernet use. - */ -static void prvSetupEthGPIO( void ); - -/* - * Return a pointer to an unused buffer, marking the returned buffer as now - * in use. - */ -static unsigned char *prvGetNextBuffer( void ); - -/*-----------------------------------------------------------*/ - -/* Allocate the Rx descriptors used by the DMA. */ -static ETH_DMADESCTypeDef xRxDescriptors[ uipNUM_RX_DESCRIPTORS ] __attribute__((aligned(4))); - -/* Allocate the descriptor used for transmitting. It might be that better -performance could be achieved by having more than one Tx descriptor, but -in this simple case only one is used. */ -static volatile ETH_DMADESCTypeDef xTxDescriptor __attribute__((aligned(4))); - -/* Buffers used for receiving and transmitting data. */ -static unsigned char ucMACBuffers[ uipNUM_BUFFERS ][ uipMAX_PACKET_SIZE ] __attribute__((aligned(4))); - -/* Each ucBufferInUse index corresponds to a position in the same index in the -ucMACBuffers array. If the index contains a 1 then the buffer within -ucMACBuffers is in use, if it contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ uipNUM_BUFFERS ] = { 0 }; - -/* Index to the Rx descriptor to inspect next when looking for a received -packet. */ -static unsigned long ulNextDescriptor; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -extern unsigned char * uip_buf; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE xEthInitialise( void ) -{ -static ETH_InitTypeDef xEthInit; /* Static so as not to take up too much stack space. */ -NVIC_InitTypeDef xNVICInit; -const unsigned char ucMACAddress[] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; -portBASE_TYPE xReturn; -unsigned long ul; - - /* Start with things in a safe known state. */ - ETH_DeInit(); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), DISABLE ); - } - - /* Route clock to the peripheral. */ - RCC->AHBENR |= ( uipRCC_MAC_CLOCK | uipRCC_MAC_TX_CLOCK | uipRCC_MAC_RX_CLOCK ); - - /* Set the MAC address. */ - ETH_MACAddressConfig( ETH_MAC_Address0, ( unsigned char * ) ucMACAddress ); - - /* Use MII mode. */ - AFIO->MAPR &= ~( uipMODE_MII ); - - /* Configure all the GPIO as required for MAC/PHY interfacing. */ - prvSetupEthGPIO(); - - /* Reset the peripheral. */ - ETH_SoftwareReset(); - while( ETH_GetSoftwareResetStatus() == SET ); - - /* Initialise using the whopping big structure. Code space could be saved - by making this a const struct, however that would mean changes to the - structure within the library header files could break the code, so for now - just set everything manually at run time. */ - xEthInit.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - xEthInit.ETH_Watchdog = ETH_Watchdog_Disable; - xEthInit.ETH_Jabber = ETH_Jabber_Disable; - xEthInit.ETH_JumboFrame = ETH_JumboFrame_Disable; - xEthInit.ETH_InterFrameGap = ETH_InterFrameGap_96Bit; - xEthInit.ETH_CarrierSense = ETH_CarrierSense_Enable; - xEthInit.ETH_Speed = ETH_Speed_10M; - xEthInit.ETH_ReceiveOwn = ETH_ReceiveOwn_Disable; - xEthInit.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - xEthInit.ETH_Mode = ETH_Mode_HalfDuplex; - xEthInit.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; - xEthInit.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - xEthInit.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - xEthInit.ETH_BackOffLimit = ETH_BackOffLimit_10; - xEthInit.ETH_DeferralCheck = ETH_DeferralCheck_Disable; - xEthInit.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - xEthInit.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; - xEthInit.ETH_PassControlFrames = ETH_PassControlFrames_ForwardPassedAddrFilter; - xEthInit.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; - xEthInit.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; - xEthInit.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - xEthInit.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - xEthInit.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - xEthInit.ETH_HashTableHigh = 0x0; - xEthInit.ETH_HashTableLow = 0x0; - xEthInit.ETH_PauseTime = 0x0; - xEthInit.ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; - xEthInit.ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; - xEthInit.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; - xEthInit.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; - xEthInit.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; - xEthInit.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; - xEthInit.ETH_VLANTagIdentifier = 0x0; - xEthInit.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; - xEthInit.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; - xEthInit.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable; - xEthInit.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; - xEthInit.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; - xEthInit.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; - xEthInit.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; - xEthInit.ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; - xEthInit.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; - xEthInit.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; - xEthInit.ETH_FixedBurst = ETH_FixedBurst_Disable; - xEthInit.ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; - xEthInit.ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; - xEthInit.ETH_DescriptorSkipLength = 0x0; - xEthInit.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; - - xReturn = ETH_Init( &xEthInit, uipPHY_ADDRESS ); - - /* Check a link was established. */ - if( xReturn != pdFAIL ) - { - /* Rx and Tx interrupts are used. */ - ETH_DMAITConfig( ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T, ENABLE ); - - /* Only a single Tx descriptor is used. For now it is set to use an Rx - buffer, but will get updated to point to where ever uip_buf is - pointing prior to its use. */ - ETH_DMATxDescChainInit( ( void * ) &xTxDescriptor, ( void * ) ucMACBuffers, 1 ); - ETH_DMARxDescChainInit( xRxDescriptors, ( void * ) ucMACBuffers, uipNUM_RX_DESCRIPTORS ); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - /* Ensure received data generates an interrupt. */ - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), ENABLE ); - - /* Fix up the addresses used by the descriptors. - The way ETH_DMARxDescChainInit() is not compatible with the buffer - declarations in this file. */ - xRxDescriptors[ ul ].Buffer1Addr = ( unsigned long ) &( ucMACBuffers[ ul ][ 0 ] ); - - /* Mark the buffer used by this descriptor as in use. */ - ucBufferInUse[ ul ] = pdTRUE; - } - - /* When receiving data, start at the first descriptor. */ - ulNextDescriptor = 0; - - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* SendCount must be initialised to 2 to ensure the Tx descriptor looks - as if its available (as if it has already been sent twice. */ - xTxDescriptor.SendCount = 2; - - /* Switch on the interrupts in the NVIC. */ - xNVICInit.NVIC_IRQChannel = uipENET_IRQ_NUM; - xNVICInit.NVIC_IRQChannelPreemptionPriority = configLIBRARY_KERNEL_INTERRUPT_PRIORITY; - xNVICInit.NVIC_IRQChannelSubPriority = 0; - xNVICInit.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init( &xNVICInit ); - - /* Buffers and descriptors are all set up, now enable the MAC. */ - ETH_Start(); - - /* Let the DMA know there are Rx descriptors available. */ - prvRxDescriptorAvailable(); - } - - return xReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *ucReturn = NULL; -unsigned long ulAttempts = 0; - - while( ucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < uipNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - ucReturn = &( ucMACBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( ucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - return ucReturn; -} -/*-----------------------------------------------------------*/ - -unsigned short usGetMACRxData( void ) -{ -unsigned short usReturn; - - if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_ES ) != 0 ) - { - /* Error in Rx. Discard the frame and give it back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* No data to return. */ - usReturn = 0UL; - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_OWN ) == 0 ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - vReturnBuffer( uip_buf ); - - /* Get the received data length from the top 2 bytes of the Status - word and the data itself. */ - usReturn = ( unsigned short ) ( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_FL ) >> 16UL ); - uip_buf = ( unsigned char * ) ( xRxDescriptors[ ulNextDescriptor ].Buffer1Addr ); - - /* Allocate a new buffer to the descriptor. */ - xRxDescriptors[ ulNextDescriptor ].Buffer1Addr = ( unsigned long ) prvGetNextBuffer(); - - /* Give the descriptor back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else - { - /* No received data at all. */ - usReturn = 0UL; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vSendMACData( unsigned short usDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free. The check against <2 is to - ensure the buffer has been sent twice and in so doing preventing a race - condition with the DMA on the ETH_DMATxDesc_OWN bit. */ - while( ( xTxDescriptor.SendCount < 2 ) && ( xTxDescriptor.Status & ETH_DMATxDesc_OWN ) == ETH_DMATxDesc_OWN ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > uipBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - xTxDescriptor.Status &= ~ETH_DMATxDesc_OWN; - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - break; - } - } - - /* Setup the Tx descriptor for transmission. */ - xTxDescriptor.SendCount = 0; - xTxDescriptor.Buffer1Addr = ( unsigned long ) uip_buf; - xTxDescriptor.ControlBufferSize = ( unsigned long ) usDataLen; - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvSetupEthGPIO( void ) -{ -GPIO_InitTypeDef xEthInit; - - /* Remap MAC IO. */ - AFIO->MAPR |= ( uipREMAP_MAC_IO ); - - /* Set PA2, PA8, PB5, PB8, PB11, PB12, PB13, PC1 and PC2 for Ethernet - interfacing. */ - xEthInit.GPIO_Pin = GPIO_Pin_2;/* | GPIO_Pin_8; This should be set when the 25MHz is generated by MCO. */ - xEthInit.GPIO_Speed = GPIO_Speed_50MHz; - xEthInit.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; /*5*/ - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; - GPIO_Init( GPIOC, &xEthInit ); - - - /* Configure PA0, PA1, PA3, PB10, PC3, PD8, PD9, PD10, PD11 and PD12 as - inputs. */ - xEthInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; - xEthInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_10; - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_3; - GPIO_Init( GPIOC, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_Init( GPIOD, &xEthInit ); -} -/*-----------------------------------------------------------*/ - -void vReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < uipNUM_BUFFERS; ul++ ) - { - if( ucMACBuffers[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -void vMAC_ISR( void ) -{ -unsigned long ulStatus; -extern xSemaphoreHandle xEMACSemaphore; -long xHigherPriorityTaskWoken = pdFALSE; - - /* What caused the interrupt? */ - ulStatus = ETH_DMA->DMASR; - - /* Clear everything before leaving. */ - ETH_DMA->DMASR = ulStatus; - - if( ulStatus & ETH_DMA_IT_R ) - { - /* Data was received. Ensure the uIP task is not blocked as data has - arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - } - - if( ulStatus & ETH_DMA_IT_T ) - { - /* Data was transmitted. */ - if( xTxDescriptor.SendCount == 0 ) - { - /* Send again! */ - ( xTxDescriptor.SendCount )++; - - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - } - else - { - /* The Tx buffer is no longer required. */ - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - } - } - - /* If xSemaphoreGiveFromISR() unblocked a task, and the unblocked task has - a higher priority than the currently executing task, then - xHigherPriorityTaskWoken will have been set to pdTRUE and this ISR should - return directly to the higher priority unblocked task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c deleted file mode 100644 index b96cbff6e..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c +++ /dev/null @@ -1,498 +0,0 @@ -/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** -* File Name : spi_flash.c -* Author : MCD Application Team -* Date First Issued : 02/05/2007 -* Description : This file provides a set of functions needed to manage the -* communication between SPI peripheral and SPI M25P64 FLASH. -******************************************************************************** -* History: -* 04/02/2007: V0.2 -* 02/05/2007: V0.1 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "spi_flash.h" - -/* Private typedef -----------------------------------------------------------*/ -#define SPI_FLASH_PageSize 256 - -#define WRITE 0x02 /* Write to Memory instruction */ -#define WRSR 0x01 /* Write Status Register instruction */ -#define WREN 0x06 /* Write enable instruction */ - -#define READ 0x03 /* Read from Memory instruction */ -#define RDSR 0x05 /* Read Status Register instruction */ -#define RDID 0x9F /* Read identification */ -#define SE 0xD8 /* Sector Erase instruction */ -#define BE 0xC7 /* Bulk Erase instruction */ - -#define WIP_Flag 0x01 /* Write In Progress (WIP) flag */ - -#define Dummy_Byte 0xA5 - -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : SPI_FLASH_Init -* Description : Initializes the peripherals used by the SPI FLASH driver. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_Init(void) -{ - SPI_InitTypeDef SPI_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; - - /* Enable SPI1 and GPIOA clocks */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA, ENABLE); - - /* Configure SPI1 pins: NSS, SCK, MISO and MOSI */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - - /* Configure PA.4 as Output push-pull, used as Flash Chip select */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* SPI1 configuration */ - SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; - SPI_InitStructure.SPI_Mode = SPI_Mode_Master; - SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; - SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; - SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; - SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; - SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - SPI_InitStructure.SPI_CRCPolynomial = 7; - SPI_Init(SPI1, &SPI_InitStructure); - - /* Enable SPI1 */ - SPI_Cmd(SPI1, ENABLE); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_SectorErase -* Description : Erases the specified FLASH sector. -* Input : SectorAddr: address of the sector to erase. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_SectorErase(u32 SectorAddr) -{ - /* Send write enable instruction */ - SPI_FLASH_WriteEnable(); - - /* Sector Erase */ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - /* Send Sector Erase instruction */ - SPI_FLASH_SendByte(SE); - /* Send SectorAddr high nibble address byte */ - SPI_FLASH_SendByte((SectorAddr & 0xFF0000) >> 16); - /* Send SectorAddr medium nibble address byte */ - SPI_FLASH_SendByte((SectorAddr & 0xFF00) >> 8); - /* Send SectorAddr low nibble address byte */ - SPI_FLASH_SendByte(SectorAddr & 0xFF); - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* Wait the end of Flash writing */ - SPI_FLASH_WaitForWriteEnd(); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_BulkErase -* Description : Erases the entire FLASH. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_BulkErase(void) -{ - /* Send write enable instruction */ - SPI_FLASH_WriteEnable(); - - /* Bulk Erase */ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - /* Send Bulk Erase instruction */ - SPI_FLASH_SendByte(BE); - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* Wait the end of Flash writing */ - SPI_FLASH_WaitForWriteEnd(); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_PageWrite -* Description : Writes more than one byte to the FLASH with a single WRITE -* cycle(Page WRITE sequence). The number of byte can't exceed -* the FLASH page size. -* Input : - pBuffer : pointer to the buffer containing the data to be -* written to the FLASH. -* - WriteAddr : FLASH's internal address to write to. -* - NumByteToWrite : number of bytes to write to the FLASH, -* must be equal or less than "SPI_FLASH_PageSize" value. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite) -{ - /* Enable the write access to the FLASH */ - SPI_FLASH_WriteEnable(); - - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - /* Send "Write to Memory " instruction */ - SPI_FLASH_SendByte(WRITE); - /* Send WriteAddr high nibble address byte to write to */ - SPI_FLASH_SendByte((WriteAddr & 0xFF0000) >> 16); - /* Send WriteAddr medium nibble address byte to write to */ - SPI_FLASH_SendByte((WriteAddr & 0xFF00) >> 8); - /* Send WriteAddr low nibble address byte to write to */ - SPI_FLASH_SendByte(WriteAddr & 0xFF); - - /* while there is data to be written on the FLASH */ - while(NumByteToWrite--) - { - /* Send the current byte */ - SPI_FLASH_SendByte(*pBuffer); - /* Point on the next byte to be written */ - pBuffer++; - } - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* Wait the end of Flash writing */ - SPI_FLASH_WaitForWriteEnd(); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_BufferWrite -* Description : Writes block of data to the FLASH. In this function, the -* number of WRITE cycles are reduced, using Page WRITE sequence. -* Input : - pBuffer : pointer to the buffer containing the data to be -* written to the FLASH. -* - WriteAddr : FLASH's internal address to write to. -* - NumByteToWrite : number of bytes to write to the FLASH. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite) -{ - u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0; - - Addr = WriteAddr % SPI_FLASH_PageSize; - count = SPI_FLASH_PageSize - Addr; - NumOfPage = NumByteToWrite / SPI_FLASH_PageSize; - NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize; - - if(Addr == 0) /* WriteAddr is SPI_FLASH_PageSize aligned */ - { - if(NumOfPage == 0) /* NumByteToWrite < SPI_FLASH_PageSize */ - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite); - } - else /* NumByteToWrite > SPI_FLASH_PageSize */ - { - while(NumOfPage--) - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize); - WriteAddr += SPI_FLASH_PageSize; - pBuffer += SPI_FLASH_PageSize; - } - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle); - } - } - else /* WriteAddr is not SPI_FLASH_PageSize aligned */ - { - if(NumOfPage== 0) /* NumByteToWrite < SPI_FLASH_PageSize */ - { - if(NumOfSingle > count) /* (NumByteToWrite + WriteAddr) > SPI_FLASH_PageSize */ - { - temp = NumOfSingle - count; - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, count); - WriteAddr += count; - pBuffer += count; - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, temp); - } - else - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite); - } - } - else /* NumByteToWrite > SPI_FLASH_PageSize */ - { - NumByteToWrite -= count; - NumOfPage = NumByteToWrite / SPI_FLASH_PageSize; - NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize; - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, count); - WriteAddr += count; - pBuffer += count; - - while(NumOfPage--) - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize); - WriteAddr += SPI_FLASH_PageSize; - pBuffer += SPI_FLASH_PageSize; - } - - if(NumOfSingle != 0) - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle); - } - } - } -} - -/******************************************************************************* -* Function Name : SPI_FLASH_BufferRead -* Description : Reads a block of data from the FLASH. -* Input : - pBuffer : pointer to the buffer that receives the data read -* from the FLASH. -* - ReadAddr : FLASH's internal address to read from. -* - NumByteToRead : number of bytes to read from the FLASH. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead) -{ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Read from Memory " instruction */ - SPI_FLASH_SendByte(READ); - - /* Send ReadAddr high nibble address byte to read from */ - SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16); - /* Send ReadAddr medium nibble address byte to read from */ - SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8); - /* Send ReadAddr low nibble address byte to read from */ - SPI_FLASH_SendByte(ReadAddr & 0xFF); - - while(NumByteToRead--) /* while there is data to be read */ - { - /* Read a byte from the FLASH */ - *pBuffer = SPI_FLASH_SendByte(Dummy_Byte); - /* Point to the next location where the byte read will be saved */ - pBuffer++; - } - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_ReadID -* Description : Reads FLASH identification. -* Input : None -* Output : None -* Return : FLASH identification -*******************************************************************************/ -u32 SPI_FLASH_ReadID(void) -{ - u32 Temp = 0, Temp0 = 0, Temp1 = 0, Temp2 = 0; - - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "RDID " instruction */ - SPI_FLASH_SendByte(0x9F); - - /* Read a byte from the FLASH */ - Temp0 = SPI_FLASH_SendByte(Dummy_Byte); - - /* Read a byte from the FLASH */ - Temp1 = SPI_FLASH_SendByte(Dummy_Byte); - - /* Read a byte from the FLASH */ - Temp2 = SPI_FLASH_SendByte(Dummy_Byte); - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - Temp = (Temp0 << 16) | (Temp1 << 8) | Temp2; - - return Temp; -} - -/******************************************************************************* -* Function Name : SPI_FLASH_StartReadSequence -* Description : Initiates a read data byte (READ) sequence from the Flash. -* This is done by driving the /CS line low to select the device, -* then the READ instruction is transmitted followed by 3 bytes -* address. This function exit and keep the /CS line low, so the -* Flash still being selected. With this technique the whole -* content of the Flash is read with a single READ instruction. -* Input : - ReadAddr : FLASH's internal address to read from. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_StartReadSequence(u32 ReadAddr) -{ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Read from Memory " instruction */ - SPI_FLASH_SendByte(READ); - -/* Send the 24-bit address of the address to read from -----------------------*/ - /* Send ReadAddr high nibble address byte */ - SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16); - /* Send ReadAddr medium nibble address byte */ - SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8); - /* Send ReadAddr low nibble address byte */ - SPI_FLASH_SendByte(ReadAddr & 0xFF); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_ReadByte -* Description : Reads a byte from the SPI Flash. -* This function must be used only if the Start_Read_Sequence -* function has been previously called. -* Input : None -* Output : None -* Return : Byte Read from the SPI Flash. -*******************************************************************************/ -u8 SPI_FLASH_ReadByte(void) -{ - return (SPI_FLASH_SendByte(Dummy_Byte)); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_ChipSelect -* Description : Selects or deselects the FLASH. -* Input : State : level to be applied on the FLASH's ChipSelect pin. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_ChipSelect(u8 State) -{ - /* Set High or low the chip select line on PA.4 pin */ - GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)State); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_SendByte -* Description : Sends a byte through the SPI interface and return the byte -* received from the SPI bus. -* Input : byte : byte to send. -* Output : None -* Return : The value of the received byte. -*******************************************************************************/ -u8 SPI_FLASH_SendByte(u8 byte) -{ - /* Loop while DR register in not emplty */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET); - - /* Send byte through the SPI1 peripheral */ - SPI_SendData(SPI1, byte); - - /* Wait to receive a byte */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET); - - /* Return the byte read from the SPI bus */ - return SPI_ReceiveData(SPI1); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_SendHalfWord -* Description : Sends a Half Word through the SPI interface and return the -* Half Word received from the SPI bus. -* Input : Half Word : Half Word to send. -* Output : None -* Return : The value of the received Half Word. -*******************************************************************************/ -u16 SPI_FLASH_SendHalfWord(u16 HalfWord) -{ - /* Loop while DR register in not emplty */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET); - - /* Send Half Word through the SPI1 peripheral */ - SPI_SendData(SPI1, HalfWord); - - /* Wait to receive a Half Word */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET); - - /* Return the Half Word read from the SPI bus */ - return SPI_ReceiveData(SPI1); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_WriteEnable -* Description : Enables the write access to the FLASH. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_WriteEnable(void) -{ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Write Enable" instruction */ - SPI_FLASH_SendByte(WREN); - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_WaitForWriteEnd -* Description : Polls the status of the Write In Progress (WIP) flag in the -* FLASH's status register and loop until write opertaion -* has completed. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_WaitForWriteEnd(void) -{ - u8 FLASH_Status = 0; - - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Read Status Register" instruction */ - SPI_FLASH_SendByte(RDSR); - - /* Loop as long as the memory is busy with a write cycle */ - do - { - - /* Send a dummy byte to generate the clock needed by the FLASH - and put the value of the status register in FLASH_Status variable */ - FLASH_Status = SPI_FLASH_SendByte(Dummy_Byte); - - } while((FLASH_Status & WIP_Flag) == SET); /* Write in progress */ - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); -} - -/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h deleted file mode 100644 index 68362cb4b..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h +++ /dev/null @@ -1,7006 +0,0 @@ -/** - ****************************************************************************** - * @file stm32f10x.h - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. - * This file contains all the peripheral register's definitions, bits - * definitions and memory mapping for STM32F10x High Density, Medium - * Density and Low Density devices. - * @author STMicroelectronics - MCD Application Team - * @version V3.0.0 - * @date 04/06/2009 - ****************************************************************************** - * - * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS - * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE - * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY - * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING - * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE - * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. - * - *

© COPYRIGHT 2009 STMicroelectronics

- ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f10x - * @{ - */ - -#ifndef __STM32F10x_H -#define __STM32F10x_H - -/** @addtogroup Library_configuration_section - * @{ - */ - -/* Uncomment the line below according to the target STM32 device used in your - application - */ - -#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) - /* #define STM32F10X_LD */ /*!< STM32 Low density devices */ - /* #define STM32F10X_MD */ /*!< STM32 Medium density devices */ - #define STM32F10X_HD /*!< STM32 High density devices */ -#endif -/* Tip: To avoid modifying this file each time you need to switch between these - devices, you can define the device in your toolchain compiler preprocessor. - - - Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 16 and 32 Kbytes. - - Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 64 and 128 Kbytes. - - High-density devices are STM32F101xx and STM32F103xx microcontrollers where - the Flash memory density ranges between 256 and 512 Kbytes. - */ - -#if !defined USE_STDPERIPH_DRIVER -/** - * @brief Comment the line below if you will not use the peripherals drivers. - In this case, these drivers will not be included and the application code will - be based on direct access to peripherals registers - */ - /*#define USE_STDPERIPH_DRIVER*/ -#endif - -/** - * @brief In the following line adjust the value of External High Speed oscillator (HSE) - used in your application - */ -#define HSE_Value ((uint32_t)25000000) /*!< Value of the External oscillator in Hz*/ -/** - * @brief In the following line adjust the External High Speed oscillator (HSE) Startup - Timeout value - */ -#define HSEStartUp_TimeOut ((uint16_t)0x0500) /*!< Time out for HSE start up */ - -#define HSI_Value ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ - - -/*!< [31:16] STM32F10x Standard Peripheral Library main version */ -#define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) -/*!< [15:8] STM32F10x Standard Peripheral Library sub1 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x00) -/*!< [7:0] STM32F10x Standard Peripheral Library sub2 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB2 (0x00) -/*!< STM32F10x Standard Peripheral Library version number */ -#define __STM32F10X_STDPERIPH_VERSION ((__STM32F10X_STDPERIPH_VERSION_MAIN << 16)\ - | (__STM32F10X_STDPERIPH_VERSION_SUB1 << 8)\ - | __STM32F10X_STDPERIPH_VERSION_SUB2) - -/** - * @} - */ - -/** @addtogroup Configuration_section_for_CMSIS - * @{ - */ - -/** - * @brief Configuration of the Cortex-M3 Processor and Core Peripherals - */ -#define __MPU_PRESENT 0 /*!< STM32 does not provide a MPU present or not */ -#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - -/*!< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** STM32 specific Interrupt Numbers *********************************************************/ - WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ - PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ - TAMPER_IRQn = 2, /*!< Tamper Interrupt */ - RTC_IRQn = 3, /*!< RTC global Interrupt */ - FLASH_IRQn = 4, /*!< FLASH global Interrupt */ - RCC_IRQn = 5, /*!< RCC global Interrupt */ - EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ - EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ - EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ - EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ - EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ - DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ - DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ - DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ - DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ - DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ - DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ - DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ - ADC1_2_IRQn = 18, /*!< ADC1 et ADC2 global Interrupt */ - USB_HP_CAN1_TX_IRQn = 19, /*!< USB High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ -#ifndef STM32F10X_LD - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ -#endif - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ -#ifndef STM32F10X_LD - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ -#endif - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ -#ifndef STM32F10X_LD - USART3_IRQn = 39, /*!< USART3 global Interrupt */ -#endif - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB WakeUp from suspend through EXTI Line Interrupt */ -#ifdef STM32F10X_HD - TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ - TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ - TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ - TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ - ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ - FSMC_IRQn = 48, /*!< FSMC global Interrupt */ - SDIO_IRQn = 49, /*!< SDIO global Interrupt */ - TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ - SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ - UART4_IRQn = 52, /*!< UART4 global Interrupt */ - UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ - TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ - DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ - DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ - DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ - DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ -#endif -} IRQn_Type; - -/** - * @} - */ - -#include "core_cm3.h" -#include "system_stm32f10x.h" -//#include - -/** @addtogroup Exported_types - * @{ - */ - -/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy prupose) */ -typedef int32_t s32; -typedef int16_t s16; -typedef int8_t s8; - -typedef const int32_t sc32; /*!< Read Only */ -typedef const int16_t sc16; /*!< Read Only */ -typedef const int8_t sc8; /*!< Read Only */ - -typedef __IO int32_t vs32; -typedef __IO int16_t vs16; -typedef __IO int8_t vs8; - -typedef __I int32_t vsc32; /*!< Read Only */ -typedef __I int16_t vsc16; /*!< Read Only */ -typedef __I int8_t vsc8; /*!< Read Only */ - -typedef uint32_t u32; -typedef uint16_t u16; -typedef uint8_t u8; - -typedef const uint32_t uc32; /*!< Read Only */ -typedef const uint16_t uc16; /*!< Read Only */ -typedef const uint8_t uc8; /*!< Read Only */ - -typedef __IO uint32_t vu32; -typedef __IO uint16_t vu16; -typedef __IO uint8_t vu8; - -typedef __I uint32_t vuc32; /*!< Read Only */ -typedef __I uint16_t vuc16; /*!< Read Only */ -typedef __I uint8_t vuc8; /*!< Read Only */ - -typedef enum {FALSE = 0, TRUE = !FALSE} bool; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; - -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; -#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) - -typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -/** - * @} - */ - -/** @addtogroup Peripheral_registers_structures - * @{ - */ - -/** - * @brief Analog to Digital Converter - */ - -typedef struct -{ - __IO uint32_t SR; - __IO uint32_t CR1; - __IO uint32_t CR2; - __IO uint32_t SMPR1; - __IO uint32_t SMPR2; - __IO uint32_t JOFR1; - __IO uint32_t JOFR2; - __IO uint32_t JOFR3; - __IO uint32_t JOFR4; - __IO uint32_t HTR; - __IO uint32_t LTR; - __IO uint32_t SQR1; - __IO uint32_t SQR2; - __IO uint32_t SQR3; - __IO uint32_t JSQR; - __IO uint32_t JDR1; - __IO uint32_t JDR2; - __IO uint32_t JDR3; - __IO uint32_t JDR4; - __IO uint32_t DR; -} ADC_TypeDef; - -/** - * @brief Backup Registers - */ - -typedef struct -{ - uint32_t RESERVED0; - __IO uint16_t DR1; - uint16_t RESERVED1; - __IO uint16_t DR2; - uint16_t RESERVED2; - __IO uint16_t DR3; - uint16_t RESERVED3; - __IO uint16_t DR4; - uint16_t RESERVED4; - __IO uint16_t DR5; - uint16_t RESERVED5; - __IO uint16_t DR6; - uint16_t RESERVED6; - __IO uint16_t DR7; - uint16_t RESERVED7; - __IO uint16_t DR8; - uint16_t RESERVED8; - __IO uint16_t DR9; - uint16_t RESERVED9; - __IO uint16_t DR10; - uint16_t RESERVED10; - __IO uint16_t RTCCR; - uint16_t RESERVED11; - __IO uint16_t CR; - uint16_t RESERVED12; - __IO uint16_t CSR; - uint16_t RESERVED13[5]; - __IO uint16_t DR11; - uint16_t RESERVED14; - __IO uint16_t DR12; - uint16_t RESERVED15; - __IO uint16_t DR13; - uint16_t RESERVED16; - __IO uint16_t DR14; - uint16_t RESERVED17; - __IO uint16_t DR15; - uint16_t RESERVED18; - __IO uint16_t DR16; - uint16_t RESERVED19; - __IO uint16_t DR17; - uint16_t RESERVED20; - __IO uint16_t DR18; - uint16_t RESERVED21; - __IO uint16_t DR19; - uint16_t RESERVED22; - __IO uint16_t DR20; - uint16_t RESERVED23; - __IO uint16_t DR21; - uint16_t RESERVED24; - __IO uint16_t DR22; - uint16_t RESERVED25; - __IO uint16_t DR23; - uint16_t RESERVED26; - __IO uint16_t DR24; - uint16_t RESERVED27; - __IO uint16_t DR25; - uint16_t RESERVED28; - __IO uint16_t DR26; - uint16_t RESERVED29; - __IO uint16_t DR27; - uint16_t RESERVED30; - __IO uint16_t DR28; - uint16_t RESERVED31; - __IO uint16_t DR29; - uint16_t RESERVED32; - __IO uint16_t DR30; - uint16_t RESERVED33; - __IO uint16_t DR31; - uint16_t RESERVED34; - __IO uint16_t DR32; - uint16_t RESERVED35; - __IO uint16_t DR33; - uint16_t RESERVED36; - __IO uint16_t DR34; - uint16_t RESERVED37; - __IO uint16_t DR35; - uint16_t RESERVED38; - __IO uint16_t DR36; - uint16_t RESERVED39; - __IO uint16_t DR37; - uint16_t RESERVED40; - __IO uint16_t DR38; - uint16_t RESERVED41; - __IO uint16_t DR39; - uint16_t RESERVED42; - __IO uint16_t DR40; - uint16_t RESERVED43; - __IO uint16_t DR41; - uint16_t RESERVED44; - __IO uint16_t DR42; - uint16_t RESERVED45; -} BKP_TypeDef; - -/** - * @brief Controller Area Network TxMailBox - */ - -typedef struct -{ - __IO uint32_t TIR; - __IO uint32_t TDTR; - __IO uint32_t TDLR; - __IO uint32_t TDHR; -} CAN_TxMailBox_TypeDef; - -/** - * @brief Controller Area Network FIFOMailBox - */ - -typedef struct -{ - __IO uint32_t RIR; - __IO uint32_t RDTR; - __IO uint32_t RDLR; - __IO uint32_t RDHR; -} CAN_FIFOMailBox_TypeDef; - -/** - * @brief Controller Area Network FilterRegister - */ - -typedef struct -{ - __IO uint32_t FR1; - __IO uint32_t FR2; -} CAN_FilterRegister_TypeDef; - -/** - * @brief Controller Area Network - */ - -typedef struct -{ - __IO uint32_t MCR; - __IO uint32_t MSR; - __IO uint32_t TSR; - __IO uint32_t RF0R; - __IO uint32_t RF1R; - __IO uint32_t IER; - __IO uint32_t ESR; - __IO uint32_t BTR; - uint32_t RESERVED0[88]; - CAN_TxMailBox_TypeDef sTxMailBox[3]; - CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; - uint32_t RESERVED1[12]; - __IO uint32_t FMR; - __IO uint32_t FM1R; - uint32_t RESERVED2; - __IO uint32_t FS1R; - uint32_t RESERVED3; - __IO uint32_t FFA1R; - uint32_t RESERVED4; - __IO uint32_t FA1R; - uint32_t RESERVED5[8]; - CAN_FilterRegister_TypeDef sFilterRegister[14]; -} CAN_TypeDef; - -/** - * @brief CRC calculation unit - */ - -typedef struct -{ - __IO uint32_t DR; - __IO uint8_t IDR; - uint8_t RESERVED0; - uint16_t RESERVED1; - __IO uint32_t CR; -} CRC_TypeDef; - -/** - * @brief Digital to Analog Converter - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t SWTRIGR; - __IO uint32_t DHR12R1; - __IO uint32_t DHR12L1; - __IO uint32_t DHR8R1; - __IO uint32_t DHR12R2; - __IO uint32_t DHR12L2; - __IO uint32_t DHR8R2; - __IO uint32_t DHR12RD; - __IO uint32_t DHR12LD; - __IO uint32_t DHR8RD; - __IO uint32_t DOR1; - __IO uint32_t DOR2; -} DAC_TypeDef; - -/** - * @brief Debug MCU - */ - -typedef struct -{ - __IO uint32_t IDCODE; - __IO uint32_t CR; -}DBGMCU_TypeDef; - -/** - * @brief DMA Controller - */ - -typedef struct -{ - __IO uint32_t CCR; - __IO uint32_t CNDTR; - __IO uint32_t CPAR; - __IO uint32_t CMAR; -} DMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t ISR; - __IO uint32_t IFCR; -} DMA_TypeDef; - -/** - * @brief External Interrupt/Event Controller - */ - -typedef struct -{ - __IO uint32_t IMR; - __IO uint32_t EMR; - __IO uint32_t RTSR; - __IO uint32_t FTSR; - __IO uint32_t SWIER; - __IO uint32_t PR; -} EXTI_TypeDef; - -/** - * @brief FLASH Registers - */ - -typedef struct -{ - __IO uint32_t ACR; - __IO uint32_t KEYR; - __IO uint32_t OPTKEYR; - __IO uint32_t SR; - __IO uint32_t CR; - __IO uint32_t AR; - __IO uint32_t RESERVED; - __IO uint32_t OBR; - __IO uint32_t WRPR; -} FLASH_TypeDef; - -/** - * @brief Option Bytes Registers - */ - -typedef struct -{ - __IO uint16_t RDP; - __IO uint16_t USER; - __IO uint16_t Data0; - __IO uint16_t Data1; - __IO uint16_t WRP0; - __IO uint16_t WRP1; - __IO uint16_t WRP2; - __IO uint16_t WRP3; -} OB_TypeDef; - -/** - * @brief Flexible Static Memory Controller - */ - -typedef struct -{ - __IO uint32_t BTCR[8]; -} FSMC_Bank1_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank1E - */ - -typedef struct -{ - __IO uint32_t BWTR[7]; -} FSMC_Bank1E_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank2 - */ - -typedef struct -{ - __IO uint32_t PCR2; - __IO uint32_t SR2; - __IO uint32_t PMEM2; - __IO uint32_t PATT2; - uint32_t RESERVED0; - __IO uint32_t ECCR2; -} FSMC_Bank2_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank3 - */ - -typedef struct -{ - __IO uint32_t PCR3; - __IO uint32_t SR3; - __IO uint32_t PMEM3; - __IO uint32_t PATT3; - uint32_t RESERVED0; - __IO uint32_t ECCR3; -} FSMC_Bank3_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank4 - */ - -typedef struct -{ - __IO uint32_t PCR4; - __IO uint32_t SR4; - __IO uint32_t PMEM4; - __IO uint32_t PATT4; - __IO uint32_t PIO4; -} FSMC_Bank4_TypeDef; - -/** - * @brief General Purpose IO - */ - -typedef struct -{ - __IO uint32_t CRL; - __IO uint32_t CRH; - __IO uint32_t IDR; - __IO uint32_t ODR; - __IO uint32_t BSRR; - __IO uint32_t BRR; - __IO uint32_t LCKR; -} GPIO_TypeDef; - -/** - * @brief Alternate Function IO - */ - -typedef struct -{ - __IO uint32_t EVCR; - __IO uint32_t MAPR; - __IO uint32_t EXTICR[4]; -} AFIO_TypeDef; -/** - * @brief Inter-integrated Circuit Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t OAR1; - uint16_t RESERVED2; - __IO uint16_t OAR2; - uint16_t RESERVED3; - __IO uint16_t DR; - uint16_t RESERVED4; - __IO uint16_t SR1; - uint16_t RESERVED5; - __IO uint16_t SR2; - uint16_t RESERVED6; - __IO uint16_t CCR; - uint16_t RESERVED7; - __IO uint16_t TRISE; - uint16_t RESERVED8; -} I2C_TypeDef; - -/** - * @brief Independent WATCHDOG - */ - -typedef struct -{ - __IO uint32_t KR; - __IO uint32_t PR; - __IO uint32_t RLR; - __IO uint32_t SR; -} IWDG_TypeDef; - -/** - * @brief Power Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CSR; -} PWR_TypeDef; - -/** - * @brief Reset and Clock Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFGR; - __IO uint32_t CIR; - __IO uint32_t APB2RSTR; - __IO uint32_t APB1RSTR; - __IO uint32_t AHBENR; - __IO uint32_t APB2ENR; - __IO uint32_t APB1ENR; - __IO uint32_t BDCR; - __IO uint32_t CSR; -} RCC_TypeDef; - -/** - * @brief Real-Time Clock - */ - -typedef struct -{ - __IO uint16_t CRH; - uint16_t RESERVED0; - __IO uint16_t CRL; - uint16_t RESERVED1; - __IO uint16_t PRLH; - uint16_t RESERVED2; - __IO uint16_t PRLL; - uint16_t RESERVED3; - __IO uint16_t DIVH; - uint16_t RESERVED4; - __IO uint16_t DIVL; - uint16_t RESERVED5; - __IO uint16_t CNTH; - uint16_t RESERVED6; - __IO uint16_t CNTL; - uint16_t RESERVED7; - __IO uint16_t ALRH; - uint16_t RESERVED8; - __IO uint16_t ALRL; - uint16_t RESERVED9; -} RTC_TypeDef; - -/** - * @brief SD host Interface - */ - -typedef struct -{ - __IO uint32_t POWER; - __IO uint32_t CLKCR; - __IO uint32_t ARG; - __IO uint32_t CMD; - __I uint32_t RESPCMD; - __I uint32_t RESP1; - __I uint32_t RESP2; - __I uint32_t RESP3; - __I uint32_t RESP4; - __IO uint32_t DTIMER; - __IO uint32_t DLEN; - __IO uint32_t DCTRL; - __I uint32_t DCOUNT; - __I uint32_t STA; - __IO uint32_t ICR; - __IO uint32_t MASK; - uint32_t RESERVED0[2]; - __I uint32_t FIFOCNT; - uint32_t RESERVED1[13]; - __IO uint32_t FIFO; -} SDIO_TypeDef; - -/** - * @brief Serial Peripheral Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SR; - uint16_t RESERVED2; - __IO uint16_t DR; - uint16_t RESERVED3; - __IO uint16_t CRCPR; - uint16_t RESERVED4; - __IO uint16_t RXCRCR; - uint16_t RESERVED5; - __IO uint16_t TXCRCR; - uint16_t RESERVED6; - __IO uint16_t I2SCFGR; - uint16_t RESERVED7; - __IO uint16_t I2SPR; - uint16_t RESERVED8; -} SPI_TypeDef; - -/** - * @brief TIM - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SMCR; - uint16_t RESERVED2; - __IO uint16_t DIER; - uint16_t RESERVED3; - __IO uint16_t SR; - uint16_t RESERVED4; - __IO uint16_t EGR; - uint16_t RESERVED5; - __IO uint16_t CCMR1; - uint16_t RESERVED6; - __IO uint16_t CCMR2; - uint16_t RESERVED7; - __IO uint16_t CCER; - uint16_t RESERVED8; - __IO uint16_t CNT; - uint16_t RESERVED9; - __IO uint16_t PSC; - uint16_t RESERVED10; - __IO uint16_t ARR; - uint16_t RESERVED11; - __IO uint16_t RCR; - uint16_t RESERVED12; - __IO uint16_t CCR1; - uint16_t RESERVED13; - __IO uint16_t CCR2; - uint16_t RESERVED14; - __IO uint16_t CCR3; - uint16_t RESERVED15; - __IO uint16_t CCR4; - uint16_t RESERVED16; - __IO uint16_t BDTR; - uint16_t RESERVED17; - __IO uint16_t DCR; - uint16_t RESERVED18; - __IO uint16_t DMAR; - uint16_t RESERVED19; -} TIM_TypeDef; - -/** - * @brief Universal Synchronous Asynchronous Receiver Transmitter - */ - -typedef struct -{ - __IO uint16_t SR; - uint16_t RESERVED0; - __IO uint16_t DR; - uint16_t RESERVED1; - __IO uint16_t BRR; - uint16_t RESERVED2; - __IO uint16_t CR1; - uint16_t RESERVED3; - __IO uint16_t CR2; - uint16_t RESERVED4; - __IO uint16_t CR3; - uint16_t RESERVED5; - __IO uint16_t GTPR; - uint16_t RESERVED6; -} USART_TypeDef; - -/** - * @brief Window WATCHDOG - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFR; - __IO uint32_t SR; -} WWDG_TypeDef; - -/** - * @} - */ - -/** @addtogroup Peripheral_memory_map - * @{ - */ - -#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the alias region */ -#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the alias region */ - -#define SRAM_BASE ((uint32_t)0x20000000) /*!< Peripheral base address in the bit-band region */ -#define PERIPH_BASE ((uint32_t)0x40000000) /*!< SRAM base address in the bit-band region */ - -#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ - -/*!< Peripheral memory map */ -#define APB1PERIPH_BASE PERIPH_BASE -#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) -#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) - -#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) -#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) -#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) -#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) -#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) -#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) -#define RTC_BASE (APB1PERIPH_BASE + 0x2800) -#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) -#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) -#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) -#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) -#define USART2_BASE (APB1PERIPH_BASE + 0x4400) -#define USART3_BASE (APB1PERIPH_BASE + 0x4800) -#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) -#define UART5_BASE (APB1PERIPH_BASE + 0x5000) -#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) -#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) -#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) -#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) -#define PWR_BASE (APB1PERIPH_BASE + 0x7000) -#define DAC_BASE (APB1PERIPH_BASE + 0x7400) - -#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) -#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) -#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) -#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) -#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) -#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) -#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) -#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) -#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) -#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) -#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) -#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) -#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) -#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) -#define USART1_BASE (APB2PERIPH_BASE + 0x3800) -#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) - -#define SDIO_BASE (PERIPH_BASE + 0x18000) - -#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) -#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) -#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) -#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) -#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) -#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) -#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) -#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) -#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) -#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) -#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) -#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) -#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) -#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) -#define RCC_BASE (AHBPERIPH_BASE + 0x1000) -#define CRC_BASE (AHBPERIPH_BASE + 0x3000) - -#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */ -#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ - -#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ -#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ -#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!< FSMC Bank2 registers base address */ -#define FSMC_Bank3_R_BASE (FSMC_R_BASE + 0x0080) /*!< FSMC Bank3 registers base address */ -#define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!< FSMC Bank4 registers base address */ - -#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ - -/** - * @} - */ - -/** @addtogroup Peripheral_declaration - * @{ - */ - -#define TIM2 ((TIM_TypeDef *) TIM2_BASE) -#define TIM3 ((TIM_TypeDef *) TIM3_BASE) -#define TIM4 ((TIM_TypeDef *) TIM4_BASE) -#define TIM5 ((TIM_TypeDef *) TIM5_BASE) -#define TIM6 ((TIM_TypeDef *) TIM6_BASE) -#define TIM7 ((TIM_TypeDef *) TIM7_BASE) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define WWDG ((WWDG_TypeDef *) WWDG_BASE) -#define IWDG ((IWDG_TypeDef *) IWDG_BASE) -#define SPI2 ((SPI_TypeDef *) SPI2_BASE) -#define SPI3 ((SPI_TypeDef *) SPI3_BASE) -#define USART2 ((USART_TypeDef *) USART2_BASE) -#define USART3 ((USART_TypeDef *) USART3_BASE) -#define UART4 ((USART_TypeDef *) UART4_BASE) -#define UART5 ((USART_TypeDef *) UART5_BASE) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C2 ((I2C_TypeDef *) I2C2_BASE) -#define CAN1 ((CAN_TypeDef *) CAN1_BASE) -#define BKP ((BKP_TypeDef *) BKP_BASE) -#define PWR ((PWR_TypeDef *) PWR_BASE) -#define DAC ((DAC_TypeDef *) DAC_BASE) -#define AFIO ((AFIO_TypeDef *) AFIO_BASE) -#define EXTI ((EXTI_TypeDef *) EXTI_BASE) -#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) -#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) -#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) -#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) -#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) -#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) -#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) -#define ADC1 ((ADC_TypeDef *) ADC1_BASE) -#define ADC2 ((ADC_TypeDef *) ADC2_BASE) -#define TIM1 ((TIM_TypeDef *) TIM1_BASE) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define TIM8 ((TIM_TypeDef *) TIM8_BASE) -#define USART1 ((USART_TypeDef *) USART1_BASE) -#define ADC3 ((ADC_TypeDef *) ADC3_BASE) -#define SDIO ((SDIO_TypeDef *) SDIO_BASE) -#define DMA1 ((DMA_TypeDef *) DMA1_BASE) -#define DMA2 ((DMA_TypeDef *) DMA2_BASE) -#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) -#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) -#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) -#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) -#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) -#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) -#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) -#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) -#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) -#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) -#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) -#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) -#define RCC ((RCC_TypeDef *) RCC_BASE) -#define CRC ((CRC_TypeDef *) CRC_BASE) -#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) -#define OB ((OB_TypeDef *) OB_BASE) -#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) -#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) -#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) -#define FSMC_Bank3 ((FSMC_Bank3_TypeDef *) FSMC_Bank3_R_BASE) -#define FSMC_Bank4 ((FSMC_Bank4_TypeDef *) FSMC_Bank4_R_BASE) -#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) - -/** - * @} - */ - -/** @addtogroup Exported_constants - * @{ - */ - - /** @addtogroup Peripheral_Registers_Bits_Definition - * @{ - */ - -/******************************************************************************/ -/* Peripheral Registers_Bits_Definition */ -/******************************************************************************/ - -/******************************************************************************/ -/* */ -/* CRC calculation unit */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for CRC_DR register *********************/ -#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ - - -/******************* Bit definition for CRC_IDR register ********************/ -#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ - - -/******************** Bit definition for CRC_CR register ********************/ -#define CRC_CR_RESET ((uint8_t)0x01) /*!< RESET bit */ - -/******************************************************************************/ -/* */ -/* Power Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for PWR_CR register ********************/ -#define PWR_CR_LPDS ((uint16_t)0x0001) /*!< Low-Power Deepsleep */ -#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ -#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ -#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ -#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ - -#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ -#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ -#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ -#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ - -/*!< PVD level configuration */ -#define PWR_CR_PLS_2V2 ((uint16_t)0x0000) /*!< PVD level 2.2V */ -#define PWR_CR_PLS_2V3 ((uint16_t)0x0020) /*!< PVD level 2.3V */ -#define PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!< PVD level 2.4V */ -#define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!< PVD level 2.5V */ -#define PWR_CR_PLS_2V6 ((uint16_t)0x0080) /*!< PVD level 2.6V */ -#define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!< PVD level 2.7V */ -#define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!< PVD level 2.8V */ -#define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!< PVD level 2.9V */ - -#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ - - -/******************* Bit definition for PWR_CSR register ********************/ -#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ -#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ -#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ -#define PWR_CSR_EWUP ((uint16_t)0x0100) /*!< Enable WKUP pin */ - -/******************************************************************************/ -/* */ -/* Backup registers */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for BKP_DR1 register ********************/ -#define BKP_DR1_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR2 register ********************/ -#define BKP_DR2_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR3 register ********************/ -#define BKP_DR3_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR4 register ********************/ -#define BKP_DR4_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR5 register ********************/ -#define BKP_DR5_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR6 register ********************/ -#define BKP_DR6_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR7 register ********************/ -#define BKP_DR7_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR8 register ********************/ -#define BKP_DR8_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR9 register ********************/ -#define BKP_DR9_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR10 register *******************/ -#define BKP_DR10_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR11 register *******************/ -#define BKP_DR11_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR12 register *******************/ -#define BKP_DR12_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR13 register *******************/ -#define BKP_DR13_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR14 register *******************/ -#define BKP_DR14_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR15 register *******************/ -#define BKP_DR15_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR16 register *******************/ -#define BKP_DR16_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR17 register *******************/ -#define BKP_DR17_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_DR18 register ********************/ -#define BKP_DR18_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR19 register *******************/ -#define BKP_DR19_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR20 register *******************/ -#define BKP_DR20_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR21 register *******************/ -#define BKP_DR21_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR22 register *******************/ -#define BKP_DR22_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR23 register *******************/ -#define BKP_DR23_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR24 register *******************/ -#define BKP_DR24_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR25 register *******************/ -#define BKP_DR25_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR26 register *******************/ -#define BKP_DR26_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR27 register *******************/ -#define BKP_DR27_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR28 register *******************/ -#define BKP_DR28_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR29 register *******************/ -#define BKP_DR29_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR30 register *******************/ -#define BKP_DR30_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR31 register *******************/ -#define BKP_DR31_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR32 register *******************/ -#define BKP_DR32_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR33 register *******************/ -#define BKP_DR33_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR34 register *******************/ -#define BKP_DR34_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR35 register *******************/ -#define BKP_DR35_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR36 register *******************/ -#define BKP_DR36_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR37 register *******************/ -#define BKP_DR37_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR38 register *******************/ -#define BKP_DR38_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR39 register *******************/ -#define BKP_DR39_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR40 register *******************/ -#define BKP_DR40_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR41 register *******************/ -#define BKP_DR41_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR42 register *******************/ -#define BKP_DR42_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_RTCCR register *******************/ -#define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!< Calibration value */ -#define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!< Calibration Clock Output */ -#define BKP_RTCCR_ASOE ((uint16_t)0x0100) /*!< Alarm or Second Output Enable */ -#define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!< Alarm or Second Output Selection */ - -/******************** Bit definition for BKP_CR register ********************/ -#define BKP_CR_TPE ((uint8_t)0x01) /*!< TAMPER pin enable */ -#define BKP_CR_TPAL ((uint8_t)0x02) /*!< TAMPER pin active level */ - -/******************* Bit definition for BKP_CSR register ********************/ -#define BKP_CSR_CTE ((uint16_t)0x0001) /*!< Clear Tamper event */ -#define BKP_CSR_CTI ((uint16_t)0x0002) /*!< Clear Tamper Interrupt */ -#define BKP_CSR_TPIE ((uint16_t)0x0004) /*!< TAMPER Pin interrupt enable */ -#define BKP_CSR_TEF ((uint16_t)0x0100) /*!< Tamper Event Flag */ -#define BKP_CSR_TIF ((uint16_t)0x0200) /*!< Tamper Interrupt Flag */ - -/******************************************************************************/ -/* */ -/* Reset and Clock Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for RCC_CR register ********************/ -#define RCC_CR_HSION ((uint32_t)0x00000001) /*!< Internal High Speed clock enable */ -#define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!< Internal High Speed clock ready flag */ -#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!< Internal High Speed clock trimming */ -#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!< Internal High Speed clock Calibration */ -#define RCC_CR_HSEON ((uint32_t)0x00010000) /*!< External High Speed clock enable */ -#define RCC_CR_HSERDY ((uint32_t)0x00020000) /*!< External High Speed clock ready flag */ -#define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!< External High Speed clock Bypass */ -#define RCC_CR_CSSON ((uint32_t)0x00080000) /*!< Clock Security System enable */ -#define RCC_CR_PLLON ((uint32_t)0x01000000) /*!< PLL enable */ -#define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!< PLL clock ready flag */ - -/******************* Bit definition for RCC_CFGR register *******************/ -#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ -#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -/*!< SW configuration */ -#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ -#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ -#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ - -#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ -#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -/*!< SWS configuration */ -#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ -#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ -#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ - -#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ -#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ -#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ -#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ - -/*!< HPRE configuration */ -#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ -#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ -#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ -#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ -#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ -#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ -#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ -#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ -#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ - -#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ -#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -/*!< PPRE1 configuration */ -#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ - -#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ -#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ -#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ -#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ - -/*!< PPRE2 configuration */ -#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ - -#define RCC_CFGR_ADCPRE ((uint32_t)0x0000C000) /*!< ADCPRE[1:0] bits (ADC prescaler) */ -#define RCC_CFGR_ADCPRE_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define RCC_CFGR_ADCPRE_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -/*!< ADCPPRE configuration */ -#define RCC_CFGR_ADCPRE_DIV2 ((uint32_t)0x00000000) /*!< PCLK2 divided by 2 */ -#define RCC_CFGR_ADCPRE_DIV4 ((uint32_t)0x00004000) /*!< PCLK2 divided by 4 */ -#define RCC_CFGR_ADCPRE_DIV6 ((uint32_t)0x00008000) /*!< PCLK2 divided by 6 */ -#define RCC_CFGR_ADCPRE_DIV8 ((uint32_t)0x0000C000) /*!< PCLK2 divided by 8 */ - -#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ -#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ - -#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ -#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ -#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ -#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ - -/*!< PLLMUL configuration */ -#define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ -#define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ -#define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ -#define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ -#define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ -#define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ -#define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ -#define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ -#define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ -#define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ -#define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ -#define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ -#define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ -#define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ -#define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ - -#define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB prescaler */ - -#define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ -#define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ -#define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - -/*!< MCO configuration */ -#define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ -#define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected */ -#define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< Internal 8 MHz RC oscillator clock selected */ -#define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< External 1-25 MHz oscillator clock selected */ -#define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected*/ - -/*!<****************** Bit definition for RCC_CIR register ********************/ -#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ -#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ -#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ -#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ -#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ -#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ -#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ -#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ -#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ -#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ -#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ -#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ -#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ -#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ -#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ -#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ -#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ - -/***************** Bit definition for RCC_APB2RSTR register *****************/ -#define RCC_APB2RSTR_AFIORST ((uint16_t)0x0001) /*!< Alternate Function I/O reset */ -#define RCC_APB2RSTR_IOPARST ((uint16_t)0x0004) /*!< I/O port A reset */ -#define RCC_APB2RSTR_IOPBRST ((uint16_t)0x0008) /*!< IO port B reset */ -#define RCC_APB2RSTR_IOPCRST ((uint16_t)0x0010) /*!< IO port C reset */ -#define RCC_APB2RSTR_IOPDRST ((uint16_t)0x0020) /*!< IO port D reset */ -#define RCC_APB2RSTR_IOPERST ((uint16_t)0x0040) /*!< IO port E reset */ -#define RCC_APB2RSTR_IOPFRST ((uint16_t)0x0080) /*!< IO port F reset */ -#define RCC_APB2RSTR_IOPGRST ((uint16_t)0x0100) /*!< IO port G reset */ -#define RCC_APB2RSTR_ADC1RST ((uint16_t)0x0200) /*!< ADC 1 interface reset */ -#define RCC_APB2RSTR_ADC2RST ((uint16_t)0x0400) /*!< ADC 2 interface reset */ -#define RCC_APB2RSTR_TIM1RST ((uint16_t)0x0800) /*!< TIM1 Timer reset */ -#define RCC_APB2RSTR_SPI1RST ((uint16_t)0x1000) /*!< SPI 1 reset */ -#define RCC_APB2RSTR_TIM8RST ((uint16_t)0x2000) /*!< TIM8 Timer reset */ -#define RCC_APB2RSTR_USART1RST ((uint16_t)0x4000) /*!< USART1 reset */ -#define RCC_APB2RSTR_ADC3RST ((uint16_t)0x8000) /*!< ADC3 interface reset */ - -/***************** Bit definition for RCC_APB1RSTR register *****************/ -#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ -#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ -#define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ -#define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ -#define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ -#define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ -#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ -#define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI 2 reset */ -#define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ -#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ -#define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< RUSART 3 reset */ -#define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< USART 4 reset */ -#define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< USART 5 reset */ -#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ -#define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ -#define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB reset */ -#define RCC_APB1RSTR_CANRST ((uint32_t)0x02000000) /*!< CAN reset */ -#define RCC_APB1RSTR_BKPRST ((uint32_t)0x08000000) /*!< Backup interface reset */ -#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< Power interface reset */ -#define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ - -/****************** Bit definition for RCC_AHBENR register ******************/ -#define RCC_AHBENR_DMA1EN ((uint16_t)0x0001) /*!< DMA1 clock enable */ -#define RCC_AHBENR_DMA2EN ((uint16_t)0x0002) /*!< DMA2 clock enable */ -#define RCC_AHBENR_SRAMEN ((uint16_t)0x0004) /*!< SRAM interface clock enable */ -#define RCC_AHBENR_FLITFEN ((uint16_t)0x0010) /*!< FLITF clock enable */ -#define RCC_AHBENR_CRCEN ((uint16_t)0x0040) /*!< CRC clock enable */ -#define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ -#define RCC_AHBENR_SDIOEN ((uint16_t)0x0400) /*!< SDIO clock enable */ - -/****************** Bit definition for RCC_APB2ENR register *****************/ -#define RCC_APB2ENR_AFIOEN ((uint16_t)0x0001) /*!< Alternate Function I/O clock enable */ -#define RCC_APB2ENR_IOPAEN ((uint16_t)0x0004) /*!< I/O port A clock enable */ -#define RCC_APB2ENR_IOPBEN ((uint16_t)0x0008) /*!< I/O port B clock enable */ -#define RCC_APB2ENR_IOPCEN ((uint16_t)0x0010) /*!< I/O port C clock enable */ -#define RCC_APB2ENR_IOPDEN ((uint16_t)0x0020) /*!< I/O port D clock enable */ -#define RCC_APB2ENR_IOPEEN ((uint16_t)0x0040) /*!< I/O port E clock enable */ -#define RCC_APB2ENR_IOPFEN ((uint16_t)0x0080) /*!< I/O port F clock enable */ -#define RCC_APB2ENR_IOPGEN ((uint16_t)0x0100) /*!< I/O port G clock enable */ -#define RCC_APB2ENR_ADC1EN ((uint16_t)0x0200) /*!< ADC 1 interface clock enable */ -#define RCC_APB2ENR_ADC2EN ((uint16_t)0x0400) /*!< ADC 2 interface clock enable */ -#define RCC_APB2ENR_TIM1EN ((uint16_t)0x0800) /*!< TIM1 Timer clock enable */ -#define RCC_APB2ENR_SPI1EN ((uint16_t)0x1000) /*!< SPI 1 clock enable */ -#define RCC_APB2ENR_TIM8EN ((uint16_t)0x2000) /*!< TIM8 Timer clock enable */ -#define RCC_APB2ENR_USART1EN ((uint16_t)0x4000) /*!< USART1 clock enable */ -#define RCC_APB2ENR_ADC3EN ((uint16_t)0x8000) /*!< DMA1 clock enable */ - -/***************** Bit definition for RCC_APB1ENR register ******************/ -#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enabled*/ -#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ -#define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ -#define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ -#define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ -#define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ -#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ -#define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI 2 clock enable */ -#define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ -#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ -#define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ -#define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< USART 4 clock enable */ -#define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< USART 5 clock enable */ -#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ -#define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ -#define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB clock enable */ -#define RCC_APB1ENR_CANEN ((uint32_t)0x02000000) /*!< CAN clock enable */ -#define RCC_APB1ENR_BKPEN ((uint32_t)0x08000000) /*!< Backup interface clock enable */ -#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< Power interface clock enable */ -#define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ - -/******************* Bit definition for RCC_BDCR register *******************/ -#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ -#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ -#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ - -#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ -#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< RTC congiguration */ -#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ -#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 128 used as RTC clock */ - -#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ -#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ - -/******************* Bit definition for RCC_CSR register ********************/ -#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ -#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ -#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ -#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ -#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ -#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ -#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ -#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ -#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ - -/******************************************************************************/ -/* */ -/* General Purpose and Alternate Function IO */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for GPIO_CRL register *******************/ -#define GPIO_CRL_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRL_MODE0 ((uint32_t)0x00000003) /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ -#define GPIO_CRL_MODE0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRL_MODE0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRL_MODE1 ((uint32_t)0x00000030) /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ -#define GPIO_CRL_MODE1_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRL_MODE1_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRL_MODE2 ((uint32_t)0x00000300) /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ -#define GPIO_CRL_MODE2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRL_MODE2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRL_MODE3 ((uint32_t)0x00003000) /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ -#define GPIO_CRL_MODE3_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRL_MODE3_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE4 ((uint32_t)0x00030000) /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ -#define GPIO_CRL_MODE4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRL_MODE4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE5 ((uint32_t)0x00300000) /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ -#define GPIO_CRL_MODE5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRL_MODE5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE6 ((uint32_t)0x03000000) /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ -#define GPIO_CRL_MODE6_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE6_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE7 ((uint32_t)0x30000000) /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ -#define GPIO_CRL_MODE7_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE7_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRL_CNF0 ((uint32_t)0x0000000C) /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ -#define GPIO_CRL_CNF0_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRL_CNF0_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRL_CNF1 ((uint32_t)0x000000C0) /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ -#define GPIO_CRL_CNF1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRL_CNF1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRL_CNF2 ((uint32_t)0x00000C00) /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ -#define GPIO_CRL_CNF2_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRL_CNF2_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRL_CNF3 ((uint32_t)0x0000C000) /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ -#define GPIO_CRL_CNF3_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRL_CNF3_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF4 ((uint32_t)0x000C0000) /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ -#define GPIO_CRL_CNF4_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRL_CNF4_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF5 ((uint32_t)0x00C00000) /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ -#define GPIO_CRL_CNF5_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRL_CNF5_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF6 ((uint32_t)0x0C000000) /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ -#define GPIO_CRL_CNF6_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF6_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF7 ((uint32_t)0xC0000000) /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ -#define GPIO_CRL_CNF7_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF7_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/******************* Bit definition for GPIO_CRH register *******************/ -#define GPIO_CRH_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRH_MODE8 ((uint32_t)0x00000003) /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ -#define GPIO_CRH_MODE8_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRH_MODE8_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRH_MODE9 ((uint32_t)0x00000030) /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ -#define GPIO_CRH_MODE9_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRH_MODE9_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRH_MODE10 ((uint32_t)0x00000300) /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ -#define GPIO_CRH_MODE10_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRH_MODE10_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRH_MODE11 ((uint32_t)0x00003000) /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ -#define GPIO_CRH_MODE11_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRH_MODE11_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE12 ((uint32_t)0x00030000) /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ -#define GPIO_CRH_MODE12_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRH_MODE12_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE13 ((uint32_t)0x00300000) /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ -#define GPIO_CRH_MODE13_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRH_MODE13_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE14 ((uint32_t)0x03000000) /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ -#define GPIO_CRH_MODE14_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE14_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE15 ((uint32_t)0x30000000) /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ -#define GPIO_CRH_MODE15_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE15_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRH_CNF8 ((uint32_t)0x0000000C) /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ -#define GPIO_CRH_CNF8_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRH_CNF8_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRH_CNF9 ((uint32_t)0x000000C0) /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ -#define GPIO_CRH_CNF9_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRH_CNF9_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRH_CNF10 ((uint32_t)0x00000C00) /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ -#define GPIO_CRH_CNF10_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRH_CNF10_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRH_CNF11 ((uint32_t)0x0000C000) /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ -#define GPIO_CRH_CNF11_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRH_CNF11_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF12 ((uint32_t)0x000C0000) /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ -#define GPIO_CRH_CNF12_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRH_CNF12_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF13 ((uint32_t)0x00C00000) /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ -#define GPIO_CRH_CNF13_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRH_CNF13_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF14 ((uint32_t)0x0C000000) /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ -#define GPIO_CRH_CNF14_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF14_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF15 ((uint32_t)0xC0000000) /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ -#define GPIO_CRH_CNF15_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF15_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/*!<****************** Bit definition for GPIO_IDR register *******************/ -#define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*!< Port input data, bit 0 */ -#define GPIO_IDR_IDR1 ((uint16_t)0x0002) /*!< Port input data, bit 1 */ -#define GPIO_IDR_IDR2 ((uint16_t)0x0004) /*!< Port input data, bit 2 */ -#define GPIO_IDR_IDR3 ((uint16_t)0x0008) /*!< Port input data, bit 3 */ -#define GPIO_IDR_IDR4 ((uint16_t)0x0010) /*!< Port input data, bit 4 */ -#define GPIO_IDR_IDR5 ((uint16_t)0x0020) /*!< Port input data, bit 5 */ -#define GPIO_IDR_IDR6 ((uint16_t)0x0040) /*!< Port input data, bit 6 */ -#define GPIO_IDR_IDR7 ((uint16_t)0x0080) /*!< Port input data, bit 7 */ -#define GPIO_IDR_IDR8 ((uint16_t)0x0100) /*!< Port input data, bit 8 */ -#define GPIO_IDR_IDR9 ((uint16_t)0x0200) /*!< Port input data, bit 9 */ -#define GPIO_IDR_IDR10 ((uint16_t)0x0400) /*!< Port input data, bit 10 */ -#define GPIO_IDR_IDR11 ((uint16_t)0x0800) /*!< Port input data, bit 11 */ -#define GPIO_IDR_IDR12 ((uint16_t)0x1000) /*!< Port input data, bit 12 */ -#define GPIO_IDR_IDR13 ((uint16_t)0x2000) /*!< Port input data, bit 13 */ -#define GPIO_IDR_IDR14 ((uint16_t)0x4000) /*!< Port input data, bit 14 */ -#define GPIO_IDR_IDR15 ((uint16_t)0x8000) /*!< Port input data, bit 15 */ - -/******************* Bit definition for GPIO_ODR register *******************/ -#define GPIO_ODR_ODR0 ((uint16_t)0x0001) /*!< Port output data, bit 0 */ -#define GPIO_ODR_ODR1 ((uint16_t)0x0002) /*!< Port output data, bit 1 */ -#define GPIO_ODR_ODR2 ((uint16_t)0x0004) /*!< Port output data, bit 2 */ -#define GPIO_ODR_ODR3 ((uint16_t)0x0008) /*!< Port output data, bit 3 */ -#define GPIO_ODR_ODR4 ((uint16_t)0x0010) /*!< Port output data, bit 4 */ -#define GPIO_ODR_ODR5 ((uint16_t)0x0020) /*!< Port output data, bit 5 */ -#define GPIO_ODR_ODR6 ((uint16_t)0x0040) /*!< Port output data, bit 6 */ -#define GPIO_ODR_ODR7 ((uint16_t)0x0080) /*!< Port output data, bit 7 */ -#define GPIO_ODR_ODR8 ((uint16_t)0x0100) /*!< Port output data, bit 8 */ -#define GPIO_ODR_ODR9 ((uint16_t)0x0200) /*!< Port output data, bit 9 */ -#define GPIO_ODR_ODR10 ((uint16_t)0x0400) /*!< Port output data, bit 10 */ -#define GPIO_ODR_ODR11 ((uint16_t)0x0800) /*!< Port output data, bit 11 */ -#define GPIO_ODR_ODR12 ((uint16_t)0x1000) /*!< Port output data, bit 12 */ -#define GPIO_ODR_ODR13 ((uint16_t)0x2000) /*!< Port output data, bit 13 */ -#define GPIO_ODR_ODR14 ((uint16_t)0x4000) /*!< Port output data, bit 14 */ -#define GPIO_ODR_ODR15 ((uint16_t)0x8000) /*!< Port output data, bit 15 */ - -/****************** Bit definition for GPIO_BSRR register *******************/ -#define GPIO_BSRR_BS0 ((uint32_t)0x00000001) /*!< Port x Set bit 0 */ -#define GPIO_BSRR_BS1 ((uint32_t)0x00000002) /*!< Port x Set bit 1 */ -#define GPIO_BSRR_BS2 ((uint32_t)0x00000004) /*!< Port x Set bit 2 */ -#define GPIO_BSRR_BS3 ((uint32_t)0x00000008) /*!< Port x Set bit 3 */ -#define GPIO_BSRR_BS4 ((uint32_t)0x00000010) /*!< Port x Set bit 4 */ -#define GPIO_BSRR_BS5 ((uint32_t)0x00000020) /*!< Port x Set bit 5 */ -#define GPIO_BSRR_BS6 ((uint32_t)0x00000040) /*!< Port x Set bit 6 */ -#define GPIO_BSRR_BS7 ((uint32_t)0x00000080) /*!< Port x Set bit 7 */ -#define GPIO_BSRR_BS8 ((uint32_t)0x00000100) /*!< Port x Set bit 8 */ -#define GPIO_BSRR_BS9 ((uint32_t)0x00000200) /*!< Port x Set bit 9 */ -#define GPIO_BSRR_BS10 ((uint32_t)0x00000400) /*!< Port x Set bit 10 */ -#define GPIO_BSRR_BS11 ((uint32_t)0x00000800) /*!< Port x Set bit 11 */ -#define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ -#define GPIO_BSRR_BS13 ((uint32_t)0x00002000) /*!< Port x Set bit 13 */ -#define GPIO_BSRR_BS14 ((uint32_t)0x00004000) /*!< Port x Set bit 14 */ -#define GPIO_BSRR_BS15 ((uint32_t)0x00008000) /*!< Port x Set bit 15 */ - -#define GPIO_BSRR_BR0 ((uint32_t)0x00010000) /*!< Port x Reset bit 0 */ -#define GPIO_BSRR_BR1 ((uint32_t)0x00020000) /*!< Port x Reset bit 1 */ -#define GPIO_BSRR_BR2 ((uint32_t)0x00040000) /*!< Port x Reset bit 2 */ -#define GPIO_BSRR_BR3 ((uint32_t)0x00080000) /*!< Port x Reset bit 3 */ -#define GPIO_BSRR_BR4 ((uint32_t)0x00100000) /*!< Port x Reset bit 4 */ -#define GPIO_BSRR_BR5 ((uint32_t)0x00200000) /*!< Port x Reset bit 5 */ -#define GPIO_BSRR_BR6 ((uint32_t)0x00400000) /*!< Port x Reset bit 6 */ -#define GPIO_BSRR_BR7 ((uint32_t)0x00800000) /*!< Port x Reset bit 7 */ -#define GPIO_BSRR_BR8 ((uint32_t)0x01000000) /*!< Port x Reset bit 8 */ -#define GPIO_BSRR_BR9 ((uint32_t)0x02000000) /*!< Port x Reset bit 9 */ -#define GPIO_BSRR_BR10 ((uint32_t)0x04000000) /*!< Port x Reset bit 10 */ -#define GPIO_BSRR_BR11 ((uint32_t)0x08000000) /*!< Port x Reset bit 11 */ -#define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ -#define GPIO_BSRR_BR13 ((uint32_t)0x20000000) /*!< Port x Reset bit 13 */ -#define GPIO_BSRR_BR14 ((uint32_t)0x40000000) /*!< Port x Reset bit 14 */ -#define GPIO_BSRR_BR15 ((uint32_t)0x80000000) /*!< Port x Reset bit 15 */ - -/******************* Bit definition for GPIO_BRR register *******************/ -#define GPIO_BRR_BR0 ((uint16_t)0x0001) /*!< Port x Reset bit 0 */ -#define GPIO_BRR_BR1 ((uint16_t)0x0002) /*!< Port x Reset bit 1 */ -#define GPIO_BRR_BR2 ((uint16_t)0x0004) /*!< Port x Reset bit 2 */ -#define GPIO_BRR_BR3 ((uint16_t)0x0008) /*!< Port x Reset bit 3 */ -#define GPIO_BRR_BR4 ((uint16_t)0x0010) /*!< Port x Reset bit 4 */ -#define GPIO_BRR_BR5 ((uint16_t)0x0020) /*!< Port x Reset bit 5 */ -#define GPIO_BRR_BR6 ((uint16_t)0x0040) /*!< Port x Reset bit 6 */ -#define GPIO_BRR_BR7 ((uint16_t)0x0080) /*!< Port x Reset bit 7 */ -#define GPIO_BRR_BR8 ((uint16_t)0x0100) /*!< Port x Reset bit 8 */ -#define GPIO_BRR_BR9 ((uint16_t)0x0200) /*!< Port x Reset bit 9 */ -#define GPIO_BRR_BR10 ((uint16_t)0x0400) /*!< Port x Reset bit 10 */ -#define GPIO_BRR_BR11 ((uint16_t)0x0800) /*!< Port x Reset bit 11 */ -#define GPIO_BRR_BR12 ((uint16_t)0x1000) /*!< Port x Reset bit 12 */ -#define GPIO_BRR_BR13 ((uint16_t)0x2000) /*!< Port x Reset bit 13 */ -#define GPIO_BRR_BR14 ((uint16_t)0x4000) /*!< Port x Reset bit 14 */ -#define GPIO_BRR_BR15 ((uint16_t)0x8000) /*!< Port x Reset bit 15 */ - -/****************** Bit definition for GPIO_LCKR register *******************/ -#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) /*!< Port x Lock bit 0 */ -#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) /*!< Port x Lock bit 1 */ -#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) /*!< Port x Lock bit 2 */ -#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) /*!< Port x Lock bit 3 */ -#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) /*!< Port x Lock bit 4 */ -#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) /*!< Port x Lock bit 5 */ -#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) /*!< Port x Lock bit 6 */ -#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) /*!< Port x Lock bit 7 */ -#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) /*!< Port x Lock bit 8 */ -#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) /*!< Port x Lock bit 9 */ -#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) /*!< Port x Lock bit 10 */ -#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) /*!< Port x Lock bit 11 */ -#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) /*!< Port x Lock bit 12 */ -#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) /*!< Port x Lock bit 13 */ -#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) /*!< Port x Lock bit 14 */ -#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) /*!< Port x Lock bit 15 */ -#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) /*!< Lock key */ - -/*----------------------------------------------------------------------------*/ - -/****************** Bit definition for AFIO_EVCR register *******************/ -#define AFIO_EVCR_PIN ((uint8_t)0x0F) /*!< PIN[3:0] bits (Pin selection) */ -#define AFIO_EVCR_PIN_0 ((uint8_t)0x01) /*!< Bit 0 */ -#define AFIO_EVCR_PIN_1 ((uint8_t)0x02) /*!< Bit 1 */ -#define AFIO_EVCR_PIN_2 ((uint8_t)0x04) /*!< Bit 2 */ -#define AFIO_EVCR_PIN_3 ((uint8_t)0x08) /*!< Bit 3 */ - -/*!< PIN configuration */ -#define AFIO_EVCR_PIN_PX0 ((uint8_t)0x00) /*!< Pin 0 selected */ -#define AFIO_EVCR_PIN_PX1 ((uint8_t)0x01) /*!< Pin 1 selected */ -#define AFIO_EVCR_PIN_PX2 ((uint8_t)0x02) /*!< Pin 2 selected */ -#define AFIO_EVCR_PIN_PX3 ((uint8_t)0x03) /*!< Pin 3 selected */ -#define AFIO_EVCR_PIN_PX4 ((uint8_t)0x04) /*!< Pin 4 selected */ -#define AFIO_EVCR_PIN_PX5 ((uint8_t)0x05) /*!< Pin 5 selected */ -#define AFIO_EVCR_PIN_PX6 ((uint8_t)0x06) /*!< Pin 6 selected */ -#define AFIO_EVCR_PIN_PX7 ((uint8_t)0x07) /*!< Pin 7 selected */ -#define AFIO_EVCR_PIN_PX8 ((uint8_t)0x08) /*!< Pin 8 selected */ -#define AFIO_EVCR_PIN_PX9 ((uint8_t)0x09) /*!< Pin 9 selected */ -#define AFIO_EVCR_PIN_PX10 ((uint8_t)0x0A) /*!< Pin 10 selected */ -#define AFIO_EVCR_PIN_PX11 ((uint8_t)0x0B) /*!< Pin 11 selected */ -#define AFIO_EVCR_PIN_PX12 ((uint8_t)0x0C) /*!< Pin 12 selected */ -#define AFIO_EVCR_PIN_PX13 ((uint8_t)0x0D) /*!< Pin 13 selected */ -#define AFIO_EVCR_PIN_PX14 ((uint8_t)0x0E) /*!< Pin 14 selected */ -#define AFIO_EVCR_PIN_PX15 ((uint8_t)0x0F) /*!< Pin 15 selected */ - -#define AFIO_EVCR_PORT ((uint8_t)0x70) /*!< PORT[2:0] bits (Port selection) */ -#define AFIO_EVCR_PORT_0 ((uint8_t)0x10) /*!< Bit 0 */ -#define AFIO_EVCR_PORT_1 ((uint8_t)0x20) /*!< Bit 1 */ -#define AFIO_EVCR_PORT_2 ((uint8_t)0x40) /*!< Bit 2 */ - -/*!< PORT configuration */ -#define AFIO_EVCR_PORT_PA ((uint8_t)0x00) /*!< Port A selected */ -#define AFIO_EVCR_PORT_PB ((uint8_t)0x10) /*!< Port B selected */ -#define AFIO_EVCR_PORT_PC ((uint8_t)0x20) /*!< Port C selected */ -#define AFIO_EVCR_PORT_PD ((uint8_t)0x30) /*!< Port D selected */ -#define AFIO_EVCR_PORT_PE ((uint8_t)0x40) /*!< Port E selected */ - -#define AFIO_EVCR_EVOE ((uint8_t)0x80) /*!< Event Output Enable */ - -/****************** Bit definition for AFIO_MAPR register *******************/ -#define AFIO_MAPR_SPI1 _REMAP ((uint32_t)0x00000001) /*!< SPI1 remapping */ -#define AFIO_MAPR_I2C1_REMAP ((uint32_t)0x00000002) /*!< I2C1 remapping */ -#define AFIO_MAPR_USART1_REMAP ((uint32_t)0x00000004) /*!< USART1 remapping */ -#define AFIO_MAPR_USART2_REMAP ((uint32_t)0x00000008) /*!< USART2 remapping */ - -#define AFIO_MAPR_USART3_REMAP ((uint32_t)0x00000030) /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ -#define AFIO_MAPR_USART3_REMAP_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define AFIO_MAPR_USART3_REMAP_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -/* USART3_REMAP configuration */ -#define AFIO_MAPR_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ - -#define AFIO_MAPR_TIM1_REMAP ((uint32_t)0x000000C0) /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ -#define AFIO_MAPR_TIM1_REMAP_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define AFIO_MAPR_TIM1_REMAP_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -/*!< TIM1_REMAP configuration */ -#define AFIO_MAPR_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ -#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ -#define AFIO_MAPR_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ - -#define AFIO_MAPR_TIM2_REMAP ((uint32_t)0x00000300) /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ -#define AFIO_MAPR_TIM2_REMAP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define AFIO_MAPR_TIM2_REMAP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< TIM2_REMAP configuration */ -#define AFIO_MAPR_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ -#define AFIO_MAPR_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ - -#define AFIO_MAPR_TIM3_REMAP ((uint32_t)0x00000C00) /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ -#define AFIO_MAPR_TIM3_REMAP_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define AFIO_MAPR_TIM3_REMAP_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -/*!< TIM3_REMAP configuration */ -#define AFIO_MAPR_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ - -#define AFIO_MAPR_TIM4_REMAP ((uint32_t)0x00001000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ - -#define AFIO_MAPR_CAN_REMAP ((uint32_t)0x00006000) /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ -#define AFIO_MAPR_CAN_REMAP_0 ((uint32_t)0x00002000) /*!< Bit 0 */ -#define AFIO_MAPR_CAN_REMAP_1 ((uint32_t)0x00004000) /*!< Bit 1 */ - -/*!< CAN_REMAP configuration */ -#define AFIO_MAPR_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ -#define AFIO_MAPR_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ -#define AFIO_MAPR_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ - -#define AFIO_MAPR_PD01_REMAP ((uint32_t)0x00008000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ -#define AFIO_MAPR_TIM5CH4_IREMAP ((uint32_t)0x00010000) /*!< TIM5 Channel4 Internal Remap */ -#define AFIO_MAPR_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /*!< ADC 1 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /*!< ADC 1 External Trigger Regular Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /*!< ADC 2 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /*!< ADC 2 External Trigger Regular Conversion remapping */ - -#define AFIO_MAPR_SWJ_CFG ((uint32_t)0x07000000) /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ -#define AFIO_MAPR_SWJ_CFG_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define AFIO_MAPR_SWJ_CFG_1 ((uint32_t)0x02000000) /*!< Bit 1 */ -#define AFIO_MAPR_SWJ_CFG_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - -/*!< SWJ_CFG configuration */ -#define AFIO_MAPR_SWJ_CFG_RESET ((uint32_t)0x00000000) /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ -#define AFIO_MAPR_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ -#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /*!< JTAG-DP Disabled and SW-DP Enabled */ -#define AFIO_MAPR_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /*!< JTAG-DP Disabled and SW-DP Disabled */ - -/***************** Bit definition for AFIO_EXTICR1 register *****************/ -#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ -#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ -#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ -#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ - -/*!< EXTI0 configuration */ -#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ -#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ -#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ -#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ -#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ -#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ -#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /*!< PG[0] pin */ - -/*!< EXTI1 configuration */ -#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ -#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ -#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ -#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ -#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ -#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ -#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /*!< PG[1] pin */ - -/*!< EXTI2 configuration */ -#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ -#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ -#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ -#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ -#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ -#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ -#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /*!< PG[2] pin */ - -/*!< EXTI3 configuration */ -#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ -#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ -#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ -#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ -#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ -#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /*!< PF[3] pin */ -#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /*!< PG[3] pin */ - -/***************** Bit definition for AFIO_EXTICR2 register *****************/ -#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ -#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ -#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ -#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ - -/*!< EXTI4 configuration */ -#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ -#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ -#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ -#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ -#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ -#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ -#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /*!< PG[4] pin */ - -/* EXTI5 configuration */ -#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ -#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ -#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ -#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ -#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ -#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ -#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /*!< PG[5] pin */ - -/*!< EXTI6 configuration */ -#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ -#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ -#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ -#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ -#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ -#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ -#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /*!< PG[6] pin */ - -/*!< EXTI7 configuration */ -#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ -#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ -#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ -#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ -#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ -#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /*!< PF[7] pin */ -#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /*!< PG[7] pin */ - -/***************** Bit definition for AFIO_EXTICR3 register *****************/ -#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ -#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ -#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ -#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ - -/*!< EXTI8 configuration */ -#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ -#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ -#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ -#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ -#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ -#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /*!< PF[8] pin */ -#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /*!< PG[8] pin */ - -/*!< EXTI9 configuration */ -#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ -#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ -#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ -#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ -#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ -#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ -#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /*!< PG[9] pin */ - -/*!< EXTI10 configuration */ -#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ -#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ -#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ -#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ -#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ -#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ -#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /*!< PG[10] pin */ - -/*!< EXTI11 configuration */ -#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ -#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ -#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ -#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ -#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ -#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /*!< PF[11] pin */ -#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /*!< PG[11] pin */ - -/***************** Bit definition for AFIO_EXTICR4 register *****************/ -#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ -#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ -#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ -#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ - -/* EXTI12 configuration */ -#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ -#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ -#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ -#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ -#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ -#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /*!< PF[12] pin */ -#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /*!< PG[12] pin */ - -/* EXTI13 configuration */ -#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ -#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ -#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ -#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ -#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ -#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /*!< PF[13] pin */ -#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /*!< PG[13] pin */ - -/*!< EXTI14 configuration */ -#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ -#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ -#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ -#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ -#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ -#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /*!< PF[14] pin */ -#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /*!< PG[14] pin */ - -/*!< EXTI15 configuration */ -#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ -#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ -#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ -#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ -#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ -#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /*!< PF[15] pin */ -#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /*!< PG[15] pin */ - -/******************************************************************************/ -/* */ -/* SystemTick */ -/* */ -/******************************************************************************/ - -/***************** Bit definition for SysTick_CTRL register *****************/ -#define SysTick_CTRL_ENABLE ((uint32_t)0x00000001) /*!< Counter enable */ -#define SysTick_CTRL_TICKINT ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */ -#define SysTick_CTRL_CLKSOURCE ((uint32_t)0x00000004) /*!< Clock source */ -#define SysTick_CTRL_COUNTFLAG ((uint32_t)0x00010000) /*!< Count Flag */ - -/***************** Bit definition for SysTick_LOAD register *****************/ -#define SysTick_LOAD_RELOAD ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */ - -/***************** Bit definition for SysTick_VAL register ******************/ -#define SysTick_VAL_CURRENT ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */ - -/***************** Bit definition for SysTick_CALIB register ****************/ -#define SysTick_CALIB_TENMS ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */ -#define SysTick_CALIB_SKEW ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */ -#define SysTick_CALIB_NOREF ((uint32_t)0x80000000) /*!< The reference clock is not provided */ - -/******************************************************************************/ -/* */ -/* Nested Vectored Interrupt Controller */ -/* */ -/******************************************************************************/ - -/****************** Bit definition for NVIC_ISER register *******************/ -#define NVIC_ISER_SETENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt set enable bits */ -#define NVIC_ISER_SETENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISER_SETENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISER_SETENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISER_SETENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISER_SETENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISER_SETENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISER_SETENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISER_SETENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISER_SETENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISER_SETENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISER_SETENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISER_SETENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISER_SETENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISER_SETENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISER_SETENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISER_SETENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISER_SETENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISER_SETENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISER_SETENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISER_SETENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISER_SETENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISER_SETENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISER_SETENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISER_SETENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISER_SETENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISER_SETENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISER_SETENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISER_SETENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISER_SETENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISER_SETENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISER_SETENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISER_SETENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICER register *******************/ -#define NVIC_ICER_CLRENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-enable bits */ -#define NVIC_ICER_CLRENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICER_CLRENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICER_CLRENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICER_CLRENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICER_CLRENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICER_CLRENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICER_CLRENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICER_CLRENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICER_CLRENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICER_CLRENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICER_CLRENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICER_CLRENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICER_CLRENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICER_CLRENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICER_CLRENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICER_CLRENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICER_CLRENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICER_CLRENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICER_CLRENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICER_CLRENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICER_CLRENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICER_CLRENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICER_CLRENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICER_CLRENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICER_CLRENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICER_CLRENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICER_CLRENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICER_CLRENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICER_CLRENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICER_CLRENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICER_CLRENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICER_CLRENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ISPR register *******************/ -#define NVIC_ISPR_SETPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt set-pending bits */ -#define NVIC_ISPR_SETPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISPR_SETPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISPR_SETPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISPR_SETPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISPR_SETPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISPR_SETPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISPR_SETPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISPR_SETPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISPR_SETPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISPR_SETPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISPR_SETPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISPR_SETPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISPR_SETPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISPR_SETPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISPR_SETPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISPR_SETPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISPR_SETPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISPR_SETPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISPR_SETPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISPR_SETPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISPR_SETPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISPR_SETPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISPR_SETPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISPR_SETPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISPR_SETPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISPR_SETPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISPR_SETPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISPR_SETPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISPR_SETPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISPR_SETPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISPR_SETPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISPR_SETPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICPR register *******************/ -#define NVIC_ICPR_CLRPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-pending bits */ -#define NVIC_ICPR_CLRPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICPR_CLRPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICPR_CLRPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICPR_CLRPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICPR_CLRPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICPR_CLRPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICPR_CLRPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICPR_CLRPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICPR_CLRPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICPR_CLRPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICPR_CLRPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICPR_CLRPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICPR_CLRPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICPR_CLRPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICPR_CLRPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICPR_CLRPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICPR_CLRPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICPR_CLRPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICPR_CLRPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICPR_CLRPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICPR_CLRPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICPR_CLRPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICPR_CLRPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICPR_CLRPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICPR_CLRPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICPR_CLRPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICPR_CLRPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICPR_CLRPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICPR_CLRPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICPR_CLRPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICPR_CLRPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICPR_CLRPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_IABR register *******************/ -#define NVIC_IABR_ACTIVE ((uint32_t)0xFFFFFFFF) /*!< Interrupt active flags */ -#define NVIC_IABR_ACTIVE_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_IABR_ACTIVE_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_IABR_ACTIVE_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_IABR_ACTIVE_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_IABR_ACTIVE_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_IABR_ACTIVE_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_IABR_ACTIVE_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_IABR_ACTIVE_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_IABR_ACTIVE_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_IABR_ACTIVE_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_IABR_ACTIVE_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_IABR_ACTIVE_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_IABR_ACTIVE_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_IABR_ACTIVE_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_IABR_ACTIVE_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_IABR_ACTIVE_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_IABR_ACTIVE_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_IABR_ACTIVE_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_IABR_ACTIVE_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_IABR_ACTIVE_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_IABR_ACTIVE_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_IABR_ACTIVE_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_IABR_ACTIVE_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_IABR_ACTIVE_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_IABR_ACTIVE_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_IABR_ACTIVE_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_IABR_ACTIVE_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_IABR_ACTIVE_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_IABR_ACTIVE_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_IABR_ACTIVE_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_IABR_ACTIVE_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_IABR_ACTIVE_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_PRI0 register *******************/ -#define NVIC_IPR0_PRI_0 ((uint32_t)0x000000FF) /*!< Priority of interrupt 0 */ -#define NVIC_IPR0_PRI_1 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 1 */ -#define NVIC_IPR0_PRI_2 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 2 */ -#define NVIC_IPR0_PRI_3 ((uint32_t)0xFF000000) /*!< Priority of interrupt 3 */ - -/****************** Bit definition for NVIC_PRI1 register *******************/ -#define NVIC_IPR1_PRI_4 ((uint32_t)0x000000FF) /*!< Priority of interrupt 4 */ -#define NVIC_IPR1_PRI_5 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 5 */ -#define NVIC_IPR1_PRI_6 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 6 */ -#define NVIC_IPR1_PRI_7 ((uint32_t)0xFF000000) /*!< Priority of interrupt 7 */ - -/****************** Bit definition for NVIC_PRI2 register *******************/ -#define NVIC_IPR2_PRI_8 ((uint32_t)0x000000FF) /*!< Priority of interrupt 8 */ -#define NVIC_IPR2_PRI_9 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 9 */ -#define NVIC_IPR2_PRI_10 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 10 */ -#define NVIC_IPR2_PRI_11 ((uint32_t)0xFF000000) /*!< Priority of interrupt 11 */ - -/****************** Bit definition for NVIC_PRI3 register *******************/ -#define NVIC_IPR3_PRI_12 ((uint32_t)0x000000FF) /*!< Priority of interrupt 12 */ -#define NVIC_IPR3_PRI_13 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 13 */ -#define NVIC_IPR3_PRI_14 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 14 */ -#define NVIC_IPR3_PRI_15 ((uint32_t)0xFF000000) /*!< Priority of interrupt 15 */ - -/****************** Bit definition for NVIC_PRI4 register *******************/ -#define NVIC_IPR4_PRI_16 ((uint32_t)0x000000FF) /*!< Priority of interrupt 16 */ -#define NVIC_IPR4_PRI_17 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 17 */ -#define NVIC_IPR4_PRI_18 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 18 */ -#define NVIC_IPR4_PRI_19 ((uint32_t)0xFF000000) /*!< Priority of interrupt 19 */ - -/****************** Bit definition for NVIC_PRI5 register *******************/ -#define NVIC_IPR5_PRI_20 ((uint32_t)0x000000FF) /*!< Priority of interrupt 20 */ -#define NVIC_IPR5_PRI_21 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 21 */ -#define NVIC_IPR5_PRI_22 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 22 */ -#define NVIC_IPR5_PRI_23 ((uint32_t)0xFF000000) /*!< Priority of interrupt 23 */ - -/****************** Bit definition for NVIC_PRI6 register *******************/ -#define NVIC_IPR6_PRI_24 ((uint32_t)0x000000FF) /*!< Priority of interrupt 24 */ -#define NVIC_IPR6_PRI_25 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 25 */ -#define NVIC_IPR6_PRI_26 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 26 */ -#define NVIC_IPR6_PRI_27 ((uint32_t)0xFF000000) /*!< Priority of interrupt 27 */ - -/****************** Bit definition for NVIC_PRI7 register *******************/ -#define NVIC_IPR7_PRI_28 ((uint32_t)0x000000FF) /*!< Priority of interrupt 28 */ -#define NVIC_IPR7_PRI_29 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 29 */ -#define NVIC_IPR7_PRI_30 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 30 */ -#define NVIC_IPR7_PRI_31 ((uint32_t)0xFF000000) /*!< Priority of interrupt 31 */ - -/****************** Bit definition for SCB_CPUID register *******************/ -#define SCB_CPUID_REVISION ((uint32_t)0x0000000F) /*!< Implementation defined revision number */ -#define SCB_CPUID_PARTNO ((uint32_t)0x0000FFF0) /*!< Number of processor within family */ -#define SCB_CPUID_Constant ((uint32_t)0x000F0000) /*!< Reads as 0x0F */ -#define SCB_CPUID_VARIANT ((uint32_t)0x00F00000) /*!< Implementation defined variant number */ -#define SCB_CPUID_IMPLEMENTER ((uint32_t)0xFF000000) /*!< Implementer code. ARM is 0x41 */ - -/******************* Bit definition for SCB_ICSR register *******************/ -#define SCB_ICSR_VECTACTIVE ((uint32_t)0x000001FF) /*!< Active ISR number field */ -#define SCB_ICSR_RETTOBASE ((uint32_t)0x00000800) /*!< All active exceptions minus the IPSR_current_exception yields the empty set */ -#define SCB_ICSR_VECTPENDING ((uint32_t)0x003FF000) /*!< Pending ISR number field */ -#define SCB_ICSR_ISRPENDING ((uint32_t)0x00400000) /*!< Interrupt pending flag */ -#define SCB_ICSR_ISRPREEMPT ((uint32_t)0x00800000) /*!< It indicates that a pending interrupt becomes active in the next running cycle */ -#define SCB_ICSR_PENDSTCLR ((uint32_t)0x02000000) /*!< Clear pending SysTick bit */ -#define SCB_ICSR_PENDSTSET ((uint32_t)0x04000000) /*!< Set pending SysTick bit */ -#define SCB_ICSR_PENDSVCLR ((uint32_t)0x08000000) /*!< Clear pending pendSV bit */ -#define SCB_ICSR_PENDSVSET ((uint32_t)0x10000000) /*!< Set pending pendSV bit */ -#define SCB_ICSR_NMIPENDSET ((uint32_t)0x80000000) /*!< Set pending NMI bit */ - -/******************* Bit definition for SCB_VTOR register *******************/ -#define SCB_VTOR_TBLOFF ((uint32_t)0x1FFFFF80) /*!< Vector table base offset field */ -#define SCB_VTOR_TBLBASE ((uint32_t)0x20000000) /*!< Table base in code(0) or RAM(1) */ - -/*!<***************** Bit definition for SCB_AIRCR register *******************/ -#define SCB_AIRCR_VECTRESET ((uint32_t)0x00000001) /*!< System Reset bit */ -#define SCB_AIRCR_VECTCLRACTIVE ((uint32_t)0x00000002) /*!< Clear active vector bit */ -#define SCB_AIRCR_SYSRESETREQ ((uint32_t)0x00000004) /*!< Requests chip control logic to generate a reset */ - -#define SCB_AIRCR_PRIGROUP ((uint32_t)0x00000700) /*!< PRIGROUP[2:0] bits (Priority group) */ -#define SCB_AIRCR_PRIGROUP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define SCB_AIRCR_PRIGROUP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define SCB_AIRCR_PRIGROUP_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -/* prority group configuration */ -#define SCB_AIRCR_PRIGROUP0 ((uint32_t)0x00000000) /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */ -#define SCB_AIRCR_PRIGROUP1 ((uint32_t)0x00000100) /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP2 ((uint32_t)0x00000200) /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP3 ((uint32_t)0x00000300) /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP4 ((uint32_t)0x00000400) /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP5 ((uint32_t)0x00000500) /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP6 ((uint32_t)0x00000600) /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP7 ((uint32_t)0x00000700) /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */ - -#define SCB_AIRCR_ENDIANESS ((uint32_t)0x00008000) /*!< Data endianness bit */ -#define SCB_AIRCR_VECTKEY ((uint32_t)0xFFFF0000) /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */ - -/******************* Bit definition for SCB_SCR register ********************/ -#define SCB_SCR_SLEEPONEXIT ((uint8_t)0x02) /*!< Sleep on exit bit */ -#define SCB_SCR_SLEEPDEEP ((uint8_t)0x04) /*!< Sleep deep bit */ -#define SCB_SCR_SEVONPEND ((uint8_t)0x10) /*!< Wake up from WFE */ - -/******************** Bit definition for SCB_CCR register *******************/ -#define SCB_CCR_NONBASETHRDENA ((uint16_t)0x0001) /*!< Thread mode can be entered from any level in Handler mode by controlled return value */ -#define SCB_CCR_USERSETMPEND ((uint16_t)0x0002) /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */ -#define SCB_CCR_UNALIGN_TRP ((uint16_t)0x0008) /*!< Trap for unaligned access */ -#define SCB_CCR_DIV_0_TRP ((uint16_t)0x0010) /*!< Trap on Divide by 0 */ -#define SCB_CCR_BFHFNMIGN ((uint16_t)0x0100) /*!< Handlers running at priority -1 and -2 */ -#define SCB_CCR_STKALIGN ((uint16_t)0x0200) /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */ - -/******************* Bit definition for SCB_SHPR register ********************/ -#define SCB_SHPR_PRI_N ((uint32_t)0x000000FF) /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */ -#define SCB_SHPR_PRI_N1 ((uint32_t)0x0000FF00) /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */ -#define SCB_SHPR_PRI_N2 ((uint32_t)0x00FF0000) /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */ -#define SCB_SHPR_PRI_N3 ((uint32_t)0xFF000000) /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */ - -/****************** Bit definition for SCB_SHCSR register *******************/ -#define SCB_SHCSR_MEMFAULTACT ((uint32_t)0x00000001) /*!< MemManage is active */ -#define SCB_SHCSR_BUSFAULTACT ((uint32_t)0x00000002) /*!< BusFault is active */ -#define SCB_SHCSR_USGFAULTACT ((uint32_t)0x00000008) /*!< UsageFault is active */ -#define SCB_SHCSR_SVCALLACT ((uint32_t)0x00000080) /*!< SVCall is active */ -#define SCB_SHCSR_MONITORACT ((uint32_t)0x00000100) /*!< Monitor is active */ -#define SCB_SHCSR_PENDSVACT ((uint32_t)0x00000400) /*!< PendSV is active */ -#define SCB_SHCSR_SYSTICKACT ((uint32_t)0x00000800) /*!< SysTick is active */ -#define SCB_SHCSR_USGFAULTPENDED ((uint32_t)0x00001000) /*!< Usage Fault is pended */ -#define SCB_SHCSR_MEMFAULTPENDED ((uint32_t)0x00002000) /*!< MemManage is pended */ -#define SCB_SHCSR_BUSFAULTPENDED ((uint32_t)0x00004000) /*!< Bus Fault is pended */ -#define SCB_SHCSR_SVCALLPENDED ((uint32_t)0x00008000) /*!< SVCall is pended */ -#define SCB_SHCSR_MEMFAULTENA ((uint32_t)0x00010000) /*!< MemManage enable */ -#define SCB_SHCSR_BUSFAULTENA ((uint32_t)0x00020000) /*!< Bus Fault enable */ -#define SCB_SHCSR_USGFAULTENA ((uint32_t)0x00040000) /*!< UsageFault enable */ - -/******************* Bit definition for SCB_CFSR register *******************/ -/*!< MFSR */ -#define SCB_CFSR_IACCVIOL ((uint32_t)0x00000001) /*!< Instruction access violation */ -#define SCB_CFSR_DACCVIOL ((uint32_t)0x00000002) /*!< Data access violation */ -#define SCB_CFSR_MUNSTKERR ((uint32_t)0x00000008) /*!< Unstacking error */ -#define SCB_CFSR_MSTKERR ((uint32_t)0x00000010) /*!< Stacking error */ -#define SCB_CFSR_MMARVALID ((uint32_t)0x00000080) /*!< Memory Manage Address Register address valid flag */ -/*!< BFSR */ -#define SCB_CFSR_IBUSERR ((uint32_t)0x00000100) /*!< Instruction bus error flag */ -#define SCB_CFSR_PRECISERR ((uint32_t)0x00000200) /*!< Precise data bus error */ -#define SCB_CFSR_IMPRECISERR ((uint32_t)0x00000400) /*!< Imprecise data bus error */ -#define SCB_CFSR_UNSTKERR ((uint32_t)0x00000800) /*!< Unstacking error */ -#define SCB_CFSR_STKERR ((uint32_t)0x00001000) /*!< Stacking error */ -#define SCB_CFSR_BFARVALID ((uint32_t)0x00008000) /*!< Bus Fault Address Register address valid flag */ -/*!< UFSR */ -#define SCB_CFSR_UNDEFINSTR ((uint32_t)0x00010000) /*!< The processor attempt to excecute an undefined instruction */ -#define SCB_CFSR_INVSTATE ((uint32_t)0x00020000) /*!< Invalid combination of EPSR and instruction */ -#define SCB_CFSR_INVPC ((uint32_t)0x00040000) /*!< Attempt to load EXC_RETURN into pc illegally */ -#define SCB_CFSR_NOCP ((uint32_t)0x00080000) /*!< Attempt to use a coprocessor instruction */ -#define SCB_CFSR_UNALIGNED ((uint32_t)0x01000000) /*!< Fault occurs when there is an attempt to make an unaligned memory access */ -#define SCB_CFSR_DIVBYZERO ((uint32_t)0x02000000) /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */ - -/******************* Bit definition for SCB_HFSR register *******************/ -#define SCB_HFSR_VECTTBL ((uint32_t)0x00000002) /*!< Fault occures because of vector table read on exception processing */ -#define SCB_HFSR_FORCED ((uint32_t)0x40000000) /*!< Hard Fault activated when a configurable Fault was received and cannot activate */ -#define SCB_HFSR_DEBUGEVT ((uint32_t)0x80000000) /*!< Fault related to debug */ - -/******************* Bit definition for SCB_DFSR register *******************/ -#define SCB_DFSR_HALTED ((uint8_t)0x01) /*!< Halt request flag */ -#define SCB_DFSR_BKPT ((uint8_t)0x02) /*!< BKPT flag */ -#define SCB_DFSR_DWTTRAP ((uint8_t)0x04) /*!< Data Watchpoint and Trace (DWT) flag */ -#define SCB_DFSR_VCATCH ((uint8_t)0x08) /*!< Vector catch flag */ -#define SCB_DFSR_EXTERNAL ((uint8_t)0x10) /*!< External debug request flag */ - -/******************* Bit definition for SCB_MMFAR register ******************/ -#define SCB_MMFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Mem Manage fault address field */ - -/******************* Bit definition for SCB_BFAR register *******************/ -#define SCB_BFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Bus fault address field */ - -/******************* Bit definition for SCB_afsr register *******************/ -#define SCB_AFSR_IMPDEF ((uint32_t)0xFFFFFFFF) /*!< Implementation defined */ - -/******************************************************************************/ -/* */ -/* External Interrupt/Event Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for EXTI_IMR register *******************/ -#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ -#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ -#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ -#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ -#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ -#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ -#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ -#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ -#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ -#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ -#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ -#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ -#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ -#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ -#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ -#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ -#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ -#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ -#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ - -/******************* Bit definition for EXTI_EMR register *******************/ -#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ -#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ -#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ -#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ -#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ -#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ -#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ -#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ -#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ -#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ -#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ -#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ -#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ -#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ -#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ -#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ -#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ -#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ -#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ - -/****************** Bit definition for EXTI_RTSR register *******************/ -#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ -#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ -#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ -#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ -#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ -#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ -#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ -#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ -#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ -#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ -#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ -#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ -#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ -#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ -#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ -#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ -#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ -#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ -#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_FTSR register *******************/ -#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ -#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ -#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ -#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ -#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ -#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ -#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ -#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ -#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ -#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ -#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ -#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ -#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ -#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ -#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ -#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ -#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ -#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ -#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_SWIER register ******************/ -#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ -#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ -#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ -#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ -#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ -#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ -#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ -#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ -#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ -#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ -#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ -#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ -#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ -#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ -#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ -#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ -#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ -#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ -#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ - -/******************* Bit definition for EXTI_PR register ********************/ -#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit 0 */ -#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit 1 */ -#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit 2 */ -#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit 3 */ -#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit 4 */ -#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit 5 */ -#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit 6 */ -#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit 7 */ -#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit 8 */ -#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit 9 */ -#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit 10 */ -#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit 11 */ -#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit 12 */ -#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit 13 */ -#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit 14 */ -#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit 15 */ -#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit 16 */ -#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit 17 */ -#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Trigger request occurred on the external interrupt line 18 */ - -/******************************************************************************/ -/* */ -/* DMA Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for DMA_ISR register ********************/ -#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ -#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ -#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ -#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ -#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ -#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ -#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ -#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ -#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ -#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ -#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ -#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ -#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ -#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ -#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ -#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ -#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ -#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ -#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ -#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ -#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ -#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ -#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ -#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ -#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ -#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ -#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ -#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ - -/******************* Bit definition for DMA_IFCR register *******************/ -#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clearr */ -#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ -#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ -#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ -#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ -#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ -#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ -#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ -#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ -#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ -#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ -#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ -#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ -#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ -#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ -#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ -#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ -#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ -#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ -#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ -#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ -#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ -#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ -#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ -#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ -#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ -#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ -#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ - -/******************* Bit definition for DMA_CCR1 register *******************/ -#define DMA_CCR1_EN ((uint16_t)0x0001) /*!< Channel enable*/ -#define DMA_CCR1_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR1_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR1_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR1_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR1_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR1_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR1_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR1_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR1_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR1_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR1_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR1_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR1_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR1_PL ((uint16_t)0x3000) /*!< PL[1:0] bits(Channel Priority level) */ -#define DMA_CCR1_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR1_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR1_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR2 register *******************/ -#define DMA_CCR2_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR2_TCIE ((uint16_t)0x0002) /*!< ransfer complete interrupt enable */ -#define DMA_CCR2_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR2_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR2_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR2_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR2_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR2_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR2_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR2_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR2_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR2_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR2_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR2_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR2_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR2_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR2_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR2_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR3 register *******************/ -#define DMA_CCR3_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR3_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR3_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR3_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR3_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR3_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR3_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR3_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR3_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR3_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR3_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR3_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR3_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR3_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR3_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR3_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR3_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR3_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/*!<****************** Bit definition for DMA_CCR4 register *******************/ -#define DMA_CCR4_EN ((uint16_t)0x0001) /*!
© COPYRIGHT 2009 STMicroelectronics
- ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f10x - * @{ - */ - -#ifndef __STM32F10x_H -#define __STM32F10x_H - -/** @addtogroup Library_configuration_section - * @{ - */ - -/* Uncomment the line below according to the target STM32 device used in your - application - */ - -#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL) - /* #define STM32F10X_LD */ /*!< STM32 Low density devices */ - /* #define STM32F10X_MD */ /*!< STM32 Medium density devices */ - /* #define STM32F10X_HD */ /*!< STM32 High density devices */ - #define STM32F10X_CL /*!< STM32 Connectivity line devices */ -#endif -/* Tip: To avoid modifying this file each time you need to switch between these - devices, you can define the device in your toolchain compiler preprocessor. - - - Low density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 16 and 32 Kbytes. - - Medium density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 64 and 128 Kbytes. - - High density devices are STM32F101xx and STM32F103xx microcontrollers where - the Flash memory density ranges between 256 and 512 Kbytes. - - Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers. - */ - -#if !defined USE_STDPERIPH_DRIVER -/** - * @brief Comment the line below if you will not use the peripherals drivers. - In this case, these drivers will not be included and the application code will - be based on direct access to peripherals registers - */ - /*#define USE_STDPERIPH_DRIVER*/ -#endif - -/** - * @brief In the following line adjust the value of External High Speed oscillator (HSE) - used in your application - */ -#ifdef STM32F10X_CL - #define HSE_Value ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ -#else - #define HSE_Value ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ -#endif /* STM32F10X_CL */ - -/** - * @brief In the following line adjust the External High Speed oscillator (HSE) Startup - Timeout value - */ -#define HSEStartUp_TimeOut ((uint16_t)0x0500) /*!< Time out for HSE start up */ - -#define HSI_Value ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ - - -/*!< [31:16] STM32F10x Standard Peripheral Library main version */ -#define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) -/*!< [15:8] STM32F10x Standard Peripheral Library sub1 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x01) -/*!< [7:0] STM32F10x Standard Peripheral Library sub2 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB2 (0x00) -/*!< STM32F10x Standard Peripheral Library version number */ -#define __STM32F10X_STDPERIPH_VERSION ((__STM32F10X_STDPERIPH_VERSION_MAIN << 16)\ - | (__STM32F10X_STDPERIPH_VERSION_SUB1 << 8)\ - | __STM32F10X_STDPERIPH_VERSION_SUB2) - -/** - * @} - */ - -/** @addtogroup Configuration_section_for_CMSIS - * @{ - */ - -/** - * @brief Configuration of the Cortex-M3 Processor and Core Peripherals - */ -#define __MPU_PRESENT 0 /*!< STM32 does not provide a MPU present or not */ -#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - -/*!< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** STM32 specific Interrupt Numbers *********************************************************/ - WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ - PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ - TAMPER_IRQn = 2, /*!< Tamper Interrupt */ - RTC_IRQn = 3, /*!< RTC global Interrupt */ - FLASH_IRQn = 4, /*!< FLASH global Interrupt */ - RCC_IRQn = 5, /*!< RCC global Interrupt */ - EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ - EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ - EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ - EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ - EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ - DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ - DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ - DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ - DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ - DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ - DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ - DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ - ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ - -#ifdef STM32F10X_LD - USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ -#endif /* STM32F10X_LD */ - -#ifdef STM32F10X_MD - USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - USART3_IRQn = 39, /*!< USART3 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ -#endif /* STM32F10X_MD */ - -#ifdef STM32F10X_HD - USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - USART3_IRQn = 39, /*!< USART3 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ - TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ - TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ - TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ - TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ - ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ - FSMC_IRQn = 48, /*!< FSMC global Interrupt */ - SDIO_IRQn = 49, /*!< SDIO global Interrupt */ - TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ - SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ - UART4_IRQn = 52, /*!< UART4 global Interrupt */ - UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ - TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ - DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ - DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ - DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ - DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_CL - CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - USART3_IRQn = 39, /*!< USART3 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS WakeUp from suspend through EXTI Line Interrupt */ - TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ - SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ - UART4_IRQn = 52, /*!< UART4 global Interrupt */ - UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ - TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ - DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ - DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ - DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ - DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ - DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ - ETH_IRQn = 61, /*!< Ethernet global Interrupt */ - ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */ - CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */ - CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */ - CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */ - CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */ - OTG_FS_IRQn = 67 /*!< USB OTG FS global Interrupt */ -#endif /* STM32F10X_CL */ -} IRQn_Type; - -/** - * @} - */ - -#include "core_cm3.h" -#include "system_stm32f10x.h" -#include - -/** @addtogroup Exported_types - * @{ - */ - -/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy prupose) */ -typedef int32_t s32; -typedef int16_t s16; -typedef int8_t s8; - -typedef const int32_t sc32; /*!< Read Only */ -typedef const int16_t sc16; /*!< Read Only */ -typedef const int8_t sc8; /*!< Read Only */ - -typedef __IO int32_t vs32; -typedef __IO int16_t vs16; -typedef __IO int8_t vs8; - -typedef __I int32_t vsc32; /*!< Read Only */ -typedef __I int16_t vsc16; /*!< Read Only */ -typedef __I int8_t vsc8; /*!< Read Only */ - -typedef uint32_t u32; -typedef uint16_t u16; -typedef uint8_t u8; - -typedef const uint32_t uc32; /*!< Read Only */ -typedef const uint16_t uc16; /*!< Read Only */ -typedef const uint8_t uc8; /*!< Read Only */ - -typedef __IO uint32_t vu32; -typedef __IO uint16_t vu16; -typedef __IO uint8_t vu8; - -typedef __I uint32_t vuc32; /*!< Read Only */ -typedef __I uint16_t vuc16; /*!< Read Only */ -typedef __I uint8_t vuc8; /*!< Read Only */ - -typedef enum {FALSE = 0, TRUE = !FALSE} bool; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; - -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; -#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) - -typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -/** - * @} - */ - -/** @addtogroup Peripheral_registers_structures - * @{ - */ - -/** - * @brief Analog to Digital Converter - */ - -typedef struct -{ - __IO uint32_t SR; - __IO uint32_t CR1; - __IO uint32_t CR2; - __IO uint32_t SMPR1; - __IO uint32_t SMPR2; - __IO uint32_t JOFR1; - __IO uint32_t JOFR2; - __IO uint32_t JOFR3; - __IO uint32_t JOFR4; - __IO uint32_t HTR; - __IO uint32_t LTR; - __IO uint32_t SQR1; - __IO uint32_t SQR2; - __IO uint32_t SQR3; - __IO uint32_t JSQR; - __IO uint32_t JDR1; - __IO uint32_t JDR2; - __IO uint32_t JDR3; - __IO uint32_t JDR4; - __IO uint32_t DR; -} ADC_TypeDef; - -/** - * @brief Backup Registers - */ - -typedef struct -{ - uint32_t RESERVED0; - __IO uint16_t DR1; - uint16_t RESERVED1; - __IO uint16_t DR2; - uint16_t RESERVED2; - __IO uint16_t DR3; - uint16_t RESERVED3; - __IO uint16_t DR4; - uint16_t RESERVED4; - __IO uint16_t DR5; - uint16_t RESERVED5; - __IO uint16_t DR6; - uint16_t RESERVED6; - __IO uint16_t DR7; - uint16_t RESERVED7; - __IO uint16_t DR8; - uint16_t RESERVED8; - __IO uint16_t DR9; - uint16_t RESERVED9; - __IO uint16_t DR10; - uint16_t RESERVED10; - __IO uint16_t RTCCR; - uint16_t RESERVED11; - __IO uint16_t CR; - uint16_t RESERVED12; - __IO uint16_t CSR; - uint16_t RESERVED13[5]; - __IO uint16_t DR11; - uint16_t RESERVED14; - __IO uint16_t DR12; - uint16_t RESERVED15; - __IO uint16_t DR13; - uint16_t RESERVED16; - __IO uint16_t DR14; - uint16_t RESERVED17; - __IO uint16_t DR15; - uint16_t RESERVED18; - __IO uint16_t DR16; - uint16_t RESERVED19; - __IO uint16_t DR17; - uint16_t RESERVED20; - __IO uint16_t DR18; - uint16_t RESERVED21; - __IO uint16_t DR19; - uint16_t RESERVED22; - __IO uint16_t DR20; - uint16_t RESERVED23; - __IO uint16_t DR21; - uint16_t RESERVED24; - __IO uint16_t DR22; - uint16_t RESERVED25; - __IO uint16_t DR23; - uint16_t RESERVED26; - __IO uint16_t DR24; - uint16_t RESERVED27; - __IO uint16_t DR25; - uint16_t RESERVED28; - __IO uint16_t DR26; - uint16_t RESERVED29; - __IO uint16_t DR27; - uint16_t RESERVED30; - __IO uint16_t DR28; - uint16_t RESERVED31; - __IO uint16_t DR29; - uint16_t RESERVED32; - __IO uint16_t DR30; - uint16_t RESERVED33; - __IO uint16_t DR31; - uint16_t RESERVED34; - __IO uint16_t DR32; - uint16_t RESERVED35; - __IO uint16_t DR33; - uint16_t RESERVED36; - __IO uint16_t DR34; - uint16_t RESERVED37; - __IO uint16_t DR35; - uint16_t RESERVED38; - __IO uint16_t DR36; - uint16_t RESERVED39; - __IO uint16_t DR37; - uint16_t RESERVED40; - __IO uint16_t DR38; - uint16_t RESERVED41; - __IO uint16_t DR39; - uint16_t RESERVED42; - __IO uint16_t DR40; - uint16_t RESERVED43; - __IO uint16_t DR41; - uint16_t RESERVED44; - __IO uint16_t DR42; - uint16_t RESERVED45; -} BKP_TypeDef; - -/** - * @brief Controller Area Network TxMailBox - */ - -typedef struct -{ - __IO uint32_t TIR; - __IO uint32_t TDTR; - __IO uint32_t TDLR; - __IO uint32_t TDHR; -} CAN_TxMailBox_TypeDef; - -/** - * @brief Controller Area Network FIFOMailBox - */ - -typedef struct -{ - __IO uint32_t RIR; - __IO uint32_t RDTR; - __IO uint32_t RDLR; - __IO uint32_t RDHR; -} CAN_FIFOMailBox_TypeDef; - -/** - * @brief Controller Area Network FilterRegister - */ - -typedef struct -{ - __IO uint32_t FR1; - __IO uint32_t FR2; -} CAN_FilterRegister_TypeDef; - -/** - * @brief Controller Area Network - */ - -typedef struct -{ - __IO uint32_t MCR; - __IO uint32_t MSR; - __IO uint32_t TSR; - __IO uint32_t RF0R; - __IO uint32_t RF1R; - __IO uint32_t IER; - __IO uint32_t ESR; - __IO uint32_t BTR; - uint32_t RESERVED0[88]; - CAN_TxMailBox_TypeDef sTxMailBox[3]; - CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; - uint32_t RESERVED1[12]; - __IO uint32_t FMR; - __IO uint32_t FM1R; - uint32_t RESERVED2; - __IO uint32_t FS1R; - uint32_t RESERVED3; - __IO uint32_t FFA1R; - uint32_t RESERVED4; - __IO uint32_t FA1R; - uint32_t RESERVED5[8]; -#ifndef STM32F10X_CL - CAN_FilterRegister_TypeDef sFilterRegister[14]; -#else - CAN_FilterRegister_TypeDef sFilterRegister[28]; -#endif /* STM32F10X_CL */ -} CAN_TypeDef; - -/** - * @brief CRC calculation unit - */ - -typedef struct -{ - __IO uint32_t DR; - __IO uint8_t IDR; - uint8_t RESERVED0; - uint16_t RESERVED1; - __IO uint32_t CR; -} CRC_TypeDef; - -/** - * @brief Digital to Analog Converter - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t SWTRIGR; - __IO uint32_t DHR12R1; - __IO uint32_t DHR12L1; - __IO uint32_t DHR8R1; - __IO uint32_t DHR12R2; - __IO uint32_t DHR12L2; - __IO uint32_t DHR8R2; - __IO uint32_t DHR12RD; - __IO uint32_t DHR12LD; - __IO uint32_t DHR8RD; - __IO uint32_t DOR1; - __IO uint32_t DOR2; -} DAC_TypeDef; - -/** - * @brief Debug MCU - */ - -typedef struct -{ - __IO uint32_t IDCODE; - __IO uint32_t CR; -}DBGMCU_TypeDef; - -/** - * @brief DMA Controller - */ - -typedef struct -{ - __IO uint32_t CCR; - __IO uint32_t CNDTR; - __IO uint32_t CPAR; - __IO uint32_t CMAR; -} DMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t ISR; - __IO uint32_t IFCR; -} DMA_TypeDef; - -/** - * @brief Ethernet MAC - */ - -typedef struct -{ - __IO uint32_t MACCR; - __IO uint32_t MACFFR; - __IO uint32_t MACHTHR; - __IO uint32_t MACHTLR; - __IO uint32_t MACMIIAR; - __IO uint32_t MACMIIDR; - __IO uint32_t MACFCR; - __IO uint32_t MACVLANTR; /* 8 */ - uint32_t RESERVED0[2]; - __IO uint32_t MACRWUFFR; /* 11 */ - __IO uint32_t MACPMTCSR; - uint32_t RESERVED1[2]; - __IO uint32_t MACSR; /* 15 */ - __IO uint32_t MACIMR; - __IO uint32_t MACA0HR; - __IO uint32_t MACA0LR; - __IO uint32_t MACA1HR; - __IO uint32_t MACA1LR; - __IO uint32_t MACA2HR; - __IO uint32_t MACA2LR; - __IO uint32_t MACA3HR; - __IO uint32_t MACA3LR; /* 24 */ - uint32_t RESERVED2[40]; - __IO uint32_t MMCCR; /* 65 */ - __IO uint32_t MMCRIR; - __IO uint32_t MMCTIR; - __IO uint32_t MMCRIMR; - __IO uint32_t MMCTIMR; /* 69 */ - uint32_t RESERVED3[14]; - __IO uint32_t MMCTGFSCCR; /* 84 */ - __IO uint32_t MMCTGFMSCCR; - uint32_t RESERVED4[5]; - __IO uint32_t MMCTGFCR; - uint32_t RESERVED5[10]; - __IO uint32_t MMCRFCECR; - __IO uint32_t MMCRFAECR; - uint32_t RESERVED6[10]; - __IO uint32_t MMCRGUFCR; - uint32_t RESERVED7[334]; - __IO uint32_t PTPTSCR; - __IO uint32_t PTPSSIR; - __IO uint32_t PTPTSHR; - __IO uint32_t PTPTSLR; - __IO uint32_t PTPTSHUR; - __IO uint32_t PTPTSLUR; - __IO uint32_t PTPTSAR; - __IO uint32_t PTPTTHR; - __IO uint32_t PTPTTLR; - uint32_t RESERVED8[567]; - __IO uint32_t DMABMR; - __IO uint32_t DMATPDR; - __IO uint32_t DMARPDR; - __IO uint32_t DMARDLAR; - __IO uint32_t DMATDLAR; - __IO uint32_t DMASR; - __IO uint32_t DMAOMR; - __IO uint32_t DMAIER; - __IO uint32_t DMAMFBOCR; - uint32_t RESERVED9[9]; - __IO uint32_t DMACHTDR; - __IO uint32_t DMACHRDR; - __IO uint32_t DMACHTBAR; - __IO uint32_t DMACHRBAR; -} ETH_TypeDef; - -/** - * @brief External Interrupt/Event Controller - */ - -typedef struct -{ - __IO uint32_t IMR; - __IO uint32_t EMR; - __IO uint32_t RTSR; - __IO uint32_t FTSR; - __IO uint32_t SWIER; - __IO uint32_t PR; -} EXTI_TypeDef; - -/** - * @brief FLASH Registers - */ - -typedef struct -{ - __IO uint32_t ACR; - __IO uint32_t KEYR; - __IO uint32_t OPTKEYR; - __IO uint32_t SR; - __IO uint32_t CR; - __IO uint32_t AR; - __IO uint32_t RESERVED; - __IO uint32_t OBR; - __IO uint32_t WRPR; -} FLASH_TypeDef; - -/** - * @brief Option Bytes Registers - */ - -typedef struct -{ - __IO uint16_t RDP; - __IO uint16_t USER; - __IO uint16_t Data0; - __IO uint16_t Data1; - __IO uint16_t WRP0; - __IO uint16_t WRP1; - __IO uint16_t WRP2; - __IO uint16_t WRP3; -} OB_TypeDef; - -/** - * @brief Flexible Static Memory Controller - */ - -typedef struct -{ - __IO uint32_t BTCR[8]; -} FSMC_Bank1_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank1E - */ - -typedef struct -{ - __IO uint32_t BWTR[7]; -} FSMC_Bank1E_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank2 - */ - -typedef struct -{ - __IO uint32_t PCR2; - __IO uint32_t SR2; - __IO uint32_t PMEM2; - __IO uint32_t PATT2; - uint32_t RESERVED0; - __IO uint32_t ECCR2; -} FSMC_Bank2_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank3 - */ - -typedef struct -{ - __IO uint32_t PCR3; - __IO uint32_t SR3; - __IO uint32_t PMEM3; - __IO uint32_t PATT3; - uint32_t RESERVED0; - __IO uint32_t ECCR3; -} FSMC_Bank3_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank4 - */ - -typedef struct -{ - __IO uint32_t PCR4; - __IO uint32_t SR4; - __IO uint32_t PMEM4; - __IO uint32_t PATT4; - __IO uint32_t PIO4; -} FSMC_Bank4_TypeDef; - -/** - * @brief General Purpose I/O - */ - -typedef struct -{ - __IO uint32_t CRL; - __IO uint32_t CRH; - __IO uint32_t IDR; - __IO uint32_t ODR; - __IO uint32_t BSRR; - __IO uint32_t BRR; - __IO uint32_t LCKR; -} GPIO_TypeDef; - -/** - * @brief Alternate Function I/O - */ - -typedef struct -{ - __IO uint32_t EVCR; - __IO uint32_t MAPR; - __IO uint32_t EXTICR[4]; -} AFIO_TypeDef; -/** - * @brief Inter-integrated Circuit Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t OAR1; - uint16_t RESERVED2; - __IO uint16_t OAR2; - uint16_t RESERVED3; - __IO uint16_t DR; - uint16_t RESERVED4; - __IO uint16_t SR1; - uint16_t RESERVED5; - __IO uint16_t SR2; - uint16_t RESERVED6; - __IO uint16_t CCR; - uint16_t RESERVED7; - __IO uint16_t TRISE; - uint16_t RESERVED8; -} I2C_TypeDef; - -/** - * @brief Independent WATCHDOG - */ - -typedef struct -{ - __IO uint32_t KR; - __IO uint32_t PR; - __IO uint32_t RLR; - __IO uint32_t SR; -} IWDG_TypeDef; - -/** - * @brief Power Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CSR; -} PWR_TypeDef; - -/** - * @brief Reset and Clock Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFGR; - __IO uint32_t CIR; - __IO uint32_t APB2RSTR; - __IO uint32_t APB1RSTR; - __IO uint32_t AHBENR; - __IO uint32_t APB2ENR; - __IO uint32_t APB1ENR; - __IO uint32_t BDCR; - __IO uint32_t CSR; -#ifdef STM32F10X_CL - __IO uint32_t AHBRSTR; - __IO uint32_t CFGR2; -#endif /* STM32F10X_CL */ -} RCC_TypeDef; - -/** - * @brief Real-Time Clock - */ - -typedef struct -{ - __IO uint16_t CRH; - uint16_t RESERVED0; - __IO uint16_t CRL; - uint16_t RESERVED1; - __IO uint16_t PRLH; - uint16_t RESERVED2; - __IO uint16_t PRLL; - uint16_t RESERVED3; - __IO uint16_t DIVH; - uint16_t RESERVED4; - __IO uint16_t DIVL; - uint16_t RESERVED5; - __IO uint16_t CNTH; - uint16_t RESERVED6; - __IO uint16_t CNTL; - uint16_t RESERVED7; - __IO uint16_t ALRH; - uint16_t RESERVED8; - __IO uint16_t ALRL; - uint16_t RESERVED9; -} RTC_TypeDef; - -/** - * @brief SD host Interface - */ - -typedef struct -{ - __IO uint32_t POWER; - __IO uint32_t CLKCR; - __IO uint32_t ARG; - __IO uint32_t CMD; - __I uint32_t RESPCMD; - __I uint32_t RESP1; - __I uint32_t RESP2; - __I uint32_t RESP3; - __I uint32_t RESP4; - __IO uint32_t DTIMER; - __IO uint32_t DLEN; - __IO uint32_t DCTRL; - __I uint32_t DCOUNT; - __I uint32_t STA; - __IO uint32_t ICR; - __IO uint32_t MASK; - uint32_t RESERVED0[2]; - __I uint32_t FIFOCNT; - uint32_t RESERVED1[13]; - __IO uint32_t FIFO; -} SDIO_TypeDef; - -/** - * @brief Serial Peripheral Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SR; - uint16_t RESERVED2; - __IO uint16_t DR; - uint16_t RESERVED3; - __IO uint16_t CRCPR; - uint16_t RESERVED4; - __IO uint16_t RXCRCR; - uint16_t RESERVED5; - __IO uint16_t TXCRCR; - uint16_t RESERVED6; - __IO uint16_t I2SCFGR; - uint16_t RESERVED7; - __IO uint16_t I2SPR; - uint16_t RESERVED8; -} SPI_TypeDef; - -/** - * @brief TIM - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SMCR; - uint16_t RESERVED2; - __IO uint16_t DIER; - uint16_t RESERVED3; - __IO uint16_t SR; - uint16_t RESERVED4; - __IO uint16_t EGR; - uint16_t RESERVED5; - __IO uint16_t CCMR1; - uint16_t RESERVED6; - __IO uint16_t CCMR2; - uint16_t RESERVED7; - __IO uint16_t CCER; - uint16_t RESERVED8; - __IO uint16_t CNT; - uint16_t RESERVED9; - __IO uint16_t PSC; - uint16_t RESERVED10; - __IO uint16_t ARR; - uint16_t RESERVED11; - __IO uint16_t RCR; - uint16_t RESERVED12; - __IO uint16_t CCR1; - uint16_t RESERVED13; - __IO uint16_t CCR2; - uint16_t RESERVED14; - __IO uint16_t CCR3; - uint16_t RESERVED15; - __IO uint16_t CCR4; - uint16_t RESERVED16; - __IO uint16_t BDTR; - uint16_t RESERVED17; - __IO uint16_t DCR; - uint16_t RESERVED18; - __IO uint16_t DMAR; - uint16_t RESERVED19; -} TIM_TypeDef; - -/** - * @brief Universal Synchronous Asynchronous Receiver Transmitter - */ - -typedef struct -{ - __IO uint16_t SR; - uint16_t RESERVED0; - __IO uint16_t DR; - uint16_t RESERVED1; - __IO uint16_t BRR; - uint16_t RESERVED2; - __IO uint16_t CR1; - uint16_t RESERVED3; - __IO uint16_t CR2; - uint16_t RESERVED4; - __IO uint16_t CR3; - uint16_t RESERVED5; - __IO uint16_t GTPR; - uint16_t RESERVED6; -} USART_TypeDef; - -/** - * @brief Window WATCHDOG - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFR; - __IO uint32_t SR; -} WWDG_TypeDef; - -/** - * @} - */ - -/** @addtogroup Peripheral_memory_map - * @{ - */ - -#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the alias region */ -#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the alias region */ - -#define SRAM_BASE ((uint32_t)0x20000000) /*!< Peripheral base address in the bit-band region */ -#define PERIPH_BASE ((uint32_t)0x40000000) /*!< SRAM base address in the bit-band region */ - -#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ - -/*!< Peripheral memory map */ -#define APB1PERIPH_BASE PERIPH_BASE -#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) -#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) - -#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) -#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) -#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) -#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) -#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) -#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) -#define RTC_BASE (APB1PERIPH_BASE + 0x2800) -#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) -#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) -#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) -#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) -#define USART2_BASE (APB1PERIPH_BASE + 0x4400) -#define USART3_BASE (APB1PERIPH_BASE + 0x4800) -#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) -#define UART5_BASE (APB1PERIPH_BASE + 0x5000) -#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) -#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) -#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) -#define CAN2_BASE (APB1PERIPH_BASE + 0x6800) -#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) -#define PWR_BASE (APB1PERIPH_BASE + 0x7000) -#define DAC_BASE (APB1PERIPH_BASE + 0x7400) - -#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) -#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) -#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) -#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) -#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) -#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) -#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) -#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) -#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) -#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) -#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) -#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) -#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) -#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) -#define USART1_BASE (APB2PERIPH_BASE + 0x3800) -#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) - -#define SDIO_BASE (PERIPH_BASE + 0x18000) - -#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) -#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) -#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) -#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) -#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) -#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) -#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) -#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) -#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) -#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) -#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) -#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) -#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) -#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) -#define RCC_BASE (AHBPERIPH_BASE + 0x1000) -#define CRC_BASE (AHBPERIPH_BASE + 0x3000) - -#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */ -#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ - -#define ETH_BASE (AHBPERIPH_BASE + 0x8000) - -#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ -#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ -#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!< FSMC Bank2 registers base address */ -#define FSMC_Bank3_R_BASE (FSMC_R_BASE + 0x0080) /*!< FSMC Bank3 registers base address */ -#define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!< FSMC Bank4 registers base address */ - -#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ - -/** - * @} - */ - -/** @addtogroup Peripheral_declaration - * @{ - */ - -#define TIM2 ((TIM_TypeDef *) TIM2_BASE) -#define TIM3 ((TIM_TypeDef *) TIM3_BASE) -#define TIM4 ((TIM_TypeDef *) TIM4_BASE) -#define TIM5 ((TIM_TypeDef *) TIM5_BASE) -#define TIM6 ((TIM_TypeDef *) TIM6_BASE) -#define TIM7 ((TIM_TypeDef *) TIM7_BASE) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define WWDG ((WWDG_TypeDef *) WWDG_BASE) -#define IWDG ((IWDG_TypeDef *) IWDG_BASE) -#define SPI2 ((SPI_TypeDef *) SPI2_BASE) -#define SPI3 ((SPI_TypeDef *) SPI3_BASE) -#define USART2 ((USART_TypeDef *) USART2_BASE) -#define USART3 ((USART_TypeDef *) USART3_BASE) -#define UART4 ((USART_TypeDef *) UART4_BASE) -#define UART5 ((USART_TypeDef *) UART5_BASE) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C2 ((I2C_TypeDef *) I2C2_BASE) -#define CAN1 ((CAN_TypeDef *) CAN1_BASE) -#define CAN2 ((CAN_TypeDef *) CAN2_BASE) -#define BKP ((BKP_TypeDef *) BKP_BASE) -#define PWR ((PWR_TypeDef *) PWR_BASE) -#define DAC ((DAC_TypeDef *) DAC_BASE) -#define AFIO ((AFIO_TypeDef *) AFIO_BASE) -#define EXTI ((EXTI_TypeDef *) EXTI_BASE) -#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) -#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) -#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) -#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) -#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) -#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) -#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) -#define ADC1 ((ADC_TypeDef *) ADC1_BASE) -#define ADC2 ((ADC_TypeDef *) ADC2_BASE) -#define TIM1 ((TIM_TypeDef *) TIM1_BASE) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define TIM8 ((TIM_TypeDef *) TIM8_BASE) -#define USART1 ((USART_TypeDef *) USART1_BASE) -#define ADC3 ((ADC_TypeDef *) ADC3_BASE) -#define SDIO ((SDIO_TypeDef *) SDIO_BASE) -#define DMA1 ((DMA_TypeDef *) DMA1_BASE) -#define DMA2 ((DMA_TypeDef *) DMA2_BASE) -#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) -#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) -#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) -#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) -#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) -#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) -#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) -#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) -#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) -#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) -#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) -#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) -#define RCC ((RCC_TypeDef *) RCC_BASE) -#define CRC ((CRC_TypeDef *) CRC_BASE) -#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) -#define OB ((OB_TypeDef *) OB_BASE) -#define ETH ((ETH_TypeDef *) ETH_BASE) -#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) -#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) -#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) -#define FSMC_Bank3 ((FSMC_Bank3_TypeDef *) FSMC_Bank3_R_BASE) -#define FSMC_Bank4 ((FSMC_Bank4_TypeDef *) FSMC_Bank4_R_BASE) -#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) - -/** - * @} - */ - -/** @addtogroup Exported_constants - * @{ - */ - - /** @addtogroup Peripheral_Registers_Bits_Definition - * @{ - */ - -/******************************************************************************/ -/* Peripheral Registers_Bits_Definition */ -/******************************************************************************/ - -/******************************************************************************/ -/* */ -/* CRC calculation unit */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for CRC_DR register *********************/ -#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ - - -/******************* Bit definition for CRC_IDR register ********************/ -#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ - - -/******************** Bit definition for CRC_CR register ********************/ -#define CRC_CR_RESET ((uint8_t)0x01) /*!< RESET bit */ - -/******************************************************************************/ -/* */ -/* Power Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for PWR_CR register ********************/ -#define PWR_CR_LPDS ((uint16_t)0x0001) /*!< Low-Power Deepsleep */ -#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ -#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ -#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ -#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ - -#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ -#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ -#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ -#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ - -/*!< PVD level configuration */ -#define PWR_CR_PLS_2V2 ((uint16_t)0x0000) /*!< PVD level 2.2V */ -#define PWR_CR_PLS_2V3 ((uint16_t)0x0020) /*!< PVD level 2.3V */ -#define PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!< PVD level 2.4V */ -#define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!< PVD level 2.5V */ -#define PWR_CR_PLS_2V6 ((uint16_t)0x0080) /*!< PVD level 2.6V */ -#define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!< PVD level 2.7V */ -#define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!< PVD level 2.8V */ -#define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!< PVD level 2.9V */ - -#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ - - -/******************* Bit definition for PWR_CSR register ********************/ -#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ -#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ -#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ -#define PWR_CSR_EWUP ((uint16_t)0x0100) /*!< Enable WKUP pin */ - -/******************************************************************************/ -/* */ -/* Backup registers */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for BKP_DR1 register ********************/ -#define BKP_DR1_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR2 register ********************/ -#define BKP_DR2_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR3 register ********************/ -#define BKP_DR3_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR4 register ********************/ -#define BKP_DR4_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR5 register ********************/ -#define BKP_DR5_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR6 register ********************/ -#define BKP_DR6_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR7 register ********************/ -#define BKP_DR7_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR8 register ********************/ -#define BKP_DR8_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR9 register ********************/ -#define BKP_DR9_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR10 register *******************/ -#define BKP_DR10_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR11 register *******************/ -#define BKP_DR11_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR12 register *******************/ -#define BKP_DR12_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR13 register *******************/ -#define BKP_DR13_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR14 register *******************/ -#define BKP_DR14_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR15 register *******************/ -#define BKP_DR15_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR16 register *******************/ -#define BKP_DR16_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR17 register *******************/ -#define BKP_DR17_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_DR18 register ********************/ -#define BKP_DR18_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR19 register *******************/ -#define BKP_DR19_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR20 register *******************/ -#define BKP_DR20_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR21 register *******************/ -#define BKP_DR21_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR22 register *******************/ -#define BKP_DR22_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR23 register *******************/ -#define BKP_DR23_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR24 register *******************/ -#define BKP_DR24_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR25 register *******************/ -#define BKP_DR25_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR26 register *******************/ -#define BKP_DR26_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR27 register *******************/ -#define BKP_DR27_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR28 register *******************/ -#define BKP_DR28_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR29 register *******************/ -#define BKP_DR29_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR30 register *******************/ -#define BKP_DR30_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR31 register *******************/ -#define BKP_DR31_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR32 register *******************/ -#define BKP_DR32_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR33 register *******************/ -#define BKP_DR33_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR34 register *******************/ -#define BKP_DR34_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR35 register *******************/ -#define BKP_DR35_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR36 register *******************/ -#define BKP_DR36_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR37 register *******************/ -#define BKP_DR37_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR38 register *******************/ -#define BKP_DR38_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR39 register *******************/ -#define BKP_DR39_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR40 register *******************/ -#define BKP_DR40_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR41 register *******************/ -#define BKP_DR41_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR42 register *******************/ -#define BKP_DR42_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_RTCCR register *******************/ -#define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!< Calibration value */ -#define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!< Calibration Clock Output */ -#define BKP_RTCCR_ASOE ((uint16_t)0x0100) /*!< Alarm or Second Output Enable */ -#define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!< Alarm or Second Output Selection */ - -/******************** Bit definition for BKP_CR register ********************/ -#define BKP_CR_TPE ((uint8_t)0x01) /*!< TAMPER pin enable */ -#define BKP_CR_TPAL ((uint8_t)0x02) /*!< TAMPER pin active level */ - -/******************* Bit definition for BKP_CSR register ********************/ -#define BKP_CSR_CTE ((uint16_t)0x0001) /*!< Clear Tamper event */ -#define BKP_CSR_CTI ((uint16_t)0x0002) /*!< Clear Tamper Interrupt */ -#define BKP_CSR_TPIE ((uint16_t)0x0004) /*!< TAMPER Pin interrupt enable */ -#define BKP_CSR_TEF ((uint16_t)0x0100) /*!< Tamper Event Flag */ -#define BKP_CSR_TIF ((uint16_t)0x0200) /*!< Tamper Interrupt Flag */ - -/******************************************************************************/ -/* */ -/* Reset and Clock Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for RCC_CR register ********************/ -#define RCC_CR_HSION ((uint32_t)0x00000001) /*!< Internal High Speed clock enable */ -#define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!< Internal High Speed clock ready flag */ -#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!< Internal High Speed clock trimming */ -#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!< Internal High Speed clock Calibration */ -#define RCC_CR_HSEON ((uint32_t)0x00010000) /*!< External High Speed clock enable */ -#define RCC_CR_HSERDY ((uint32_t)0x00020000) /*!< External High Speed clock ready flag */ -#define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!< External High Speed clock Bypass */ -#define RCC_CR_CSSON ((uint32_t)0x00080000) /*!< Clock Security System enable */ -#define RCC_CR_PLLON ((uint32_t)0x01000000) /*!< PLL enable */ -#define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!< PLL clock ready flag */ - -#ifdef STM32F10X_CL - #define RCC_CR_PLL2ON ((uint32_t)0x04000000) /*!< PLL2 enable */ - #define RCC_CR_PLL2RDY ((uint32_t)0x08000000) /*!< PLL2 clock ready flag */ - #define RCC_CR_PLL3ON ((uint32_t)0x10000000) /*!< PLL3 enable */ - #define RCC_CR_PLL3RDY ((uint32_t)0x20000000) /*!< PLL3 clock ready flag */ -#endif /* STM32F10X_CL */ - -/******************* Bit definition for RCC_CFGR register *******************/ -/*!< SW configuration */ -#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ -#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ -#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ -#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ - -/*!< SWS configuration */ -#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ -#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ -#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ -#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ - -/*!< HPRE configuration */ -#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ -#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ -#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ -#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ - -#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ -#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ -#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ -#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ -#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ -#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ -#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ -#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ -#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ - -/*!< PPRE1 configuration */ -#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ -#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ - -/*!< PPRE2 configuration */ -#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ -#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ -#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ -#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ - -#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ - -/*!< ADCPPRE configuration */ -#define RCC_CFGR_ADCPRE ((uint32_t)0x0000C000) /*!< ADCPRE[1:0] bits (ADC prescaler) */ -#define RCC_CFGR_ADCPRE_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define RCC_CFGR_ADCPRE_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define RCC_CFGR_ADCPRE_DIV2 ((uint32_t)0x00000000) /*!< PCLK2 divided by 2 */ -#define RCC_CFGR_ADCPRE_DIV4 ((uint32_t)0x00004000) /*!< PCLK2 divided by 4 */ -#define RCC_CFGR_ADCPRE_DIV6 ((uint32_t)0x00008000) /*!< PCLK2 divided by 6 */ -#define RCC_CFGR_ADCPRE_DIV8 ((uint32_t)0x0000C000) /*!< PCLK2 divided by 8 */ - -#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ - -#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ - -/*!< PLLMUL configuration */ -#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ -#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ -#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ -#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ - -#ifdef STM32F10X_CL - #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ - #define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ - - #define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ - #define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ - - #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock * 4 */ - #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock * 5 */ - #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock * 6 */ - #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock * 7 */ - #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock * 8 */ - #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock * 9 */ - #define RCC_CFGR_PLLMULL6_5 ((uint32_t)0x00340000) /*!< PLL input clock * 6.5 */ - - #define RCC_CFGR_OTGFSPRE ((uint32_t)0x00400000) /*!< USB OTF FS prescaler */ - -/*!< MCO configuration */ - #define RCC_CFGR_MCO ((uint32_t)0x0F000000) /*!< MCO[3:0] bits (Microcontroller Clock Output) */ - #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ - #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - #define RCC_CFGR_MCO_3 ((uint32_t)0x08000000) /*!< Bit 3 */ - - #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ - #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ - #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ - #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ - #define RCC_CFGR_MCO_PLLCLK_Div2 ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ - #define RCC_CFGR_MCO_PLL2CLK ((uint32_t)0x08000000) /*!< PLL2 clock selected as MCO source*/ - #define RCC_CFGR_MCO_PLL3CLK_Div2 ((uint32_t)0x09000000) /*!< PLL3 clock divided by 2 selected as MCO source*/ - #define RCC_CFGR_MCO_Ext_HSE ((uint32_t)0x0A000000) /*!< XT1 external 3-25 MHz oscillator clock selected as MCO source (for Ethernet) */ - #define RCC_CFGR_MCO_PLL3CLK ((uint32_t)0x0B000000) /*!< PLL3 clock selected as MCO source (for Ethernet) */ -#else - #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ - #define RCC_CFGR_PLLSRC_HSE ((uint32_t)0x00010000) /*!< HSE clock selected as PLL entry clock source */ - - #define RCC_CFGR_PLLXTPRE_HSE ((uint32_t)0x00000000) /*!< HSE clock not divided for PLL entry */ - #define RCC_CFGR_PLLXTPRE_HSE_Div2 ((uint32_t)0x00020000) /*!< HSE clock divided by 2 for PLL entry */ - - #define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ - #define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ - #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ - #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ - #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ - #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ - #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ - #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ - #define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ - #define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ - #define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ - #define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ - #define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ - #define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ - #define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ - #define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB Device prescaler */ - -/*!< MCO configuration */ - #define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ - #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ - #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - - #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ - #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ - #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ - #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ - #define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ -#endif /* STM32F10X_CL */ - -/*!<****************** Bit definition for RCC_CIR register ********************/ -#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ -#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ -#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ -#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ -#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ -#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ -#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ -#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ -#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ -#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ -#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ -#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ -#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ -#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ -#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ -#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ -#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ - -#ifdef STM32F10X_CL - #define RCC_CIR_PLL2RDYF ((uint32_t)0x00000020) /*!< PLL2 Ready Interrupt flag */ - #define RCC_CIR_PLL3RDYF ((uint32_t)0x00000040) /*!< PLL3 Ready Interrupt flag */ - #define RCC_CIR_PLL2RDYIE ((uint32_t)0x00002000) /*!< PLL2 Ready Interrupt Enable */ - #define RCC_CIR_PLL3RDYIE ((uint32_t)0x00004000) /*!< PLL3 Ready Interrupt Enable */ - #define RCC_CIR_PLL2RDYC ((uint32_t)0x00200000) /*!< PLL2 Ready Interrupt Clear */ - #define RCC_CIR_PLL3RDYC ((uint32_t)0x00400000) /*!< PLL3 Ready Interrupt Clear */ -#endif /* STM32F10X_CL */ - -/***************** Bit definition for RCC_APB2RSTR register *****************/ -#define RCC_APB2RSTR_AFIORST ((uint16_t)0x0001) /*!< Alternate Function I/O reset */ -#define RCC_APB2RSTR_IOPARST ((uint16_t)0x0004) /*!< I/O port A reset */ -#define RCC_APB2RSTR_IOPBRST ((uint16_t)0x0008) /*!< I/O port B reset */ -#define RCC_APB2RSTR_IOPCRST ((uint16_t)0x0010) /*!< I/O port C reset */ -#define RCC_APB2RSTR_IOPDRST ((uint16_t)0x0020) /*!< I/O port D reset */ -#define RCC_APB2RSTR_ADC1RST ((uint16_t)0x0200) /*!< ADC 1 interface reset */ -#define RCC_APB2RSTR_ADC2RST ((uint16_t)0x0400) /*!< ADC 2 interface reset */ -#define RCC_APB2RSTR_TIM1RST ((uint16_t)0x0800) /*!< TIM1 Timer reset */ -#define RCC_APB2RSTR_SPI1RST ((uint16_t)0x1000) /*!< SPI 1 reset */ -#define RCC_APB2RSTR_USART1RST ((uint16_t)0x4000) /*!< USART1 reset */ - -#ifndef STM32F10X_LD - #define RCC_APB2RSTR_IOPERST ((uint16_t)0x0040) /*!< I/O port E reset */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_HD - #define RCC_APB2RSTR_IOPFRST ((uint16_t)0x0080) /*!< I/O port F reset */ - #define RCC_APB2RSTR_IOPGRST ((uint16_t)0x0100) /*!< I/O port G reset */ - #define RCC_APB2RSTR_TIM8RST ((uint16_t)0x2000) /*!< TIM8 Timer reset */ - #define RCC_APB2RSTR_ADC3RST ((uint16_t)0x8000) /*!< ADC3 interface reset */ -#endif /* STM32F10X_HD */ - -/***************** Bit definition for RCC_APB1RSTR register *****************/ -#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ -#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ -#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ -#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ -#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ -#define RCC_APB1RSTR_CAN1RST ((uint32_t)0x02000000) /*!< CAN1 reset */ -#define RCC_APB1RSTR_BKPRST ((uint32_t)0x08000000) /*!< Backup interface reset */ -#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< Power interface reset */ - -#ifndef STM32F10X_LD - #define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ - #define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI 2 reset */ - #define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< RUSART 3 reset */ - #define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ -#endif /* STM32F10X_HD */ - -#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) - #define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB Device reset */ -#endif - -#if defined (STM32F10X_HD) || defined (STM32F10X_CL) - #define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ - #define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ - #define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ - #define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ - #define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ - #define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ - #define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ -#endif - -#ifdef STM32F10X_CL - #define RCC_APB1RSTR_CAN2RST ((uint32_t)0x08000000) /*!< CAN2 reset */ -#endif /* STM32F10X_CL */ - -/****************** Bit definition for RCC_AHBENR register ******************/ -#define RCC_AHBENR_DMA1EN ((uint16_t)0x0001) /*!< DMA1 clock enable */ -#define RCC_AHBENR_SRAMEN ((uint16_t)0x0004) /*!< SRAM interface clock enable */ -#define RCC_AHBENR_FLITFEN ((uint16_t)0x0010) /*!< FLITF clock enable */ -#define RCC_AHBENR_CRCEN ((uint16_t)0x0040) /*!< CRC clock enable */ - -#if defined (STM32F10X_HD) || defined (STM32F10X_CL) - #define RCC_AHBENR_DMA2EN ((uint16_t)0x0002) /*!< DMA2 clock enable */ -#endif - -#ifdef STM32F10X_HD - #define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ - #define RCC_AHBENR_SDIOEN ((uint16_t)0x0400) /*!< SDIO clock enable */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_CL - #define RCC_AHBENR_OTGFSEN ((uint32_t)0x00001000) /*!< USB OTG FS clock enable */ - #define RCC_AHBENR_ETHMACEN ((uint32_t)0x00004000) /*!< ETHERNET MAC clock enable */ - #define RCC_AHBENR_ETHMACTXEN ((uint32_t)0x00008000) /*!< ETHERNET MAC Tx clock enable */ - #define RCC_AHBENR_ETHMACRXEN ((uint32_t)0x00010000) /*!< ETHERNET MAC Rx clock enable */ -#endif /* STM32F10X_CL */ - -/****************** Bit definition for RCC_APB2ENR register *****************/ -#define RCC_APB2ENR_AFIOEN ((uint16_t)0x0001) /*!< Alternate Function I/O clock enable */ -#define RCC_APB2ENR_IOPAEN ((uint16_t)0x0004) /*!< I/O port A clock enable */ -#define RCC_APB2ENR_IOPBEN ((uint16_t)0x0008) /*!< I/O port B clock enable */ -#define RCC_APB2ENR_IOPCEN ((uint16_t)0x0010) /*!< I/O port C clock enable */ -#define RCC_APB2ENR_IOPDEN ((uint16_t)0x0020) /*!< I/O port D clock enable */ -#define RCC_APB2ENR_ADC1EN ((uint16_t)0x0200) /*!< ADC 1 interface clock enable */ -#define RCC_APB2ENR_ADC2EN ((uint16_t)0x0400) /*!< ADC 2 interface clock enable */ -#define RCC_APB2ENR_TIM1EN ((uint16_t)0x0800) /*!< TIM1 Timer clock enable */ -#define RCC_APB2ENR_SPI1EN ((uint16_t)0x1000) /*!< SPI 1 clock enable */ -#define RCC_APB2ENR_USART1EN ((uint16_t)0x4000) /*!< USART1 clock enable */ - -#ifndef STM32F10X_LD - #define RCC_APB2ENR_IOPEEN ((uint16_t)0x0040) /*!< I/O port E clock enable */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_HD - #define RCC_APB2ENR_IOPFEN ((uint16_t)0x0080) /*!< I/O port F clock enable */ - #define RCC_APB2ENR_IOPGEN ((uint16_t)0x0100) /*!< I/O port G clock enable */ - #define RCC_APB2ENR_TIM8EN ((uint16_t)0x2000) /*!< TIM8 Timer clock enable */ - #define RCC_APB2ENR_ADC3EN ((uint16_t)0x8000) /*!< DMA1 clock enable */ -#endif /* STM32F10X_HD */ - -/***************** Bit definition for RCC_APB1ENR register ******************/ -#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enabled*/ -#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ -#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ -#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ -#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ -#define RCC_APB1ENR_CAN1EN ((uint32_t)0x02000000) /*!< CAN1 clock enable */ -#define RCC_APB1ENR_BKPEN ((uint32_t)0x08000000) /*!< Backup interface clock enable */ -#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< Power interface clock enable */ - -#ifndef STM32F10X_LD - #define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ - #define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI 2 clock enable */ - #define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ - #define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ -#endif /* STM32F10X_HD */ - -#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) - #define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB Device clock enable */ -#endif - -#if defined (STM32F10X_HD) || defined (STM32F10X_CL) - #define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ - #define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ - #define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ - #define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ - #define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ - #define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ - #define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ -#endif - -#ifdef STM32F10X_CL - #define RCC_APB1ENR_CAN2EN ((uint32_t)0x08000000) /*!< CAN2 clock enable */ -#endif /* STM32F10X_CL */ - -/******************* Bit definition for RCC_BDCR register *******************/ -#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ -#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ -#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ - -#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ -#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< RTC congiguration */ -#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ -#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 128 used as RTC clock */ - -#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ -#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ - -/******************* Bit definition for RCC_CSR register ********************/ -#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ -#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ -#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ -#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ -#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ -#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ -#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ -#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ -#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ - -#ifdef STM32F10X_CL -/******************* Bit definition for RCC_AHBRSTR register ****************/ - #define RCC_AHBRSTR_OTGFSRST ((uint32_t)0x00001000) /*!< USB OTG FS reset */ - #define RCC_AHBRSTR_ETHMACRST ((uint32_t)0x00004000) /*!< ETHERNET MAC reset */ - -/******************* Bit definition for RCC_CFGR2 register ******************/ -/*!< PREDIV1 configuration */ - #define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ - #define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ - #define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - #define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ - #define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ - - #define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ - #define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ - #define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ - #define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ - #define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ - #define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ - #define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ - #define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ - #define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ - #define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ - #define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ - #define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ - #define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ - #define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ - #define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ - #define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ - -/*!< PREDIV2 configuration */ - #define RCC_CFGR2_PREDIV2 ((uint32_t)0x000000F0) /*!< PREDIV2[3:0] bits */ - #define RCC_CFGR2_PREDIV2_0 ((uint32_t)0x00000010) /*!< Bit 0 */ - #define RCC_CFGR2_PREDIV2_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - #define RCC_CFGR2_PREDIV2_2 ((uint32_t)0x00000040) /*!< Bit 2 */ - #define RCC_CFGR2_PREDIV2_3 ((uint32_t)0x00000080) /*!< Bit 3 */ - - #define RCC_CFGR2_PREDIV2_DIV1 ((uint32_t)0x00000000) /*!< PREDIV2 input clock not divided */ - #define RCC_CFGR2_PREDIV2_DIV2 ((uint32_t)0x00000010) /*!< PREDIV2 input clock divided by 2 */ - #define RCC_CFGR2_PREDIV2_DIV3 ((uint32_t)0x00000020) /*!< PREDIV2 input clock divided by 3 */ - #define RCC_CFGR2_PREDIV2_DIV4 ((uint32_t)0x00000030) /*!< PREDIV2 input clock divided by 4 */ - #define RCC_CFGR2_PREDIV2_DIV5 ((uint32_t)0x00000040) /*!< PREDIV2 input clock divided by 5 */ - #define RCC_CFGR2_PREDIV2_DIV6 ((uint32_t)0x00000050) /*!< PREDIV2 input clock divided by 6 */ - #define RCC_CFGR2_PREDIV2_DIV7 ((uint32_t)0x00000060) /*!< PREDIV2 input clock divided by 7 */ - #define RCC_CFGR2_PREDIV2_DIV8 ((uint32_t)0x00000070) /*!< PREDIV2 input clock divided by 8 */ - #define RCC_CFGR2_PREDIV2_DIV9 ((uint32_t)0x00000080) /*!< PREDIV2 input clock divided by 9 */ - #define RCC_CFGR2_PREDIV2_DIV10 ((uint32_t)0x00000090) /*!< PREDIV2 input clock divided by 10 */ - #define RCC_CFGR2_PREDIV2_DIV11 ((uint32_t)0x000000A0) /*!< PREDIV2 input clock divided by 11 */ - #define RCC_CFGR2_PREDIV2_DIV12 ((uint32_t)0x000000B0) /*!< PREDIV2 input clock divided by 12 */ - #define RCC_CFGR2_PREDIV2_DIV13 ((uint32_t)0x000000C0) /*!< PREDIV2 input clock divided by 13 */ - #define RCC_CFGR2_PREDIV2_DIV14 ((uint32_t)0x000000D0) /*!< PREDIV2 input clock divided by 14 */ - #define RCC_CFGR2_PREDIV2_DIV15 ((uint32_t)0x000000E0) /*!< PREDIV2 input clock divided by 15 */ - #define RCC_CFGR2_PREDIV2_DIV16 ((uint32_t)0x000000F0) /*!< PREDIV2 input clock divided by 16 */ - -/*!< PLL2MUL configuration */ - #define RCC_CFGR2_PLL2MUL ((uint32_t)0x00000F00) /*!< PLL2MUL[3:0] bits */ - #define RCC_CFGR2_PLL2MUL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ - #define RCC_CFGR2_PLL2MUL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - #define RCC_CFGR2_PLL2MUL_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - #define RCC_CFGR2_PLL2MUL_3 ((uint32_t)0x00000800) /*!< Bit 3 */ - - #define RCC_CFGR2_PLL2MUL8 ((uint32_t)0x00000600) /*!< PLL2 input clock * 8 */ - #define RCC_CFGR2_PLL2MUL9 ((uint32_t)0x00000700) /*!< PLL2 input clock * 9 */ - #define RCC_CFGR2_PLL2MUL10 ((uint32_t)0x00000800) /*!< PLL2 input clock * 10 */ - #define RCC_CFGR2_PLL2MUL11 ((uint32_t)0x00000900) /*!< PLL2 input clock * 11 */ - #define RCC_CFGR2_PLL2MUL12 ((uint32_t)0x00000A00) /*!< PLL2 input clock * 12 */ - #define RCC_CFGR2_PLL2MUL13 ((uint32_t)0x00000B00) /*!< PLL2 input clock * 13 */ - #define RCC_CFGR2_PLL2MUL14 ((uint32_t)0x00000C00) /*!< PLL2 input clock * 14 */ - #define RCC_CFGR2_PLL2MUL16 ((uint32_t)0x00000E00) /*!< PLL2 input clock * 16 */ - #define RCC_CFGR2_PLL2MUL20 ((uint32_t)0x00000F00) /*!< PLL2 input clock * 20 */ - -/*!< PLL3MUL configuration */ - #define RCC_CFGR2_PLL3MUL ((uint32_t)0x0000F000) /*!< PLL3MUL[3:0] bits */ - #define RCC_CFGR2_PLL3MUL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ - #define RCC_CFGR2_PLL3MUL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - #define RCC_CFGR2_PLL3MUL_2 ((uint32_t)0x00004000) /*!< Bit 2 */ - #define RCC_CFGR2_PLL3MUL_3 ((uint32_t)0x00008000) /*!< Bit 3 */ - - #define RCC_CFGR2_PLL3MUL8 ((uint32_t)0x00006000) /*!< PLL3 input clock * 8 */ - #define RCC_CFGR2_PLL3MUL9 ((uint32_t)0x00007000) /*!< PLL3 input clock * 9 */ - #define RCC_CFGR2_PLL3MUL10 ((uint32_t)0x00008000) /*!< PLL3 input clock * 10 */ - #define RCC_CFGR2_PLL3MUL11 ((uint32_t)0x00009000) /*!< PLL3 input clock * 11 */ - #define RCC_CFGR2_PLL3MUL12 ((uint32_t)0x0000A000) /*!< PLL3 input clock * 12 */ - #define RCC_CFGR2_PLL3MUL13 ((uint32_t)0x0000B000) /*!< PLL3 input clock * 13 */ - #define RCC_CFGR2_PLL3MUL14 ((uint32_t)0x0000C000) /*!< PLL3 input clock * 14 */ - #define RCC_CFGR2_PLL3MUL16 ((uint32_t)0x0000E000) /*!< PLL3 input clock * 16 */ - #define RCC_CFGR2_PLL3MUL20 ((uint32_t)0x0000F000) /*!< PLL3 input clock * 20 */ - - #define RCC_CFGR2_PREDIV1SRC ((uint32_t)0x00010000) /*!< PREDIV1 entry clock source */ - #define RCC_CFGR2_PREDIV1SRC_PLL2 ((uint32_t)0x00010000) /*!< PLL2 selected as PREDIV1 entry clock source */ - #define RCC_CFGR2_PREDIV1SRC_HSE ((uint32_t)0x00000000) /*!< HSE selected as PREDIV1 entry clock source */ - #define RCC_CFGR2_I2S2SRC ((uint32_t)0x00020000) /*!< I2S2 entry clock source */ - #define RCC_CFGR2_I2S3SRC ((uint32_t)0x00040000) /*!< I2S3 clock source */ -#endif /* STM32F10X_CL */ - -/******************************************************************************/ -/* */ -/* General Purpose and Alternate Function I/O */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for GPIO_CRL register *******************/ -#define GPIO_CRL_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRL_MODE0 ((uint32_t)0x00000003) /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ -#define GPIO_CRL_MODE0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRL_MODE0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRL_MODE1 ((uint32_t)0x00000030) /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ -#define GPIO_CRL_MODE1_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRL_MODE1_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRL_MODE2 ((uint32_t)0x00000300) /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ -#define GPIO_CRL_MODE2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRL_MODE2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRL_MODE3 ((uint32_t)0x00003000) /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ -#define GPIO_CRL_MODE3_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRL_MODE3_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE4 ((uint32_t)0x00030000) /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ -#define GPIO_CRL_MODE4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRL_MODE4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE5 ((uint32_t)0x00300000) /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ -#define GPIO_CRL_MODE5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRL_MODE5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE6 ((uint32_t)0x03000000) /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ -#define GPIO_CRL_MODE6_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE6_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE7 ((uint32_t)0x30000000) /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ -#define GPIO_CRL_MODE7_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE7_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRL_CNF0 ((uint32_t)0x0000000C) /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ -#define GPIO_CRL_CNF0_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRL_CNF0_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRL_CNF1 ((uint32_t)0x000000C0) /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ -#define GPIO_CRL_CNF1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRL_CNF1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRL_CNF2 ((uint32_t)0x00000C00) /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ -#define GPIO_CRL_CNF2_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRL_CNF2_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRL_CNF3 ((uint32_t)0x0000C000) /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ -#define GPIO_CRL_CNF3_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRL_CNF3_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF4 ((uint32_t)0x000C0000) /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ -#define GPIO_CRL_CNF4_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRL_CNF4_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF5 ((uint32_t)0x00C00000) /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ -#define GPIO_CRL_CNF5_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRL_CNF5_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF6 ((uint32_t)0x0C000000) /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ -#define GPIO_CRL_CNF6_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF6_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF7 ((uint32_t)0xC0000000) /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ -#define GPIO_CRL_CNF7_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF7_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/******************* Bit definition for GPIO_CRH register *******************/ -#define GPIO_CRH_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRH_MODE8 ((uint32_t)0x00000003) /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ -#define GPIO_CRH_MODE8_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRH_MODE8_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRH_MODE9 ((uint32_t)0x00000030) /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ -#define GPIO_CRH_MODE9_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRH_MODE9_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRH_MODE10 ((uint32_t)0x00000300) /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ -#define GPIO_CRH_MODE10_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRH_MODE10_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRH_MODE11 ((uint32_t)0x00003000) /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ -#define GPIO_CRH_MODE11_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRH_MODE11_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE12 ((uint32_t)0x00030000) /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ -#define GPIO_CRH_MODE12_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRH_MODE12_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE13 ((uint32_t)0x00300000) /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ -#define GPIO_CRH_MODE13_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRH_MODE13_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE14 ((uint32_t)0x03000000) /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ -#define GPIO_CRH_MODE14_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE14_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE15 ((uint32_t)0x30000000) /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ -#define GPIO_CRH_MODE15_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE15_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRH_CNF8 ((uint32_t)0x0000000C) /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ -#define GPIO_CRH_CNF8_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRH_CNF8_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRH_CNF9 ((uint32_t)0x000000C0) /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ -#define GPIO_CRH_CNF9_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRH_CNF9_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRH_CNF10 ((uint32_t)0x00000C00) /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ -#define GPIO_CRH_CNF10_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRH_CNF10_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRH_CNF11 ((uint32_t)0x0000C000) /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ -#define GPIO_CRH_CNF11_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRH_CNF11_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF12 ((uint32_t)0x000C0000) /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ -#define GPIO_CRH_CNF12_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRH_CNF12_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF13 ((uint32_t)0x00C00000) /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ -#define GPIO_CRH_CNF13_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRH_CNF13_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF14 ((uint32_t)0x0C000000) /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ -#define GPIO_CRH_CNF14_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF14_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF15 ((uint32_t)0xC0000000) /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ -#define GPIO_CRH_CNF15_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF15_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/*!<****************** Bit definition for GPIO_IDR register *******************/ -#define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*!< Port input data, bit 0 */ -#define GPIO_IDR_IDR1 ((uint16_t)0x0002) /*!< Port input data, bit 1 */ -#define GPIO_IDR_IDR2 ((uint16_t)0x0004) /*!< Port input data, bit 2 */ -#define GPIO_IDR_IDR3 ((uint16_t)0x0008) /*!< Port input data, bit 3 */ -#define GPIO_IDR_IDR4 ((uint16_t)0x0010) /*!< Port input data, bit 4 */ -#define GPIO_IDR_IDR5 ((uint16_t)0x0020) /*!< Port input data, bit 5 */ -#define GPIO_IDR_IDR6 ((uint16_t)0x0040) /*!< Port input data, bit 6 */ -#define GPIO_IDR_IDR7 ((uint16_t)0x0080) /*!< Port input data, bit 7 */ -#define GPIO_IDR_IDR8 ((uint16_t)0x0100) /*!< Port input data, bit 8 */ -#define GPIO_IDR_IDR9 ((uint16_t)0x0200) /*!< Port input data, bit 9 */ -#define GPIO_IDR_IDR10 ((uint16_t)0x0400) /*!< Port input data, bit 10 */ -#define GPIO_IDR_IDR11 ((uint16_t)0x0800) /*!< Port input data, bit 11 */ -#define GPIO_IDR_IDR12 ((uint16_t)0x1000) /*!< Port input data, bit 12 */ -#define GPIO_IDR_IDR13 ((uint16_t)0x2000) /*!< Port input data, bit 13 */ -#define GPIO_IDR_IDR14 ((uint16_t)0x4000) /*!< Port input data, bit 14 */ -#define GPIO_IDR_IDR15 ((uint16_t)0x8000) /*!< Port input data, bit 15 */ - -/******************* Bit definition for GPIO_ODR register *******************/ -#define GPIO_ODR_ODR0 ((uint16_t)0x0001) /*!< Port output data, bit 0 */ -#define GPIO_ODR_ODR1 ((uint16_t)0x0002) /*!< Port output data, bit 1 */ -#define GPIO_ODR_ODR2 ((uint16_t)0x0004) /*!< Port output data, bit 2 */ -#define GPIO_ODR_ODR3 ((uint16_t)0x0008) /*!< Port output data, bit 3 */ -#define GPIO_ODR_ODR4 ((uint16_t)0x0010) /*!< Port output data, bit 4 */ -#define GPIO_ODR_ODR5 ((uint16_t)0x0020) /*!< Port output data, bit 5 */ -#define GPIO_ODR_ODR6 ((uint16_t)0x0040) /*!< Port output data, bit 6 */ -#define GPIO_ODR_ODR7 ((uint16_t)0x0080) /*!< Port output data, bit 7 */ -#define GPIO_ODR_ODR8 ((uint16_t)0x0100) /*!< Port output data, bit 8 */ -#define GPIO_ODR_ODR9 ((uint16_t)0x0200) /*!< Port output data, bit 9 */ -#define GPIO_ODR_ODR10 ((uint16_t)0x0400) /*!< Port output data, bit 10 */ -#define GPIO_ODR_ODR11 ((uint16_t)0x0800) /*!< Port output data, bit 11 */ -#define GPIO_ODR_ODR12 ((uint16_t)0x1000) /*!< Port output data, bit 12 */ -#define GPIO_ODR_ODR13 ((uint16_t)0x2000) /*!< Port output data, bit 13 */ -#define GPIO_ODR_ODR14 ((uint16_t)0x4000) /*!< Port output data, bit 14 */ -#define GPIO_ODR_ODR15 ((uint16_t)0x8000) /*!< Port output data, bit 15 */ - -/****************** Bit definition for GPIO_BSRR register *******************/ -#define GPIO_BSRR_BS0 ((uint32_t)0x00000001) /*!< Port x Set bit 0 */ -#define GPIO_BSRR_BS1 ((uint32_t)0x00000002) /*!< Port x Set bit 1 */ -#define GPIO_BSRR_BS2 ((uint32_t)0x00000004) /*!< Port x Set bit 2 */ -#define GPIO_BSRR_BS3 ((uint32_t)0x00000008) /*!< Port x Set bit 3 */ -#define GPIO_BSRR_BS4 ((uint32_t)0x00000010) /*!< Port x Set bit 4 */ -#define GPIO_BSRR_BS5 ((uint32_t)0x00000020) /*!< Port x Set bit 5 */ -#define GPIO_BSRR_BS6 ((uint32_t)0x00000040) /*!< Port x Set bit 6 */ -#define GPIO_BSRR_BS7 ((uint32_t)0x00000080) /*!< Port x Set bit 7 */ -#define GPIO_BSRR_BS8 ((uint32_t)0x00000100) /*!< Port x Set bit 8 */ -#define GPIO_BSRR_BS9 ((uint32_t)0x00000200) /*!< Port x Set bit 9 */ -#define GPIO_BSRR_BS10 ((uint32_t)0x00000400) /*!< Port x Set bit 10 */ -#define GPIO_BSRR_BS11 ((uint32_t)0x00000800) /*!< Port x Set bit 11 */ -#define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ -#define GPIO_BSRR_BS13 ((uint32_t)0x00002000) /*!< Port x Set bit 13 */ -#define GPIO_BSRR_BS14 ((uint32_t)0x00004000) /*!< Port x Set bit 14 */ -#define GPIO_BSRR_BS15 ((uint32_t)0x00008000) /*!< Port x Set bit 15 */ - -#define GPIO_BSRR_BR0 ((uint32_t)0x00010000) /*!< Port x Reset bit 0 */ -#define GPIO_BSRR_BR1 ((uint32_t)0x00020000) /*!< Port x Reset bit 1 */ -#define GPIO_BSRR_BR2 ((uint32_t)0x00040000) /*!< Port x Reset bit 2 */ -#define GPIO_BSRR_BR3 ((uint32_t)0x00080000) /*!< Port x Reset bit 3 */ -#define GPIO_BSRR_BR4 ((uint32_t)0x00100000) /*!< Port x Reset bit 4 */ -#define GPIO_BSRR_BR5 ((uint32_t)0x00200000) /*!< Port x Reset bit 5 */ -#define GPIO_BSRR_BR6 ((uint32_t)0x00400000) /*!< Port x Reset bit 6 */ -#define GPIO_BSRR_BR7 ((uint32_t)0x00800000) /*!< Port x Reset bit 7 */ -#define GPIO_BSRR_BR8 ((uint32_t)0x01000000) /*!< Port x Reset bit 8 */ -#define GPIO_BSRR_BR9 ((uint32_t)0x02000000) /*!< Port x Reset bit 9 */ -#define GPIO_BSRR_BR10 ((uint32_t)0x04000000) /*!< Port x Reset bit 10 */ -#define GPIO_BSRR_BR11 ((uint32_t)0x08000000) /*!< Port x Reset bit 11 */ -#define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ -#define GPIO_BSRR_BR13 ((uint32_t)0x20000000) /*!< Port x Reset bit 13 */ -#define GPIO_BSRR_BR14 ((uint32_t)0x40000000) /*!< Port x Reset bit 14 */ -#define GPIO_BSRR_BR15 ((uint32_t)0x80000000) /*!< Port x Reset bit 15 */ - -/******************* Bit definition for GPIO_BRR register *******************/ -#define GPIO_BRR_BR0 ((uint16_t)0x0001) /*!< Port x Reset bit 0 */ -#define GPIO_BRR_BR1 ((uint16_t)0x0002) /*!< Port x Reset bit 1 */ -#define GPIO_BRR_BR2 ((uint16_t)0x0004) /*!< Port x Reset bit 2 */ -#define GPIO_BRR_BR3 ((uint16_t)0x0008) /*!< Port x Reset bit 3 */ -#define GPIO_BRR_BR4 ((uint16_t)0x0010) /*!< Port x Reset bit 4 */ -#define GPIO_BRR_BR5 ((uint16_t)0x0020) /*!< Port x Reset bit 5 */ -#define GPIO_BRR_BR6 ((uint16_t)0x0040) /*!< Port x Reset bit 6 */ -#define GPIO_BRR_BR7 ((uint16_t)0x0080) /*!< Port x Reset bit 7 */ -#define GPIO_BRR_BR8 ((uint16_t)0x0100) /*!< Port x Reset bit 8 */ -#define GPIO_BRR_BR9 ((uint16_t)0x0200) /*!< Port x Reset bit 9 */ -#define GPIO_BRR_BR10 ((uint16_t)0x0400) /*!< Port x Reset bit 10 */ -#define GPIO_BRR_BR11 ((uint16_t)0x0800) /*!< Port x Reset bit 11 */ -#define GPIO_BRR_BR12 ((uint16_t)0x1000) /*!< Port x Reset bit 12 */ -#define GPIO_BRR_BR13 ((uint16_t)0x2000) /*!< Port x Reset bit 13 */ -#define GPIO_BRR_BR14 ((uint16_t)0x4000) /*!< Port x Reset bit 14 */ -#define GPIO_BRR_BR15 ((uint16_t)0x8000) /*!< Port x Reset bit 15 */ - -/****************** Bit definition for GPIO_LCKR register *******************/ -#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) /*!< Port x Lock bit 0 */ -#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) /*!< Port x Lock bit 1 */ -#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) /*!< Port x Lock bit 2 */ -#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) /*!< Port x Lock bit 3 */ -#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) /*!< Port x Lock bit 4 */ -#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) /*!< Port x Lock bit 5 */ -#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) /*!< Port x Lock bit 6 */ -#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) /*!< Port x Lock bit 7 */ -#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) /*!< Port x Lock bit 8 */ -#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) /*!< Port x Lock bit 9 */ -#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) /*!< Port x Lock bit 10 */ -#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) /*!< Port x Lock bit 11 */ -#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) /*!< Port x Lock bit 12 */ -#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) /*!< Port x Lock bit 13 */ -#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) /*!< Port x Lock bit 14 */ -#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) /*!< Port x Lock bit 15 */ -#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) /*!< Lock key */ - -/*----------------------------------------------------------------------------*/ - -/****************** Bit definition for AFIO_EVCR register *******************/ -#define AFIO_EVCR_PIN ((uint8_t)0x0F) /*!< PIN[3:0] bits (Pin selection) */ -#define AFIO_EVCR_PIN_0 ((uint8_t)0x01) /*!< Bit 0 */ -#define AFIO_EVCR_PIN_1 ((uint8_t)0x02) /*!< Bit 1 */ -#define AFIO_EVCR_PIN_2 ((uint8_t)0x04) /*!< Bit 2 */ -#define AFIO_EVCR_PIN_3 ((uint8_t)0x08) /*!< Bit 3 */ - -/*!< PIN configuration */ -#define AFIO_EVCR_PIN_PX0 ((uint8_t)0x00) /*!< Pin 0 selected */ -#define AFIO_EVCR_PIN_PX1 ((uint8_t)0x01) /*!< Pin 1 selected */ -#define AFIO_EVCR_PIN_PX2 ((uint8_t)0x02) /*!< Pin 2 selected */ -#define AFIO_EVCR_PIN_PX3 ((uint8_t)0x03) /*!< Pin 3 selected */ -#define AFIO_EVCR_PIN_PX4 ((uint8_t)0x04) /*!< Pin 4 selected */ -#define AFIO_EVCR_PIN_PX5 ((uint8_t)0x05) /*!< Pin 5 selected */ -#define AFIO_EVCR_PIN_PX6 ((uint8_t)0x06) /*!< Pin 6 selected */ -#define AFIO_EVCR_PIN_PX7 ((uint8_t)0x07) /*!< Pin 7 selected */ -#define AFIO_EVCR_PIN_PX8 ((uint8_t)0x08) /*!< Pin 8 selected */ -#define AFIO_EVCR_PIN_PX9 ((uint8_t)0x09) /*!< Pin 9 selected */ -#define AFIO_EVCR_PIN_PX10 ((uint8_t)0x0A) /*!< Pin 10 selected */ -#define AFIO_EVCR_PIN_PX11 ((uint8_t)0x0B) /*!< Pin 11 selected */ -#define AFIO_EVCR_PIN_PX12 ((uint8_t)0x0C) /*!< Pin 12 selected */ -#define AFIO_EVCR_PIN_PX13 ((uint8_t)0x0D) /*!< Pin 13 selected */ -#define AFIO_EVCR_PIN_PX14 ((uint8_t)0x0E) /*!< Pin 14 selected */ -#define AFIO_EVCR_PIN_PX15 ((uint8_t)0x0F) /*!< Pin 15 selected */ - -#define AFIO_EVCR_PORT ((uint8_t)0x70) /*!< PORT[2:0] bits (Port selection) */ -#define AFIO_EVCR_PORT_0 ((uint8_t)0x10) /*!< Bit 0 */ -#define AFIO_EVCR_PORT_1 ((uint8_t)0x20) /*!< Bit 1 */ -#define AFIO_EVCR_PORT_2 ((uint8_t)0x40) /*!< Bit 2 */ - -/*!< PORT configuration */ -#define AFIO_EVCR_PORT_PA ((uint8_t)0x00) /*!< Port A selected */ -#define AFIO_EVCR_PORT_PB ((uint8_t)0x10) /*!< Port B selected */ -#define AFIO_EVCR_PORT_PC ((uint8_t)0x20) /*!< Port C selected */ -#define AFIO_EVCR_PORT_PD ((uint8_t)0x30) /*!< Port D selected */ -#define AFIO_EVCR_PORT_PE ((uint8_t)0x40) /*!< Port E selected */ - -#define AFIO_EVCR_EVOE ((uint8_t)0x80) /*!< Event Output Enable */ - -/****************** Bit definition for AFIO_MAPR register *******************/ -#define AFIO_MAPR_SPI1_REMAP ((uint32_t)0x00000001) /*!< SPI1 remapping */ -#define AFIO_MAPR_I2C1_REMAP ((uint32_t)0x00000002) /*!< I2C1 remapping */ -#define AFIO_MAPR_USART1_REMAP ((uint32_t)0x00000004) /*!< USART1 remapping */ -#define AFIO_MAPR_USART2_REMAP ((uint32_t)0x00000008) /*!< USART2 remapping */ - -#define AFIO_MAPR_USART3_REMAP ((uint32_t)0x00000030) /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ -#define AFIO_MAPR_USART3_REMAP_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define AFIO_MAPR_USART3_REMAP_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -/* USART3_REMAP configuration */ -#define AFIO_MAPR_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ - -#define AFIO_MAPR_TIM1_REMAP ((uint32_t)0x000000C0) /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ -#define AFIO_MAPR_TIM1_REMAP_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define AFIO_MAPR_TIM1_REMAP_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -/*!< TIM1_REMAP configuration */ -#define AFIO_MAPR_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ -#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ -#define AFIO_MAPR_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ - -#define AFIO_MAPR_TIM2_REMAP ((uint32_t)0x00000300) /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ -#define AFIO_MAPR_TIM2_REMAP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define AFIO_MAPR_TIM2_REMAP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< TIM2_REMAP configuration */ -#define AFIO_MAPR_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ -#define AFIO_MAPR_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ - -#define AFIO_MAPR_TIM3_REMAP ((uint32_t)0x00000C00) /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ -#define AFIO_MAPR_TIM3_REMAP_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define AFIO_MAPR_TIM3_REMAP_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -/*!< TIM3_REMAP configuration */ -#define AFIO_MAPR_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ - -#define AFIO_MAPR_TIM4_REMAP ((uint32_t)0x00001000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ - -#define AFIO_MAPR_CAN_REMAP ((uint32_t)0x00006000) /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ -#define AFIO_MAPR_CAN_REMAP_0 ((uint32_t)0x00002000) /*!< Bit 0 */ -#define AFIO_MAPR_CAN_REMAP_1 ((uint32_t)0x00004000) /*!< Bit 1 */ - -/*!< CAN_REMAP configuration */ -#define AFIO_MAPR_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ -#define AFIO_MAPR_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ -#define AFIO_MAPR_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ - -#define AFIO_MAPR_PD01_REMAP ((uint32_t)0x00008000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ -#define AFIO_MAPR_TIM5CH4_IREMAP ((uint32_t)0x00010000) /*!< TIM5 Channel4 Internal Remap */ -#define AFIO_MAPR_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /*!< ADC 1 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /*!< ADC 1 External Trigger Regular Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /*!< ADC 2 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /*!< ADC 2 External Trigger Regular Conversion remapping */ - -#define AFIO_MAPR_SWJ_CFG ((uint32_t)0x07000000) /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ -#define AFIO_MAPR_SWJ_CFG_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define AFIO_MAPR_SWJ_CFG_1 ((uint32_t)0x02000000) /*!< Bit 1 */ -#define AFIO_MAPR_SWJ_CFG_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - -/*!< SWJ_CFG configuration */ -#define AFIO_MAPR_SWJ_CFG_RESET ((uint32_t)0x00000000) /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ -#define AFIO_MAPR_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ -#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /*!< JTAG-DP Disabled and SW-DP Enabled */ -#define AFIO_MAPR_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /*!< JTAG-DP Disabled and SW-DP Disabled */ - -/***************** Bit definition for AFIO_EXTICR1 register *****************/ -#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ -#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ -#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ -#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ - -/*!< EXTI0 configuration */ -#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ -#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ -#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ -#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ -#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ -#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ -#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /*!< PG[0] pin */ - -/*!< EXTI1 configuration */ -#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ -#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ -#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ -#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ -#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ -#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ -#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /*!< PG[1] pin */ - -/*!< EXTI2 configuration */ -#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ -#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ -#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ -#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ -#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ -#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ -#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /*!< PG[2] pin */ - -/*!< EXTI3 configuration */ -#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ -#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ -#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ -#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ -#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ -#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /*!< PF[3] pin */ -#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /*!< PG[3] pin */ - -/***************** Bit definition for AFIO_EXTICR2 register *****************/ -#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ -#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ -#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ -#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ - -/*!< EXTI4 configuration */ -#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ -#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ -#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ -#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ -#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ -#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ -#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /*!< PG[4] pin */ - -/* EXTI5 configuration */ -#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ -#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ -#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ -#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ -#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ -#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ -#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /*!< PG[5] pin */ - -/*!< EXTI6 configuration */ -#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ -#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ -#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ -#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ -#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ -#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ -#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /*!< PG[6] pin */ - -/*!< EXTI7 configuration */ -#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ -#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ -#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ -#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ -#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ -#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /*!< PF[7] pin */ -#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /*!< PG[7] pin */ - -/***************** Bit definition for AFIO_EXTICR3 register *****************/ -#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ -#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ -#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ -#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ - -/*!< EXTI8 configuration */ -#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ -#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ -#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ -#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ -#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ -#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /*!< PF[8] pin */ -#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /*!< PG[8] pin */ - -/*!< EXTI9 configuration */ -#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ -#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ -#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ -#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ -#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ -#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ -#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /*!< PG[9] pin */ - -/*!< EXTI10 configuration */ -#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ -#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ -#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ -#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ -#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ -#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ -#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /*!< PG[10] pin */ - -/*!< EXTI11 configuration */ -#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ -#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ -#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ -#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ -#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ -#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /*!< PF[11] pin */ -#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /*!< PG[11] pin */ - -/***************** Bit definition for AFIO_EXTICR4 register *****************/ -#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ -#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ -#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ -#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ - -/* EXTI12 configuration */ -#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ -#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ -#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ -#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ -#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ -#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /*!< PF[12] pin */ -#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /*!< PG[12] pin */ - -/* EXTI13 configuration */ -#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ -#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ -#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ -#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ -#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ -#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /*!< PF[13] pin */ -#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /*!< PG[13] pin */ - -/*!< EXTI14 configuration */ -#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ -#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ -#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ -#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ -#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ -#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /*!< PF[14] pin */ -#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /*!< PG[14] pin */ - -/*!< EXTI15 configuration */ -#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ -#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ -#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ -#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ -#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ -#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /*!< PF[15] pin */ -#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /*!< PG[15] pin */ - -/******************************************************************************/ -/* */ -/* SystemTick */ -/* */ -/******************************************************************************/ - -/***************** Bit definition for SysTick_CTRL register *****************/ -#define SysTick_CTRL_ENABLE ((uint32_t)0x00000001) /*!< Counter enable */ -#define SysTick_CTRL_TICKINT ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */ -#define SysTick_CTRL_CLKSOURCE ((uint32_t)0x00000004) /*!< Clock source */ -#define SysTick_CTRL_COUNTFLAG ((uint32_t)0x00010000) /*!< Count Flag */ - -/***************** Bit definition for SysTick_LOAD register *****************/ -#define SysTick_LOAD_RELOAD ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */ - -/***************** Bit definition for SysTick_VAL register ******************/ -#define SysTick_VAL_CURRENT ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */ - -/***************** Bit definition for SysTick_CALIB register ****************/ -#define SysTick_CALIB_TENMS ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */ -#define SysTick_CALIB_SKEW ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */ -#define SysTick_CALIB_NOREF ((uint32_t)0x80000000) /*!< The reference clock is not provided */ - -/******************************************************************************/ -/* */ -/* Nested Vectored Interrupt Controller */ -/* */ -/******************************************************************************/ - -/****************** Bit definition for NVIC_ISER register *******************/ -#define NVIC_ISER_SETENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt set enable bits */ -#define NVIC_ISER_SETENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISER_SETENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISER_SETENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISER_SETENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISER_SETENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISER_SETENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISER_SETENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISER_SETENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISER_SETENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISER_SETENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISER_SETENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISER_SETENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISER_SETENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISER_SETENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISER_SETENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISER_SETENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISER_SETENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISER_SETENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISER_SETENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISER_SETENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISER_SETENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISER_SETENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISER_SETENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISER_SETENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISER_SETENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISER_SETENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISER_SETENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISER_SETENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISER_SETENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISER_SETENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISER_SETENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISER_SETENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICER register *******************/ -#define NVIC_ICER_CLRENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-enable bits */ -#define NVIC_ICER_CLRENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICER_CLRENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICER_CLRENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICER_CLRENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICER_CLRENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICER_CLRENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICER_CLRENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICER_CLRENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICER_CLRENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICER_CLRENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICER_CLRENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICER_CLRENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICER_CLRENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICER_CLRENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICER_CLRENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICER_CLRENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICER_CLRENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICER_CLRENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICER_CLRENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICER_CLRENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICER_CLRENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICER_CLRENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICER_CLRENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICER_CLRENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICER_CLRENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICER_CLRENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICER_CLRENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICER_CLRENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICER_CLRENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICER_CLRENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICER_CLRENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICER_CLRENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ISPR register *******************/ -#define NVIC_ISPR_SETPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt set-pending bits */ -#define NVIC_ISPR_SETPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISPR_SETPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISPR_SETPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISPR_SETPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISPR_SETPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISPR_SETPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISPR_SETPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISPR_SETPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISPR_SETPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISPR_SETPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISPR_SETPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISPR_SETPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISPR_SETPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISPR_SETPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISPR_SETPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISPR_SETPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISPR_SETPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISPR_SETPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISPR_SETPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISPR_SETPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISPR_SETPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISPR_SETPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISPR_SETPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISPR_SETPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISPR_SETPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISPR_SETPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISPR_SETPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISPR_SETPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISPR_SETPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISPR_SETPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISPR_SETPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISPR_SETPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICPR register *******************/ -#define NVIC_ICPR_CLRPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-pending bits */ -#define NVIC_ICPR_CLRPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICPR_CLRPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICPR_CLRPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICPR_CLRPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICPR_CLRPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICPR_CLRPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICPR_CLRPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICPR_CLRPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICPR_CLRPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICPR_CLRPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICPR_CLRPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICPR_CLRPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICPR_CLRPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICPR_CLRPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICPR_CLRPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICPR_CLRPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICPR_CLRPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICPR_CLRPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICPR_CLRPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICPR_CLRPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICPR_CLRPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICPR_CLRPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICPR_CLRPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICPR_CLRPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICPR_CLRPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICPR_CLRPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICPR_CLRPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICPR_CLRPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICPR_CLRPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICPR_CLRPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICPR_CLRPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICPR_CLRPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_IABR register *******************/ -#define NVIC_IABR_ACTIVE ((uint32_t)0xFFFFFFFF) /*!< Interrupt active flags */ -#define NVIC_IABR_ACTIVE_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_IABR_ACTIVE_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_IABR_ACTIVE_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_IABR_ACTIVE_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_IABR_ACTIVE_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_IABR_ACTIVE_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_IABR_ACTIVE_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_IABR_ACTIVE_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_IABR_ACTIVE_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_IABR_ACTIVE_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_IABR_ACTIVE_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_IABR_ACTIVE_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_IABR_ACTIVE_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_IABR_ACTIVE_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_IABR_ACTIVE_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_IABR_ACTIVE_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_IABR_ACTIVE_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_IABR_ACTIVE_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_IABR_ACTIVE_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_IABR_ACTIVE_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_IABR_ACTIVE_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_IABR_ACTIVE_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_IABR_ACTIVE_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_IABR_ACTIVE_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_IABR_ACTIVE_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_IABR_ACTIVE_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_IABR_ACTIVE_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_IABR_ACTIVE_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_IABR_ACTIVE_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_IABR_ACTIVE_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_IABR_ACTIVE_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_IABR_ACTIVE_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_PRI0 register *******************/ -#define NVIC_IPR0_PRI_0 ((uint32_t)0x000000FF) /*!< Priority of interrupt 0 */ -#define NVIC_IPR0_PRI_1 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 1 */ -#define NVIC_IPR0_PRI_2 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 2 */ -#define NVIC_IPR0_PRI_3 ((uint32_t)0xFF000000) /*!< Priority of interrupt 3 */ - -/****************** Bit definition for NVIC_PRI1 register *******************/ -#define NVIC_IPR1_PRI_4 ((uint32_t)0x000000FF) /*!< Priority of interrupt 4 */ -#define NVIC_IPR1_PRI_5 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 5 */ -#define NVIC_IPR1_PRI_6 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 6 */ -#define NVIC_IPR1_PRI_7 ((uint32_t)0xFF000000) /*!< Priority of interrupt 7 */ - -/****************** Bit definition for NVIC_PRI2 register *******************/ -#define NVIC_IPR2_PRI_8 ((uint32_t)0x000000FF) /*!< Priority of interrupt 8 */ -#define NVIC_IPR2_PRI_9 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 9 */ -#define NVIC_IPR2_PRI_10 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 10 */ -#define NVIC_IPR2_PRI_11 ((uint32_t)0xFF000000) /*!< Priority of interrupt 11 */ - -/****************** Bit definition for NVIC_PRI3 register *******************/ -#define NVIC_IPR3_PRI_12 ((uint32_t)0x000000FF) /*!< Priority of interrupt 12 */ -#define NVIC_IPR3_PRI_13 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 13 */ -#define NVIC_IPR3_PRI_14 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 14 */ -#define NVIC_IPR3_PRI_15 ((uint32_t)0xFF000000) /*!< Priority of interrupt 15 */ - -/****************** Bit definition for NVIC_PRI4 register *******************/ -#define NVIC_IPR4_PRI_16 ((uint32_t)0x000000FF) /*!< Priority of interrupt 16 */ -#define NVIC_IPR4_PRI_17 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 17 */ -#define NVIC_IPR4_PRI_18 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 18 */ -#define NVIC_IPR4_PRI_19 ((uint32_t)0xFF000000) /*!< Priority of interrupt 19 */ - -/****************** Bit definition for NVIC_PRI5 register *******************/ -#define NVIC_IPR5_PRI_20 ((uint32_t)0x000000FF) /*!< Priority of interrupt 20 */ -#define NVIC_IPR5_PRI_21 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 21 */ -#define NVIC_IPR5_PRI_22 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 22 */ -#define NVIC_IPR5_PRI_23 ((uint32_t)0xFF000000) /*!< Priority of interrupt 23 */ - -/****************** Bit definition for NVIC_PRI6 register *******************/ -#define NVIC_IPR6_PRI_24 ((uint32_t)0x000000FF) /*!< Priority of interrupt 24 */ -#define NVIC_IPR6_PRI_25 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 25 */ -#define NVIC_IPR6_PRI_26 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 26 */ -#define NVIC_IPR6_PRI_27 ((uint32_t)0xFF000000) /*!< Priority of interrupt 27 */ - -/****************** Bit definition for NVIC_PRI7 register *******************/ -#define NVIC_IPR7_PRI_28 ((uint32_t)0x000000FF) /*!< Priority of interrupt 28 */ -#define NVIC_IPR7_PRI_29 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 29 */ -#define NVIC_IPR7_PRI_30 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 30 */ -#define NVIC_IPR7_PRI_31 ((uint32_t)0xFF000000) /*!< Priority of interrupt 31 */ - -/****************** Bit definition for SCB_CPUID register *******************/ -#define SCB_CPUID_REVISION ((uint32_t)0x0000000F) /*!< Implementation defined revision number */ -#define SCB_CPUID_PARTNO ((uint32_t)0x0000FFF0) /*!< Number of processor within family */ -#define SCB_CPUID_Constant ((uint32_t)0x000F0000) /*!< Reads as 0x0F */ -#define SCB_CPUID_VARIANT ((uint32_t)0x00F00000) /*!< Implementation defined variant number */ -#define SCB_CPUID_IMPLEMENTER ((uint32_t)0xFF000000) /*!< Implementer code. ARM is 0x41 */ - -/******************* Bit definition for SCB_ICSR register *******************/ -#define SCB_ICSR_VECTACTIVE ((uint32_t)0x000001FF) /*!< Active ISR number field */ -#define SCB_ICSR_RETTOBASE ((uint32_t)0x00000800) /*!< All active exceptions minus the IPSR_current_exception yields the empty set */ -#define SCB_ICSR_VECTPENDING ((uint32_t)0x003FF000) /*!< Pending ISR number field */ -#define SCB_ICSR_ISRPENDING ((uint32_t)0x00400000) /*!< Interrupt pending flag */ -#define SCB_ICSR_ISRPREEMPT ((uint32_t)0x00800000) /*!< It indicates that a pending interrupt becomes active in the next running cycle */ -#define SCB_ICSR_PENDSTCLR ((uint32_t)0x02000000) /*!< Clear pending SysTick bit */ -#define SCB_ICSR_PENDSTSET ((uint32_t)0x04000000) /*!< Set pending SysTick bit */ -#define SCB_ICSR_PENDSVCLR ((uint32_t)0x08000000) /*!< Clear pending pendSV bit */ -#define SCB_ICSR_PENDSVSET ((uint32_t)0x10000000) /*!< Set pending pendSV bit */ -#define SCB_ICSR_NMIPENDSET ((uint32_t)0x80000000) /*!< Set pending NMI bit */ - -/******************* Bit definition for SCB_VTOR register *******************/ -#define SCB_VTOR_TBLOFF ((uint32_t)0x1FFFFF80) /*!< Vector table base offset field */ -#define SCB_VTOR_TBLBASE ((uint32_t)0x20000000) /*!< Table base in code(0) or RAM(1) */ - -/*!<***************** Bit definition for SCB_AIRCR register *******************/ -#define SCB_AIRCR_VECTRESET ((uint32_t)0x00000001) /*!< System Reset bit */ -#define SCB_AIRCR_VECTCLRACTIVE ((uint32_t)0x00000002) /*!< Clear active vector bit */ -#define SCB_AIRCR_SYSRESETREQ ((uint32_t)0x00000004) /*!< Requests chip control logic to generate a reset */ - -#define SCB_AIRCR_PRIGROUP ((uint32_t)0x00000700) /*!< PRIGROUP[2:0] bits (Priority group) */ -#define SCB_AIRCR_PRIGROUP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define SCB_AIRCR_PRIGROUP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define SCB_AIRCR_PRIGROUP_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -/* prority group configuration */ -#define SCB_AIRCR_PRIGROUP0 ((uint32_t)0x00000000) /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */ -#define SCB_AIRCR_PRIGROUP1 ((uint32_t)0x00000100) /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP2 ((uint32_t)0x00000200) /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP3 ((uint32_t)0x00000300) /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP4 ((uint32_t)0x00000400) /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP5 ((uint32_t)0x00000500) /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP6 ((uint32_t)0x00000600) /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP7 ((uint32_t)0x00000700) /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */ - -#define SCB_AIRCR_ENDIANESS ((uint32_t)0x00008000) /*!< Data endianness bit */ -#define SCB_AIRCR_VECTKEY ((uint32_t)0xFFFF0000) /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */ - -/******************* Bit definition for SCB_SCR register ********************/ -#define SCB_SCR_SLEEPONEXIT ((uint8_t)0x02) /*!< Sleep on exit bit */ -#define SCB_SCR_SLEEPDEEP ((uint8_t)0x04) /*!< Sleep deep bit */ -#define SCB_SCR_SEVONPEND ((uint8_t)0x10) /*!< Wake up from WFE */ - -/******************** Bit definition for SCB_CCR register *******************/ -#define SCB_CCR_NONBASETHRDENA ((uint16_t)0x0001) /*!< Thread mode can be entered from any level in Handler mode by controlled return value */ -#define SCB_CCR_USERSETMPEND ((uint16_t)0x0002) /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */ -#define SCB_CCR_UNALIGN_TRP ((uint16_t)0x0008) /*!< Trap for unaligned access */ -#define SCB_CCR_DIV_0_TRP ((uint16_t)0x0010) /*!< Trap on Divide by 0 */ -#define SCB_CCR_BFHFNMIGN ((uint16_t)0x0100) /*!< Handlers running at priority -1 and -2 */ -#define SCB_CCR_STKALIGN ((uint16_t)0x0200) /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */ - -/******************* Bit definition for SCB_SHPR register ********************/ -#define SCB_SHPR_PRI_N ((uint32_t)0x000000FF) /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */ -#define SCB_SHPR_PRI_N1 ((uint32_t)0x0000FF00) /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */ -#define SCB_SHPR_PRI_N2 ((uint32_t)0x00FF0000) /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */ -#define SCB_SHPR_PRI_N3 ((uint32_t)0xFF000000) /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */ - -/****************** Bit definition for SCB_SHCSR register *******************/ -#define SCB_SHCSR_MEMFAULTACT ((uint32_t)0x00000001) /*!< MemManage is active */ -#define SCB_SHCSR_BUSFAULTACT ((uint32_t)0x00000002) /*!< BusFault is active */ -#define SCB_SHCSR_USGFAULTACT ((uint32_t)0x00000008) /*!< UsageFault is active */ -#define SCB_SHCSR_SVCALLACT ((uint32_t)0x00000080) /*!< SVCall is active */ -#define SCB_SHCSR_MONITORACT ((uint32_t)0x00000100) /*!< Monitor is active */ -#define SCB_SHCSR_PENDSVACT ((uint32_t)0x00000400) /*!< PendSV is active */ -#define SCB_SHCSR_SYSTICKACT ((uint32_t)0x00000800) /*!< SysTick is active */ -#define SCB_SHCSR_USGFAULTPENDED ((uint32_t)0x00001000) /*!< Usage Fault is pended */ -#define SCB_SHCSR_MEMFAULTPENDED ((uint32_t)0x00002000) /*!< MemManage is pended */ -#define SCB_SHCSR_BUSFAULTPENDED ((uint32_t)0x00004000) /*!< Bus Fault is pended */ -#define SCB_SHCSR_SVCALLPENDED ((uint32_t)0x00008000) /*!< SVCall is pended */ -#define SCB_SHCSR_MEMFAULTENA ((uint32_t)0x00010000) /*!< MemManage enable */ -#define SCB_SHCSR_BUSFAULTENA ((uint32_t)0x00020000) /*!< Bus Fault enable */ -#define SCB_SHCSR_USGFAULTENA ((uint32_t)0x00040000) /*!< UsageFault enable */ - -/******************* Bit definition for SCB_CFSR register *******************/ -/*!< MFSR */ -#define SCB_CFSR_IACCVIOL ((uint32_t)0x00000001) /*!< Instruction access violation */ -#define SCB_CFSR_DACCVIOL ((uint32_t)0x00000002) /*!< Data access violation */ -#define SCB_CFSR_MUNSTKERR ((uint32_t)0x00000008) /*!< Unstacking error */ -#define SCB_CFSR_MSTKERR ((uint32_t)0x00000010) /*!< Stacking error */ -#define SCB_CFSR_MMARVALID ((uint32_t)0x00000080) /*!< Memory Manage Address Register address valid flag */ -/*!< BFSR */ -#define SCB_CFSR_IBUSERR ((uint32_t)0x00000100) /*!< Instruction bus error flag */ -#define SCB_CFSR_PRECISERR ((uint32_t)0x00000200) /*!< Precise data bus error */ -#define SCB_CFSR_IMPRECISERR ((uint32_t)0x00000400) /*!< Imprecise data bus error */ -#define SCB_CFSR_UNSTKERR ((uint32_t)0x00000800) /*!< Unstacking error */ -#define SCB_CFSR_STKERR ((uint32_t)0x00001000) /*!< Stacking error */ -#define SCB_CFSR_BFARVALID ((uint32_t)0x00008000) /*!< Bus Fault Address Register address valid flag */ -/*!< UFSR */ -#define SCB_CFSR_UNDEFINSTR ((uint32_t)0x00010000) /*!< The processor attempt to excecute an undefined instruction */ -#define SCB_CFSR_INVSTATE ((uint32_t)0x00020000) /*!< Invalid combination of EPSR and instruction */ -#define SCB_CFSR_INVPC ((uint32_t)0x00040000) /*!< Attempt to load EXC_RETURN into pc illegally */ -#define SCB_CFSR_NOCP ((uint32_t)0x00080000) /*!< Attempt to use a coprocessor instruction */ -#define SCB_CFSR_UNALIGNED ((uint32_t)0x01000000) /*!< Fault occurs when there is an attempt to make an unaligned memory access */ -#define SCB_CFSR_DIVBYZERO ((uint32_t)0x02000000) /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */ - -/******************* Bit definition for SCB_HFSR register *******************/ -#define SCB_HFSR_VECTTBL ((uint32_t)0x00000002) /*!< Fault occures because of vector table read on exception processing */ -#define SCB_HFSR_FORCED ((uint32_t)0x40000000) /*!< Hard Fault activated when a configurable Fault was received and cannot activate */ -#define SCB_HFSR_DEBUGEVT ((uint32_t)0x80000000) /*!< Fault related to debug */ - -/******************* Bit definition for SCB_DFSR register *******************/ -#define SCB_DFSR_HALTED ((uint8_t)0x01) /*!< Halt request flag */ -#define SCB_DFSR_BKPT ((uint8_t)0x02) /*!< BKPT flag */ -#define SCB_DFSR_DWTTRAP ((uint8_t)0x04) /*!< Data Watchpoint and Trace (DWT) flag */ -#define SCB_DFSR_VCATCH ((uint8_t)0x08) /*!< Vector catch flag */ -#define SCB_DFSR_EXTERNAL ((uint8_t)0x10) /*!< External debug request flag */ - -/******************* Bit definition for SCB_MMFAR register ******************/ -#define SCB_MMFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Mem Manage fault address field */ - -/******************* Bit definition for SCB_BFAR register *******************/ -#define SCB_BFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Bus fault address field */ - -/******************* Bit definition for SCB_afsr register *******************/ -#define SCB_AFSR_IMPDEF ((uint32_t)0xFFFFFFFF) /*!< Implementation defined */ - -/******************************************************************************/ -/* */ -/* External Interrupt/Event Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for EXTI_IMR register *******************/ -#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ -#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ -#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ -#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ -#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ -#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ -#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ -#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ -#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ -#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ -#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ -#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ -#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ -#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ -#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ -#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ -#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ -#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ -#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ - -/******************* Bit definition for EXTI_EMR register *******************/ -#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ -#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ -#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ -#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ -#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ -#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ -#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ -#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ -#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ -#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ -#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ -#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ -#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ -#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ -#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ -#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ -#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ -#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ -#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ - -/****************** Bit definition for EXTI_RTSR register *******************/ -#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ -#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ -#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ -#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ -#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ -#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ -#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ -#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ -#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ -#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ -#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ -#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ -#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ -#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ -#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ -#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ -#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ -#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ -#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_FTSR register *******************/ -#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ -#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ -#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ -#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ -#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ -#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ -#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ -#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ -#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ -#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ -#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ -#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ -#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ -#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ -#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ -#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ -#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ -#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ -#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_SWIER register ******************/ -#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ -#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ -#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ -#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ -#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ -#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ -#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ -#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ -#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ -#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ -#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ -#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ -#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ -#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ -#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ -#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ -#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ -#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ -#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ - -/******************* Bit definition for EXTI_PR register ********************/ -#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit 0 */ -#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit 1 */ -#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit 2 */ -#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit 3 */ -#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit 4 */ -#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit 5 */ -#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit 6 */ -#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit 7 */ -#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit 8 */ -#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit 9 */ -#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit 10 */ -#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit 11 */ -#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit 12 */ -#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit 13 */ -#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit 14 */ -#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit 15 */ -#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit 16 */ -#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit 17 */ -#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Trigger request occurred on the external interrupt line 18 */ - -/******************************************************************************/ -/* */ -/* DMA Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for DMA_ISR register ********************/ -#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ -#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ -#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ -#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ -#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ -#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ -#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ -#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ -#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ -#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ -#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ -#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ -#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ -#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ -#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ -#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ -#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ -#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ -#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ -#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ -#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ -#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ -#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ -#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ -#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ -#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ -#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ -#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ - -/******************* Bit definition for DMA_IFCR register *******************/ -#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clearr */ -#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ -#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ -#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ -#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ -#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ -#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ -#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ -#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ -#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ -#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ -#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ -#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ -#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ -#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ -#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ -#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ -#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ -#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ -#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ -#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ -#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ -#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ -#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ -#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ -#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ -#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ -#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ - -/******************* Bit definition for DMA_CCR1 register *******************/ -#define DMA_CCR1_EN ((uint16_t)0x0001) /*!< Channel enable*/ -#define DMA_CCR1_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR1_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR1_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR1_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR1_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR1_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR1_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR1_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR1_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR1_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR1_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR1_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR1_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR1_PL ((uint16_t)0x3000) /*!< PL[1:0] bits(Channel Priority level) */ -#define DMA_CCR1_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR1_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR1_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR2 register *******************/ -#define DMA_CCR2_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR2_TCIE ((uint16_t)0x0002) /*!< ransfer complete interrupt enable */ -#define DMA_CCR2_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR2_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR2_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR2_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR2_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR2_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR2_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR2_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR2_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR2_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR2_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR2_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR2_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR2_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR2_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR2_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR3 register *******************/ -#define DMA_CCR3_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR3_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR3_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR3_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR3_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR3_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR3_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR3_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR3_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR3_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR3_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR3_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR3_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR3_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR3_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR3_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR3_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR3_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/*!<****************** Bit definition for DMA_CCR4 register *******************/ -#define DMA_CCR4_EN ((uint16_t)0x0001) /*!CNT; - - if( usSettleCount >= timerSETTLE_TIME ) - { - /* What is the difference between the timer value in this interrupt - and the value from the last interrupt. */ - usDifference = usThisCount - usLastCount; - - /* Store the difference in the timer values if it is larger than the - currently stored largest value. The difference over and above the - expected difference will give the 'jitter' in the processing of these - interrupts. */ - if( usDifference > usMaxDifference ) - { - usMaxDifference = usDifference; - usMaxJitter = usMaxDifference - timerEXPECTED_DIFFERENCE_VALUE; - } - } - else - { - /* Don't bother storing any values for the first couple of - interrupts. */ - usSettleCount++; - } - - /* Remember what the timer value was this time through, so we can calculate - the difference the next time through. */ - usLastCount = usThisCount; - - /* Keep a count of the number of interrupts as a time base for the run time - stats collection. */ - ulRunTimeStatsClock++; - - TIM_ClearITPendingBit( TIM2, TIM_IT_Update ); -} - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c deleted file mode 100644 index 89cd41115..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c +++ /dev/null @@ -1,485 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* Library includes. */ -#include "stm32fxxx_eth.h" -#include "stm32f10x_gpio.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_nvic.h" - -/*-----------------------------------------------------------*/ - -/* Hardware specifics. */ -#define uipRCC_MAC_CLOCK ( 1UL << 14UL ) -#define uipRCC_MAC_TX_CLOCK ( 1UL << 15UL ) -#define uipRCC_MAC_RX_CLOCK ( 1UL << 16UL ) -#define uipPHY_ADDRESS ( 1 ) -#define uipENET_IRQ_NUM ( 61 ) -#define uipMODE_MII ( 1UL << 23UL ) -#define uipREMAP_MAC_IO ( 1UL << 21UL ) - -/* The number of descriptors to chain together for use by the Rx DMA. */ -#define uipNUM_RX_DESCRIPTORS 4 - -/* The total number of buffers to be available. At most (?) there should be -one available for each Rx descriptor, one for current use, and one that is -in the process of being transmitted. */ -#define uipNUM_BUFFERS ( uipNUM_RX_DESCRIPTORS + 2 ) - -/* Each buffer is sized to fit an entire Ethernet packet. This is for -simplicity and speed, but could waste RAM. */ -#define uipMAX_PACKET_SIZE 1520 - -/* The field in the descriptor that is unused by this configuration is used to -hold the send count. This is just #defined to a meaningful name. */ -#define SendCount Buffer2NextDescAddr - -/* If no buffers are available, then wait this long before looking again.... */ -#define uipBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Let the DMA know that a new descriptor has been made available to it. */ -#define prvRxDescriptorAvailable() ETH_DMA->DMARPDR = 0 - -/*-----------------------------------------------------------*/ - -/* - * Configure the IO for Ethernet use. - */ -static void prvSetupEthGPIO( void ); - -/* - * Return a pointer to an unused buffer, marking the returned buffer as now - * in use. - */ -static unsigned char *prvGetNextBuffer( void ); - -/*-----------------------------------------------------------*/ - -/* Allocate the Rx descriptors used by the DMA. */ -static ETH_DMADESCTypeDef xRxDescriptors[ uipNUM_RX_DESCRIPTORS ] __attribute__((aligned(4))); - -/* Allocate the descriptor used for transmitting. It might be that better -performance could be achieved by having more than one Tx descriptor, but -in this simple case only one is used. */ -static volatile ETH_DMADESCTypeDef xTxDescriptor __attribute__((aligned(4))); - -/* Buffers used for receiving and transmitting data. */ -static unsigned char ucMACBuffers[ uipNUM_BUFFERS ][ uipMAX_PACKET_SIZE ] __attribute__((aligned(4))); - -/* Each ucBufferInUse index corresponds to a position in the same index in the -ucMACBuffers array. If the index contains a 1 then the buffer within -ucMACBuffers is in use, if it contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ uipNUM_BUFFERS ] = { 0 }; - -/* Index to the Rx descriptor to inspect next when looking for a received -packet. */ -static unsigned long ulNextDescriptor; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -extern unsigned char * uip_buf; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE xEthInitialise( void ) -{ -static ETH_InitTypeDef xEthInit; /* Static so as not to take up too much stack space. */ -NVIC_InitTypeDef xNVICInit; -const unsigned char ucMACAddress[] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; -portBASE_TYPE xReturn; -unsigned long ul; - - /* Start with things in a safe known state. */ - ETH_DeInit(); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), DISABLE ); - } - - /* Route clock to the peripheral. */ - RCC->AHBENR |= ( uipRCC_MAC_CLOCK | uipRCC_MAC_TX_CLOCK | uipRCC_MAC_RX_CLOCK ); - - /* Set the MAC address. */ - ETH_MACAddressConfig( ETH_MAC_Address0, ( unsigned char * ) ucMACAddress ); - - /* Use MII mode. */ - AFIO->MAPR &= ~( uipMODE_MII ); - - /* Configure all the GPIO as required for MAC/PHY interfacing. */ - prvSetupEthGPIO(); - - /* Reset the peripheral. */ - ETH_SoftwareReset(); - while( ETH_GetSoftwareResetStatus() == SET ); - - /* Initialise using the whopping big structure. Code space could be saved - by making this a const struct, however that would mean changes to the - structure within the library header files could break the code, so for now - just set everything manually at run time. */ - xEthInit.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - xEthInit.ETH_Watchdog = ETH_Watchdog_Disable; - xEthInit.ETH_Jabber = ETH_Jabber_Disable; - xEthInit.ETH_JumboFrame = ETH_JumboFrame_Disable; - xEthInit.ETH_InterFrameGap = ETH_InterFrameGap_96Bit; - xEthInit.ETH_CarrierSense = ETH_CarrierSense_Enable; - xEthInit.ETH_Speed = ETH_Speed_10M; - xEthInit.ETH_ReceiveOwn = ETH_ReceiveOwn_Disable; - xEthInit.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - xEthInit.ETH_Mode = ETH_Mode_HalfDuplex; - xEthInit.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; - xEthInit.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - xEthInit.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - xEthInit.ETH_BackOffLimit = ETH_BackOffLimit_10; - xEthInit.ETH_DeferralCheck = ETH_DeferralCheck_Disable; - xEthInit.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - xEthInit.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; - xEthInit.ETH_PassControlFrames = ETH_PassControlFrames_ForwardPassedAddrFilter; - xEthInit.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; - xEthInit.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; - xEthInit.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - xEthInit.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - xEthInit.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - xEthInit.ETH_HashTableHigh = 0x0; - xEthInit.ETH_HashTableLow = 0x0; - xEthInit.ETH_PauseTime = 0x0; - xEthInit.ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; - xEthInit.ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; - xEthInit.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; - xEthInit.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; - xEthInit.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; - xEthInit.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; - xEthInit.ETH_VLANTagIdentifier = 0x0; - xEthInit.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; - xEthInit.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; - xEthInit.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable; - xEthInit.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; - xEthInit.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; - xEthInit.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; - xEthInit.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; - xEthInit.ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; - xEthInit.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; - xEthInit.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; - xEthInit.ETH_FixedBurst = ETH_FixedBurst_Disable; - xEthInit.ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; - xEthInit.ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; - xEthInit.ETH_DescriptorSkipLength = 0x0; - xEthInit.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; - - xReturn = ETH_Init( &xEthInit, uipPHY_ADDRESS ); - - /* Check a link was established. */ - if( xReturn != pdFAIL ) - { - /* Rx and Tx interrupts are used. */ - ETH_DMAITConfig( ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T, ENABLE ); - - /* Only a single Tx descriptor is used. For now it is set to use an Rx - buffer, but will get updated to point to where ever uip_buf is - pointing prior to its use. */ - ETH_DMATxDescChainInit( ( void * ) &xTxDescriptor, ( void * ) ucMACBuffers, 1 ); - ETH_DMARxDescChainInit( xRxDescriptors, ( void * ) ucMACBuffers, uipNUM_RX_DESCRIPTORS ); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - /* Ensure received data generates an interrupt. */ - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), ENABLE ); - - /* Fix up the addresses used by the descriptors. - The way ETH_DMARxDescChainInit() is not compatible with the buffer - declarations in this file. */ - xRxDescriptors[ ul ].Buffer1Addr = ( unsigned long ) &( ucMACBuffers[ ul ][ 0 ] ); - - /* Mark the buffer used by this descriptor as in use. */ - ucBufferInUse[ ul ] = pdTRUE; - } - - /* When receiving data, start at the first descriptor. */ - ulNextDescriptor = 0; - - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* SendCount must be initialised to 2 to ensure the Tx descriptor looks - as if its available (as if it has already been sent twice. */ - xTxDescriptor.SendCount = 2; - - /* Switch on the interrupts in the NVIC. */ - xNVICInit.NVIC_IRQChannel = uipENET_IRQ_NUM; - xNVICInit.NVIC_IRQChannelPreemptionPriority = configLIBRARY_KERNEL_INTERRUPT_PRIORITY; - xNVICInit.NVIC_IRQChannelSubPriority = 0; - xNVICInit.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init( &xNVICInit ); - - /* Buffers and descriptors are all set up, now enable the MAC. */ - ETH_Start(); - - /* Let the DMA know there are Rx descriptors available. */ - prvRxDescriptorAvailable(); - } - - return xReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *ucReturn = NULL; -unsigned long ulAttempts = 0; - - while( ucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < uipNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - ucReturn = &( ucMACBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( ucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - return ucReturn; -} -/*-----------------------------------------------------------*/ - -unsigned short usGetMACRxData( void ) -{ -unsigned short usReturn; - - if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_ES ) != 0 ) - { - /* Error in Rx. Discard the frame and give it back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* No data to return. */ - usReturn = 0UL; - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_OWN ) == 0 ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - vReturnBuffer( uip_buf ); - - /* Get the received data length from the top 2 bytes of the Status - word and the data itself. */ - usReturn = ( unsigned short ) ( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_FL ) >> 16UL ); - uip_buf = ( unsigned char * ) ( xRxDescriptors[ ulNextDescriptor ].Buffer1Addr ); - - /* Allocate a new buffer to the descriptor. */ - xRxDescriptors[ ulNextDescriptor ].Buffer1Addr = ( unsigned long ) prvGetNextBuffer(); - - /* Give the descriptor back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else - { - /* No received data at all. */ - usReturn = 0UL; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vSendMACData( unsigned short usDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free. The check against <2 is to - ensure the buffer has been sent twice and in so doing preventing a race - condition with the DMA on the ETH_DMATxDesc_OWN bit. */ - while( ( xTxDescriptor.SendCount < 2 ) && ( xTxDescriptor.Status & ETH_DMATxDesc_OWN ) == ETH_DMATxDesc_OWN ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > uipBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - xTxDescriptor.Status &= ~ETH_DMATxDesc_OWN; - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - break; - } - } - - /* Setup the Tx descriptor for transmission. */ - xTxDescriptor.SendCount = 0; - xTxDescriptor.Buffer1Addr = ( unsigned long ) uip_buf; - xTxDescriptor.ControlBufferSize = ( unsigned long ) usDataLen; - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvSetupEthGPIO( void ) -{ -GPIO_InitTypeDef xEthInit; - - /* Remap MAC IO. */ - AFIO->MAPR |= ( uipREMAP_MAC_IO ); - - /* Set PA2, PA8, PB5, PB8, PB11, PB12, PB13, PC1 and PC2 for Ethernet - interfacing. */ - xEthInit.GPIO_Pin = GPIO_Pin_2;/* | GPIO_Pin_8; This should be set when the 25MHz is generated by MCO. */ - xEthInit.GPIO_Speed = GPIO_Speed_50MHz; - xEthInit.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; /*5*/ - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; - GPIO_Init( GPIOC, &xEthInit ); - - - /* Configure PA0, PA1, PA3, PB10, PC3, PD8, PD9, PD10, PD11 and PD12 as - inputs. */ - xEthInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; - xEthInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_10; - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_3; - GPIO_Init( GPIOC, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_Init( GPIOD, &xEthInit ); -} -/*-----------------------------------------------------------*/ - -void vReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < uipNUM_BUFFERS; ul++ ) - { - if( ucMACBuffers[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -void vMAC_ISR( void ) -{ -unsigned long ulStatus; -extern SemaphoreHandle_t xEMACSemaphore; -long xHigherPriorityTaskWoken = pdFALSE; - - /* What caused the interrupt? */ - ulStatus = ETH_DMA->DMASR; - - /* Clear everything before leaving. */ - ETH_DMA->DMASR = ulStatus; - - if( ulStatus & ETH_DMA_IT_R ) - { - /* Data was received. Ensure the uIP task is not blocked as data has - arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - } - - if( ulStatus & ETH_DMA_IT_T ) - { - /* Data was transmitted. */ - if( xTxDescriptor.SendCount == 0 ) - { - /* Send again! */ - ( xTxDescriptor.SendCount )++; - - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - } - else - { - /* The Tx buffer is no longer required. */ - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - } - } - - /* If xSemaphoreGiveFromISR() unblocked a task, and the unblocked task has - a higher priority than the currently executing task, then - xHigherPriorityTaskWoken will have been set to pdTRUE and this ISR should - return directly to the higher priority unblocked task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc deleted file mode 100644 index 2b3222c29..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc +++ /dev/null @@ -1,485 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* Library includes. */ -#include "stm32fxxx_eth.h" -#include "stm32f10x_gpio.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_nvic.h" - -/*-----------------------------------------------------------*/ - -/* Hardware specifics. */ -#define uipRCC_MAC_CLOCK ( 1UL << 14UL ) -#define uipRCC_MAC_TX_CLOCK ( 1UL << 15UL ) -#define uipRCC_MAC_RX_CLOCK ( 1UL << 16UL ) -#define uipPHY_ADDRESS ( 1 ) -#define uipENET_IRQ_NUM ( 61 ) -#define uipMODE_MII ( 1UL << 23UL ) -#define uipREMAP_MAC_IO ( 1UL << 21UL ) - -/* The number of descriptors to chain together for use by the Rx DMA. */ -#define uipNUM_RX_DESCRIPTORS 4 - -/* The total number of buffers to be available. At most (?) there should be -one available for each Rx descriptor, one for current use, and one that is -in the process of being transmitted. */ -#define uipNUM_BUFFERS ( uipNUM_RX_DESCRIPTORS + 2 ) - -/* Each buffer is sized to fit an entire Ethernet packet. This is for -simplicity and speed, but could waste RAM. */ -#define uipMAX_PACKET_SIZE 1520 - -/* The field in the descriptor that is unused by this configuration is used to -hold the send count. This is just #defined to a meaningful name. */ -#define SendCount Buffer2NextDescAddr - -/* If no buffers are available, then wait this long before looking again.... */ -#define uipBUFFER_WAIT_DELAY ( 3 / portTICK_RATE_MS ) - -/* ...and don't look more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Let the DMA know that a new descriptor has been made available to it. */ -#define prvRxDescriptorAvailable() ETH_DMA->DMARPDR = 0 - -/*-----------------------------------------------------------*/ - -/* - * Configure the IO for Ethernet use. - */ -static void prvSetupEthGPIO( void ); - -/* - * Return a pointer to an unused buffer, marking the returned buffer as now - * in use. - */ -static unsigned char *prvGetNextBuffer( void ); - -/*-----------------------------------------------------------*/ - -/* Allocate the Rx descriptors used by the DMA. */ -static ETH_DMADESCTypeDef xRxDescriptors[ uipNUM_RX_DESCRIPTORS ] __attribute__((aligned(4))); - -/* Allocate the descriptor used for transmitting. It might be that better -performance could be achieved by having more than one Tx descriptor, but -in this simple case only one is used. */ -static volatile ETH_DMADESCTypeDef xTxDescriptor __attribute__((aligned(4))); - -/* Buffers used for receiving and transmitting data. */ -static unsigned char ucMACBuffers[ uipNUM_BUFFERS ][ uipMAX_PACKET_SIZE ] __attribute__((aligned(4))); - -/* Each ucBufferInUse index corresponds to a position in the same index in the -ucMACBuffers array. If the index contains a 1 then the buffer withn -ucMACBuffers is in use, if it contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ uipNUM_BUFFERS ] = { 0 }; - -/* Index to the Rx descriptor to inspect next when looking for a received -packet. */ -static unsigned long ulNextDescriptor; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -extern unsigned char * uip_buf; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE xEthInitialise( void ) -{ -static ETH_InitTypeDef xEthInit; /* Static so as not to take up too much stack space. */ -NVIC_InitTypeDef xNVICInit; -const unsigned char ucMACAddress[] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; -portBASE_TYPE xReturn; -unsigned long ul; - - /* Start with things in a safe known state. */ - ETH_DeInit(); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), DISABLE ); - } - - /* Route clock to the peripheral. */ - RCC->AHBENR |= ( uipRCC_MAC_CLOCK | uipRCC_MAC_TX_CLOCK | uipRCC_MAC_RX_CLOCK ); - - /* Set the MAC address. */ - ETH_MACAddressConfig( ETH_MAC_Address0, ( unsigned char * ) ucMACAddress ); - - /* Use MII mode. */ - AFIO->MAPR &= ~( uipMODE_MII ); - - /* Configure all the GPIO as required for MAC/PHY interfacing. */ - prvSetupEthGPIO(); - - /* Reset the peripheral. */ - ETH_SoftwareReset(); - while( ETH_GetSoftwareResetStatus() == SET ); - - /* Initialise using the whopping big structure. Code space could be saved - by making this a const struct, however that would mean changes to the - structure within the library header files could break the code, so for now - just set everything manually at run time. */ - xEthInit.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - xEthInit.ETH_Watchdog = ETH_Watchdog_Disable; - xEthInit.ETH_Jabber = ETH_Jabber_Disable; - xEthInit.ETH_JumboFrame = ETH_JumboFrame_Disable; - xEthInit.ETH_InterFrameGap = ETH_InterFrameGap_96Bit; - xEthInit.ETH_CarrierSense = ETH_CarrierSense_Enable; - xEthInit.ETH_Speed = ETH_Speed_10M; - xEthInit.ETH_ReceiveOwn = ETH_ReceiveOwn_Disable; - xEthInit.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - xEthInit.ETH_Mode = ETH_Mode_HalfDuplex; - xEthInit.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; - xEthInit.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - xEthInit.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - xEthInit.ETH_BackOffLimit = ETH_BackOffLimit_10; - xEthInit.ETH_DeferralCheck = ETH_DeferralCheck_Disable; - xEthInit.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - xEthInit.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; - xEthInit.ETH_PassControlFrames = ETH_PassControlFrames_ForwardPassedAddrFilter; - xEthInit.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; - xEthInit.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; - xEthInit.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - xEthInit.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - xEthInit.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - xEthInit.ETH_HashTableHigh = 0x0; - xEthInit.ETH_HashTableLow = 0x0; - xEthInit.ETH_PauseTime = 0x0; - xEthInit.ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; - xEthInit.ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; - xEthInit.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; - xEthInit.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; - xEthInit.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; - xEthInit.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; - xEthInit.ETH_VLANTagIdentifier = 0x0; - xEthInit.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; - xEthInit.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; - xEthInit.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable; - xEthInit.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; - xEthInit.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; - xEthInit.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; - xEthInit.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; - xEthInit.ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; - xEthInit.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; - xEthInit.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; - xEthInit.ETH_FixedBurst = ETH_FixedBurst_Disable; - xEthInit.ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; - xEthInit.ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; - xEthInit.ETH_DescriptorSkipLength = 0x0; - xEthInit.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; - - xReturn = ETH_Init( &xEthInit, uipPHY_ADDRESS ); - - /* Check a link was established. */ - if( xReturn != pdFAIL ) - { - /* Rx and Tx interrupts are used. */ - ETH_DMAITConfig( ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T, ENABLE ); - - /* Only a single Tx descriptor is used. For now it is set to use an Rx - buffer, but will get updated to point to where ever uip_buf is - pointing prior to its use. */ - ETH_DMATxDescChainInit( ( void * ) &xTxDescriptor, ( void * ) ucMACBuffers, 1 ); - ETH_DMARxDescChainInit( xRxDescriptors, ( void * ) ucMACBuffers, uipNUM_RX_DESCRIPTORS ); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - /* Ensure received data generates an interrupt. */ - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), ENABLE ); - - /* Fix up the addresses used by the descriptors. - The way ETH_DMARxDescChainInit() is not compatible with the buffer - declarations in this file. */ - xRxDescriptors[ ul ].Buffer1Addr = ( unsigned long ) &( ucMACBuffers[ ul ][ 0 ] ); - - /* Mark the buffer used by this descriptor as in use. */ - ucBufferInUse[ ul ] = pdTRUE; - } - - /* When receiving data, start at the first descriptor. */ - ulNextDescriptor = 0; - - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* SendCount must be initialised to 2 to ensure the Tx descriptor looks - as if its available (as if it has already been sent twice. */ - xTxDescriptor.SendCount = 2; - - /* Switch on the interrupts in the NVIC. */ - xNVICInit.NVIC_IRQChannel = uipENET_IRQ_NUM; - xNVICInit.NVIC_IRQChannelPreemptionPriority = configLIBRARY_KERNEL_INTERRUPT_PRIORITY; - xNVICInit.NVIC_IRQChannelSubPriority = 0; - xNVICInit.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init( &xNVICInit ); - - /* Buffers and descriptors are all set up, now enable the MAC. */ - ETH_Start(); - - /* Let the DMA know there are Rx descriptors available. */ - prvRxDescriptorAvailable(); - } - - return xReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *ucReturn = NULL; -unsigned long ulAttempts = 0; - - while( ucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < uipNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - ucReturn = &( ucMACBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( ucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - return ucReturn; -} -/*-----------------------------------------------------------*/ - -unsigned short usGetMACRxData( void ) -{ -unsigned short usReturn; - - if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_ES ) != 0 ) - { - /* Error in Rx. Discard the frame and give it back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* No data to return. */ - usReturn = 0UL; - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_OWN ) == 0 ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - vReturnBuffer( uip_buf ); - - /* Get the received data length from the top 2 bytes of the Status - word and the data itself. */ - usReturn = ( unsigned short ) ( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_FL ) >> 16UL ); - uip_buf = ( unsigned char * ) ( xRxDescriptors[ ulNextDescriptor ].Buffer1Addr ); - - /* Allocate a new buffer to the descriptor. */ - xRxDescriptors[ ulNextDescriptor ].Buffer1Addr = ( unsigned long ) prvGetNextBuffer(); - - /* Give the descriptor back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else - { - /* No received data at all. */ - usReturn = 0UL; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vSendMACData( unsigned short usDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free. The check against <2 is to - ensure the buffer has been sent twice and in so doing preventing a race - condition with the DMA on the ETH_DMATxDesc_OWN bit. */ - while( ( xTxDescriptor.SendCount < 2 ) && ( xTxDescriptor.Status & ETH_DMATxDesc_OWN ) == ETH_DMATxDesc_OWN ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > uipBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - xTxDescriptor.Status &= ~ETH_DMATxDesc_OWN; - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - break; - } - } - - /* Setup the Tx descriptor for transmission. */ - xTxDescriptor.SendCount = 0; - xTxDescriptor.Buffer1Addr = ( unsigned long ) uip_buf; - xTxDescriptor.ControlBufferSize = ( unsigned long ) usDataLen; - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvSetupEthGPIO( void ) -{ -GPIO_InitTypeDef xEthInit; - - /* Remap MAC IO. */ - AFIO->MAPR |= ( uipREMAP_MAC_IO ); - - /* Set PA2, PA8, PB5, PB8, PB11, PB12, PB13, PC1 and PC2 for Ethernet - interfacing. */ - xEthInit.GPIO_Pin = GPIO_Pin_2;/* | GPIO_Pin_8; This should be set when the 25MHz is generated by MCO. */ - xEthInit.GPIO_Speed = GPIO_Speed_50MHz; - xEthInit.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; /*5*/ - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; - GPIO_Init( GPIOC, &xEthInit ); - - - /* Configure PA0, PA1, PA3, PB10, PC3, PD8, PD9, PD10, PD11 and PD12 as - inputs. */ - xEthInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; - xEthInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_10; - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_3; - GPIO_Init( GPIOC, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_Init( GPIOD, &xEthInit ); -} -/*-----------------------------------------------------------*/ - -void vReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < uipNUM_BUFFERS; ul++ ) - { - if( ucMACBuffers[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -void vMAC_ISR( void ) -{ -unsigned long ulStatus; -extern xSemaphoreHandle xEMACSemaphore; -long xHigherPriorityTaskWoken = pdFALSE; - - /* What caused the interrupt? */ - ulStatus = ETH_DMA->DMASR; - - /* Clear everything before leaving. */ - ETH_DMA->DMASR = ulStatus; - - if( ulStatus & ETH_DMA_IT_R ) - { - /* Data was received. Ensure the uIP task is not blocked as data has - arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - } - - if( ulStatus & ETH_DMA_IT_T ) - { - /* Data was transmitted. */ - if( xTxDescriptor.SendCount == 0 ) - { - /* Send again! */ - ( xTxDescriptor.SendCount )++; - - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - } - else - { - /* The Tx buffer is no longer required. */ - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - } - } - - /* If xSemaphoreGiveFromISR() unblocked a task, and the unblocked task has - a higher priority than the currently executing task, then - xHigherPriorityTaskWoken will have been set to pdTRUE and this ISR should - return directly to the higher priority unblocked task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h deleted file mode 100644 index 7eee11a38..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef EMAC__H -#define EMAC__H - -/* - * Initialise all IO and peripherals required for Ethernet communication. - */ -portBASE_TYPE xEthInitialise( void ); - -/* - * Look for new received data. If any is found then set uip_buf to point to the - * data and return the length of the data. If no data is found then 0 is - * returned, and uip_buf is left pointing to a spare data buffer. - */ -unsigned short usGetMACRxData( void ); - -/* - * Send usDataLen bytes from uip_buf to the MAC for transmission. - */ -void vSendMACData( unsigned short usDataLen ); - -/* - * Return a buffer to the pool of free buffers. - */ -void vReturnBuffer( unsigned char *pucBuffer ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc deleted file mode 100644 index f1e968827..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc +++ /dev/null @@ -1,54 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef EMAC__H -#define EMAC__H - -/* - * Initialise all IO and preipherals required for Ethernet communication. - */ -portBASE_TYPE xEthInitialise( void ); - -/* - * Look for new received data. If any is found then set uip_buf to point to the - * data and return the length of the data. If no data is found then 0 is - * returned, and uip_buf is left pointing to a spare data buffer. - */ -unsigned short usGetMACRxData( void ); - -/* - * Send usDataLen bytes from uip_buf to the MAC for transmission. - */ -void vSendMACData( unsigned short usDataLen ); - -/* - * Return a buffer to the pool of free buffers. - */ -void vReturnBuffer( unsigned char *pucBuffer ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index 4bd844f0f..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,303 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "FreeRTOS.h" -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; -extern portBASE_TYPE xGetLEDState( unsigned portBASE_TYPE uxLED ); -static unsigned short generate_io_state( void *arg ) -{ - ( void ) arg; - - if( xGetLEDState( 3 ) == 0 ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED 4"\ - "

"\ - "", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 709a9e765..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; - - ( void ) pvParameters; - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - while( xEthInitialise() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - prvSetMACAddress(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = usGetMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendMACData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendMACData( uip_len ); - } - } - } - else - { - if( ( timer_expired( &periodic_timer ) ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendMACData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -static const char *pcMessage = cMessageForDisplay; -extern QueueHandle_t xLCDQueue; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Set LED4. */ - vParTestSetLED( 3, 1 ); - } - else - { - /* Clear LED4. */ - vParTestSetLED( 3, 0 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xQueueSend( xLCDQueue, &pcMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.hwc b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.hwc deleted file mode 100644 index e69de29bb..000000000 diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini deleted file mode 100644 index d8b6b3b97..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini +++ /dev/null @@ -1,74 +0,0 @@ -[Environment Variables] -GENPATH={Project}Sources;{Compiler}lib\cfv1c\device\src;{Compiler}lib\cfv1c\device\include;{Compiler}lib\cfv1c\device\asm_include;{Compiler}\ColdFire_Support\Runtime\Runtime_ColdFire\Source;{Compiler}ColdFire_Support\Runtime\(Runtime_Common)\MWRuntime;{Compiler}ColdFire_Support\Runtime\(Runtime_Common);{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Double_precision;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Single_precision;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Precompiled_Headers\Src;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Src -LIBPATH={Compiler}lib\cfv1c\device\include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include\sys; -OBJPATH={Project}bin -TEXTPATH={Project}bin -ABSPATH={Project}bin - -[HI-WAVE] -Target=CFICDCYCLMULT -CPU=ColdFire -Layout=C_layout.hwl -LoadDialogOptions=AUTOERASEANDFLASH RUNANDSTOPAFTERLOAD="main" -MainFrame=2,3,-1,-1,-1,-1,132,132,1182,881 -TOOLBAR=57600 57601 32795 0 57635 57634 57637 0 57671 57669 0 32777 32776 32782 32780 32781 32778 0 32806 -AEFWarningDialog=FALSE - - - - -[CFICDCYCLMULT] -COMSETTINGS=SETCOMM DRIVER NOPROTOCOL NOPERIODICAL -HOST_IO_SUPPORT=0 - -[CFMultilinkCyclonePro_GDI_SETTINGS] -MCUID=0x700A -CMDFILE0=CMDFILE STARTUP ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_startup.cmd" -CMDFILE1=CMDFILE RESET ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_reset.cmd" -CMDFILE2=CMDFILE PRELOAD ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_preload.cmd" -CMDFILE3=CMDFILE POSTLOAD ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_postload.cmd" -CMDFILE4=CMDFILE VPPON ON "vppon.cmd" -CMDFILE5=CMDFILE VPPOFF ON "vppoff.cmd" -DBG0=DBG GENERAL DISARM_ON PROTECT_OFF ANALYZE_ON STEPATRUN_ON -DBG1=DBG PREDEFINED SELECT 0 -CF_V1_DBG_TRIGGER_A=RangeAllowed:0 AccessSizeCompareAllowed:0 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 -CF_V1_DBG_TRIGGER_B=RangeAllowed:0 AccessSizeCompareAllowed:0 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 -CF_V1_DBG_TRIGGER_C=RangeAllowed:1 AccessSizeCompareAllowed:1 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 -DBG2= -NV_PARAMETER_FILE=C:\devtools\Freescale\CodeWarrior for Microcontrollers V6.2\prog\FPP\mcu700A.fpp -NV_SAVE_WSP=0 -NV_AUTO_ID=1 - - - - - - - - - - - - - -[STARTUP] -CPUTARGETTYPE=0 -check_and_fix_if_secure_enable_flag=1 -trim_reference_target_newvalue=3125000 -trim_reference_target_override=0 -IO_DELAY_SET=0 -USE_CYCLONEPRO_RELAYS=1 -CyclonePro_poweroffonexit=0 -CyclonePro_currentvoltage=255 -CyclonePro_PowerDownDelay=250 -CyclonePro_PowerUpDelay=250 -IO_DELAY_CNT=14 -PCI_DELAY=0 -RESET_DELAY=0 -PORT=21 -interface_selection=0 -SHOWDIALOG=0 - - -[PORT] -IP= diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini deleted file mode 100644 index 399b27add..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini +++ /dev/null @@ -1,27 +0,0 @@ -[Environment Variables] -GENPATH={Project}Sources;{Compiler}lib\cfv1c\device\src;{Compiler}lib\cfv1c\device\include;{Compiler}lib\cfv1c\device\asm_include;{Compiler}\ColdFire_Support\Runtime\Runtime_ColdFire\Source;{Compiler}ColdFire_Support\Runtime\(Runtime_Common)\MWRuntime;{Compiler}ColdFire_Support\Runtime\(Runtime_Common);{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Double_precision;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Single_precision;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Precompiled_Headers\Src;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Src -LIBPATH={Compiler}lib\cfv1c\device\include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include\sys; -OBJPATH={Project}bin -TEXTPATH={Project}bin -ABSPATH={Project}bin - -[HI-WAVE] -Target=sim -Layout=C_layout.hwl -LoadDialogOptions=RUNANDSTOPAFTERLOAD="main" -CPU=ColdFire -MainFrame=2,3,-1,-1,-1,-1,22,23,1072,771 -TOOLBAR=57600 57601 32795 0 57635 57634 57637 0 57671 57669 0 32777 32776 32782 32780 32781 32778 0 32806 - - - -[Simulator] -CMDFILE0=CMDFILE STARTUP ON ".\cmd\CFV1_Full_Chip_Simulator_startup.cmd" - -[Simulator COLDFIRE] -CMDFILE0=CMDFILE RESET ON ".\cmd\CFV1_Full_Chip_Simulator_reset.cmd" -CMDFILE1=CMDFILE PRELOAD ON ".\cmd\CFV1_Full_Chip_Simulator_preload.cmd" -CMDFILE2=CMDFILE POSTLOAD ON ".\cmd\CFV1_Full_Chip_Simulator_postload.cmd" -CMDFILE3=CMDFILE SETCPU ON ".\cmd\CFV1_Full_Chip_Simulator_setcpu.cmd" -FCS=ColdFire V1 SAMPLE -HOST_IO_SUPPORT=1 diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl deleted file mode 100644 index 0612743b6..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl +++ /dev/null @@ -1,14 +0,0 @@ -OPEN source 0 0 60 99 -Source < attributes TOOLTIP on,TOOLTIP_FORMAT signed,TOOLTIP_MODE details,FREEZE off,MARKS off -OPEN assembly 60 0 40 31 -Assembly < attributes ADR on,CODE off,ABSADR on,SYMB off,FORMAT Auto,FREEZE off,TOPPC 0x410 -OPEN register 60 31 40 25 -Register < attributes FORMAT AUTO,COMPLEMENT None -OPEN data 60 56 40 22 -Data < attributes SCOPE global,COMPLEMENT None,FORMAT Symb,MODE automatic,SORT NotSort,UPDATERATE 10,NAMEWIDTH 16 -OPEN Command 60 77 40 23 -Command < attributes CACHESIZE 1000 -bckcolor 50331647 -font 'Courier New' 9 BLACK -AUTOSIZE on -ACTIVATE "Register" "Assembly" "Data" "Source" "Command" diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Default.mem b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Default.mem deleted file mode 100644 index d0bbb2e4d27ec9e58f5004d60ac5c4b6e68fec3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmX>ckl4`d7#iZQ;Opwk5aj5~(9qB@0f_N}#>OtNo*;jq9v}uPCPGgSL=Vso;_c}M E0JXYCwEzGB diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/RTOSDemo.mcp b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/RTOSDemo.mcp deleted file mode 100644 index e9aaa3dabcfff706800d91560dc383159fe9673d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80631 zcmeHQdvqMtc^?@TFqk41j?*Pnx9k_q+4W z?9T4&%&d0h+VWic)BN_k@9%#1yWgF;JDV#M(#L3;wyI6jK6_1@_IGRBv{f-pyAHf1 z#~h2lR!9^w`tForWD7<-X%z0%(;PVCF3w(j#CxI^%{3YPH;2!`l7yMtq9fI2-@QVbm0=`)A2H+Kf$ADJ~&I4Z} z_}##(1U~_Mso*aGUncllz?Tbt1DNB@a0&)@wFR|nfI9{60lrf3+kw{zeg?Qp@LvI6 zCHQsVs|B9|CAmiMHNa~H?*YD6@Y{enHyIuSUS~n=%fQzQ{s-W0!T$k#gW%JkcsB~} z0$wk80Cu4}Cc!@hP6+;A;9kM!K(YG-uLJHEoCMx1coKMv z;QN3F1b+c|tKgpkZxehrCdi=RZNNiF zyWkH4PYC`t@EwAeVuGgx_X1A}o&!z`{vvQj@EgFo;8idPdj(GdPYHe$cv|rHfwO{7 zhS9iF@MhqBg6{#&34R$kFZf5mGlI{6ktqn?3|tg^5cn>^uK?2~GW;{JX+iBm7$tjE zxgB^`_)h`v7yM)31A>>saLoz61NflePXXU8_$R>k2=0J!dz;`i@V$bc1Ae>Up90?} z_#7C(`vs2yzeDf`fZr+jo51f99D|X3x8RMy?-5)Aey`wHfd5$VFM; z_N_&ng}1+M{qLGV`K z7X@d4UlM#j@aF_S0sOMySAbs;{I|fL7yNVJR|UTb`~|^B;)U~``cJ**{HCr_FR6p~ zgE-GQ52)MJUFs=yn|6WoiSx?<&4EnNK~M>FH)s}g4`@G#^YZ|RbCdIj^XV=SZ4m7Z z=g|O&_L6pT5JcNXJ4TyDn>qx#1C#;L)@4CDXd8(3_g2sdXeTHM+6CGU+6~$Px*0SI z+5;K`-2$S$rTrZSZ2@fsr9qr))H&)J=M?pWy1;R#UUF_x_oz?Q7wQJ}iF1)UOr7RD zdlJMs#`(ed#ks+`#d+~Kh;!lz(914@AUK73v>nO zD$r`s)u2w$HJ~d&YeDNlH-at&T?ASI+5l=M>=+vv?bY)Itv_p+rTC~mmDguV(34VX zCX+HU+Hhe;*Lu=v-8AFLRB77OHl<4G=^e8(Gdi|RsTn=z<{0{5c4l8WZZ@0C#QWw- zM#|I@vu3G~k8jft9w-+rgHI-Vkw)?-i@-@q~5HVGEF@{iNZyI9?#5RP3!ztYt!5AORf_6~(1B zdpvUKy$;6Mbj}U+B(-G97}L!X#;BAs_o4EB=mpgkFqcKdw8o)LL5zghyJz&hCg5GO z`Yc%xadFxJV15(js9b4@PpjPEszS_s=cq#YRN5%8JV=7Im#a+_X7*;Mz?jxk#fhts zb8jwXPUG6&m%!iIY!Q+8JCQPq)@OxKmRU&e1IN0eJrIR~&(>At!KVZIq^TSG5i_l& zbI7qeWu&KBU#V2gAc1w2&#Ti@S(~S@&4&mi>1rhn=2~r*3@WO`I3H2(F1?1)`5L0!o7D+tL@N?>h_{0Br@)AEIAG|BilL2Z;V2eLDJv^yTOu(x;-2Mt_ig z7yT{zXY}26g6MbA|DrEOKaD=zZV>%5`eHYO80e4DH>59lF^K-x7-$qkUy(i=eKq=d z^Z|E(`a$&nHiGCMZU=1!RfgN};SSKtY&3+;&t4%8=0*_53O-+K39gi1o7#PS4d`@= zI9`7@X60Za@4(VH(v&7OffA%P5K{{n&rv5)8>k`l#3>PK1k-WkdFANxN-bbMY5=dS zoju^FvBQ)oKXas5E=P&!;&P>A*=~C5Ec3>j=JL5X)<_d>&H9e6&NUr3Z8-79-Pyb0 zs#**5tN}l#FjJZ6>W&R3#^X1R>N(uq*E3e?zMM`^H$H>aXnjX=$IwJiCRHq{%w|U% zt5Dv9oz1N880ei)$$NW}V?AR7Bg3N|@odI`^WhygorQym*6z{Gjw=IOVmsb;6Uv{Z z?$NQH;ohDdy{<~j%*JX<8tJ~d;=l}+=Uh(p-LAJbCNZt2_pw&h&4J<3F~}h?(RXvw z)f9I`gUw061uuCvrzXa$If;qEf#ETa=GYO9H77BhE!y%Zd(Dmr5?kOsx%rM3sJOv_ z(XlwxMSbY+85$VeGm+lAzsuqA!^G&$O%j(Fc48`u4c3{#)XdauYD%};nsAyp*fYF& zLVa{vrdW2%BtEzbOC9VAxG8k%5G9xx9&rg?*z8e7iV!uakuKL%uE!e0ntCj@s;8VH zxSlPE(KYLKbtSQffEPMCTjWNdTy0z;;!cbxexiR@*M!PEksR4EHUI&S?o1L^x2%3j zHO#){1h=21!{nKTobEKyvRcCh>_Sz9cjFTKz`QOC zw?ccAkopH9OUzspH{9paB3HE23U~V82C$ToeG%(}~A3nsZTl`r1V7ay9|+osXu= z?Hm~%o=Enwxtn^2hIS4n_9O-p?)3n}G~Acq;slE*MyO6UH1ftPJyy^SC$=fCaBO6R z&Wshf*e7@HP+kld>f^0@HYObfn@?xqRNOtuV-?PD1E}`jT;}@*2l|&|#pe~yp1Q)> zQ`hx!rE_DK#8Q_z+x~(vMW2G1;eV)1@ITZQ{)f84-%!`MTsv^J3!^V_4EDQrL*T)w zv@7I#iCiz0E4)G{FTKi`+JD=*;jgOP@F&$3zM{Iq2UJ)1kLn5`sVhoQS9my1sTAh1 zgV{;bE)*`2N(2e2D_kCRg|n)zaAcj#bf4Pg28wf+jJ}fHUlzIy-h)w^EvmaxjHK`& zL{%D`FQ+sLcA4C_<4rk}gUiH_8Vgch8L#xxSP+Bl{SngxWRn;$#8xI;SAtkL1AS-? zDMKHKio%crv0R235IsGHw}a>*GCT<42r@hlqDRQ^0*Ir-@MRG9F$~`T(Sv399*BDp zhSxy!Tp9iiL~objw;=9SR6ytH2{W7lOmCOrB4GBJ;aXt!nV}Duo-e~5V0yg_1z>u< z4DSWDeeb7%=>ao*8JONL!`}eY17>&)IIfVU{VVWt!M_HER$BoB0WDVHWZ;Vhp9Q=^ z@N!^|0YfJ+v|NQvz^erB2EJ5q5%@B}_X1-UsPF*r6@s4t=6;9aIbh5M6##~Y1AAzY83_k?s{)ypdz-uk2y#b85q{6R(uM_+`;B|tRU?O3P zsIUwe(?o@{fw`w-=m3VPQQ>M}m>U&t1cu2`p%<9@HHNLg8x_Kg0`3uf3-Bhv8Q_HA z9B{AT5-|0f;cdYE7S!Giyjk%3fVT*K6nH@Jv%p&gzXZHZFwcw(3jQkakl^nC4-4j5 z67HKBegd4dp!T1@+wtF)-UNKJ;H|)W z1n&gCMeyyww+en2@VMaTfo~HW<^q+Eac(Zbm;;0O*9v8%>`&|>u!GXU9>q96g3{3p zbH0?*L3k1>>!q3I{0T}&gUh*9PFF6ajFg>=aoz=`gWZd99tNd@{fcou1*L;+i*c?6 zrGwpzaUKSxgB^@FD#&_5`JaU60Wg z1*L=T#b}#?(m|(Uv`<0lunxp%yMofu6{TGZN(UW{(dGrEgO0{%4};P{M`N^=A=0%) z=^!YC%6Sg?MRKvk63GQ}I9leB4Ea%Y;k<|Yr=B*zeN_8P?kkT6aUZ!91V2pe|KMk- zy(0IB@R8I$ko&*WK-}-qmpl^$zew%p;LkYEthir04|G200uc9OanN!Q`~|h&x)@jb zkK9+$Kjc1&{vUli`fc1N(J#Y#tM)_O2XX&{^-}G3upX-Y4Sg;8QS?FRC)Eq+dklS! z(Ql$JjCu`p4s$G5T)kM~prf{i!$zZI02$q5nePgnkEo3i=CZTa4>G*Kn@S zXbXL{7}rd$hg|Epj&Y4b{mNgDRalv0F&dQR3qL#iTL+DLEsyw%T>{(@wS#ztK58#Q z9|rB4F!*eTm<^)qQ7Zx3>o@OX_pAT5!Nkyt(h}3UGrWmF%fmpP%~uR&pxI;wntz7M z4E*fMfX{YeK=Y~2uYIoSSUR_}Y#Wy)2Cuf+?Y2@>w6`!@>csgg#b;q$FIX7YItIHi zy8w2Sm{-n0jRh2qJfXro@5sdy2jo(Cw4mbVC4)%hN~V^m8x}eAzm0YhL%~~EZA%=D zT-&vs8+|ezo&%)H@hfdt84WVxw=+Akvi7RuDO%co;-Gj z%JZbM6YF(u+KH?^X6_wTb>7@bN=wC#JRG|1H*EMtennC zcKfuE+fF!Kmz{99)po*(aN7xo?XnXNx7toP5oJ43X8G9(k5tum!Xt@mGAVoGk;pZf z>LqebruvDT$y6_ihn?_fQbpI)tn^6Y>RP=-uCCQf>lR5K^ayIfikoWW_Jz2dUCVl?>>f*gsC=$!ZFeA4&MH@-oTvWR`|7RzJ~`^F{XRMBul+um>aG1gS?a9) zJ~`^I{XUtz)_%X_;nx08B~&atRV!bp?5>4pJ_WcIp7|8uT6pGHfV1$-C%f<3A4-N5 zLr}Hyh05+4g83BS8iM&0;2MJY72pg(`0RdbzmMPo)_$Ly{%gNaM!&T`Y__^Umt>#Y4g*?rf3pM0)rYuA3C zoE~d`?b=?uZ}0Y6o4ae*-tL;UwcBg$>~^n>-Rdrgx^3?^ypHLvNKs)}y`o))(<_0? zFnT3$89wg>j$!kPc6Y%secoO0igtCuD}k#EUI|=X@J`@#p&adPd%Nq}*6w-Ml+Hm}w;b=S2$-9EOZ8!y4Bz5P%3xZA@vbh{>D&D@tPu3P@9C|9=1 zxhpxGTm2P}3L_XvAd}vF`SGqYbkiY`x%DJw-2YI~#ABij0My*cN@9trz_2 zZ?(M`S8w>nYr@AXe(Vd_dT0B@E`BvP3X4+$wqEe7;BI>{l%2`uQ@O?2?Wk7)60r3G zU!Ski3%xXrhje;r9Ipx-$J_i@<0Zqq1{4@YFA53Rdckk7(_YAZt#S44$3@Y@s1x&% zfUOsNju!U5R=c(R$fg@B#%E;qPxaP| z>9o0K9e$KAU&ODsOyWlaN(YbN?nX^-KmxQEc%HhE_rhJLeyzj84U`lmjU;enOMpk; zkL(^a*LvQoiq32{C&R^*JBAb9{E;rdKJlKGksKQGOVgsbja6TLsac`;>fFI(vZqD$ z`4v;l6^nWoEqPTX`%pHbab6)Sh<;Ur%!#3SUoi4-y-wr>TlU z*MnEe&UjTiIkl)|^-NCs`gpZ9yE*JnP!Xy>0W-|?o*WP1 zu%2|W7%aE6|M;}79{&!tuAcltuTz$|hE+rF`q;AZ!8a*f1-Jf# z)t?+*Gv7p@z0T%+?X^`;KILln_-sR%r3uQf2=nwjqs(ODPRAsWp>o`UFI5TcfGV$e@b&r*@Jq8 zSMV)gKi~$c>vf49equ#=zOa)&)8-ReR*#@FhiV3%*CP>WTKsmBXWj7$3{`iuTGiatpYJYRN6yE4$f#>jrPi(JCATu40;aRvb|-rR}MEIe|uA?B&& zdo}c2xrurjd9GYrO_+IV^{0`&a#QszxE@&jY3R9fZHGeZ!4bAsuI;H~MlHET&y^j4 z5QMPTmfV6K3cE_J{lI#HifH_~a_wk`(Cg^Aa;@0H>%r0dT-ifzwVLkDY3R9fGxap` zT)CNg8hNhVOg)Y4m7A)kf#=H2)Dt~d_MRa1xs}hAJtZIQmA!?>wJ_Q%d&{OtuH_Ro zayHsSb3^!E@*FnWD_4$JXt_muiXDY=Ho-CBHlOH?~0HQ zq3iK~46C)QKWYCrtF*2j{|>dTo}!o79bOCT@vW$J_4q%3Ygs)3&n;U}kL42uyve6^ z_4waoXk9%EK0cP*0-ujIZFj7C4%wMl|93~VV0`XZ&)EIR|fpNQoxZl51?jO#o=kZ;_wdKUgg#&LGPbK$?6qomwUHyfIv4(X(bo9PE%@$RRe)}4J@8a+4x2_(4AFp-w`1^P*t0%w*Z$UkW z)W@^+W&y8iE(ew03b`%S+S>Sk3H}w0!qoV5_CRXC-l@+u^%|6*rbqFIu>@9>QpS{C z>c@HbWU4eBU!61xne{869(U?##qP}-^qcw;^B!Nf*kpw7#HYJ98 zVA5&-@14?T#tSA^gJNfZW4GwU=aNBs@6=Hz0E}pj4E#4mi%tjFA(sry(!N}3QqOe; z+$vpUlDKEg@e=RtEEo&@cDch+diU736z(mU`o3{YUL=7?0+9qF2}BZzBoIj;l0YPZNCJ@rj$R31)8^{@Qr9Q%4{Zo`%-XK)eKwA+ zkpv_Yp1ue0?~Y1xNT8 zM$K;A1~QtIlrv9Suwa= z)9ydkDyNda>P+xa2g|ACXRdBzwOY1RaQ()>^Ka3#Rf_LUKZwIm=i$D3ZmQ%eXZmVQ zy8`^IS#0n62V}cMaqT zej(>B=f_BoVbS*LMsd|{Q~MAw!zp_-4b4{k1Gk&nLl#^6_xm;N3_Px2`ip*RXdf2- zoA1@M-`{TWmz-&84-5ZyKi9O2Q32C$&`s?l!hd9~rkw*!{?q51+9SgMCECNsAml%A zqp5vV_^%*6&#{sJr!iA|RQNvve}nM9db+7SCj9fSEvJ7N?fIDShrwSh=}-H$p*=4A zd%zzO{)6Y3+7rV6Huw;Qs`sC+H?=2)zx=v#`8TwiN(UIV1AMzZ1AV6U2}%D@Mf$1V z7}_U={}n+O&1hPnI(_YHH65|DKg?S{(D8{LlWu&|VP!*HMnG z55K{>= 1; - crc = crc ^ 0xEDB88320; - } - else - { - crc >>= 1; - } - - byte >>= 1; - } - } - - return (unsigned char)(crc >> 26); -} - -/********************************************************************/ -/* - * Set the Physical (Hardware) Address and the Individual Address - * Hash in the selected FEC - * - * Parameters: - * ch FEC channel - * pa Physical (Hardware) Address for the selected FEC - */ -static void fec_set_address( const unsigned char *pa ) -{ - unsigned char crc; - - /* - * Set the Physical Address - */ - PALR = (unsigned long)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]); - PAUR = (unsigned long)((pa[4]<<24) | (pa[5]<<16)); - - /* - * Calculate and set the hash for given Physical Address - * in the Individual Address Hash registers - */ - crc = fec_hash_address(pa); - if(crc >= 32) - { - IAUR |= (unsigned long)(1 << (crc - 32)); - } - else - { - IALR |= (unsigned long)(1 << crc); - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseFECBuffers( void ) -{ -unsigned portBASE_TYPE ux; -unsigned char *pcBufPointer; - - /* Set the pointer to a correctly aligned address. */ - pcBufPointer = &( xFECTxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - pxFECTxDescriptor = ( FECBD * ) pcBufPointer; - - /* Likewise the pointer to the Rx descriptor. */ - pcBufPointer = &( xFECRxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - xFECRxDescriptors = ( FECBD * ) pcBufPointer; - - /* There is no Tx buffer as the Rx buffer is reused. */ - pxFECTxDescriptor->length = 0; - pxFECTxDescriptor->status = 0; - - /* Align the Rx buffers. */ - pcBufPointer = &( ucFECRxBuffers[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - /* Then fill in the Rx descriptors. */ - for( ux = 0; ux < configNUM_FEC_RX_DESCRIPTORS; ux++ ) - { - xFECRxDescriptors[ ux ].status = RX_BD_E; - xFECRxDescriptors[ ux ].length = configFEC_BUFFER_SIZE; - xFECRxDescriptors[ ux ].data = pcBufPointer; - - /* Note the start address of the buffer now that it is correctly - aligned. */ - pucAlignedBufferStartAddresses[ ux ] = pcBufPointer; - - /* The buffer is in use by the descriptor. */ - ucBufferInUse[ ux ] = pdTRUE; - - pcBufPointer += configFEC_BUFFER_SIZE; - } - - /* Note the start address of the last buffer as one more buffer is - allocated than there are Rx descriptors. */ - pucAlignedBufferStartAddresses[ ux ] = pcBufPointer; - - /* Set uip_buf to point to the last buffer. */ - uip_buf = pcBufPointer; - ucBufferInUse[ ux ] = pdTRUE; - - /* Set the wrap bit in the last descriptors to form a ring. */ - xFECRxDescriptors[ configNUM_FEC_RX_DESCRIPTORS - 1 ].status |= RX_BD_W; - - /* We start with descriptor 0. */ - ulNextRxDescriptor = 0; -} -/*-----------------------------------------------------------*/ - -void vInitFEC( void ) -{ -unsigned short usData; -struct uip_eth_addr xAddr; -const unsigned char ucMACAddress[6] = -{ - configMAC_0, configMAC_1,configMAC_2,configMAC_3,configMAC_4,configMAC_5 -}; - - prvInitialiseFECBuffers(); - - /* Create the semaphore used to wake the uIP task when data arrives. */ - vSemaphoreCreateBinary( xFECSemaphore ); - - /* Set the MAC address within the stack. */ - for( usData = 0; usData < 6; usData++ ) - { - xAddr.addr[ usData ] = ucMACAddress[ usData ]; - } - uip_setethaddr( xAddr ); - - /* Set the Reset bit and clear the Enable bit */ - ECR_RESET = 1; - - /* Enable the clock. */ - SCGC4 |= SCGC4_FEC_MASK; - - /* Wait at least 8 clock cycles */ - for( usData = 0; usData < 10; usData++ ) - { - asm( "NOP" ); - } - - /* Set MII speed to 2.5MHz. */ - MSCR = MCF_FEC_MSCR_MII_SPEED( ( ( configCPU_CLOCK_HZ / 1000000 ) / 5 ) + 1 ); - - /* - * Make sure the external interface signals are enabled - */ - PTCPF2_C0 = 1; - PTCPF2_C1 = 1; - PTCPF2_C2 = 1; - PTAPF1 = 0x55; - PTAPF2 = 0x55; - PTBPF1 = 0x55; - PTBPF2 = 0x55; - - /* Set all pins to full drive with no filter. */ - PTADS = 0x06; - PTAIFE = 0x06; - PTBDS = 0xf4; - PTBIFE = 0xf4; - PTCDS = 0; - PTCIFE = 0; - - - /* Can we talk to the PHY? */ - do - { - vTaskDelay( fecLINK_DELAY ); - usData = 0xffff; - fec_mii_read( configPHY_ADDRESS, PHY_PHYIDR1, &usData ); - - } while( usData == 0xffff ); - - /* Start auto negotiate. */ - fec_mii_write( configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) ); - - /* Wait for auto negotiate to complete. */ - do - { - vTaskDelay( fecLINK_DELAY ); - fec_mii_read( configPHY_ADDRESS, PHY_BMSR, &usData ); - - } while( !( usData & PHY_BMSR_AN_COMPLETE ) ); - - /* When we get here we have a link - find out what has been negotiated. */ - usData = 0; - fec_mii_read( configPHY_ADDRESS, PHY_STATUS, &usData ); - - /* Setup half or full duplex. */ - if( usData & PHY_DUPLEX_STATUS ) - { - RCR &= (unsigned long)~RCR_DRT; - TCR |= TCR_FDEN; - } - else - { - RCR |= RCR_DRT; - TCR &= (unsigned long)~TCR_FDEN; - } - - /* Clear the Individual and Group Address Hash registers */ - IALR = 0; - IAUR = 0; - GALR = 0; - GAUR = 0; - - /* Set the Physical Address for the selected FEC */ - fec_set_address( ucMACAddress ); - - /* Set Rx Buffer Size */ - EMRBR = (unsigned short) configFEC_BUFFER_SIZE; - - /* Point to the start of the circular Rx buffer descriptor queue */ - ERDSR = ( volatile unsigned long ) &( xFECRxDescriptors[ 0 ] ); - - /* Point to the start of the circular Tx buffer descriptor queue */ - ETSDR = ( volatile unsigned long ) pxFECTxDescriptor; - - /* Clear all FEC interrupt events */ - EIR = ( unsigned long ) -1; - - /* Various mode/status setup. */ - RCR = 0; - RCR_MAX_FL = configFEC_BUFFER_SIZE; - RCR_MII_MODE = 1; - - #if( configUSE_PROMISCUOUS_MODE == 1 ) - { - RCR |= RCR_PROM; - } - #endif - - /* Enable interrupts. */ - EIMR = EIR_TXF_MASK | EIMR_RXF_MASK | EIMR_RXB_MASK | EIMR_UN_MASK | EIMR_RL_MASK | EIMR_LC_MASK | EIMR_BABT_MASK | EIMR_BABR_MASK | EIMR_HBERR_MASK; - - /* Enable the MAC itself. */ - ECR = ECR_ETHER_EN_MASK; - - /* Indicate that there have been empty receive buffers produced */ - RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; -} -/*-----------------------------------------------------------*/ - -unsigned long ulFECRx( void ) -{ -unsigned long ulLen = 0UL; - - /* Is a buffer ready? */ - if( ( xFECRxDescriptors[ ulNextRxDescriptor ].status & RX_BD_E ) == 0 ) - { - /* uip_buf is about to be set to a new buffer, so return the buffer it - is already pointing to. */ - prvReturnBuffer( uip_buf ); - - /* Obtain the size of the packet and put it into the "len" variable. */ - ulLen = xFECRxDescriptors[ ulNextRxDescriptor ].length; - uip_buf = xFECRxDescriptors[ ulNextRxDescriptor ].data; - - /* The buffer that this descriptor was using is now in use by the - TCP/IP stack, so allocate it a new buffer. */ - xFECRxDescriptors[ ulNextRxDescriptor ].data = prvGetFreeBuffer(); - - /* Doing this here could cause corruption! */ - xFECRxDescriptors[ ulNextRxDescriptor ].status |= RX_BD_E; - - portENTER_CRITICAL(); - { - ulNextRxDescriptor++; - if( ulNextRxDescriptor >= configNUM_FEC_RX_DESCRIPTORS ) - { - ulNextRxDescriptor = 0; - } - } - portEXIT_CRITICAL(); - - /* Tell the DMA a new buffer is available. */ - RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vFECTx( void ) -{ - /* When we get here the Tx descriptor should show as having completed. */ - while( pxFECTxDescriptor->status & TX_BD_R ) - { - vTaskDelay( fecMINIMAL_DELAY ); - } - - portENTER_CRITICAL(); - { - /* To maintain the zero copy implementation, point the Tx descriptor - to the data from the Rx buffer. */ - pxFECTxDescriptor->data = uip_buf; - - /* Setup the buffer descriptor for transmission */ - pxFECTxDescriptor->length = uip_len; - - /* NB this assumes only one Tx descriptor! */ - pxFECTxDescriptor->status = ( TX_BD_R | TX_BD_L | TX_BD_TC | TX_BD_W ); - } - portEXIT_CRITICAL(); - - /* Continue the Tx DMA task (in case it was waiting for a new TxBD) */ - TDAR = MCF_FEC_TDAR_X_DES_ACTIVE; - - /* uip_buf is being used by the Tx descriptor. Allocate a new buffer to - uip_buf. */ - uip_buf = prvGetFreeBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < fecNUM_BUFFERS; ul++ ) - { - if( pucAlignedBufferStartAddresses[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetFreeBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < fecNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = pucAlignedBufferStartAddresses[ x ]; - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( fecMINIMAL_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -void interrupt 86 vFECISRHandler( void ) -{ -unsigned long ulEvent; -portBASE_TYPE xHighPriorityTaskWoken = pdFALSE; - - /* Determine the cause of the interrupt. */ - ulEvent = EIR & EIMR; - EIR = ulEvent; - - if( ulEvent & EIR_RXF_MASK ) - { - /* A packet has been received. Wake the handler task in case it is - blocked. */ - xSemaphoreGiveFromISR( xFECSemaphore, &xHighPriorityTaskWoken ); - } - - if( ulEvent & EIR_TXF_MASK ) - { - /* The Tx has completed. Mark the buffer it was using as free again. */ - prvReturnBuffer( pxFECTxDescriptor->data ); - pxFECTxDescriptor->data = NULL; - } - - if (ulEvent & ( EIR_UN_MASK | EIR_RL_MASK | EIR_LC_MASK | EIR_EBERR_MASK | EIR_BABT_MASK | EIR_BABR_MASK | EIR_HBERR_MASK ) ) - { - /* Sledge hammer error handling. */ - prvInitialiseFECBuffers(); - RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - } - - portEND_SWITCHING_ISR( xHighPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h deleted file mode 100644 index 9707c25ce..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - FreeRTOS.org V5.0.3 - Copyright (C) 2003-2008 Richard Barry. - - This file is part of the FreeRTOS.org distribution. - - FreeRTOS.org is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FreeRTOS.org is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FreeRTOS.org; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - A special exception to the GPL can be applied should you wish to distribute - a combined work that includes FreeRTOS.org, without being obliged to provide - the source code for any proprietary components. See the licensing section - of http://www.FreeRTOS.org for full details of how and when the exception - can be applied. - - *************************************************************************** - See http://www.FreeRTOS.org for documentation, latest information, license - and contact details. Please ensure to read the configuration and relevant - port sections of the online documentation. - *************************************************************************** -*/ - -#ifndef INC_FEC_H -#define INC_FEC_H - -/* Configure the FEC peripheral, IO and descriptors. */ -void vInitFEC( void ); - -/* Receive any data into the uip_buf array. */ -unsigned long ulFECRx( void ); - -/* Transmit the uip_buf array. */ -void vFECTx( void ); - -#endif - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h deleted file mode 100644 index 3711914ee..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* CodeWarrior often thinks it knows better than you which files you want to -build - and changes the port.c and portasm.S files included in the project from -the ColdFire V1 versions to the x86 versions. If you get lots of errors output -when either file is compiled then delete the files from the project and then -add back in the port.c and portasm.S files that are located in the -FreeRTOS\Source\portable\GCC\ColdFire_V1 directory. Remove the line below -before compiling. */ - -#error Read the comment above this line, then delete this error statement! - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include "derivative.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( 50000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 100 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 13 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 1 -#define configGENERATE_RUN_TIME_STATS 0 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_COUNTING_SEMAPHORES 0 - -#define configMAX_PRIORITIES ( 6 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* It is not advisable to change these values on a Coldfire V1 core. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 7 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - - -/* Ethernet configuration. */ -#define configMAC_0 0x00 -#define configMAC_1 0x04 -#define configMAC_2 0x9F -#define configMAC_3 0x00 -#define configMAC_4 0xAB -#define configMAC_5 0x2B - -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 222 - -#define configGW_ADDR0 192 -#define configGW_ADDR1 168 -#define configGW_ADDR2 0 -#define configGW_ADDR3 3 - -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#define configNUM_FEC_RX_DESCRIPTORS 2 -#define configFEC_BUFFER_SIZE 1520 /* Should be multiple of 16. */ -#define configUSE_PROMISCUOUS_MODE 0 -#define configETHERNET_INPUT_TASK_STACK_SIZE ( 320 ) -#define configETHERNET_INPUT_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) - -#define configPHY_ADDRESS 1 - -#if ( configFEC_BUFFER_SIZE & 0x0F ) != 0 - #error configFEC_BUFFER_SIZE must be a multiple of 16. -#endif - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c deleted file mode 100644 index c9ab3a7bd..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -#include "FreeRTOS.h" -#include "task.h" -#include "partest.h" - -#define partstNUM_LEDs 4 - -/*----------------------------------------------------------- - * Simple LED IO routines for the tower LEDs LED1 to LED4. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Enable pull and output drive. */ - PTHPE_PTHPE3 = 1; - PTHDD_PTHDD3 = 1; - - PTEPE_PTEPE5 = 1; - PTEDD_PTEDD5 = 1; - - PTGPE_PTGPE5 = 1; - PTGDD_PTGDD5 = 1; - - PTEPE_PTEPE3 = 1; - PTEDD_PTEDD3 = 1; - - /* Enable clock to ports. */ - SCGC3_PTE = 1; - SCGC3_PTF = 1; - SCGC3_PTG = 1; - - /* Ensure the LEDs are off. */ - vParTestSetLED( 0, 0 ); - vParTestSetLED( 1, 0 ); - vParTestSetLED( 2, 0 ); - vParTestSetLED( 3, 0 ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - switch( uxLED ) - { - case 0: PTHD_PTHD3 = xValue; - break; - case 1: PTED_PTED5 = xValue; - break; - case 2: PTGD_PTGD5 = xValue; - break; - case 3: PTED_PTED3 = xValue; - break; - default : /* There are no other LEDs. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - portENTER_CRITICAL(); - { - switch( uxLED ) - { - case 0: PTHD_PTHD3 = !PTHD_PTHD3; - break; - case 1: PTED_PTED5 = !PTED_PTED5; - break; - case 2: PTGD_PTGD5 = !PTGD_PTGD5; - break; - case 3: PTED_PTED3 = !!PTED_PTED3; - break; - default : /* There are no other LEDs. */ - break; - } - } - portEXIT_CRITICAL(); -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ - /* We ignore the parameter as in this simple example we simply return the - state of LED3. */ - ( void ) uxLED; - - return PTED_PTED3; -} - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h deleted file mode 100644 index 8ed9a3d92..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Note: This file is recreated by the project wizard whenever the MCU is - * changed and should not be edited by hand - */ - -/* Include the derivative-specific header file */ -#include - -#define _Stop asm ( mov3q #4,d0; bclr.b d0,SOPT1; stop #0x2000; ) - /*!< Macro to enter stop modes, STOPE bit in SOPT1 register must be set prior to executing this macro */ - -#define _Wait asm ( mov3q #4,d0; bset.b d0,SOPT1; nop; stop #0x2000; ) - /*!< Macro to enter wait mode */ - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h deleted file mode 100644 index 5c99413b1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * \file eth.h - * \brief Definitinos for Ethernet Frames - * \version $Revision: 1.2 $ - * \author Michael Norman - */ - -#ifndef _ETH_H -#define _ETH_H - -/*******************************************************************/ - -/* Ethernet standard lengths in bytes*/ -#define ETH_ADDR_LEN (6) -#define ETH_TYPE_LEN (2) -#define ETH_CRC_LEN (4) -#define ETH_MAX_DATA (1500) -#define ETH_MIN_DATA (46) -#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) - -/* Defined Ethernet Frame Types */ -#define ETH_FRM_IP (0x0800) -#define ETH_FRM_ARP (0x0806) -#define ETH_FRM_RARP (0x8035) -#define ETH_FRM_TEST (0xA5A5) - -/* Maximum and Minimum Ethernet Frame Sizes */ -#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) -#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) -#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) - -/* Ethernet Addresses */ -typedef unsigned char ETH_ADDR[ETH_ADDR_LEN]; - -/* 16-bit Ethernet Frame Type, ie. Protocol */ -typedef unsigned short ETH_FRM_TYPE; - -/* Ethernet Frame Header definition */ -typedef struct -{ - ETH_ADDR dest; - ETH_ADDR src; - ETH_FRM_TYPE type; -} ETH_HDR; - -/* Ethernet Frame definition */ -typedef struct -{ - ETH_HDR head; - unsigned char* data; -} ETH_FRAME; - -/*******************************************************************/ - -#endif /* _ETH_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h deleted file mode 100644 index 745668c6a..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h +++ /dev/null @@ -1,70 +0,0 @@ -/*! - * \file eth.h - * \brief Definitions for Ethernet Physical Layer Interface - * \version $Revision: 1.3 $ - * \author Michael Norman - */ - -#ifndef _ETH_PHY_H -#define _ETH_PHY_H - -/*******************************************************************/ - -/* MII Register Addresses */ -#define PHY_BMCR (0x00) -#define PHY_BMSR (0x01) -#define PHY_PHYIDR1 (0x02) -#define PHY_PHYIDR2 (0x03) -#define PHY_ANAR (0x04) -#define PHY_ANLPAR (0x05) - -/* Bit definitions and macros for PHY_CTRL */ -#define PHY_BMCR_RESET (0x8000) -#define PHY_BMCR_LOOP (0x4000) -#define PHY_BMCR_SPEED (0x2000) -#define PHY_BMCR_AN_ENABLE (0x1000) -#define PHY_BMCR_POWERDOWN (0x0800) -#define PHY_BMCR_ISOLATE (0x0400) -#define PHY_BMCR_AN_RESTART (0x0200) -#define PHY_BMCR_FDX (0x0100) -#define PHY_BMCR_COL_TEST (0x0080) - -/* Bit definitions and macros for PHY_STAT */ -#define PHY_BMSR_100BT4 (0x8000) -#define PHY_BMSR_100BTX_FDX (0x4000) -#define PHY_BMSR_100BTX (0x2000) -#define PHY_BMSR_10BT_FDX (0x1000) -#define PHY_BMSR_10BT (0x0800) -#define PHY_BMSR_NO_PREAMBLE (0x0040) -#define PHY_BMSR_AN_COMPLETE (0x0020) -#define PHY_BMSR_REMOTE_FAULT (0x0010) -#define PHY_BMSR_AN_ABILITY (0x0008) -#define PHY_BMSR_LINK (0x0004) -#define PHY_BMSR_JABBER (0x0002) -#define PHY_BMSR_EXTENDED (0x0001) - -/* Bit definitions and macros for PHY_AN_ADV */ -#define PHY_ANAR_NEXT_PAGE (0x8001) -#define PHY_ANAR_REM_FAULT (0x2001) -#define PHY_ANAR_PAUSE (0x0401) -#define PHY_ANAR_100BT4 (0x0201) -#define PHY_ANAR_100BTX_FDX (0x0101) -#define PHY_ANAR_100BTX (0x0081) -#define PHY_ANAR_10BT_FDX (0x0041) -#define PHY_ANAR_10BT (0x0021) -#define PHY_ANAR_802_3 (0x0001) - -/* Bit definitions and macros for PHY_AN_LINK_PAR */ -#define PHY_ANLPAR_NEXT_PAGE (0x8000) -#define PHY_ANLPAR_ACK (0x4000) -#define PHY_ANLPAR_REM_FAULT (0x2000) -#define PHY_ANLPAR_PAUSE (0x0400) -#define PHY_ANLPAR_100BT4 (0x0200) -#define PHY_ANLPAR_100BTX_FDX (0x0100) -#define PHY_ANLPAR_100BTX (0x0080) -#define PHY_ANLPAR_10BTX_FDX (0x0040) -#define PHY_ANLPAR_10BT (0x0020) - -/*******************************************************************/ - -#endif /* _ETH_PHY_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c deleted file mode 100644 index e10f052e3..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * File: exceptions.c - * Purpose: Generic exception handling for ColdFire processors - * - */ - -#include "derivative.h" -#include "exceptions.h" -#include "startcf.h" - -#define REGISTER_ABI __REGABI__ - -extern asm void interrupt 109 vPortYieldISR( void ); -extern void interrupt 86 vFECISRHandler( void ); - -/***********************************************************************/ -/* - * Set NO_PRINTF to 0 in order the exceptions.c interrupt handler - * to output messages to the standard io. - * - */ -#define NO_PRINTF 1 - -#if NO_PRINTF -#define VECTORDISPLAY(MESSAGE) asm { nop; }; -#define VECTORDISPLAY2(MESSAGE,MESSAGE2) asm { nop; }; -#define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; }; -#else -#include -#define VECTORDISPLAY(MESSAGE1) printf(MESSAGE1); -#define VECTORDISPLAY2(MESSAGE1,MESSAGE2) printf(MESSAGE1,MESSAGE2); -#define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3); -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern unsigned long far _SP_INIT[]; - -/***********************************************************************/ -/* - * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) - * - * To enable this support: - * - Set CONSOLE_IO_SUPPORT 1 in this file; this will enable - * TrapHandler_printf for the trap #14 exception. - * - * - Make sure the file console_io_cf.c is in your project. - * - * - In the debugger make sure that in the Connection "Setup" dialog, - * "Debug Options" property page, the check box - * "Enable Terminal printf support" is set. - * - * - * - */ -#define CONSOLE_IO_SUPPORT 0 - -#if CONSOLE_IO_SUPPORT -asm void TrapHandler_printf(void) { - HALT - RTE -} -#endif - -/***********************************************************************/ -/* - * This is the handler for all exceptions which are not common to all - * ColdFire Chips. - * - * Called by mcf_exception_handler - * - */ -void derivative_interrupt(unsigned long vector) -{ - if (vector < 64 || vector > 192) { - VECTORDISPLAY2("User Defined Vector #%d\n",vector); - } -} - -/*********************************************************************** - * - * This is the exception handler for all exceptions common to all - * chips ColdFire. Most exceptions do nothing, but some of the more - * important ones are handled to some extent. - * - * Called by asm_exception_handler - * - * The ColdFire family of processors has a simplified exception stack - * frame that looks like the following: - * - * 3322222222221111 111111 - * 1098765432109876 5432109876543210 - * 8 +----------------+----------------+ - * | Program Counter | - * 4 +----------------+----------------+ - * |FS/Fmt/Vector/FS| SR | - * SP --> 0 +----------------+----------------+ - * - * The stack self-aligns to a 4-byte boundary at an exception, with - * the FS/Fmt/Vector/FS field indicating the size of the adjustment - * (SP += 0,1,2,3 bytes). - * 31 28 27 26 25 18 17 16 15 0 - * 4 +---------------------------------------+------------------------------------+ - * | Format | FS[3..2] | Vector | FS[1..0] | SR | - * SP --> 0 +---------------------------------------+------------------------------------+ - */ -#define MCF5XXX_RD_SF_FORMAT(PTR) \ - ((*((unsigned short *)(PTR)) >> 12) & 0x00FF) - -#define MCF5XXX_RD_SF_VECTOR(PTR) \ - ((*((unsigned short *)(PTR)) >> 2) & 0x00FF) - -#define MCF5XXX_RD_SF_FS(PTR) \ - ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) ) - -#define MCF5XXX_SF_SR(PTR) *(((unsigned short *)(PTR))+1) - -#define MCF5XXX_SF_PC(PTR) *((unsigned long *)(PTR)+1) - -#define MCF5XXX_EXCEPTFMT "%s -- PC = %#08X\n" - - -void mcf_exception_handler(void *framepointer) -{ - volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); - volatile unsigned short stackFrameSR = MCF5XXX_SF_SR(framepointer); - volatile unsigned short stackFrameWord = (*(unsigned short *)(framepointer)); - volatile unsigned long stackFrameFormat = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord); - volatile unsigned long stackFrameFS = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord); - volatile unsigned long stackFrameVector = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord); - volatile unsigned long stackFramePC = MCF5XXX_SF_PC(framepointer); - - switch (stackFrameFormat) - { - case 4: - case 5: - case 6: - case 7: - break; - default: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC); - break; - } - - switch (stackFrameVector) - { - case 2: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 3: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 4: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC); - break; - case 8: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC); - break; - case 9: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC); - break; - case 10: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction", stackFramePC); - break; - case 11: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction", stackFramePC); - break; - case 12: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC); - break; - case 14: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC); - break; - case 15: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC); - break; - case 24: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC); - break; - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24); - break; - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32); - break; - case 5: - case 6: - case 7: - case 13: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector); - break; - default: - derivative_interrupt(stackFrameVector); - break; - } -} - -#if REGISTER_ABI -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - lea 24(sp),a0 /* A0 point to exception stack frame on the stack */ - jsr mcf_exception_handler - movem.l (sp), d0-d2/a0-a1 - lea 20(sp), sp - unlk a6 - rte -} -#else -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - pea 24(sp) /* push exception frame address */ - jsr mcf_exception_handler - movem.l 4(sp), d0-d2/a0-a1 - lea 24(sp), sp - unlk a6 - rte -} -#endif - -typedef void (* vectorTableEntryType)(void); - -#if CONSOLE_IO_SUPPORT -vectorTableEntryType vector_printf @Vtrap14 = TrapHandler_printf; -#endif - -/* - * MCF51CN128 vector table - * CF V1 has 114 vector + SP_INIT in the vector table (115 entries) - */ - -__declspec(weak) vectorTableEntryType vector_0 @INITSP = (vectorTableEntryType)&_SP_INIT; -__declspec(weak) vectorTableEntryType vector_1 @INITPC = (vectorTableEntryType)&_startup; -__declspec(weak) vectorTableEntryType vector_2 @Vaccerr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_3 @Vadderr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_4 @Viinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_5 @VReserved5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_6 @VReserved6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_7 @VReserved7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_8 @Vprviol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_9 @Vtrace = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_10 @Vunilaop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_11 @Vunilfop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_12 @Vdbgi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_13 @VReserved13 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_14 @Vferror = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_15 @VReserved15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_16 @VReserved16 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_17 @VReserved17 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_18 @VReserved18 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_19 @VReserved19 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_20 @VReserved20 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_21 @VReserved21 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_22 @VReserved22 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_23 @VReserved23 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_24 @Vspuri = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_25 @VReserved25 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_26 @VReserved26 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_27 @VReserved27 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_28 @VReserved28 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_29 @VReserved29 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_30 @VReserved30 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_31 @VReserved31 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_32 @Vtrap0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_33 @Vtrap1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_34 @Vtrap2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_35 @Vtrap3 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_36 @Vtrap4 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_37 @Vtrap5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_38 @Vtrap6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_39 @Vtrap7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_40 @Vtrap8 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_41 @Vtrap9 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_42 @Vtrap10 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_43 @Vtrap11 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_44 @Vtrap12 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_45 @Vtrap13 = asm_exception_handler; -#if CONSOLE_IO_SUPPORT == 0 -__declspec(weak) vectorTableEntryType vector_46 @Vtrap14 = asm_exception_handler; -#endif -__declspec(weak) vectorTableEntryType vector_47 @Vtrap15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_48 @VReserved48 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_49 @VReserved49 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_50 @VReserved50 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_51 @VReserved51 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_52 @VReserved52 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_53 @VReserved53 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_54 @VReserved54 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_55 @VReserved55 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_56 @VReserved56 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_57 @VReserved57 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_58 @VReserved58 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_59 @VReserved59 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_60 @VReserved60 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_61 @Vunsinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_62 @VReserved62 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_63 @VReserved63 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_64 @Virq = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_65 @Vlvd = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_66 @Vlol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_67 @Vtpm1ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_68 @Vtpm1ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_69 @Vtpm1ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_70 @Vtpm1ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_71 @Vmtim1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_72 @Vtpm2ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_73 @Vtpm2ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_74 @Vtpm2ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_75 @Vtpm2ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_76 @Vspi1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_77 @Vspi2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_78 @Vmtim2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_79 @Vsci1err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_80 @Vsci1rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_81 @Vsci1tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_82 @Vsci2err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_83 @Vsci2rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_84 @Vsci2tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_85 @Vsci3or = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_86 @Vfectxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_87 @Vfecrxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_88 @Vfecother = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_89 @Vfechberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_90 @Vfecbabr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_91 @Vfecbabt = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_92 @Vfecgra = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_93 @Vfectxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_94 @Vfecrxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_95 @Vfecmii = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_96 @Vfeceberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_97 @Vfeclc = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_98 @Vfecrl = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_99 @Vfecun = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR; -__declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler; - - - -#ifdef __cplusplus -} -#endif - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h deleted file mode 100644 index 7995f3044..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * File: exceptions.h - * Purpose: Generic exception handling for ColdFire processors - * - * Notes: - */ - -#ifndef _MCF_EXCEPTIONS_H -#define _MCF_EXCEPTIONS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/***********************************************************************/ -/* - * This is the handler for all exceptions which are not common to all - * ColdFire Chips. - * - * Called by mcf_exception_handler - * - */ -void derivative_interrupt(unsigned long vector); - -/***********************************************************************/ -/* - * This is the exception handler for all exceptions common to all - * chips ColdFire. Most exceptions do nothing, but some of the more - * important ones are handled to some extent. - * - * Called by asm_exception_handler - */ -void mcf_exception_handler(void *framepointer); - - -/***********************************************************************/ -/* - * This is the assembly exception handler defined in the vector table. - * This function is in assembler so that the frame pointer can be read - * from the stack. - * Note that the way to give the stack frame as argument to the c handler - * depends on the used ABI (Register, Compact or Standard). - * - */ -asm void asm_exception_handler(void); - -#ifdef __cplusplus -} -#endif - -#endif /* _MCF_EXCEPTIONS_H */ - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c deleted file mode 100644 index e10f052e3..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * File: exceptions.c - * Purpose: Generic exception handling for ColdFire processors - * - */ - -#include "derivative.h" -#include "exceptions.h" -#include "startcf.h" - -#define REGISTER_ABI __REGABI__ - -extern asm void interrupt 109 vPortYieldISR( void ); -extern void interrupt 86 vFECISRHandler( void ); - -/***********************************************************************/ -/* - * Set NO_PRINTF to 0 in order the exceptions.c interrupt handler - * to output messages to the standard io. - * - */ -#define NO_PRINTF 1 - -#if NO_PRINTF -#define VECTORDISPLAY(MESSAGE) asm { nop; }; -#define VECTORDISPLAY2(MESSAGE,MESSAGE2) asm { nop; }; -#define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; }; -#else -#include -#define VECTORDISPLAY(MESSAGE1) printf(MESSAGE1); -#define VECTORDISPLAY2(MESSAGE1,MESSAGE2) printf(MESSAGE1,MESSAGE2); -#define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3); -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern unsigned long far _SP_INIT[]; - -/***********************************************************************/ -/* - * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) - * - * To enable this support: - * - Set CONSOLE_IO_SUPPORT 1 in this file; this will enable - * TrapHandler_printf for the trap #14 exception. - * - * - Make sure the file console_io_cf.c is in your project. - * - * - In the debugger make sure that in the Connection "Setup" dialog, - * "Debug Options" property page, the check box - * "Enable Terminal printf support" is set. - * - * - * - */ -#define CONSOLE_IO_SUPPORT 0 - -#if CONSOLE_IO_SUPPORT -asm void TrapHandler_printf(void) { - HALT - RTE -} -#endif - -/***********************************************************************/ -/* - * This is the handler for all exceptions which are not common to all - * ColdFire Chips. - * - * Called by mcf_exception_handler - * - */ -void derivative_interrupt(unsigned long vector) -{ - if (vector < 64 || vector > 192) { - VECTORDISPLAY2("User Defined Vector #%d\n",vector); - } -} - -/*********************************************************************** - * - * This is the exception handler for all exceptions common to all - * chips ColdFire. Most exceptions do nothing, but some of the more - * important ones are handled to some extent. - * - * Called by asm_exception_handler - * - * The ColdFire family of processors has a simplified exception stack - * frame that looks like the following: - * - * 3322222222221111 111111 - * 1098765432109876 5432109876543210 - * 8 +----------------+----------------+ - * | Program Counter | - * 4 +----------------+----------------+ - * |FS/Fmt/Vector/FS| SR | - * SP --> 0 +----------------+----------------+ - * - * The stack self-aligns to a 4-byte boundary at an exception, with - * the FS/Fmt/Vector/FS field indicating the size of the adjustment - * (SP += 0,1,2,3 bytes). - * 31 28 27 26 25 18 17 16 15 0 - * 4 +---------------------------------------+------------------------------------+ - * | Format | FS[3..2] | Vector | FS[1..0] | SR | - * SP --> 0 +---------------------------------------+------------------------------------+ - */ -#define MCF5XXX_RD_SF_FORMAT(PTR) \ - ((*((unsigned short *)(PTR)) >> 12) & 0x00FF) - -#define MCF5XXX_RD_SF_VECTOR(PTR) \ - ((*((unsigned short *)(PTR)) >> 2) & 0x00FF) - -#define MCF5XXX_RD_SF_FS(PTR) \ - ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) ) - -#define MCF5XXX_SF_SR(PTR) *(((unsigned short *)(PTR))+1) - -#define MCF5XXX_SF_PC(PTR) *((unsigned long *)(PTR)+1) - -#define MCF5XXX_EXCEPTFMT "%s -- PC = %#08X\n" - - -void mcf_exception_handler(void *framepointer) -{ - volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); - volatile unsigned short stackFrameSR = MCF5XXX_SF_SR(framepointer); - volatile unsigned short stackFrameWord = (*(unsigned short *)(framepointer)); - volatile unsigned long stackFrameFormat = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord); - volatile unsigned long stackFrameFS = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord); - volatile unsigned long stackFrameVector = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord); - volatile unsigned long stackFramePC = MCF5XXX_SF_PC(framepointer); - - switch (stackFrameFormat) - { - case 4: - case 5: - case 6: - case 7: - break; - default: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC); - break; - } - - switch (stackFrameVector) - { - case 2: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 3: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 4: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC); - break; - case 8: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC); - break; - case 9: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC); - break; - case 10: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction", stackFramePC); - break; - case 11: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction", stackFramePC); - break; - case 12: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC); - break; - case 14: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC); - break; - case 15: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC); - break; - case 24: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC); - break; - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24); - break; - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32); - break; - case 5: - case 6: - case 7: - case 13: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector); - break; - default: - derivative_interrupt(stackFrameVector); - break; - } -} - -#if REGISTER_ABI -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - lea 24(sp),a0 /* A0 point to exception stack frame on the stack */ - jsr mcf_exception_handler - movem.l (sp), d0-d2/a0-a1 - lea 20(sp), sp - unlk a6 - rte -} -#else -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - pea 24(sp) /* push exception frame address */ - jsr mcf_exception_handler - movem.l 4(sp), d0-d2/a0-a1 - lea 24(sp), sp - unlk a6 - rte -} -#endif - -typedef void (* vectorTableEntryType)(void); - -#if CONSOLE_IO_SUPPORT -vectorTableEntryType vector_printf @Vtrap14 = TrapHandler_printf; -#endif - -/* - * MCF51CN128 vector table - * CF V1 has 114 vector + SP_INIT in the vector table (115 entries) - */ - -__declspec(weak) vectorTableEntryType vector_0 @INITSP = (vectorTableEntryType)&_SP_INIT; -__declspec(weak) vectorTableEntryType vector_1 @INITPC = (vectorTableEntryType)&_startup; -__declspec(weak) vectorTableEntryType vector_2 @Vaccerr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_3 @Vadderr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_4 @Viinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_5 @VReserved5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_6 @VReserved6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_7 @VReserved7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_8 @Vprviol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_9 @Vtrace = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_10 @Vunilaop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_11 @Vunilfop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_12 @Vdbgi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_13 @VReserved13 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_14 @Vferror = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_15 @VReserved15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_16 @VReserved16 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_17 @VReserved17 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_18 @VReserved18 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_19 @VReserved19 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_20 @VReserved20 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_21 @VReserved21 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_22 @VReserved22 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_23 @VReserved23 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_24 @Vspuri = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_25 @VReserved25 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_26 @VReserved26 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_27 @VReserved27 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_28 @VReserved28 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_29 @VReserved29 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_30 @VReserved30 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_31 @VReserved31 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_32 @Vtrap0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_33 @Vtrap1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_34 @Vtrap2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_35 @Vtrap3 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_36 @Vtrap4 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_37 @Vtrap5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_38 @Vtrap6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_39 @Vtrap7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_40 @Vtrap8 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_41 @Vtrap9 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_42 @Vtrap10 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_43 @Vtrap11 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_44 @Vtrap12 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_45 @Vtrap13 = asm_exception_handler; -#if CONSOLE_IO_SUPPORT == 0 -__declspec(weak) vectorTableEntryType vector_46 @Vtrap14 = asm_exception_handler; -#endif -__declspec(weak) vectorTableEntryType vector_47 @Vtrap15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_48 @VReserved48 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_49 @VReserved49 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_50 @VReserved50 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_51 @VReserved51 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_52 @VReserved52 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_53 @VReserved53 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_54 @VReserved54 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_55 @VReserved55 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_56 @VReserved56 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_57 @VReserved57 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_58 @VReserved58 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_59 @VReserved59 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_60 @VReserved60 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_61 @Vunsinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_62 @VReserved62 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_63 @VReserved63 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_64 @Virq = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_65 @Vlvd = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_66 @Vlol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_67 @Vtpm1ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_68 @Vtpm1ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_69 @Vtpm1ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_70 @Vtpm1ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_71 @Vmtim1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_72 @Vtpm2ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_73 @Vtpm2ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_74 @Vtpm2ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_75 @Vtpm2ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_76 @Vspi1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_77 @Vspi2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_78 @Vmtim2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_79 @Vsci1err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_80 @Vsci1rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_81 @Vsci1tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_82 @Vsci2err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_83 @Vsci2rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_84 @Vsci2tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_85 @Vsci3or = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_86 @Vfectxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_87 @Vfecrxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_88 @Vfecother = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_89 @Vfechberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_90 @Vfecbabr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_91 @Vfecbabt = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_92 @Vfecgra = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_93 @Vfectxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_94 @Vfecrxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_95 @Vfecmii = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_96 @Vfeceberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_97 @Vfeclc = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_98 @Vfecrl = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_99 @Vfecun = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR; -__declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler; - - - -#ifdef __cplusplus -} -#endif - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h deleted file mode 100644 index 700544ae4..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * File: fecbd.h - * Purpose: - * - * Purpose: Provide a simple buffer management driver - */ - -#ifndef _FECBD_H_ -#define _FECBD_H_ - -/********************************************************************/ - -#define Rx 1 -#define Tx 0 - -/* - * Buffer sizes in bytes - */ -#ifndef RX_BUF_SZ -#define RX_BUF_SZ 1520 //2048 -#endif -#ifndef TX_BUF_SZ -#define TX_BUF_SZ 1520 -#endif - -/* - * Buffer Descriptor Format - */ -#pragma options align= packed -typedef struct -{ - unsigned short status; /* control and status */ - unsigned short length; /* transfer length */ - unsigned char *data; /* buffer address */ -} FECBD; - -/* - * Bit level definitions for status field of buffer descriptors - */ -#define TX_BD_R 0x8000 -#define TX_BD_TO1 0x4000 -#define TX_BD_W 0x2000 -#define TX_BD_TO2 0x1000 -#define TX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define TX_BD_L 0x0800 -#define TX_BD_TC 0x0400 -#define TX_BD_DEF 0x0200 /* MCF5272 Only */ -#define TX_BD_ABC 0x0200 -#define TX_BD_HB 0x0100 /* MCF5272 Only */ -#define TX_BD_LC 0x0080 /* MCF5272 Only */ -#define TX_BD_RL 0x0040 /* MCF5272 Only */ -#define TX_BD_UN 0x0002 /* MCF5272 Only */ -#define TX_BD_CSL 0x0001 /* MCF5272 Only */ - -#define RX_BD_E 0x8000 -#define RX_BD_R01 0x4000 -#define RX_BD_W 0x2000 -#define RX_BD_R02 0x1000 -#define RX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define RX_BD_L 0x0800 -#define RX_BD_M 0x0100 -#define RX_BD_BC 0x0080 -#define RX_BD_MC 0x0040 -#define RX_BD_LG 0x0020 -#define RX_BD_NO 0x0010 -#define RX_BD_CR 0x0004 -#define RX_BD_OV 0x0002 -#define RX_BD_TR 0x0001 -#define RX_BD_ERROR (RX_BD_NO | RX_BD_CR | RX_BD_OV | RX_BD_TR) - -/* - * The following defines are provided by the MCF547x/8x - * DMA API. These are shown here to show their correlation - * to the other FEC buffer descriptor status bits - * - * #define MCD_FEC_BUF_READY 0x8000 - * #define MCD_FEC_WRAP 0x2000 - * #define MCD_FEC_INTERRUPT 0x1000 - * #define MCD_FEC_END_FRAME 0x0800 - */ - -/* - * Functions provided in fec_bd.c - */ -int fecbd_init(int, int, int); -void fecbd_flush(int); -void fecbd_dump( void ); -unsigned long fecbd_get_start(int, int); -FECBD* fecbd_rx_alloc(int); -FECBD* fecbd_tx_alloc(int); -FECBD* fecbd_tx_free(int); - -/* - * Error codes - */ -#define ERR_MALLOC (-1) -#define ERR_NBUFALLOC (-2) - -/*******************************************************************/ - -#endif /* _FECBD_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c deleted file mode 100644 index a19797e9f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c +++ /dev/null @@ -1,284 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern unsigned long ulCheckErrors; -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - /* Have any errors been latched? */ - if( ulCheckErrors != 0 ) - { - strcat( uip_appdata, "


The check function has detected an error! Error code = " ); - sprintf( cCountBuf, "%x", ulCheckErrors ); - strcat( uip_appdata, cCountBuf ); - } - else - { - strcat( uip_appdata, "


All tasks are executing with no errors reported.

" ); - } - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - ( void ) arg; - if( uxParTestGetLED( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED", pcStatus ); - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml deleted file mode 100644 index 2f9a9fc65..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | Connections | IO -

-


-

-

Task status

-This page shows dynamically generated task state information. The page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml deleted file mode 100644 index ff8f31104..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | Connections | IO -

-


-Dynamic IO demonstration
- -

-This page demonstrates two way communication. By using the check box this WEB interface can influence the program execution.

-Use the check box and "Update IO button" to set the state of LED1. Refresh the page to display the state of LED1. - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml deleted file mode 100644 index e9a143ee2..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml +++ /dev/null @@ -1,22 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | Connections | IO -

-


-
-

Network connections

-This page displays dynamically generated status information on the TCP/IP connections. -

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c deleted file mode 100644 index 781b73404..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c +++ /dev/null @@ -1,445 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x73, 0x20, 0x64, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, - 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x9, 0x23, - 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, - 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, -0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x3e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x20, 0x49, 0x4f, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3c, 0x2f, 0x62, - 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, - 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x77, 0x61, - 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x42, 0x79, - 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x57, 0x45, 0x42, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, - 0x63, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x70, 0x3e, 0xa, - 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, - 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, - 0x20, 0x4c, 0x45, 0x44, 0x31, 0x2e, 0x20, 0x20, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4c, - 0x45, 0x44, 0x31, 0x2e, 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, - 0x22, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, - 0x69, 0x6f, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x72, 0x6d, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0xa, - 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x61, 0x6c, - 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, - 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, 0x50, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, - 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, - 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, - 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x54, 0x43, - 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, - 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, - 0x61, 0x67, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 6 diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata deleted file mode 100644 index d4bc8bf79..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h deleted file mode 100644 index 13ce031bf..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h +++ /dev/null @@ -1 +0,0 @@ -#pragma pack() diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h deleted file mode 100644 index 5e9b48c63..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h +++ /dev/null @@ -1 +0,0 @@ -#pragma pack(1) diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c deleted file mode 100644 index 54e009093..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" -#include "timer.h" - -/* Demo includes. */ -#include "FEC.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/*-----------------------------------------------------------*/ - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xFECSemaphore; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} - - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR )( void ); - - /* Just to get rid of the compiler warning. */ - ( void ) pvParameters; - - /* Enable/Reset the Ethernet Controller */ - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xFECSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - vInitFEC(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulFECRx(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECTx(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vFECTx(); - } - } - } - else - { - if( ( timer_expired( &periodic_timer ) ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECTx(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xFECSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c; - - /* Just to get rid of the compiler warning - other ports/demos use the parameter. */ - ( void ) xInputLength; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED3=1" ) != NULL ) - { - /* Turn LED 3 on. */ - vParTestSetLED( 3, 1 ); - } - else - { - /* Turn LED 3 off. */ - vParTestSetLED( 3, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h deleted file mode 100644 index 16d99231f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h +++ /dev/null @@ -1,163 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 15 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 2 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - -#define PACK_STRUCT_START -#define PACK_STRUCT_END - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c deleted file mode 100644 index 206373c19..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c +++ /dev/null @@ -1,417 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Web server" - Very basic demonstration of the uIP stack. The WEB server - * simply generates a page that shows the current state of all the tasks within - * the system, including the high water mark of each task stack. The high water - * mark is displayed as the amount of stack that has never been used, so the - * closer the value is to zero the closer the task has come to overflowing its - * stack. The IP address and net mask are set within FreeRTOSConfig.h. Sub - * pages display some TCP/IP status information and permit LED3 to be turned on - * and off using a check box. - * - * Tick hook function that implements a "Check" function - This is executed - * every 5 seconds from the tick hook function. It checks to ensure that all - * the standard demo tasks are still operational and running without error. - * The system status (pass/fail) is then displayed underneith the task table on - * the served WEB pages. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted very - * frequently. A register containing an unexpected value is indicative of an - * error in the context switching mechanism. - * - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "flash.h" -#include "partest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* ComTest constants - there is no free LED for the comtest tasks. */ -#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 19200 ) -#define mainCOM_TEST_LED ( 5 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainWEB_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* WEB server requires enough stack for the string handling functions. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Implements the 'check' function as described at the top of this file. - */ -static void prvCheckFunction( void ); - -/* - * Implement the 'Reg test' functionality as described at the top of this file. - */ -static void vRegTest1Task( void *pvParameters ); -static void vRegTest2Task( void *pvParameters ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Counters used to detect errors within the reg test tasks. */ -static volatile unsigned long ulRegTest1Counter = 0x11111111, ulRegTest2Counter = 0x22222222; - -/* Flag that latches any errors detected in the system. */ -unsigned long ulCheckErrors = 0; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ -extern void vBasicWEBServer( void *pv ); - - /* Setup the hardware ready for this demo. */ - prvSetupHardware(); - - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks. */ - vStartLEDFlashTasks( tskIDLE_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - - /* Start the reg test tasks - defined in this file. */ - xTaskCreate( vRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - for( ;; ) - { - } -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulExecutionCount = 0, ulLastRegTest1Count = 0, ulLastRegTest2Count = 0; -const unsigned long ulExecutionRate = 5000 / portTICK_PERIOD_MS; - - /* Increment the count of how many times the tick hook has been called. */ - ulExecutionCount++; - - /* Is it time to perform the check again? */ - if( ulExecutionCount >= ulExecutionRate ) - { - /* Reset the execution count so this function is called again in 5 - seconds time. */ - ulExecutionCount = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x01UL; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x02UL; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x04UL; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x200UL; - } - - if( ulLastRegTest1Count == ulRegTest1Counter ) - { - ulCheckErrors |= 0x1000UL; - } - - if( ulLastRegTest2Count == ulRegTest2Counter ) - { - ulCheckErrors |= 0x1000UL; - } - - ulLastRegTest1Count = ulRegTest1Counter; - ulLastRegTest2Count = ulRegTest2Counter; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Disable the watchdog, STOP and WAIT modes. */ - SOPT1 = 0; - - /* --- Setup clock to use external 25MHz source. --- */ - - /* Extal and xtal pin ON. */ - PTDPF1_D4 = 0x03; - PTDPF1_D5 = 0x03; - - /* Switch from FEI to FBE (FLL bypassed external) - enable external clock source */ - MCGC2 = MCGC2_ERCLKEN_MASK /* Activate external reference clock */ - | MCGC2_EREFS_MASK /* Because crystal is being used */ - | MCGC2_RANGE_MASK; /* High range */ - - /* Select clock mode and clear IREFs. */ - MCGC1 = (0x02 << 6 ) /* CLKS = 10 -> external reference clock. */ - | (0x04 << 3 ) /* RDIV = 2^4 -> 25MHz/16 = 1.5625 MHz */ - | MCGC1_IRCLKEN_MASK; /* IRCLK to RTC enabled */ - - /* Wait for Reference and Clock status bits to update. */ - while( MCGSC_IREFST | ( MCGSC_CLKST != 0x02 ) ) - { - /* Nothing to do here. */ - } - - /* Switch from FBE to PBE (PLL bypassed internal) mode. */ - MCGC3 = 0x08 /* Set PLL multi 50MHz. */ - | MCGC3_PLLS_MASK; /* Select PLL. */ - - /* Wait for PLL status and lock bits to update. */ - while( !MCGSC_PLLST | !MCGSC_LOCK ) - { - /* Nothing to do here. */ - } - - - /* Now in PBE Mode, finally switch from PBE to PEE (PLL enabled external - mode). */ - MCGC1_CLKS = 0b00; /* PLL clock to system (MCGOUT) */ - - /* Wait for the clock status bits to update. */ - while( MCGSC_CLKST != 0x03 ) - { - /* Nothing to do here. */ - } - - /* Setup the IO for the LED outputs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This will get called if a stack overflow is detected during the context - switch. Set configCHECK_FOR_STACK_OVERFLOWS to 2 to also check for stack - problems within nested interrupts, but only do this for debug purposes as - it will increase the context switch time. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ) - { - } -} -/*-----------------------------------------------------------*/ - -static void vRegTest1Task( void *pvParameters ) -{ - /* Just to remove compiler warnings. */ - ( void ) pvParameters; - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_1_start: \n\t" - " moveq #1, d0 \n\t" - " moveq #2, d1 \n\t" - " moveq #3, d2 \n\t" - " moveq #4, d3 \n\t" - " moveq #5, d4 \n\t" - " moveq #6, d5 \n\t" - " moveq #7, d6 \n\t" - " moveq #8, d7 \n\t" - " move #9, a0 \n\t" - " move #10, a1 \n\t" - " move #11, a2 \n\t" - " move #12, a3 \n\t" - " move #13, a4 \n\t" - " move #15, a6 \n\t" - " \n\t" - " cmpi.l #1, d0 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #2, d1 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #3, d2 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #4, d3 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #5, d4 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #6, d5 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #7, d6 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #8, d7 \n\t" - " bne reg_test_1_error \n\t" - " move a0, d0 \n\t" - " cmpi.l #9, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a1, d0 \n\t" - " cmpi.l #10, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a2, d0 \n\t" - " cmpi.l #11, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a3, d0 \n\t" - " cmpi.l #12, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a4, d0 \n\t" - " cmpi.l #13, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a6, d0 \n\t" - " cmpi.l #15, d0 \n\t" - " bne reg_test_1_error \n\t" - " move ulRegTest1Counter, d0 \n\t" - " addq #1, d0 \n\t" - " move d0, ulRegTest1Counter \n\t" - " bra reg_test_1_start \n\t" - "reg_test_1_error: \n\t" - " bra reg_test_1_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest2Task( void *pvParameters ) -{ - /* Just to remove compiler warnings. */ - ( void ) pvParameters; - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_2_start: \n\t" - " moveq #10, d0 \n\t" - " moveq #20, d1 \n\t" - " moveq #30, d2 \n\t" - " moveq #40, d3 \n\t" - " moveq #50, d4 \n\t" - " moveq #60, d5 \n\t" - " moveq #70, d6 \n\t" - " moveq #80, d7 \n\t" - " move #90, a0 \n\t" - " move #100, a1 \n\t" - " move #110, a2 \n\t" - " move #120, a3 \n\t" - " move #130, a4 \n\t" - " move #150, a6 \n\t" - " \n\t" - " cmpi.l #10, d0 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #20, d1 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #30, d2 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #40, d3 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #50, d4 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #60, d5 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #70, d6 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #80, d7 \n\t" - " bne reg_test_2_error \n\t" - " move a0, d0 \n\t" - " cmpi.l #90, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a1, d0 \n\t" - " cmpi.l #100, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a2, d0 \n\t" - " cmpi.l #110, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a3, d0 \n\t" - " cmpi.l #120, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a4, d0 \n\t" - " cmpi.l #130, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a6, d0 \n\t" - " cmpi.l #150, d0 \n\t" - " bne reg_test_2_error \n\t" - " move ulRegTest1Counter, d0 \n\t" - " addq #1, d0 \n\t" - " move d0, ulRegTest2Counter \n\t" - " bra reg_test_2_start \n\t" - "reg_test_2_error: \n\t" - " bra reg_test_2_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h deleted file mode 100644 index 98586b8ee..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * File: mii.h - * Purpose: - * - * Notes: - */ - -#ifndef _MII_H_ -#define _MII_H_ - -/********************************************************************/ - -/* Timeout for MII communications */ -#define FEC_MII_TIMEOUT 0x10000 - - -/********************************************************************/ -//Fucntion Protoypes - -int FEC_Mii_Write(int, int, int); -int FEC_Mii_Read(int, int, unsigned short*); -void FEC_Mii_Init(void); -void fec_mii_reg_printf(void); - -/********************************************************************/ -//Register Mask and Other -//=============== -/* Definition of allowed values for MDCSEL */ -#define MII_MDCSEL(x) x/5000000 - -#define MII_WRITE 0x01 -#define MII_READ 0x02 - -#define TCMD_START 0x01 /* Transmit buffer frame */ -#define TCMD_PAUSE 0x02 /* Transmit PAUSE frame */ -#define TCMD_ABORT 0x03 /* Abort transmission */ - -/* PHY registers symbolic names */ -/* (located in MII memory map, accessible through MDIO) */ -#define PHY_REG_CR 0x00 /* Control Register */ -#define PHY_REG_SR 0x01 /* Status Register */ -#define PHY_REG_ID1 0x02 /* PHY Identification Register 1 */ -#define PHY_REG_ID2 0x03 /* PHY Identification Register 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement Register */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Negotiation Link Partner Ability Register */ -#define PHY_REG_ER 0x06 /* Auto-Negotiation Expansion Register */ -#define PHY_REG_NPTR 0x07 /* Auto-Negotiation Next Page Transfer Register */ -#define PHY_REG_IR 0x10 /* Interrupt Register */ -#define PHY_REG_PSR 0x11 /* Proprietary Status Register */ -#define PHY_REG_PCR 0x12 /* Proprietary Control Register */ -#define PHY_REG_10BTBC 0x13 /* 10Base-T Bypass Control Register */ -#define PHY_REG_100BXBC 0x14 /* 100Base-X Bypass Control Register */ -#define PHY_REG_ADDR 0x15 /* Test & Trim Control Register */ -#define PHY_REG_DSPRC 0x17 /* DSP Reset Control */ -#define PHY_REG_DSPRR1 0x18 /* 100Base-X DSP Read Registers */ -#define PHY_REG_DSPRR2 0x19 -#define PHY_REG_DSPRR3 0x1A -#define PHY_REG_DSPWR1 0x1B /* 100Base-X DSP Write Registers */ -#define PHY_REG_DSPWR2 0x1C -#define PHY_REG_DSPWR3 0x1D - -/* PHY registers structure */ -/* 0 - Control Register */ -#define PHY_R0_RESET 0x8000 /* Reset */ -#define PHY_R0_LB 0x4000 /* Loop Back */ -#define PHY_R0_DR 0x2000 /* Data Rate (100Mb/s) */ -#define PHY_R0_ANE 0x1000 /* Auto-Negotiation Enable */ -#define PHY_R0_PD 0x0800 /* Power Down */ -#define PHY_R0_ISOLATE 0x0400 /* Isolate (MII is disconnected) */ -#define PHY_R0_RAN 0x0200 /* Restart Auto-Negotiation */ -#define PHY_R0_DPLX 0x0100 /* Duplex (Full duplex) */ -#define PHY_R0_CT 0x0080 /* Collision Test (Enable) */ - -/* 1 - Status Register */ -#define PHY_R1_100T4 0x8000 /* 100BASET4 Supported */ -#define PHY_R1_100F 0x4000 /* 100Mb/s Full Duplex Supported */ -#define PHY_R1_100H 0x2000 /* 100Mb/s Half Duplex Supported */ -#define PHY_R1_10F 0x1000 /* 10Mb/s Full Duplex Supported */ -#define PHY_R1_10H 0x0800 /* 10Mb/s Half Duplex Supported */ -#define PHY_R1_SUP 0x0040 /* MI Preamble Supression (capable of) */ -#define PHY_R1_ANC 0x0020 /* Auto Negotiation Complete */ -#define PHY_R1_RF 0x0010 /* Remote Fault */ -#define PHY_R1_ANA 0x0008 /* Auto-Negotiation Ability (present) */ -#define PHY_R1_LS 0x0004 /* Link Status (Link is Up) */ -#define PHY_R1_JD 0x0002 /* Jabber Detect (detected) */ -#define PHY_R1_EC 0x0001 /* Extended Capability (regs 2 to 31 exists) */ - -/* 2 - PHY Identifier Register 1 */ -/* 3 - PHY Identifier Register 2 */ -/* read only - contains Manufacturer's info etc. - see documentation for the detailed description */ - -/* 4 - Auto Negotiation Advertisement Register */ -#define PHY_R4_NP 0x8000 /* Next Page (capable of sending next pages) */ -#define PHY_R4_RF 0x2000 /* Remote Fault */ -#define PHY_R4_FC 0x0400 /* Flow Control */ -#define PHY_R4_100F 0x0100 /* 100Base-TX Full Duplex Capable */ -#define PHY_R4_100H 0x0080 /* 100Base-TX Half Duplex Capable */ -#define PHY_R4_10F 0x0040 /* 10Base-T Full Duplex Capable */ -#define PHY_R4_10H 0x0020 /* 10Base-T Half Duplex Capable */ -/* bits 4 to 0 are Selector Field (IEEE Std 802.3 = 00001) */ - -/* 5 - Auto Negotiation Link Partner Ability Register (Base Page & Next Page) */ -/* read only - please consult PHY documentation */ -#define PHY_R5_FCTL 0x0400 /* 10Base-T Half Duplex Capable */ - -/* 16 - Interrupt Control Register */ -#define PHY_R16_ACKIE 0x4000 //Acknowledge Bit Received Interrupt Enable -#define PHY_R16_PRIE 0x2000 //Page Received INT Enable -#define PHY_R16_LCIE 0x1000 //Link Changed Enable -#define PHY_R16_ANIE 0x0800 //Auto-Negotiation Changed Enable -#define PHY_R16_PDFIE 0x0400 //Parallel Detect Fault Enable -#define PHY_R16_RFIE 0x0200 //Remote Fault Interrupt Enable -#define PHY_R16_JABIE 0x0100 //Jabber Interrupt Enable - -#define PHY_R16_ACKR 0x0040 //Acknowledge Bit Received Interrupt -#define PHY_R16_PGR 0x0020 //Page Received -#define PHY_R16_LKC 0x0010 //Link Changed -#define PHY_R16_ANC 0x0008 //Auto-Negotiation Changed -#define PHY_R16_PDF 0x0004 //Parallel Detect Fault -#define PHY_R16_RMTF 0x0002 //Remote Fault Interrupt -#define PHY_R16_JABI 0x0001 //Jabber Interrupt - -////Proprietary Status Register -#define PHY_R17_LNK 0x4000 // -#define PHY_R17_DPM 0x2000 //Duplex Mode -#define PHY_R17_SPD 0x1000 //Speed -#define PHY_R17_ANNC 0x0400 //Auto-Negotiation Complete -#define PHY_R17_PRCVD 0x0200 // -#define PHY_R17_ANCM 0x0100 // Auto-Negotiation (A-N) Common Operating Mode -#define PHY_R17_PLR 0x0020 // - -/* Bit definitions and macros for MCF_FEC_MMFR */ -#define FEC_MMFR_DATA(x) (((x)&0x0000FFFF)<<0) -#define FEC_MMFR_TA(x) (((x)&0x00000003)<<16) -#define FEC_MMFR_RA(x) (((x)&0x0000001F)<<18) -#define FEC_MMFR_PA(x) (((x)&0x0000001F)<<23) -#define FEC_MMFR_OP(x) (((x)&0x00000003)<<28) -#define FEC_MMFR_ST(x) (((x)&0x00000003)<<30) -#define FEC_MMFR_ST_01 (0x40000000) -#define FEC_MMFR_OP_READ (0x20000000) -#define FEC_MMFR_OP_WRITE (0x10000000) -#define FEC_MMFR_TA_10 (0x00020000) - -/********************************************************************/ - -#endif /* _MII_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c deleted file mode 100644 index dabac672d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * CF_Startup.c - Default init/startup/termination routines for - * Embedded Metrowerks C++ - * - * Copyright © 1993-1998 Metrowerks, Inc. All Rights Reserved. - * Copyright © 2005 Freescale semiConductor Inc. All Rights Reserved. - * - * - * THEORY OF OPERATION - * - * This version of thestartup code is intended for linker relocated - * executables. The startup code will assign the stack pointer to - * __SP_INIT, assign the address of the data relative base address - * to a5, initialize the .bss/.sbss sections to zero, call any - * static C++ initializers and then call main. Upon returning from - * main it will call C++ destructors and call exit to terminate. - */ - -#ifdef __cplusplus -#pragma cplusplus off -#endif -#pragma PID off -#pragma PIC off - -#include "startcf.h" -#include "RuntimeConfig.h" - - /* imported data */ - -extern unsigned long far _SP_INIT, _SDA_BASE; -extern unsigned long far _START_BSS, _END_BSS; -extern unsigned long far _START_SBSS, _END_SBSS; -extern unsigned long far __DATA_RAM, __DATA_ROM, __DATA_END; - - /* imported routines */ - -extern void __call_static_initializers(void); -extern int main(int, char **); -extern void exit(int); - - /* exported routines */ - -extern void _ExitProcess(void); -extern asm void _startup(void); -extern void __initialize_hardware(void); -extern void __initialize_system(void); - - -/* - * Dummy routine for initializing hardware. For user's custom systems, you - * can create your own routine of the same name that will perform HW - * initialization. The linker will do the right thing to ignore this - * definition and use the version in your file. - */ -#pragma overload void __initialize_hardware(void); -void __initialize_hardware(void) -{ -} - -/* - * Dummy routine for initializing systems. For user's custom systems, - * you can create your own routine of the same name that will perform - * initialization. The linker will do the right thing to ignore this - * definition and use the version in your file. - */ -#pragma overload void __initialize_system(void); -void __initialize_system(void) -{ -} - -/* - * Dummy routine for initializing C++. This routine will get overloaded by the C++ runtime. - */ -#pragma overload void __call_static_initializers(void); -void __call_static_initializers(void) -{ -} - -/* - * Routine to copy a single section from ROM to RAM ... - */ -static __declspec(register_abi) void __copy_rom_section(char* dst, const char* src, unsigned long size) -{ - if (dst != src) - while (size--) - *dst++ = *src++; -} - -/* - * Routine that copies all sections the user marked as ROM into - * their target RAM addresses ... - * - * __S_romp is automatically generated by the linker if it - * is referenced by the program. It is a table of RomInfo - * structures. The final entry in the table has all-zero - * fields. - */ -static void __copy_rom_sections_to_ram(void) -{ - RomInfo *info; - - /* - * Go through the entire table, copying sections from ROM to RAM. - */ - for (info = _S_romp; info->Source != 0L || info->Target != 0L || info->Size != 0; ++info) - __copy_rom_section( (char *)info->Target,(char *)info->Source, info->Size); - -} - -/* - * Exit handler called from the exit routine, if your OS needs - * to do something special for exit handling just replace this - * routines with what the OS needs to do ... - */ -asm void _ExitProcess(void) -{ - illegal - rts -} - -/* - * Routine to clear out blocks of memory should give good - * performance regardless of 68k or ColdFire part. - */ -static __declspec(register_abi) void clear_mem(char *dst, unsigned long n) -{ - unsigned long i; - long *lptr; - - if (n >= 32) - { - /* align start address to a 4 byte boundary */ - i = (- (unsigned long) dst) & 3; - - if (i) - { - n -= i; - do - *dst++ = 0; - while (--i); - } - - /* use an unrolled loop to zero out 32byte blocks */ - i = n >> 5; - if (i) - { - lptr = (long *)dst; - dst += i * 32; - do - { - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - } - while (--i); - } - i = (n & 31) >> 2; - - /* handle any 4 byte blocks left */ - if (i) - { - lptr = (long *)dst; - dst += i * 4; - do - *lptr++ = 0; - while (--i); - } - n &= 3; - } - - /* handle any byte blocks left */ - if (n) - do - *dst++ = 0; - while (--n); -} - -/* - * Startup routine for embedded application ... - */ - -asm void _startup(void) -{ - /* disable interrupts */ - move.w #0x2700,sr - - /* Pre-init SP, in case memory for stack is not valid it should be setup using - MEMORY_INIT before __initialize_hardware is called - */ - lea __SP_AFTER_RESET,a7; - - /* initialize memory */ - MEMORY_INIT - - /* initialize any hardware specific issues */ - jsr __initialize_hardware - - /* setup the stack pointer */ - lea _SP_INIT,a7 - - /* setup A6 dummy stackframe */ - movea.l #0,a6 - link a6,#0 - - /* setup A5 */ - lea _SDA_BASE,a5 - - - /* zero initialize the .bss section */ - - lea _END_BSS, a0 - lea _START_BSS, a1 - suba.l a1, a0 - move.l a0, d0 - - beq __skip_bss__ - - lea _START_BSS, a0 - - /* call clear_mem with base pointer in a0 and size in d0 */ - jsr clear_mem - -__skip_bss__: - - /* zero initialize the .sbss section */ - - lea _END_SBSS, a0 - lea _START_SBSS, a1 - suba.l a1, a0 - move.l a0, d0 - - beq __skip_sbss__ - - lea _START_SBSS, a0 - - /* call clear_mem with base pointer in a0 and size in d0 */ - jsr clear_mem - -__skip_sbss__: - - /* copy all ROM sections to their RAM locations ... */ -#if SUPPORT_ROM_TO_RAM - - /* - * _S_romp is a null terminated array of - * typedef struct RomInfo { - * unsigned long Source; - * unsigned long Target; - * unsigned long Size; - * } RomInfo; - * - * Watch out if you're rebasing using _PICPID_DELTA - */ - - lea _S_romp, a0 - move.l a0, d0 - beq __skip_rom_copy__ - jsr __copy_rom_sections_to_ram - -#else - - /* - * There's a single block to copy from ROM to RAM, perform - * the copy directly without using the __S_romp structure - */ - - lea __DATA_RAM, a0 - lea __DATA_ROM, a1 - - cmpa a0,a1 - beq __skip_rom_copy__ - - move.l #__DATA_END, d0 - sub.l a0, d0 - - jsr __copy_rom_section - -#endif -__skip_rom_copy__: - - /* call C++ static initializers (__sinit__(void)) */ - jsr __call_static_initializers - - jsr __initialize_system - - /* call main(int, char **) */ - pea __argv - clr.l -(sp) /* clearing a long is ok since it's caller cleanup */ - jsr main - addq.l #8, sp - - unlk a6 - - /* now call exit(0) to terminate the application */ - clr.l -(sp) - jsr exit - addq.l #4, sp - - /* should never reach here but just in case */ - illegal - rts - - /* exit will never return */ -__argv: - dc.l 0 -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h deleted file mode 100644 index 51c315d5b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h +++ /dev/null @@ -1,77 +0,0 @@ -/****************************************************************************** - FILE : startcf.h - PURPOSE : startup code for ColdFire - LANGUAGE: C - - - Notes: - 1) Default entry point is _startup. - . disable interrupts - . the SP is set to __SP_AFTER_RESET - . SP must be initialized to valid memory - in case the memory it points to is not valid using MEMORY_INIT macro - 2) __initialize_hardware is called. Here you can initialize memory and some peripherics - at this point global variables are not initialized yet - 3) After __initialize_hardware memory is setup; initialize SP to _SP_INIT and perform - needed initialisations for the language (clear memory, data rom copy). - 4) void __initialize_system(void); is called - to allow additional hardware initialization (UART, GPIOs, etc...) - 5) Jump to main - -*/ -/********************************************************************************/ - -#ifndef STARTCF_H -#define STARTCF_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef STARTCF_INCLUDE -#include STARTCF_INCLUDE -#endif - -#pragma warn_any_ptr_int_conv off -#pragma warn_absolute off - -extern unsigned long far __SP_INIT[]; -extern unsigned long far __SP_AFTER_RESET[]; - -#ifndef MEMORY_INIT -/* If MEMORY_INIT is set then it performs - minimal memory initialization (to preset SP to __SP_AFTER_RESET, etc...) -*/ -#define MEMORY_INIT -#endif - -void _startup(void); - -#ifndef SUPPORT_ROM_TO_RAM - /* - * If SUPPORT_ROM_TO_RAM is set, _S_romp is used to define the copy to be performed. - * If it is not set, there's a single block to copy, performed directly without - * using the __S_romp structure, based on __DATA_RAM, __DATA_ROM and - * __DATA_END symbols. - * - * Set to 0 for more aggressive dead stripping ... - */ -#define SUPPORT_ROM_TO_RAM 1 -#endif - -/* format of the ROM table info entry ... */ -typedef struct RomInfo { - void *Source; - void *Target; - unsigned long Size; -} RomInfo; - -/* imported data */ -extern far RomInfo _S_romp[]; /* linker defined symbol */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c deleted file mode 100644 index 8fd7de6a3..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c +++ /dev/null @@ -1,497 +0,0 @@ -/* FILENAME: stdlib.c - * - * Functions normally found in a standard C lib. - * - * 12/28/2005 - added memcmp and memmove - * - * Notes: These functions support ASCII only!!! - */ - -//#include "m51cn128evb.h" -#include "stdlib.h" - -#define TRUE 1 -#define FALSE 0 -#define NULL 0 - -/****************************************************************/ -int -isspace (int ch) -{ - if ((ch == ' ') || (ch == '\t')) /* \n ??? */ - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -isalnum (int ch) -{ - /* ASCII only */ - if (((ch >= '0') && (ch <= '9')) || - ((ch >= 'A') && (ch <= 'Z')) || - ((ch >= 'a') && (ch <= 'z'))) - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -isdigit (int ch) -{ - /* ASCII only */ - if ((ch >= '0') && (ch <= '9')) - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -isupper (int ch) -{ - /* ASCII only */ - if ((ch >= 'A') && (ch <= 'Z')) - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -strcasecmp (const char *s1, const char *s2) -{ - char c1, c2; - int result = 0; - - while (result == 0) - { - c1 = *s1++; - c2 = *s2++; - if ((c1 >= 'a') && (c1 <= 'z')) - c1 = (char)(c1 - ' '); - if ((c2 >= 'a') && (c2 <= 'z')) - c2 = (char)(c2 - ' '); - if ((result = (c1 - c2)) != 0) - break; - if ((c1 == 0) || (c2 == 0)) - break; - } - return result; -} - - -/****************************************************************/ -int -stricmp (const char *s1, const char *s2) -{ - return (strcasecmp(s1, s2)); -} - -/****************************************************************/ -int -strncasecmp (const char *s1, const char *s2, int n) -{ - char c1, c2; - int k = 0; - int result = 0; - - while ( k++ < n ) - { - c1 = *s1++; - c2 = *s2++; - if ((c1 >= 'a') && (c1 <= 'z')) - c1 = (char)(c1 - ' '); - if ((c2 >= 'a') && (c2 <= 'z')) - c2 = (char)(c2 - ' '); - if ((result = (c1 - c2)) != 0) - break; - if ((c1 == 0) || (c2 == 0)) - break; - } - return result; -} - -/****************************************************************/ -int -strnicmp (const char *s1, const char *s2, int n) -{ - return (strncasecmp(s1, s2, n)); -} - -/****************************************************************/ -unsigned long -strtoul (char *str, char **ptr, int base) -{ - unsigned long rvalue = 0; - int neg = 0; - int c; - - /* Validate parameters */ - if ((str != NULL) && (base >= 0) && (base <= 36)) - { - /* Skip leading white spaces */ - while (isspace(*str)) - { - ++str; - } - - /* Check for notations */ - switch (str[0]) - { - case '0': - if (base == 0) - { - if ((str[1] == 'x') || (str[1] == 'X')) - { - base = 16; - str += 2; - } - else - { - base = 8; - str++; - } - } - break; - - case '-': - neg = 1; - str++; - break; - - case '+': - str++; - break; - - default: - break; - } - - if (base == 0) - base = 10; - - /* Valid "digits" are 0..9, A..Z, a..z */ - while (isalnum(c = *str)) - { - /* Convert char to num in 0..36 */ - if ((c -= ('a' - 10)) < 10) /* 'a'..'z' */ - { - if ((c += ('a' - 'A')) < 10) /* 'A'..'Z' */ - { - c += ('A' - '0' - 10); /* '0'..'9' */ - } - } - - /* check c against base */ - if (c >= base) - { - break; - } - - if (neg) - { - rvalue = (rvalue * base) - c; - } - else - { - rvalue = (rvalue * base) + c; - } - - ++str; - } - } - - /* Upon exit, 'str' points to the character at which valid info */ - /* STOPS. No chars including and beyond 'str' are used. */ - - if (ptr != NULL) - *ptr = str; - - return rvalue; - } - -/****************************************************************/ -int -atoi (const char *str) -{ - char *s = (char *)str; - - return ((int)strtoul(s, NULL, 10)); -} - -/****************************************************************/ -int -strlen (const char *str) -{ - char *s = (char *)str; - int len = 0; - - if (s == NULL) - return 0; - - while (*s++ != '\0') - ++len; - - return len; -} - -/****************************************************************/ -char * -strcat (char *dest, const char *src) -{ - char *dp; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL)) - { - dp = &dest[strlen(dest)]; - - while (*sp != '\0') - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -char * -strncat (char *dest, const char *src, int n) -{ - char *dp; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - dp = &dest[strlen(dest)]; - - while ((*sp != '\0') && (n-- > 0)) - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -char * -strcpy (char *dest, const char *src) -{ - char *dp = (char *)dest; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL)) - { - while (*sp != '\0') - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -char * -strncpy (char *dest, const char *src, int n) -{ - char *dp = (char *)dest; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - while ((*sp != '\0') && (n-- > 0)) - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -int -strcmp (const char *s1, const char *s2) -{ - /* No checks for NULL */ - char *s1p = (char *)s1; - char *s2p = (char *)s2; - - while (*s2p != '\0') - { - if (*s1p != *s2p) - break; - - ++s1p; - ++s2p; - } - return (*s1p - *s2p); -} - -/****************************************************************/ -int -strncmp (const char *s1, const char *s2, int n) -{ - /* No checks for NULL */ - char *s1p = (char *)s1; - char *s2p = (char *)s2; - - if (n <= 0) - return 0; - - while (*s2p != '\0') - { - if (*s1p != *s2p) - break; - - if (--n == 0) - break; - - ++s1p; - ++s2p; - } - return (*s1p - *s2p); -} - -/****************************************************************/ -char * -strstr(const char *s1, const char *s2) -{ - char *sp = (char *)s1; - int len1 = strlen(s1); - int len2 = strlen(s2); - - while (len1 >= len2) - { - if (strncmp(sp, s2, len2) == 0) - { - return (sp); - } - ++sp; - --len1; - } - - return (NULL); -} - -/****************************************************************/ -char * -strchr(const char *str, int c) -{ - char *sp = (char *)str; - char ch = (char)(c & 0xff); - - while (*sp != '\0') - { - if (*sp == ch) - { - return (sp); - } - ++sp; - } - - return (NULL); -} - -/****************************************************************/ -void * -memcpy (void *dest, const void *src, unsigned n) -{ - unsigned char *dbp = (unsigned char *)dest; - unsigned char *sbp = (unsigned char *)src; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - while (n--) - *dbp++ = *sbp++; - } - return dest; -} - -/****************************************************************/ -void * -memset (void *s, int c, unsigned n) -{ - /* Not optimized, but very portable */ - unsigned char *sp = (unsigned char *)s; - - if ((s != NULL) && (n > 0)) - { - while (n--) - { - *sp++ = (unsigned char)c; - } - } - return s; -} - -/****************************************************************/ -int -memcmp (const void *s1, const void *s2, unsigned n) -{ - unsigned char *s1p, *s2p; - - if (s1 && s2 && (n > 0)) - { - s1p = (unsigned char *)s1; - s2p = (unsigned char *)s2; - - while ((--n >= 0) && (*s1p == *s2p)) - { - if (*s1p != *s2p) - return (*s1p - *s2p); - ++s1p; - ++s2p; - } - } - - return (0); -} - -/****************************************************************/ -void * -memmove (void *dest, const void *src, unsigned n) -{ - unsigned char *dbp = (unsigned char *)dest; - unsigned char *sbp = (unsigned char *)src; - unsigned char *dend = dbp + n; - unsigned char *send = sbp + n; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - /* see if a memcpy would overwrite source buffer */ - if ((sbp < dbp) && (dbp < send)) - { - while (n--) - *(--dend) = *(--send); - } - else - { - while (n--) - *dbp++ = *sbp++; - } - } - - return dest; -} - -/****************************************************************/ - -char * -strrchr(const char *s, int c) -{ - const char *last = NULL; - if (c == '\0') - return strchr(s, c); - while ((s = strchr(s, c)) != NULL) { - last = s; - s++; - } - return (char *) last; -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h deleted file mode 100644 index 7a9865d94..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * File: stdlib.h - * Purpose: Function prototypes for standard library functions - * - * Notes: - */ - -#ifndef _STDLIB_H -#define _STDLIB_H - -/******************************************************************** - * Standard library functions - ********************************************************************/ - -int -isspace (int); - -int -isalnum (int); - -int -isdigit (int); - -int -isupper (int); - -int -strcasecmp (const char *, const char *); - -int -strncasecmp (const char *, const char *, int); - -unsigned long -strtoul (char *, char **, int); - -int -strlen (const char *); - -char * -strcat (char *, const char *); - -char * -strncat (char *, const char *, int); - -char * -strcpy (char *, const char *); - -char * -strncpy (char *, const char *, int); - -int -strcmp (const char *, const char *); - -int -strncmp (const char *, const char *, int); - -void * -memcpy (void *, const void *, unsigned); - -void * -memset (void *, int, unsigned); - -void -free (void *); - -void * -malloc (unsigned); - -#define RAND_MAX 32767 - -int -rand (void); - -void -srand (int); - -/********************************************************************/ - -#endif diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd deleted file mode 100644 index eb00f3791..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd +++ /dev/null @@ -1 +0,0 @@ -// After load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd deleted file mode 100644 index 691c5eede..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd +++ /dev/null @@ -1 +0,0 @@ -// Before load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd deleted file mode 100644 index f0fc87448..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd +++ /dev/null @@ -1 +0,0 @@ -// After reset the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd deleted file mode 100644 index 5f2b5a568..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd +++ /dev/null @@ -1 +0,0 @@ -// At startup the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd deleted file mode 100644 index eb00f3791..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd +++ /dev/null @@ -1 +0,0 @@ -// After load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd deleted file mode 100644 index 691c5eede..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd +++ /dev/null @@ -1 +0,0 @@ -// Before load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd deleted file mode 100644 index f0fc87448..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd +++ /dev/null @@ -1 +0,0 @@ -// After reset the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd deleted file mode 100644 index 5f2b5a568..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd +++ /dev/null @@ -1 +0,0 @@ -// At startup the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf deleted file mode 100644 index d6a3d9418..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf +++ /dev/null @@ -1,114 +0,0 @@ -# Sample Linker Command File for CodeWarrior for ColdFire MCF51CN128 - -# Memory ranges - -MEMORY { - code (RX) : ORIGIN = 0x00000410, LENGTH = 0x0001FBF0 - userram (RWX) : ORIGIN = 0x00800000, LENGTH = 0x00006000 -} - -SECTIONS { - -# Heap and Stack sizes definition - ___heap_size = 0x04; - ___stack_size = 0x0200; - -# MCF51CN128 Derivative Memory map definitions from linker command files: -# ___RAM_ADDRESS, ___RAM_SIZE, ___FLASH_ADDRESS, ___FLASH_SIZE linker -# symbols must be defined in the linker command file. - -# 24 Kbytes Internal SRAM - ___RAM_ADDRESS = 0x00800000; - ___RAM_SIZE = 0x00006000; - -# 128 KByte Internal Flash Memory - ___FLASH_ADDRESS = 0x00000000; - ___FLASH_SIZE = 0x00020000; - - .userram : {} > userram - .code : {} > code - - .text : - { - *(.text) - . = ALIGN (0x4); - *(.rodata) - . = ALIGN (0x4); - ___ROM_AT = .; - ___DATA_ROM = .; - } >> code - - .data : AT(___ROM_AT) - { - ___DATA_RAM = .; - . = ALIGN(0x4); - *(.exception) - . = ALIGN(0x4); - __exception_table_start__ = .; - EXCEPTION - __exception_table_end__ = .; - - ___sinit__ = .; - STATICINIT - __START_DATA = .; - - *(.data) - . = ALIGN (0x4); - __END_DATA = .; - - __START_SDATA = .; - *(.sdata) - . = ALIGN (0x4); - __END_SDATA = .; - - ___DATA_END = .; - __SDA_BASE = .; - . = ALIGN (0x4); - } >> userram - - .bss : - { - ___BSS_START = .; - __START_SBSS = .; - *(.sbss) - . = ALIGN (0x4); - *(SCOMMON) - __END_SBSS = .; - - __START_BSS = .; - *(.bss) - . = ALIGN (0x4); - *(COMMON) - __END_BSS = .; - ___BSS_END = .; - - . = ALIGN(0x4); - } >> userram - - .custom : - { - ___HEAP_START = .; - ___heap_addr = ___HEAP_START; - ___HEAP_END = ___HEAP_START + ___heap_size; - ___SP_END = ___HEAP_END; - ___SP_INIT = ___SP_END + ___stack_size; - - . = ALIGN (0x4); - } >> userram - - __SP_INIT = ___SP_INIT; - - ___SP_AFTER_RESET = __SP_INIT; - - _romp_at = ___ROM_AT + SIZEOF(.data); - .romp : AT(_romp_at) - { - __S_romp = _romp_at; - WRITEW(___ROM_AT); - WRITEW(ADDR(.data)); - WRITEW(SIZEOF(.data)); - WRITEW(0); - WRITEW(0); - WRITEW(0); - } -} diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log deleted file mode 100644 index 85c94968e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log +++ /dev/null @@ -1,41 +0,0 @@ -!SESSION 2008-11-20 09:48:45.515 ----------------------------------------------- -eclipse.buildId=I20080617-2000 -java.version=1.6.0_03 -java.vendor=Sun Microsystems Inc. -BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB -Command-line arguments: -os win32 -ws win32 -arch x86 - -!ENTRY org.eclipse.cdt.core 1 0 2008-11-20 09:54:33.890 -!MESSAGE Indexed 'RTOSDemo' (10 sources, 34 headers) in 1.83 sec: 1,553 declarations; 1,814 references; 42 unresolved inclusions; 54 syntax errors; 368 unresolved names (9.85%) -!SESSION 2008-11-20 10:20:54.484 ----------------------------------------------- -eclipse.buildId=I20080617-2000 -java.version=1.6.0_03 -java.vendor=Sun Microsystems Inc. -BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB -Command-line arguments: -os win32 -ws win32 -arch x86 - -!ENTRY org.eclipse.cdt.core 1 0 2008-11-20 10:21:12.484 -!MESSAGE Indexed 'RTOSDemo' (100 sources, 129 headers) in 5.02 sec: 6,569 declarations; 21,643 references; 52 unresolved inclusions; 259 syntax errors; 522 unresolved names (1.82%) - -!ENTRY org.eclipse.cdt.debug.gdbremote.core 4 104 2008-11-20 10:29:11.531 -!MESSAGE Program file does not exist -!STACK 0 -java.io.FileNotFoundException: C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\FREERTOS_ROOT\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\bin\RTOSDemo.elf not found - at org.eclipse.cdt.launch.AbstractCLaunchDelegate.verifyProgramPath(AbstractCLaunchDelegate.java:383) - at org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate.launch(GDBJtagLaunchConfigurationDelegate.java:52) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614) - at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:880) - at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1083) - at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) -!SUBENTRY 1 org.eclipse.cdt.debug.gdbremote.core 4 104 2008-11-20 10:29:11.531 -!MESSAGE C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\FREERTOS_ROOT\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\bin\RTOSDemo.elf not found -!STACK 0 -java.io.FileNotFoundException: C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\FREERTOS_ROOT\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\bin\RTOSDemo.elf not found - at org.eclipse.cdt.launch.AbstractCLaunchDelegate.verifyProgramPath(AbstractCLaunchDelegate.java:383) - at org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate.launch(GDBJtagLaunchConfigurationDelegate.java:52) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614) - at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:880) - at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1083) - at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.mylyn/repositories.xml.zip b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.mylyn/repositories.xml.zip deleted file mode 100644 index c22dd7f0bc288e50ecfa9dd9f2c3ac605eb8ed0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmWIWW@Zs#-~d7szYs93DES+fR&uqxk`rqrxT$vo6 z>91LWmnwzaIDB+VU~OTF_0r?(mou$gaEKx4^MmhpzxUP^&N%Tl(4?5N;Hmz>L`lo1 zn>asg*td5_+tCZ_7r%SAaZ_6I$rX85*O*n?ynK+8UbZ_Xh~bf;&~`2SEs@A@cq}O z?>_3S+P7iJ{;ch3re?SQoqqDTalVX(-9y7;Ppf \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log deleted file mode 100644 index e69de29bb..000000000 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc deleted file mode 100644 index 80bd90907..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml deleted file mode 100644 index 9e62c4bb5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - -
-
-
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml deleted file mode 100644 index 1ef2b05b5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index deleted file mode 100644 index e2af2412d52e0c141cc3aa20c9c7c79948714c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmZ{fu};G<6h&W>B~lk8!hjg~1ItNB+|I2SsYLk!%YHadG`8iqrTu%7R%M7_c+bwL1lJW8s^7oJJZiBsp2j+wG7~+|EX^?eDri+j@wV1L1#VqhmI(CpPo9fE%X8bgE zIscoTAuF3Yg~A2HQ0>VN$dryuxqxslRiq=Xo&6+p2r`nhu;8p(t^}|7>N1)@?zQXR zWRLK4`+}8KB}&o0w4!WUHU%bu1d0J;By0ZPOyO}Z)61{XYBGA(G$?n(fO@B-wHU5L Nue8UD!Q$6oP(P1RV*UUC diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version deleted file mode 100644 index 25cb955ba..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index deleted file mode 100644 index 81a5570b8a716f80be5d300850084b549e3e1561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmYj~F%H5o5CqqurT{_1BTRe+7BxK$h~AhJIKp;xzWkqvD)r9H8UP07h*gI}mAB>i zO=DvltFRSrb&|*pn^=o-(MyOQzG+Z~ab}i*{c^ge%uPccv35k>(aE2w_kD-mvOc`@ U|A6fbD?eCTs^vQ6Ckr~FA9p+~ga7~l diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version deleted file mode 100644 index 6b2aaa764..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree deleted file mode 100644 index 1cd77d398d9ae8de16dc6d5787fafc79d8fa70fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78671 zcmbuId3==B_5Wv{Z6Fx-RmG)Nty)rc!4(LG1dT?5`w~MkKwz?%41#vks=k@~yObI-lcInSK?%=r4{598?jbMC$8o^$Rp z&rBTKvJ$~h$IkM%{^ybKZ&spvbL*s%bX}&Qr7c}jSD!7ZYi>=`|2jqe*F?ffv>P}6 zg6h%f#^%JpsIsxPsdiGje!{edOntgFFjO)r-PBk+H4XnQXf?DjtPl&;b+t`R>DJQb zril%cMoHVgouum|6SkG~|22uaCH{lcP5igMTc*|Z3mQx$4vF8T@b9Hv675UsT3VZ@ zr0cQ?K_`Wi0{ToKz7fA|_;)9fXjj6)%JlyP*dE{_@vkLq>1?*4X;PbS+V_88`btT3 z>~eQu%r zpNa`yB~ytGwV6!6>AnM6e8Zi=@YuaK0^dRYmV6?SN;hR&8`6Z`_kCawqpUZvxwWy@ z_o^~mw(?j&iz(XP??Ar^wQXtKY269pC^ylktTmnXBTt4w$z*@DN*%WKD75u&+SXA@ zT{FI+ZfZ?+IyeZ7YcTOSHE~SikbwgS4M|@&pOq%om*s<4v z>NBePHj`Mf5XPMR2Q?BiiRGtPLc{;0nnEVAyzW^L!(;}pguCo)V++m^oqSzzBX)w# zs4)LN!gL~$6B=bYh#(SG`*}j+@6>LQzc$p2uWg&^SB#{rfSbN-H1AaDOsbQdql9oly4SxVpq=I&< zYo6AWZA&*A8q4$pU8Hz+YfaZRP7`&}pqu(4=)RP{gMW(1i)NMxrYnGq6hbbuL@=pT zAvLc@{$Nt$_=@(Y;9xqKtBVaL*im_3=j!5uV$y5i4S!dreuUq;jLL|JH-&Bk(pM=7Ybe1y5`2LIhPw?np0wHtAG6F@})^%NvB+`g63K$W@_6e8?r<<=TTXgy4K0f z&8A$Q@_*16cE9h)`gCp9)YQ~LAZkaO>RNw&Q*C2IouP+Qc7sf9%+37Q@V)(9~hNp`d?-)~8f4)pZr6FeW~x zTnf#REqHVrf{Gg1WbxY&vC=_tN=5da=3<$G{a4T%;aR>|s?wSwo1sLaC|r5PT*3(f zEz}TS%DBXX1()EbN?&-d$ln-;IzaFf0e>|Yhl+^t%x?gPf~c&wQ-zSguLBIf6+dQB8I8wAMQRZb2PE4!$r^q84;dHqi`@U+D;g6PBw-72+XrbkdPfo+1w+@!MkC_v_?^sJLhc*Y1owo8sU+g0vnQ} zBX*f905Le_wR14-itR#c^E7eMW!SnOfoeKmYd$L+ zycdqmRvi_I<*~NDF!@vu!Hqf*E#E-UHP^6;7phcD@{f8jE-ib40DFXF`NhX_zg_O{RM{ z0yqYP#`F9^%{O44PbSU6VLea?zj4U~!EQ~ZX8B~gS9v0X>13j3b+)!{YGtkPUmJS| zDQ3P+O00EQ%I2Z!QX?hVjZWzBCQOSf237G){TUDaS&wyzZ#9$+R2rr}cMU6I<0NSE zajKK4&ui|!7c>wq!7DM9-CCMkv$Ye%MIW!b7izS%iMG{E+|x{{7kB3d-Q7!}z0Fhy zrG{_pp65XH1Qm4=3tP+NR#Q`NgK7&^b@B_1L37Vlpn(lh@JhHNr_QJtYR0yWbw<%! zF&!J5Pg0VP&AXM|ZImtwV-wdIon7S=FDBW=Dk`WVEM$`jK3iheSc-eW+Cxz&q}I6< zEehj~SXN~Zj(>qj%u7)iZUmnW9jT<&Q*uG0J^4AX=To+w3NF_01r+vVOc7Mst%{&> zA;zd)>rba>JLL=k!+Qgp4j%YWLe?1=?wq><=$*iY7&NZ{2fhTuEtuz50B!qP$}%g! zOlaO}r6|7wXd23Spb?|b-A-vT8?no7r}W^aVLF+}w_Dlxcgb7Zu`ahD=-$8{HlUNH zf}rUg)N0HqpQ0pR5VYN=DQ%A`EyXc3e}Me|7Tik*uf!XYkvB6p9b9lbfRIoUG{=zU zcS@b)`54mdF3K`7r2G2}Mfn(-f2^b|*rBRU zEGXLkJ*K&c*JR`pg^vYIze4S{8!&WKLw589)i@v)93dfV28JCbAg%{+9|mIr0(kpX z%o_qiv9D2<3y5nZV!uvNLqI6{4N5Zsp~%R6jKRf_Mt0;zCMO`2RdO3+3<#jzQw!~_ z3!AZk7sb-hTV;1RwVNu-v`ro`Y$%Bb*x6hAF>5pN0H957j$+~gc$b`C4Dq1Y$g;@9 z!-BE0pDtMxg(tYT4G*elchAJ5<5F(HDPZ?3O7b3FpgMdurmaLLe;qfRY*o*_d069b zz+1D8{(;A^Q(bVm0grnNDQWNw_|aQLX-|4agr2%8 zKBxv}M{gHHhp_nD)Us7YSG+aye_L>r2wsWxIcLS251{=Hwr37##k(Uh&j++-;Wk5d zf;~6Sze}2PBiBlNKx-Nf1j;Z|;FMi*tz;}2;0(764=z5SRbRZtSd%}X=R;_COQ2yzZJ#x>C1gVd_oIo?W2^3G9C_a2JS+Bqav!6){6lnzeu(kCqbKE*qfHrJ;w zscmg-Xl@m}KI+aqBsr@Z^Gtlt+5#Z#AcI#i?;Ol}82AI&FkiH_?H4G^#P`g*!R(6^ z<>PzijX?jF(z#Qp$=^|upF&N)MCoY2Y3^mrnF3DH_Fpm0?F=;e0VU&mYkx>-5fhpE zvWC`l&BX(8Ow59Pl63>-nUjj1V{)!C*F44Bf5V0iF#+*oe?(a(CT8`Oi2X4|`IwkB z6=&5zo}uSua>G*y6Ojys{OR=Va9GD45efKgd%voQS$p3Hu2Xm$zP_A*|TpMVFBN^9#%iSxm zUDFXp+r5&~Ob#e7TCY>o6xEu4gYxzmdfU1iX4@h~gSoNavsN0ieuNF0V|vdL;QxSm zKBhJMCS{qJ-UJ(D>n)1%OV-A(p%V}m!7Fy+G#NSB^D(XIw`nh;VWzovFlP!gMceN&ziq6ewO@2d3-qmVw4uTVT z_DDOoOW3^%iNqj-eL_X`IK${4gU8Y+wiuNt}dNL~0N#uD#Q_nHv) zG*csY9Vrnjay!x9U-<(^;&orsAr;>Lrw*C+#Kf!%xo-W%u55V^^XwIRncSz2$Fwf_ZW^KwcIkX9K-ofE3=8&K9 zO{YL7TxvLX#x?0tlAm$qH7AAXRHBz(seB(_I&jEP!$rvEbEL+t!`eimPeXHUcKCp{ z+Qw67nAKbRfx4cmkH|Dk2EBQhnSBYx7RfOrn}R z)noH|kWHqtywyYdsDTQj)kDvDJItA?$0kTFcM7Jt>Y>T0l;mSc^}@|ix+9GxTo<;U zAyF%Gnb0{JLPP|;u_E^hU2`Lc$j*bdA{Pv~GV)l+R@GYMI)JH(Td#l?KB5lbYvNYb zpN}bRs);I9EpjE0NE{Z_#Ph032a0Wl7_h!I+ddb%^Hbaav#Z#?89;J8H&?{%D<$u= z$AoXMbPh5$$|3d|Yw%<+M(8)ad+gYtTP=_RqVXkfhtD74k!9dV<(H#$6AAEK6m1BYhVv z4DK{4%*}Fjd~v!{l8;F}_8ypy&vHG8>#!zomTTE`D$76iy;9&pwg<07eUE1OE?CDM zh*rs&vRu#L^|U*TM~;^L&D9wl`&&1b-6F{Z1c> z@(KRriIQ>-r*!UAYw`$6@>8w6=D-;+(1@o7Lv*sPynnu+Wk-<5zxuD8sQtqeOyVZ(f6E8EV|lw~4& zJDkRyV<^f;w%V~e$5J{svNib~O7fAd2X`E%<0D)3+`S2F3b;St4h703Qv{usI7e~yLX^M11Ou-meypOLJ48`b13%328f^*}CMl^bMF z!O_Dxi8jFpnRe^RnEp1ShdqnxQ0(YoV%$4$V+ACx9{rtE7~PmXy+Zzf=M>DDmLzTU zmzd^!s_eROg%$9^`v#vvFWg^KyB$zO;dMzxpcT2?XA)hb|BIORV-6l2U`>A$;SJAt z?1A&8MJg1N>U-{%25n?F?i0g%pjJEIM*>5tE89*#$})@C9ym!kB^2dTU5(E90jA^6 zAbXCJta}&Mihd4z&jg??%?3w)(`v55+Q!M~=T`Z!>Vbm>4i~od73DVAep|O< z+srO?+cxNggF*9JzU@)TIWUL8E58#tU#7U}pk@bS+w5At?E)}6gra03n5cddZU<}-NR#HMR=jf> z?J^hDnmwJe%(At0pG2H9D9T6mR+uv9OiJfQwIHDxv19U5=!!}(ewk9W}fe0^)i*ym#gmiK6oGGpq?JmbO z7uTAELr1`i+2LKI=?AG@Ca$+1ArU+B=AbFAH6M9Nq+v6 z*PKdB$A`A+xw{f;3JC4punl$}qQYos>mi(vIa6rwo-Qf(VN7$Ot;toCG`L3DT}^2w zw0A@F+Z`!t3T@4IqI^+hgZP-}s7&n*EzCmd$o zN3aGRP}|sBI4y%SiyA`S1M1F^vK@B~Z7-S;dgK>j&Xf^~b|1quml2v=OG!Q>G`)_} zOh%}I*TXuIVB@J_-=qD+C7>;0EGIl&5LAwVPFtupMQ-JoQsIEoivTVn1f$l|V zQ!P@tXZNPOS3Q2*sY6H++6_BM>rRX^>-g?Vp$~m9Xf8sEcdo)bUxYM!HD#G1^z26x zacU^a7a{com2(ZHbJJ9lwUp#TLwU`afa&;k{MoN0>%ygD@Jb|Tp2vLEfZgr5sX}(P zCqa8Vs4$vrdgM?-Wxq_x_Us?P>QmHeu17WbG$nbDYI-N7ncUeuTq5@26y+c1+YN58 z;iwmAgxgKIqo&qAl3KSbMvfE7t}mI_LtVGX_J{eZ%=HgQL)I^`L384)zejR*U(EA~ zquHY<%OuX?VPN)Xit>r0>0>CJJI$IrmXiE5FNW%2!*)E-2(LziQd>O^TQvoxqMdq7 zb1Q%*)08yy7JTMRq%`-?*OD70WBm%VOd(xzw*>6(V$d89%CIvD^L#ug+YTJf1BGxe z6Aw!UN^?#FHOt3?rl(LkHy$)Om6E)N_24p?jxVH3MoHG)g*9l`!XJpV>=`P{yK7l8 z4%&N`3ZpTrN8X4zQ_L#b-HmB3W;MBok_L~$yt;cS%@oolwGy$9r>Ne9kOPsXPoT7^ zkS@6vte;4E{>ieXw@AwRHKv*LSvm{Meh-7@^ijOign2%FG}}yBCViH|R?KOkD4#x> z2A>2Pk(asYqe<8*E0UjV>{f4aHKZneKin>={0n(Kft4dl{kI ze2z+^DWpfA#hfXH6zx8b={T>t2PkRqD$K3>0;QQ0S_&PtVV4mI#KfACLQR-`GBsUH ze25Pf%Io$iRKY*SwtR-9th+Gn<=!bQ|AhqX?_s{kl;yB9b$=IW z%>VLw!-s*FLqxbQQBCLRtqobz*YWF7y-Y>9b!8cxmz?V<$!CBHBj*N8e>+G29!ulz zA+)3ak81KR&DzngP+_MyN2|$sm1+ue^lMZUEnwQsKg67=fa&hPj%ludDZB0)l;o#R z({NY|G@>dMlRUvyW_g9QYxkq}nUc5sG(bxzYASguY3(0S-jj1gdI5QD_orwIa)7X^ z#{(#P*vM>SIum@5d+1;x&G?&J;2PN>aZP>QZ#e4nqcYhpE_(ibvU~r(89km z!niLeTYCYt_yHA0mjazD!L$r3}2#xDrFC*s_WN@yqhf!HE$wZ=1LxL;HKquCqE;$KERL#=94J)fs(eDt*^&cFS?bB)Zs4UkR zu&cGtpfYBuU%L=Gb|yuGr5=)t3`Fr~F+B6+zFJ)DvniiqzIR|T>w2oz#|ndN)&bTA7`kwW?9Thl+Moyc9jHF+B)`Se#_ zbKtlqd*LJsSWFf}S6tXPsR6`QW3Bl+?Ofh!ym+=0xSue>xN5A0pHgA88f&-RjyY2` zR^*{4NhkKL_N6aLjr%Y8TWZjyHNT_NGAL3?79>>K{~LIN2eI3mr4Wzq=d``N zN9v`pcXYp?!rV%vod)ZW>Kh;WDkPk{u-yWk_8+V%+-d)%viwd{WB-y7##JHhw6CZz zT7|UB$QjgBg|t;TUsCsW)=X@gsXz*}$70Z2 zffVnMeF$HHG)u}LyIoi}LpJY_{`!t?ZEoo|p|*`YeW|V}oLRWjTx4kSK1%YDp*sxA zai9^Et$^*qI@n>j|Dz4XZ5OoW8>-2>T~I;~>HPI4Z*|i`h-*2(-1ncg+vcDajGvBI zv}a+OosPpL;lUVnp{9hK05T^;M5gp3QN}Yb+Q4^r47X;tJdJ8Q#luR)1rkb+F0IX)xvgE7+qDh z+ZJKYw5lrFYmaFzS=BUqMU*s5$6!f$khH-o;U9Cdu5XnJyNcRpl2xM@Qq+{JDmLtK z49_I1<{`2JmFT>mti$Qby8gS;q(xQ~E?L1L_ITU}^UA6w##xMcer46{63Q~ky6%06 zI1f;iPu6vtfnG}K++@|{GD;ev1H9%e$8=#UD-6Ip3`^tRQCkPwey^Bn@~^B)*pU&& zZGqQADe*c{VKiB_+g4!Cl&p&OI%Aqk)^)E)!h=0%@Jd85KONd`S86vVSz&zkMO48h zYj=s*7gN-jtPmUaB@E9ctKu)EymM~4A%lO~jljq7?0{#x&bo@PhLQCHaWbb|0m*S5;9uU|1OrhmEj_u*hzn3x_q*mOTmE zj0p!Y?0_y%iJ4%-0T|~oY@0p*Z@fk#4pd@gmJbIN?9MuBI5!+Lxt@}|gO%5u4VaF9 zo^WG}WW8=!Q@~kV3t_nonJ8fK{~D6VqJ4YO)t4 z4gS1FQeJOLGnmVHpoqjdt)kd&G-zN7SWOevm}-n}qnYw45gUUBR$hv0#^a|-#v->| zOwD+Fj0A01H-c9&cX*0-o{V&Y`O+=TZlf$yGd6rE5obF^`I@0d=j_0ALC5zEUrLGh z9W0GMzH7~KRMX8bQ8oT$8~@4N$Kj^TgA-z)78#N^wY2bf+F~)l7YLWUQ!1i>C^0i3QGbo*# ztD3x?l6-V1uh}$toUU!D8DRL_!mJM@?d-xT@yJ`C8fa4O1=Ta0YLH3w8mOM7 zs%W<9asLo=rfgHRvm4V~wrO$?C3$~p8paxEL_)Mv{>15^oNq0prX?)gh~ZiPk&v~B zgN64ntSv8&z*V)awe<~?8gb^_4?9TfG7K{}hVx#AE-b;IIdc?m{|NJZ=4kfElw~qU z_1FFhMfuE8*PQlGDV>`+n!J&c{7h^5CQ3)+Qgd+68PLXel@;ymqgKtmb@o#-zPHYE zlunILw>H(Ba}JJ&d9aXL4`7!02D5pP$o9<`jEM(0mpjj6-VhIpJwRD59>4?63l!z! zK}C=ABBgUZtVuYR1-!^*-ou*y9km;c2hF{NIa8fdwAT;QT%Ecfyx_q(zOdeUKcIFy zW@=j}rE8`&Wz%ihbUg_RwJo>>OPB>##g7B!LiQvkEFj*z{@Ab~EEGF{vRqiGJ@`P1 z8p7grNqK`P&4h&_2UC&{i+SKRZwRL2Z`bZuJ%1Q$@;(ALubsrbRaBODL#u_6tJ|E= zRU;pY8!(2h8b#!qm+`0~BUik;9iIe*5E@jWEoTgbAC@z{z*19RnGrW+O#{> z{411q+Zt;#qv7&LQ1EK1`_FJKb)KN542t^xH2NJ@8!>QsO|D9XB z=p5)2{I7&{x%@3bW-oF8ZVs%a7&K?j0chF&Ip+DyQMT>dD9dEdbC*fP{sl$(%z5r) zpl_#i?mTPq4odQwqv<;-9gWK8#zOnQ#GENA747^1)7)M}lW$Ve&|Bz*^A@GUKc+Z< z{xQV^TP0{M!vf~o@xXow*uTPHOi%#t{1Nkppiu0eD9Z%J0oal`Z&Q>HiUY6;JMUmR z{$l^YS(5eOckoIicJMu8BdaS*_^-z~PzkcLaZ?3c9ctkSDnwrk;(y4u?YbuQ7_!3Kna44@if5Ud;zw7(?rzPuE zU`+v)N(;wQVKi^_5I(}3DQ^_*or`HMZ!~!xB@M2D3G$#Y2O8l>CU2gHTM2t6HEhZR z<#l@&<-Kvu(=+MoakS39KqA%^7-hnG_VWO)z@Ry-6>r1#FHni$anI3cb~d)nK1XvO zED-h_it=Ht>A9574Qox_Pf336G(C^f(MZ$We9W05P0`NBnC2o)lYggVd~cmkDDC)v z1D*r}>eS4#ePOvrpC=aMk3BXD9Q)J>@Gn6lhV1t zpviwxl6UWH@S5{)OeYiF{4c<1OdB6bo!wvZ-uYOU`?!Pd&F7di1(BjXaATkmd1oG_ zSB34GD!I0MA*GALQR1alImKQW!TGw>W`i~I_UN;VuW#@Q_wBKy;dL>@gFVCvz5!f#tj&= z3TW>VOtVv=9Caxr4O5})!d-&uEwc%j4Vh#wju?i=+DgbrbyY&yODG*|8Nl%*UzPO- z7@m1NQQIeXFo}dyJ-W0MuPJ+BiL|c7hM6^G--!~i9>SnGv-kCqoK0>9_{>(eZL)c1 zHyC^G0JCJDBdQ|%LESxTfhH>^7Z=(tsc@!htL+kJC9Kv*5Z=L^9 zl8<6-_Zv!krPohtswLOsd*Og#MLL{wjMCG)3fqhchm_=8g!^&G?Kk%+R{VecBmSK! z^n15Rz_m0O{2fa^98|EoHl=eH-@Py_*P*1r!QeF)k1iR1jM}?TTJ|odE#$qq&_Z$~ zU}8@V!NUz0V-FnZkvhP}o+7Wpc1@Y09O+$6X{LhieO)5pQ z?*ub~}g;(9i${q|!N<>Pwxo6rd; zcd8S)aji)>-71ogYfVSq{K#3XRr?!oZ%v`5#^yqrt3EKj1uwYmuw7HAsouKnDV?eu zHGII}q5bi)H|H0Uu}G{jZv(2pvB~>1<~pYgyG4;sFptYB+inNSGVw6yWQn+kQIwB| zIWvGR#cq=qBn`soujdZx36<1OW58>Ma(Lo(M=RJtpY06?ah?;vwrBH!6fVF zc9)DrRtzTV=YCg$_7m8sIqMbg!W~ASGOYq&+wF>Nv%8x)yCvdwqbQ&CYIH7)Qg))? zkcYNBm@28x6Y{Ufet8YFfB8fHJrGWzLMH21O2X|yNj^BW3wmPuTf1N?Ru|}k4Am6w zf<`LL$$H2G7tT`wZG32Pj+&7sYL#&;*!7wz$vbwAqFX2(pY?DfX2XtAc3nhz?&Cpo zVdrfBhT1n}y_#ryE9IR_8g3xx+kH^}EVBP(&bR7~dW&r2%qjoe5wd0bN!kPMK%?1h zlw}tBeHVk-?G)uxUeh}$ojcu{e2S9%bnhD~Df?+kM}t#a-HAEVlB8(2H>SBINt1mj zY3MEZ%srgauK1kPfMIysw;wi?7TJL_f1lww*lgIlut{??D8nv9MW8Y)0Lr#|B(}{i z0Q+W1#O+H_Lp0n1^ih;%qCt^IQO0Qp{+GerUv{Xl||!D4}feEOmVk=gtX@UmRik?J5BzMk_N{>ZSh{Bv?oVM zW)e1;-i;J(ul>Q&H&MC+T5kydvE=M$DPK&M8KQU-6maMXUWw|(>`eD7bPqLd+L@}w z(%wt?RP!aZ*}7)(aj%6#Bx6Ci$ZjyzS^eEc>oIK9oREv*3e4Vzc|IXEyPvYm=5*ol z60x77D4&p;exA~~ai>XGgaTen2OoEujwDw!OEgEa$&@9EcE4L_Z(Z<4VZC)vpmy60 z7&@vUJNg3hjP;_cC1kC|Fmpk%=noRGNlu#sViC-kdm=W>2ZXZievh(TK-?@5_aurM z0-_#hxIzkEiD_m6LXoFL?6TjYv{2FCr*uw0D6Svoi~#|(_cKh#_0|J#1iU$XmEBvY z-BekoZSsI&Lq(m^+qXrqmf55rGb^^9-x6#zCLX}BcPr)%@c^;o{hYE)JS>6@lXn|M z`FK##?)`$&x$&Uw-cCurKq#+ycVIgH?YKn?Bune4X#lWM9#JB!nf!VY0&)vHEde=G~b`{Ru#FBS@@3p-!|DbFd@D0GiZMR zwr37$#e2WRJRj1U{S{@IkX{Hg;K4R95Qr4zLwe!8(x7)2HJlsLn!KBm{JbfzdG}yC zKBRTepTU{}LV6)o8!xh-iiWfv0t`B6#&|WU>BydoagB0$WXol6jdFQp!^Q07)WF<< z)FY;lR$g}pQQi~#xW;DkSoxy!C1SsfQ6{Wa(Q^l5&>Ysvus0L)d{}E1u8jhPh*c)6 z7ac9ldG}GXd{{36$eT^++_}@_97^(Yr#n0s(^kGG?-oHx@*>;Y;Cp7o+%y@EWm*^6 z>P7=w58{5@En}@#u7q_m&U4Hm3s&||9J*F2#KArM5v?4imD4J!#3+)M0Fr$-9qRqC zz2PDw)eVEjgbw-0Zk2iCAY{pol}qSD-KIc)$qvx4PKBc*i+k@x zpUT>)>4^=Qbcy&ZPG(wtn!DFM)B|=AsYqSyQI~11o7%6owQe$ht$V2ZJJ3r~{lu3} z21B(!^H>iUTzeru+7LORoC62qlqDiY}3g}7~cL)P5YHt6c9cwWU9%4ZCJ zGV@S(ST|FU0D(@#Sm%~D;TFCo9qIwwmDF(B42alAj}P^L?R)ApDk^Tt8r;xxk|a~7 zQ$^=&Lu0x%U*FDPMS1!bN&ha>8d~~IoNnk}56J#hqzd%%RZZ!JNs}iuw;Hs)#=+Pk zRiV4DZEMLiWDVo%3CGsd2s%C_F3OkAx4Q=U8j$$NyE8XFwm@1``ZlaZ% zm?Z0_LVh&Wb(K0(54G$ZgUrxNmC|KY<~y-QMi(#CX$?g^kc)Kj14aD7MuQ)Fz(Fll zPMcFIzAZgr6}hTrbJD2z7)w<-EBm2tmrEiQIsC9Idsux3V7uSC`ksr`iNv?4zUNV8 zeD%E@hE_>M->&+?_Bb#h<~V=#Rk42oZMA^vTSXP|)mN=#7qTKgm~{1px}yeFK=rMT zG*eLZ9nXsL^z9-lDzN%qOjX~i`ocagu;5RzNaMn)@1?X+B;?1alld|#jH|v-byJY1 zs*{0)Z$($%D`+bPSKlkCuF&dxl|g3crP^~`O=X2w-x?}Zb(HP0mj&~BOVhoFt#lz041 zG7G|_2Dor$3iigB?G4LQ>TqflSYo&LROrAFly&??ofw@5;E@zeK?x?T>Hv5!2}QuYwUzPNe~f09Q;uPU~TeQu%r|H-Z)moR?!_m;8ywgCSq=DE8^ z#IB)i&fTNvZv~izc@JI*w{drm!Z0L2axFG|c%mD)VhDRG6sd8?G8T z+A!i(8R+ygMs0;DNLI}U?XyO0r75;oK};tjZ(E^0Ut-k00qyRg?S{^}u)3WSd315_N{)}!?VvNz!U)rWbu1kvlU-Mp($`FSbm&kI;r(CSnED%@ix zUo>frtIwF{{s!$rbqQXH(S;LGYFd3N%4UKV&Xh_U*0Y$^r=lHf3zIKND@q-4zD%{@)SFkIvA3!W{k=(SUVX;A{&Oix{vQ>GV~$yU%0FHJYFM{}SH#=K)o1MO zpMmyO+H!%bPk9v_PLi)tec1Du)u-YcsQt;;sXFwydG)F2aT9bM>Ra$i3>%A0tIybs zs!e~OEr)SpTz$$t=xXEh-KhHm*KnehZyV!to%mKqk7%wE9$Z z7y<46$=I%G^(p`3&7ghTs5PxV6=y**CEuai&{^iyr~LSHpy5ALap)}L>Qg=m3V8A_ zR2w#IUVX-PSq=@qOU0;R)9N#}QWf3zOj_gWQ$FQGX!m`p4LfaKeaesO58}U4F}tmI^qB&hwYBy!0X_Dq(1Rs%P= zYBcTCHNS@Yt~{!(v+PUKp?yk;zx^{_{8bOZ!lT}(gu9r{`78*!#OsGa)AL4K#_nAV zop=EA{3YJryMbLwS>_UNHSD&N%P7iU;%URMx(Ax1_=-L71p8*ca0=`ok`K{Fa!+-- zffbbGS3pfai0ORY8MFQwi6l$6Pl50E6Z@-3O~t65JsT^Kq)# z+pulsxj50^8i^!-K~XkNL;7|~=LB3x-a$!rE<*ZFO6P14l@or6IaB25vHc3uT;yo- z*ObiD+q)>;Zj}Fg--RXqA0vYA0pHR(9|~5nD%!qA1df862@ES*apaP~^*1TRtg2SU zkt>0KBsL#_04t81|JjE^NgMaWL8Uly_-B=*&HF!=o+*wT{ENnx#H3#-!Usni{d_k#B#Cvjkj-NkUEDvq4I5A(k~V05~%xg?#Lh(m146JY#L z@^|o05s#suZNP9W_zhID;igAAYM@PQgmYo>hen>*-#A)w#ebuG zk+eTCGJ;L}0sqK^6YHDca=sYqKp^sGDzHv_z5z0#`0vy-u*B{LRaZWtte0ts)|3Yy zl}PcY97?P{cmUAPB4}f6Llf=n>_LG3gF}hc*|mWFlcGh<)3PnovL%hREjZ1#K+;?O zK~=aa__5SS&q%ngxJCZo;(r0={}K}Uksi{C70UtrH%0XyMEU~)|whzS+eu2UdJNYpTV)x-+ zg59qob|p*fKD-*(gOn8?*{ExrCf*pKE?G7T@UKlcvA%2q;D;#QzAfG8|8YZVeBnf( z|7W0y?S-&gEdGYl@aYlak%tCLrXxcAumYCYeW(st6{-HqfDN9PCw5mq2CRr?{S&gp z?&=qSwKW;oEfOC;sTnUm@j{)k9>Tk$W5S8`^}E12?8$;xq9^EKA=2};aJAPFmOzFl z_SeEpc1+Rk1P==l%a5J_J!!{~#O9;*K(?o(ex8TeU2`?iMFyJKUeg402TH34bcpH4 zV5RPO7!MQ6k6j9uiz(cz(SJN=Ncy@7{aTwF`%P~4|8{3d1~oMKw4M+r;>nxvN6eBJ zlw zE(95zYL%?>#B|++dXwlb5M3jGD^V}9p)+`64QOlQvA9)-Pf zauRKmYWa58K)p^*rrOSO`^gV-4ZKZ~Y+yx(mX4Qjatal7Y;0&Sgxi{PKr)p|y6Gj( z(7&5Omx=1c!?AVEO%qM+!DJ^Jsjj=OcP8OXXb@J3;FZY1oXeiDj9f;WV6RWYYIZrM zyT=rricVvoE6rFU4p7GD2P*o*aX;A-kr<24So<|-%d7V+nwm9~3l~>cLFi+7b|6I-a z43my+ui~T?l22Ywb+mA>Iacw;Y|!2ir)Aq6I|+`2$sbZ}T+u0?4+~ZDN34i#sr(IC zdXqn8*s{1TSBnL2L_zqv+2VcBfW%j@b85BIRr=0_1UUY>6Jo1jqcN_xA&^SprQXzTj43L~k zCFpJ}Y@+Xj-&_I5o8&MfPwnpo`@<>UPHmIO0YUZuGz_qS z-?Y?^U3aN#GYfB*g5&}!?9$L&5~I2wR0|`jO!K7Xk|`~d_`y8^szp@Q zU3}SZR{Zs1b0<|;EvCY**}9fE*{jgr5-MZ1VQRAA+9KdZ#PHiN9W&L~Zl0+v|CK7x zQ14V5d8W2vE$ph3P|uVu-_(xz5@x+Oci0nk45^Vf@rq9Q+OR5&}{6GP-E(tp#p8Hg8(AbcWxJX=dMErq5XSP%=-z z+)L?psut*#K-B0b_Dd)UySU($h{d9?1Q7gnz{{!a4k+_A-*?4n$K45h1?AhRsK9W$ zPXQhqfmJYsaAn7ToDA@}6z+i1JLFdk|Kjh!pGW!jI;%1L8f<2hm6Q(Oc0nuG1AiO~ zu1=nA!o!8D?~0CZt%AP50vWs#P7jvf@VxDJsEfE{OZHvaz7H5q!tQ~WgsmL8V&Z1l z$S2PNt^Z530&m!$0jxNp%T1C=p3Snzu2|N$06T)RMd7wqyYh&(sf%E7Nsgqr8yvkg z*=NfKVyMASaug-QOJ&sO2VY$GBH*P_T<=}A^}Y|Txa|Poqbc42ov$_T?_Sj25AFd1 UmH1{Q@hpk{hj{cyycYlbe?XJ~<^TWy diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources deleted file mode 100644 index 1a9b4014c262741ae47d5202a7d88fc043287567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsg@^UGMWRxoS<(DZK87LSUSQ(pH z8JH`$`-TAd1{S\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs deleted file mode 100644 index 803fc2109..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 09:54:32 GMT 2008 -eclipse.preferences.version=1 -indexer/preferenceScope=0 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs deleted file mode 100644 index de15b7e5d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:21:27 GMT 2008 -org.eclipse.cdt.debug.core.cDebug.common_source_containers=\r\n\r\n\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index 199607974..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:32:39 GMT 2008 -eclipse.preferences.version=1 -properties/RTOSDemo.null.1116081685/0.289703090=\#\r\n\#Thu Nov 20 10\:32\:39 GMT 2008\r\norg.eclipse.cdt.build.core.settings.holder.30285543\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.77828512\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\n0.289703090\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.765354309\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1441288848\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.771258066\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\n diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 93999fcb1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Nov 20 10:03:01 GMT 2008 -spelling_locale_initialized=true -useAnnotationsPrefPage=true -spelling_locale=en_GB -eclipse.preferences.version=1 -useQuickDiffPrefPage=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index c0c563e47..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Nov 20 09:59:32 GMT 2008 -version=1 -eclipse.preferences.version=1 -pathvariable.FREERTOS_ROOT=C\:/E/Dev/FreeRTOS/WorkingCopy3 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs deleted file mode 100644 index 98f368507..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Nov 20 10:34:33 GMT 2008 -eclipse.preferences.version=1 -preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane| -org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs deleted file mode 100644 index 125805dca..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 09:49:01 GMT 2008 -eclipse.preferences.version=1 -autoUpdateInit=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index f970f3d7e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,17 +0,0 @@ -#Thu Nov 20 10:11:01 GMT 2008 -useQuickDiffPrefPage=true -proposalOrderMigrated=true -tabWidthPropagated=true -content_assist_proposals_background=255,255,255 -org.eclipse.jdt.ui.javadoclocations.migrated=true -useAnnotationsPrefPage=true -spelling_locale=en_GB -org.eclipse.jdt.internal.ui.navigator.layout=2 -org.eclipse.jface.textfont=1|Courier New|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Courier New; -org.eclipse.jdt.ui.editor.tab.width= -org.eclipse.jdt.ui.formatterprofiles.version=11 -content_assist_number_of_computers=9 -spelling_locale_initialized=true -eclipse.preferences.version=1 -content_assist_proposals_foreground=0,0,0 -fontPropagated=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs deleted file mode 100644 index b729fe77d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 09:48:58 GMT 2008 -eclipse.preferences.version=1 -mylyn.attention.migrated=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs deleted file mode 100644 index 1bcf8a41b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:36:07 GMT 2008 -eclipse.preferences.version=1 -overviewRuler_migration=migrated_3.1 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs deleted file mode 100644 index 9fecd5a85..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Thu Nov 20 10:11:01 GMT 2008 -eclipse.preferences.version=1 -tipsAndTricks=true -platformState=1227126792070 -PROBLEMS_FILTERS_MIGRATE=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs deleted file mode 100644 index b523c5b83..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Nov 20 10:36:07 GMT 2008 -eclipse.preferences.version=1 -showIntro=false -KEY_CONFIGURATION_ID=org.eclipse.cdt.ui.visualstudio diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs deleted file mode 100644 index 653503841..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:11:01 GMT 2008 -eclipse.preferences.version=1 -org.eclipse.ui.commands=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch deleted file mode 100644 index 31943929d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml deleted file mode 100644 index 48fd0278c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml +++ /dev/null @@ -1,13 +0,0 @@ - -
-
- - - - - - - - -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml deleted file mode 100644 index 31ce49359..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat deleted file mode 100644 index 46ba64d9130e8140814ad681109ca5fe45fb96df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmZQzU|?c^05&ki - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml deleted file mode 100644 index 8c365b725..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml deleted file mode 100644 index e615779c9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml +++ /dev/null @@ -1,12 +0,0 @@ - -
-
- - - - - -
-
-
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history deleted file mode 100644 index 191b1ce4e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index deleted file mode 100644 index 504ed420d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index +++ /dev/null @@ -1 +0,0 @@ -1227174783656 Delete resource 'RTOSDemo' diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml deleted file mode 100644 index 7618b311c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- - -
-
- -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml deleted file mode 100644 index e11a2b547..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - -
-
-
-
- - - - - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml deleted file mode 100644 index d3014f5c1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml +++ /dev/null @@ -1,4 +0,0 @@ - -
- -
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml deleted file mode 100644 index 96d141738..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - -
-
- - -
-
-
-
- - - -
-
-
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml deleted file mode 100644 index 860b4c811..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml deleted file mode 100644 index 5eced801f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini deleted file mode 100644 index c51ff745b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.core.runtime=1 \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject deleted file mode 100644 index 77fb9eeba..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project deleted file mode 100644 index efbaf4866..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project +++ /dev/null @@ -1,94 +0,0 @@ - - - RTOSDemo - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - cs-make - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - false - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - - - Demo_Tasks - 2 - FREERTOS_ROOT/Demo/Common/Minimal - - - FreeRTOS_Source - 2 - FREERTOS_ROOT/Source - - - FreeRTOS_uIP - 2 - FREERTOS_ROOT/Demo/Common/ethernet/FreeRTOS-uIP - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index e2200b8c6..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:32:37 GMT 2008 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 617222667..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include "MCF52235.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 60000000 ) -#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19000 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configUSE_COUNTING_SEMAPHORES 0 - -#define configMAX_PRIORITIES ( 6 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* Port specific definitions. */ -#define configYIELD_INTERRUPT_VECTOR 16UL -#define configKERNEL_INTERRUPT_PRIORITY 1 -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The function that initialises the tick and context switch interrupts. This -function is part of the application side (rather than kernel) to allow users to -change the peripherals and vectors being used should they conflict in any way -with the application itself. */ -void vApplicationSetupInterrupts( void ); - -/* Ethernet configuration. **************************/ - -/* Defines the MAC address to be used. */ -#define configMAC_0 0x00 -#define configMAC_1 0x04 -#define configMAC_2 0x9F -#define configMAC_3 0x00 -#define configMAC_4 0xAB -#define configMAC_5 0x2B - -/* Defines the IP address to be used. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 11 - -/* Defines the gateway address to be used. */ -#define configGW_ADDR0 192 -#define configGW_ADDR1 168 -#define configGW_ADDR2 0 -#define configGW_ADDR3 1 - -/* Defins the net mask. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* FEC driver configuration. */ -#define configNUM_FEC_RX_BUFFERS 3 -#define configFEC_BUFFER_SIZE 1520 -#define configUSE_PROMISCUOUS_MODE 0 -#define configFEC_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY -#define configPHY_ADDRESS 0 - -#if ( configFEC_BUFFER_SIZE & 0x0F ) != 0 - #error configFEC_BUFFER_SIZE must be a multiple of 16. -#endif - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c deleted file mode 100644 index 1effbb056..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#include "FreeRTOS.h" -#include "task.h" - -/* Constants used to configure the interrupts. */ -#define portPRESCALE_VALUE 64 -#define portPRESCALE_REG_SETTING ( 5 << 8 ) -#define portPIT_INTERRUPT_ENABLED ( 0x08 ) -#define configPIT0_INTERRUPT_VECTOR ( 55 ) - -/* - * FreeRTOS.org requires two interrupts - a tick interrupt generated from a - * timer source, and a spare interrupt vector used for context switching. - * The configuration below uses PIT0 for the former, and vector 16 for the - * latter. **IF YOUR APPLICATION HAS BOTH OF THESE INTERRUPTS FREE THEN YOU DO - * NOT NEED TO CHANGE ANY OF THIS CODE** - otherwise instructions are provided - * here for using alternative interrupt sources. - * - * To change the tick interrupt source: - * - * 1) Modify vApplicationSetupInterrupts() below to be correct for whichever - * peripheral is to be used to generate the tick interrupt. - * - * 2) Change the name of the function __cs3_isr_interrupt_119() defined within - * this file to be correct for the interrupt vector used by the timer peripheral. - * The name of the function should contain the vector number, so by default vector - * number 119 is being used. - * - * 3) Make sure the tick interrupt is cleared within the interrupt handler function. - * Currently __cs3_isr_interrupt_119() clears the PIT0 interrupt. - * - * To change the spare interrupt source: - * - * 1) Modify vApplicationSetupInterrupts() below to be correct for whichever - * interrupt vector is to be used. Make sure you use a spare interrupt on interrupt - * controller 0, otherwise the register used to request context switches will also - * require modification. By default vector 16 is used which is free on most MCF52xxx - * devices. - * - * 2) Change the definition of configYIELD_INTERRUPT_VECTOR within FreeRTOSConfig.h - * to be correct for your chosen interrupt vector. - * - * 3) Change the name of the function __cs3_isr_interrupt_80() within portasm.S - * to be correct for whichever vector number is being used. By default interrupt - * controller 0 vector number 16 is used, which corresponds to vector number 80. - */ -void vApplicationSetupInterrupts( void ) -{ -const unsigned short usCompareMatchValue = ( ( configCPU_CLOCK_HZ / portPRESCALE_VALUE ) / configTICK_RATE_HZ ); - - /* Configure interrupt priority and level and unmask interrupt for PIT0. */ - MCF_INTC0_ICR55 = ( 1 | ( configKERNEL_INTERRUPT_PRIORITY << 3 ) ); - MCF_INTC0_IMRH &= ~( MCF_INTC_IMRH_INT_MASK55 ); - - /* Do the same for vector 16 (interrupt controller 0). I don't think the - write to MCF_INTC0_IMRH is actually required here but is included for - completeness. */ - MCF_INTC0_ICR16 = ( 0 | ( configKERNEL_INTERRUPT_PRIORITY << 3 ) ); - MCF_INTC0_IMRH &= ~( MCF_INTC_IPRL_INT16 ); - - /* Configure PIT0 to generate the RTOS tick. */ - MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF; - MCF_PIT0_PCSR = ( portPRESCALE_REG_SETTING | MCF_PIT_PCSR_PIE | MCF_PIT_PCSR_RLD | MCF_PIT_PCSR_EN ); - MCF_PIT0_PMR = usCompareMatchValue; -} -/*-----------------------------------------------------------*/ - -void __attribute__ ((interrupt)) __cs3_isr_interrupt_119( void ) -{ -unsigned long ulSavedInterruptMask; - - /* Clear the PIT0 interrupt. */ - MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF; - - /* Increment the RTOS tick. */ - ulSavedInterruptMask = portSET_INTERRUPT_MASK_FROM_ISR(); - if( xTaskIncrementTick() != pdFALSE ) - { - taskYIELD(); - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( ulSavedInterruptMask ); -} diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h deleted file mode 100644 index 5a69a6d56..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_H__ -#define __MCF52235_H__ - -//#include "common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char uint8; /* 8 bits */ -typedef unsigned short int uint16; /* 16 bits */ -typedef unsigned long int uint32; /* 32 bits */ - -typedef signed char int8; /* 8 bits */ -typedef signed short int int16; /* 16 bits */ -typedef signed long int int32; /* 32 bits */ - -typedef volatile uint8 vuint8; /* 8 bits */ -typedef volatile uint16 vuint16; /* 16 bits */ -typedef volatile uint32 vuint32; /* 32 bits */ - -#ifdef THESE_ARE_CODEWARRIOR_DEFINITIONS -#pragma define_section system ".system" far_absolute RW - -/*** - * MCF52235 Derivative Memory map definitions from linker command files: - * __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker - * symbols must be defined in the linker command file. - */ - - extern __declspec(system) uint8 __IPSBAR[]; - extern __declspec(system) uint8 __RAMBAR[]; - extern __declspec(system) uint8 __RAMBAR_SIZE[]; - extern __declspec(system) uint8 __FLASHBAR[]; - extern __declspec(system) uint8 __FLASHBAR_SIZE[]; -#endif - -#define __IPSBAR ( ( uint8 * ) 0x40000000 ) -#define __RAMBAR ( ( uint8 * ) 0x20000000 ) - -#define IPSBAR_ADDRESS (uint32)__IPSBAR -#define RAMBAR_ADDRESS (uint32)__RAMBAR -#define RAMBAR_SIZE (uint32)__RAMBAR_SIZE -#define FLASHBAR_ADDRESS (uint32)__FLASHBAR -#define FLASHBAR_SIZE (uint32)__FLASHBAR_SIZE - - -#include "MCF52235_SCM.h" -#include "MCF52235_DMA.h" -#include "MCF52235_UART.h" -#include "MCF52235_I2C.h" -#include "MCF52235_QSPI.h" -#include "MCF52235_RTC.h" -#include "MCF52235_DTIM.h" -#include "MCF52235_INTC.h" -#include "MCF52235_GIACR.h" -#include "MCF52235_FEC.h" -#include "MCF52235_GPIO.h" -#include "MCF52235_PAD.h" -#include "MCF52235_RCM.h" -#include "MCF52235_CCM.h" -#include "MCF52235_PMM.h" -#include "MCF52235_CLOCK.h" -#include "MCF52235_EPORT.h" -#include "MCF52235_PIT.h" -#include "MCF52235_ADC.h" -#include "MCF52235_GPTA.h" -#include "MCF52235_PWM.h" -#include "MCF52235_FlexCAN.h" -#include "MCF52235_CFM.h" -#include "MCF52235_EPHY.h" -#include "MCF52235_RNGA.h" - -#ifdef __cplusplus -} -#endif - - -#endif /* __MCF52235_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h deleted file mode 100644 index 3251867a9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h +++ /dev/null @@ -1,193 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_ADC_H__ -#define __MCF52235_ADC_H__ - - -/********************************************************************* -* -* Analog-to-Digital Converter (ADC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_ADC_CTRL1 (*(vuint16*)(&__IPSBAR[0x190000])) -#define MCF_ADC_CTRL2 (*(vuint16*)(&__IPSBAR[0x190002])) -#define MCF_ADC_ADZCC (*(vuint16*)(&__IPSBAR[0x190004])) -#define MCF_ADC_ADLST1 (*(vuint16*)(&__IPSBAR[0x190006])) -#define MCF_ADC_ADLST2 (*(vuint16*)(&__IPSBAR[0x190008])) -#define MCF_ADC_ADSDIS (*(vuint16*)(&__IPSBAR[0x19000A])) -#define MCF_ADC_ADSTAT (*(vuint16*)(&__IPSBAR[0x19000C])) -#define MCF_ADC_ADLSTAT (*(vuint16*)(&__IPSBAR[0x19000E])) -#define MCF_ADC_ADZCSTAT (*(vuint16*)(&__IPSBAR[0x190010])) -#define MCF_ADC_ADRSLT0 (*(vuint16*)(&__IPSBAR[0x190012])) -#define MCF_ADC_ADRSLT1 (*(vuint16*)(&__IPSBAR[0x190014])) -#define MCF_ADC_ADRSLT2 (*(vuint16*)(&__IPSBAR[0x190016])) -#define MCF_ADC_ADRSLT3 (*(vuint16*)(&__IPSBAR[0x190018])) -#define MCF_ADC_ADRSLT4 (*(vuint16*)(&__IPSBAR[0x19001A])) -#define MCF_ADC_ADRSLT5 (*(vuint16*)(&__IPSBAR[0x19001C])) -#define MCF_ADC_ADRSLT6 (*(vuint16*)(&__IPSBAR[0x19001E])) -#define MCF_ADC_ADRSLT7 (*(vuint16*)(&__IPSBAR[0x190020])) -#define MCF_ADC_ADLLMT0 (*(vuint16*)(&__IPSBAR[0x190022])) -#define MCF_ADC_ADLLMT1 (*(vuint16*)(&__IPSBAR[0x190024])) -#define MCF_ADC_ADLLMT2 (*(vuint16*)(&__IPSBAR[0x190026])) -#define MCF_ADC_ADLLMT3 (*(vuint16*)(&__IPSBAR[0x190028])) -#define MCF_ADC_ADLLMT4 (*(vuint16*)(&__IPSBAR[0x19002A])) -#define MCF_ADC_ADLLMT5 (*(vuint16*)(&__IPSBAR[0x19002C])) -#define MCF_ADC_ADLLMT6 (*(vuint16*)(&__IPSBAR[0x19002E])) -#define MCF_ADC_ADLLMT7 (*(vuint16*)(&__IPSBAR[0x190030])) -#define MCF_ADC_ADHLMT0 (*(vuint16*)(&__IPSBAR[0x190032])) -#define MCF_ADC_ADHLMT1 (*(vuint16*)(&__IPSBAR[0x190034])) -#define MCF_ADC_ADHLMT2 (*(vuint16*)(&__IPSBAR[0x190036])) -#define MCF_ADC_ADHLMT3 (*(vuint16*)(&__IPSBAR[0x190038])) -#define MCF_ADC_ADHLMT4 (*(vuint16*)(&__IPSBAR[0x19003A])) -#define MCF_ADC_ADHLMT5 (*(vuint16*)(&__IPSBAR[0x19003C])) -#define MCF_ADC_ADHLMT6 (*(vuint16*)(&__IPSBAR[0x19003E])) -#define MCF_ADC_ADHLMT7 (*(vuint16*)(&__IPSBAR[0x190040])) -#define MCF_ADC_ADOFS0 (*(vuint16*)(&__IPSBAR[0x190042])) -#define MCF_ADC_ADOFS1 (*(vuint16*)(&__IPSBAR[0x190044])) -#define MCF_ADC_ADOFS2 (*(vuint16*)(&__IPSBAR[0x190046])) -#define MCF_ADC_ADOFS3 (*(vuint16*)(&__IPSBAR[0x190048])) -#define MCF_ADC_ADOFS4 (*(vuint16*)(&__IPSBAR[0x19004A])) -#define MCF_ADC_ADOFS5 (*(vuint16*)(&__IPSBAR[0x19004C])) -#define MCF_ADC_ADOFS6 (*(vuint16*)(&__IPSBAR[0x19004E])) -#define MCF_ADC_ADOFS7 (*(vuint16*)(&__IPSBAR[0x190050])) -#define MCF_ADC_POWER (*(vuint16*)(&__IPSBAR[0x190052])) -#define MCF_ADC_CAL (*(vuint16*)(&__IPSBAR[0x190054])) -#define MCF_ADC_ADRSLT(x) (*(vuint16*)(&__IPSBAR[0x190012 + ((x)*0x2)])) -#define MCF_ADC_ADLLMT(x) (*(vuint16*)(&__IPSBAR[0x190022 + ((x)*0x2)])) -#define MCF_ADC_ADHLMT(x) (*(vuint16*)(&__IPSBAR[0x190032 + ((x)*0x2)])) -#define MCF_ADC_ADOFS(x) (*(vuint16*)(&__IPSBAR[0x190042 + ((x)*0x2)])) - - -/* Bit definitions and macros for MCF_ADC_CTRL1 */ -#define MCF_ADC_CTRL1_SMODE(x) (((x)&0x7)<<0) -#define MCF_ADC_CTRL1_CHNCFG(x) (((x)&0xF)<<0x4) -#define MCF_ADC_CTRL1_HLMTIE (0x100) -#define MCF_ADC_CTRL1_LLMTIE (0x200) -#define MCF_ADC_CTRL1_ZCIE (0x400) -#define MCF_ADC_CTRL1_EOSIE0 (0x800) -#define MCF_ADC_CTRL1_SYNC0 (0x1000) -#define MCF_ADC_CTRL1_START0 (0x2000) -#define MCF_ADC_CTRL1_STOP0 (0x4000) - -/* Bit definitions and macros for MCF_ADC_CTRL2 */ -#define MCF_ADC_CTRL2_DIV(x) (((x)&0x1F)<<0) -#define MCF_ADC_CTRL2_SIMULT (0x20) -#define MCF_ADC_CTRL2_EOSIE1 (0x800) -#define MCF_ADC_CTRL2_SYNC1 (0x1000) -#define MCF_ADC_CTRL2_START1 (0x2000) -#define MCF_ADC_CTRL2_STOP1 (0x4000) - -/* Bit definitions and macros for MCF_ADC_ADZCC */ -#define MCF_ADC_ADZCC_ZCE0(x) (((x)&0x3)<<0) -#define MCF_ADC_ADZCC_ZCE1(x) (((x)&0x3)<<0x2) -#define MCF_ADC_ADZCC_ZCE2(x) (((x)&0x3)<<0x4) -#define MCF_ADC_ADZCC_ZCE3(x) (((x)&0x3)<<0x6) -#define MCF_ADC_ADZCC_ZCE4(x) (((x)&0x3)<<0x8) -#define MCF_ADC_ADZCC_ZCE5(x) (((x)&0x3)<<0xA) -#define MCF_ADC_ADZCC_ZCE6(x) (((x)&0x3)<<0xC) -#define MCF_ADC_ADZCC_ZCE7(x) (((x)&0x3)<<0xE) - -/* Bit definitions and macros for MCF_ADC_ADLST1 */ -#define MCF_ADC_ADLST1_SAMPLE0(x) (((x)&0x7)<<0) -#define MCF_ADC_ADLST1_SAMPLE1(x) (((x)&0x7)<<0x4) -#define MCF_ADC_ADLST1_SAMPLE2(x) (((x)&0x7)<<0x8) -#define MCF_ADC_ADLST1_SAMPLE3(x) (((x)&0x7)<<0xC) - -/* Bit definitions and macros for MCF_ADC_ADLST2 */ -#define MCF_ADC_ADLST2_SAMPLE4(x) (((x)&0x7)<<0) -#define MCF_ADC_ADLST2_SAMPLE5(x) (((x)&0x7)<<0x4) -#define MCF_ADC_ADLST2_SAMPLE6(x) (((x)&0x7)<<0x8) -#define MCF_ADC_ADLST2_SAMPLE7(x) (((x)&0x7)<<0xC) - -/* Bit definitions and macros for MCF_ADC_ADSDIS */ -#define MCF_ADC_ADSDIS_DS0 (0x1) -#define MCF_ADC_ADSDIS_DS1 (0x2) -#define MCF_ADC_ADSDIS_DS2 (0x4) -#define MCF_ADC_ADSDIS_DS3 (0x8) -#define MCF_ADC_ADSDIS_DS4 (0x10) -#define MCF_ADC_ADSDIS_DS5 (0x20) -#define MCF_ADC_ADSDIS_DS6 (0x40) -#define MCF_ADC_ADSDIS_DS7 (0x80) - -/* Bit definitions and macros for MCF_ADC_ADSTAT */ -#define MCF_ADC_ADSTAT_RDY0 (0x1) -#define MCF_ADC_ADSTAT_RDY1 (0x2) -#define MCF_ADC_ADSTAT_RDY2 (0x4) -#define MCF_ADC_ADSTAT_RDY3 (0x8) -#define MCF_ADC_ADSTAT_RDY4 (0x10) -#define MCF_ADC_ADSTAT_RDY5 (0x20) -#define MCF_ADC_ADSTAT_RDY6 (0x40) -#define MCF_ADC_ADSTAT_RDY7 (0x80) -#define MCF_ADC_ADSTAT_HLMTI (0x100) -#define MCF_ADC_ADSTAT_LLMTI (0x200) -#define MCF_ADC_ADSTAT_ZCI (0x400) -#define MCF_ADC_ADSTAT_EOSI0 (0x800) -#define MCF_ADC_ADSTAT_EOSI1 (0x1000) -#define MCF_ADC_ADSTAT_CIP1 (0x4000) -#define MCF_ADC_ADSTAT_CIP0 (0x8000) - -/* Bit definitions and macros for MCF_ADC_ADLSTAT */ -#define MCF_ADC_ADLSTAT_LLS0 (0x1) -#define MCF_ADC_ADLSTAT_LLS1 (0x2) -#define MCF_ADC_ADLSTAT_LLS2 (0x4) -#define MCF_ADC_ADLSTAT_LLS3 (0x8) -#define MCF_ADC_ADLSTAT_LLS4 (0x10) -#define MCF_ADC_ADLSTAT_LLS5 (0x20) -#define MCF_ADC_ADLSTAT_LLS6 (0x40) -#define MCF_ADC_ADLSTAT_LLS7 (0x80) -#define MCF_ADC_ADLSTAT_HLS0 (0x100) -#define MCF_ADC_ADLSTAT_HLS1 (0x200) -#define MCF_ADC_ADLSTAT_HLS2 (0x400) -#define MCF_ADC_ADLSTAT_HLS3 (0x800) -#define MCF_ADC_ADLSTAT_HLS4 (0x1000) -#define MCF_ADC_ADLSTAT_HLS5 (0x2000) -#define MCF_ADC_ADLSTAT_HLS6 (0x4000) -#define MCF_ADC_ADLSTAT_HLS7 (0x8000) - -/* Bit definitions and macros for MCF_ADC_ADZCSTAT */ -#define MCF_ADC_ADZCSTAT_ZCS0 (0x1) -#define MCF_ADC_ADZCSTAT_ZCS1 (0x2) -#define MCF_ADC_ADZCSTAT_ZCS2 (0x4) -#define MCF_ADC_ADZCSTAT_ZCS3 (0x8) -#define MCF_ADC_ADZCSTAT_ZCS4 (0x10) -#define MCF_ADC_ADZCSTAT_ZCS5 (0x20) -#define MCF_ADC_ADZCSTAT_ZCS6 (0x40) -#define MCF_ADC_ADZCSTAT_ZCS7 (0x80) - -/* Bit definitions and macros for MCF_ADC_ADRSLT */ -#define MCF_ADC_ADRSLT_RSLT(x) (((x)&0xFFF)<<0x3) -#define MCF_ADC_ADRSLT_SEXT (0x8000) - -/* Bit definitions and macros for MCF_ADC_ADLLMT */ -#define MCF_ADC_ADLLMT_LLMT(x) (((x)&0xFFF)<<0x3) - -/* Bit definitions and macros for MCF_ADC_ADHLMT */ -#define MCF_ADC_ADHLMT_HLMT(x) (((x)&0xFFF)<<0x3) - -/* Bit definitions and macros for MCF_ADC_ADOFS */ -#define MCF_ADC_ADOFS_OFFSET(x) (((x)&0xFFF)<<0x3) - -/* Bit definitions and macros for MCF_ADC_POWER */ -#define MCF_ADC_POWER_PD0 (0x1) -#define MCF_ADC_POWER_PD1 (0x2) -#define MCF_ADC_POWER_PD2 (0x4) -#define MCF_ADC_POWER_APD (0x8) -#define MCF_ADC_POWER_PUDELAY(x) (((x)&0x3F)<<0x4) -#define MCF_ADC_POWER_PSTS0 (0x400) -#define MCF_ADC_POWER_PSTS1 (0x800) -#define MCF_ADC_POWER_PSTS2 (0x1000) -#define MCF_ADC_POWER_ASB (0x8000) - -/* Bit definitions and macros for MCF_ADC_CAL */ -#define MCF_ADC_CAL_SEL_VREFL (0x4000) -#define MCF_ADC_CAL_SEL_VREFH (0x8000) - - -#endif /* __MCF52235_ADC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h deleted file mode 100644 index 5fe3517ca..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_CCM_H__ -#define __MCF52235_CCM_H__ - - -/********************************************************************* -* -* Chip Configuration Module (CCM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_CCM_CCR (*(vuint16*)(&__IPSBAR[0x110004])) -#define MCF_CCM_RCON (*(vuint16*)(&__IPSBAR[0x110008])) -#define MCF_CCM_CIR (*(vuint16*)(&__IPSBAR[0x11000A])) - - -/* Bit definitions and macros for MCF_CCM_CCR */ -#define MCF_CCM_CCR_BMT(x) (((x)&0x7)<<0) -#define MCF_CCM_CCR_BMT_65536 (0) -#define MCF_CCM_CCR_BMT_32768 (0x1) -#define MCF_CCM_CCR_BMT_16384 (0x2) -#define MCF_CCM_CCR_BMT_8192 (0x3) -#define MCF_CCM_CCR_BMT_4096 (0x4) -#define MCF_CCM_CCR_BMT_2048 (0x5) -#define MCF_CCM_CCR_BMT_1024 (0x6) -#define MCF_CCM_CCR_BMT_512 (0x7) -#define MCF_CCM_CCR_BME (0x8) -#define MCF_CCM_CCR_PSTEN (0x20) -#define MCF_CCM_CCR_SZEN (0x40) - -/* Bit definitions and macros for MCF_CCM_RCON */ -#define MCF_CCM_RCON_MODE (0x1) -#define MCF_CCM_RCON_RLOAD (0x20) - -/* Bit definitions and macros for MCF_CCM_CIR */ -#define MCF_CCM_CIR_PRN(x) (((x)&0x3F)<<0) -#define MCF_CCM_CIR_PIN(x) (((x)&0x3FF)<<0x6) - - -#endif /* __MCF52235_CCM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h deleted file mode 100644 index c8619f53f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_CFM_H__ -#define __MCF52235_CFM_H__ - - -/********************************************************************* -* -* ColdFire Flash Module (CFM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_CFM_CFMMCR (*(vuint16*)(&__IPSBAR[0x1D0000])) -#define MCF_CFM_CFMCLKD (*(vuint8 *)(&__IPSBAR[0x1D0002])) -#define MCF_CFM_CFMSEC (*(vuint32*)(&__IPSBAR[0x1D0008])) -#define MCF_CFM_CFMPROT (*(vuint32*)(&__IPSBAR[0x1D0010])) -#define MCF_CFM_CFMSACC (*(vuint32*)(&__IPSBAR[0x1D0014])) -#define MCF_CFM_CFMDACC (*(vuint32*)(&__IPSBAR[0x1D0018])) -#define MCF_CFM_CFMUSTAT (*(vuint8 *)(&__IPSBAR[0x1D0020])) -#define MCF_CFM_CFMCMD (*(vuint8 *)(&__IPSBAR[0x1D0024])) -#define MCF_CFM_CFMCLKSEL (*(vuint16*)(&__IPSBAR[0x1D004A])) - - -/* Bit definitions and macros for MCF_CFM_CFMMCR */ -#define MCF_CFM_CFMMCR_KEYACC (0x20) -#define MCF_CFM_CFMMCR_CCIE (0x40) -#define MCF_CFM_CFMMCR_CBEIE (0x80) -#define MCF_CFM_CFMMCR_AEIE (0x100) -#define MCF_CFM_CFMMCR_PVIE (0x200) -#define MCF_CFM_CFMMCR_LOCK (0x400) - -/* Bit definitions and macros for MCF_CFM_CFMCLKD */ -#define MCF_CFM_CFMCLKD_DIV(x) (((x)&0x3F)<<0) -#define MCF_CFM_CFMCLKD_PRDIV8 (0x40) -#define MCF_CFM_CFMCLKD_DIVLD (0x80) - -/* Bit definitions and macros for MCF_CFM_CFMSEC */ -#define MCF_CFM_CFMSEC_SEC(x) (((x)&0xFFFF)<<0) -#define MCF_CFM_CFMSEC_SECSTAT (0x40000000) -#define MCF_CFM_CFMSEC_KEYEN (0x80000000) - -/* Bit definitions and macros for MCF_CFM_CFMPROT */ -#define MCF_CFM_CFMPROT_PROTECT(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_CFM_CFMSACC */ -#define MCF_CFM_CFMSACC_SUPV(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_CFM_CFMDACC */ -#define MCF_CFM_CFMDACC_DACC(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_CFM_CFMUSTAT */ -#define MCF_CFM_CFMUSTAT_BLANK (0x4) -#define MCF_CFM_CFMUSTAT_ACCERR (0x10) -#define MCF_CFM_CFMUSTAT_PVIOL (0x20) -#define MCF_CFM_CFMUSTAT_CCIF (0x40) -#define MCF_CFM_CFMUSTAT_CBEIF (0x80) - -/* Bit definitions and macros for MCF_CFM_CFMCMD */ -#define MCF_CFM_CFMCMD_CMD(x) (((x)&0x7F)<<0) -#define MCF_CFM_CFMCMD_BLANK_CHECK (0x5) -#define MCF_CFM_CFMCMD_PAGE_ERASE_VERIFY (0x6) -#define MCF_CFM_CFMCMD_WORD_PROGRAM (0x20) -#define MCF_CFM_CFMCMD_PAGE_ERASE (0x40) -#define MCF_CFM_CFMCMD_MASS_ERASE (0x41) - -/* Bit definitions and macros for MCF_CFM_CFMCLKSEL */ -#define MCF_CFM_CFMCLKSEL_CLKSEL(x) (((x)&0x3)<<0) - - -#endif /* __MCF52235_CFM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h deleted file mode 100644 index 21ef560e7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_CLOCK_H__ -#define __MCF52235_CLOCK_H__ - - -/********************************************************************* -* -* Clock Module (CLOCK) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_CLOCK_SYNCR (*(vuint16*)(&__IPSBAR[0x120000])) -#define MCF_CLOCK_SYNSR (*(vuint8 *)(&__IPSBAR[0x120002])) -#define MCF_CLOCK_LPCR (*(vuint8 *)(&__IPSBAR[0x120007])) -#define MCF_CLOCK_CCHR (*(vuint8 *)(&__IPSBAR[0x120008])) -#define MCF_CLOCK_RTCDR (*(vuint32*)(&__IPSBAR[0x12000C])) - - -/* Bit definitions and macros for MCF_CLOCK_SYNCR */ -#define MCF_CLOCK_SYNCR_PLLEN (0x1) -#define MCF_CLOCK_SYNCR_PLLMODE (0x2) -#define MCF_CLOCK_SYNCR_CLKSRC (0x4) -#define MCF_CLOCK_SYNCR_FWKUP (0x20) -#define MCF_CLOCK_SYNCR_DISCLK (0x40) -#define MCF_CLOCK_SYNCR_LOCEN (0x80) -#define MCF_CLOCK_SYNCR_RFD(x) (((x)&0x7)<<0x8) -#define MCF_CLOCK_SYNCR_LOCRE (0x800) -#define MCF_CLOCK_SYNCR_MFD(x) (((x)&0x7)<<0xC) -#define MCF_CLOCK_SYNCR_LOLRE (0x8000) - -/* Bit definitions and macros for MCF_CLOCK_SYNSR */ -#define MCF_CLOCK_SYNSR_LOCS (0x4) -#define MCF_CLOCK_SYNSR_LOCK (0x8) -#define MCF_CLOCK_SYNSR_LOCKS (0x10) -#define MCF_CLOCK_SYNSR_EXTOSC (0x80) - -/* Bit definitions and macros for MCF_CLOCK_LPCR */ -#define MCF_CLOCK_LPCR_LPD(x) (((x)&0xF)<<0) - -/* Bit definitions and macros for MCF_CLOCK_CCHR */ -#define MCF_CLOCK_CCHR_CCHR(x) (((x)&0x7)<<0) - -/* Bit definitions and macros for MCF_CLOCK_RTCDR */ -#define MCF_CLOCK_RTCDR_RTCDF(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_CLOCK_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h deleted file mode 100644 index 8aac8ce17..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h +++ /dev/null @@ -1,142 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_DMA_H__ -#define __MCF52235_DMA_H__ - - -/********************************************************************* -* -* DMA Controller (DMA) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_DMA0_SAR (*(vuint32*)(&__IPSBAR[0x100])) -#define MCF_DMA0_DAR (*(vuint32*)(&__IPSBAR[0x104])) -#define MCF_DMA0_DSR (*(vuint8 *)(&__IPSBAR[0x108])) -#define MCF_DMA0_BCR (*(vuint32*)(&__IPSBAR[0x108])) -#define MCF_DMA0_DCR (*(vuint32*)(&__IPSBAR[0x10C])) - -#define MCF_DMA1_SAR (*(vuint32*)(&__IPSBAR[0x110])) -#define MCF_DMA1_DAR (*(vuint32*)(&__IPSBAR[0x114])) -#define MCF_DMA1_DSR (*(vuint8 *)(&__IPSBAR[0x118])) -#define MCF_DMA1_BCR (*(vuint32*)(&__IPSBAR[0x118])) -#define MCF_DMA1_DCR (*(vuint32*)(&__IPSBAR[0x11C])) - -#define MCF_DMA2_SAR (*(vuint32*)(&__IPSBAR[0x120])) -#define MCF_DMA2_DAR (*(vuint32*)(&__IPSBAR[0x124])) -#define MCF_DMA2_DSR (*(vuint8 *)(&__IPSBAR[0x128])) -#define MCF_DMA2_BCR (*(vuint32*)(&__IPSBAR[0x128])) -#define MCF_DMA2_DCR (*(vuint32*)(&__IPSBAR[0x12C])) - -#define MCF_DMA3_SAR (*(vuint32*)(&__IPSBAR[0x130])) -#define MCF_DMA3_DAR (*(vuint32*)(&__IPSBAR[0x134])) -#define MCF_DMA3_DSR (*(vuint8 *)(&__IPSBAR[0x138])) -#define MCF_DMA3_BCR (*(vuint32*)(&__IPSBAR[0x138])) -#define MCF_DMA3_DCR (*(vuint32*)(&__IPSBAR[0x13C])) - -#define MCF_DMA_SAR(x) (*(vuint32*)(&__IPSBAR[0x100 + ((x)*0x10)])) -#define MCF_DMA_DAR(x) (*(vuint32*)(&__IPSBAR[0x104 + ((x)*0x10)])) -#define MCF_DMA_DSR(x) (*(vuint8 *)(&__IPSBAR[0x108 + ((x)*0x10)])) -#define MCF_DMA_BCR(x) (*(vuint32*)(&__IPSBAR[0x108 + ((x)*0x10)])) -#define MCF_DMA_DCR(x) (*(vuint32*)(&__IPSBAR[0x10C + ((x)*0x10)])) - - -/* Bit definitions and macros for MCF_DMA_SAR */ -#define MCF_DMA_SAR_SAR(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DMA_DAR */ -#define MCF_DMA_DAR_DAR(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DMA_DSR */ -#define MCF_DMA_DSR_DONE (0x1) -#define MCF_DMA_DSR_BSY (0x2) -#define MCF_DMA_DSR_REQ (0x4) -#define MCF_DMA_DSR_BED (0x10) -#define MCF_DMA_DSR_BES (0x20) -#define MCF_DMA_DSR_CE (0x40) - -/* Bit definitions and macros for MCF_DMA_BCR */ -#define MCF_DMA_BCR_BCR(x) (((x)&0xFFFFFF)<<0) -#define MCF_DMA_BCR_DSR(x) (((x)&0xFF)<<0x18) - -/* Bit definitions and macros for MCF_DMA_DCR */ -#define MCF_DMA_DCR_LCH2(x) (((x)&0x3)<<0) -#define MCF_DMA_DCR_LCH2_CH0 (0) -#define MCF_DMA_DCR_LCH2_CH1 (0x1) -#define MCF_DMA_DCR_LCH2_CH2 (0x2) -#define MCF_DMA_DCR_LCH2_CH3 (0x3) -#define MCF_DMA_DCR_LCH1(x) (((x)&0x3)<<0x2) -#define MCF_DMA_DCR_LCH1_CH0 (0) -#define MCF_DMA_DCR_LCH1_CH1 (0x1) -#define MCF_DMA_DCR_LCH1_CH2 (0x2) -#define MCF_DMA_DCR_LCH1_CH3 (0x3) -#define MCF_DMA_DCR_LINKCC(x) (((x)&0x3)<<0x4) -#define MCF_DMA_DCR_D_REQ (0x80) -#define MCF_DMA_DCR_DMOD(x) (((x)&0xF)<<0x8) -#define MCF_DMA_DCR_DMOD_DIS (0) -#define MCF_DMA_DCR_DMOD_16 (0x1) -#define MCF_DMA_DCR_DMOD_32 (0x2) -#define MCF_DMA_DCR_DMOD_64 (0x3) -#define MCF_DMA_DCR_DMOD_128 (0x4) -#define MCF_DMA_DCR_DMOD_256 (0x5) -#define MCF_DMA_DCR_DMOD_512 (0x6) -#define MCF_DMA_DCR_DMOD_1K (0x7) -#define MCF_DMA_DCR_DMOD_2K (0x8) -#define MCF_DMA_DCR_DMOD_4K (0x9) -#define MCF_DMA_DCR_DMOD_8K (0xA) -#define MCF_DMA_DCR_DMOD_16K (0xB) -#define MCF_DMA_DCR_DMOD_32K (0xC) -#define MCF_DMA_DCR_DMOD_64K (0xD) -#define MCF_DMA_DCR_DMOD_128K (0xE) -#define MCF_DMA_DCR_DMOD_256K (0xF) -#define MCF_DMA_DCR_SMOD(x) (((x)&0xF)<<0xC) -#define MCF_DMA_DCR_SMOD_DIS (0) -#define MCF_DMA_DCR_SMOD_16 (0x1) -#define MCF_DMA_DCR_SMOD_32 (0x2) -#define MCF_DMA_DCR_SMOD_64 (0x3) -#define MCF_DMA_DCR_SMOD_128 (0x4) -#define MCF_DMA_DCR_SMOD_256 (0x5) -#define MCF_DMA_DCR_SMOD_512 (0x6) -#define MCF_DMA_DCR_SMOD_1K (0x7) -#define MCF_DMA_DCR_SMOD_2K (0x8) -#define MCF_DMA_DCR_SMOD_4K (0x9) -#define MCF_DMA_DCR_SMOD_8K (0xA) -#define MCF_DMA_DCR_SMOD_16K (0xB) -#define MCF_DMA_DCR_SMOD_32K (0xC) -#define MCF_DMA_DCR_SMOD_64K (0xD) -#define MCF_DMA_DCR_SMOD_128K (0xE) -#define MCF_DMA_DCR_SMOD_256K (0xF) -#define MCF_DMA_DCR_START (0x10000) -#define MCF_DMA_DCR_DSIZE(x) (((x)&0x3)<<0x11) -#define MCF_DMA_DCR_DSIZE_LONG (0) -#define MCF_DMA_DCR_DSIZE_BYTE (0x1) -#define MCF_DMA_DCR_DSIZE_WORD (0x2) -#define MCF_DMA_DCR_DSIZE_LINE (0x3) -#define MCF_DMA_DCR_DINC (0x80000) -#define MCF_DMA_DCR_SSIZE(x) (((x)&0x3)<<0x14) -#define MCF_DMA_DCR_SSIZE_LONG (0) -#define MCF_DMA_DCR_SSIZE_BYTE (0x1) -#define MCF_DMA_DCR_SSIZE_WORD (0x2) -#define MCF_DMA_DCR_SSIZE_LINE (0x3) -#define MCF_DMA_DCR_SINC (0x400000) -#define MCF_DMA_DCR_BWC(x) (((x)&0x7)<<0x19) -#define MCF_DMA_DCR_BWC_16K (0x1) -#define MCF_DMA_DCR_BWC_32K (0x2) -#define MCF_DMA_DCR_BWC_64K (0x3) -#define MCF_DMA_DCR_BWC_128K (0x4) -#define MCF_DMA_DCR_BWC_256K (0x5) -#define MCF_DMA_DCR_BWC_512K (0x6) -#define MCF_DMA_DCR_BWC_1024K (0x7) -#define MCF_DMA_DCR_AA (0x10000000) -#define MCF_DMA_DCR_CS (0x20000000) -#define MCF_DMA_DCR_EEXT (0x40000000) -#define MCF_DMA_DCR_INT (0x80000000) - - -#endif /* __MCF52235_DMA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h deleted file mode 100644 index 75efae4a5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_DTIM_H__ -#define __MCF52235_DTIM_H__ - - -/********************************************************************* -* -* DMA Timers (DTIM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_DTIM0_DTMR (*(vuint16*)(&__IPSBAR[0x400])) -#define MCF_DTIM0_DTXMR (*(vuint8 *)(&__IPSBAR[0x402])) -#define MCF_DTIM0_DTER (*(vuint8 *)(&__IPSBAR[0x403])) -#define MCF_DTIM0_DTRR (*(vuint32*)(&__IPSBAR[0x404])) -#define MCF_DTIM0_DTCR (*(vuint32*)(&__IPSBAR[0x408])) -#define MCF_DTIM0_DTCN (*(vuint32*)(&__IPSBAR[0x40C])) - -#define MCF_DTIM1_DTMR (*(vuint16*)(&__IPSBAR[0x440])) -#define MCF_DTIM1_DTXMR (*(vuint8 *)(&__IPSBAR[0x442])) -#define MCF_DTIM1_DTER (*(vuint8 *)(&__IPSBAR[0x443])) -#define MCF_DTIM1_DTRR (*(vuint32*)(&__IPSBAR[0x444])) -#define MCF_DTIM1_DTCR (*(vuint32*)(&__IPSBAR[0x448])) -#define MCF_DTIM1_DTCN (*(vuint32*)(&__IPSBAR[0x44C])) - -#define MCF_DTIM2_DTMR (*(vuint16*)(&__IPSBAR[0x480])) -#define MCF_DTIM2_DTXMR (*(vuint8 *)(&__IPSBAR[0x482])) -#define MCF_DTIM2_DTER (*(vuint8 *)(&__IPSBAR[0x483])) -#define MCF_DTIM2_DTRR (*(vuint32*)(&__IPSBAR[0x484])) -#define MCF_DTIM2_DTCR (*(vuint32*)(&__IPSBAR[0x488])) -#define MCF_DTIM2_DTCN (*(vuint32*)(&__IPSBAR[0x48C])) - -#define MCF_DTIM3_DTMR (*(vuint16*)(&__IPSBAR[0x4C0])) -#define MCF_DTIM3_DTXMR (*(vuint8 *)(&__IPSBAR[0x4C2])) -#define MCF_DTIM3_DTER (*(vuint8 *)(&__IPSBAR[0x4C3])) -#define MCF_DTIM3_DTRR (*(vuint32*)(&__IPSBAR[0x4C4])) -#define MCF_DTIM3_DTCR (*(vuint32*)(&__IPSBAR[0x4C8])) -#define MCF_DTIM3_DTCN (*(vuint32*)(&__IPSBAR[0x4CC])) - -#define MCF_DTIM_DTMR(x) (*(vuint16*)(&__IPSBAR[0x400 + ((x)*0x40)])) -#define MCF_DTIM_DTXMR(x) (*(vuint8 *)(&__IPSBAR[0x402 + ((x)*0x40)])) -#define MCF_DTIM_DTER(x) (*(vuint8 *)(&__IPSBAR[0x403 + ((x)*0x40)])) -#define MCF_DTIM_DTRR(x) (*(vuint32*)(&__IPSBAR[0x404 + ((x)*0x40)])) -#define MCF_DTIM_DTCR(x) (*(vuint32*)(&__IPSBAR[0x408 + ((x)*0x40)])) -#define MCF_DTIM_DTCN(x) (*(vuint32*)(&__IPSBAR[0x40C + ((x)*0x40)])) - - -/* Bit definitions and macros for MCF_DTIM_DTMR */ -#define MCF_DTIM_DTMR_RST (0x1) -#define MCF_DTIM_DTMR_CLK(x) (((x)&0x3)<<0x1) -#define MCF_DTIM_DTMR_CLK_STOP (0) -#define MCF_DTIM_DTMR_CLK_DIV1 (0x2) -#define MCF_DTIM_DTMR_CLK_DIV16 (0x4) -#define MCF_DTIM_DTMR_CLK_DTIN (0x6) -#define MCF_DTIM_DTMR_FRR (0x8) -#define MCF_DTIM_DTMR_ORRI (0x10) -#define MCF_DTIM_DTMR_OM (0x20) -#define MCF_DTIM_DTMR_CE(x) (((x)&0x3)<<0x6) -#define MCF_DTIM_DTMR_CE_NONE (0) -#define MCF_DTIM_DTMR_CE_RISE (0x40) -#define MCF_DTIM_DTMR_CE_FALL (0x80) -#define MCF_DTIM_DTMR_CE_ANY (0xC0) -#define MCF_DTIM_DTMR_PS(x) (((x)&0xFF)<<0x8) - -/* Bit definitions and macros for MCF_DTIM_DTXMR */ -#define MCF_DTIM_DTXMR_MODE16 (0x1) -#define MCF_DTIM_DTXMR_HALTED (0x40) -#define MCF_DTIM_DTXMR_DMAEN (0x80) - -/* Bit definitions and macros for MCF_DTIM_DTER */ -#define MCF_DTIM_DTER_CAP (0x1) -#define MCF_DTIM_DTER_REF (0x2) - -/* Bit definitions and macros for MCF_DTIM_DTRR */ -#define MCF_DTIM_DTRR_REF(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DTIM_DTCR */ -#define MCF_DTIM_DTCR_CAP(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DTIM_DTCN */ -#define MCF_DTIM_DTCN_CNT(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_DTIM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h deleted file mode 100644 index 0ae0ec6db..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_EPHY_H__ -#define __MCF52235_EPHY_H__ - - -/********************************************************************* -* -* Ethernet Physical Transceiver (EPHY) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_EPHY_EPHYCTL0 (*(vuint8 *)(&__IPSBAR[0x1E0000])) -#define MCF_EPHY_EPHYCTL1 (*(vuint8 *)(&__IPSBAR[0x1E0001])) -#define MCF_EPHY_EPHYSR (*(vuint8 *)(&__IPSBAR[0x1E0002])) - - -/* Bit definitions and macros for MCF_EPHY_EPHYCTL0 */ -#define MCF_EPHY_EPHYCTL0_EPHYIEN (0x1) -#define MCF_EPHY_EPHYCTL0_EPHYWAI (0x4) -#define MCF_EPHY_EPHYCTL0_LEDEN (0x8) -#define MCF_EPHY_EPHYCTL0_DIS10 (0x10) -#define MCF_EPHY_EPHYCTL0_DIS100 (0x20) -#define MCF_EPHY_EPHYCTL0_ANDIS (0x40) -#define MCF_EPHY_EPHYCTL0_EPHYEN (0x80) - -/* Bit definitions and macros for MCF_EPHY_EPHYCTL1 */ -#define MCF_EPHY_EPHYCTL1_PHYADD(x) (((x)&0x1F)<<0) - -/* Bit definitions and macros for MCF_EPHY_EPHYSR */ -#define MCF_EPHY_EPHYSR_EPHYIF (0x1) -#define MCF_EPHY_EPHYSR_10DIS (0x10) -#define MCF_EPHY_EPHYSR_100DIS (0x20) - - -#endif /* __MCF52235_EPHY_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h deleted file mode 100644 index 365466b5d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h +++ /dev/null @@ -1,220 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_EPORT_H__ -#define __MCF52235_EPORT_H__ - - -/********************************************************************* -* -* Edge Port Module (EPORT) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_EPORT0_EPPAR (*(vuint16*)(&__IPSBAR[0x130000])) -#define MCF_EPORT0_EPDDR (*(vuint8 *)(&__IPSBAR[0x130002])) -#define MCF_EPORT0_EPIER (*(vuint8 *)(&__IPSBAR[0x130003])) -#define MCF_EPORT0_EPDR (*(vuint8 *)(&__IPSBAR[0x130004])) -#define MCF_EPORT0_EPPDR (*(vuint8 *)(&__IPSBAR[0x130005])) -#define MCF_EPORT0_EPFR (*(vuint8 *)(&__IPSBAR[0x130006])) - -#define MCF_EPORT1_EPPAR (*(vuint16*)(&__IPSBAR[0x140000])) -#define MCF_EPORT1_EPDDR (*(vuint8 *)(&__IPSBAR[0x140002])) -#define MCF_EPORT1_EPIER (*(vuint8 *)(&__IPSBAR[0x140003])) -#define MCF_EPORT1_EPDR (*(vuint8 *)(&__IPSBAR[0x140004])) -#define MCF_EPORT1_EPPDR (*(vuint8 *)(&__IPSBAR[0x140005])) -#define MCF_EPORT1_EPFR (*(vuint8 *)(&__IPSBAR[0x140006])) - -#define MCF_EPORT_EPPAR(x) (*(vuint16*)(&__IPSBAR[0x130000 + ((x)*0x10000)])) -#define MCF_EPORT_EPDDR(x) (*(vuint8 *)(&__IPSBAR[0x130002 + ((x)*0x10000)])) -#define MCF_EPORT_EPIER(x) (*(vuint8 *)(&__IPSBAR[0x130003 + ((x)*0x10000)])) -#define MCF_EPORT_EPDR(x) (*(vuint8 *)(&__IPSBAR[0x130004 + ((x)*0x10000)])) -#define MCF_EPORT_EPPDR(x) (*(vuint8 *)(&__IPSBAR[0x130005 + ((x)*0x10000)])) -#define MCF_EPORT_EPFR(x) (*(vuint8 *)(&__IPSBAR[0x130006 + ((x)*0x10000)])) - - -/* Bit definitions and macros for MCF_EPORT_EPPAR */ -#define MCF_EPORT_EPPAR_EPPA1(x) (((x)&0x3)<<0x2) -#define MCF_EPORT_EPPAR_EPPA1_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA1_RISING (0x4) -#define MCF_EPORT_EPPAR_EPPA1_FALLING (0x8) -#define MCF_EPORT_EPPAR_EPPA1_BOTH (0xC) -#define MCF_EPORT_EPPAR_EPPA2(x) (((x)&0x3)<<0x4) -#define MCF_EPORT_EPPAR_EPPA2_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA2_RISING (0x10) -#define MCF_EPORT_EPPAR_EPPA2_FALLING (0x20) -#define MCF_EPORT_EPPAR_EPPA2_BOTH (0x30) -#define MCF_EPORT_EPPAR_EPPA3(x) (((x)&0x3)<<0x6) -#define MCF_EPORT_EPPAR_EPPA3_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA3_RISING (0x40) -#define MCF_EPORT_EPPAR_EPPA3_FALLING (0x80) -#define MCF_EPORT_EPPAR_EPPA3_BOTH (0xC0) -#define MCF_EPORT_EPPAR_EPPA4(x) (((x)&0x3)<<0x8) -#define MCF_EPORT_EPPAR_EPPA4_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA4_RISING (0x100) -#define MCF_EPORT_EPPAR_EPPA4_FALLING (0x200) -#define MCF_EPORT_EPPAR_EPPA4_BOTH (0x300) -#define MCF_EPORT_EPPAR_EPPA5(x) (((x)&0x3)<<0xA) -#define MCF_EPORT_EPPAR_EPPA5_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA5_RISING (0x400) -#define MCF_EPORT_EPPAR_EPPA5_FALLING (0x800) -#define MCF_EPORT_EPPAR_EPPA5_BOTH (0xC00) -#define MCF_EPORT_EPPAR_EPPA6(x) (((x)&0x3)<<0xC) -#define MCF_EPORT_EPPAR_EPPA6_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA6_RISING (0x1000) -#define MCF_EPORT_EPPAR_EPPA6_FALLING (0x2000) -#define MCF_EPORT_EPPAR_EPPA6_BOTH (0x3000) -#define MCF_EPORT_EPPAR_EPPA7(x) (((x)&0x3)<<0xE) -#define MCF_EPORT_EPPAR_EPPA7_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA7_RISING (0x4000) -#define MCF_EPORT_EPPAR_EPPA7_FALLING (0x8000) -#define MCF_EPORT_EPPAR_EPPA7_BOTH (0xC000) -#define MCF_EPORT_EPPAR_LEVEL (0) -#define MCF_EPORT_EPPAR_RISING (0x1) -#define MCF_EPORT_EPPAR_FALLING (0x2) -#define MCF_EPORT_EPPAR_BOTH (0x3) - -/* Bit definitions and macros for MCF_EPORT_EPDDR */ -#define MCF_EPORT_EPDDR_EPDD1 (0x2) -#define MCF_EPORT_EPDDR_EPDD2 (0x4) -#define MCF_EPORT_EPDDR_EPDD3 (0x8) -#define MCF_EPORT_EPDDR_EPDD4 (0x10) -#define MCF_EPORT_EPDDR_EPDD5 (0x20) -#define MCF_EPORT_EPDDR_EPDD6 (0x40) -#define MCF_EPORT_EPDDR_EPDD7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPIER */ -#define MCF_EPORT_EPIER_EPIE1 (0x2) -#define MCF_EPORT_EPIER_EPIE2 (0x4) -#define MCF_EPORT_EPIER_EPIE3 (0x8) -#define MCF_EPORT_EPIER_EPIE4 (0x10) -#define MCF_EPORT_EPIER_EPIE5 (0x20) -#define MCF_EPORT_EPIER_EPIE6 (0x40) -#define MCF_EPORT_EPIER_EPIE7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPDR */ -#define MCF_EPORT_EPDR_EPD1 (0x2) -#define MCF_EPORT_EPDR_EPD2 (0x4) -#define MCF_EPORT_EPDR_EPD3 (0x8) -#define MCF_EPORT_EPDR_EPD4 (0x10) -#define MCF_EPORT_EPDR_EPD5 (0x20) -#define MCF_EPORT_EPDR_EPD6 (0x40) -#define MCF_EPORT_EPDR_EPD7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPPDR */ -#define MCF_EPORT_EPPDR_EPPD1 (0x2) -#define MCF_EPORT_EPPDR_EPPD2 (0x4) -#define MCF_EPORT_EPPDR_EPPD3 (0x8) -#define MCF_EPORT_EPPDR_EPPD4 (0x10) -#define MCF_EPORT_EPPDR_EPPD5 (0x20) -#define MCF_EPORT_EPPDR_EPPD6 (0x40) -#define MCF_EPORT_EPPDR_EPPD7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPFR */ -#define MCF_EPORT_EPFR_EPF1 (0x2) -#define MCF_EPORT_EPFR_EPF2 (0x4) -#define MCF_EPORT_EPFR_EPF3 (0x8) -#define MCF_EPORT_EPFR_EPF4 (0x10) -#define MCF_EPORT_EPFR_EPF5 (0x20) -#define MCF_EPORT_EPFR_EPF6 (0x40) -#define MCF_EPORT_EPFR_EPF7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPPAR */ -#define MCF_EPORT_EPPAR_EPPA8(x) (((x)&0x3)<<0) -#define MCF_EPORT_EPPAR_EPPA8_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA8_RISING (0x1) -#define MCF_EPORT_EPPAR_EPPA8_FALLING (0x2) -#define MCF_EPORT_EPPAR_EPPA8_BOTH (0x3) -#define MCF_EPORT_EPPAR_EPPA9(x) (((x)&0x3)<<0x2) -#define MCF_EPORT_EPPAR_EPPA9_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA9_RISING (0x4) -#define MCF_EPORT_EPPAR_EPPA9_FALLING (0x8) -#define MCF_EPORT_EPPAR_EPPA9_BOTH (0xC) -#define MCF_EPORT_EPPAR_EPPA10(x) (((x)&0x3)<<0x4) -#define MCF_EPORT_EPPAR_EPPA10_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA10_RISING (0x10) -#define MCF_EPORT_EPPAR_EPPA10_FALLING (0x20) -#define MCF_EPORT_EPPAR_EPPA10_BOTH (0x30) -#define MCF_EPORT_EPPAR_EPPA11(x) (((x)&0x3)<<0x6) -#define MCF_EPORT_EPPAR_EPPA11_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA11_RISING (0x40) -#define MCF_EPORT_EPPAR_EPPA11_FALLING (0x80) -#define MCF_EPORT_EPPAR_EPPA11_BOTH (0xC0) -#define MCF_EPORT_EPPAR_EPPA12(x) (((x)&0x3)<<0x8) -#define MCF_EPORT_EPPAR_EPPA12_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA12_RISING (0x100) -#define MCF_EPORT_EPPAR_EPPA12_FALLING (0x200) -#define MCF_EPORT_EPPAR_EPPA12_BOTH (0x300) -#define MCF_EPORT_EPPAR_EPPA13(x) (((x)&0x3)<<0xA) -#define MCF_EPORT_EPPAR_EPPA13_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA13_RISING (0x400) -#define MCF_EPORT_EPPAR_EPPA13_FALLING (0x800) -#define MCF_EPORT_EPPAR_EPPA13_BOTH (0xC00) -#define MCF_EPORT_EPPAR_EPPA14(x) (((x)&0x3)<<0xC) -#define MCF_EPORT_EPPAR_EPPA14_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA14_RISING (0x1000) -#define MCF_EPORT_EPPAR_EPPA14_FALLING (0x2000) -#define MCF_EPORT_EPPAR_EPPA14_BOTH (0x3000) -#define MCF_EPORT_EPPAR_EPPA15(x) (((x)&0x3)<<0xE) -#define MCF_EPORT_EPPAR_EPPA15_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA15_RISING (0x4000) -#define MCF_EPORT_EPPAR_EPPA15_FALLING (0x8000) -#define MCF_EPORT_EPPAR_EPPA15_BOTH (0xC000) - -/* Bit definitions and macros for MCF_EPORT_EPDDR */ -#define MCF_EPORT_EPDDR_EPDD8 (0x1) -#define MCF_EPORT_EPDDR_EPDD9 (0x2) -#define MCF_EPORT_EPDDR_EPDD10 (0x4) -#define MCF_EPORT_EPDDR_EPDD11 (0x8) -#define MCF_EPORT_EPDDR_EPDD12 (0x10) -#define MCF_EPORT_EPDDR_EPDD13 (0x20) -#define MCF_EPORT_EPDDR_EPDD14 (0x40) -#define MCF_EPORT_EPDDR_EPDD15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPIER */ -#define MCF_EPORT_EPIER_EPIE8 (0x1) -#define MCF_EPORT_EPIER_EPIE9 (0x2) -#define MCF_EPORT_EPIER_EPIE10 (0x4) -#define MCF_EPORT_EPIER_EPIE11 (0x8) -#define MCF_EPORT_EPIER_EPIE12 (0x10) -#define MCF_EPORT_EPIER_EPIE13 (0x20) -#define MCF_EPORT_EPIER_EPIE14 (0x40) -#define MCF_EPORT_EPIER_EPIE15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPDR */ -#define MCF_EPORT_EPDR_EPD8 (0x1) -#define MCF_EPORT_EPDR_EPD9 (0x2) -#define MCF_EPORT_EPDR_EPD10 (0x4) -#define MCF_EPORT_EPDR_EPD11 (0x8) -#define MCF_EPORT_EPDR_EPD12 (0x10) -#define MCF_EPORT_EPDR_EPD13 (0x20) -#define MCF_EPORT_EPDR_EPD14 (0x40) -#define MCF_EPORT_EPDR_EPD15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPPDR */ -#define MCF_EPORT_EPPDR_EPPD8 (0x1) -#define MCF_EPORT_EPPDR_EPPD9 (0x2) -#define MCF_EPORT_EPPDR_EPPD10 (0x4) -#define MCF_EPORT_EPPDR_EPPD11 (0x8) -#define MCF_EPORT_EPPDR_EPPD12 (0x10) -#define MCF_EPORT_EPPDR_EPPD13 (0x20) -#define MCF_EPORT_EPPDR_EPPD14 (0x40) -#define MCF_EPORT_EPPDR_EPPD15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPFR */ -#define MCF_EPORT_EPFR_EPF8 (0x1) -#define MCF_EPORT_EPFR_EPF9 (0x2) -#define MCF_EPORT_EPFR_EPF10 (0x4) -#define MCF_EPORT_EPFR_EPF11 (0x8) -#define MCF_EPORT_EPFR_EPF12 (0x10) -#define MCF_EPORT_EPFR_EPF13 (0x20) -#define MCF_EPORT_EPFR_EPF14 (0x40) -#define MCF_EPORT_EPFR_EPF15 (0x80) - - -#endif /* __MCF52235_EPORT_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h deleted file mode 100644 index 68fa92c18..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h +++ /dev/null @@ -1,385 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_FEC_H__ -#define __MCF52235_FEC_H__ - - -/********************************************************************* -* -* Fast Ethernet Controller(FEC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_FEC_EIR (*(vuint32*)(&__IPSBAR[0x1004])) -#define MCF_FEC_EIMR (*(vuint32*)(&__IPSBAR[0x1008])) -#define MCF_FEC_RDAR (*(vuint32*)(&__IPSBAR[0x1010])) -#define MCF_FEC_TDAR (*(vuint32*)(&__IPSBAR[0x1014])) -#define MCF_FEC_ECR (*(vuint32*)(&__IPSBAR[0x1024])) -#define MCF_FEC_MMFR (*(vuint32*)(&__IPSBAR[0x1040])) -#define MCF_FEC_MSCR (*(vuint32*)(&__IPSBAR[0x1044])) -#define MCF_FEC_MIBC (*(vuint32*)(&__IPSBAR[0x1064])) -#define MCF_FEC_RCR (*(vuint32*)(&__IPSBAR[0x1084])) -#define MCF_FEC_TCR (*(vuint32*)(&__IPSBAR[0x10C4])) -#define MCF_FEC_PALR (*(vuint32*)(&__IPSBAR[0x10E4])) -#define MCF_FEC_PAUR (*(vuint32*)(&__IPSBAR[0x10E8])) -#define MCF_FEC_OPD (*(vuint32*)(&__IPSBAR[0x10EC])) -#define MCF_FEC_IAUR (*(vuint32*)(&__IPSBAR[0x1118])) -#define MCF_FEC_IALR (*(vuint32*)(&__IPSBAR[0x111C])) -#define MCF_FEC_GAUR (*(vuint32*)(&__IPSBAR[0x1120])) -#define MCF_FEC_GALR (*(vuint32*)(&__IPSBAR[0x1124])) -#define MCF_FEC_TFWR (*(vuint32*)(&__IPSBAR[0x1144])) -#define MCF_FEC_FRBR (*(vuint32*)(&__IPSBAR[0x114C])) -#define MCF_FEC_FRSR (*(vuint32*)(&__IPSBAR[0x1150])) -#define MCF_FEC_ERDSR (*(vuint32*)(&__IPSBAR[0x1180])) -#define MCF_FEC_ETSDR (*(vuint32*)(&__IPSBAR[0x1184])) -#define MCF_FEC_EMRBR (*(vuint32*)(&__IPSBAR[0x1188])) -#define MCF_FEC_RMON_T_DROP (*(vuint32*)(&__IPSBAR[0x1200])) -#define MCF_FEC_RMON_T_PACKETS (*(vuint32*)(&__IPSBAR[0x1204])) -#define MCF_FEC_RMON_T_BC_PKT (*(vuint32*)(&__IPSBAR[0x1208])) -#define MCF_FEC_RMON_T_MC_PKT (*(vuint32*)(&__IPSBAR[0x120C])) -#define MCF_FEC_RMON_T_CRC_ALIGN (*(vuint32*)(&__IPSBAR[0x1210])) -#define MCF_FEC_RMON_T_UNDERSIZE (*(vuint32*)(&__IPSBAR[0x1214])) -#define MCF_FEC_RMON_T_OVERSIZE (*(vuint32*)(&__IPSBAR[0x1218])) -#define MCF_FEC_RMON_T_FRAG (*(vuint32*)(&__IPSBAR[0x121C])) -#define MCF_FEC_RMON_T_JAB (*(vuint32*)(&__IPSBAR[0x1220])) -#define MCF_FEC_RMON_T_COL (*(vuint32*)(&__IPSBAR[0x1224])) -#define MCF_FEC_RMON_T_P64 (*(vuint32*)(&__IPSBAR[0x1228])) -#define MCF_FEC_RMON_T_P65TO127 (*(vuint32*)(&__IPSBAR[0x122C])) -#define MCF_FEC_RMON_T_P128TO255 (*(vuint32*)(&__IPSBAR[0x1230])) -#define MCF_FEC_RMON_T_P256TO511 (*(vuint32*)(&__IPSBAR[0x1234])) -#define MCF_FEC_RMON_T_P512TO1023 (*(vuint32*)(&__IPSBAR[0x1238])) -#define MCF_FEC_RMON_T_P1024TO2047 (*(vuint32*)(&__IPSBAR[0x123C])) -#define MCF_FEC_RMON_T_P_GTE2048 (*(vuint32*)(&__IPSBAR[0x1240])) -#define MCF_FEC_RMON_T_OCTETS (*(vuint32*)(&__IPSBAR[0x1244])) -#define MCF_FEC_IEEE_T_DROP (*(vuint32*)(&__IPSBAR[0x1248])) -#define MCF_FEC_IEEE_T_FRAME_OK (*(vuint32*)(&__IPSBAR[0x124C])) -#define MCF_FEC_IEEE_T_1COL (*(vuint32*)(&__IPSBAR[0x1250])) -#define MCF_FEC_IEEE_T_MCOL (*(vuint32*)(&__IPSBAR[0x1254])) -#define MCF_FEC_IEEE_T_DEF (*(vuint32*)(&__IPSBAR[0x1258])) -#define MCF_FEC_IEEE_T_LCOL (*(vuint32*)(&__IPSBAR[0x125C])) -#define MCF_FEC_IEEE_T_EXCOL (*(vuint32*)(&__IPSBAR[0x1260])) -#define MCF_FEC_IEEE_T_MACERR (*(vuint32*)(&__IPSBAR[0x1264])) -#define MCF_FEC_IEEE_T_CSERR (*(vuint32*)(&__IPSBAR[0x1268])) -#define MCF_FEC_IEEE_T_SQE (*(vuint32*)(&__IPSBAR[0x126C])) -#define MCF_FEC_IEEE_T_FDXFC (*(vuint32*)(&__IPSBAR[0x1270])) -#define MCF_FEC_IEEE_T_OCTETS_OK (*(vuint32*)(&__IPSBAR[0x1274])) -#define MCF_FEC_RMON_R_PACKETS (*(vuint32*)(&__IPSBAR[0x1284])) -#define MCF_FEC_RMON_R_BC_PKT (*(vuint32*)(&__IPSBAR[0x1288])) -#define MCF_FEC_RMON_R_MC_PKT (*(vuint32*)(&__IPSBAR[0x128C])) -#define MCF_FEC_RMON_R_CRC_ALIGN (*(vuint32*)(&__IPSBAR[0x1290])) -#define MCF_FEC_RMON_R_UNDERSIZE (*(vuint32*)(&__IPSBAR[0x1294])) -#define MCF_FEC_RMON_R_OVERSIZE (*(vuint32*)(&__IPSBAR[0x1298])) -#define MCF_FEC_RMON_R_FRAG (*(vuint32*)(&__IPSBAR[0x129C])) -#define MCF_FEC_RMON_R_JAB (*(vuint32*)(&__IPSBAR[0x12A0])) -#define MCF_FEC_RMON_R_RESVD_0 (*(vuint32*)(&__IPSBAR[0x12A4])) -#define MCF_FEC_RMON_R_P64 (*(vuint32*)(&__IPSBAR[0x12A8])) -#define MCF_FEC_RMON_R_P65TO127 (*(vuint32*)(&__IPSBAR[0x12AC])) -#define MCF_FEC_RMON_R_P128TO255 (*(vuint32*)(&__IPSBAR[0x12B0])) -#define MCF_FEC_RMON_R_P256TO511 (*(vuint32*)(&__IPSBAR[0x12B4])) -#define MCF_FEC_RMON_R_P512TO1023 (*(vuint32*)(&__IPSBAR[0x12B8])) -#define MCF_FEC_RMON_R_P1024TO2047 (*(vuint32*)(&__IPSBAR[0x12BC])) -#define MCF_FEC_RMON_R_P_GTE2048 (*(vuint32*)(&__IPSBAR[0x12C0])) -#define MCF_FEC_RMON_R_OCTETS (*(vuint32*)(&__IPSBAR[0x12C4])) -#define MCF_FEC_IEEE_R_DROP (*(vuint32*)(&__IPSBAR[0x12C8])) -#define MCF_FEC_IEEE_R_FRAME_OK (*(vuint32*)(&__IPSBAR[0x12CC])) -#define MCF_FEC_IEEE_R_CRC (*(vuint32*)(&__IPSBAR[0x12D0])) -#define MCF_FEC_IEEE_R_ALIGN (*(vuint32*)(&__IPSBAR[0x12D4])) -#define MCF_FEC_IEEE_R_MACERR (*(vuint32*)(&__IPSBAR[0x12D8])) -#define MCF_FEC_IEEE_R_FDXFC (*(vuint32*)(&__IPSBAR[0x12DC])) -#define MCF_FEC_IEEE_R_OCTETS_OK (*(vuint32*)(&__IPSBAR[0x12E0])) - - - -/* Bit definitions and macros for MCF_FEC_EIR */ -#define MCF_FEC_EIR_UN (0x80000) -#define MCF_FEC_EIR_RL (0x100000) -#define MCF_FEC_EIR_LC (0x200000) -#define MCF_FEC_EIR_EBERR (0x400000) -#define MCF_FEC_EIR_MII (0x800000) -#define MCF_FEC_EIR_RXB (0x1000000) -#define MCF_FEC_EIR_RXF (0x2000000) -#define MCF_FEC_EIR_TXB (0x4000000) -#define MCF_FEC_EIR_TXF (0x8000000) -#define MCF_FEC_EIR_GRA (0x10000000) -#define MCF_FEC_EIR_BABT (0x20000000) -#define MCF_FEC_EIR_BABR (0x40000000) -#define MCF_FEC_EIR_HBERR (0x80000000) -#define MCF_FEC_EIR_CLEAR_ALL (0xFFFFFFFF) - -/* Bit definitions and macros for MCF_FEC_EIMR */ -#define MCF_FEC_EIMR_UN (0x80000) -#define MCF_FEC_EIMR_RL (0x100000) -#define MCF_FEC_EIMR_LC (0x200000) -#define MCF_FEC_EIMR_EBERR (0x400000) -#define MCF_FEC_EIMR_MII (0x800000) -#define MCF_FEC_EIMR_RXB (0x1000000) -#define MCF_FEC_EIMR_RXF (0x2000000) -#define MCF_FEC_EIMR_TXB (0x4000000) -#define MCF_FEC_EIMR_TXF (0x8000000) -#define MCF_FEC_EIMR_GRA (0x10000000) -#define MCF_FEC_EIMR_BABT (0x20000000) -#define MCF_FEC_EIMR_BABR (0x40000000) -#define MCF_FEC_EIMR_HBERR (0x80000000) -#define MCF_FEC_EIMR_MASK_ALL (0) -#define MCF_FEC_EIMR_UNMASK_ALL (0xFFFFFFFF) - -/* Bit definitions and macros for MCF_FEC_RDAR */ -#define MCF_FEC_RDAR_R_DES_ACTIVE (0x1000000) - -/* Bit definitions and macros for MCF_FEC_TDAR */ -#define MCF_FEC_TDAR_X_DES_ACTIVE (0x1000000) - -/* Bit definitions and macros for MCF_FEC_ECR */ -#define MCF_FEC_ECR_RESET (0x1) -#define MCF_FEC_ECR_ETHER_EN (0x2) - -/* Bit definitions and macros for MCF_FEC_MMFR */ -#define MCF_FEC_MMFR_DATA(x) (((x)&0xFFFF)<<0) -#define MCF_FEC_MMFR_TA(x) (((x)&0x3)<<0x10) -#define MCF_FEC_MMFR_TA_10 (0x20000) -#define MCF_FEC_MMFR_RA(x) (((x)&0x1F)<<0x12) -#define MCF_FEC_MMFR_PA(x) (((x)&0x1F)<<0x17) -#define MCF_FEC_MMFR_OP(x) (((x)&0x3)<<0x1C) -#define MCF_FEC_MMFR_OP_READ (0x20000000) -#define MCF_FEC_MMFR_OP_WRITE (0x10000000) -#define MCF_FEC_MMFR_ST(x) (((x)&0x3)<<0x1E) -#define MCF_FEC_MMFR_ST_01 (0x40000000) - -/* Bit definitions and macros for MCF_FEC_MSCR */ -#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1) -#define MCF_FEC_MSCR_DIS_PREAMBLE (0x80) - -/* Bit definitions and macros for MCF_FEC_MIBC */ -#define MCF_FEC_MIBC_MIB_IDLE (0x40000000) -#define MCF_FEC_MIBC_MIB_DISABLE (0x80000000) - -/* Bit definitions and macros for MCF_FEC_RCR */ -#define MCF_FEC_RCR_LOOP (0x1) -#define MCF_FEC_RCR_DRT (0x2) -#define MCF_FEC_RCR_MII_MODE (0x4) -#define MCF_FEC_RCR_PROM (0x8) -#define MCF_FEC_RCR_BC_REJ (0x10) -#define MCF_FEC_RCR_FCE (0x20) -#define MCF_FEC_RCR_MAX_FL(x) (((x)&0x7FF)<<0x10) - -/* Bit definitions and macros for MCF_FEC_TCR */ -#define MCF_FEC_TCR_GTS (0x1) -#define MCF_FEC_TCR_HBC (0x2) -#define MCF_FEC_TCR_FDEN (0x4) -#define MCF_FEC_TCR_TFC_PAUSE (0x8) -#define MCF_FEC_TCR_RFC_PAUSE (0x10) - -/* Bit definitions and macros for MCF_FEC_PALR */ -#define MCF_FEC_PALR_PADDR1(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_PAUR */ -#define MCF_FEC_PAUR_TYPE(x) (((x)&0xFFFF)<<0) -#define MCF_FEC_PAUR_PADDR2(x) (((x)&0xFFFF)<<0x10) - -/* Bit definitions and macros for MCF_FEC_OPD */ -#define MCF_FEC_OPD_PAUSE_DUR(x) (((x)&0xFFFF)<<0) -#define MCF_FEC_OPD_OPCODE(x) (((x)&0xFFFF)<<0x10) - -/* Bit definitions and macros for MCF_FEC_IAUR */ -#define MCF_FEC_IAUR_IADDR1(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IALR */ -#define MCF_FEC_IALR_IADDR2(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_GAUR */ -#define MCF_FEC_GAUR_GADDR1(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_GALR */ -#define MCF_FEC_GALR_GADDR2(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_TFWR */ -#define MCF_FEC_TFWR_X_WMRK(x) (((x)&0x3)<<0) -#define MCF_FEC_TFWR_X_WMRK_64 (0) -#define MCF_FEC_TFWR_X_WMRK_128 (0x2) -#define MCF_FEC_TFWR_X_WMRK_192 (0x3) - -/* Bit definitions and macros for MCF_FEC_FRBR */ -#define MCF_FEC_FRBR_R_BOUND(x) (((x)&0xFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_FRSR */ -#define MCF_FEC_FRSR_R_FSTART(x) (((x)&0xFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_ERDSR */ -#define MCF_FEC_ERDSR_R_DES_START(x) (((x)&0x3FFFFFFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_ETSDR */ -#define MCF_FEC_ETSDR_X_DES_START(x) (((x)&0x3FFFFFFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_EMRBR */ -#define MCF_FEC_EMRBR_R_BUF_SIZE(x) (((x)&0x7F)<<0x4) - -/* Bit definitions and macros for MCF_FEC_RMON_T_DROP */ -#define MCF_FEC_RMON_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_PACKETS */ -#define MCF_FEC_RMON_T_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_BC_PKT */ -#define MCF_FEC_RMON_T_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_MC_PKT */ -#define MCF_FEC_RMON_T_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_CRC_ALIGN */ -#define MCF_FEC_RMON_T_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_UNDERSIZE */ -#define MCF_FEC_RMON_T_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_OVERSIZE */ -#define MCF_FEC_RMON_T_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_FRAG */ -#define MCF_FEC_RMON_T_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_JAB */ -#define MCF_FEC_RMON_T_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_COL */ -#define MCF_FEC_RMON_T_COL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P64 */ -#define MCF_FEC_RMON_T_P64_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P65TO127 */ -#define MCF_FEC_RMON_T_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P128TO255 */ -#define MCF_FEC_RMON_T_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P256TO511 */ -#define MCF_FEC_RMON_T_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P512TO1023 */ -#define MCF_FEC_RMON_T_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P1024TO2047 */ -#define MCF_FEC_RMON_T_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P_GTE2048 */ -#define MCF_FEC_RMON_T_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_OCTETS */ -#define MCF_FEC_RMON_T_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_DROP */ -#define MCF_FEC_IEEE_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_FRAME_OK */ -#define MCF_FEC_IEEE_T_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_1COL */ -#define MCF_FEC_IEEE_T_1COL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_MCOL */ -#define MCF_FEC_IEEE_T_MCOL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_DEF */ -#define MCF_FEC_IEEE_T_DEF_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_LCOL */ -#define MCF_FEC_IEEE_T_LCOL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_EXCOL */ -#define MCF_FEC_IEEE_T_EXCOL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_MACERR */ -#define MCF_FEC_IEEE_T_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_CSERR */ -#define MCF_FEC_IEEE_T_CSERR_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_SQE */ -#define MCF_FEC_IEEE_T_SQE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_FDXFC */ -#define MCF_FEC_IEEE_T_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_OCTETS_OK */ -#define MCF_FEC_IEEE_T_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_PACKETS */ -#define MCF_FEC_RMON_R_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_BC_PKT */ -#define MCF_FEC_RMON_R_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_MC_PKT */ -#define MCF_FEC_RMON_R_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_CRC_ALIGN */ -#define MCF_FEC_RMON_R_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_UNDERSIZE */ -#define MCF_FEC_RMON_R_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_OVERSIZE */ -#define MCF_FEC_RMON_R_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_FRAG */ -#define MCF_FEC_RMON_R_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_JAB */ -#define MCF_FEC_RMON_R_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_RESVD_0 */ -#define MCF_FEC_RMON_R_RESVD_0_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P64 */ -#define MCF_FEC_RMON_R_P64_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P65TO127 */ -#define MCF_FEC_RMON_R_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P128TO255 */ -#define MCF_FEC_RMON_R_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P256TO511 */ -#define MCF_FEC_RMON_R_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P512TO1023 */ -#define MCF_FEC_RMON_R_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P1024TO2047 */ -#define MCF_FEC_RMON_R_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P_GTE2048 */ -#define MCF_FEC_RMON_R_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_OCTETS */ -#define MCF_FEC_RMON_R_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_DROP */ -#define MCF_FEC_IEEE_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_FRAME_OK */ -#define MCF_FEC_IEEE_R_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_CRC */ -#define MCF_FEC_IEEE_R_CRC_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_ALIGN */ -#define MCF_FEC_IEEE_R_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_MACERR */ -#define MCF_FEC_IEEE_R_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_FDXFC */ -#define MCF_FEC_IEEE_R_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_OCTETS_OK */ -#define MCF_FEC_IEEE_R_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_FEC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h deleted file mode 100644 index 97b19722d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h +++ /dev/null @@ -1,132 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_FlexCAN_H__ -#define __MCF52235_FlexCAN_H__ - - -/********************************************************************* -* -* Flex Controller Area Network (FlexCAN) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_FlexCAN_CANMCR (*(vuint32*)(&__IPSBAR[0x1C0000])) -#define MCF_FlexCAN_CANCTRL (*(vuint32*)(&__IPSBAR[0x1C0004])) -#define MCF_FlexCAN_TIMER (*(vuint32*)(&__IPSBAR[0x1C0008])) -#define MCF_FlexCAN_RXGMASK (*(vuint32*)(&__IPSBAR[0x1C0010])) -#define MCF_FlexCAN_RX14MASK (*(vuint32*)(&__IPSBAR[0x1C0014])) -#define MCF_FlexCAN_RX15MASK (*(vuint32*)(&__IPSBAR[0x1C0018])) -#define MCF_FlexCAN_ERRCNT (*(vuint32*)(&__IPSBAR[0x1C001C])) -#define MCF_FlexCAN_ERRSTAT (*(vuint32*)(&__IPSBAR[0x1C0020])) -#define MCF_FlexCAN_IMASK (*(vuint32*)(&__IPSBAR[0x1C0028])) -#define MCF_FlexCAN_IFLAG (*(vuint32*)(&__IPSBAR[0x1C0030])) - - - -/* Bit definitions and macros for MCF_FlexCAN_CANMCR */ -#define MCF_FlexCAN_CANMCR_MAXMB(x) (((x)&0xF)<<0) -#define MCF_FlexCAN_CANMCR_LPMACK (0x100000) -#define MCF_FlexCAN_CANMCR_SUPV (0x800000) -#define MCF_FlexCAN_CANMCR_FRZACK (0x1000000) -#define MCF_FlexCAN_CANMCR_SOFTRST (0x2000000) -#define MCF_FlexCAN_CANMCR_NOTRDY (0x8000000) -#define MCF_FlexCAN_CANMCR_HALT (0x10000000) -#define MCF_FlexCAN_CANMCR_FRZ (0x40000000) -#define MCF_FlexCAN_CANMCR_MDIS (0x80000000) - -/* Bit definitions and macros for MCF_FlexCAN_CANCTRL */ -#define MCF_FlexCAN_CANCTRL_PROPSEG(x) (((x)&0x7)<<0) -#define MCF_FlexCAN_CANCTRL_LOM (0x8) -#define MCF_FlexCAN_CANCTRL_LBUF (0x10) -#define MCF_FlexCAN_CANCTRL_TSYNC (0x20) -#define MCF_FlexCAN_CANCTRL_BOFFREC (0x40) -#define MCF_FlexCAN_CANCTRL_SAMP (0x80) -#define MCF_FlexCAN_CANCTRL_LPB (0x1000) -#define MCF_FlexCAN_CANCTRL_CLK_SRC (0x2000) -#define MCF_FlexCAN_CANCTRL_ERRMSK (0x4000) -#define MCF_FlexCAN_CANCTRL_BOFFMSK (0x8000) -#define MCF_FlexCAN_CANCTRL_PSEG2(x) (((x)&0x7)<<0x10) -#define MCF_FlexCAN_CANCTRL_PSEG1(x) (((x)&0x7)<<0x13) -#define MCF_FlexCAN_CANCTRL_RJW(x) (((x)&0x3)<<0x16) -#define MCF_FlexCAN_CANCTRL_PRESDIV(x) (((x)&0xFF)<<0x18) - -/* Bit definitions and macros for MCF_FlexCAN_TIMER */ -#define MCF_FlexCAN_TIMER_TIMER(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_RXGMASK */ -#define MCF_FlexCAN_RXGMASK_MI(x) (((x)&0x1FFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_RX14MASK */ -#define MCF_FlexCAN_RX14MASK_MI(x) (((x)&0x1FFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_RX15MASK */ -#define MCF_FlexCAN_RX15MASK_MI(x) (((x)&0x1FFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_ERRCNT */ -#define MCF_FlexCAN_ERRCNT_TXECTR(x) (((x)&0xFF)<<0) -#define MCF_FlexCAN_ERRCNT_RXECTR(x) (((x)&0xFF)<<0x8) - -/* Bit definitions and macros for MCF_FlexCAN_ERRSTAT */ -#define MCF_FlexCAN_ERRSTAT_ERRINT (0x2) -#define MCF_FlexCAN_ERRSTAT_BOFFINT (0x4) -#define MCF_FlexCAN_ERRSTAT_FLTCONF(x) (((x)&0x3)<<0x4) -#define MCF_FlexCAN_ERRSTAT_FLTCONF_ACTIVE (0) -#define MCF_FlexCAN_ERRSTAT_FLTCONF_PASSIVE (0x10) -#define MCF_FlexCAN_ERRSTAT_FLTCONF_BUSOFF (0x20) -#define MCF_FlexCAN_ERRSTAT_TXRX (0x40) -#define MCF_FlexCAN_ERRSTAT_IDLE (0x80) -#define MCF_FlexCAN_ERRSTAT_RXWRN (0x100) -#define MCF_FlexCAN_ERRSTAT_TXWRN (0x200) -#define MCF_FlexCAN_ERRSTAT_STFERR (0x400) -#define MCF_FlexCAN_ERRSTAT_FRMERR (0x800) -#define MCF_FlexCAN_ERRSTAT_CRCERR (0x1000) -#define MCF_FlexCAN_ERRSTAT_ACKERR (0x2000) -#define MCF_FlexCAN_ERRSTAT_BIT0ERR (0x4000) -#define MCF_FlexCAN_ERRSTAT_BIT1ERR (0x8000) - -/* Bit definitions and macros for MCF_FlexCAN_IMASK */ -#define MCF_FlexCAN_IMASK_BUF0M (0x1) -#define MCF_FlexCAN_IMASK_BUF1M (0x2) -#define MCF_FlexCAN_IMASK_BUF2M (0x4) -#define MCF_FlexCAN_IMASK_BUF3M (0x8) -#define MCF_FlexCAN_IMASK_BUF4M (0x10) -#define MCF_FlexCAN_IMASK_BUF5M (0x20) -#define MCF_FlexCAN_IMASK_BUF6M (0x40) -#define MCF_FlexCAN_IMASK_BUF7M (0x80) -#define MCF_FlexCAN_IMASK_BUF8M (0x100) -#define MCF_FlexCAN_IMASK_BUF9M (0x200) -#define MCF_FlexCAN_IMASK_BUF10M (0x400) -#define MCF_FlexCAN_IMASK_BUF11M (0x800) -#define MCF_FlexCAN_IMASK_BUF12M (0x1000) -#define MCF_FlexCAN_IMASK_BUF13M (0x2000) -#define MCF_FlexCAN_IMASK_BUF14M (0x4000) -#define MCF_FlexCAN_IMASK_BUF15M (0x8000) -#define MCF_FlexCAN_IMASK_BUF(x) (0x1<<(x)) - -/* Bit definitions and macros for MCF_FlexCAN_IFLAG */ -#define MCF_FlexCAN_IFLAG_BUF0I (0x1) -#define MCF_FlexCAN_IFLAG_BUF1I (0x2) -#define MCF_FlexCAN_IFLAG_BUF2I (0x4) -#define MCF_FlexCAN_IFLAG_BUF3I (0x8) -#define MCF_FlexCAN_IFLAG_BUF4I (0x10) -#define MCF_FlexCAN_IFLAG_BUF5I (0x20) -#define MCF_FlexCAN_IFLAG_BUF6I (0x40) -#define MCF_FlexCAN_IFLAG_BUF7I (0x80) -#define MCF_FlexCAN_IFLAG_BUF8I (0x100) -#define MCF_FlexCAN_IFLAG_BUF9I (0x200) -#define MCF_FlexCAN_IFLAG_BUF10I (0x400) -#define MCF_FlexCAN_IFLAG_BUF11I (0x800) -#define MCF_FlexCAN_IFLAG_BUF12I (0x1000) -#define MCF_FlexCAN_IFLAG_BUF13I (0x2000) -#define MCF_FlexCAN_IFLAG_BUF14I (0x4000) -#define MCF_FlexCAN_IFLAG_BUF15I (0x8000) -#define MCF_FlexCAN_IFLAG_BUF(x) (0x1<<(x)) - - -#endif /* __MCF52235_FlexCAN_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h deleted file mode 100644 index 7f1fbb300..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_GIACR_H__ -#define __MCF52235_GIACR_H__ - - -/********************************************************************* -* -* Global Interrupt Acknowledge Control Registers Module (GIACR) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_GIACR_GSWIACK (*(vuint8 *)(&__IPSBAR[0xFE0])) -#define MCF_GIACR_GL1IACK (*(vuint8 *)(&__IPSBAR[0xFE4])) -#define MCF_GIACR_GL2IACK (*(vuint8 *)(&__IPSBAR[0xFE8])) -#define MCF_GIACR_GL3IACK (*(vuint8 *)(&__IPSBAR[0xFEC])) -#define MCF_GIACR_GL4IACK (*(vuint8 *)(&__IPSBAR[0xFF0])) -#define MCF_GIACR_GL5IACK (*(vuint8 *)(&__IPSBAR[0xFF4])) -#define MCF_GIACR_GL6IACK (*(vuint8 *)(&__IPSBAR[0xFF8])) -#define MCF_GIACR_GL7IACK (*(vuint8 *)(&__IPSBAR[0xFFC])) -#define MCF_GIACR_GLIACK(x) (*(vuint8 *)(&__IPSBAR[0xFE4 + ((x-1)*0x4)])) - - -/* Bit definitions and macros for MCF_GIACR_GSWIACK */ -#define MCF_GIACR_GSWIACK_VECTOR(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_GIACR_GLIACK */ -#define MCF_GIACR_GLIACK_VECTOR(x) (((x)&0xFF)<<0) - - -#endif /* __MCF52235_GIACR_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h deleted file mode 100644 index f12353e4b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h +++ /dev/null @@ -1,795 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_GPIO_H__ -#define __MCF52235_GPIO_H__ - - -/********************************************************************* -* -* General Purpose I/O (GPIO) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_GPIO_PORTNQ (*(vuint8 *)(&__IPSBAR[0x100008])) -#define MCF_GPIO_DDRNQ (*(vuint8 *)(&__IPSBAR[0x100020])) -#define MCF_GPIO_SETNQ (*(vuint8 *)(&__IPSBAR[0x100038])) -#define MCF_GPIO_CLRNQ (*(vuint8 *)(&__IPSBAR[0x100050])) -#define MCF_GPIO_PNQPAR (*(vuint16*)(&__IPSBAR[0x100068])) - -#define MCF_GPIO_PORTAN (*(vuint8 *)(&__IPSBAR[0x10000A])) -#define MCF_GPIO_DDRAN (*(vuint8 *)(&__IPSBAR[0x100022])) -#define MCF_GPIO_SETAN (*(vuint8 *)(&__IPSBAR[0x10003A])) -#define MCF_GPIO_CLRAN (*(vuint8 *)(&__IPSBAR[0x100052])) -#define MCF_GPIO_PANPAR (*(vuint8 *)(&__IPSBAR[0x10006A])) - -#define MCF_GPIO_PORTAS (*(vuint8 *)(&__IPSBAR[0x10000B])) -#define MCF_GPIO_DDRAS (*(vuint8 *)(&__IPSBAR[0x100023])) -#define MCF_GPIO_SETAS (*(vuint8 *)(&__IPSBAR[0x10003B])) -#define MCF_GPIO_CLRAS (*(vuint8 *)(&__IPSBAR[0x100053])) -#define MCF_GPIO_PASPAR (*(vuint8 *)(&__IPSBAR[0x10006B])) - -#define MCF_GPIO_PORTQS (*(vuint8 *)(&__IPSBAR[0x10000C])) -#define MCF_GPIO_DDRQS (*(vuint8 *)(&__IPSBAR[0x100024])) -#define MCF_GPIO_SETQS (*(vuint8 *)(&__IPSBAR[0x10003C])) -#define MCF_GPIO_CLRQS (*(vuint8 *)(&__IPSBAR[0x100054])) -#define MCF_GPIO_PQSPAR (*(vuint16*)(&__IPSBAR[0x10006C])) - -#define MCF_GPIO_PORTTA (*(vuint8 *)(&__IPSBAR[0x10000E])) -#define MCF_GPIO_DDRTA (*(vuint8 *)(&__IPSBAR[0x100026])) -#define MCF_GPIO_SETTA (*(vuint8 *)(&__IPSBAR[0x10003E])) -#define MCF_GPIO_CLRTA (*(vuint8 *)(&__IPSBAR[0x100056])) -#define MCF_GPIO_PTAPAR (*(vuint8 *)(&__IPSBAR[0x10006E])) - -#define MCF_GPIO_PORTTC (*(vuint8 *)(&__IPSBAR[0x10000F])) -#define MCF_GPIO_DDRTC (*(vuint8 *)(&__IPSBAR[0x100027])) -#define MCF_GPIO_SETTC (*(vuint8 *)(&__IPSBAR[0x10003F])) -#define MCF_GPIO_CLRTC (*(vuint8 *)(&__IPSBAR[0x100057])) -#define MCF_GPIO_PTCPAR (*(vuint8 *)(&__IPSBAR[0x10006F])) - -#define MCF_GPIO_PORTTD (*(vuint8 *)(&__IPSBAR[0x100010])) -#define MCF_GPIO_DDRTD (*(vuint8 *)(&__IPSBAR[0x100028])) -#define MCF_GPIO_SETTD (*(vuint8 *)(&__IPSBAR[0x100040])) -#define MCF_GPIO_CLRTD (*(vuint8 *)(&__IPSBAR[0x100058])) -#define MCF_GPIO_PTDPAR (*(vuint8 *)(&__IPSBAR[0x100070])) - -#define MCF_GPIO_PORTUA (*(vuint8 *)(&__IPSBAR[0x100011])) -#define MCF_GPIO_DDRUA (*(vuint8 *)(&__IPSBAR[0x100029])) -#define MCF_GPIO_SETUA (*(vuint8 *)(&__IPSBAR[0x100041])) -#define MCF_GPIO_CLRUA (*(vuint8 *)(&__IPSBAR[0x100059])) -#define MCF_GPIO_PUAPAR (*(vuint8 *)(&__IPSBAR[0x100071])) - -#define MCF_GPIO_PORTUB (*(vuint8 *)(&__IPSBAR[0x100012])) -#define MCF_GPIO_DDRUB (*(vuint8 *)(&__IPSBAR[0x10002A])) -#define MCF_GPIO_SETUB (*(vuint8 *)(&__IPSBAR[0x100042])) -#define MCF_GPIO_CLRUB (*(vuint8 *)(&__IPSBAR[0x10005A])) -#define MCF_GPIO_PUBPAR (*(vuint8 *)(&__IPSBAR[0x100072])) - -#define MCF_GPIO_PORTUC (*(vuint8 *)(&__IPSBAR[0x100013])) -#define MCF_GPIO_DDRUC (*(vuint8 *)(&__IPSBAR[0x10002B])) -#define MCF_GPIO_SETUC (*(vuint8 *)(&__IPSBAR[0x100043])) -#define MCF_GPIO_CLRUC (*(vuint8 *)(&__IPSBAR[0x10005B])) -#define MCF_GPIO_PUCPAR (*(vuint8 *)(&__IPSBAR[0x100073])) - -#define MCF_GPIO_PORTDD (*(vuint8 *)(&__IPSBAR[0x100014])) -#define MCF_GPIO_DDRDD (*(vuint8 *)(&__IPSBAR[0x10002C])) -#define MCF_GPIO_SETDD (*(vuint8 *)(&__IPSBAR[0x100044])) -#define MCF_GPIO_CLRDD (*(vuint8 *)(&__IPSBAR[0x10005C])) -#define MCF_GPIO_PDDPAR (*(vuint8 *)(&__IPSBAR[0x100074])) - -#define MCF_GPIO_PORTLD (*(vuint8 *)(&__IPSBAR[0x100015])) -#define MCF_GPIO_DDRLD (*(vuint8 *)(&__IPSBAR[0x10002D])) -#define MCF_GPIO_SETLD (*(vuint8 *)(&__IPSBAR[0x100045])) -#define MCF_GPIO_CLRLD (*(vuint8 *)(&__IPSBAR[0x10005D])) -#define MCF_GPIO_PLDPAR (*(vuint8 *)(&__IPSBAR[0x100075])) - -#define MCF_GPIO_PORTGP (*(vuint8 *)(&__IPSBAR[0x100016])) -#define MCF_GPIO_DDRGP (*(vuint8 *)(&__IPSBAR[0x10002E])) -#define MCF_GPIO_SETGP (*(vuint8 *)(&__IPSBAR[0x100046])) -#define MCF_GPIO_CLRGP (*(vuint8 *)(&__IPSBAR[0x10005E])) -#define MCF_GPIO_PGPPAR (*(vuint8 *)(&__IPSBAR[0x100076])) - - - -/* Bit definitions and macros for MCF_GPIO_PORTNQ */ -#define MCF_GPIO_PORTNQ_PORTNQ1 (0x2) -#define MCF_GPIO_PORTNQ_PORTNQ2 (0x4) -#define MCF_GPIO_PORTNQ_PORTNQ3 (0x8) -#define MCF_GPIO_PORTNQ_PORTNQ4 (0x10) -#define MCF_GPIO_PORTNQ_PORTNQ5 (0x20) -#define MCF_GPIO_PORTNQ_PORTNQ6 (0x40) -#define MCF_GPIO_PORTNQ_PORTNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRNQ */ -#define MCF_GPIO_DDRNQ_DDRNQ1 (0x2) -#define MCF_GPIO_DDRNQ_DDRNQ2 (0x4) -#define MCF_GPIO_DDRNQ_DDRNQ3 (0x8) -#define MCF_GPIO_DDRNQ_DDRNQ4 (0x10) -#define MCF_GPIO_DDRNQ_DDRNQ5 (0x20) -#define MCF_GPIO_DDRNQ_DDRNQ6 (0x40) -#define MCF_GPIO_DDRNQ_DDRNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETNQ */ -#define MCF_GPIO_SETNQ_SETNQ1 (0x2) -#define MCF_GPIO_SETNQ_SETNQ2 (0x4) -#define MCF_GPIO_SETNQ_SETNQ3 (0x8) -#define MCF_GPIO_SETNQ_SETNQ4 (0x10) -#define MCF_GPIO_SETNQ_SETNQ5 (0x20) -#define MCF_GPIO_SETNQ_SETNQ6 (0x40) -#define MCF_GPIO_SETNQ_SETNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRNQ */ -#define MCF_GPIO_CLRNQ_CLRNQ1 (0x2) -#define MCF_GPIO_CLRNQ_CLRNQ2 (0x4) -#define MCF_GPIO_CLRNQ_CLRNQ3 (0x8) -#define MCF_GPIO_CLRNQ_CLRNQ4 (0x10) -#define MCF_GPIO_CLRNQ_CLRNQ5 (0x20) -#define MCF_GPIO_CLRNQ_CLRNQ6 (0x40) -#define MCF_GPIO_CLRNQ_CLRNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PNQPAR */ -#define MCF_GPIO_PNQPAR_PNQPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PNQPAR_IRQ1_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ1_IRQ1 (0x4) -#define MCF_GPIO_PNQPAR_IRQ1_SYNCA (0x8) -#define MCF_GPIO_PNQPAR_IRQ1_PWM1 (0xC) -#define MCF_GPIO_PNQPAR_PNQPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PNQPAR_IRQ2_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ2_IRQ2 (0x10) -#define MCF_GPIO_PNQPAR_IRQ2_FEC_RXD3 (0x30) -#define MCF_GPIO_PNQPAR_PNQPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PNQPAR_IRQ3_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ3_IRQ3 (0x40) -#define MCF_GPIO_PNQPAR_IRQ3_FEC_RXD2 (0xC0) -#define MCF_GPIO_PNQPAR_PNQPAR4(x) (((x)&0x3)<<0x8) -#define MCF_GPIO_PNQPAR_IRQ4_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ4_IRQ4 (0x100) -#define MCF_GPIO_PNQPAR_PNQPAR5(x) (((x)&0x3)<<0xA) -#define MCF_GPIO_PNQPAR_IRQ5_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ5_IRQ5 (0x400) -#define MCF_GPIO_PNQPAR_IRQ5_FEC_RXD1 (0xC00) -#define MCF_GPIO_PNQPAR_PNQPAR6(x) (((x)&0x3)<<0xC) -#define MCF_GPIO_PNQPAR_IRQ6_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ6_IRQ6 (0x1000) -#define MCF_GPIO_PNQPAR_IRQ6_FEC_RXER (0x3000) -#define MCF_GPIO_PNQPAR_PNQPAR7(x) (((x)&0x3)<<0xE) -#define MCF_GPIO_PNQPAR_IRQ7_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ7_IRQ7 (0x4000) - -/* Bit definitions and macros for MCF_GPIO_PORTAN */ -#define MCF_GPIO_PORTAN_PORTAN0 (0x1) -#define MCF_GPIO_PORTAN_PORTAN1 (0x2) -#define MCF_GPIO_PORTAN_PORTAN2 (0x4) -#define MCF_GPIO_PORTAN_PORTAN3 (0x8) -#define MCF_GPIO_PORTAN_PORTAN4 (0x10) -#define MCF_GPIO_PORTAN_PORTAN5 (0x20) -#define MCF_GPIO_PORTAN_PORTAN6 (0x40) -#define MCF_GPIO_PORTAN_PORTAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRAN */ -#define MCF_GPIO_DDRAN_DDRAN0 (0x1) -#define MCF_GPIO_DDRAN_DDRAN1 (0x2) -#define MCF_GPIO_DDRAN_DDRAN2 (0x4) -#define MCF_GPIO_DDRAN_DDRAN3 (0x8) -#define MCF_GPIO_DDRAN_DDRAN4 (0x10) -#define MCF_GPIO_DDRAN_DDRAN5 (0x20) -#define MCF_GPIO_DDRAN_DDRAN6 (0x40) -#define MCF_GPIO_DDRAN_DDRAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETAN */ -#define MCF_GPIO_SETAN_SETAN0 (0x1) -#define MCF_GPIO_SETAN_SETAN1 (0x2) -#define MCF_GPIO_SETAN_SETAN2 (0x4) -#define MCF_GPIO_SETAN_SETAN3 (0x8) -#define MCF_GPIO_SETAN_SETAN4 (0x10) -#define MCF_GPIO_SETAN_SETAN5 (0x20) -#define MCF_GPIO_SETAN_SETAN6 (0x40) -#define MCF_GPIO_SETAN_SETAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRAN */ -#define MCF_GPIO_CLRAN_CLRAN0 (0x1) -#define MCF_GPIO_CLRAN_CLRAN1 (0x2) -#define MCF_GPIO_CLRAN_CLRAN2 (0x4) -#define MCF_GPIO_CLRAN_CLRAN3 (0x8) -#define MCF_GPIO_CLRAN_CLRAN4 (0x10) -#define MCF_GPIO_CLRAN_CLRAN5 (0x20) -#define MCF_GPIO_CLRAN_CLRAN6 (0x40) -#define MCF_GPIO_CLRAN_CLRAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PANPAR */ -#define MCF_GPIO_PANPAR_PANPAR0 (0x1) -#define MCF_GPIO_PANPAR_AN0_GPIO (0) -#define MCF_GPIO_PANPAR_AN0_AN0 (0x1) -#define MCF_GPIO_PANPAR_PANPAR1 (0x2) -#define MCF_GPIO_PANPAR_AN1_GPIO (0) -#define MCF_GPIO_PANPAR_AN1_AN1 (0x2) -#define MCF_GPIO_PANPAR_PANPAR2 (0x4) -#define MCF_GPIO_PANPAR_AN2_GPIO (0) -#define MCF_GPIO_PANPAR_AN2_AN2 (0x4) -#define MCF_GPIO_PANPAR_PANPAR3 (0x8) -#define MCF_GPIO_PANPAR_AN3_GPIO (0) -#define MCF_GPIO_PANPAR_AN3_AN3 (0x8) -#define MCF_GPIO_PANPAR_PANPAR4 (0x10) -#define MCF_GPIO_PANPAR_AN4_GPIO (0) -#define MCF_GPIO_PANPAR_AN4_AN4 (0x10) -#define MCF_GPIO_PANPAR_PANPAR5 (0x20) -#define MCF_GPIO_PANPAR_AN5_GPIO (0) -#define MCF_GPIO_PANPAR_AN5_AN5 (0x20) -#define MCF_GPIO_PANPAR_PANPAR6 (0x40) -#define MCF_GPIO_PANPAR_AN6_GPIO (0) -#define MCF_GPIO_PANPAR_AN6_AN6 (0x40) -#define MCF_GPIO_PANPAR_PANPAR7 (0x80) -#define MCF_GPIO_PANPAR_AN7_GPIO (0) -#define MCF_GPIO_PANPAR_AN7_AN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PORTAS */ -#define MCF_GPIO_PORTAS_PORTAS0 (0x1) -#define MCF_GPIO_PORTAS_PORTAS1 (0x2) -#define MCF_GPIO_PORTAS_PORTAS2 (0x4) -#define MCF_GPIO_PORTAS_PORTAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRAS */ -#define MCF_GPIO_DDRAS_DDRAS0 (0x1) -#define MCF_GPIO_DDRAS_DDRAS1 (0x2) -#define MCF_GPIO_DDRAS_DDRAS2 (0x4) -#define MCF_GPIO_DDRAS_DDRAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETAS */ -#define MCF_GPIO_SETAS_SETAS0 (0x1) -#define MCF_GPIO_SETAS_SETAS1 (0x2) -#define MCF_GPIO_SETAS_SETAS2 (0x4) -#define MCF_GPIO_SETAS_SETAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRAS */ -#define MCF_GPIO_CLRAS_CLRAS0 (0x1) -#define MCF_GPIO_CLRAS_CLRAS1 (0x2) -#define MCF_GPIO_CLRAS_CLRAS2 (0x4) -#define MCF_GPIO_CLRAS_CLRAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PASPAR */ -#define MCF_GPIO_PASPAR_PASPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PASPAR_SCL_GPIO (0) -#define MCF_GPIO_PASPAR_SCL_SCL (0x1) -#define MCF_GPIO_PASPAR_SCL_CANTX (0x2) -#define MCF_GPIO_PASPAR_SCL_UTXD2 (0x3) -#define MCF_GPIO_PASPAR_PASPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PASPAR_SDA_GPIO (0) -#define MCF_GPIO_PASPAR_SDA_SDA (0x4) -#define MCF_GPIO_PASPAR_SDA_CANRX (0x8) -#define MCF_GPIO_PASPAR_SDA_URXD2 (0xC) -#define MCF_GPIO_PASPAR_PASPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PASPAR_SYNCB_GPIO (0) -#define MCF_GPIO_PASPAR_SYNCB_SYNCB (0x10) -#define MCF_GPIO_PASPAR_SYNCB_CANTX (0x20) -#define MCF_GPIO_PASPAR_SYNCB_FEC_MDC (0x30) -#define MCF_GPIO_PASPAR_PASPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PASPAR_SYNCA_GPIO (0) -#define MCF_GPIO_PASPAR_SYNCA_SYNCA (0x40) -#define MCF_GPIO_PASPAR_SYNCA_CANRX (0x80) -#define MCF_GPIO_PASPAR_SYNC_FEC_MDIO (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTQS */ -#define MCF_GPIO_PORTQS_PORTQS0 (0x1) -#define MCF_GPIO_PORTQS_PORTQS1 (0x2) -#define MCF_GPIO_PORTQS_PORTQS2 (0x4) -#define MCF_GPIO_PORTQS_PORTQS3 (0x8) -#define MCF_GPIO_PORTQS_PORTQS4 (0x10) -#define MCF_GPIO_PORTQS_PORTQS5 (0x20) -#define MCF_GPIO_PORTQS_PORTQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_DDRQS */ -#define MCF_GPIO_DDRQS_DDRQS0 (0x1) -#define MCF_GPIO_DDRQS_DDRQS1 (0x2) -#define MCF_GPIO_DDRQS_DDRQS2 (0x4) -#define MCF_GPIO_DDRQS_DDRQS3 (0x8) -#define MCF_GPIO_DDRQS_DDRQS4 (0x10) -#define MCF_GPIO_DDRQS_DDRQS5 (0x20) -#define MCF_GPIO_DDRQS_DDRQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_SETQS */ -#define MCF_GPIO_SETQS_SETQS0 (0x1) -#define MCF_GPIO_SETQS_SETQS1 (0x2) -#define MCF_GPIO_SETQS_SETQS2 (0x4) -#define MCF_GPIO_SETQS_SETQS3 (0x8) -#define MCF_GPIO_SETQS_SETQS4 (0x10) -#define MCF_GPIO_SETQS_SETQS5 (0x20) -#define MCF_GPIO_SETQS_SETQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_CLRQS */ -#define MCF_GPIO_CLRQS_CLRQS0 (0x1) -#define MCF_GPIO_CLRQS_CLRQS1 (0x2) -#define MCF_GPIO_CLRQS_CLRQS2 (0x4) -#define MCF_GPIO_CLRQS_CLRQS3 (0x8) -#define MCF_GPIO_CLRQS_CLRQS4 (0x10) -#define MCF_GPIO_CLRQS_CLRQS5 (0x20) -#define MCF_GPIO_CLRQS_CLRQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_PQSPAR */ -#define MCF_GPIO_PQSPAR_PQSPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_DOUT (0x1) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_CANTX (0x2) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_UTXD1 (0x3) -#define MCF_GPIO_PQSPAR_PQSPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PQSPAR_QSPI_DIN_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_DIN_DIN (0x4) -#define MCF_GPIO_PQSPAR_QSPI_DIN_CANRX (0x8) -#define MCF_GPIO_PQSPAR_QSPI_DIN_URXD1 (0xC) -#define MCF_GPIO_PQSPAR_PQSPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PQSPAR_QSPI_CLK_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CLK_CLK (0x10) -#define MCF_GPIO_PQSPAR_QSPI_CLK_SCL (0x20) -#define MCF_GPIO_PQSPAR_QSPI_CLK_URTS1 (0x30) -#define MCF_GPIO_PQSPAR_PQSPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PQSPAR_QSPI_CS0_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS0_CS0 (0x40) -#define MCF_GPIO_PQSPAR_QSPI_CS0_SDA (0x80) -#define MCF_GPIO_PQSPAR_QSPI_CS0_UCTS1 (0xC0) -#define MCF_GPIO_PQSPAR_PQSPAR4(x) (((x)&0x3)<<0x8) -#define MCF_GPIO_PQSPAR_QSPI_CS1_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS1_CS1 (0x100) -#define MCF_GPIO_PQSPAR_QSPI_CS1_FEC_TXEN (0x300) -#define MCF_GPIO_PQSPAR_PQSPAR5(x) (((x)&0x3)<<0xA) -#define MCF_GPIO_PQSPAR_QSPI_CS2_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS2_CS2 (0x400) -#define MCF_GPIO_PQSPAR_QSPI_CS2_FEC_TXCLK (0xC00) -#define MCF_GPIO_PQSPAR_PQSPAR6(x) (((x)&0x3)<<0xC) -#define MCF_GPIO_PQSPAR_QSPI_CS3_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS3_CS3 (0x1000) -#define MCF_GPIO_PQSPAR_QSPI_CS3_SYNCA (0x2000) -#define MCF_GPIO_PQSPAR_QSPI_CS3_SYNCB (0x3000) - -/* Bit definitions and macros for MCF_GPIO_PORTTA */ -#define MCF_GPIO_PORTTA_PORTTA0 (0x1) -#define MCF_GPIO_PORTTA_PORTTA1 (0x2) -#define MCF_GPIO_PORTTA_PORTTA2 (0x4) -#define MCF_GPIO_PORTTA_PORTTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRTA */ -#define MCF_GPIO_DDRTA_DDRTA0 (0x1) -#define MCF_GPIO_DDRTA_DDRTA1 (0x2) -#define MCF_GPIO_DDRTA_DDRTA2 (0x4) -#define MCF_GPIO_DDRTA_DDRTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETTA */ -#define MCF_GPIO_SETTA_SETTA0 (0x1) -#define MCF_GPIO_SETTA_SETTA1 (0x2) -#define MCF_GPIO_SETTA_SETTA2 (0x4) -#define MCF_GPIO_SETTA_SETTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRTA */ -#define MCF_GPIO_CLRTA_CLRTA0 (0x1) -#define MCF_GPIO_CLRTA_CLRTA1 (0x2) -#define MCF_GPIO_CLRTA_CLRTA2 (0x4) -#define MCF_GPIO_CLRTA_CLRTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PTAPAR */ -#define MCF_GPIO_PTAPAR_PTAPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PTAPAR_GPT0_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT0_GPT0 (0x1) -#define MCF_GPIO_PTAPAR_GPT0_FEC_TXER (0x2) -#define MCF_GPIO_PTAPAR_GPT0_PWM1 (0x3) -#define MCF_GPIO_PTAPAR_PTAPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PTAPAR_GPT1_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT1_GPT1 (0x4) -#define MCF_GPIO_PTAPAR_GPT1_FEC_TXD1 (0x8) -#define MCF_GPIO_PTAPAR_GPT1_PWM3 (0xC) -#define MCF_GPIO_PTAPAR_PTAPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PTAPAR_GPT2_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT2_GPT2 (0x10) -#define MCF_GPIO_PTAPAR_GPT2_FEC_TXD2 (0x20) -#define MCF_GPIO_PTAPAR_GPT2_PWM5 (0x30) -#define MCF_GPIO_PTAPAR_PTAPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PTAPAR_GPT3_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT3_GPT3 (0x40) -#define MCF_GPIO_PTAPAR_GPT3_FEC_TXD3 (0x80) -#define MCF_GPIO_PTAPAR_GPT3_PWM7 (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTTC */ -#define MCF_GPIO_PORTTC_PORTTC0 (0x1) -#define MCF_GPIO_PORTTC_PORTTC1 (0x2) -#define MCF_GPIO_PORTTC_PORTTC2 (0x4) -#define MCF_GPIO_PORTTC_PORTTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRTC */ -#define MCF_GPIO_DDRTC_DDRTC0 (0x1) -#define MCF_GPIO_DDRTC_DDRTC1 (0x2) -#define MCF_GPIO_DDRTC_DDRTC2 (0x4) -#define MCF_GPIO_DDRTC_DDRTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETTC */ -#define MCF_GPIO_SETTC_SETTC0 (0x1) -#define MCF_GPIO_SETTC_SETTC1 (0x2) -#define MCF_GPIO_SETTC_SETTC2 (0x4) -#define MCF_GPIO_SETTC_SETTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRTC */ -#define MCF_GPIO_CLRTC_CLRTC0 (0x1) -#define MCF_GPIO_CLRTC_CLRTC1 (0x2) -#define MCF_GPIO_CLRTC_CLRTC2 (0x4) -#define MCF_GPIO_CLRTC_CLRTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PTCPAR */ -#define MCF_GPIO_PTCPAR_PTCPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PTCPAR_DTIN0_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN0_DTIN0 (0x1) -#define MCF_GPIO_PTCPAR_DTIN0_DTOUT0 (0x2) -#define MCF_GPIO_PTCPAR_DTIN0_PWM0 (0x3) -#define MCF_GPIO_PTCPAR_PTCPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PTCPAR_DTIN1_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN1_DTIN1 (0x4) -#define MCF_GPIO_PTCPAR_DTIN1_DTOUT1 (0x8) -#define MCF_GPIO_PTCPAR_DTIN1_PWM2 (0xC) -#define MCF_GPIO_PTCPAR_PTCPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PTCPAR_DTIN2_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN2_DTIN2 (0x10) -#define MCF_GPIO_PTCPAR_DTIN2_DTOUT2 (0x20) -#define MCF_GPIO_PTCPAR_DTIN2_PWM4 (0x30) -#define MCF_GPIO_PTCPAR_PTCPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PTCPAR_DTIN3_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN3_DTIN3 (0x40) -#define MCF_GPIO_PTCPAR_DTIN3_DTOUT3 (0x80) -#define MCF_GPIO_PTCPAR_DTIN3_PWM6 (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTTD */ -#define MCF_GPIO_PORTTD_PORTTD0 (0x1) -#define MCF_GPIO_PORTTD_PORTTD1 (0x2) -#define MCF_GPIO_PORTTD_PORTTD2 (0x4) -#define MCF_GPIO_PORTTD_PORTTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRTD */ -#define MCF_GPIO_DDRTD_DDRTD0 (0x1) -#define MCF_GPIO_DDRTD_DDRTD1 (0x2) -#define MCF_GPIO_DDRTD_DDRTD2 (0x4) -#define MCF_GPIO_DDRTD_DDRTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETTD */ -#define MCF_GPIO_SETTD_SETTD0 (0x1) -#define MCF_GPIO_SETTD_SETTD1 (0x2) -#define MCF_GPIO_SETTD_SETTD2 (0x4) -#define MCF_GPIO_SETTD_SETTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRTD */ -#define MCF_GPIO_CLRTD_CLRTD0 (0x1) -#define MCF_GPIO_CLRTD_CLRTD1 (0x2) -#define MCF_GPIO_CLRTD_CLRTD2 (0x4) -#define MCF_GPIO_CLRTD_CLRTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PTDPAR */ -#define MCF_GPIO_PTDPAR_PTDPAR0 (0x1) -#define MCF_GPIO_PTDPAR_PWM1_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM1_PWM1 (0x1) -#define MCF_GPIO_PTDPAR_PTDPAR1 (0x2) -#define MCF_GPIO_PTDPAR_PWM3_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM3_PWM3 (0x2) -#define MCF_GPIO_PTDPAR_PTDPAR2 (0x4) -#define MCF_GPIO_PTDPAR_PWM5_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM5_PWM5 (0x4) -#define MCF_GPIO_PTDPAR_PTDPAR3 (0x8) -#define MCF_GPIO_PTDPAR_PWM7_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM7_PWM7 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PORTUA */ -#define MCF_GPIO_PORTUA_PORTUA0 (0x1) -#define MCF_GPIO_PORTUA_PORTUA1 (0x2) -#define MCF_GPIO_PORTUA_PORTUA2 (0x4) -#define MCF_GPIO_PORTUA_PORTUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRUA */ -#define MCF_GPIO_DDRUA_DDRUA0 (0x1) -#define MCF_GPIO_DDRUA_DDRUA1 (0x2) -#define MCF_GPIO_DDRUA_DDRUA2 (0x4) -#define MCF_GPIO_DDRUA_DDRUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETUA */ -#define MCF_GPIO_SETUA_SETUA0 (0x1) -#define MCF_GPIO_SETUA_SETUA1 (0x2) -#define MCF_GPIO_SETUA_SETUA2 (0x4) -#define MCF_GPIO_SETUA_SETUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRUA */ -#define MCF_GPIO_CLRUA_CLRUA0 (0x1) -#define MCF_GPIO_CLRUA_CLRUA1 (0x2) -#define MCF_GPIO_CLRUA_CLRUA2 (0x4) -#define MCF_GPIO_CLRUA_CLRUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PUAPAR */ -#define MCF_GPIO_PUAPAR_PUAPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PUAPAR_UTXD0_GPIO (0) -#define MCF_GPIO_PUAPAR_UTXD0_UTXD0 (0x1) -#define MCF_GPIO_PUAPAR_UTXD0_FEC_CRS (0x3) -#define MCF_GPIO_PUAPAR_PUAPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PUAPAR_URXD0_GPIO (0) -#define MCF_GPIO_PUAPAR_URXD0_URXD0 (0x4) -#define MCF_GPIO_PUAPAR_URXD0_FEC_RXD0 (0xC) -#define MCF_GPIO_PUAPAR_PUAPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PUAPAR_URTS0_GPIO (0) -#define MCF_GPIO_PUAPAR_URTS0_URTS0 (0x10) -#define MCF_GPIO_PUAPAR_URTS0_CANTX (0x20) -#define MCF_GPIO_PUAPAR_URTS0_FEC_RXDV (0x30) -#define MCF_GPIO_PUAPAR_PUAPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PUAPAR_UCTS0_GPIO (0) -#define MCF_GPIO_PUAPAR_UCTS0_UCTS0 (0x40) -#define MCF_GPIO_PUAPAR_UCTS0_CANRX (0x80) -#define MCF_GPIO_PUAPAR_UCTS0_FEC_RXCLK (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTUB */ -#define MCF_GPIO_PORTUB_PORTUB0 (0x1) -#define MCF_GPIO_PORTUB_PORTUB1 (0x2) -#define MCF_GPIO_PORTUB_PORTUB2 (0x4) -#define MCF_GPIO_PORTUB_PORTUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRUB */ -#define MCF_GPIO_DDRUB_DDRUB0 (0x1) -#define MCF_GPIO_DDRUB_DDRUB1 (0x2) -#define MCF_GPIO_DDRUB_DDRUB2 (0x4) -#define MCF_GPIO_DDRUB_DDRUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETUB */ -#define MCF_GPIO_SETUB_SETUB0 (0x1) -#define MCF_GPIO_SETUB_SETUB1 (0x2) -#define MCF_GPIO_SETUB_SETUB2 (0x4) -#define MCF_GPIO_SETUB_SETUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRUB */ -#define MCF_GPIO_CLRUB_CLRUB0 (0x1) -#define MCF_GPIO_CLRUB_CLRUB1 (0x2) -#define MCF_GPIO_CLRUB_CLRUB2 (0x4) -#define MCF_GPIO_CLRUB_CLRUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PUBPAR */ -#define MCF_GPIO_PUBPAR_PUBPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PUBPAR_UTXD1_GPIO (0) -#define MCF_GPIO_PUBPAR_UTXD1_UTXD1 (0x1) -#define MCF_GPIO_PUBPAR_UTXD1_FEC_COL (0x3) -#define MCF_GPIO_PUBPAR_PUBPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PUBPAR_URXD1_GPIO (0) -#define MCF_GPIO_PUBPAR_URXD1_URXD1 (0x4) -#define MCF_GPIO_PUBPAR_URXD1_FEC_TXD0 (0xC) -#define MCF_GPIO_PUBPAR_PUBPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PUBPAR_URTS1_GPIO (0) -#define MCF_GPIO_PUBPAR_URTS1_URTS1 (0x10) -#define MCF_GPIO_PUBPAR_URTS1_SYNCB (0x20) -#define MCF_GPIO_PUBPAR_URTS1_UTXD2 (0x30) -#define MCF_GPIO_PUBPAR_PUBPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PUBPAR_UCTS1_GPIO (0) -#define MCF_GPIO_PUBPAR_UCTS1_UCTS1 (0x40) -#define MCF_GPIO_PUBPAR_UCTS1_SYNCA (0x80) -#define MCF_GPIO_PUBPAR_UCTS1_URXD2 (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTUC */ -#define MCF_GPIO_PORTUC_PORTUC0 (0x1) -#define MCF_GPIO_PORTUC_PORTUC1 (0x2) -#define MCF_GPIO_PORTUC_PORTUC2 (0x4) -#define MCF_GPIO_PORTUC_PORTUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRUC */ -#define MCF_GPIO_DDRUC_DDRUC0 (0x1) -#define MCF_GPIO_DDRUC_DDRUC1 (0x2) -#define MCF_GPIO_DDRUC_DDRUC2 (0x4) -#define MCF_GPIO_DDRUC_DDRUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETUC */ -#define MCF_GPIO_SETUC_SETUC0 (0x1) -#define MCF_GPIO_SETUC_SETUC1 (0x2) -#define MCF_GPIO_SETUC_SETUC2 (0x4) -#define MCF_GPIO_SETUC_SETUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRUC */ -#define MCF_GPIO_CLRUC_CLRUC0 (0x1) -#define MCF_GPIO_CLRUC_CLRUC1 (0x2) -#define MCF_GPIO_CLRUC_CLRUC2 (0x4) -#define MCF_GPIO_CLRUC_CLRUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PUCPAR */ -#define MCF_GPIO_PUCPAR_PUCPAR0 (0x1) -#define MCF_GPIO_PUCPAR_UTXD2_GPIO (0) -#define MCF_GPIO_PUCPAR_UTXD2_UTXD2 (0x1) -#define MCF_GPIO_PUCPAR_PUCPAR1 (0x2) -#define MCF_GPIO_PUCPAR_URXD2_GPIO (0) -#define MCF_GPIO_PUCPAR_URXD2_URXD2 (0x2) -#define MCF_GPIO_PUCPAR_PUCPAR2 (0x4) -#define MCF_GPIO_PUCPAR_URTS2_GPIO (0) -#define MCF_GPIO_PUCPAR_URTS2_URTS2 (0x4) -#define MCF_GPIO_PUCPAR_PUCPAR3 (0x8) -#define MCF_GPIO_PUCPAR_UCTS2_GPIO (0) -#define MCF_GPIO_PUCPAR_UCTS2_UCTS2 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PORTDD */ -#define MCF_GPIO_PORTDD_PORTDD0 (0x1) -#define MCF_GPIO_PORTDD_PORTDD1 (0x2) -#define MCF_GPIO_PORTDD_PORTDD2 (0x4) -#define MCF_GPIO_PORTDD_PORTDD3 (0x8) -#define MCF_GPIO_PORTDD_PORTDD4 (0x10) -#define MCF_GPIO_PORTDD_PORTDD5 (0x20) -#define MCF_GPIO_PORTDD_PORTDD6 (0x40) -#define MCF_GPIO_PORTDD_PORTDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRDD */ -#define MCF_GPIO_DDRDD_DDRDD0 (0x1) -#define MCF_GPIO_DDRDD_DDRDD1 (0x2) -#define MCF_GPIO_DDRDD_DDRDD2 (0x4) -#define MCF_GPIO_DDRDD_DDRDD3 (0x8) -#define MCF_GPIO_DDRDD_DDRDD4 (0x10) -#define MCF_GPIO_DDRDD_DDRDD5 (0x20) -#define MCF_GPIO_DDRDD_DDRDD6 (0x40) -#define MCF_GPIO_DDRDD_DDRDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETDD */ -#define MCF_GPIO_SETDD_SETDD0 (0x1) -#define MCF_GPIO_SETDD_SETDD1 (0x2) -#define MCF_GPIO_SETDD_SETDD2 (0x4) -#define MCF_GPIO_SETDD_SETDD3 (0x8) -#define MCF_GPIO_SETDD_SETDD4 (0x10) -#define MCF_GPIO_SETDD_SETDD5 (0x20) -#define MCF_GPIO_SETDD_SETDD6 (0x40) -#define MCF_GPIO_SETDD_SETDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRDD */ -#define MCF_GPIO_CLRDD_CLRDD0 (0x1) -#define MCF_GPIO_CLRDD_CLRDD1 (0x2) -#define MCF_GPIO_CLRDD_CLRDD2 (0x4) -#define MCF_GPIO_CLRDD_CLRDD3 (0x8) -#define MCF_GPIO_CLRDD_CLRDD4 (0x10) -#define MCF_GPIO_CLRDD_CLRDD5 (0x20) -#define MCF_GPIO_CLRDD_CLRDD6 (0x40) -#define MCF_GPIO_CLRDD_CLRDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PDDPAR */ -#define MCF_GPIO_PDDPAR_PDDPAR0 (0x1) -#define MCF_GPIO_PDDPAR_PDD0_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD0_PST0 (0x1) -#define MCF_GPIO_PDDPAR_PDDPAR1 (0x2) -#define MCF_GPIO_PDDPAR_PDD1_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD1_PST1 (0x2) -#define MCF_GPIO_PDDPAR_PDDPAR2 (0x4) -#define MCF_GPIO_PDDPAR_PDD2_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD2_PST2 (0x4) -#define MCF_GPIO_PDDPAR_PDDPAR3 (0x8) -#define MCF_GPIO_PDDPAR_PDD3_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD3_PST3 (0x8) -#define MCF_GPIO_PDDPAR_PDDPAR4 (0x10) -#define MCF_GPIO_PDDPAR_PDD4_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD4_DDATA0 (0x10) -#define MCF_GPIO_PDDPAR_PDDPAR5 (0x20) -#define MCF_GPIO_PDDPAR_PDD5_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD5_DDATA1 (0x20) -#define MCF_GPIO_PDDPAR_PDDPAR6 (0x40) -#define MCF_GPIO_PDDPAR_PDD6_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD6_DDATA2 (0x40) -#define MCF_GPIO_PDDPAR_PDDPAR7 (0x80) -#define MCF_GPIO_PDDPAR_PDD7_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD7_DDATA3 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PORTLD */ -#define MCF_GPIO_PORTLD_PORTLD0 (0x1) -#define MCF_GPIO_PORTLD_PORTLD1 (0x2) -#define MCF_GPIO_PORTLD_PORTLD2 (0x4) -#define MCF_GPIO_PORTLD_PORTLD3 (0x8) -#define MCF_GPIO_PORTLD_PORTLD4 (0x10) -#define MCF_GPIO_PORTLD_PORTLD5 (0x20) -#define MCF_GPIO_PORTLD_PORTLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_DDRLD */ -#define MCF_GPIO_DDRLD_DDRLD0 (0x1) -#define MCF_GPIO_DDRLD_DDRLD1 (0x2) -#define MCF_GPIO_DDRLD_DDRLD2 (0x4) -#define MCF_GPIO_DDRLD_DDRLD3 (0x8) -#define MCF_GPIO_DDRLD_DDRLD4 (0x10) -#define MCF_GPIO_DDRLD_DDRLD5 (0x20) -#define MCF_GPIO_DDRLD_DDRLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_SETLD */ -#define MCF_GPIO_SETLD_SETLD0 (0x1) -#define MCF_GPIO_SETLD_SETLD1 (0x2) -#define MCF_GPIO_SETLD_SETLD2 (0x4) -#define MCF_GPIO_SETLD_SETLD3 (0x8) -#define MCF_GPIO_SETLD_SETLD4 (0x10) -#define MCF_GPIO_SETLD_SETLD5 (0x20) -#define MCF_GPIO_SETLD_SETLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_CLRLD */ -#define MCF_GPIO_CLRLD_CLRLD0 (0x1) -#define MCF_GPIO_CLRLD_CLRLD1 (0x2) -#define MCF_GPIO_CLRLD_CLRLD2 (0x4) -#define MCF_GPIO_CLRLD_CLRLD3 (0x8) -#define MCF_GPIO_CLRLD_CLRLD4 (0x10) -#define MCF_GPIO_CLRLD_CLRLD5 (0x20) -#define MCF_GPIO_CLRLD_CLRLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_PLDPAR */ -#define MCF_GPIO_PLDPAR_PLDPAR0 (0x1) -#define MCF_GPIO_PLDPAR_ACTLED_GPIO (0) -#define MCF_GPIO_PLDPAR_ACTLED_ACTLED (0x1) -#define MCF_GPIO_PLDPAR_PLDPAR1 (0x2) -#define MCF_GPIO_PLDPAR_LINKLED_GPIO (0) -#define MCF_GPIO_PLDPAR_LINKLED_LINKLED (0x2) -#define MCF_GPIO_PLDPAR_PLDPAR2 (0x4) -#define MCF_GPIO_PLDPAR_SPDLED_GPIO (0) -#define MCF_GPIO_PLDPAR_SPDLED_SPDLED (0x4) -#define MCF_GPIO_PLDPAR_PLDPAR3 (0x8) -#define MCF_GPIO_PLDPAR_DUPLED_GPIO (0) -#define MCF_GPIO_PLDPAR_DUPLED_DUPLED (0x8) -#define MCF_GPIO_PLDPAR_PLDPAR4 (0x10) -#define MCF_GPIO_PLDPAR_COLLED_GPIO (0) -#define MCF_GPIO_PLDPAR_COLLED_COLLED (0x10) -#define MCF_GPIO_PLDPAR_PLDPAR5 (0x20) -#define MCF_GPIO_PLDPAR_RXLED_GPIO (0) -#define MCF_GPIO_PLDPAR_RXLED_RXLED (0x20) -#define MCF_GPIO_PLDPAR_PLDPAR6 (0x40) -#define MCF_GPIO_PLDPAR_TXLED_GPIO (0) -#define MCF_GPIO_PLDPAR_TXLED_TXLED (0x40) - -/* Bit definitions and macros for MCF_GPIO_PORTGP */ -#define MCF_GPIO_PORTGP_PORTGP0 (0x1) -#define MCF_GPIO_PORTGP_PORTGP1 (0x2) -#define MCF_GPIO_PORTGP_PORTGP2 (0x4) -#define MCF_GPIO_PORTGP_PORTGP3 (0x8) -#define MCF_GPIO_PORTGP_PORTGP4 (0x10) -#define MCF_GPIO_PORTGP_PORTGP5 (0x20) -#define MCF_GPIO_PORTGP_PORTGP6 (0x40) -#define MCF_GPIO_PORTGP_PORTGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRGP */ -#define MCF_GPIO_DDRGP_DDRGP0 (0x1) -#define MCF_GPIO_DDRGP_DDRGP1 (0x2) -#define MCF_GPIO_DDRGP_DDRGP2 (0x4) -#define MCF_GPIO_DDRGP_DDRGP3 (0x8) -#define MCF_GPIO_DDRGP_DDRGP4 (0x10) -#define MCF_GPIO_DDRGP_DDRGP5 (0x20) -#define MCF_GPIO_DDRGP_DDRGP6 (0x40) -#define MCF_GPIO_DDRGP_DDRGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETGP */ -#define MCF_GPIO_SETGP_SETGP0 (0x1) -#define MCF_GPIO_SETGP_SETGP1 (0x2) -#define MCF_GPIO_SETGP_SETGP2 (0x4) -#define MCF_GPIO_SETGP_SETGP3 (0x8) -#define MCF_GPIO_SETGP_SETGP4 (0x10) -#define MCF_GPIO_SETGP_SETGP5 (0x20) -#define MCF_GPIO_SETGP_SETGP6 (0x40) -#define MCF_GPIO_SETGP_SETGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRGP */ -#define MCF_GPIO_CLRGP_CLRGP0 (0x1) -#define MCF_GPIO_CLRGP_CLRGP1 (0x2) -#define MCF_GPIO_CLRGP_CLRGP2 (0x4) -#define MCF_GPIO_CLRGP_CLRGP3 (0x8) -#define MCF_GPIO_CLRGP_CLRGP4 (0x10) -#define MCF_GPIO_CLRGP_CLRGP5 (0x20) -#define MCF_GPIO_CLRGP_CLRGP6 (0x40) -#define MCF_GPIO_CLRGP_CLRGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PGPPAR */ -#define MCF_GPIO_PGPPAR_PGPPAR0 (0x1) -#define MCF_GPIO_PGPPAR_IRQ8_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ8_IRQ8 (0x1) -#define MCF_GPIO_PGPPAR_PGPPAR1 (0x2) -#define MCF_GPIO_PGPPAR_IRQ9_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ9_IRQ9 (0x2) -#define MCF_GPIO_PGPPAR_PGPPAR2 (0x4) -#define MCF_GPIO_PGPPAR_IRQ10_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ10_IRQ10 (0x4) -#define MCF_GPIO_PGPPAR_PGPPAR3 (0x8) -#define MCF_GPIO_PGPPAR_IRQ11_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ11_IRQ11 (0x8) -#define MCF_GPIO_PGPPAR_PGPPAR4 (0x10) -#define MCF_GPIO_PGPPAR_IRQ12_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ12_IRQ12 (0x10) -#define MCF_GPIO_PGPPAR_PGPPAR5 (0x20) -#define MCF_GPIO_PGPPAR_IRQ13_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ13_IRQ13 (0x20) -#define MCF_GPIO_PGPPAR_PGPPAR6 (0x40) -#define MCF_GPIO_PGPPAR_IRQ14_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ14_IRQ14 (0x40) -#define MCF_GPIO_PGPPAR_PGPPAR7 (0x80) -#define MCF_GPIO_PGPPAR_IRQ15_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ15_IRQ15 (0x80) - - -#endif /* __MCF52235_GPIO_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h deleted file mode 100644 index 717943c7f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h +++ /dev/null @@ -1,198 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_GPTA_H__ -#define __MCF52235_GPTA_H__ - - -/********************************************************************* -* -* General Purpose Timer Module (GPT) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_GPTA_GPTIOS (*(vuint8 *)(&__IPSBAR[0x1A0000])) -#define MCF_GPTA_GPTCFORC (*(vuint8 *)(&__IPSBAR[0x1A0001])) -#define MCF_GPTA_GPTOC3M (*(vuint8 *)(&__IPSBAR[0x1A0002])) -#define MCF_GPTA_GPTOC3D (*(vuint8 *)(&__IPSBAR[0x1A0003])) -#define MCF_GPTA_GPTCNT (*(vuint16*)(&__IPSBAR[0x1A0004])) -#define MCF_GPTA_GPTSCR1 (*(vuint8 *)(&__IPSBAR[0x1A0006])) -#define MCF_GPTA_GPTTOV (*(vuint8 *)(&__IPSBAR[0x1A0008])) -#define MCF_GPTA_GPTCTL1 (*(vuint8 *)(&__IPSBAR[0x1A0009])) -#define MCF_GPTA_GPTCTL2 (*(vuint8 *)(&__IPSBAR[0x1A000B])) -#define MCF_GPTA_GPTIE (*(vuint8 *)(&__IPSBAR[0x1A000C])) -#define MCF_GPTA_GPTSCR2 (*(vuint8 *)(&__IPSBAR[0x1A000D])) -#define MCF_GPTA_GPTFLG1 (*(vuint8 *)(&__IPSBAR[0x1A000E])) -#define MCF_GPTA_GPTFLG2 (*(vuint8 *)(&__IPSBAR[0x1A000F])) -#define MCF_GPTA_GPTC0 (*(vuint16*)(&__IPSBAR[0x1A0010])) -#define MCF_GPTA_GPTC1 (*(vuint16*)(&__IPSBAR[0x1A0012])) -#define MCF_GPTA_GPTC2 (*(vuint16*)(&__IPSBAR[0x1A0014])) -#define MCF_GPTA_GPTC3 (*(vuint16*)(&__IPSBAR[0x1A0016])) -#define MCF_GPTA_GPTPACTL (*(vuint8 *)(&__IPSBAR[0x1A0018])) -#define MCF_GPTA_GPTPAFLG (*(vuint8 *)(&__IPSBAR[0x1A0019])) -#define MCF_GPTA_GPTPACNT (*(vuint16*)(&__IPSBAR[0x1A001A])) -#define MCF_GPTA_GPTPORT (*(vuint8 *)(&__IPSBAR[0x1A001D])) -#define MCF_GPTA_GPTDDR (*(vuint8 *)(&__IPSBAR[0x1A001E])) -#define MCF_GPTA_GPTC(x) (*(vuint16*)(&__IPSBAR[0x1A0010 + ((x)*0x2)])) - - -/* Bit definitions and macros for MCF_GPTA_GPTIOS */ -#define MCF_GPTA_GPTIOS_IOS0 (0x1) -#define MCF_GPTA_GPTIOS_IOS1 (0x2) -#define MCF_GPTA_GPTIOS_IOS2 (0x4) -#define MCF_GPTA_GPTIOS_IOS3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTCFORC */ -#define MCF_GPTA_GPTCFORC_FOC0 (0x1) -#define MCF_GPTA_GPTCFORC_FOC1 (0x2) -#define MCF_GPTA_GPTCFORC_FOC2 (0x4) -#define MCF_GPTA_GPTCFORC_FOC3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTOC3M */ -#define MCF_GPTA_GPTOC3M_OC3M0 (0x1) -#define MCF_GPTA_GPTOC3M_OC3M1 (0x2) -#define MCF_GPTA_GPTOC3M_OC3M2 (0x4) -#define MCF_GPTA_GPTOC3M_OC3M3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTOC3D */ -#define MCF_GPTA_GPTOC3D_OC3D0 (0x1) -#define MCF_GPTA_GPTOC3D_OC3D1 (0x2) -#define MCF_GPTA_GPTOC3D_OC3D2 (0x4) -#define MCF_GPTA_GPTOC3D_OC3D3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTCNT */ -#define MCF_GPTA_GPTCNT_CNTR(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_GPTA_GPTSCR1 */ -#define MCF_GPTA_GPTSCR1_TFFCA (0x10) -#define MCF_GPTA_GPTSCR1_GPTEN (0x80) - -/* Bit definitions and macros for MCF_GPTA_GPTTOV */ -#define MCF_GPTA_GPTTOV_TOV0 (0x1) -#define MCF_GPTA_GPTTOV_TOV1 (0x2) -#define MCF_GPTA_GPTTOV_TOV2 (0x4) -#define MCF_GPTA_GPTTOV_TOV3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTCTL1 */ -#define MCF_GPTA_GPTCTL1_OL0 (0x1) -#define MCF_GPTA_GPTCTL1_OM0 (0x2) -#define MCF_GPTA_GPTCTL1_OL1 (0x4) -#define MCF_GPTA_GPTCTL1_OM1 (0x8) -#define MCF_GPTA_GPTCTL1_OL2 (0x10) -#define MCF_GPTA_GPTCTL1_OM2 (0x20) -#define MCF_GPTA_GPTCTL1_OL3 (0x40) -#define MCF_GPTA_GPTCTL1_OM3 (0x80) -#define MCF_GPTA_GPTCTL1_OUTPUT0_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT0_TOGGLE (0x1) -#define MCF_GPTA_GPTCTL1_OUTPUT0_CLEAR (0x2) -#define MCF_GPTA_GPTCTL1_OUTPUT0_SET (0x3) -#define MCF_GPTA_GPTCTL1_OUTPUT1_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT1_TOGGLE (0x4) -#define MCF_GPTA_GPTCTL1_OUTPUT1_CLEAR (0x8) -#define MCF_GPTA_GPTCTL1_OUTPUT1_SET (0xC) -#define MCF_GPTA_GPTCTL1_OUTPUT2_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT2_TOGGLE (0x10) -#define MCF_GPTA_GPTCTL1_OUTPUT2_CLEAR (0x20) -#define MCF_GPTA_GPTCTL1_OUTPUT2_SET (0x30) -#define MCF_GPTA_GPTCTL1_OUTPUT3_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT3_TOGGLE (0x40) -#define MCF_GPTA_GPTCTL1_OUTPUT3_CLEAR (0x80) -#define MCF_GPTA_GPTCTL1_OUTPUT3_SET (0xC0) - -/* Bit definitions and macros for MCF_GPTA_GPTCTL2 */ -#define MCF_GPTA_GPTCTL2_EDG0A (0x1) -#define MCF_GPTA_GPTCTL2_EDG0B (0x2) -#define MCF_GPTA_GPTCTL2_EDG1A (0x4) -#define MCF_GPTA_GPTCTL2_EDG1B (0x8) -#define MCF_GPTA_GPTCTL2_EDG2A (0x10) -#define MCF_GPTA_GPTCTL2_EDG2B (0x20) -#define MCF_GPTA_GPTCTL2_EDG3A (0x40) -#define MCF_GPTA_GPTCTL2_EDG3B (0x80) -#define MCF_GPTA_GPTCTL2_INPUT0_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT0_RISING (0x1) -#define MCF_GPTA_GPTCTL2_INPUT0_FALLING (0x2) -#define MCF_GPTA_GPTCTL2_INPUT0_ANY (0x3) -#define MCF_GPTA_GPTCTL2_INPUT1_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT1_RISING (0x4) -#define MCF_GPTA_GPTCTL2_INPUT1_FALLING (0x8) -#define MCF_GPTA_GPTCTL2_INPUT1_ANY (0xC) -#define MCF_GPTA_GPTCTL2_INPUT2_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT2_RISING (0x10) -#define MCF_GPTA_GPTCTL2_INPUT2_FALLING (0x20) -#define MCF_GPTA_GPTCTL2_INPUT2_ANY (0x30) -#define MCF_GPTA_GPTCTL2_INPUT3_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT3_RISING (0x40) -#define MCF_GPTA_GPTCTL2_INPUT3_FALLING (0x80) -#define MCF_GPTA_GPTCTL2_INPUT3_ANY (0xC0) - -/* Bit definitions and macros for MCF_GPTA_GPTIE */ -#define MCF_GPTA_GPTIE_CI0 (0x1) -#define MCF_GPTA_GPTIE_CI1 (0x2) -#define MCF_GPTA_GPTIE_CI2 (0x4) -#define MCF_GPTA_GPTIE_CI3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTSCR2 */ -#define MCF_GPTA_GPTSCR2_PR(x) (((x)&0x7)<<0) -#define MCF_GPTA_GPTSCR2_PR_1 (0) -#define MCF_GPTA_GPTSCR2_PR_2 (0x1) -#define MCF_GPTA_GPTSCR2_PR_4 (0x2) -#define MCF_GPTA_GPTSCR2_PR_8 (0x3) -#define MCF_GPTA_GPTSCR2_PR_16 (0x4) -#define MCF_GPTA_GPTSCR2_PR_32 (0x5) -#define MCF_GPTA_GPTSCR2_PR_64 (0x6) -#define MCF_GPTA_GPTSCR2_PR_128 (0x7) -#define MCF_GPTA_GPTSCR2_TCRE (0x8) -#define MCF_GPTA_GPTSCR2_RDPT (0x10) -#define MCF_GPTA_GPTSCR2_PUPT (0x20) -#define MCF_GPTA_GPTSCR2_TOI (0x80) - -/* Bit definitions and macros for MCF_GPTA_GPTFLG1 */ -#define MCF_GPTA_GPTFLG1_CF0 (0x1) -#define MCF_GPTA_GPTFLG1_CF1 (0x2) -#define MCF_GPTA_GPTFLG1_CF2 (0x4) -#define MCF_GPTA_GPTFLG1_CF3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTFLG2 */ -#define MCF_GPTA_GPTFLG2_TOF (0x80) - -/* Bit definitions and macros for MCF_GPTA_GPTC */ -#define MCF_GPTA_GPTC_CCNT(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_GPTA_GPTPACTL */ -#define MCF_GPTA_GPTPACTL_PAI (0x1) -#define MCF_GPTA_GPTPACTL_PAOVI (0x2) -#define MCF_GPTA_GPTPACTL_CLK(x) (((x)&0x3)<<0x2) -#define MCF_GPTA_GPTPACTL_CLK_GPTPR (0) -#define MCF_GPTA_GPTPACTL_CLK_PACLK (0x1) -#define MCF_GPTA_GPTPACTL_CLK_PACLK_256 (0x2) -#define MCF_GPTA_GPTPACTL_CLK_PACLK_65536 (0x3) -#define MCF_GPTA_GPTPACTL_PEDGE (0x10) -#define MCF_GPTA_GPTPACTL_PAMOD (0x20) -#define MCF_GPTA_GPTPACTL_PAE (0x40) - -/* Bit definitions and macros for MCF_GPTA_GPTPAFLG */ -#define MCF_GPTA_GPTPAFLG_PAIF (0x1) -#define MCF_GPTA_GPTPAFLG_PAOVF (0x2) - -/* Bit definitions and macros for MCF_GPTA_GPTPACNT */ -#define MCF_GPTA_GPTPACNT_PACNT(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_GPTA_GPTPORT */ -#define MCF_GPTA_GPTPORT_PORTT0 (0x1) -#define MCF_GPTA_GPTPORT_PORTT1 (0x2) -#define MCF_GPTA_GPTPORT_PORTT2 (0x4) -#define MCF_GPTA_GPTPORT_PORTT3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTDDR */ -#define MCF_GPTA_GPTDDR_DDRT0 (0x1) -#define MCF_GPTA_GPTDDR_DDRT1 (0x2) -#define MCF_GPTA_GPTDDR_DDRT2 (0x4) -#define MCF_GPTA_GPTDDR_DDRT3 (0x8) - - -#endif /* __MCF52235_GPTA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h deleted file mode 100644 index bba909b98..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_I2C_H__ -#define __MCF52235_I2C_H__ - - -/********************************************************************* -* -* I2C Module (I2C) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_I2C_I2ADR (*(vuint8 *)(&__IPSBAR[0x300])) -#define MCF_I2C_I2FDR (*(vuint8 *)(&__IPSBAR[0x304])) -#define MCF_I2C_I2CR (*(vuint8 *)(&__IPSBAR[0x308])) -#define MCF_I2C_I2SR (*(vuint8 *)(&__IPSBAR[0x30C])) -#define MCF_I2C_I2DR (*(vuint8 *)(&__IPSBAR[0x310])) - - - -/* Bit definitions and macros for MCF_I2C_I2ADR */ -#define MCF_I2C_I2ADR_ADR(x) (((x)&0x7F)<<0x1) - -/* Bit definitions and macros for MCF_I2C_I2FDR */ -#define MCF_I2C_I2FDR_IC(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_I2C_I2CR */ -#define MCF_I2C_I2CR_RSTA (0x4) -#define MCF_I2C_I2CR_TXAK (0x8) -#define MCF_I2C_I2CR_MTX (0x10) -#define MCF_I2C_I2CR_MSTA (0x20) -#define MCF_I2C_I2CR_IIEN (0x40) -#define MCF_I2C_I2CR_IEN (0x80) - -/* Bit definitions and macros for MCF_I2C_I2SR */ -#define MCF_I2C_I2SR_RXAK (0x1) -#define MCF_I2C_I2SR_IIF (0x2) -#define MCF_I2C_I2SR_SRW (0x4) -#define MCF_I2C_I2SR_IAL (0x10) -#define MCF_I2C_I2SR_IBB (0x20) -#define MCF_I2C_I2SR_IAAS (0x40) -#define MCF_I2C_I2SR_ICF (0x80) - -/* Bit definitions and macros for MCF_I2C_I2DR */ -#define MCF_I2C_I2DR_DATA(x) (((x)&0xFF)<<0) - - -#endif /* __MCF52235_I2C_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h deleted file mode 100644 index be040bb71..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h +++ /dev/null @@ -1,484 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_INTC_H__ -#define __MCF52235_INTC_H__ - - -/********************************************************************* -* -* Interrupt Controller (INTC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_INTC0_IPRH (*(vuint32*)(&__IPSBAR[0xC00])) -#define MCF_INTC0_IPRL (*(vuint32*)(&__IPSBAR[0xC04])) -#define MCF_INTC0_IMRH (*(vuint32*)(&__IPSBAR[0xC08])) -#define MCF_INTC0_IMRL (*(vuint32*)(&__IPSBAR[0xC0C])) -#define MCF_INTC0_INTFRCH (*(vuint32*)(&__IPSBAR[0xC10])) -#define MCF_INTC0_INTFRCL (*(vuint32*)(&__IPSBAR[0xC14])) -#define MCF_INTC0_IRLR (*(vuint8 *)(&__IPSBAR[0xC18])) -#define MCF_INTC0_IACKLPR (*(vuint8 *)(&__IPSBAR[0xC19])) -#define MCF_INTC0_ICR01 (*(vuint8 *)(&__IPSBAR[0xC41])) -#define MCF_INTC0_ICR02 (*(vuint8 *)(&__IPSBAR[0xC42])) -#define MCF_INTC0_ICR03 (*(vuint8 *)(&__IPSBAR[0xC43])) -#define MCF_INTC0_ICR04 (*(vuint8 *)(&__IPSBAR[0xC44])) -#define MCF_INTC0_ICR05 (*(vuint8 *)(&__IPSBAR[0xC45])) -#define MCF_INTC0_ICR06 (*(vuint8 *)(&__IPSBAR[0xC46])) -#define MCF_INTC0_ICR07 (*(vuint8 *)(&__IPSBAR[0xC47])) -#define MCF_INTC0_ICR08 (*(vuint8 *)(&__IPSBAR[0xC48])) -#define MCF_INTC0_ICR09 (*(vuint8 *)(&__IPSBAR[0xC49])) -#define MCF_INTC0_ICR10 (*(vuint8 *)(&__IPSBAR[0xC4A])) -#define MCF_INTC0_ICR11 (*(vuint8 *)(&__IPSBAR[0xC4B])) -#define MCF_INTC0_ICR12 (*(vuint8 *)(&__IPSBAR[0xC4C])) -#define MCF_INTC0_ICR13 (*(vuint8 *)(&__IPSBAR[0xC4D])) -#define MCF_INTC0_ICR14 (*(vuint8 *)(&__IPSBAR[0xC4E])) -#define MCF_INTC0_ICR15 (*(vuint8 *)(&__IPSBAR[0xC4F])) -#define MCF_INTC0_ICR16 (*(vuint8 *)(&__IPSBAR[0xC50])) -#define MCF_INTC0_ICR17 (*(vuint8 *)(&__IPSBAR[0xC51])) -#define MCF_INTC0_ICR18 (*(vuint8 *)(&__IPSBAR[0xC52])) -#define MCF_INTC0_ICR19 (*(vuint8 *)(&__IPSBAR[0xC53])) -#define MCF_INTC0_ICR20 (*(vuint8 *)(&__IPSBAR[0xC54])) -#define MCF_INTC0_ICR21 (*(vuint8 *)(&__IPSBAR[0xC55])) -#define MCF_INTC0_ICR22 (*(vuint8 *)(&__IPSBAR[0xC56])) -#define MCF_INTC0_ICR23 (*(vuint8 *)(&__IPSBAR[0xC57])) -#define MCF_INTC0_ICR24 (*(vuint8 *)(&__IPSBAR[0xC58])) -#define MCF_INTC0_ICR25 (*(vuint8 *)(&__IPSBAR[0xC59])) -#define MCF_INTC0_ICR26 (*(vuint8 *)(&__IPSBAR[0xC5A])) -#define MCF_INTC0_ICR27 (*(vuint8 *)(&__IPSBAR[0xC5B])) -#define MCF_INTC0_ICR28 (*(vuint8 *)(&__IPSBAR[0xC5C])) -#define MCF_INTC0_ICR29 (*(vuint8 *)(&__IPSBAR[0xC5D])) -#define MCF_INTC0_ICR30 (*(vuint8 *)(&__IPSBAR[0xC5E])) -#define MCF_INTC0_ICR31 (*(vuint8 *)(&__IPSBAR[0xC5F])) -#define MCF_INTC0_ICR32 (*(vuint8 *)(&__IPSBAR[0xC60])) -#define MCF_INTC0_ICR33 (*(vuint8 *)(&__IPSBAR[0xC61])) -#define MCF_INTC0_ICR34 (*(vuint8 *)(&__IPSBAR[0xC62])) -#define MCF_INTC0_ICR35 (*(vuint8 *)(&__IPSBAR[0xC63])) -#define MCF_INTC0_ICR36 (*(vuint8 *)(&__IPSBAR[0xC64])) -#define MCF_INTC0_ICR37 (*(vuint8 *)(&__IPSBAR[0xC65])) -#define MCF_INTC0_ICR38 (*(vuint8 *)(&__IPSBAR[0xC66])) -#define MCF_INTC0_ICR39 (*(vuint8 *)(&__IPSBAR[0xC67])) -#define MCF_INTC0_ICR40 (*(vuint8 *)(&__IPSBAR[0xC68])) -#define MCF_INTC0_ICR41 (*(vuint8 *)(&__IPSBAR[0xC69])) -#define MCF_INTC0_ICR42 (*(vuint8 *)(&__IPSBAR[0xC6A])) -#define MCF_INTC0_ICR43 (*(vuint8 *)(&__IPSBAR[0xC6B])) -#define MCF_INTC0_ICR44 (*(vuint8 *)(&__IPSBAR[0xC6C])) -#define MCF_INTC0_ICR45 (*(vuint8 *)(&__IPSBAR[0xC6D])) -#define MCF_INTC0_ICR46 (*(vuint8 *)(&__IPSBAR[0xC6E])) -#define MCF_INTC0_ICR47 (*(vuint8 *)(&__IPSBAR[0xC6F])) -#define MCF_INTC0_ICR48 (*(vuint8 *)(&__IPSBAR[0xC70])) -#define MCF_INTC0_ICR49 (*(vuint8 *)(&__IPSBAR[0xC71])) -#define MCF_INTC0_ICR50 (*(vuint8 *)(&__IPSBAR[0xC72])) -#define MCF_INTC0_ICR51 (*(vuint8 *)(&__IPSBAR[0xC73])) -#define MCF_INTC0_ICR52 (*(vuint8 *)(&__IPSBAR[0xC74])) -#define MCF_INTC0_ICR53 (*(vuint8 *)(&__IPSBAR[0xC75])) -#define MCF_INTC0_ICR54 (*(vuint8 *)(&__IPSBAR[0xC76])) -#define MCF_INTC0_ICR55 (*(vuint8 *)(&__IPSBAR[0xC77])) -#define MCF_INTC0_ICR56 (*(vuint8 *)(&__IPSBAR[0xC78])) -#define MCF_INTC0_ICR57 (*(vuint8 *)(&__IPSBAR[0xC79])) -#define MCF_INTC0_ICR58 (*(vuint8 *)(&__IPSBAR[0xC7A])) -#define MCF_INTC0_ICR59 (*(vuint8 *)(&__IPSBAR[0xC7B])) -#define MCF_INTC0_ICR60 (*(vuint8 *)(&__IPSBAR[0xC7C])) -#define MCF_INTC0_ICR61 (*(vuint8 *)(&__IPSBAR[0xC7D])) -#define MCF_INTC0_ICR62 (*(vuint8 *)(&__IPSBAR[0xC7E])) -#define MCF_INTC0_ICR63 (*(vuint8 *)(&__IPSBAR[0xC7F])) -#define MCF_INTC0_SWIACK (*(vuint8 *)(&__IPSBAR[0xCE0])) -#define MCF_INTC0_L1IACK (*(vuint8 *)(&__IPSBAR[0xCE4])) -#define MCF_INTC0_L2IACK (*(vuint8 *)(&__IPSBAR[0xCE8])) -#define MCF_INTC0_L3IACK (*(vuint8 *)(&__IPSBAR[0xCEC])) -#define MCF_INTC0_L4IACK (*(vuint8 *)(&__IPSBAR[0xCF0])) -#define MCF_INTC0_L5IACK (*(vuint8 *)(&__IPSBAR[0xCF4])) -#define MCF_INTC0_L6IACK (*(vuint8 *)(&__IPSBAR[0xCF8])) -#define MCF_INTC0_L7IACK (*(vuint8 *)(&__IPSBAR[0xCFC])) -#define MCF_INTC0_ICR(x) (*(vuint8 *)(&__IPSBAR[0xC41 + ((x-1)*0x1)])) -#define MCF_INTC0_LIACK(x) (*(vuint8 *)(&__IPSBAR[0xCE4 + ((x-1)*0x4)])) - -#define MCF_INTC1_IPRH (*(vuint32*)(&__IPSBAR[0xD00])) -#define MCF_INTC1_IPRL (*(vuint32*)(&__IPSBAR[0xD04])) -#define MCF_INTC1_IMRH (*(vuint32*)(&__IPSBAR[0xD08])) -#define MCF_INTC1_IMRL (*(vuint32*)(&__IPSBAR[0xD0C])) -#define MCF_INTC1_INTFRCH (*(vuint32*)(&__IPSBAR[0xD10])) -#define MCF_INTC1_INTFRCL (*(vuint32*)(&__IPSBAR[0xD14])) -#define MCF_INTC1_IRLR (*(vuint8 *)(&__IPSBAR[0xD18])) -#define MCF_INTC1_IACKLPR (*(vuint8 *)(&__IPSBAR[0xD19])) -#define MCF_INTC1_ICR01 (*(vuint8 *)(&__IPSBAR[0xD41])) -#define MCF_INTC1_ICR02 (*(vuint8 *)(&__IPSBAR[0xD42])) -#define MCF_INTC1_ICR03 (*(vuint8 *)(&__IPSBAR[0xD43])) -#define MCF_INTC1_ICR04 (*(vuint8 *)(&__IPSBAR[0xD44])) -#define MCF_INTC1_ICR05 (*(vuint8 *)(&__IPSBAR[0xD45])) -#define MCF_INTC1_ICR06 (*(vuint8 *)(&__IPSBAR[0xD46])) -#define MCF_INTC1_ICR07 (*(vuint8 *)(&__IPSBAR[0xD47])) -#define MCF_INTC1_ICR08 (*(vuint8 *)(&__IPSBAR[0xD48])) -#define MCF_INTC1_ICR09 (*(vuint8 *)(&__IPSBAR[0xD49])) -#define MCF_INTC1_ICR10 (*(vuint8 *)(&__IPSBAR[0xD4A])) -#define MCF_INTC1_ICR11 (*(vuint8 *)(&__IPSBAR[0xD4B])) -#define MCF_INTC1_ICR12 (*(vuint8 *)(&__IPSBAR[0xD4C])) -#define MCF_INTC1_ICR13 (*(vuint8 *)(&__IPSBAR[0xD4D])) -#define MCF_INTC1_ICR14 (*(vuint8 *)(&__IPSBAR[0xD4E])) -#define MCF_INTC1_ICR15 (*(vuint8 *)(&__IPSBAR[0xD4F])) -#define MCF_INTC1_ICR16 (*(vuint8 *)(&__IPSBAR[0xD50])) -#define MCF_INTC1_ICR17 (*(vuint8 *)(&__IPSBAR[0xD51])) -#define MCF_INTC1_ICR18 (*(vuint8 *)(&__IPSBAR[0xD52])) -#define MCF_INTC1_ICR19 (*(vuint8 *)(&__IPSBAR[0xD53])) -#define MCF_INTC1_ICR20 (*(vuint8 *)(&__IPSBAR[0xD54])) -#define MCF_INTC1_ICR21 (*(vuint8 *)(&__IPSBAR[0xD55])) -#define MCF_INTC1_ICR22 (*(vuint8 *)(&__IPSBAR[0xD56])) -#define MCF_INTC1_ICR23 (*(vuint8 *)(&__IPSBAR[0xD57])) -#define MCF_INTC1_ICR24 (*(vuint8 *)(&__IPSBAR[0xD58])) -#define MCF_INTC1_ICR25 (*(vuint8 *)(&__IPSBAR[0xD59])) -#define MCF_INTC1_ICR26 (*(vuint8 *)(&__IPSBAR[0xD5A])) -#define MCF_INTC1_ICR27 (*(vuint8 *)(&__IPSBAR[0xD5B])) -#define MCF_INTC1_ICR28 (*(vuint8 *)(&__IPSBAR[0xD5C])) -#define MCF_INTC1_ICR29 (*(vuint8 *)(&__IPSBAR[0xD5D])) -#define MCF_INTC1_ICR30 (*(vuint8 *)(&__IPSBAR[0xD5E])) -#define MCF_INTC1_ICR31 (*(vuint8 *)(&__IPSBAR[0xD5F])) -#define MCF_INTC1_ICR32 (*(vuint8 *)(&__IPSBAR[0xD60])) -#define MCF_INTC1_ICR33 (*(vuint8 *)(&__IPSBAR[0xD61])) -#define MCF_INTC1_ICR34 (*(vuint8 *)(&__IPSBAR[0xD62])) -#define MCF_INTC1_ICR35 (*(vuint8 *)(&__IPSBAR[0xD63])) -#define MCF_INTC1_ICR36 (*(vuint8 *)(&__IPSBAR[0xD64])) -#define MCF_INTC1_ICR37 (*(vuint8 *)(&__IPSBAR[0xD65])) -#define MCF_INTC1_ICR38 (*(vuint8 *)(&__IPSBAR[0xD66])) -#define MCF_INTC1_ICR39 (*(vuint8 *)(&__IPSBAR[0xD67])) -#define MCF_INTC1_ICR40 (*(vuint8 *)(&__IPSBAR[0xD68])) -#define MCF_INTC1_ICR41 (*(vuint8 *)(&__IPSBAR[0xD69])) -#define MCF_INTC1_ICR42 (*(vuint8 *)(&__IPSBAR[0xD6A])) -#define MCF_INTC1_ICR43 (*(vuint8 *)(&__IPSBAR[0xD6B])) -#define MCF_INTC1_ICR44 (*(vuint8 *)(&__IPSBAR[0xD6C])) -#define MCF_INTC1_ICR45 (*(vuint8 *)(&__IPSBAR[0xD6D])) -#define MCF_INTC1_ICR46 (*(vuint8 *)(&__IPSBAR[0xD6E])) -#define MCF_INTC1_ICR47 (*(vuint8 *)(&__IPSBAR[0xD6F])) -#define MCF_INTC1_ICR48 (*(vuint8 *)(&__IPSBAR[0xD70])) -#define MCF_INTC1_ICR49 (*(vuint8 *)(&__IPSBAR[0xD71])) -#define MCF_INTC1_ICR50 (*(vuint8 *)(&__IPSBAR[0xD72])) -#define MCF_INTC1_ICR51 (*(vuint8 *)(&__IPSBAR[0xD73])) -#define MCF_INTC1_ICR52 (*(vuint8 *)(&__IPSBAR[0xD74])) -#define MCF_INTC1_ICR53 (*(vuint8 *)(&__IPSBAR[0xD75])) -#define MCF_INTC1_ICR54 (*(vuint8 *)(&__IPSBAR[0xD76])) -#define MCF_INTC1_ICR55 (*(vuint8 *)(&__IPSBAR[0xD77])) -#define MCF_INTC1_ICR56 (*(vuint8 *)(&__IPSBAR[0xD78])) -#define MCF_INTC1_ICR57 (*(vuint8 *)(&__IPSBAR[0xD79])) -#define MCF_INTC1_ICR58 (*(vuint8 *)(&__IPSBAR[0xD7A])) -#define MCF_INTC1_ICR59 (*(vuint8 *)(&__IPSBAR[0xD7B])) -#define MCF_INTC1_ICR60 (*(vuint8 *)(&__IPSBAR[0xD7C])) -#define MCF_INTC1_ICR61 (*(vuint8 *)(&__IPSBAR[0xD7D])) -#define MCF_INTC1_ICR62 (*(vuint8 *)(&__IPSBAR[0xD7E])) -#define MCF_INTC1_ICR63 (*(vuint8 *)(&__IPSBAR[0xD7F])) -#define MCF_INTC1_SWIACK (*(vuint8 *)(&__IPSBAR[0xDE0])) -#define MCF_INTC1_L1IACK (*(vuint8 *)(&__IPSBAR[0xDE4])) -#define MCF_INTC1_L2IACK (*(vuint8 *)(&__IPSBAR[0xDE8])) -#define MCF_INTC1_L3IACK (*(vuint8 *)(&__IPSBAR[0xDEC])) -#define MCF_INTC1_L4IACK (*(vuint8 *)(&__IPSBAR[0xDF0])) -#define MCF_INTC1_L5IACK (*(vuint8 *)(&__IPSBAR[0xDF4])) -#define MCF_INTC1_L6IACK (*(vuint8 *)(&__IPSBAR[0xDF8])) -#define MCF_INTC1_L7IACK (*(vuint8 *)(&__IPSBAR[0xDFC])) -#define MCF_INTC1_ICR(x) (*(vuint8 *)(&__IPSBAR[0xD41 + ((x-1)*0x1)])) -#define MCF_INTC1_LIACK(x) (*(vuint8 *)(&__IPSBAR[0xDE4 + ((x-1)*0x4)])) - -#define MCF_INTC_IPRH(x) (*(vuint32*)(&__IPSBAR[0xC00 + ((x)*0x100)])) -#define MCF_INTC_IPRL(x) (*(vuint32*)(&__IPSBAR[0xC04 + ((x)*0x100)])) -#define MCF_INTC_IMRH(x) (*(vuint32*)(&__IPSBAR[0xC08 + ((x)*0x100)])) -#define MCF_INTC_IMRL(x) (*(vuint32*)(&__IPSBAR[0xC0C + ((x)*0x100)])) -#define MCF_INTC_INTFRCH(x) (*(vuint32*)(&__IPSBAR[0xC10 + ((x)*0x100)])) -#define MCF_INTC_INTFRCL(x) (*(vuint32*)(&__IPSBAR[0xC14 + ((x)*0x100)])) -#define MCF_INTC_IRLR(x) (*(vuint8 *)(&__IPSBAR[0xC18 + ((x)*0x100)])) -#define MCF_INTC_IACKLPR(x) (*(vuint8 *)(&__IPSBAR[0xC19 + ((x)*0x100)])) -#define MCF_INTC_ICR01(x) (*(vuint8 *)(&__IPSBAR[0xC41 + ((x)*0x100)])) -#define MCF_INTC_ICR02(x) (*(vuint8 *)(&__IPSBAR[0xC42 + ((x)*0x100)])) -#define MCF_INTC_ICR03(x) (*(vuint8 *)(&__IPSBAR[0xC43 + ((x)*0x100)])) -#define MCF_INTC_ICR04(x) (*(vuint8 *)(&__IPSBAR[0xC44 + ((x)*0x100)])) -#define MCF_INTC_ICR05(x) (*(vuint8 *)(&__IPSBAR[0xC45 + ((x)*0x100)])) -#define MCF_INTC_ICR06(x) (*(vuint8 *)(&__IPSBAR[0xC46 + ((x)*0x100)])) -#define MCF_INTC_ICR07(x) (*(vuint8 *)(&__IPSBAR[0xC47 + ((x)*0x100)])) -#define MCF_INTC_ICR08(x) (*(vuint8 *)(&__IPSBAR[0xC48 + ((x)*0x100)])) -#define MCF_INTC_ICR09(x) (*(vuint8 *)(&__IPSBAR[0xC49 + ((x)*0x100)])) -#define MCF_INTC_ICR10(x) (*(vuint8 *)(&__IPSBAR[0xC4A + ((x)*0x100)])) -#define MCF_INTC_ICR11(x) (*(vuint8 *)(&__IPSBAR[0xC4B + ((x)*0x100)])) -#define MCF_INTC_ICR12(x) (*(vuint8 *)(&__IPSBAR[0xC4C + ((x)*0x100)])) -#define MCF_INTC_ICR13(x) (*(vuint8 *)(&__IPSBAR[0xC4D + ((x)*0x100)])) -#define MCF_INTC_ICR14(x) (*(vuint8 *)(&__IPSBAR[0xC4E + ((x)*0x100)])) -#define MCF_INTC_ICR15(x) (*(vuint8 *)(&__IPSBAR[0xC4F + ((x)*0x100)])) -#define MCF_INTC_ICR16(x) (*(vuint8 *)(&__IPSBAR[0xC50 + ((x)*0x100)])) -#define MCF_INTC_ICR17(x) (*(vuint8 *)(&__IPSBAR[0xC51 + ((x)*0x100)])) -#define MCF_INTC_ICR18(x) (*(vuint8 *)(&__IPSBAR[0xC52 + ((x)*0x100)])) -#define MCF_INTC_ICR19(x) (*(vuint8 *)(&__IPSBAR[0xC53 + ((x)*0x100)])) -#define MCF_INTC_ICR20(x) (*(vuint8 *)(&__IPSBAR[0xC54 + ((x)*0x100)])) -#define MCF_INTC_ICR21(x) (*(vuint8 *)(&__IPSBAR[0xC55 + ((x)*0x100)])) -#define MCF_INTC_ICR22(x) (*(vuint8 *)(&__IPSBAR[0xC56 + ((x)*0x100)])) -#define MCF_INTC_ICR23(x) (*(vuint8 *)(&__IPSBAR[0xC57 + ((x)*0x100)])) -#define MCF_INTC_ICR24(x) (*(vuint8 *)(&__IPSBAR[0xC58 + ((x)*0x100)])) -#define MCF_INTC_ICR25(x) (*(vuint8 *)(&__IPSBAR[0xC59 + ((x)*0x100)])) -#define MCF_INTC_ICR26(x) (*(vuint8 *)(&__IPSBAR[0xC5A + ((x)*0x100)])) -#define MCF_INTC_ICR27(x) (*(vuint8 *)(&__IPSBAR[0xC5B + ((x)*0x100)])) -#define MCF_INTC_ICR28(x) (*(vuint8 *)(&__IPSBAR[0xC5C + ((x)*0x100)])) -#define MCF_INTC_ICR29(x) (*(vuint8 *)(&__IPSBAR[0xC5D + ((x)*0x100)])) -#define MCF_INTC_ICR30(x) (*(vuint8 *)(&__IPSBAR[0xC5E + ((x)*0x100)])) -#define MCF_INTC_ICR31(x) (*(vuint8 *)(&__IPSBAR[0xC5F + ((x)*0x100)])) -#define MCF_INTC_ICR32(x) (*(vuint8 *)(&__IPSBAR[0xC60 + ((x)*0x100)])) -#define MCF_INTC_ICR33(x) (*(vuint8 *)(&__IPSBAR[0xC61 + ((x)*0x100)])) -#define MCF_INTC_ICR34(x) (*(vuint8 *)(&__IPSBAR[0xC62 + ((x)*0x100)])) -#define MCF_INTC_ICR35(x) (*(vuint8 *)(&__IPSBAR[0xC63 + ((x)*0x100)])) -#define MCF_INTC_ICR36(x) (*(vuint8 *)(&__IPSBAR[0xC64 + ((x)*0x100)])) -#define MCF_INTC_ICR37(x) (*(vuint8 *)(&__IPSBAR[0xC65 + ((x)*0x100)])) -#define MCF_INTC_ICR38(x) (*(vuint8 *)(&__IPSBAR[0xC66 + ((x)*0x100)])) -#define MCF_INTC_ICR39(x) (*(vuint8 *)(&__IPSBAR[0xC67 + ((x)*0x100)])) -#define MCF_INTC_ICR40(x) (*(vuint8 *)(&__IPSBAR[0xC68 + ((x)*0x100)])) -#define MCF_INTC_ICR41(x) (*(vuint8 *)(&__IPSBAR[0xC69 + ((x)*0x100)])) -#define MCF_INTC_ICR42(x) (*(vuint8 *)(&__IPSBAR[0xC6A + ((x)*0x100)])) -#define MCF_INTC_ICR43(x) (*(vuint8 *)(&__IPSBAR[0xC6B + ((x)*0x100)])) -#define MCF_INTC_ICR44(x) (*(vuint8 *)(&__IPSBAR[0xC6C + ((x)*0x100)])) -#define MCF_INTC_ICR45(x) (*(vuint8 *)(&__IPSBAR[0xC6D + ((x)*0x100)])) -#define MCF_INTC_ICR46(x) (*(vuint8 *)(&__IPSBAR[0xC6E + ((x)*0x100)])) -#define MCF_INTC_ICR47(x) (*(vuint8 *)(&__IPSBAR[0xC6F + ((x)*0x100)])) -#define MCF_INTC_ICR48(x) (*(vuint8 *)(&__IPSBAR[0xC70 + ((x)*0x100)])) -#define MCF_INTC_ICR49(x) (*(vuint8 *)(&__IPSBAR[0xC71 + ((x)*0x100)])) -#define MCF_INTC_ICR50(x) (*(vuint8 *)(&__IPSBAR[0xC72 + ((x)*0x100)])) -#define MCF_INTC_ICR51(x) (*(vuint8 *)(&__IPSBAR[0xC73 + ((x)*0x100)])) -#define MCF_INTC_ICR52(x) (*(vuint8 *)(&__IPSBAR[0xC74 + ((x)*0x100)])) -#define MCF_INTC_ICR53(x) (*(vuint8 *)(&__IPSBAR[0xC75 + ((x)*0x100)])) -#define MCF_INTC_ICR54(x) (*(vuint8 *)(&__IPSBAR[0xC76 + ((x)*0x100)])) -#define MCF_INTC_ICR55(x) (*(vuint8 *)(&__IPSBAR[0xC77 + ((x)*0x100)])) -#define MCF_INTC_ICR56(x) (*(vuint8 *)(&__IPSBAR[0xC78 + ((x)*0x100)])) -#define MCF_INTC_ICR57(x) (*(vuint8 *)(&__IPSBAR[0xC79 + ((x)*0x100)])) -#define MCF_INTC_ICR58(x) (*(vuint8 *)(&__IPSBAR[0xC7A + ((x)*0x100)])) -#define MCF_INTC_ICR59(x) (*(vuint8 *)(&__IPSBAR[0xC7B + ((x)*0x100)])) -#define MCF_INTC_ICR60(x) (*(vuint8 *)(&__IPSBAR[0xC7C + ((x)*0x100)])) -#define MCF_INTC_ICR61(x) (*(vuint8 *)(&__IPSBAR[0xC7D + ((x)*0x100)])) -#define MCF_INTC_ICR62(x) (*(vuint8 *)(&__IPSBAR[0xC7E + ((x)*0x100)])) -#define MCF_INTC_ICR63(x) (*(vuint8 *)(&__IPSBAR[0xC7F + ((x)*0x100)])) -#define MCF_INTC_SWIACK(x) (*(vuint8 *)(&__IPSBAR[0xCE0 + ((x)*0x100)])) -#define MCF_INTC_L1IACK(x) (*(vuint8 *)(&__IPSBAR[0xCE4 + ((x)*0x100)])) -#define MCF_INTC_L2IACK(x) (*(vuint8 *)(&__IPSBAR[0xCE8 + ((x)*0x100)])) -#define MCF_INTC_L3IACK(x) (*(vuint8 *)(&__IPSBAR[0xCEC + ((x)*0x100)])) -#define MCF_INTC_L4IACK(x) (*(vuint8 *)(&__IPSBAR[0xCF0 + ((x)*0x100)])) -#define MCF_INTC_L5IACK(x) (*(vuint8 *)(&__IPSBAR[0xCF4 + ((x)*0x100)])) -#define MCF_INTC_L6IACK(x) (*(vuint8 *)(&__IPSBAR[0xCF8 + ((x)*0x100)])) -#define MCF_INTC_L7IACK(x) (*(vuint8 *)(&__IPSBAR[0xCFC + ((x)*0x100)])) - - -/* Bit definitions and macros for MCF_INTC_IPRH */ -#define MCF_INTC_IPRH_INT32 (0x1) -#define MCF_INTC_IPRH_INT33 (0x2) -#define MCF_INTC_IPRH_INT34 (0x4) -#define MCF_INTC_IPRH_INT35 (0x8) -#define MCF_INTC_IPRH_INT36 (0x10) -#define MCF_INTC_IPRH_INT37 (0x20) -#define MCF_INTC_IPRH_INT38 (0x40) -#define MCF_INTC_IPRH_INT39 (0x80) -#define MCF_INTC_IPRH_INT40 (0x100) -#define MCF_INTC_IPRH_INT41 (0x200) -#define MCF_INTC_IPRH_INT42 (0x400) -#define MCF_INTC_IPRH_INT43 (0x800) -#define MCF_INTC_IPRH_INT44 (0x1000) -#define MCF_INTC_IPRH_INT45 (0x2000) -#define MCF_INTC_IPRH_INT46 (0x4000) -#define MCF_INTC_IPRH_INT47 (0x8000) -#define MCF_INTC_IPRH_INT48 (0x10000) -#define MCF_INTC_IPRH_INT49 (0x20000) -#define MCF_INTC_IPRH_INT50 (0x40000) -#define MCF_INTC_IPRH_INT51 (0x80000) -#define MCF_INTC_IPRH_INT52 (0x100000) -#define MCF_INTC_IPRH_INT53 (0x200000) -#define MCF_INTC_IPRH_INT54 (0x400000) -#define MCF_INTC_IPRH_INT55 (0x800000) -#define MCF_INTC_IPRH_INT56 (0x1000000) -#define MCF_INTC_IPRH_INT57 (0x2000000) -#define MCF_INTC_IPRH_INT58 (0x4000000) -#define MCF_INTC_IPRH_INT59 (0x8000000) -#define MCF_INTC_IPRH_INT60 (0x10000000) -#define MCF_INTC_IPRH_INT61 (0x20000000) -#define MCF_INTC_IPRH_INT62 (0x40000000) -#define MCF_INTC_IPRH_INT63 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IPRL */ -#define MCF_INTC_IPRL_INT1 (0x2) -#define MCF_INTC_IPRL_INT2 (0x4) -#define MCF_INTC_IPRL_INT3 (0x8) -#define MCF_INTC_IPRL_INT4 (0x10) -#define MCF_INTC_IPRL_INT5 (0x20) -#define MCF_INTC_IPRL_INT6 (0x40) -#define MCF_INTC_IPRL_INT7 (0x80) -#define MCF_INTC_IPRL_INT8 (0x100) -#define MCF_INTC_IPRL_INT9 (0x200) -#define MCF_INTC_IPRL_INT10 (0x400) -#define MCF_INTC_IPRL_INT11 (0x800) -#define MCF_INTC_IPRL_INT12 (0x1000) -#define MCF_INTC_IPRL_INT13 (0x2000) -#define MCF_INTC_IPRL_INT14 (0x4000) -#define MCF_INTC_IPRL_INT15 (0x8000) -#define MCF_INTC_IPRL_INT16 (0x10000) -#define MCF_INTC_IPRL_INT17 (0x20000) -#define MCF_INTC_IPRL_INT18 (0x40000) -#define MCF_INTC_IPRL_INT19 (0x80000) -#define MCF_INTC_IPRL_INT20 (0x100000) -#define MCF_INTC_IPRL_INT21 (0x200000) -#define MCF_INTC_IPRL_INT22 (0x400000) -#define MCF_INTC_IPRL_INT23 (0x800000) -#define MCF_INTC_IPRL_INT24 (0x1000000) -#define MCF_INTC_IPRL_INT25 (0x2000000) -#define MCF_INTC_IPRL_INT26 (0x4000000) -#define MCF_INTC_IPRL_INT27 (0x8000000) -#define MCF_INTC_IPRL_INT28 (0x10000000) -#define MCF_INTC_IPRL_INT29 (0x20000000) -#define MCF_INTC_IPRL_INT30 (0x40000000) -#define MCF_INTC_IPRL_INT31 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IMRH */ -#define MCF_INTC_IMRH_INT_MASK32 (0x1) -#define MCF_INTC_IMRH_INT_MASK33 (0x2) -#define MCF_INTC_IMRH_INT_MASK34 (0x4) -#define MCF_INTC_IMRH_INT_MASK35 (0x8) -#define MCF_INTC_IMRH_INT_MASK36 (0x10) -#define MCF_INTC_IMRH_INT_MASK37 (0x20) -#define MCF_INTC_IMRH_INT_MASK38 (0x40) -#define MCF_INTC_IMRH_INT_MASK39 (0x80) -#define MCF_INTC_IMRH_INT_MASK40 (0x100) -#define MCF_INTC_IMRH_INT_MASK41 (0x200) -#define MCF_INTC_IMRH_INT_MASK42 (0x400) -#define MCF_INTC_IMRH_INT_MASK43 (0x800) -#define MCF_INTC_IMRH_INT_MASK44 (0x1000) -#define MCF_INTC_IMRH_INT_MASK45 (0x2000) -#define MCF_INTC_IMRH_INT_MASK46 (0x4000) -#define MCF_INTC_IMRH_INT_MASK47 (0x8000) -#define MCF_INTC_IMRH_INT_MASK48 (0x10000) -#define MCF_INTC_IMRH_INT_MASK49 (0x20000) -#define MCF_INTC_IMRH_INT_MASK50 (0x40000) -#define MCF_INTC_IMRH_INT_MASK51 (0x80000) -#define MCF_INTC_IMRH_INT_MASK52 (0x100000) -#define MCF_INTC_IMRH_INT_MASK53 (0x200000) -#define MCF_INTC_IMRH_INT_MASK54 (0x400000) -#define MCF_INTC_IMRH_INT_MASK55 (0x800000) -#define MCF_INTC_IMRH_INT_MASK56 (0x1000000) -#define MCF_INTC_IMRH_INT_MASK57 (0x2000000) -#define MCF_INTC_IMRH_INT_MASK58 (0x4000000) -#define MCF_INTC_IMRH_INT_MASK59 (0x8000000) -#define MCF_INTC_IMRH_INT_MASK60 (0x10000000) -#define MCF_INTC_IMRH_INT_MASK61 (0x20000000) -#define MCF_INTC_IMRH_INT_MASK62 (0x40000000) -#define MCF_INTC_IMRH_INT_MASK63 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IMRL */ -#define MCF_INTC_IMRL_MASKALL (0x1) -#define MCF_INTC_IMRL_INT_MASK1 (0x2) -#define MCF_INTC_IMRL_INT_MASK2 (0x4) -#define MCF_INTC_IMRL_INT_MASK3 (0x8) -#define MCF_INTC_IMRL_INT_MASK4 (0x10) -#define MCF_INTC_IMRL_INT_MASK5 (0x20) -#define MCF_INTC_IMRL_INT_MASK6 (0x40) -#define MCF_INTC_IMRL_INT_MASK7 (0x80) -#define MCF_INTC_IMRL_INT_MASK8 (0x100) -#define MCF_INTC_IMRL_INT_MASK9 (0x200) -#define MCF_INTC_IMRL_INT_MASK10 (0x400) -#define MCF_INTC_IMRL_INT_MASK11 (0x800) -#define MCF_INTC_IMRL_INT_MASK12 (0x1000) -#define MCF_INTC_IMRL_INT_MASK13 (0x2000) -#define MCF_INTC_IMRL_INT_MASK14 (0x4000) -#define MCF_INTC_IMRL_INT_MASK15 (0x8000) -#define MCF_INTC_IMRL_INT_MASK16 (0x10000) -#define MCF_INTC_IMRL_INT_MASK17 (0x20000) -#define MCF_INTC_IMRL_INT_MASK18 (0x40000) -#define MCF_INTC_IMRL_INT_MASK19 (0x80000) -#define MCF_INTC_IMRL_INT_MASK20 (0x100000) -#define MCF_INTC_IMRL_INT_MASK21 (0x200000) -#define MCF_INTC_IMRL_INT_MASK22 (0x400000) -#define MCF_INTC_IMRL_INT_MASK23 (0x800000) -#define MCF_INTC_IMRL_INT_MASK24 (0x1000000) -#define MCF_INTC_IMRL_INT_MASK25 (0x2000000) -#define MCF_INTC_IMRL_INT_MASK26 (0x4000000) -#define MCF_INTC_IMRL_INT_MASK27 (0x8000000) -#define MCF_INTC_IMRL_INT_MASK28 (0x10000000) -#define MCF_INTC_IMRL_INT_MASK29 (0x20000000) -#define MCF_INTC_IMRL_INT_MASK30 (0x40000000) -#define MCF_INTC_IMRL_INT_MASK31 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_INTFRCH */ -#define MCF_INTC_INTFRCH_INTFRC32 (0x1) -#define MCF_INTC_INTFRCH_INTFRC33 (0x2) -#define MCF_INTC_INTFRCH_INTFRC34 (0x4) -#define MCF_INTC_INTFRCH_INTFRC35 (0x8) -#define MCF_INTC_INTFRCH_INTFRC36 (0x10) -#define MCF_INTC_INTFRCH_INTFRC37 (0x20) -#define MCF_INTC_INTFRCH_INTFRC38 (0x40) -#define MCF_INTC_INTFRCH_INTFRC39 (0x80) -#define MCF_INTC_INTFRCH_INTFRC40 (0x100) -#define MCF_INTC_INTFRCH_INTFRC41 (0x200) -#define MCF_INTC_INTFRCH_INTFRC42 (0x400) -#define MCF_INTC_INTFRCH_INTFRC43 (0x800) -#define MCF_INTC_INTFRCH_INTFRC44 (0x1000) -#define MCF_INTC_INTFRCH_INTFRC45 (0x2000) -#define MCF_INTC_INTFRCH_INTFRC46 (0x4000) -#define MCF_INTC_INTFRCH_INTFRC47 (0x8000) -#define MCF_INTC_INTFRCH_INTFRC48 (0x10000) -#define MCF_INTC_INTFRCH_INTFRC49 (0x20000) -#define MCF_INTC_INTFRCH_INTFRC50 (0x40000) -#define MCF_INTC_INTFRCH_INTFRC51 (0x80000) -#define MCF_INTC_INTFRCH_INTFRC52 (0x100000) -#define MCF_INTC_INTFRCH_INTFRC53 (0x200000) -#define MCF_INTC_INTFRCH_INTFRC54 (0x400000) -#define MCF_INTC_INTFRCH_INTFRC55 (0x800000) -#define MCF_INTC_INTFRCH_INTFRC56 (0x1000000) -#define MCF_INTC_INTFRCH_INTFRC57 (0x2000000) -#define MCF_INTC_INTFRCH_INTFRC58 (0x4000000) -#define MCF_INTC_INTFRCH_INTFRC59 (0x8000000) -#define MCF_INTC_INTFRCH_INTFRC60 (0x10000000) -#define MCF_INTC_INTFRCH_INTFRC61 (0x20000000) -#define MCF_INTC_INTFRCH_INTFRC62 (0x40000000) -#define MCF_INTC_INTFRCH_INTFRC63 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_INTFRCL */ -#define MCF_INTC_INTFRCL_INTFRC1 (0x2) -#define MCF_INTC_INTFRCL_INTFRC2 (0x4) -#define MCF_INTC_INTFRCL_INTFRC3 (0x8) -#define MCF_INTC_INTFRCL_INTFRC4 (0x10) -#define MCF_INTC_INTFRCL_INTFRC5 (0x20) -#define MCF_INTC_INTFRCL_INTFRC6 (0x40) -#define MCF_INTC_INTFRCL_INTFRC7 (0x80) -#define MCF_INTC_INTFRCL_INTFRC8 (0x100) -#define MCF_INTC_INTFRCL_INTFRC9 (0x200) -#define MCF_INTC_INTFRCL_INTFRC10 (0x400) -#define MCF_INTC_INTFRCL_INTFRC11 (0x800) -#define MCF_INTC_INTFRCL_INTFRC12 (0x1000) -#define MCF_INTC_INTFRCL_INTFRC13 (0x2000) -#define MCF_INTC_INTFRCL_INTFRC14 (0x4000) -#define MCF_INTC_INTFRCL_INTFRC15 (0x8000) -#define MCF_INTC_INTFRCL_INTFRC16 (0x10000) -#define MCF_INTC_INTFRCL_INTFRC17 (0x20000) -#define MCF_INTC_INTFRCL_INTFRC18 (0x40000) -#define MCF_INTC_INTFRCL_INTFRC19 (0x80000) -#define MCF_INTC_INTFRCL_INTFRC20 (0x100000) -#define MCF_INTC_INTFRCL_INTFRC21 (0x200000) -#define MCF_INTC_INTFRCL_INTFRC22 (0x400000) -#define MCF_INTC_INTFRCL_INTFRC23 (0x800000) -#define MCF_INTC_INTFRCL_INTFRC24 (0x1000000) -#define MCF_INTC_INTFRCL_INTFRC25 (0x2000000) -#define MCF_INTC_INTFRCL_INTFRC26 (0x4000000) -#define MCF_INTC_INTFRCL_INTFRC27 (0x8000000) -#define MCF_INTC_INTFRCL_INTFRC28 (0x10000000) -#define MCF_INTC_INTFRCL_INTFRC29 (0x20000000) -#define MCF_INTC_INTFRCL_INTFRC30 (0x40000000) -#define MCF_INTC_INTFRCL_INTFRC31 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IRLR */ -#define MCF_INTC_IRLR_IRQ(x) (((x)&0x7F)<<0x1) - -/* Bit definitions and macros for MCF_INTC_IACKLPR */ -#define MCF_INTC_IACKLPR_PRI(x) (((x)&0xF)<<0) -#define MCF_INTC_IACKLPR_LEVEL(x) (((x)&0x7)<<0x4) - -/* Bit definitions and macros for MCF_INTC_ICR */ -#define MCF_INTC_ICR_IP(x) (((x)&0x7)<<0) -#define MCF_INTC_ICR_IL(x) (((x)&0x7)<<0x3) - -/* Bit definitions and macros for MCF_INTC_SWIACK */ -#define MCF_INTC_SWIACK_VECTOR(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_INTC_LIACK */ -#define MCF_INTC_LIACK_VECTOR(x) (((x)&0xFF)<<0) - - -#endif /* __MCF52235_INTC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h deleted file mode 100644 index 3295613e5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h +++ /dev/null @@ -1,95 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PAD_H__ -#define __MCF52235_PAD_H__ - - -/********************************************************************* -* -* Common GPIO Registers -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PAD_PWOR (*(vuint16*)(&__IPSBAR[0x100078])) -#define MCF_PAD_PDSR1 (*(vuint16*)(&__IPSBAR[0x10007A])) -#define MCF_PAD_PDSR0 (*(vuint32*)(&__IPSBAR[0x10007C])) - - -/* Bit definitions and macros for MCF_PAD_PWOR */ -#define MCF_PAD_PWOR_PWOR0 (0x1) -#define MCF_PAD_PWOR_PWOR1 (0x2) -#define MCF_PAD_PWOR_PWOR2 (0x4) -#define MCF_PAD_PWOR_PWOR3 (0x8) -#define MCF_PAD_PWOR_PWOR4 (0x10) -#define MCF_PAD_PWOR_PWOR5 (0x20) -#define MCF_PAD_PWOR_PWOR6 (0x40) -#define MCF_PAD_PWOR_PWOR7 (0x80) -#define MCF_PAD_PWOR_PWOR8 (0x100) -#define MCF_PAD_PWOR_PWOR9 (0x200) -#define MCF_PAD_PWOR_PWOR10 (0x400) -#define MCF_PAD_PWOR_PWOR11 (0x800) -#define MCF_PAD_PWOR_PWOR12 (0x1000) -#define MCF_PAD_PWOR_PWOR13 (0x2000) -#define MCF_PAD_PWOR_PWOR14 (0x4000) -#define MCF_PAD_PWOR_PWOR15 (0x8000) - -/* Bit definitions and macros for MCF_PAD_PDSR1 */ -#define MCF_PAD_PDSR1_PDSR32 (0x1) -#define MCF_PAD_PDSR1_PDSR33 (0x2) -#define MCF_PAD_PDSR1_PDSR34 (0x4) -#define MCF_PAD_PDSR1_PDSR35 (0x8) -#define MCF_PAD_PDSR1_PDSR36 (0x10) -#define MCF_PAD_PDSR1_PDSR37 (0x20) -#define MCF_PAD_PDSR1_PDSR38 (0x40) -#define MCF_PAD_PDSR1_PDSR39 (0x80) -#define MCF_PAD_PDSR1_PDSR40 (0x100) -#define MCF_PAD_PDSR1_PDSR41 (0x200) -#define MCF_PAD_PDSR1_PDSR42 (0x400) -#define MCF_PAD_PDSR1_PDSR43 (0x800) -#define MCF_PAD_PDSR1_PDSR44 (0x1000) -#define MCF_PAD_PDSR1_PDSR45 (0x2000) -#define MCF_PAD_PDSR1_PDSR46 (0x4000) -#define MCF_PAD_PDSR1_PDSR47 (0x8000) - -/* Bit definitions and macros for MCF_PAD_PDSR0 */ -#define MCF_PAD_PDSR0_PDSR0 (0x1) -#define MCF_PAD_PDSR0_PDSR1 (0x2) -#define MCF_PAD_PDSR0_PDSR2 (0x4) -#define MCF_PAD_PDSR0_PDSR3 (0x8) -#define MCF_PAD_PDSR0_PDSR4 (0x10) -#define MCF_PAD_PDSR0_PDSR5 (0x20) -#define MCF_PAD_PDSR0_PDSR6 (0x40) -#define MCF_PAD_PDSR0_PDSR7 (0x80) -#define MCF_PAD_PDSR0_PDSR8 (0x100) -#define MCF_PAD_PDSR0_PDSR9 (0x200) -#define MCF_PAD_PDSR0_PDSR10 (0x400) -#define MCF_PAD_PDSR0_PDSR11 (0x800) -#define MCF_PAD_PDSR0_PDSR12 (0x1000) -#define MCF_PAD_PDSR0_PDSR13 (0x2000) -#define MCF_PAD_PDSR0_PDSR14 (0x4000) -#define MCF_PAD_PDSR0_PDSR15 (0x8000) -#define MCF_PAD_PDSR0_PDSR16 (0x10000) -#define MCF_PAD_PDSR0_PDSR17 (0x20000) -#define MCF_PAD_PDSR0_PDSR18 (0x40000) -#define MCF_PAD_PDSR0_PDSR19 (0x80000) -#define MCF_PAD_PDSR0_PDSR20 (0x100000) -#define MCF_PAD_PDSR0_PDSR21 (0x200000) -#define MCF_PAD_PDSR0_PDSR22 (0x400000) -#define MCF_PAD_PDSR0_PDSR23 (0x800000) -#define MCF_PAD_PDSR0_PDSR24 (0x1000000) -#define MCF_PAD_PDSR0_PDSR25 (0x2000000) -#define MCF_PAD_PDSR0_PDSR26 (0x4000000) -#define MCF_PAD_PDSR0_PDSR27 (0x8000000) -#define MCF_PAD_PDSR0_PDSR28 (0x10000000) -#define MCF_PAD_PDSR0_PDSR29 (0x20000000) -#define MCF_PAD_PDSR0_PDSR30 (0x40000000) -#define MCF_PAD_PDSR0_PDSR31 (0x80000000) - - -#endif /* __MCF52235_PAD_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h deleted file mode 100644 index ac598df49..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PIT_H__ -#define __MCF52235_PIT_H__ - - -/********************************************************************* -* -* Programmable Interrupt Timer (PIT) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PIT0_PCSR (*(vuint16*)(&__IPSBAR[0x150000])) -#define MCF_PIT0_PMR (*(vuint16*)(&__IPSBAR[0x150002])) -#define MCF_PIT0_PCNTR (*(vuint16*)(&__IPSBAR[0x150004])) - -#define MCF_PIT1_PCSR (*(vuint16*)(&__IPSBAR[0x160000])) -#define MCF_PIT1_PMR (*(vuint16*)(&__IPSBAR[0x160002])) -#define MCF_PIT1_PCNTR (*(vuint16*)(&__IPSBAR[0x160004])) - -#define MCF_PIT_PCSR(x) (*(vuint16*)(&__IPSBAR[0x150000 + ((x)*0x10000)])) -#define MCF_PIT_PMR(x) (*(vuint16*)(&__IPSBAR[0x150002 + ((x)*0x10000)])) -#define MCF_PIT_PCNTR(x) (*(vuint16*)(&__IPSBAR[0x150004 + ((x)*0x10000)])) - - -/* Bit definitions and macros for MCF_PIT_PCSR */ -#define MCF_PIT_PCSR_EN (0x1) -#define MCF_PIT_PCSR_RLD (0x2) -#define MCF_PIT_PCSR_PIF (0x4) -#define MCF_PIT_PCSR_PIE (0x8) -#define MCF_PIT_PCSR_OVW (0x10) -#define MCF_PIT_PCSR_DBG (0x20) -#define MCF_PIT_PCSR_DOZE (0x40) -#define MCF_PIT_PCSR_PRE(x) (((x)&0xF)<<0x8) - -/* Bit definitions and macros for MCF_PIT_PMR */ -#define MCF_PIT_PMR_PM(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_PIT_PCNTR */ -#define MCF_PIT_PCNTR_PC(x) (((x)&0xFFFF)<<0) - - -#endif /* __MCF52235_PIT_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h deleted file mode 100644 index 65712dd1c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PMM_H__ -#define __MCF52235_PMM_H__ - - -/********************************************************************* -* -* Power Management (PMM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PMM_LPICR (*(vuint8 *)(&__IPSBAR[0x12])) -#define MCF_PMM_LPCR (*(vuint8 *)(&__IPSBAR[0x110007])) - - -/* Bit definitions and macros for MCF_PMM_LPICR */ -#define MCF_PMM_LPICR_XLPM_IPL(x) (((x)&0x7)<<0x4) -#define MCF_PMM_LPICR_ENBSTOP (0x80) - -/* Bit definitions and macros for MCF_PMM_LPCR */ -#define MCF_PMM_LPCR_LVDSE (0x2) -#define MCF_PMM_LPCR_STPMD(x) (((x)&0x3)<<0x3) -#define MCF_PMM_LPCR_STPMD_SYS_DISABLED (0) -#define MCF_PMM_LPCR_STPMD_SYS_CLKOUT_DISABLED (0x8) -#define MCF_PMM_LPCR_STPMD_ONLY_OSC_ENABLED (0x10) -#define MCF_PMM_LPCR_STPMD_ALL_DISABLED (0x18) -#define MCF_PMM_LPCR_LPMD(x) (((x)&0x3)<<0x6) -#define MCF_PMM_LPCR_LPMD_RUN (0) -#define MCF_PMM_LPCR_LPMD_DOZE (0x40) -#define MCF_PMM_LPCR_LPMD_WAIT (0x80) -#define MCF_PMM_LPCR_LPMD_STOP (0xC0) - - -#endif /* __MCF52235_PMM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h deleted file mode 100644 index a4774e784..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h +++ /dev/null @@ -1,134 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PWM_H__ -#define __MCF52235_PWM_H__ - - -/********************************************************************* -* -* Pulse Width Modulation (PWM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PWM_PWME (*(vuint8 *)(&__IPSBAR[0x1B0000])) -#define MCF_PWM_PWMPOL (*(vuint8 *)(&__IPSBAR[0x1B0001])) -#define MCF_PWM_PWMCLK (*(vuint8 *)(&__IPSBAR[0x1B0002])) -#define MCF_PWM_PWMPRCLK (*(vuint8 *)(&__IPSBAR[0x1B0003])) -#define MCF_PWM_PWMCAE (*(vuint8 *)(&__IPSBAR[0x1B0004])) -#define MCF_PWM_PWMCTL (*(vuint8 *)(&__IPSBAR[0x1B0005])) -#define MCF_PWM_PWMSCLA (*(vuint8 *)(&__IPSBAR[0x1B0008])) -#define MCF_PWM_PWMSCLB (*(vuint8 *)(&__IPSBAR[0x1B0009])) -#define MCF_PWM_PWMCNT0 (*(vuint8 *)(&__IPSBAR[0x1B000C])) -#define MCF_PWM_PWMCNT1 (*(vuint8 *)(&__IPSBAR[0x1B000D])) -#define MCF_PWM_PWMCNT2 (*(vuint8 *)(&__IPSBAR[0x1B000E])) -#define MCF_PWM_PWMCNT3 (*(vuint8 *)(&__IPSBAR[0x1B000F])) -#define MCF_PWM_PWMCNT4 (*(vuint8 *)(&__IPSBAR[0x1B0010])) -#define MCF_PWM_PWMCNT5 (*(vuint8 *)(&__IPSBAR[0x1B0011])) -#define MCF_PWM_PWMCNT6 (*(vuint8 *)(&__IPSBAR[0x1B0012])) -#define MCF_PWM_PWMCNT7 (*(vuint8 *)(&__IPSBAR[0x1B0013])) -#define MCF_PWM_PWMPER0 (*(vuint8 *)(&__IPSBAR[0x1B0014])) -#define MCF_PWM_PWMPER1 (*(vuint8 *)(&__IPSBAR[0x1B0015])) -#define MCF_PWM_PWMPER2 (*(vuint8 *)(&__IPSBAR[0x1B0016])) -#define MCF_PWM_PWMPER3 (*(vuint8 *)(&__IPSBAR[0x1B0017])) -#define MCF_PWM_PWMPER4 (*(vuint8 *)(&__IPSBAR[0x1B0018])) -#define MCF_PWM_PWMPER5 (*(vuint8 *)(&__IPSBAR[0x1B0019])) -#define MCF_PWM_PWMPER6 (*(vuint8 *)(&__IPSBAR[0x1B001A])) -#define MCF_PWM_PWMPER7 (*(vuint8 *)(&__IPSBAR[0x1B001B])) -#define MCF_PWM_PWMDTY0 (*(vuint8 *)(&__IPSBAR[0x1B001C])) -#define MCF_PWM_PWMDTY1 (*(vuint8 *)(&__IPSBAR[0x1B001D])) -#define MCF_PWM_PWMDTY2 (*(vuint8 *)(&__IPSBAR[0x1B001E])) -#define MCF_PWM_PWMDTY3 (*(vuint8 *)(&__IPSBAR[0x1B001F])) -#define MCF_PWM_PWMDTY4 (*(vuint8 *)(&__IPSBAR[0x1B0020])) -#define MCF_PWM_PWMDTY5 (*(vuint8 *)(&__IPSBAR[0x1B0021])) -#define MCF_PWM_PWMDTY6 (*(vuint8 *)(&__IPSBAR[0x1B0022])) -#define MCF_PWM_PWMDTY7 (*(vuint8 *)(&__IPSBAR[0x1B0023])) -#define MCF_PWM_PWMSDN (*(vuint8 *)(&__IPSBAR[0x1B0024])) -#define MCF_PWM_PWMCNT(x) (*(vuint8 *)(&__IPSBAR[0x1B000C + ((x)*0x1)])) -#define MCF_PWM_PWMPER(x) (*(vuint8 *)(&__IPSBAR[0x1B0014 + ((x)*0x1)])) -#define MCF_PWM_PWMDTY(x) (*(vuint8 *)(&__IPSBAR[0x1B001C + ((x)*0x1)])) - - -/* Bit definitions and macros for MCF_PWM_PWME */ -#define MCF_PWM_PWME_PWME0 (0x1) -#define MCF_PWM_PWME_PWME1 (0x2) -#define MCF_PWM_PWME_PWME2 (0x4) -#define MCF_PWM_PWME_PWME3 (0x8) -#define MCF_PWM_PWME_PWME4 (0x10) -#define MCF_PWM_PWME_PWME5 (0x20) -#define MCF_PWM_PWME_PWME6 (0x40) -#define MCF_PWM_PWME_PWME7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMPOL */ -#define MCF_PWM_PWMPOL_PPOL0 (0x1) -#define MCF_PWM_PWMPOL_PPOL1 (0x2) -#define MCF_PWM_PWMPOL_PPOL2 (0x4) -#define MCF_PWM_PWMPOL_PPOL3 (0x8) -#define MCF_PWM_PWMPOL_PPOL4 (0x10) -#define MCF_PWM_PWMPOL_PPOL5 (0x20) -#define MCF_PWM_PWMPOL_PPOL6 (0x40) -#define MCF_PWM_PWMPOL_PPOL7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMCLK */ -#define MCF_PWM_PWMCLK_PCLK0 (0x1) -#define MCF_PWM_PWMCLK_PCLK1 (0x2) -#define MCF_PWM_PWMCLK_PCLK2 (0x4) -#define MCF_PWM_PWMCLK_PCLK3 (0x8) -#define MCF_PWM_PWMCLK_PCLK4 (0x10) -#define MCF_PWM_PWMCLK_PCLK5 (0x20) -#define MCF_PWM_PWMCLK_PCLK6 (0x40) -#define MCF_PWM_PWMCLK_PCLK7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMPRCLK */ -#define MCF_PWM_PWMPRCLK_PCKA(x) (((x)&0x7)<<0) -#define MCF_PWM_PWMPRCLK_PCKB(x) (((x)&0x7)<<0x4) - -/* Bit definitions and macros for MCF_PWM_PWMCAE */ -#define MCF_PWM_PWMCAE_CAE0 (0x1) -#define MCF_PWM_PWMCAE_CAE1 (0x2) -#define MCF_PWM_PWMCAE_CAE2 (0x4) -#define MCF_PWM_PWMCAE_CAE3 (0x8) -#define MCF_PWM_PWMCAE_CAE4 (0x10) -#define MCF_PWM_PWMCAE_CAE5 (0x20) -#define MCF_PWM_PWMCAE_CAE6 (0x40) -#define MCF_PWM_PWMCAE_CAE7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMCTL */ -#define MCF_PWM_PWMCTL_PFRZ (0x4) -#define MCF_PWM_PWMCTL_PSWAI (0x8) -#define MCF_PWM_PWMCTL_CON01 (0x10) -#define MCF_PWM_PWMCTL_CON23 (0x20) -#define MCF_PWM_PWMCTL_CON45 (0x40) -#define MCF_PWM_PWMCTL_CON67 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMSCLA */ -#define MCF_PWM_PWMSCLA_SCALEA(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMSCLB */ -#define MCF_PWM_PWMSCLB_SCALEB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMCNT */ -#define MCF_PWM_PWMCNT_COUNT(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMPER */ -#define MCF_PWM_PWMPER_PERIOD(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMDTY */ -#define MCF_PWM_PWMDTY_DUTY(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMSDN */ -#define MCF_PWM_PWMSDN_SDNEN (0x1) -#define MCF_PWM_PWMSDN_PWM7IL (0x2) -#define MCF_PWM_PWMSDN_PWM7IN (0x4) -#define MCF_PWM_PWMSDN_LVL (0x10) -#define MCF_PWM_PWMSDN_RESTART (0x20) -#define MCF_PWM_PWMSDN_IE (0x40) -#define MCF_PWM_PWMSDN_IF (0x80) - - -#endif /* __MCF52235_PWM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h deleted file mode 100644 index bb55e96ac..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_QSPI_H__ -#define __MCF52235_QSPI_H__ - - -/********************************************************************* -* -* Queued Serial Peripheral Interface (QSPI) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_QSPI_QMR (*(vuint16*)(&__IPSBAR[0x340])) -#define MCF_QSPI_QDLYR (*(vuint16*)(&__IPSBAR[0x344])) -#define MCF_QSPI_QWR (*(vuint16*)(&__IPSBAR[0x348])) -#define MCF_QSPI_QIR (*(vuint16*)(&__IPSBAR[0x34C])) -#define MCF_QSPI_QAR (*(vuint16*)(&__IPSBAR[0x350])) -#define MCF_QSPI_QDR (*(vuint16*)(&__IPSBAR[0x354])) - - -/* Bit definitions and macros for MCF_QSPI_QMR */ -#define MCF_QSPI_QMR_BAUD(x) (((x)&0xFF)<<0) -#define MCF_QSPI_QMR_CPHA (0x100) -#define MCF_QSPI_QMR_CPOL (0x200) -#define MCF_QSPI_QMR_BITS(x) (((x)&0xF)<<0xA) -#define MCF_QSPI_QMR_DOHIE (0x4000) -#define MCF_QSPI_QMR_MSTR (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QDLYR */ -#define MCF_QSPI_QDLYR_DTL(x) (((x)&0xFF)<<0) -#define MCF_QSPI_QDLYR_QCD(x) (((x)&0x7F)<<0x8) -#define MCF_QSPI_QDLYR_SPE (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QWR */ -#define MCF_QSPI_QWR_NEWQP(x) (((x)&0xF)<<0) -#define MCF_QSPI_QWR_CPTQP(x) (((x)&0xF)<<0x4) -#define MCF_QSPI_QWR_ENDQP(x) (((x)&0xF)<<0x8) -#define MCF_QSPI_QWR_CSIV (0x1000) -#define MCF_QSPI_QWR_WRTO (0x2000) -#define MCF_QSPI_QWR_WREN (0x4000) -#define MCF_QSPI_QWR_HALT (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QIR */ -#define MCF_QSPI_QIR_SPIF (0x1) -#define MCF_QSPI_QIR_ABRT (0x4) -#define MCF_QSPI_QIR_WCEF (0x8) -#define MCF_QSPI_QIR_SPIFE (0x100) -#define MCF_QSPI_QIR_ABRTE (0x400) -#define MCF_QSPI_QIR_WCEFE (0x800) -#define MCF_QSPI_QIR_ABRTL (0x1000) -#define MCF_QSPI_QIR_ABRTB (0x4000) -#define MCF_QSPI_QIR_WCEFB (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QAR */ -#define MCF_QSPI_QAR_ADDR(x) (((x)&0x3F)<<0) -#define MCF_QSPI_QAR_TRANS (0) -#define MCF_QSPI_QAR_RECV (0x10) -#define MCF_QSPI_QAR_CMD (0x20) - -/* Bit definitions and macros for MCF_QSPI_QDR */ -#define MCF_QSPI_QDR_DATA(x) (((x)&0xFFFF)<<0) -#define MCF_QSPI_QDR_CONT (0x8000) -#define MCF_QSPI_QDR_BITSE (0x4000) -#define MCF_QSPI_QDR_DT (0x2000) -#define MCF_QSPI_QDR_DSCK (0x1000) -#define MCF_QSPI_QDR_QSPI_CS3 (0x800) -#define MCF_QSPI_QDR_QSPI_CS2 (0x400) -#define MCF_QSPI_QDR_QSPI_CS1 (0x200) -#define MCF_QSPI_QDR_QSPI_CS0 (0x100) - - -#endif /* __MCF52235_QSPI_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h deleted file mode 100644 index dda8e5f91..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_RCM_H__ -#define __MCF52235_RCM_H__ - - -/********************************************************************* -* -* Reset Controller Module (RCM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_RCM_RCR (*(vuint8 *)(&__IPSBAR[0x110000])) -#define MCF_RCM_RSR (*(vuint8 *)(&__IPSBAR[0x110001])) -#define MCF_RCM_CCR (*(vuint16*)(&__IPSBAR[0x110004])) -#define MCF_RCM_CIR (*(vuint16*)(&__IPSBAR[0x11000A])) - -/* Bit definitions and macros for MCF_RCM_RCR */ -#define MCF_RCM_RCR_LVDE (0x1) -#define MCF_RCM_RCR_LVDRE (0x4) -#define MCF_RCM_RCR_LVDIE (0x8) -#define MCF_RCM_RCR_LVDF (0x10) -#define MCF_RCM_RCR_FRCRSTOUT (0x40) -#define MCF_RCM_RCR_SOFTRST (0x80) - -/* Bit definitions and macros for MCF_RCM_RSR */ -#define MCF_RCM_RSR_LOL (0x1) -#define MCF_RCM_RSR_LOC (0x2) -#define MCF_RCM_RSR_EXT (0x4) -#define MCF_RCM_RSR_POR (0x8) -#define MCF_RCM_RSR_WDR (0x10) -#define MCF_RCM_RSR_SOFT (0x20) -#define MCF_RCM_RSR_LVD (0x40) - -/* Bit definitions and macros for MCF_RCM_CCR */ -#define MCF_RCM_CCR_LOAD (0x8000) - - -#endif /* __MCF52235_RCM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h deleted file mode 100644 index 53c4d017c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_RNGA_H__ -#define __MCF52235_RNGA_H__ - - -/********************************************************************* -* -* Random Number Generator (RNG) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_RNGA_RNGCR (*(vuint32*)(&__IPSBAR[0x1F0000])) -#define MCF_RNGA_RNGSR (*(vuint32*)(&__IPSBAR[0x1F0004])) -#define MCF_RNGA_RNGER (*(vuint32*)(&__IPSBAR[0x1F0008])) -#define MCF_RNGA_RNGOUT (*(vuint32*)(&__IPSBAR[0x1F000C])) - - -/* Bit definitions and macros for MCF_RNGA_RNGCR */ -#define MCF_RNGA_RNGCR_GO (0x1) -#define MCF_RNGA_RNGCR_HA (0x2) -#define MCF_RNGA_RNGCR_IM (0x4) -#define MCF_RNGA_RNGCR_CI (0x8) -#define MCF_RNGA_RNGCR_SLM (0x10) - -/* Bit definitions and macros for MCF_RNGA_RNGSR */ -#define MCF_RNGA_RNGSR_SV (0x1) -#define MCF_RNGA_RNGSR_LRS (0x2) -#define MCF_RNGA_RNGSR_OUF (0x4) -#define MCF_RNGA_RNGSR_EI (0x8) -#define MCF_RNGA_RNGSR_SLP (0x10) -#define MCF_RNGA_RNGSR_ORL(x) (((x)&0xFF)<<0x8) -#define MCF_RNGA_RNGSR_ORS(x) (((x)&0xFF)<<0x10) - -/* Bit definitions and macros for MCF_RNGA_RNGER */ -#define MCF_RNGA_RNGER_ENT(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_RNGA_RNGOUT */ -#define MCF_RNGA_RNGOUT_RANDOM_OUTPUT(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_RNGA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h deleted file mode 100644 index a984b24d5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_RTC_H__ -#define __MCF52235_RTC_H__ - - -/********************************************************************* -* -* Real-Time Clock (RTC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_RTC_HOURMIN (*(vuint32*)(&__IPSBAR[0x3C0])) -#define MCF_RTC_SECONDS (*(vuint32*)(&__IPSBAR[0x3C4])) -#define MCF_RTC_ALRM_HM (*(vuint32*)(&__IPSBAR[0x3C8])) -#define MCF_RTC_ALRM_SEC (*(vuint32*)(&__IPSBAR[0x3CC])) -#define MCF_RTC_RTCCTL (*(vuint32*)(&__IPSBAR[0x3D0])) -#define MCF_RTC_RTCISR (*(vuint32*)(&__IPSBAR[0x3D4])) -#define MCF_RTC_RTCIENR (*(vuint32*)(&__IPSBAR[0x3D8])) -#define MCF_RTC_STPWCH (*(vuint32*)(&__IPSBAR[0x3DC])) -#define MCF_RTC_DAYS (*(vuint32*)(&__IPSBAR[0x3E0])) -#define MCF_RTC_ALRM_DAY (*(vuint32*)(&__IPSBAR[0x3E4])) - - -/* Bit definitions and macros for MCF_RTC_HOURMIN */ -#define MCF_RTC_HOURMIN_MINUTES(x) (((x)&0x3F)<<0) -#define MCF_RTC_HOURMIN_HOURS(x) (((x)&0x1F)<<0x8) - -/* Bit definitions and macros for MCF_RTC_SECONDS */ -#define MCF_RTC_SECONDS_SECONDS(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_RTC_ALRM_HM */ -#define MCF_RTC_ALRM_HM_MINUTES(x) (((x)&0x3F)<<0) -#define MCF_RTC_ALRM_HM_HOURS(x) (((x)&0x1F)<<0x8) - -/* Bit definitions and macros for MCF_RTC_ALRM_SEC */ -#define MCF_RTC_ALRM_SEC_SECONDS(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_RTC_RTCCTL */ -#define MCF_RTC_RTCCTL_SWR (0x1) -#define MCF_RTC_RTCCTL_EN (0x80) - -/* Bit definitions and macros for MCF_RTC_RTCISR */ -#define MCF_RTC_RTCISR_SW (0x1) -#define MCF_RTC_RTCISR_MIN (0x2) -#define MCF_RTC_RTCISR_ALM (0x4) -#define MCF_RTC_RTCISR_DAY (0x8) -#define MCF_RTC_RTCISR_1HZ (0x10) -#define MCF_RTC_RTCISR_HR (0x20) - -/* Bit definitions and macros for MCF_RTC_RTCIENR */ -#define MCF_RTC_RTCIENR_SW (0x1) -#define MCF_RTC_RTCIENR_MIN (0x2) -#define MCF_RTC_RTCIENR_ALM (0x4) -#define MCF_RTC_RTCIENR_DAY (0x8) -#define MCF_RTC_RTCIENR_1HZ (0x10) -#define MCF_RTC_RTCIENR_HR (0x20) - -/* Bit definitions and macros for MCF_RTC_STPWCH */ -#define MCF_RTC_STPWCH_CNT(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_RTC_DAYS */ -#define MCF_RTC_DAYS_DAYS(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_RTC_ALRM_DAY */ -#define MCF_RTC_ALRM_DAY_DAYSAL(x) (((x)&0xFFFF)<<0) - - -#endif /* __MCF52235_RTC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h deleted file mode 100644 index b50dc30a7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h +++ /dev/null @@ -1,201 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_SCM_H__ -#define __MCF52235_SCM_H__ - - -/********************************************************************* -* -* System Control Module (SCM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_SCM_RAMBAR (*(vuint32*)(&__IPSBAR[0x8])) -#define MCF_SCM_PPMRH (*(vuint32*)(&__IPSBAR[0xC])) -#define MCF_SCM_CRSR (*(vuint8 *)(&__IPSBAR[0x10])) -#define MCF_SCM_CWCR (*(vuint8 *)(&__IPSBAR[0x11])) -#define MCF_SCM_CWSR (*(vuint8 *)(&__IPSBAR[0x13])) -#define MCF_SCM_DMAREQC (*(vuint32*)(&__IPSBAR[0x14])) -#define MCF_SCM_PPMRL (*(vuint32*)(&__IPSBAR[0x18])) -#define MCF_SCM_MPARK (*(vuint32*)(&__IPSBAR[0x1C])) -#define MCF_SCM_MPR (*(vuint8 *)(&__IPSBAR[0x20])) -#define MCF_SCM_PPMRS (*(vuint8 *)(&__IPSBAR[0x21])) -#define MCF_SCM_PPMRC (*(vuint8 *)(&__IPSBAR[0x22])) -#define MCF_SCM_IPSBMT (*(vuint8 *)(&__IPSBAR[0x23])) -#define MCF_SCM_PACR0 (*(vuint8 *)(&__IPSBAR[0x24])) -#define MCF_SCM_PACR1 (*(vuint8 *)(&__IPSBAR[0x25])) -#define MCF_SCM_PACR2 (*(vuint8 *)(&__IPSBAR[0x26])) -#define MCF_SCM_PACR3 (*(vuint8 *)(&__IPSBAR[0x27])) -#define MCF_SCM_PACR4 (*(vuint8 *)(&__IPSBAR[0x28])) -#define MCF_SCM_PACR5 (*(vuint8 *)(&__IPSBAR[0x29])) -#define MCF_SCM_PACR6 (*(vuint8 *)(&__IPSBAR[0x2A])) -#define MCF_SCM_PACR7 (*(vuint8 *)(&__IPSBAR[0x2B])) -#define MCF_SCM_PACR8 (*(vuint8 *)(&__IPSBAR[0x2C])) -#define MCF_SCM_GPACR0 (*(vuint8 *)(&__IPSBAR[0x30])) -#define MCF_SCM_GPACR1 (*(vuint8 *)(&__IPSBAR[0x31])) -#define MCF_SCM_PACR(x) (*(vuint8 *)(&__IPSBAR[0x24 + ((x)*0x1)])) -#define MCF_SCM_GPACR(x) (*(vuint8 *)(&__IPSBAR[0x30 + ((x)*0x1)])) - -/* Other macros */ -#define MCF_SCM_IPSBAR (*(vuint32*)(&__IPSBAR[0x0])) -#define MCF_SCM_IPSBAR_V (0x1) -#define MCF_SCM_IPSBAR_BA(x) ((x)&0xC0000000) - - -/* Bit definitions and macros for MCF_SCM_RAMBAR */ -#define MCF_SCM_RAMBAR_BDE (0x200) -#define MCF_SCM_RAMBAR_BA(x) ((x)&0xFFFF0000) - -/* Bit definitions and macros for MCF_SCM_PPMRH */ -#define MCF_SCM_PPMRH_CDPORTS (0x1) -#define MCF_SCM_PPMRH_CDEPORT (0x2) -#define MCF_SCM_PPMRH_CDPIT0 (0x8) -#define MCF_SCM_PPMRH_CDPIT1 (0x10) -#define MCF_SCM_PPMRH_CDADC (0x80) -#define MCF_SCM_PPMRH_CDGPT (0x100) -#define MCF_SCM_PPMRH_CDPWM (0x200) -#define MCF_SCM_PPMRH_CDFCAN (0x400) -#define MCF_SCM_PPMRH_CDCFM (0x800) -#define MCF_SCM_PPMRH_CDEPHY (0x1000) -#define MCF_SCM_PPMRH_CDRNGA (0x2000) - -/* Bit definitions and macros for MCF_SCM_CRSR */ -#define MCF_SCM_CRSR_CWDR (0x20) -#define MCF_SCM_CRSR_EXT (0x80) - -/* Bit definitions and macros for MCF_SCM_CWCR */ -#define MCF_SCM_CWCR_CWTIF (0x1) -#define MCF_SCM_CWCR_CWTAVAL (0x2) -#define MCF_SCM_CWCR_CWTA (0x4) -#define MCF_SCM_CWCR_CWT(x) (((x)&0x7)<<0x3) -#define MCF_SCM_CWCR_CWT_2_9 (0) -#define MCF_SCM_CWCR_CWT_2_11 (0x8) -#define MCF_SCM_CWCR_CWT_2_13 (0x10) -#define MCF_SCM_CWCR_CWT_2_15 (0x18) -#define MCF_SCM_CWCR_CWT_2_19 (0x20) -#define MCF_SCM_CWCR_CWT_2_23 (0x28) -#define MCF_SCM_CWCR_CWT_2_27 (0x30) -#define MCF_SCM_CWCR_CWT_2_31 (0x38) -#define MCF_SCM_CWCR_CWRI (0x40) -#define MCF_SCM_CWCR_CWE (0x80) - -/* Bit definitions and macros for MCF_SCM_CWSR */ -#define MCF_SCM_CWSR_CWSR(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_SCM_DMAREQC */ -#define MCF_SCM_DMAREQC_DMAC0(x) (((x)&0xF)<<0) -#define MCF_SCM_DMAREQC_DMAC1(x) (((x)&0xF)<<0x4) -#define MCF_SCM_DMAREQC_DMAC2(x) (((x)&0xF)<<0x8) -#define MCF_SCM_DMAREQC_DMAC3(x) (((x)&0xF)<<0xC) - -/* Bit definitions and macros for MCF_SCM_PPMRL */ -#define MCF_SCM_PPMRL_CDG (0x2) -#define MCF_SCM_PPMRL_CDDMA (0x10) -#define MCF_SCM_PPMRL_CDUART0 (0x20) -#define MCF_SCM_PPMRL_CDUART1 (0x40) -#define MCF_SCM_PPMRL_CDUART2 (0x80) -#define MCF_SCM_PPMRL_CDI2C (0x200) -#define MCF_SCM_PPMRL_CDQSPI (0x400) -#define MCF_SCM_PPMRL_CDRTC (0x1000) -#define MCF_SCM_PPMRL_CDTMR0 (0x2000) -#define MCF_SCM_PPMRL_CDTMR1 (0x4000) -#define MCF_SCM_PPMRL_CDTMR2 (0x8000) -#define MCF_SCM_PPMRL_CDTMR3 (0x10000) -#define MCF_SCM_PPMRL_CDINTC0 (0x20000) -#define MCF_SCM_PPMRL_CDINTC1 (0x40000) -#define MCF_SCM_PPMRL_CDFEC0 (0x200000) - -/* Bit definitions and macros for MCF_SCM_MPARK */ -#define MCF_SCM_MPARK_LCKOUT_TIME(x) (((x)&0xF)<<0x8) -#define MCF_SCM_MPARK_PRKLAST (0x1000) -#define MCF_SCM_MPARK_TIMEOUT (0x2000) -#define MCF_SCM_MPARK_FIXED (0x4000) -#define MCF_SCM_MPARK_M1_PRTY(x) (((x)&0x3)<<0x10) -#define MCF_SCM_MPARK_M0_PRTY(x) (((x)&0x3)<<0x12) -#define MCF_SCM_MPARK_M2_PRTY(x) (((x)&0x3)<<0x14) -#define MCF_SCM_MPARK_BCR24BIT (0x1000000) -#define MCF_SCM_MPARK_M2_P_EN (0x2000000) - -/* Bit definitions and macros for MCF_SCM_MPR */ -#define MCF_SCM_MPR_MPR(x) (((x)&0xF)<<0) - -/* Bit definitions and macros for MCF_SCM_PPMRS */ -#define MCF_SCM_PPMRS_PPMRS(x) (((x)&0x7F)<<0) -#define MCF_SCM_PPMRS_DISABLE_ALL (0x40) -#define MCF_SCM_PPMRS_DISABLE_CFM (0x2B) -#define MCF_SCM_PPMRS_DISABLE_CAN (0x2A) -#define MCF_SCM_PPMRS_DISABLE_PWM (0x29) -#define MCF_SCM_PPMRS_DISABLE_GPT (0x28) -#define MCF_SCM_PPMRS_DISABLE_ADC (0x27) -#define MCF_SCM_PPMRS_DISABLE_PIT1 (0x24) -#define MCF_SCM_PPMRS_DISABLE_PIT0 (0x23) -#define MCF_SCM_PPMRS_DISABLE_EPORT (0x21) -#define MCF_SCM_PPMRS_DISABLE_PORTS (0x20) -#define MCF_SCM_PPMRS_DISABLE_INTC (0x11) -#define MCF_SCM_PPMRS_DISABLE_DTIM3 (0x10) -#define MCF_SCM_PPMRS_DISABLE_DTIM2 (0xF) -#define MCF_SCM_PPMRS_DISABLE_DTIM1 (0xE) -#define MCF_SCM_PPMRS_DISABLE_DTIM0 (0xD) -#define MCF_SCM_PPMRS_DISABLE_QSPI (0xA) -#define MCF_SCM_PPMRS_DISABLE_I2C (0x9) -#define MCF_SCM_PPMRS_DISABLE_UART2 (0x7) -#define MCF_SCM_PPMRS_DISABLE_UART1 (0x6) -#define MCF_SCM_PPMRS_DISABLE_UART0 (0x5) -#define MCF_SCM_PPMRS_DISABLE_DMA (0x4) -#define MCF_SCM_PPMRS_SET_CDG (0x1) - -/* Bit definitions and macros for MCF_SCM_PPMRC */ -#define MCF_SCM_PPMRC_PPMRC(x) (((x)&0x7F)<<0) -#define MCF_SCM_PPMRC_ENABLE_ALL (0x40) -#define MCF_SCM_PPMRC_ENABLE_CFM (0x2B) -#define MCF_SCM_PPMRC_ENABLE_CAN (0x2A) -#define MCF_SCM_PPMRC_ENABLE_PWM (0x29) -#define MCF_SCM_PPMRC_ENABLE_GPT (0x28) -#define MCF_SCM_PPMRC_ENABLE_ADC (0x27) -#define MCF_SCM_PPMRC_ENABLE_PIT1 (0x24) -#define MCF_SCM_PPMRC_ENABLE_PIT0 (0x23) -#define MCF_SCM_PPMRC_ENABLE_EPORT (0x21) -#define MCF_SCM_PPMRC_ENABLE_PORTS (0x20) -#define MCF_SCM_PPMRC_ENABLE_INTC (0x11) -#define MCF_SCM_PPMRC_ENABLE_DTIM3 (0x10) -#define MCF_SCM_PPMRC_ENABLE_DTIM2 (0xF) -#define MCF_SCM_PPMRC_ENABLE_DTIM1 (0xE) -#define MCF_SCM_PPMRC_ENABLE_DTIM0 (0xD) -#define MCF_SCM_PPMRC_ENABLE_QSPI (0xA) -#define MCF_SCM_PPMRC_ENABLE_I2C (0x9) -#define MCF_SCM_PPMRC_ENABLE_UART2 (0x7) -#define MCF_SCM_PPMRC_ENABLE_UART1 (0x6) -#define MCF_SCM_PPMRC_ENABLE_UART0 (0x5) -#define MCF_SCM_PPMRC_ENABLE_DMA (0x4) -#define MCF_SCM_PPMRC_CLEAR_CDG (0x1) - -/* Bit definitions and macros for MCF_SCM_IPSBMT */ -#define MCF_SCM_IPSBMT_BMT(x) (((x)&0x7)<<0) -#define MCF_SCM_IPSBMT_BMT_CYCLES_1024 (0) -#define MCF_SCM_IPSBMT_BMT_CYCLES_512 (0x1) -#define MCF_SCM_IPSBMT_BMT_CYCLES_256 (0x2) -#define MCF_SCM_IPSBMT_BMT_CYCLES_128 (0x3) -#define MCF_SCM_IPSBMT_BMT_CYCLES_64 (0x4) -#define MCF_SCM_IPSBMT_BMT_CYCLES_32 (0x5) -#define MCF_SCM_IPSBMT_BMT_CYCLES_16 (0x6) -#define MCF_SCM_IPSBMT_BMT_CYCLES_8 (0x7) -#define MCF_SCM_IPSBMT_BME (0x8) - -/* Bit definitions and macros for MCF_SCM_PACR */ -#define MCF_SCM_PACR_ACCESS_CTRL0(x) (((x)&0x7)<<0) -#define MCF_SCM_PACR_LOCK0 (0x8) -#define MCF_SCM_PACR_ACCESS_CTRL1(x) (((x)&0x7)<<0x4) -#define MCF_SCM_PACR_LOCK1 (0x80) - -/* Bit definitions and macros for MCF_SCM_GPACR */ -#define MCF_SCM_GPACR_ACCESS_CTRL(x) (((x)&0xF)<<0) -#define MCF_SCM_GPACR_LOCK (0x80) - - -#endif /* __MCF52235_SCM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h deleted file mode 100644 index 40ae73bac..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h +++ /dev/null @@ -1,194 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_UART_H__ -#define __MCF52235_UART_H__ - - -/********************************************************************* -* -* Universal Asynchronous Receiver Transmitter (UART) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_UART0_UMR1 (*(vuint8 *)(&__IPSBAR[0x200])) -#define MCF_UART0_UMR2 (*(vuint8 *)(&__IPSBAR[0x200])) -#define MCF_UART0_USR (*(vuint8 *)(&__IPSBAR[0x204])) -#define MCF_UART0_UCSR (*(vuint8 *)(&__IPSBAR[0x204])) -#define MCF_UART0_UCR (*(vuint8 *)(&__IPSBAR[0x208])) -#define MCF_UART0_URB (*(vuint8 *)(&__IPSBAR[0x20C])) -#define MCF_UART0_UTB (*(vuint8 *)(&__IPSBAR[0x20C])) -#define MCF_UART0_UIPCR (*(vuint8 *)(&__IPSBAR[0x210])) -#define MCF_UART0_UACR (*(vuint8 *)(&__IPSBAR[0x210])) -#define MCF_UART0_UIMR (*(vuint8 *)(&__IPSBAR[0x214])) -#define MCF_UART0_UISR (*(vuint8 *)(&__IPSBAR[0x214])) -#define MCF_UART0_UBG1 (*(vuint8 *)(&__IPSBAR[0x218])) -#define MCF_UART0_UBG2 (*(vuint8 *)(&__IPSBAR[0x21C])) -#define MCF_UART0_UIP (*(vuint8 *)(&__IPSBAR[0x234])) -#define MCF_UART0_UOP1 (*(vuint8 *)(&__IPSBAR[0x238])) -#define MCF_UART0_UOP0 (*(vuint8 *)(&__IPSBAR[0x23C])) - -#define MCF_UART1_UMR1 (*(vuint8 *)(&__IPSBAR[0x240])) -#define MCF_UART1_UMR2 (*(vuint8 *)(&__IPSBAR[0x240])) -#define MCF_UART1_USR (*(vuint8 *)(&__IPSBAR[0x244])) -#define MCF_UART1_UCSR (*(vuint8 *)(&__IPSBAR[0x244])) -#define MCF_UART1_UCR (*(vuint8 *)(&__IPSBAR[0x248])) -#define MCF_UART1_URB (*(vuint8 *)(&__IPSBAR[0x24C])) -#define MCF_UART1_UTB (*(vuint8 *)(&__IPSBAR[0x24C])) -#define MCF_UART1_UIPCR (*(vuint8 *)(&__IPSBAR[0x250])) -#define MCF_UART1_UACR (*(vuint8 *)(&__IPSBAR[0x250])) -#define MCF_UART1_UIMR (*(vuint8 *)(&__IPSBAR[0x254])) -#define MCF_UART1_UISR (*(vuint8 *)(&__IPSBAR[0x254])) -#define MCF_UART1_UBG1 (*(vuint8 *)(&__IPSBAR[0x258])) -#define MCF_UART1_UBG2 (*(vuint8 *)(&__IPSBAR[0x25C])) -#define MCF_UART1_UIP (*(vuint8 *)(&__IPSBAR[0x274])) -#define MCF_UART1_UOP1 (*(vuint8 *)(&__IPSBAR[0x278])) -#define MCF_UART1_UOP0 (*(vuint8 *)(&__IPSBAR[0x27C])) - -#define MCF_UART2_UMR1 (*(vuint8 *)(&__IPSBAR[0x280])) -#define MCF_UART2_UMR2 (*(vuint8 *)(&__IPSBAR[0x280])) -#define MCF_UART2_USR (*(vuint8 *)(&__IPSBAR[0x284])) -#define MCF_UART2_UCSR (*(vuint8 *)(&__IPSBAR[0x284])) -#define MCF_UART2_UCR (*(vuint8 *)(&__IPSBAR[0x288])) -#define MCF_UART2_URB (*(vuint8 *)(&__IPSBAR[0x28C])) -#define MCF_UART2_UTB (*(vuint8 *)(&__IPSBAR[0x28C])) -#define MCF_UART2_UIPCR (*(vuint8 *)(&__IPSBAR[0x290])) -#define MCF_UART2_UACR (*(vuint8 *)(&__IPSBAR[0x290])) -#define MCF_UART2_UIMR (*(vuint8 *)(&__IPSBAR[0x294])) -#define MCF_UART2_UISR (*(vuint8 *)(&__IPSBAR[0x294])) -#define MCF_UART2_UBG1 (*(vuint8 *)(&__IPSBAR[0x298])) -#define MCF_UART2_UBG2 (*(vuint8 *)(&__IPSBAR[0x29C])) -#define MCF_UART2_UIP (*(vuint8 *)(&__IPSBAR[0x2B4])) -#define MCF_UART2_UOP1 (*(vuint8 *)(&__IPSBAR[0x2B8])) -#define MCF_UART2_UOP0 (*(vuint8 *)(&__IPSBAR[0x2BC])) - -#define MCF_UART_UMR(x) (*(vuint8 *)(&__IPSBAR[0x200 + ((x)*0x40)])) -#define MCF_UART_USR(x) (*(vuint8 *)(&__IPSBAR[0x204 + ((x)*0x40)])) -#define MCF_UART_UCSR(x) (*(vuint8 *)(&__IPSBAR[0x204 + ((x)*0x40)])) -#define MCF_UART_UCR(x) (*(vuint8 *)(&__IPSBAR[0x208 + ((x)*0x40)])) -#define MCF_UART_URB(x) (*(vuint8 *)(&__IPSBAR[0x20C + ((x)*0x40)])) -#define MCF_UART_UTB(x) (*(vuint8 *)(&__IPSBAR[0x20C + ((x)*0x40)])) -#define MCF_UART_UIPCR(x) (*(vuint8 *)(&__IPSBAR[0x210 + ((x)*0x40)])) -#define MCF_UART_UACR(x) (*(vuint8 *)(&__IPSBAR[0x210 + ((x)*0x40)])) -#define MCF_UART_UIMR(x) (*(vuint8 *)(&__IPSBAR[0x214 + ((x)*0x40)])) -#define MCF_UART_UISR(x) (*(vuint8 *)(&__IPSBAR[0x214 + ((x)*0x40)])) -#define MCF_UART_UBG1(x) (*(vuint8 *)(&__IPSBAR[0x218 + ((x)*0x40)])) -#define MCF_UART_UBG2(x) (*(vuint8 *)(&__IPSBAR[0x21C + ((x)*0x40)])) -#define MCF_UART_UIP(x) (*(vuint8 *)(&__IPSBAR[0x234 + ((x)*0x40)])) -#define MCF_UART_UOP1(x) (*(vuint8 *)(&__IPSBAR[0x238 + ((x)*0x40)])) -#define MCF_UART_UOP0(x) (*(vuint8 *)(&__IPSBAR[0x23C + ((x)*0x40)])) - -/* Bit definitions and macros for MCF_UART_UMR */ -#define MCF_UART_UMR_BC(x) (((x)&0x3)<<0) -#define MCF_UART_UMR_BC_5 (0) -#define MCF_UART_UMR_BC_6 (0x1) -#define MCF_UART_UMR_BC_7 (0x2) -#define MCF_UART_UMR_BC_8 (0x3) -#define MCF_UART_UMR_PT (0x4) -#define MCF_UART_UMR_PM(x) (((x)&0x3)<<0x3) -#define MCF_UART_UMR_ERR (0x20) -#define MCF_UART_UMR_RXIRQ (0x40) -#define MCF_UART_UMR_RXRTS (0x80) -#define MCF_UART_UMR_PM_MULTI_ADDR (0x1C) -#define MCF_UART_UMR_PM_MULTI_DATA (0x18) -#define MCF_UART_UMR_PM_NONE (0x10) -#define MCF_UART_UMR_PM_FORCE_HI (0xC) -#define MCF_UART_UMR_PM_FORCE_LO (0x8) -#define MCF_UART_UMR_PM_ODD (0x4) -#define MCF_UART_UMR_PM_EVEN (0) -#define MCF_UART_UMR_SB(x) (((x)&0xF)<<0) -#define MCF_UART_UMR_SB_STOP_BITS_1 (0x7) -#define MCF_UART_UMR_SB_STOP_BITS_15 (0x8) -#define MCF_UART_UMR_SB_STOP_BITS_2 (0xF) -#define MCF_UART_UMR_TXCTS (0x10) -#define MCF_UART_UMR_TXRTS (0x20) -#define MCF_UART_UMR_CM(x) (((x)&0x3)<<0x6) -#define MCF_UART_UMR_CM_NORMAL (0) -#define MCF_UART_UMR_CM_ECHO (0x40) -#define MCF_UART_UMR_CM_LOCAL_LOOP (0x80) -#define MCF_UART_UMR_CM_REMOTE_LOOP (0xC0) - -/* Bit definitions and macros for MCF_UART_USR */ -#define MCF_UART_USR_RXRDY (0x1) -#define MCF_UART_USR_FFULL (0x2) -#define MCF_UART_USR_TXRDY (0x4) -#define MCF_UART_USR_TXEMP (0x8) -#define MCF_UART_USR_OE (0x10) -#define MCF_UART_USR_PE (0x20) -#define MCF_UART_USR_FE (0x40) -#define MCF_UART_USR_RB (0x80) - -/* Bit definitions and macros for MCF_UART_UCSR */ -#define MCF_UART_UCSR_TCS(x) (((x)&0xF)<<0) -#define MCF_UART_UCSR_TCS_SYS_CLK (0xD) -#define MCF_UART_UCSR_TCS_CTM16 (0xE) -#define MCF_UART_UCSR_TCS_CTM (0xF) -#define MCF_UART_UCSR_RCS(x) (((x)&0xF)<<0x4) -#define MCF_UART_UCSR_RCS_SYS_CLK (0xD0) -#define MCF_UART_UCSR_RCS_CTM16 (0xE0) -#define MCF_UART_UCSR_RCS_CTM (0xF0) - -/* Bit definitions and macros for MCF_UART_UCR */ -#define MCF_UART_UCR_RC(x) (((x)&0x3)<<0) -#define MCF_UART_UCR_RX_ENABLED (0x1) -#define MCF_UART_UCR_RX_DISABLED (0x2) -#define MCF_UART_UCR_TC(x) (((x)&0x3)<<0x2) -#define MCF_UART_UCR_TX_ENABLED (0x4) -#define MCF_UART_UCR_TX_DISABLED (0x8) -#define MCF_UART_UCR_MISC(x) (((x)&0x7)<<0x4) -#define MCF_UART_UCR_NONE (0) -#define MCF_UART_UCR_RESET_MR (0x10) -#define MCF_UART_UCR_RESET_RX (0x20) -#define MCF_UART_UCR_RESET_TX (0x30) -#define MCF_UART_UCR_RESET_ERROR (0x40) -#define MCF_UART_UCR_RESET_BKCHGINT (0x50) -#define MCF_UART_UCR_START_BREAK (0x60) -#define MCF_UART_UCR_STOP_BREAK (0x70) - -/* Bit definitions and macros for MCF_UART_URB */ -#define MCF_UART_URB_RB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UTB */ -#define MCF_UART_UTB_TB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UIPCR */ -#define MCF_UART_UIPCR_CTS (0x1) -#define MCF_UART_UIPCR_COS (0x10) - -/* Bit definitions and macros for MCF_UART_UACR */ -#define MCF_UART_UACR_IEC (0x1) - -/* Bit definitions and macros for MCF_UART_UIMR */ -#define MCF_UART_UIMR_TXRDY (0x1) -#define MCF_UART_UIMR_FFULL_RXRDY (0x2) -#define MCF_UART_UIMR_DB (0x4) -#define MCF_UART_UIMR_COS (0x80) - -/* Bit definitions and macros for MCF_UART_UISR */ -#define MCF_UART_UISR_TXRDY (0x1) -#define MCF_UART_UISR_FFULL_RXRDY (0x2) -#define MCF_UART_UISR_DB (0x4) -#define MCF_UART_UISR_COS (0x80) - -/* Bit definitions and macros for MCF_UART_UBG1 */ -#define MCF_UART_UBG1_Divider_MSB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UBG2 */ -#define MCF_UART_UBG2_Divider_LSB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UIP */ -#define MCF_UART_UIP_CTS (0x1) - -/* Bit definitions and macros for MCF_UART_UOP1 */ -#define MCF_UART_UOP1_RTS (0x1) - -/* Bit definitions and macros for MCF_UART_UOP0 */ -#define MCF_UART_UOP0_RTS (0x1) - - -#endif /* __MCF52235_UART_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile deleted file mode 100644 index be22eaf28..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile +++ /dev/null @@ -1,167 +0,0 @@ -RM := rm -rf - -# Set the optimisation level - this should be set to 0, 1, 2, 3 or s (s for size). -OPTIM=0 - -############################################################################### -# List the directories that contain files to be built. -############################################################################### - -# These two directories contain the FreeRTOS.org kernel source files. -FREERTOS_SOURCE_DIR=./../../../Source -PORT_SOURCE_DIR=./../../../Source/portable/GCC/ColdFire_V2 - -# This directory contains the standard demo files that get included in every -# FreeRTOS.org demo. They define tasks that demonstrate the API usage and -# test the FreeRTOS.org port. -COMMON_DEMO_SOURCE_DIR=./../../Common/Minimal - -# This directory contains the modified uIP code -FREERTOS_uIP_DIR=./../../Common/ethernet/FreeRTOS-uIP - -VPATH= $(FREERTOS_SOURCE_DIR) : \ - $(PORT_SOURCE_DIR) : \ - $(COMMON_DEMO_SOURCE_DIR) : \ - $(FREERTOS_SOURCE_DIR)/portable/MemMang : \ - $(FREERTOS_uIP_DIR) : \ - . : \ - ./webserver : \ - ./ParTest : \ - ./serial - - -############################################################################### -# Define a few constants to be used during the build. -############################################################################### - -OUTPUT_DIR=./bin -CPU=52235 -LINKER_SCRIPT=m52235evb-rom-hosted.ld -SREC_FILENAME=RTOSDemo.s19 -ELF_FILENAME=RTOSDemo.elf -CC=m68k-elf-gcc -AS=m68k-elf-as -OBJCOPY=m68k-elf-objcopy - - -############################################################################### -# List the files to include in the build. These files will be located from the -# VPATH defined above. -############################################################################### - -# The FreeRTOS.org source files. -FreeRTOS_OBJS= $(OUTPUT_DIR)/portasm.o \ - $(OUTPUT_DIR)/port.o \ - $(OUTPUT_DIR)/list.o \ - $(OUTPUT_DIR)/tasks.o \ - $(OUTPUT_DIR)/queue.o \ - $(OUTPUT_DIR)/heap_1.o - -# The demo app source files, including the basic WEB server. -Demo_OBJS= $(OUTPUT_DIR)/main.o \ - $(OUTPUT_DIR)/ParTest.o \ - $(OUTPUT_DIR)/flash.o \ - $(OUTPUT_DIR)/FreeRTOS_Tick_Setup.o \ - $(OUTPUT_DIR)/BlockQ.o \ - $(OUTPUT_DIR)/PollQ.o \ - $(OUTPUT_DIR)/semtest.o \ - $(OUTPUT_DIR)/GenQTest.o \ - $(OUTPUT_DIR)/QPeek.o \ - $(OUTPUT_DIR)/FEC.o \ - $(OUTPUT_DIR)/blocktim.o \ - $(OUTPUT_DIR)/recmutex.o \ - $(OUTPUT_DIR)/printf-stdarg.o - -HTTP_OBJS= $(OUTPUT_DIR)/uIP_Task.o \ - $(OUTPUT_DIR)/httpd.o \ - $(OUTPUT_DIR)/httpd-cgi.o \ - $(OUTPUT_DIR)/httpd-fs.o \ - $(OUTPUT_DIR)/http-strings.o - -# uIP source files -uIP_OBJS= $(OUTPUT_DIR)/timer.o \ - $(OUTPUT_DIR)/uip.o \ - $(OUTPUT_DIR)/uip_arp.o \ - $(OUTPUT_DIR)/uiplib.o \ - $(OUTPUT_DIR)/uip-split.o \ - $(OUTPUT_DIR)/psock.o - -OBJS = $(Demo_OBJS) $(FreeRTOS_OBJS) $(uIP_OBJS) $(HTTP_OBJS) - -C_DEPS = $(OBJS:.o=.d) - -INCLUDE_PATHS= -I./webserver \ - -I"$(FREERTOS_uIP_DIR)" \ - -I"$(FREERTOS_SOURCE_DIR)/include" \ - -I"include" \ - -I"$(COMMON_DEMO_SOURCE_DIR)/../include" \ - -I"$(PORT_SOURCE_DIR)" \ - -I./MCF5223x \ - -I. - -CFLAGS= $(INCLUDE_PATHS) \ - -D COLDFIRE_V2_GCC \ - -D PACK_STRUCT_END=__attribute\(\(packed\)\) \ - -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \ - -O$(OPTIM) \ - -D bktPRIMARY_PRIORITY=4 \ - -D bktSECONDARY_PRIORITY=3 \ - -fno-strict-aliasing \ - -g3 \ - -gdwarf-2 \ - -Wall \ - -Wextra \ - -c \ - -ffunction-sections \ - -fdata-sections \ - -fmessage-length=0 \ - -funsigned-char \ - -Wextra \ - -mcpu=$(CPU) \ - -MMD \ - -MP \ - -MF"$(@:%.o=%.d)" \ - -MT"$(@:%.o=%.d)" - -ASFLAGS= -m52235 \ - -g3 \ - --register-prefix-optional \ - --bitwise-or - -LIBS= - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: $(OUTPUT_DIR)/$(SREC_FILENAME) - -# Tool invocations -$(OUTPUT_DIR)/$(SREC_FILENAME): $(OUTPUT_DIR)/$(ELF_FILENAME) - $(OBJCOPY) $(OUTPUT_DIR)/$(ELF_FILENAME) -O srec $(OUTPUT_DIR)/$(SREC_FILENAME) - -$(OUTPUT_DIR)/$(ELF_FILENAME): $(OBJS) - $(CC) -nostartfiles --gc-sections -Xlinker -Map=$(OUTPUT_DIR)/output.map -mcpu=$(CPU) -T $(LINKER_SCRIPT) -o"$(OUTPUT_DIR)/$(ELF_FILENAME)" $(OBJS) $(USER_OBJS) $(LIBS) - -$(OUTPUT_DIR)/%.o: %.c Makefile - $(CC) $(CFLAGS) -o"$@" "$<" - -$(OUTPUT_DIR)/%.o: %.S - $(AS) $(ASFLAGS) -o"$@" "$<" - -# Other Targets -clean: - -$(RM) $(OBJS) $(C_DEPS) $(EXECUTABLES) $(OUTPUT_DIR)/$(ELF_FILENAME) $(OUTPUT_DIR)/$(SREC_FILENAME) - -@echo ' ' - -# -# The rule to create the target directory -# -$(OUTPUT_DIR): - @mkdir $(OUTPUT_DIR) - - -.PHONY: all clean dependents -.SECONDARY: post-build - --include $(wildcard $(OUTPUT_DIR)/*.d) __dummy__ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c deleted file mode 100644 index 060ec79ef..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#include "FreeRTOS.h" -#include "task.h" -#include "partest.h" - -#define partstNUM_LEDs 4 - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Ensure LED outputs are set to GPIO */ - MCF_GPIO_PTCPAR = MCF_GPIO_PTCPAR_DTIN3_GPIO | MCF_GPIO_PTCPAR_DTIN2_GPIO | MCF_GPIO_PTCPAR_DTIN1_GPIO | MCF_GPIO_PTCPAR_DTIN0_GPIO; - - /* Set GPIO to outputs. */ - MCF_GPIO_DDRTC = MCF_GPIO_DDRTC_DDRTC3 | MCF_GPIO_DDRTC_DDRTC2 | MCF_GPIO_DDRTC_DDRTC1 | MCF_GPIO_DDRTC_DDRTC0; - - /* Start with all LEDs off. */ - MCF_GPIO_PORTTC = 0x00; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstNUM_LEDs ) - { - if( xValue != 0 ) - { - taskENTER_CRITICAL(); - MCF_GPIO_PORTTC |= ( 1 << uxLED ); - taskEXIT_CRITICAL(); - } - else - { - taskENTER_CRITICAL(); - MCF_GPIO_PORTTC &= ~( 1 << uxLED ); - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDs ) - { - taskENTER_CRITICAL(); - { - if( ( MCF_GPIO_PORTTC & ( 1 << uxLED ) ) == ( unsigned char ) 0 ) - { - MCF_GPIO_PORTTC |= ( 1 << uxLED ); - } - else - { - MCF_GPIO_PORTTC &= ~( 1 << uxLED ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned portBASE_TYPE uxReturn = pdFALSE; - - if( uxLED < partstNUM_LEDs ) - { - if( ( MCF_GPIO_PORTTC & ( 1 << uxLED ) ) != 0 ) - { - uxReturn = pdTRUE; - } - } - - return uxReturn; -} - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld deleted file mode 100644 index 8142e27f4..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld +++ /dev/null @@ -1,229 +0,0 @@ -/* Linker script for m52235evb - * - * Version:Sourcery G++ Lite 4.2-125 - * BugURL:https://support.codesourcery.com/GNUToolchain/ - * - * Copyright 2007, 2008 CodeSourcery. - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. */ - -OUTPUT_ARCH(m68k) -ENTRY(_start) -SEARCH_DIR(.) -GROUP(-lgcc -lc -lcs3 -lcs3hosted -lcs3coldfire) - -MEMORY -{ - ram (rw) : ORIGIN = 0x20000000, LENGTH = 32K - vectorrom (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400 - cfmprotrom (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000020 - rom (rx) : ORIGIN = 0x00000420, LENGTH = 256K - 0x400 - 0x20 - ipsbar (rw) : ORIGIN = 0x40000000, LENGTH = 2M -} - -/* These force the linker to search for particular symbols from - * the start of the link process and thus ensure the user's - * overrides are picked up - */ -EXTERN(__cs3_reset_m52235evb) -INCLUDE coldfire-names.inc -EXTERN(__cs3_interrupt_vector_coldfire) -EXTERN(__cs3_start_c main __cs3_stack __cs3_heap_end) -EXTERN(_start) -/* force exit to be picked up in a hosted or os environment */ -EXTERN(exit atexit) - -PROVIDE(__cs3_heap_start = _end); -PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram); -PROVIDE(__cs3_region_num = (__cs3_regions_end - __cs3_regions) / 20); -PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram); - -SECTIONS -{ - - .vectors_table : - { - CREATE_OBJECT_SYMBOLS - __cs3_region_start_rom = .; - *(.cs3.region-head.rom) - ASSERT (. == __cs3_region_start_rom, ".cs3.region-head.rom not permitted"); - __cs3_interrupt_vector = __cs3_interrupt_vector_coldfire; - *(.cs3.interrupt_vector) - /* Make sure we pulled in an interrupt vector. */ - ASSERT (. != __cs3_interrupt_vector_coldfire, "No interrupt vector"); - } > vectorrom - - .cfmprotect : - { - *(.cfmconfig) - . = ALIGN (0x4); - } > cfmprotrom - - - .text : - { - - PROVIDE(__cs3_reset_m52235evb = _start); - __cs3_reset = __cs3_reset_m52235evb; - *(.cs3.reset) - - *(.text .text.* .gnu.linkonce.t.*) - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.jcr)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .jcr)) - KEEP (*crtend.o(.jcr)) - - . = ALIGN(0x4); - *(.gcc_except_table .gcc_except_table.*) - } >rom - .eh_frame_hdr : ALIGN (4) - { - KEEP (*(.eh_frame_hdr)) - } >rom - .eh_frame : ALIGN (4) - { - KEEP (*(.eh_frame)) - } >rom - .rodata : ALIGN (4) - { - *(.rodata .rodata.* .gnu.linkonce.r.*) - - . = ALIGN(4); - _init = .; - LONG (0x4e560000) /* linkw %fp,#0 */ - KEEP(*(.init)) - SHORT (0x4e5e) /* unlk %fp */ - SHORT (0x4e75) /* rts */ - - . = ALIGN(4); - __preinit_array_start = .; - KEEP (*(.preinit_array)) - __preinit_array_end = .; - - . = ALIGN(4); - __init_array_start = .; - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - __init_array_end = .; - - . = ALIGN(4); - _fini = .; - LONG (0x4e560000) /* linkw %fp,#0 */ - KEEP(*(.fini)) - SHORT (0x4e5e) /* unlk %fp */ - SHORT (0x4e75) /* rts */ - - . = ALIGN(4); - __fini_array_start = .; - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - __fini_array_end = .; - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.lit) - - . = ALIGN(4); - __cs3_regions = .; - LONG (0) - LONG (__cs3_region_init_ram) - LONG (__cs3_region_start_ram) - LONG (__cs3_region_init_size_ram) - LONG (__cs3_region_zero_size_ram) - __cs3_regions_end = .; - - . = ALIGN (8); - . = ALIGN (8); - *(.rom) - *(.rom.b) - _etext = .; - } >rom - /* __cs3_region_end_rom is deprecated */ - __cs3_region_end_rom = __cs3_region_start_rom + LENGTH(rom); - __cs3_region_size_rom = LENGTH(rom); - - .cs3.ipsbar : - { - __cs3_region_start_ipsbar = .; - *(.cs3.region-head.ipsbar) - . = ALIGN (8); - } >ipsbar - /* __cs3_region_end_ipsbar is deprecated */ - __cs3_region_end_ipsbar = __cs3_region_start_ipsbar + LENGTH(ipsbar); - __cs3_region_size_ipsbar = LENGTH(ipsbar); - - .data : ALIGN (8) - { - __cs3_region_start_ram = .; - *(.cs3.region-head.ram) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (8); - *(.ram) - _edata = .; - } >ram AT>rom - .bss : - { - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - *(.ram.b) - _end = .; - __end = .; - } >ram AT>rom - /* __cs3_region_end_ram is deprecated */ - __cs3_region_end_ram = __cs3_region_start_ram + LENGTH(ram); - __cs3_region_size_ram = LENGTH(ram); - __cs3_region_init_ram = LOADADDR (.data); - __cs3_region_init_size_ram = _edata - ADDR (.data); - __cs3_region_zero_size_ram = _end - _edata; - - .stab 0 (NOLOAD) : { *(.stab) } - .stabstr 0 (NOLOAD) : { *(.stabstr) } - /* DWARF debug sections. - * Symbols in the DWARF debugging sections are relative to the beginning - * of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -} diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c deleted file mode 100644 index 788ccb38e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c +++ /dev/null @@ -1,455 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. It manages the WEB server functionality. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. An error found in any task will be - * latched in the ulErrorCode variable for display through the WEB server (the - * error code is displayed at the foot of the table that contains information on - * the state of each task). - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted very - * frequently. A register containing an unexpected value is indicative of an - * error in the context switching mechanism. - * - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "IntQueue.h" -#include "comtest2.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality - as described at the -top of this file. */ -#define mainCHECK_TASK_PERIOD ( ( portTickType ) 5000 / portTICK_RATE_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server task uses more stack than most other tasks because of its -reliance on using sprintf(). */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Implements the 'check' task functionality as described at the top of this - * file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * The task that implements the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * Implement the 'Reg test' functionality as described at the top of this file. - */ -static void vRegTest1Task( void *pvParameters ); -static void vRegTest2Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Counters used to detect errors within the reg test tasks. */ -static volatile unsigned long ulRegTest1Counter = 0x11111111, ulRegTest2Counter = 0x22222222; - -/* Any errors that the check task finds in any tasks are latched into -ulErrorCode, and then displayed via the WEB server. */ -static unsigned long ulErrorCode = 0UL; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Setup the hardware ready for this demo. */ - prvSetupHardware(); - - /* Create the WEB server task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks. */ - vStartLEDFlashTasks( tskIDLE_PRIORITY ); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Start the reg test tasks - defined in this file. */ - xTaskCreate( vRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL ); - - /* Create the check task. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient heap to create the idle - task. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -unsigned ulLastRegTest1Count = 0, ulLastRegTest2Count = 0; -portTickType xLastExecutionTime; - - /* To prevent compiler warnings. */ - ( void ) pvParameters; - - /* Initialise the variable used to control our iteration rate prior to - its first use. */ - xLastExecutionTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Wait until it is time to run the tests again. */ - vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_PERIOD ); - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x01UL; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x02UL; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x04UL; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x20UL; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x40UL; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x80UL; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x100UL; - } - - if( ulLastRegTest1Count == ulRegTest1Counter ) - { - ulErrorCode |= 0x200UL; - } - - if( ulLastRegTest2Count == ulRegTest2Counter ) - { - ulErrorCode |= 0x200UL; - } - - /* Remember the reg test counts so a stall in their values can be - detected next time around. */ - ulLastRegTest1Count = ulRegTest1Counter; - ulLastRegTest2Count = ulRegTest2Counter; - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetErrorCode( void ) -{ - /* Returns the error code for display via the WEB server. */ - return ulErrorCode; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ -__attribute__ ((section(".cfmconfig"))) -static const unsigned long _cfm[6] = { - 0, /* KEY_UPPER 0x00000400 */ - 0, /* KEY_LOWER 0x00000404 */ - 0, /* CFMPROT 0x00000408 */ - 0, /* CFMSACC 0x0000040C */ - 0, /* CFMDACC 0x00000410 */ - 0, /* CFMSEC 0x00000414 */ -}; - - /* Just to stop compiler warnings. */ - ( void ) _cfm; - - /* Ensure the watchdog is disabled. */ - MCF_SCM_CWCR = 0; - - /* Initialize IPSBAR (0x40000000). */ - asm volatile( - "move.l #0x40000000,%d0 \n" - "andi.l #0xC0000000,%d0 \n" - "add.l #0x1,%d0 \n" - "move.l %d0,0x40000000 " - ); - - /* Initialize FLASHBAR (0x00) */ - asm volatile( - "move.l #0x00,%d0 \n" - "andi.l #0xFFF80000,%d0 \n" - "add.l #0x41,%d0 \n" - "movec %d0,%FLASHBAR " - ); - - portDISABLE_INTERRUPTS(); - - /* RAMBAR. */ - MCF_SCM_RAMBAR = MCF_SCM_RAMBAR_BA( RAMBAR_ADDRESS ) | MCF_SCM_RAMBAR_BDE; - - /* Multiply 25MHz crystal by 12 to get 60MHz clock. */ - MCF_CLOCK_SYNCR = MCF_CLOCK_SYNCR_MFD(4) | MCF_CLOCK_SYNCR_CLKSRC| MCF_CLOCK_SYNCR_PLLMODE | MCF_CLOCK_SYNCR_PLLEN ; - while (!(MCF_CLOCK_SYNSR & MCF_CLOCK_SYNSR_LOCK)) - { - } - - /* Setup the port used to toggle LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName ) -{ - /* This will get called if a stack overflow is detected during the context - switch. Set configCHECK_FOR_STACK_OVERFLOWS to 2 to also check for stack - problems within nested interrupts, but only do this for debug purposes as - it will increase the context switch time. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest1Task( void *pvParameters ) -{ - /* Sanity check - did we receive the parameter expected? */ - if( pvParameters != &ulRegTest1Counter ) - { - /* Change here so the check task can detect that an error occurred. */ - for( ;; ); - } - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_1_start: \n\t" - " moveq #1, %d0 \n\t" - " moveq #2, %d1 \n\t" - " moveq #3, %d2 \n\t" - " moveq #4, %d3 \n\t" - " moveq #5, %d4 \n\t" - " moveq #6, %d5 \n\t" - " moveq #7, %d6 \n\t" - " moveq #8, %d7 \n\t" - " move #9, %a0 \n\t" - " move #10, %a1 \n\t" - " move #11, %a2 \n\t" - " move #12, %a3 \n\t" - " move #13, %a4 \n\t" - " move #14, %a5 \n\t" - " move #15, %a6 \n\t" - " \n\t" - " cmpi.l #1, %d0 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #2, %d1 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #3, %d2 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #4, %d3 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #5, %d4 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #6, %d5 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #7, %d6 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #8, %d7 \n\t" - " bne reg_test_1_error \n\t" - " move %a0, %d0 \n\t" - " cmpi.l #9, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a1, %d0 \n\t" - " cmpi.l #10, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a2, %d0 \n\t" - " cmpi.l #11, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a3, %d0 \n\t" - " cmpi.l #12, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a4, %d0 \n\t" - " cmpi.l #13, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a5, %d0 \n\t" - " cmpi.l #14, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a6, %d0 \n\t" - " cmpi.l #15, %d0 \n\t" - " bne reg_test_1_error \n\t" - " movel ulRegTest1Counter, %d0 \n\t" - " addql #1, %d0 \n\t" - " movel %d0, ulRegTest1Counter \n\t" - " bra reg_test_1_start \n\t" - "reg_test_1_error: \n\t" - " bra reg_test_1_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest2Task( void *pvParameters ) -{ - /* Sanity check - did we receive the parameter expected? */ - if( pvParameters != &ulRegTest2Counter ) - { - /* Change here so the check task can detect that an error occurred. */ - for( ;; ); - } - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_2_start: \n\t" - " moveq #10, %d0 \n\t" - " moveq #20, %d1 \n\t" - " moveq #30, %d2 \n\t" - " moveq #40, %d3 \n\t" - " moveq #50, %d4 \n\t" - " moveq #60, %d5 \n\t" - " moveq #70, %d6 \n\t" - " moveq #80, %d7 \n\t" - " move #90, %a0 \n\t" - " move #100, %a1 \n\t" - " move #110, %a2 \n\t" - " move #120, %a3 \n\t" - " move #130, %a4 \n\t" - " move #140, %a5 \n\t" - " move #150, %a6 \n\t" - " \n\t" - " cmpi.l #10, %d0 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #20, %d1 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #30, %d2 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #40, %d3 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #50, %d4 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #60, %d5 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #70, %d6 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #80, %d7 \n\t" - " bne reg_test_2_error \n\t" - " move %a0, %d0 \n\t" - " cmpi.l #90, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a1, %d0 \n\t" - " cmpi.l #100, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a2, %d0 \n\t" - " cmpi.l #110, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a3, %d0 \n\t" - " cmpi.l #120, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a4, %d0 \n\t" - " cmpi.l #130, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a5, %d0 \n\t" - " cmpi.l #140, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a6, %d0 \n\t" - " cmpi.l #150, %d0 \n\t" - " bne reg_test_2_error \n\t" - " movel ulRegTest1Counter, %d0 \n\t" - " addql #1, %d0 \n\t" - " movel %d0, ulRegTest2Counter \n\t" - " bra reg_test_2_start \n\t" - "reg_test_2_error: \n\t" - " bra reg_test_2_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c deleted file mode 100644 index ca00421d1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c +++ /dev/null @@ -1,733 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Hardware includes. */ -#include "fecbd.h" -#include "mii.h" -#include "eth_phy.h" -#include "eth.h" - -/* uIP includes. */ -#include "uip.h" -#include "uip_arp.h" - -/* Delay between polling the PHY to see if a link has been established. */ -#define fecLINK_DELAY ( 500 / portTICK_RATE_MS ) - -/* Delay to wait for an MII access. */ -#define fecMII_DELAY ( 10 / portTICK_RATE_MS ) -#define fecMAX_POLLS ( 20 ) - -/* Constants used to delay while waiting for a tx descriptor to be free. */ -#define fecMAX_WAIT_FOR_TX_BUFFER ( 200 / portTICK_RATE_MS ) - -/* We only use a single Tx descriptor which can lead to Txed packets being sent -twice (due to a bug in the FEC silicon). However, in this case the bug is used -to our advantage in that it means the uip-split mechanism is not required. */ -#define fecNUM_FEC_TX_BUFFERS ( 1 ) -#define fecTX_BUFFER_TO_USE ( 0 ) -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -xSemaphoreHandle xFECSemaphore = NULL, xTxSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers to effect a zero copy policy. */ -unsigned char *uip_buf; - -/* The DMA descriptors. This is a char array to allow us to align it correctly. */ -static unsigned char xFECTxDescriptors_unaligned[ ( fecNUM_FEC_TX_BUFFERS * sizeof( FECBD ) ) + 16 ]; -static unsigned char xFECRxDescriptors_unaligned[ ( configNUM_FEC_RX_BUFFERS * sizeof( FECBD ) ) + 16 ]; -static FECBD *xFECTxDescriptors; -static FECBD *xFECRxDescriptors; - -/* The DMA buffers. These are char arrays to allow them to be aligned correctly. */ -static unsigned char ucFECRxBuffers[ ( configNUM_FEC_RX_BUFFERS * configFEC_BUFFER_SIZE ) + 16 ]; -static unsigned portBASE_TYPE uxNextRxBuffer = 0, uxIndexToBufferOwner = 0; - -/*-----------------------------------------------------------*/ - -/* - * Enable all the required interrupts in the FEC and in the interrupt controller. - */ -static void prvEnableFECInterrupts( void ); - -/* - * Reset the FEC if we get into an unrecoverable state. - */ -static void prvResetFEC( portBASE_TYPE xCalledFromISR ); - -/********************************************************************/ - -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Write a value to a PHY's MII register. - * - * Parameters: - * ch FEC channel - * phy_addr Address of the PHY. - * reg_addr Address of the register in the PHY. - * data Data to be written to the PHY register. - * - * Return Values: - * 0 on failure - * 1 on success. - * - * Please refer to your PHY manual for registers and their meanings. - * mii_write() polls for the FEC's MII interrupt event and clears it. - * If after a suitable amount of time the event isn't triggered, a - * value of 0 is returned. - */ -static int fec_mii_write( int phy_addr, int reg_addr, int data ) -{ -int timeout, iReturn; -uint32 eimr; - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Mask the MII interrupt */ - eimr = MCF_FEC_EIMR; - MCF_FEC_EIMR &= ~MCF_FEC_EIMR_MII; - - /* Write to the MII Management Frame Register to kick-off the MII write */ - MCF_FEC_MMFR = MCF_FEC_MMFR_ST_01 | MCF_FEC_MMFR_OP_WRITE | MCF_FEC_MMFR_PA(phy_addr) | MCF_FEC_MMFR_RA(reg_addr) | MCF_FEC_MMFR_TA_10 | MCF_FEC_MMFR_DATA( data ); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for( timeout = 0; timeout < fecMAX_POLLS; timeout++ ) - { - if( MCF_FEC_EIR & MCF_FEC_EIR_MII ) - { - break; - } - else - { - vTaskDelay( fecMII_DELAY ); - } - } - - if( timeout == fecMAX_POLLS ) - { - iReturn = 0; - } - else - { - iReturn = 1; - } - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Restore the EIMR */ - MCF_FEC_EIMR = eimr; - - return iReturn; -} - -/********************************************************************/ -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Read a value from a PHY's MII register. - * - * Parameters: - * ch FEC channel - * phy_addr Address of the PHY. - * reg_addr Address of the register in the PHY. - * data Pointer to storage for the Data to be read - * from the PHY register (passed by reference) - * - * Return Values: - * 0 on failure - * 1 on success. - * - * Please refer to your PHY manual for registers and their meanings. - * mii_read() polls for the FEC's MII interrupt event and clears it. - * If after a suitable amount of time the event isn't triggered, a - * value of 0 is returned. - */ -static int fec_mii_read( int phy_addr, int reg_addr, unsigned short* data ) -{ -int timeout, iReturn; -uint32 eimr; - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Mask the MII interrupt */ - eimr = MCF_FEC_EIMR; - MCF_FEC_EIMR &= ~MCF_FEC_EIMR_MII; - - /* Write to the MII Management Frame Register to kick-off the MII read */ - MCF_FEC_MMFR = MCF_FEC_MMFR_ST_01 | MCF_FEC_MMFR_OP_READ | MCF_FEC_MMFR_PA(phy_addr) | MCF_FEC_MMFR_RA(reg_addr) | MCF_FEC_MMFR_TA_10; - - /* Poll for the MII interrupt (interrupt should be masked) */ - for( timeout = 0; timeout < fecMAX_POLLS; timeout++ ) - { - if (MCF_FEC_EIR & MCF_FEC_EIR_MII) - { - break; - } - else - { - vTaskDelay( fecMII_DELAY ); - } - } - - if( timeout == fecMAX_POLLS ) - { - iReturn = 0; - } - else - { - *data = (uint16)(MCF_FEC_MMFR & 0x0000FFFF); - iReturn = 1; - } - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Restore the EIMR */ - MCF_FEC_EIMR = eimr; - - return iReturn; -} - - -/********************************************************************/ -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Generate the hash table settings for the given address - * - * Parameters: - * addr 48-bit (6 byte) Address to generate the hash for - * - * Return Value: - * The 6 most significant bits of the 32-bit CRC result - */ -static unsigned char fec_hash_address( const unsigned char* addr ) -{ -unsigned long crc; -unsigned char byte; -int i, j; - - crc = 0xFFFFFFFF; - for(i=0; i<6; ++i) - { - byte = addr[i]; - for(j=0; j<8; ++j) - { - if((byte & 0x01)^(crc & 0x01)) - { - crc >>= 1; - crc = crc ^ 0xEDB88320; - } - else - { - crc >>= 1; - } - - byte >>= 1; - } - } - - return (unsigned char)(crc >> 26); -} - -/********************************************************************/ -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Set the Physical (Hardware) Address and the Individual Address - * Hash in the selected FEC - * - * Parameters: - * ch FEC channel - * pa Physical (Hardware) Address for the selected FEC - */ -static void fec_set_address( const unsigned char *pa ) -{ - unsigned char crc; - - /* - * Set the Physical Address - */ - /* Set the source address for the controller */ - MCF_FEC_PALR = ( pa[ 0 ] << 24 ) | ( pa[ 1 ] << 16 ) | ( pa[ 2 ] << 8 ) | ( pa[ 3 ] << 0 ); - MCF_FEC_PAUR = ( pa[ 4 ] << 24 ) | ( pa[ 5 ] << 16 ); - - /* - * Calculate and set the hash for given Physical Address - * in the Individual Address Hash registers - */ - crc = fec_hash_address( pa ); - if( crc >= 32 ) - { - MCF_FEC_IAUR |= (unsigned long)(1 << (crc - 32)); - } - else - { - MCF_FEC_IALR |= (unsigned long)(1 << crc); - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseFECBuffers( void ) -{ -unsigned portBASE_TYPE ux; -unsigned char *pcBufPointer; - - /* Correctly align the Tx descriptor pointer. */ - pcBufPointer = &( xFECTxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - xFECTxDescriptors = ( FECBD * ) pcBufPointer; - - /* Likewise the Rx descriptor pointer. */ - pcBufPointer = &( xFECRxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - xFECRxDescriptors = ( FECBD * ) pcBufPointer; - - - /* Setup the Tx buffers and descriptors. There is no separate Tx buffer - to point to (the Rx buffers are actually used) so the data member is - set to NULL for now. */ - for( ux = 0; ux < fecNUM_FEC_TX_BUFFERS; ux++ ) - { - xFECTxDescriptors[ ux ].status = TX_BD_TC; - xFECTxDescriptors[ ux ].data = NULL; - xFECTxDescriptors[ ux ].length = 0; - } - - /* Setup the Rx buffers and descriptors, having first ensured correct - alignment. */ - pcBufPointer = &( ucFECRxBuffers[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - for( ux = 0; ux < configNUM_FEC_RX_BUFFERS; ux++ ) - { - xFECRxDescriptors[ ux ].status = RX_BD_E; - xFECRxDescriptors[ ux ].length = configFEC_BUFFER_SIZE; - xFECRxDescriptors[ ux ].data = pcBufPointer; - pcBufPointer += configFEC_BUFFER_SIZE; - } - - /* Set the wrap bit in the last descriptors to form a ring. */ - xFECTxDescriptors[ fecNUM_FEC_TX_BUFFERS - 1 ].status |= TX_BD_W; - xFECRxDescriptors[ configNUM_FEC_RX_BUFFERS - 1 ].status |= RX_BD_W; - - uxNextRxBuffer = 0; -} -/*-----------------------------------------------------------*/ - -void vFECInit( void ) -{ -unsigned short usData; -struct uip_eth_addr xAddr; -unsigned portBASE_TYPE ux; - -/* The MAC address is set at the foot of FreeRTOSConfig.h. */ -const unsigned char ucMACAddress[6] = -{ - configMAC_0, configMAC_1,configMAC_2, configMAC_3, configMAC_4, configMAC_5 -}; - - /* Create the semaphore used by the ISR to wake the uIP task. */ - vSemaphoreCreateBinary( xFECSemaphore ); - - /* Create the semaphore used to unblock any tasks that might be waiting - for a Tx descriptor. */ - vSemaphoreCreateBinary( xTxSemaphore ); - - /* Initialise all the buffers and descriptors used by the DMA. */ - prvInitialiseFECBuffers(); - - for( usData = 0; usData < 6; usData++ ) - { - xAddr.addr[ usData ] = ucMACAddress[ usData ]; - } - uip_setethaddr( xAddr ); - - /* Set the Reset bit and clear the Enable bit */ - MCF_FEC_ECR = MCF_FEC_ECR_RESET; - - /* Wait at least 8 clock cycles */ - for( usData = 0; usData < 10; usData++ ) - { - asm( "NOP" ); - } - - /* Set MII speed to 2.5MHz. */ - MCF_FEC_MSCR = MCF_FEC_MSCR_MII_SPEED( ( ( ( configCPU_CLOCK_HZ / 1000000 ) / 5 ) + 1 ) ); - - /* Initialize PLDPAR to enable Ethernet LEDs. */ - MCF_GPIO_PLDPAR = MCF_GPIO_PLDPAR_ACTLED_ACTLED | MCF_GPIO_PLDPAR_LINKLED_LINKLED | MCF_GPIO_PLDPAR_SPDLED_SPDLED - | MCF_GPIO_PLDPAR_DUPLED_DUPLED | MCF_GPIO_PLDPAR_COLLED_COLLED | MCF_GPIO_PLDPAR_RXLED_RXLED - | MCF_GPIO_PLDPAR_TXLED_TXLED; - - /* Initialize Port TA to enable Axcel control. */ - MCF_GPIO_PTAPAR = 0x00; - MCF_GPIO_DDRTA = 0x0F; - MCF_GPIO_PORTTA = 0x04; - - /* Set phy address to zero. */ - MCF_EPHY_EPHYCTL1 = MCF_EPHY_EPHYCTL1_PHYADD( 0 ); - - /* Enable EPHY module with PHY clocks disabled. Do not turn on PHY clocks - until both FEC and EPHY are completely setup (see Below). */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0_DIS100 | MCF_EPHY_EPHYCTL0_DIS10); - - /* Enable auto_neg at start-up */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0 & (MCF_EPHY_EPHYCTL0_ANDIS)); - - /* Enable EPHY module. */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0_EPHYEN | MCF_EPHY_EPHYCTL0); - - /* Let PHY PLLs be determined by PHY. */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0 & ~(MCF_EPHY_EPHYCTL0_DIS100 | MCF_EPHY_EPHYCTL0_DIS10)); - - /* Settle. */ - vTaskDelay( fecLINK_DELAY ); - - /* Can we talk to the PHY? */ - do - { - vTaskDelay( fecLINK_DELAY ); - usData = 0; - fec_mii_read( configPHY_ADDRESS, PHY_PHYIDR1, &usData ); - - } while( usData == 0xffff ); - - do - { - /* Start auto negotiate. */ - fec_mii_write( configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) ); - - /* Wait for auto negotiate to complete. */ - do - { - ux++; - if( ux > 10 ) - { - /* Hardware bug workaround! Force 100Mbps half duplex. */ - while( !fec_mii_read( configPHY_ADDRESS, 0, &usData ) ){}; - usData &= ~0x2000; /* 10Mbps */ - usData &= ~0x0100; /* Half Duplex */ - usData &= ~0x1000; /* Manual Mode */ - while( !fec_mii_write( configPHY_ADDRESS, 0, usData ) ){}; - while( !fec_mii_write( configPHY_ADDRESS, 0, (usData|0x0200) )){}; /* Force re-negotiate */ - break; - } - vTaskDelay( fecLINK_DELAY ); - fec_mii_read( configPHY_ADDRESS, PHY_BMSR, &usData ); - - } while( !( usData & PHY_BMSR_AN_COMPLETE ) ); - - } while( 0 ); //while( !( usData & PHY_BMSR_LINK ) ); - - /* When we get here we have a link - find out what has been negotiated. */ - fec_mii_read( configPHY_ADDRESS, PHY_ANLPAR, &usData ); - - if( ( usData & PHY_ANLPAR_100BTX_FDX ) || ( usData & PHY_ANLPAR_100BTX ) ) - { - /* Speed is 100. */ - } - else - { - /* Speed is 10. */ - } - - if( ( usData & PHY_ANLPAR_100BTX_FDX ) || ( usData & PHY_ANLPAR_10BTX_FDX ) ) - { - MCF_FEC_RCR &= (unsigned long)~MCF_FEC_RCR_DRT; - MCF_FEC_TCR |= MCF_FEC_TCR_FDEN; - } - else - { - MCF_FEC_RCR |= MCF_FEC_RCR_DRT; - MCF_FEC_TCR &= (unsigned long)~MCF_FEC_TCR_FDEN; - } - - /* Clear the Individual and Group Address Hash registers */ - MCF_FEC_IALR = 0; - MCF_FEC_IAUR = 0; - MCF_FEC_GALR = 0; - MCF_FEC_GAUR = 0; - - /* Set the Physical Address for the selected FEC */ - fec_set_address( ucMACAddress ); - - /* Set Rx Buffer Size */ - MCF_FEC_EMRBR = (unsigned short)configFEC_BUFFER_SIZE; - - /* Point to the start of the circular Rx buffer descriptor queue */ - MCF_FEC_ERDSR = ( volatile unsigned long ) &( xFECRxDescriptors[ 0 ] ); - - /* Point to the start of the circular Tx buffer descriptor queue */ - MCF_FEC_ETSDR = ( volatile unsigned long ) &( xFECTxDescriptors[ 0 ] ); - - /* Mask all FEC interrupts */ - MCF_FEC_EIMR = ( unsigned long ) -1; - - /* Clear all FEC interrupt events */ - MCF_FEC_EIR = ( unsigned long ) -1; - - /* Initialize the Receive Control Register */ - MCF_FEC_RCR = MCF_FEC_RCR_MAX_FL(ETH_MAX_FRM) | MCF_FEC_RCR_FCE; - - MCF_FEC_RCR |= MCF_FEC_RCR_MII_MODE; - - #if( configUSE_PROMISCUOUS_MODE == 1 ) - { - MCF_FEC_RCR |= MCF_FEC_RCR_PROM; - } - #endif - - prvEnableFECInterrupts(); - - /* Finally... enable. */ - MCF_FEC_ECR = MCF_FEC_ECR_ETHER_EN; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; -} -/*-----------------------------------------------------------*/ - -static void prvEnableFECInterrupts( void ) -{ -const unsigned portBASE_TYPE uxFirstFECVector = 23, uxLastFECVector = 35; -unsigned portBASE_TYPE ux; - -#if configFEC_INTERRUPT_PRIORITY > configMAX_SYSCALL_INTERRUPT_PRIORITY - #error configFEC_INTERRUPT_PRIORITY must be less than or equal to configMAX_SYSCALL_INTERRUPT_PRIORITY -#endif - - /* Set the priority of each of the FEC interrupts. */ - for( ux = uxFirstFECVector; ux <= uxLastFECVector; ux++ ) - { - MCF_INTC0_ICR( ux ) = MCF_INTC_ICR_IL( configFEC_INTERRUPT_PRIORITY ); - } - - /* Enable the FEC interrupts in the mask register */ - MCF_INTC0_IMRH &= ~( MCF_INTC_IMRH_INT_MASK33 | MCF_INTC_IMRH_INT_MASK34 | MCF_INTC_IMRH_INT_MASK35 ); - MCF_INTC0_IMRL &= ~( MCF_INTC_IMRL_INT_MASK25 | MCF_INTC_IMRL_INT_MASK26 | MCF_INTC_IMRL_INT_MASK27 - | MCF_INTC_IMRL_INT_MASK28 | MCF_INTC_IMRL_INT_MASK29 | MCF_INTC_IMRL_INT_MASK30 - | MCF_INTC_IMRL_INT_MASK31 | MCF_INTC_IMRL_INT_MASK23 | MCF_INTC_IMRL_INT_MASK24 - | MCF_INTC_IMRL_MASKALL ); - - /* Clear any pending FEC interrupt events */ - MCF_FEC_EIR = MCF_FEC_EIR_CLEAR_ALL; - - /* Unmask all FEC interrupts */ - MCF_FEC_EIMR = MCF_FEC_EIMR_UNMASK_ALL; -} -/*-----------------------------------------------------------*/ - -static void prvResetFEC( portBASE_TYPE xCalledFromISR ) -{ -portBASE_TYPE x; - - /* A critical section is used unless this function is being called from - an ISR. */ - if( xCalledFromISR == pdFALSE ) - { - taskENTER_CRITICAL(); - } - - { - /* Reset all buffers and descriptors. */ - prvInitialiseFECBuffers(); - - /* Set the Reset bit and clear the Enable bit */ - MCF_FEC_ECR = MCF_FEC_ECR_RESET; - - /* Wait at least 8 clock cycles */ - for( x = 0; x < 10; x++ ) - { - asm( "NOP" ); - } - - /* Re-enable. */ - MCF_FEC_ECR = MCF_FEC_ECR_ETHER_EN; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - } - - if( xCalledFromISR == pdFALSE ) - { - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -unsigned short usFECGetRxedData( void ) -{ -unsigned short usLen; - - /* Obtain the size of the packet and put it into the "len" variable. */ - usLen = xFECRxDescriptors[ uxNextRxBuffer ].length; - - if( ( usLen != 0 ) && ( ( xFECRxDescriptors[ uxNextRxBuffer ].status & RX_BD_E ) == 0 ) ) - { - uip_buf = xFECRxDescriptors[ uxNextRxBuffer ].data; - } - else - { - usLen = 0; - } - - return usLen; -} -/*-----------------------------------------------------------*/ - -void vFECRxProcessingCompleted( void ) -{ - /* Free the descriptor as the buffer it points to is no longer in use. */ - xFECRxDescriptors[ uxNextRxBuffer ].status |= RX_BD_E; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - uxNextRxBuffer++; - if( uxNextRxBuffer >= configNUM_FEC_RX_BUFFERS ) - { - uxNextRxBuffer = 0; - } -} -/*-----------------------------------------------------------*/ - -void vFECSendData( void ) -{ - /* Ensure no Tx frames are outstanding. */ - if( xSemaphoreTake( xTxSemaphore, fecMAX_WAIT_FOR_TX_BUFFER ) == pdPASS ) - { - /* Get a DMA buffer into which we can write the data to send. */ - if( xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].status & TX_BD_R ) - { - /*** ERROR didn't expect this. Sledge hammer error handling. ***/ - prvResetFEC( pdFALSE ); - - /* Make sure we leave the semaphore in the expected state as nothing - is being transmitted this will not happen in the Tx ISR. */ - xSemaphoreGive( xTxSemaphore ); - } - else - { - /* Setup the buffer descriptor for transmission. The data being - sent is actually stored in one of the Rx descriptor buffers, - pointed to by uip_buf. */ - xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].length = uip_len; - xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].status |= ( TX_BD_R | TX_BD_L ); - xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].data = uip_buf; - - /* Remember which Rx descriptor owns the buffer we are sending. */ - uxIndexToBufferOwner = uxNextRxBuffer; - - /* We have finished with this Rx descriptor now. */ - uxNextRxBuffer++; - if( uxNextRxBuffer >= configNUM_FEC_RX_BUFFERS ) - { - uxNextRxBuffer = 0; - } - - /* Continue the Tx DMA (in case it was waiting for a new TxBD) */ - MCF_FEC_TDAR = MCF_FEC_TDAR_X_DES_ACTIVE; - } - } - else - { - /* Gave up waiting. Free the buffer back to the DMA. */ - vFECRxProcessingCompleted(); - } -} -/*-----------------------------------------------------------*/ - -void vFEC_ISR( void ) -{ -unsigned long ulEvent; -portBASE_TYPE xHighPriorityTaskWoken = pdFALSE; - - /* This handler is called in response to any of the many separate FEC - interrupt. */ - - /* Find the cause of the interrupt, then clear the interrupt. */ - ulEvent = MCF_FEC_EIR & MCF_FEC_EIMR; - MCF_FEC_EIR = ulEvent; - - if( ( ulEvent & MCF_FEC_EIR_RXB ) || ( ulEvent & MCF_FEC_EIR_RXF ) ) - { - /* A packet has been received. Wake the handler task. */ - xSemaphoreGiveFromISR( xFECSemaphore, &xHighPriorityTaskWoken ); - } - - if( ulEvent & ( MCF_FEC_EIR_UN | MCF_FEC_EIR_RL | MCF_FEC_EIR_LC | MCF_FEC_EIR_EBERR | MCF_FEC_EIR_BABT | MCF_FEC_EIR_BABR | MCF_FEC_EIR_HBERR ) ) - { - /* Sledge hammer error handling. */ - prvResetFEC( pdTRUE ); - } - - if( ( ulEvent & MCF_FEC_EIR_TXF ) || ( ulEvent & MCF_FEC_EIR_TXB ) ) - { - /* The buffer being sent is pointed to by an Rx descriptor, now the - buffer has been sent we can mark the Rx descriptor as free again. */ - xFECRxDescriptors[ uxIndexToBufferOwner ].status |= RX_BD_E; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - xSemaphoreGiveFromISR( xTxSemaphore, &xHighPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( xHighPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -/* Install the many different interrupt vectors, all of which call the same -handler function. */ -void __attribute__ ((interrupt)) __cs3_isr_interrupt_87( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_88( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_89( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_90( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_91( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_92( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_93( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_94( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_95( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_96( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_97( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_98( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_99( void ) { vFEC_ISR(); } - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h deleted file mode 100644 index 2414d1dca..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * File: fec.h - * Purpose: Driver for the Fast Ethernet Controller (FEC) - * - * Notes: - */ - -#ifndef _FEC_H_ -#define _FEC_H_ - -#include "eth.h" -#include "fecbd.h" -#include "mii.h" -#include "eth_phy.h" - -/********************************************************************/ - -/* External Interface Modes */ -#define FEC_MODE_7WIRE 0 /* Old 7-wire (AMD) mode */ -#define FEC_MODE_MII 1 /* Media Independent Interface */ -#define FEC_MODE_RMII 2 /* Reduced MII */ -#define FEC_MODE_LOOPBACK 3 /* Internal Loopback */ - -#define INTC_LVL_FEC 3 -/* - * FEC Configuration Parameters - */ -typedef struct -{ - uint8 ch; /* FEC channel */ - uint8 mode; /* Transceiver mode */ - MII_SPEED speed; /* Ethernet Speed */ - MII_DUPLEX duplex; /* Ethernet Duplex */ - uint8 prom; /* Promiscuous Mode? */ - uint8 mac[6]; /* Ethernet Address */ - uint8 phyaddr; /* PHY address */ - uint8 initphy; /* Init PHY? */ - int nrxbd; /* Number of RxBDs */ - int ntxbd; /* Number of TxBDs */ -} FEC_CONFIG; -#define YES 1 -#define NO 0 -/* - * FEC Event Log - */ -typedef struct { - int errors; /* total count of errors */ - int hberr; /* heartbeat error */ - int babr; /* babbling receiver */ - int babt; /* babbling transmitter */ - int gra; /* graceful stop complete */ - int txf; /* transmit frame */ - int txb; /* transmit buffer */ - int rxf; /* receive frame */ - int rxb; /* received buffer */ - int mii; /* MII */ - int eberr; /* FEC/DMA fatal bus error */ - int lc; /* late collision */ - int rl; /* collision retry limit */ - int un; /* Tx FIFO underflow */ - int rfsw_inv; /* Invalid bit in RFSW */ - int rfsw_l; /* RFSW Last in Frame */ - int rfsw_m; /* RFSW Miss */ - int rfsw_bc; /* RFSW Broadcast */ - int rfsw_mc; /* RFSW Multicast */ - int rfsw_lg; /* RFSW Length Violation */ - int rfsw_no; /* RFSW Non-octet */ - int rfsw_cr; /* RFSW Bad CRC */ - int rfsw_ov; /* RFSW Overflow */ - int rfsw_tr; /* RFSW Truncated */ -} FEC_EVENT_LOG; - -void vFECInit( void ); -unsigned short usFECGetRxedData( void ); -void vFECSendData( void ); -void vFECRxProcessingCompleted( void ); - -/********************************************************************/ - -#endif /* _FEC_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h deleted file mode 100644 index 6b0b664b1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * \file eth.h - * \brief Definitinos for Ethernet Frames - * \version $Revision: 1.2 $ - * \author Michael Norman - */ - -#ifndef _ETH_H -#define _ETH_H - -/*******************************************************************/ - -/* Ethernet standard lengths in bytes*/ -#define ETH_ADDR_LEN (6) -#define ETH_TYPE_LEN (2) -#define ETH_CRC_LEN (4) -#define ETH_MAX_DATA (1500) -#define ETH_MIN_DATA (46) -#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) - -/* Defined Ethernet Frame Types */ -#define ETH_FRM_IP (0x0800) -#define ETH_FRM_ARP (0x0806) -#define ETH_FRM_RARP (0x8035) -#define ETH_FRM_TEST (0xA5A5) - -/* Maximum and Minimum Ethernet Frame Sizes */ -#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) -#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) -#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) - -/* Ethernet Addresses */ -typedef uint8 ETH_ADDR[ETH_ADDR_LEN]; - -/* 16-bit Ethernet Frame Type, ie. Protocol */ -typedef uint16 ETH_FRM_TYPE; - -/* Ethernet Frame Header definition */ -typedef struct -{ - ETH_ADDR dest; - ETH_ADDR src; - ETH_FRM_TYPE type; -} ETH_HDR; - -/* Ethernet Frame definition */ -typedef struct -{ - ETH_HDR head; - uint8* data; -} ETH_FRAME; - -/*******************************************************************/ - -#endif /* _ETH_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h deleted file mode 100644 index 9242e10bc..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * \file eth.h - * \brief Definitions for Ethernet Physical Layer Interface - * \version $Revision: 1.3 $ - * \author Michael Norman - */ - -#ifndef _ETH_PHY_H -#define _ETH_PHY_H - -/*******************************************************************/ - -int -eth_phy_autoneg(int phy_addr, MII_SPEED speed, MII_DUPLEX duplex); - -int -eth_phy_manual(int phy_addr, MII_SPEED speed, MII_DUPLEX duplex, int loop); - -int -eth_phy_get_speed(int, int*); - -int -eth_phy_get_duplex(int, int*); - -int -eth_phy_reg_dump(int); - -/*******************************************************************/ - -/* MII Register Addresses */ -#define PHY_BMCR (0x00) -#define PHY_BMSR (0x01) -#define PHY_PHYIDR1 (0x02) -#define PHY_PHYIDR2 (0x03) -#define PHY_ANAR (0x04) -#define PHY_ANLPAR (0x05) - -/* Bit definitions and macros for PHY_CTRL */ -#define PHY_BMCR_RESET (0x8000) -#define PHY_BMCR_LOOP (0x4000) -#define PHY_BMCR_SPEED (0x2000) -#define PHY_BMCR_AN_ENABLE (0x1000) -#define PHY_BMCR_POWERDOWN (0x0800) -#define PHY_BMCR_ISOLATE (0x0400) -#define PHY_BMCR_AN_RESTART (0x0200) -#define PHY_BMCR_FDX (0x0100) -#define PHY_BMCR_COL_TEST (0x0080) - -/* Bit definitions and macros for PHY_STAT */ -#define PHY_BMSR_100BT4 (0x8000) -#define PHY_BMSR_100BTX_FDX (0x4000) -#define PHY_BMSR_100BTX (0x2000) -#define PHY_BMSR_10BT_FDX (0x1000) -#define PHY_BMSR_10BT (0x0800) -#define PHY_BMSR_NO_PREAMBLE (0x0040) -#define PHY_BMSR_AN_COMPLETE (0x0020) -#define PHY_BMSR_REMOTE_FAULT (0x0010) -#define PHY_BMSR_AN_ABILITY (0x0008) -#define PHY_BMSR_LINK (0x0004) -#define PHY_BMSR_JABBER (0x0002) -#define PHY_BMSR_EXTENDED (0x0001) - -/* Bit definitions and macros for PHY_AN_ADV */ -#define PHY_ANAR_NEXT_PAGE (0x8001) -#define PHY_ANAR_REM_FAULT (0x2001) -#define PHY_ANAR_PAUSE (0x0401) -#define PHY_ANAR_100BT4 (0x0201) -#define PHY_ANAR_100BTX_FDX (0x0101) -#define PHY_ANAR_100BTX (0x0081) -#define PHY_ANAR_10BT_FDX (0x0041) -#define PHY_ANAR_10BT (0x0021) -#define PHY_ANAR_802_3 (0x0001) - -/* Bit definitions and macros for PHY_AN_LINK_PAR */ -#define PHY_ANLPAR_NEXT_PAGE (0x8000) -#define PHY_ANLPAR_ACK (0x4000) -#define PHY_ANLPAR_REM_FAULT (0x2000) -#define PHY_ANLPAR_PAUSE (0x0400) -#define PHY_ANLPAR_100BT4 (0x0200) -#define PHY_ANLPAR_100BTX_FDX (0x0100) -#define PHY_ANLPAR_100BTX (0x0080) -#define PHY_ANLPAR_10BTX_FDX (0x0040) -#define PHY_ANLPAR_10BT (0x0020) - -/*******************************************************************/ - -#endif /* _ETH_PHY_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h deleted file mode 100644 index f98578236..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * File: fecbd.h - * Purpose: - * - * Purpose: Provide a simple buffer management driver - */ - -#ifndef _FECBD_H_ -#define _FECBD_H_ - -/********************************************************************/ - -#define Rx 1 -#define Tx 0 - -/* - * Buffer sizes in bytes - */ -#ifndef RX_BUF_SZ -#define RX_BUF_SZ 1520 //2048 -#endif -#ifndef TX_BUF_SZ -#define TX_BUF_SZ 1520 -#endif - -/* - * Buffer Descriptor Format - */ -typedef struct -{ - uint16 status; /* control and status */ - uint16 length; /* transfer length */ - uint8 *data; /* buffer address */ -} FECBD; - -/* - * Bit level definitions for status field of buffer descriptors - */ -#define TX_BD_R 0x8000 -#define TX_BD_TO1 0x4000 -#define TX_BD_W 0x2000 -#define TX_BD_TO2 0x1000 -#define TX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define TX_BD_L 0x0800 -#define TX_BD_TC 0x0400 -#define TX_BD_DEF 0x0200 /* MCF5272 Only */ -#define TX_BD_ABC 0x0200 -#define TX_BD_HB 0x0100 /* MCF5272 Only */ -#define TX_BD_LC 0x0080 /* MCF5272 Only */ -#define TX_BD_RL 0x0040 /* MCF5272 Only */ -#define TX_BD_UN 0x0002 /* MCF5272 Only */ -#define TX_BD_CSL 0x0001 /* MCF5272 Only */ - -#define RX_BD_E 0x8000 -#define RX_BD_R01 0x4000 -#define RX_BD_W 0x2000 -#define RX_BD_R02 0x1000 -#define RX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define RX_BD_L 0x0800 -#define RX_BD_M 0x0100 -#define RX_BD_BC 0x0080 -#define RX_BD_MC 0x0040 -#define RX_BD_LG 0x0020 -#define RX_BD_NO 0x0010 -#define RX_BD_CR 0x0004 -#define RX_BD_OV 0x0002 -#define RX_BD_TR 0x0001 -#define RX_BD_ERROR (RX_BD_NO | RX_BD_CR | RX_BD_OV | RX_BD_TR) - -/* - * The following defines are provided by the MCF547x/8x - * DMA API. These are shown here to show their correlation - * to the other FEC buffer descriptor status bits - * - * #define MCD_FEC_BUF_READY 0x8000 - * #define MCD_FEC_WRAP 0x2000 - * #define MCD_FEC_INTERRUPT 0x1000 - * #define MCD_FEC_END_FRAME 0x0800 - */ - -/* - * Functions provided in fec_bd.c - */ -int fecbd_init(int, int, int); -void fecbd_flush(int); -void fecbd_dump( void ); -uint32 fecbd_get_start(int, int); -FECBD* fecbd_rx_alloc(int); -FECBD* fecbd_tx_alloc(int); -FECBD* fecbd_tx_free(int); - -/* - * Error codes - */ -#define ERR_MALLOC (-1) -#define ERR_NBUFALLOC (-2) - -/*******************************************************************/ - -#endif /* _FECBD_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index b8d756e46..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,303 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" -#include "FreeRTOS.h" -#include "partest.h" -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern unsigned long ulGetErrorCode( void ); - -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d, Error code = %d (0 = no errors)", (int)lRefreshCount, (int)ulGetErrorCode() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - ( void ) arg; - - if( uxParTestGetLED( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, - "LED", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c = pcInputString; - - /* Process the form input sent by the IO page of the served HTML. - This just contains an instruction to either turn on or off the LED. */ - while( ( *c != '?' ) && ( *c != 0x00 ) ) - { - c++; - } - - if( *c == '?' ) - { - c++; - if( strcmp( c, "LED0=1" ) == 0 ) - { - vParTestSetLED( 3, 1 ); - } - else - { - vParTestSetLED( 3, 0 ); - } - } -} - - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html deleted file mode 100644 index e011b3d76..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-

- - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index dbc2f28f9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 45ee5006e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 5b6910748..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-LED IO
- -

- -Use the check box to turn on or off the LED, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index 415aaab7d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index eea7598ed..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 43724adc4..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,11552 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_image_html[] = { - /* /image.html */ - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, - 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, - 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, - 0x65, 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6d, 0x67, 0x20, - 0x73, 0x72, 0x63, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_image_jpg[] = { - /* /image.jpg */ - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 0x1, 00, 0x60, 00, 0x60, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x8, 0x6, 0x6, 0x7, 0x6, - 0x5, 0x8, 0x7, 0x7, 0x7, 0x9, 0x9, 0x8, 0xa, 0xc, - 0x14, 0xd, 0xc, 0xb, 0xb, 0xc, 0x19, 0x12, 0x13, 0xf, - 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, 0x1a, 0x1c, 0x1c, 0x20, - 0x24, 0x2e, 0x27, 0x20, 0x22, 0x2c, 0x23, 0x1c, 0x1c, 0x28, - 0x37, 0x29, 0x2c, 0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, - 0x39, 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32, 0xff, - 0xdb, 00, 0x43, 0x1, 0x9, 0x9, 0x9, 0xc, 0xb, 0xc, - 0x18, 0xd, 0xd, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0xff, 0xc0, - 00, 0x11, 0x8, 0x2, 0xce, 0x3, 0x3b, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xf4, 0x7f, 0xb, 0x78, 0x5b, 0x47, 0xd4, - 0xfc, 0x33, 0x63, 0x7b, 0x7b, 0x6a, 0xd3, 0x5c, 0xcc, 0x85, - 0xe4, 0x91, 0xa7, 0x93, 0x2c, 0x77, 0x1e, 0x4f, 0xcd, 0x5b, - 0x1f, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, - 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0x3, 0xff, 00, 0xc8, 0x97, - 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x40, - 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, - 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, - 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, - 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, - 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, - 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, - 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, - 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, - 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, - 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, - 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, - 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, - 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, - 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, - 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, - 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, - 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, - 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, - 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, - 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, - 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, - 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, - 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, - 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, - 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, - 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, - 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, - 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, - 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, - 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, - 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, - 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, - 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, - 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, - 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, - 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, - 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, - 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, - 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, - 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, - 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, - 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, - 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, - 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, - 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, - 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, - 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, - 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, - 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, - 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, - 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, - 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, - 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, - 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, - 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, - 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, - 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, - 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, - 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, - 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, - 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, - 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, - 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, - 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, - 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, - 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, - 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, - 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, - 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, - 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, - 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, - 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, - 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, - 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, - 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, - 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, - 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, - 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, - 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, - 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, - 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, - 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, - 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, - 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, - 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, - 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, - 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, - 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, - 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, - 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, - 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, - 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, - 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, - 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, - 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, - 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, - 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, - 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, - 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, - 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, - 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, - 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, - 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, - 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, - 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, - 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, - 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, - 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, - 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, - 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, - 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, - 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, - 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, - 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, - 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, - 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, - 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, - 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, - 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, - 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, - 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, - 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, - 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, - 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, - 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, - 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, - 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, - 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, - 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, - 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, - 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, - 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, - 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, - 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, - 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, - 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, - 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, - 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, - 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, - 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, - 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, - 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, - 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, - 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, - 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, - 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, - 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, - 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, - 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, - 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xce, 0x78, 0x3a, - 0x14, 0xb6, 0xb4, 0xd5, 0x2d, 0x62, 0xdc, 0x21, 0x83, 0x52, - 0x9e, 0x38, 0x95, 0x9c, 0xb6, 0xd5, 0x18, 0xe0, 0x67, 0xb7, - 0x35, 0xd1, 0xd7, 0x9c, 0xd8, 0xdd, 0x5c, 0x45, 0xa9, 0x6b, - 0x89, 0x1c, 0xf2, 0xa2, 0xff, 00, 0x69, 0xcd, 0xc2, 0xb9, - 0x3, 0xb5, 0x77, 0x1a, 0x3c, 0x8f, 0x2e, 0x95, 0xb, 0xc8, - 0xec, 0xec, 0x77, 0x65, 0x98, 0xe4, 0x9f, 0x98, 0xd0, 0x6, - 0x6f, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, - 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, - 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, - 0xd0, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x58, 0xf7, 0xbe, 0x2a, 0xd1, 0x34, 0xfb, - 0xb7, 0xb5, 0xb9, 0xbf, 0x54, 0x99, 0x3e, 0xf2, 0x84, 0x66, - 0xc7, 0xb1, 0x20, 0x11, 0x9a, 0xc7, 0xf1, 0x8f, 0x8b, 0x46, - 0x95, 0x1b, 0x58, 0x58, 0xb8, 0x37, 0xce, 0x3e, 0x67, 0x1c, - 0xf9, 0x20, 0xff, 00, 0xec, 0xde, 0x9f, 0x9d, 0x79, 0x69, - 0x25, 0x98, 0xb3, 0x12, 0x58, 0x9c, 0x92, 0x4e, 0x49, 0x35, - 0xec, 0xe0, 0x32, 0xbf, 0x6f, 0x1f, 0x69, 0x56, 0xe9, 0x74, - 0x3c, 0xdc, 0x5e, 0x3f, 0xd9, 0x4b, 0x92, 0x9e, 0xaf, 0xa9, - 0xec, 0x5f, 0xf0, 0x9b, 0xf8, 0x77, 0xfe, 0x82, 0x3f, 0xf9, - 0x6, 0x4f, 0xfe, 0x26, 0x8f, 0xf8, 0x4d, 0xfc, 0x3b, 0xff, - 00, 0x41, 0x1f, 0xfc, 0x83, 0x27, 0xff, 00, 0x13, 0x5e, - 0x39, 0x45, 0x77, 0xff, 00, 0x62, 0x61, 0xfb, 0xbf, 0xc3, - 0xfc, 0x8e, 0x3f, 0xed, 0x4a, 0xdd, 0x97, 0xe3, 0xfe, 0x67, - 0xb1, 0xff, 00, 0xc2, 0x6f, 0xe1, 0xdf, 0xfa, 0x8, 0xff, - 00, 0xe4, 0x19, 0x3f, 0xf8, 0x9a, 0x3f, 0xe1, 0x37, 0xf0, - 0xef, 0xfd, 0x4, 0x7f, 0xf2, 0xc, 0x9f, 0xfc, 0x4d, 0x78, - 0xe5, 0x14, 0x7f, 0x62, 0x61, 0xfb, 0xbf, 0xc3, 0xfc, 0x83, - 0xfb, 0x52, 0xb7, 0x65, 0xf8, 0xff, 00, 0x99, 0xec, 0x7f, - 0xf0, 0x9b, 0xf8, 0x77, 0xfe, 0x82, 0x3f, 0xf9, 0x6, 0x4f, - 0xfe, 0x26, 0x8f, 0xf8, 0x4d, 0xfc, 0x3b, 0xff, 00, 0x41, - 0x1f, 0xfc, 0x83, 0x27, 0xff, 00, 0x13, 0x5e, 0x39, 0x45, - 0x1f, 0xd8, 0x98, 0x7e, 0xef, 0xf0, 0xff, 00, 0x20, 0xfe, - 0xd4, 0xad, 0xd9, 0x7e, 0x3f, 0xe6, 0x7b, 0x1f, 0xfc, 0x26, - 0xfe, 0x1d, 0xff, 00, 0xa0, 0x8f, 0xfe, 0x41, 0x93, 0xff, - 00, 0x89, 0xa3, 0xfe, 0x13, 0x7f, 0xe, 0xff, 00, 0xd0, - 0x47, 0xff, 00, 0x20, 0xc9, 0xff, 00, 0xc4, 0xd7, 0x8e, - 0x51, 0x47, 0xf6, 0x26, 0x1f, 0xbb, 0xfc, 0x3f, 0xc8, 0x3f, - 0xb5, 0x2b, 0x76, 0x5f, 0x8f, 0xf9, 0x9e, 0xcd, 0x17, 0x8c, - 0xbc, 0x3f, 0x34, 0xc9, 0x12, 0x6a, 0x2b, 0xb9, 0xd8, 0x28, - 0xdd, 0x1b, 0xa8, 0xc9, 0xf7, 0x23, 0x2, 0xb7, 0x6b, 0xe7, - 0xca, 0xf4, 0xf, 0x5, 0x78, 0xbf, 0x1e, 0x5e, 0x93, 0xa9, - 0x49, 0xfe, 0xcd, 0xbc, 0xcc, 0x7f, 0x24, 0x63, 0xfc, 0x8f, - 0xe1, 0x5c, 0x58, 0xdc, 0xa7, 0xd9, 0x43, 0x9e, 0x8b, 0x6e, - 0xdb, 0xdc, 0xea, 0xc3, 0x66, 0x3e, 0xd2, 0x5c, 0xb5, 0x34, - 0x3d, 0xe, 0x8a, 0x28, 0xaf, 0x10, 0xf5, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x2a, 0xbd, 0xe4, - 0xfe, 0x44, 0x5c, 0x7d, 0xe6, 0xc8, 0x5f, 0xca, 0x80, 0x27, - 0x2c, 0x7, 0xaf, 0xe5, 0x46, 0xe1, 0xef, 0xf9, 0x1a, 0x86, - 0xd5, 0x76, 0xc0, 0xa4, 0x92, 0x49, 0xe4, 0x92, 0x6a, 0x7a, - 00, 0x4d, 0xc3, 0xdf, 0xf2, 0x34, 0x6e, 0x1e, 0xff, 00, - 0x91, 0xa5, 0xa2, 0x80, 0x13, 0x70, 0xf7, 0xfc, 0x8d, 0x1b, - 0x87, 0xbf, 0xe4, 0x69, 0x68, 0xa0, 0x4, 0xdc, 0x3d, 0xff, - 00, 0x23, 0x46, 0xe1, 0xef, 0xf9, 0x1a, 0x5a, 0x28, 0x1, - 0x37, 0xf, 0x7f, 0xc8, 0xd1, 0xb8, 0x7b, 0xfe, 0x46, 0x96, - 0x8a, 00, 0x4d, 0xc3, 0xdf, 0xf2, 0x34, 0x6e, 0x1e, 0xff, - 00, 0x91, 0xa5, 0x3d, 0x38, 0xae, 0x3, 0x55, 0xf8, 0x8e, - 0x3c, 0x35, 0xe2, 0x21, 0xa7, 0x6b, 0xd6, 0x9e, 0x44, 0x12, - 0xff, 00, 0xaa, 0x9d, 0x39, 0x7, 0xeb, 0x40, 0x5c, 0xef, - 0xb7, 0xf, 0x7f, 0xc8, 0xd1, 0xb8, 0x7b, 0xfe, 0x46, 0xa1, - 0xb3, 0xbc, 0xb7, 0xbf, 0xb5, 0x4b, 0x9b, 0x59, 0x56, 0x58, - 0x9c, 0x65, 0x59, 0x4e, 0x45, 0x4f, 0x40, 0x9, 0xb8, 0x7b, - 0xfe, 0x46, 0x8d, 0xc3, 0xdf, 0xf2, 0x34, 0xb4, 0x50, 0x2, - 0x6e, 0x1e, 0xff, 00, 0x91, 0xa3, 0x70, 0xf7, 0xfc, 0x8d, - 0x2d, 0x14, 00, 0x9b, 0x87, 0xbf, 0xe4, 0x68, 0xdc, 0x3d, - 0xff, 00, 0x23, 0x4b, 0x45, 00, 0x26, 0xe1, 0xef, 0xf9, - 0x1a, 0x50, 0x73, 0x45, 0x35, 0xf8, 0x20, 0xe7, 0x1c, 0xf3, - 0x40, 0xe, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, - 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, - 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, - 0x11, 0xae, 0xe, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, - 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, - 0x5, 0xff, 00, 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, - 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, - 0x15, 0xcf, 0xf8, 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, - 0x7f, 0xec, 0xc6, 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x2b, 0x96, 0xf1, 0x77, 0x8a, 0xd3, 0x44, 0x80, - 0xda, 0xda, 0xb2, 0xbe, 0xa1, 0x22, 0xf0, 0x3a, 0x88, 0x87, - 0xf7, 0x8f, 0xbf, 0xa0, 0xa9, 0xbc, 0x57, 0xe2, 0x88, 0xb4, - 0xb, 0x5f, 0x2a, 0x1d, 0xb2, 0x5f, 0xca, 0x3f, 0x76, 0x87, - 0xa2, 0x8f, 0xef, 0x37, 0xb7, 0xf3, 0xaf, 0x22, 0x9a, 0x69, - 0x6e, 0x67, 0x92, 0x79, 0xe4, 0x69, 0x25, 0x91, 0xb7, 0x3b, - 0xb1, 0xe4, 0x9a, 0xf6, 0x32, 0xdc, 0xbb, 0xdb, 0x3f, 0x6b, - 0x51, 0x7b, 0xbf, 0x9f, 0xfc, 0x3, 0xcd, 0xc6, 0xe3, 0x3d, - 0x9a, 0xf6, 0x70, 0xdf, 0xf2, 0x11, 0xdd, 0xe5, 0x91, 0xa4, - 0x91, 0xd9, 0xe4, 0x72, 0x59, 0x99, 0x8e, 0x49, 0x27, 0xb9, - 0xa6, 0xd1, 0x45, 0x7d, 0x41, 0xe1, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, 0x91, 0xe0, 0xaf, - 0x17, 0xfd, 0xa4, 0x47, 0xa5, 0x6a, 0x52, 0x7e, 0xfc, 0x7c, - 0xb0, 0x4c, 0xc7, 0xfd, 0x67, 0xfb, 0x27, 0xfd, 0xaf, 0xe7, - 0xf5, 0xeb, 0xdd, 0xd7, 0xcf, 0x9c, 0x83, 0x90, 0x48, 0x23, - 0x90, 0x47, 0x6a, 0xf4, 0xff, 00, 0x6, 0xf8, 0xbf, 0xfb, - 0x49, 0x17, 0x4d, 0xd4, 0x24, 0x1f, 0x6d, 0x51, 0x88, 0xe4, - 0x3f, 0xf2, 0xd8, 0xf, 0xfd, 0x9b, 0xf9, 0xd7, 0xce, 0x66, - 0x79, 0x77, 0x25, 0xeb, 0x52, 0x5a, 0x75, 0x5d, 0xbc, 0xcf, - 0x6b, 0x3, 0x8d, 0xe6, 0xfd, 0xdd, 0x4d, 0xfa, 0x33, 0xb4, - 0xa2, 0x8a, 0x2b, 0xc2, 0x3d, 0x50, 0xa2, 0x8a, 0x28, 00, - 0xac, 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, 0x8d, - 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, - 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x8, 0xcc, - 0x14, 0x64, 0xd3, 0x4, 0x99, 0x38, 0x15, 0x4a, 0xe2, 0xeb, - 0xe7, 0x20, 0x1e, 0x5, 0x3a, 0xca, 0x4f, 0x32, 0x52, 0x7d, - 0x5, 0x3b, 0xa, 0xe5, 0xfa, 0xf3, 0xcf, 0x8b, 0xfe, 0x1f, - 0x8f, 0x57, 0xf0, 0x93, 0xdc, 0xec, 0x6, 0x4b, 0x43, 0xe6, - 0x67, 0xbe, 0x2b, 0xd0, 0xea, 0x86, 0xb5, 0x66, 0x2f, 0xf4, - 0x5b, 0xbb, 0x56, 0x19, 0x12, 0x46, 0x45, 0x24, 0xd, 0x5d, - 0x1f, 0x3e, 0xfc, 0x2f, 0xf1, 0xcd, 0xc7, 0x87, 0x75, 0x18, - 0xb4, 0xfb, 0xd9, 0x59, 0xb4, 0xf9, 0xc8, 0x18, 0x63, 0xf7, - 0xf, 0xb5, 0x7d, 0x1f, 0x1b, 0xac, 0xb1, 0xac, 0x88, 0x41, - 0x56, 0x19, 0x7, 0xda, 0xbe, 0x41, 0xbc, 0xb5, 0xf2, 0x6f, - 0xae, 0x22, 0x3, 0x1e, 0x5c, 0xa4, 0xf, 0xc2, 0xbd, 0xfb, - 0xe1, 0x47, 0x89, 0x5b, 0x58, 0xd0, 0x7e, 0xc5, 0x70, 0xfb, - 0xae, 0x6d, 0x7e, 0x52, 0x49, 0xea, 0x2a, 0xe5, 0x1e, 0xa6, - 0x34, 0xea, 0x5d, 0xd8, 0xf4, 0x2a, 0x28, 0xa2, 0xa0, 0xdc, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x2a, 0x1b, - 0x8f, 0xb9, 0x53, 0x54, 0x37, 0x1f, 0x72, 0x80, 0x26, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, - 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, - 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, - 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, - 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, - 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, - 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, - 0xba, 0xa, 00, 0x2b, 0x8e, 0xf1, 0xef, 0x8f, 0xe1, 0xf0, - 0x54, 0x16, 0x50, 0xc1, 0xa7, 0x4d, 0xaa, 0x6a, 0xd7, 0xf2, - 0x6c, 0xb4, 0xb0, 0x80, 0x90, 0xcf, 0x8c, 0x64, 0x92, 0x1, - 0x38, 0xe4, 0x74, 0x4, 0x93, 0xf8, 0x91, 0xd8, 0xd7, 0x9a, - 0xfc, 0x4d, 0xf0, 0xd7, 0x88, 0xa6, 0xd6, 0x74, 0x4f, 0x16, - 0xf8, 0x56, 0x18, 0x6e, 0xb5, 0x2d, 0x23, 0x78, 0x6b, 0x59, - 0x7f, 0xe5, 0xaa, 0x37, 0xa0, 0xc8, 0xcf, 0xf1, 0x71, 0x90, - 0x79, 0xe3, 0x9a, 0x4f, 0x75, 0x7d, 0xba, 0x8d, 0x75, 0xee, - 0x64, 0x1f, 0x17, 0x7c, 0x67, 0xb2, 0x4f, 0xb6, 0x5f, 0x78, - 0x1f, 0x4c, 0x96, 0xce, 0x2f, 0x9e, 0x58, 0xed, 0xe4, 0x1e, - 0x6b, 0x27, 0x70, 0xa0, 0x4c, 0xc7, 0x3f, 0xf0, 0x13, 0xf4, - 0xae, 0xf3, 0xc0, 0xfe, 0x34, 0xb0, 0xf1, 0xcf, 0x87, 0x93, - 0x54, 0xb2, 0x8d, 0xe1, 0x75, 0x6f, 0x2e, 0xe2, 0xdd, 0xce, - 0x5a, 0x19, 00, 0x19, 0x19, 0xee, 0x39, 0xc8, 0x3c, 0x64, - 0x76, 0x7, 0x81, 0xe7, 0xd1, 0xfc, 0x7f, 0x8b, 0x4d, 0xb9, - 0x6b, 0x5f, 0x15, 0x78, 0x43, 0x57, 0xd2, 0x27, 0xd8, 0xaf, - 0x1c, 0x6b, 0x86, 0x67, 0x7, 0x39, 0x25, 0x64, 0x11, 0x90, - 0x38, 0xe3, 0xae, 0x79, 0xf4, 0xae, 0xf3, 0xc0, 0xf1, 0x78, - 0x42, 0x6b, 0x3b, 0xdd, 0x63, 0xc2, 0x26, 0x26, 0x87, 0x51, - 0x9c, 0xc9, 0x72, 0xf1, 0xbb, 0x9c, 0xcb, 0xc9, 0x39, 0x57, - 0x39, 0x43, 0xf3, 0x67, 0x18, 0x1d, 0x47, 0x18, 0xc5, 0x5a, - 0xd9, 0xf6, 0x25, 0xf4, 0xee, 0x6b, 0x78, 0x93, 0x5b, 0x83, - 0xc3, 0x7e, 0x1b, 0xd4, 0x35, 0x8b, 0x8c, 0x79, 0x76, 0x90, - 0xb4, 0x9b, 0x49, 0xc6, 0xe6, 0xfe, 0x15, 0xfc, 0x4e, 0x7, - 0xe3, 0x5c, 0x7f, 0xc2, 0xcf, 0x88, 0x57, 0xfe, 0x34, 0x83, - 0x50, 0xb6, 0xd6, 0xad, 0x20, 0xb3, 0xd5, 0x6d, 0xc, 0x72, - 0x79, 0x50, 0xa3, 0x2a, 0xb4, 0x2e, 0xa0, 0xab, 0x61, 0x89, - 0x3f, 0xaf, 0x71, 0x59, 0xbf, 0x17, 0x67, 0x7d, 0x7b, 0x54, - 0xf0, 0xe7, 0x80, 0xed, 0x64, 0xc4, 0x9a, 0xad, 0xd0, 0x9a, - 0xec, 0xe, 0xd0, 0x27, 0x3c, 0xfe, 0x4c, 0x7f, 0xe0, 0x15, - 0x5b, 0xc6, 0xb, 0x1f, 0x80, 0xfe, 0x2c, 0xf8, 0x77, 0xc5, - 0x10, 0xa7, 0x95, 0xa7, 0x6a, 0x51, 0x8d, 0x2e, 0xf4, 0x81, - 0x85, 0x5e, 0x81, 0x9, 0xf4, 0xe0, 0x29, 0xfa, 0x47, 0x53, - 0xd, 0x5e, 0xbd, 0x74, 0x5f, 0xd7, 0xae, 0x83, 0x9e, 0x8b, - 0xd3, 0x5f, 0xeb, 0xe5, 0xa9, 0xe8, 0xfe, 0x2b, 0xd5, 0x67, - 0xd0, 0xbc, 0x25, 0xab, 0x6a, 0xd6, 0xa9, 0x1b, 0xcf, 0x67, - 0x69, 0x24, 0xf1, 0xac, 0xa0, 0x95, 0x2c, 0xaa, 0x48, 0xc8, - 0x4, 0x1c, 0x7e, 0x35, 0xe5, 0x9a, 0x5f, 0x8d, 0x7e, 0x33, - 0xeb, 0x5a, 0x5d, 0xbe, 0xa5, 0xa7, 0xf8, 0x4b, 0x43, 0x9a, - 0xd2, 0xe5, 0x37, 0xc5, 0x27, 0x98, 0x17, 0x72, 0xfa, 0xe0, - 0xdc, 0x2, 0x3f, 0x11, 0x5e, 0x89, 0xf1, 0x17, 0xfe, 0x49, - 0xb7, 0x88, 0xff, 00, 0xec, 0x1d, 0x37, 0xfe, 0x80, 0x6b, - 0xca, 0x7c, 0x19, 0xf1, 0xd3, 0xc3, 0x1e, 0x1d, 0xf0, 0x6e, - 0x95, 0xa3, 0xdd, 0xd8, 0x6a, 0xef, 0x71, 0x69, 00, 0x8e, - 0x46, 0x86, 0x18, 0x8a, 0x12, 0x3d, 0x9, 0x90, 0x1c, 0x7e, - 0x14, 0x96, 0xef, 0xe5, 0xfa, 0x8d, 0xec, 0xbe, 0x7f, 0xa1, - 0xd8, 0x78, 0x7f, 0x5b, 0xf8, 0xbb, 0x71, 0xaf, 0xd9, 0xc3, - 0xae, 0xf8, 0x5b, 0x48, 0xb5, 0xd2, 0xde, 0x4c, 0x5c, 0xcd, - 0xc, 0xaa, 0x5d, 0x17, 0x1d, 0x40, 0xf3, 0xdb, 0xdb, 0xb1, - 0xac, 0xbd, 0x53, 0xc7, 0xff, 00, 0x11, 0x6e, 0xbc, 0x75, - 0xae, 0x68, 0x3e, 0x14, 0xd0, 0xb4, 0x9b, 0xf8, 0x74, 0xc7, - 0x50, 0xc6, 0x6c, 0xa3, 0x85, 0x60, 0x8, 0x24, 0xb4, 0xaa, - 0xf, 0x39, 0xe8, 0x2b, 0xa9, 0xf0, 0x47, 0xc5, 0x3d, 0xf, - 0xc7, 0xba, 0x85, 0xcd, 0x96, 0x95, 0x6b, 0xa8, 0x43, 0x25, - 0xbc, 0x5e, 0x6b, 0x9b, 0xa8, 0xd1, 0x41, 0x19, 0x3, 0x8d, - 0xae, 0xdc, 0xf3, 0x5e, 0x6c, 0x9e, 0x2c, 0xd5, 0xbc, 0x2b, - 0xf1, 0x8b, 0xc6, 0x92, 0x69, 0x5e, 0x16, 0xbd, 0xd7, 0xda, - 0x77, 0x89, 0x64, 0x4b, 0x52, 0xf9, 0x88, 0x5, 0xe0, 0x9d, - 0xa8, 0xdd, 0x73, 0xed, 0xd2, 0x9f, 0xda, 0x49, 0xf6, 0x62, - 0xe8, 0xda, 0xee, 0x8e, 0x87, 0xfe, 0x12, 0x1f, 0x8e, 0x7f, - 0xf4, 0x26, 0x68, 0x7f, 0xf7, 0xf9, 0x7f, 0xf9, 0x22, 0xbb, - 0xfb, 0x5d, 0x4f, 0x5c, 0x83, 0xc0, 0x8f, 0xa9, 0xeb, 0x36, - 0x76, 0xf6, 0xda, 0xcc, 0x36, 0x92, 0x4d, 0x35, 0xbc, 0x67, - 0x74, 0x6a, 0xea, 0x18, 0x81, 0xc3, 0x1c, 0x8e, 0x7, 0xf1, - 0x57, 0x1, 0xff, 00, 0xb, 0x7f, 0xc6, 0x1f, 0xf4, 0x49, - 0xb5, 0xcf, 0xce, 0x6f, 0xfe, 0x31, 0x5e, 0x83, 0xab, 0x5d, - 0x4b, 0x7b, 0xe0, 0xb, 0xeb, 0xa9, 0xed, 0x9e, 0xd6, 0x59, - 0xb4, 0xc9, 0x24, 0x78, 0x1f, 0x3b, 0xa2, 0x63, 0x11, 0x25, - 0x4e, 0x40, 0xe4, 0x74, 0xe8, 0x2a, 0x6a, 0x36, 0xa9, 0xc9, - 0xa1, 0xc1, 0x27, 0x51, 0x26, 0x78, 0x86, 0x99, 0xf1, 0xbb, - 0xe2, 0x56, 0xb4, 0x92, 0x3e, 0x95, 0xe1, 0x6b, 0x2b, 0xf5, - 0x8c, 0x80, 0xed, 0x6b, 0xa7, 0xdc, 0xca, 0x14, 0x9e, 0x80, - 0xed, 0x90, 0xe2, 0xad, 0xc5, 0xf1, 0xdf, 0xc5, 0xfa, 0x1e, - 0xab, 0x4, 0x7e, 0x2e, 0xf0, 0xa4, 0x76, 0xd6, 0xb2, 0x8c, - 0xec, 0x5b, 0x79, 0xad, 0xa5, 0xc6, 0x40, 0x2c, 0xbe, 0x63, - 0x10, 0xd8, 0xe7, 0x8c, 0xc, 0xfa, 0x8a, 0xe2, 0x3e, 0x1a, - 0x7c, 0x54, 0xff, 00, 0x85, 0x77, 0x67, 0xa8, 0x5b, 0xff, - 00, 0x63, 0x7f, 0x68, 0x7d, 0xb2, 0x44, 0x7d, 0xdf, 0x6a, - 0xf2, 0xb6, 0x6d, 0x4, 0x63, 0xee, 0x36, 0x7a, 0xd6, 0xd7, - 0x8a, 0x3c, 0x4f, 0xe2, 0x5f, 0x8d, 0xcf, 0xa7, 0x69, 0xfa, - 0x3f, 0x85, 0xe5, 0x82, 0xda, 0xde, 0x63, 0xbe, 0x50, 0xe6, - 0x54, 0x57, 0x23, 0xab, 0xcb, 0xb5, 0x42, 00, 0x3b, 0x77, - 0xf7, 0xe0, 0x55, 0xbd, 0x1a, 0xe5, 0xd4, 0x95, 0xb7, 0xbd, - 0xa1, 0xee, 0xde, 0x2d, 0xf1, 0x1e, 0xa7, 0x67, 0xe0, 0x56, - 0xd7, 0x3c, 0x29, 0x64, 0x35, 0x5b, 0xa9, 0x16, 0x29, 0x2d, - 0xa2, 0x10, 0x3c, 0xa2, 0x44, 0x72, 0xbc, 0xed, 0x42, 0x18, - 0xfc, 0xa7, 0x35, 0xe3, 0xba, 0x97, 0xc6, 0xbf, 0x89, 0x9a, - 0x34, 0x9, 0x3e, 0xa9, 0xe1, 0x4b, 0x4b, 0x18, 0x9d, 0xb6, - 0x2c, 0x97, 0x5a, 0x75, 0xcc, 0x4a, 0xcd, 0x8c, 0xe0, 0x16, - 0x90, 0x64, 0xe0, 0x1a, 0xf7, 0xaf, 0xf, 0xe9, 0x43, 0x43, - 0xf0, 0xe6, 0x9b, 0xa5, 0x7, 0xf3, 0x3e, 0xc7, 0x6d, 0x1c, - 0x5, 0xff, 00, 0xbc, 0x55, 0x40, 0x27, 0xf4, 0xaf, 0x2b, - 0xfd, 0xa4, 0x7f, 0xe4, 0x4a, 0xd2, 0xbf, 0xec, 0x22, 0x3f, - 0xf4, 0x5b, 0xd4, 0xce, 0xd1, 0x6e, 0xdb, 0x5c, 0x70, 0xf7, - 0x92, 0xbf, 0x63, 0x16, 0xc3, 0xe2, 0xcf, 0xc5, 0x6b, 0xf1, - 0x6d, 0x34, 0x5e, 0xa, 0x8e, 0x5b, 0x59, 0xf6, 0xb2, 0xcd, - 0x16, 0x95, 0x74, 0xca, 0xc8, 0x7f, 0x88, 0x36, 0xfc, 0x11, - 0x8e, 0xf5, 0xda, 0xfc, 0x47, 0xf8, 0xc1, 0x61, 0xe0, 0x59, - 0x97, 0x4d, 0xb6, 0xb5, 0x1a, 0x86, 0xae, 0xc9, 0xb9, 0xa2, - 0xf3, 0x36, 0xa4, 00, 0x8e, 0xb, 0x9e, 0x4e, 0x4f, 0x7, - 0x68, 0xea, 0x3b, 0x8e, 0x33, 0xd3, 0x7c, 0x3d, 0xff, 00, - 0x92, 0x73, 0xe1, 0xcf, 0xfb, 0x7, 0x43, 0xff, 00, 0xa0, - 0xa, 0xf0, 0xbf, 0x86, 0x36, 0xb1, 0xf8, 0xab, 0xe3, 0xb6, - 0xa9, 0xa8, 0x6a, 0x6b, 0xe7, 0xbd, 0xbb, 0xdc, 0x5e, 0x22, - 0xc8, 0x33, 0x87, 0x12, 0x5, 0x4e, 0xf, 0xf7, 0x77, 0xc, - 0x7a, 0x60, 0x7a, 0x55, 0xc9, 0x7e, 0xf3, 0xd9, 0xaf, 0x3f, - 0xc0, 0x51, 0x7e, 0xef, 0x3f, 0xa7, 0xe2, 0x6a, 0x37, 0xc6, - 0xaf, 0x88, 0xda, 0x64, 0x51, 0x6a, 0x1a, 0xc7, 0x83, 0x62, - 0x8f, 0x4b, 0xca, 0x97, 0x90, 0xd8, 0xdc, 0x40, 0x19, 0x4f, - 0x4c, 0x48, 0xcc, 0x54, 0x13, 0xd8, 0xe0, 0xd7, 0xae, 0xf8, - 0x1b, 0xc7, 0x9a, 0x4f, 0x8f, 0x34, 0x73, 0x7b, 0xa7, 0x16, - 0x8a, 0x78, 0x88, 0x5b, 0x9b, 0x59, 0x8, 0xdf, 0xb, 0x1f, - 0xe6, 0xa7, 0x7, 0x7, 0xbe, 0x3b, 0x10, 0x40, 0xe9, 0x27, - 0x82, 0x1b, 0xab, 0x79, 0x6d, 0xee, 0x22, 0x49, 0x61, 0x95, - 0xa, 0x49, 0x1b, 0x8c, 0xab, 0x29, 0x18, 0x20, 0x8e, 0xe0, - 0x8a, 0xf9, 0xbb, 0xe1, 0x28, 0x3a, 0x7, 0xc7, 0x4d, 0x57, - 0x45, 0xb4, 0x76, 0x16, 0x65, 0xae, 0xad, 0xf6, 0x6e, 0xc8, - 0xda, 0x8c, 0x4a, 0xe7, 0xd4, 0x8d, 0xbd, 0x7d, 0xcd, 0x28, - 0xbb, 0xcb, 0x97, 0xd5, 0xfd, 0xc1, 0x25, 0x68, 0xf3, 0x7a, - 0x2f, 0xbc, 0xf4, 0x7f, 0x89, 0x5f, 0x17, 0x23, 0xf0, 0x5d, - 0xec, 0x7a, 0x2e, 0x97, 0x61, 0xfd, 0xa1, 0xad, 0x4c, 0x81, - 0x82, 0x31, 0x3b, 0x22, 0xdd, 0xf7, 0x72, 0x7, 0x2c, 0x49, - 0xfe, 0x11, 0x8e, 0xf, 0x5a, 0xe2, 0x64, 0xf8, 0xd7, 0xf1, - 0xf, 0x44, 0x78, 0xae, 0xfc, 0x45, 0xe0, 0xb8, 0xe0, 0xd3, - 0xcb, 0xec, 0x62, 0xd6, 0x77, 0x16, 0xc5, 0x89, 0x7, 00, - 0x3b, 0x96, 00, 0xf1, 0x9e, 0x87, 0xa1, 0xa5, 0xf8, 0xb9, - 0xe1, 0xef, 0x11, 0xf8, 0x73, 0xe2, 0x1c, 0x3e, 0x3f, 0xd1, - 0x2d, 0x9e, 0xea, 0x5, 0x9, 0x24, 0x8c, 0x22, 0xf3, 0x16, - 0x6, 0x44, 0xda, 0x77, 0xa8, 0xe4, 0x21, 0x51, 0xf7, 0xbb, - 0x73, 0xc8, 0x38, 0xab, 0x1a, 0x5f, 0xed, 0x5, 0xa2, 0xeb, - 0x16, 0x9f, 0xd9, 0xde, 0x30, 0xf0, 0xe0, 0x30, 0x48, 0xa8, - 0xb2, 0xb4, 0x4a, 0xb3, 0xc2, 0xed, 0x91, 0x92, 0xd1, 0x3f, - 0x21, 0x47, 0x7, 0xab, 0x9e, 0x2a, 0x61, 0xaa, 0xbf, 0x52, - 0xa5, 0x64, 0xfc, 0x8f, 0x64, 0xf0, 0xc7, 0x88, 0xec, 0x7c, - 0x59, 0xe1, 0xeb, 0x5d, 0x6b, 0x4e, 0x2f, 0xf6, 0x7b, 0x80, - 0x7e, 0x59, 0x6, 0x19, 0x18, 0x1c, 0x15, 0x23, 0xd4, 0x10, - 0x6b, 0x5e, 0xb2, 0x3c, 0x33, 0x2e, 0x83, 0x71, 0xa0, 0xdb, - 0xdc, 0x78, 0x69, 0x2c, 0xd3, 0x4b, 0x9b, 0x2f, 0x10, 0xb3, - 0x88, 0x46, 0x99, 0x3d, 0x7e, 0x50, 0x6, 0xe, 0x7a, 0x82, - 0x33, 0x9e, 0xb5, 0xaf, 0x55, 0x2d, 0xc9, 0x5b, 0x5, 0x14, - 0x51, 0x48, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x58, 0x5e, 0x26, 0xf1, 0x24, 0x1e, 0x1f, - 0xb2, 0xcf, 0x12, 0x5e, 0x48, 0xf, 0x93, 0x16, 0x7a, 0xff, - 00, 0xb4, 0x7d, 0x85, 0x4b, 0xe2, 0x2f, 0x10, 0xdb, 0x78, - 0x7e, 0xc0, 0xcb, 0x26, 0x1e, 0x77, 0xe2, 0x18, 0x73, 0xcb, - 0x9f, 0xf0, 0x1d, 0xcd, 0x78, 0xe5, 0xf5, 0xf5, 0xce, 0xa5, - 0x7b, 0x25, 0xdd, 0xdc, 0x86, 0x49, 0xa4, 0x39, 0x27, 0xb0, - 0x1d, 0x80, 0xf4, 0x2, 0xbd, 0x5c, 0xbb, 0x2f, 0x78, 0x87, - 0xed, 0x27, 0xf0, 0xaf, 0xc4, 0xf3, 0xf1, 0xb8, 0xc5, 0x49, - 0x72, 0x43, 0xe2, 0xfc, 0x86, 0xdd, 0x5d, 0x4f, 0x7b, 0x75, - 0x25, 0xcd, 0xcc, 0x86, 0x49, 0xa4, 0x39, 0x66, 0x3d, 0xff, - 00, 0xfa, 0xd5, 0xd, 0x14, 0x57, 0xd5, 0x24, 0x92, 0xb2, - 0x3c, 0x6, 0xdb, 0x77, 0x61, 0x45, 0x14, 0x53, 00, 0xa2, - 0xb7, 0xbc, 0x31, 0xe1, 0xa9, 0xbc, 0x41, 0x79, 0x96, 0xdd, - 0x1d, 0x94, 0x47, 0xf7, 0xb2, 0x8e, 0xff, 00, 0xec, 0xaf, - 0xbf, 0xf2, 0xaf, 0x4e, 0x5f, 0xb, 0xe8, 0x6a, 0xa1, 0x46, - 0x95, 0x6b, 0x80, 0x31, 0xcc, 0x60, 0x9a, 0xf3, 0xb1, 0x59, - 0x9d, 0x2c, 0x3c, 0xf9, 0x1a, 0xbb, 0xf2, 0xe8, 0x76, 0xe1, - 0xf0, 0x35, 0x2b, 0x47, 0x99, 0x68, 0x8f, 0x13, 0xa2, 0xbd, - 0xb7, 0xfe, 0x11, 0x8d, 0xf, 0xfe, 0x81, 0x56, 0x9f, 0xf7, - 0xe8, 0x51, 0xff, 00, 0x8, 0xc6, 0x87, 0xff, 00, 0x40, - 0xab, 0x4f, 0xfb, 0xf4, 0x2b, 0x97, 0xfb, 0x72, 0x97, 0xf2, - 0xb3, 0x7f, 0xec, 0xba, 0x9f, 0xcc, 0x8f, 0x12, 0xa2, 0xbd, - 0xb7, 0xfe, 0x11, 0x8d, 0xf, 0xfe, 0x81, 0x56, 0x9f, 0xf7, - 0xe8, 0x51, 0xff, 00, 0x8, 0xc6, 0x87, 0xff, 00, 0x40, - 0xab, 0x4f, 0xfb, 0xf4, 0x28, 0xfe, 0xdc, 0xa5, 0xfc, 0xac, - 0x3f, 0xb2, 0xea, 0x7f, 0x32, 0x3c, 0x4a, 0x8a, 0xf6, 0xdf, - 0xf8, 0x46, 0x34, 0x3f, 0xfa, 0x5, 0x5a, 0x7f, 0xdf, 0xa1, - 0x5e, 0x7f, 0xe3, 0x1f, 0x9, 0x1d, 0x22, 0x56, 0xbf, 0xb1, - 0x42, 0x6c, 0x1c, 0xfc, 0xca, 0x39, 0xf2, 0x49, 0xff, 00, - 0xd9, 0x7f, 0x95, 0x74, 0x61, 0xb3, 0x5a, 0x55, 0xe7, 0xc9, - 0x6b, 0x37, 0xdc, 0xc6, 0xbe, 0x2, 0xa5, 0x28, 0xf3, 0x5e, - 0xe7, 0x25, 0x45, 0x14, 0x57, 0xa6, 0x70, 0x85, 0x2a, 0xb3, - 0x23, 0xab, 0xa3, 0x15, 0x65, 0x39, 0x56, 0x53, 0x82, 0xf, - 0xa8, 0xa4, 0xa2, 0x80, 0x3d, 0x5b, 0xc1, 0xfe, 0x2c, 0x5d, - 0x62, 0x21, 0x65, 0x78, 0xc1, 0x6f, 0xe3, 0x1c, 0x1e, 0x82, - 0x60, 0x3b, 0x8f, 0x7f, 0x51, 0xf8, 0xd7, 0x5b, 0x5f, 0x3f, - 0xc5, 0x2c, 0x90, 0x4a, 0x92, 0xc4, 0xed, 0x1c, 0x88, 0x43, - 0x2b, 0xa9, 0xc1, 0x52, 0x3b, 0x8a, 0xf5, 0xaf, 0x9, 0x78, - 0xaa, 0x3d, 0x76, 0xdf, 0xec, 0xf7, 0x5, 0x53, 0x50, 0x8d, - 0x7e, 0x75, 0x1c, 0x9, 0x7, 0xf7, 0x87, 0xf5, 0x1d, 0xab, - 0xe6, 0x33, 0x3c, 0xbb, 0xd9, 0x3f, 0x6b, 0x49, 0x7b, 0xbd, - 0x7c, 0xbf, 0xe0, 0x1e, 0xe6, 0x7, 0x19, 0xed, 0x3f, 0x77, - 0x3d, 0xff, 00, 0x33, 0xa6, 0xa2, 0x8a, 0x2b, 0xc6, 0x3d, - 0x30, 0xac, 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, - 0x8d, 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, - 0x2e, 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, - 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x57, 0xbd, 0x9c, 0x5b, - 0xdb, 0x33, 0xe7, 0x9a, 0xb1, 0x5c, 0xf7, 0x88, 0xef, 0x2, - 0x18, 0xe2, 0x7, 0xeb, 0x4d, 0x9, 0xbb, 0x22, 0xa3, 0xdd, - 0x75, 0xe6, 0xb5, 0x34, 0x37, 0xf3, 0x63, 0x91, 0xbd, 0xe, - 0x2b, 0x90, 0x92, 0xef, 0x1d, 0xeb, 0xa6, 0xf0, 0x94, 0xbe, - 0x6d, 0x9c, 0xc7, 0xd1, 0xe9, 0xbd, 0x8c, 0xe2, 0xee, 0xce, - 0x86, 0x9a, 0xe3, 0x28, 0xc3, 0xda, 0x9d, 0x48, 0xdf, 0x74, - 0xfd, 0x2a, 0x4d, 0x4f, 0x97, 0xbc, 0x43, 0x67, 0xe4, 0xf8, - 0x82, 0xf5, 0x71, 0xd6, 0x56, 0x3f, 0xad, 0x69, 0xfc, 0x3e, - 0xd5, 0x5b, 0x45, 0xf1, 0x5c, 0xc, 0xcc, 0x56, 0x9, 0x4e, - 0xd7, 0x1e, 0xb5, 0x63, 0xc5, 0x36, 0xfb, 0xbc, 0x43, 0x74, - 0x71, 0xfc, 0x46, 0xb1, 0x4, 0x46, 0x19, 0xa3, 0x95, 0x78, - 0x28, 0xc1, 0xbf, 0x2a, 0xe8, 0xb5, 0xd1, 0xe6, 0x5d, 0xc6, - 0x77, 0x3e, 0xa1, 0x52, 0x19, 0x43, 0xe, 0x84, 0x66, 0x96, - 0xb2, 0xbc, 0x37, 0x7f, 0xfd, 0xa5, 0xa0, 0x5a, 0x5d, 0x13, - 0xcb, 0x20, 0xcd, 0x6a, 0xd7, 0x39, 0xe9, 0x27, 0x75, 0x70, - 0xa2, 0x8a, 0x28, 0x18, 0x51, 0x45, 0x14, 00, 0x54, 0x37, - 0x3f, 0x72, 0xa6, 0xa8, 0x6e, 0x7e, 0xe5, 00, 0x4d, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x7, 0x99, 0xda, 0xff, 00, 0xc8, - 0x53, 0x5c, 0xff, 00, 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, - 0x13, 0xfe, 0x40, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x5c, - 0x1d, 0xaf, 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, - 0x2b, 0xbc, 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, - 00, 0x42, 0x34, 0x1, 0x9f, 0xe0, 0x7f, 0xf9, 0x12, 0xf4, - 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, 0x2b, 0x9f, - 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, - 0xd9, 0x8d, 0x74, 0x14, 00, 0x57, 0x9a, 0xf8, 0xd7, 0xc7, - 0xba, 0x97, 0x82, 0x7c, 0x7d, 0xa4, 0x7f, 0x69, 0xc6, 0x13, - 0xc2, 0x57, 0x50, 0xb2, 0x49, 0x71, 0x14, 0x5b, 0x99, 0x66, - 0xff, 00, 0x68, 0xf2, 0x7e, 0x5c, 0x3, 0x81, 0x8c, 0x86, - 0x6f, 0xbd, 0x8c, 0x57, 0xa5, 0x55, 0x6b, 0xfd, 0x3e, 0xcb, - 0x54, 0xb4, 0x7b, 0x4d, 0x42, 0xce, 0xde, 0xee, 0xd9, 0xf0, - 0x5a, 0x1b, 0x88, 0x84, 0x88, 0xd8, 0x39, 0x19, 0x4, 0x11, - 0xd6, 0x96, 0xb7, 0xba, 0xe, 0x8d, 0x1c, 0xed, 0xdf, 0x8e, - 0xfc, 0x9, 0x77, 0xa4, 0xca, 0x6f, 0x3c, 0x45, 0xa1, 0xdc, - 0x59, 0xc9, 0x9, 0x69, 0x20, 0x92, 0xe2, 0x37, 0x2e, 0x98, - 0xc9, 0x6, 0x32, 0x49, 0x27, 0xfd, 0x9c, 0x67, 0xb6, 0x33, - 0x5c, 0x3f, 0xc1, 0x78, 0xad, 0xa5, 0xf1, 0xf, 0x8c, 0x75, - 0x5d, 0x16, 0x9, 0x6d, 0xfc, 0x35, 0x3d, 0xca, 0x2d, 0x92, - 0xb0, 0x2a, 0x8c, 0x57, 0x76, 0xe2, 0xa0, 0xf4, 0x1c, 0x8f, - 0xa0, 0x20, 0x76, 0xc5, 0x74, 0xf1, 0xfc, 0x17, 0xf8, 0x7d, - 0x14, 0xe9, 0x32, 0xf8, 0x75, 0xb, 0x2b, 0x6, 0x1, 0xae, - 0xa6, 0x65, 0xc8, 0x39, 0xe5, 0x4b, 0xe0, 0x8f, 0x62, 0x31, - 0x5d, 0x92, 0x69, 0xd6, 0x71, 0x69, 0xbf, 0xd9, 0xd0, 0xdb, - 0x47, 0x5, 0x9f, 0x96, 0x62, 0x10, 0xc0, 0x3c, 0xb5, 0x55, - 0x23, 0x18, 0x5d, 0xb8, 0xdb, 0xd7, 0xb6, 0x29, 0xed, 0x76, - 0xb7, 0xb0, 0x3d, 0x6c, 0x99, 0xe1, 0x7a, 0x6f, 0x84, 0x6c, - 0xbe, 0x34, 0x78, 0xd3, 0xc4, 0x9a, 0xf6, 0xa9, 0x73, 0x7b, - 0x16, 0x97, 0x6b, 0x3a, 0xd9, 0xd8, 0xb5, 0xac, 0x8a, 0x37, - 0x85, 0xce, 0x79, 0x65, 0x61, 0x8c, 0x61, 0xb0, 0x3f, 0xbf, - 0x56, 0xfc, 0x47, 0xfb, 0x3d, 0x68, 0x36, 0x3e, 0x1c, 0xd4, - 0x2e, 0xf4, 0x8b, 0xdd, 0x5e, 0x5d, 0x42, 0x8, 0x1a, 0x48, - 0x23, 0x96, 0x58, 0xd9, 0x5d, 0x94, 0x67, 0x69, 0x2, 0x30, - 0x79, 0xc6, 0x3a, 0xd7, 0xaf, 0xe8, 0x1e, 0x1d, 0xd2, 0xbc, - 0x2f, 0xa5, 0xae, 0x9b, 0xa3, 0x5a, 0xb, 0x5b, 0x45, 0x72, - 0xe2, 0x30, 0xec, 0xff, 00, 0x31, 0xea, 0x49, 0x62, 0x49, - 0xfc, 0xeb, 0x52, 0x93, 0x5e, 0xed, 0xa3, 0xdb, 0xf1, 0xff, - 00, 0x87, 0x1a, 0x7e, 0xf5, 0xd9, 0xe4, 0xd6, 0x5e, 0x28, - 0xff, 00, 0x84, 0xb3, 0xf6, 0x78, 0xd5, 0x2f, 0x64, 0x93, - 0x7d, 0xdc, 0x3a, 0x64, 0xd6, 0xd7, 0x5e, 0xbe, 0x62, 0x26, - 0x32, 0x7e, 0xa3, 0xd, 0xf8, 0xd7, 0x57, 0xf0, 0xb7, 0xfe, - 0x49, 0x87, 0x87, 0xbf, 0xeb, 0xcd, 0x7f, 0x99, 0xab, 0x76, - 0x1e, 0x2, 0xf0, 0xd6, 0x97, 0xa5, 0xea, 0x7a, 0x65, 0x96, - 0x9a, 0x61, 0xb2, 0xd4, 0xf3, 0xf6, 0xb8, 0x45, 0xc4, 0xa5, - 0x5f, 0x20, 0x83, 0x8c, 0xb7, 0xcb, 0xc1, 0xc7, 0xcb, 0x8e, - 0xde, 0x82, 0xb5, 0xf4, 0xbd, 0x2e, 0xcf, 0x45, 0xd2, 0xed, - 0xf4, 0xdd, 0x3e, 0x1f, 0x26, 0xd2, 0xd9, 0x36, 0x45, 0x1e, - 0xe2, 0xdb, 0x57, 0xd3, 0x24, 0x92, 0x7f, 0x13, 0x56, 0xdd, - 0xdb, 0x7d, 0xed, 0xfa, 0xdf, 0xf3, 0x21, 0x2b, 0x59, 0x76, - 0xbf, 0xe9, 0x6f, 0xc8, 0xb9, 0x5e, 0x39, 0xe1, 0x7d, 0x6f, - 0x49, 0xd1, 0x7e, 0x33, 0xf8, 0xf1, 0xf5, 0x5d, 0x52, 0xca, - 0xc1, 0x65, 0x68, 0x4, 0x66, 0xea, 0xe1, 0x22, 0xe, 0x42, - 0xf3, 0x8d, 0xc4, 0x66, 0xbd, 0x8e, 0xb8, 0xcd, 0x5f, 0xe1, - 0x4f, 0x82, 0xb5, 0xdd, 0x56, 0xe3, 0x53, 0xd4, 0xb4, 0x5f, - 0x3e, 0xf2, 0xe1, 0xb7, 0x4b, 0x27, 0xda, 0xa6, 0x5d, 0xc7, - 0x18, 0xe8, 0xae, 00, 0xe0, 0x76, 0x15, 0xa, 0xea, 0x5c, - 0xde, 0x4f, 0xf1, 0x29, 0xeb, 0x1b, 0x7a, 0x1a, 0x7f, 0xf0, - 0x9d, 0xf8, 0x3f, 0xfe, 0x86, 0xbd, 0xf, 0xff, 00, 0x6, - 0x30, 0xff, 00, 0xf1, 0x54, 0xed, 0x63, 0x51, 0xb1, 0xd5, - 0x7c, 0x11, 0xab, 0x5d, 0xe9, 0xd7, 0x96, 0xf7, 0x96, 0xcd, - 0x65, 0x38, 0x59, 0xad, 0xe5, 0x59, 0x10, 0x90, 0x8c, 0xe, - 0x19, 0x49, 0x15, 0xce, 0xff, 00, 0xc2, 0x92, 0xf8, 0x79, - 0xff, 00, 0x42, 0xf7, 0xfe, 0x4e, 0xdc, 0x7f, 0xf1, 0xca, - 0xea, 0x34, 0xbf, 0xb, 0x68, 0xda, 0x2f, 0x87, 0xdb, 0x41, - 0xd3, 0xec, 0xfc, 0x9d, 0x31, 0x95, 0xd4, 0xc1, 0xe6, 0xbb, - 0x64, 0x3e, 0x77, 0x7c, 0xc4, 0x96, 0xe7, 0x27, 0xbd, 0x29, - 0xc7, 0x9a, 0x2d, 0xe, 0x2e, 0xd2, 0x4c, 0xf2, 0xf, 0xd9, - 0xba, 0x28, 0xe7, 0xd0, 0xbc, 0x47, 0xc, 0xd1, 0xac, 0x91, - 0x3c, 0xd1, 0x2b, 0xa3, 0x8c, 0x86, 0x5, 0x58, 0x10, 0x47, - 0x71, 0x5c, 0xb7, 0x8a, 0x2c, 0xaf, 0xfe, 0xb, 0x7c, 0x51, - 0x87, 0x56, 0xd2, 0x11, 0xc6, 0x91, 0x76, 0x4c, 0x91, 0xc4, - 0x9, 0x8, 0xf1, 0x93, 0xfb, 0xc8, 0x4f, 0xfb, 0xb9, 0x18, - 0xcf, 0x4c, 0xa9, 0xaf, 0xa0, 0xfc, 0x35, 0xe0, 0xdd, 0x3, - 0xc1, 0xf0, 0xdc, 0x45, 0xa0, 0xd8, 0x7d, 0x91, 0x2e, 0x18, - 0x34, 0xa3, 0xce, 0x92, 0x4d, 0xc4, 0x70, 0x3e, 0xfb, 0x1c, - 0x75, 0xed, 0x52, 0xf8, 0x8f, 0xc2, 0xda, 0x27, 0x8b, 0x6c, - 0x12, 0xcb, 0x5c, 0xb0, 0x5b, 0xbb, 0x74, 0x71, 0x22, 0x29, - 0x76, 0x42, 0xad, 0x8c, 0x64, 0x32, 0x90, 0x47, 0x5f, 0x5a, - 0xb9, 0x3f, 0x7d, 0x4a, 0x3e, 0x44, 0xc1, 0x5a, 0x2e, 0x32, - 0xf3, 0x2e, 0xe9, 0x7a, 0x95, 0xae, 0xb3, 0xa5, 0x5a, 0xea, - 0x56, 0x32, 0x9, 0x2d, 0x6e, 0xa2, 0x59, 0x62, 0x7f, 0x55, - 0x23, 0x3f, 0x81, 0xf6, 0xaf, 0x24, 0xfd, 0xa4, 0x7f, 0xe4, - 0x4a, 0xd2, 0xbf, 0xec, 0x22, 0x3f, 0xf4, 0x5b, 0xd7, 0xa9, - 0xe8, 0x1e, 0x1f, 0xd3, 0x3c, 0x31, 0xa5, 0x26, 0x99, 0xa4, - 0x5b, 0xb5, 0xbd, 0x9a, 0x31, 0x65, 0x88, 0xca, 0xf2, 0x6d, - 0x27, 0x93, 0x82, 0xe4, 0x91, 0xcf, 0x6a, 0x83, 0xc4, 0x9e, - 0x13, 0xd1, 0x3c, 0x5d, 0x65, 0x15, 0x9e, 0xbb, 0x65, 0xf6, - 0xbb, 0x78, 0xa4, 0xf3, 0x51, 0x3c, 0xd7, 0x8f, 0xd, 0x82, - 0x33, 0x94, 0x20, 0xf4, 0x26, 0xa6, 0x69, 0x3d, 0x87, 0x7, - 0x6d, 0xca, 0x9f, 0xf, 0x3f, 0xe4, 0x9c, 0xf8, 0x73, 0xfe, - 0xc1, 0xd0, 0xff, 00, 0xe8, 0x2, 0xbc, 0x16, 0xfe, 0x5b, - 0xbf, 0x83, 0x9f, 0x1a, 0x67, 0xd4, 0xe7, 0xb4, 0x96, 0x6d, - 0x2a, 0xf1, 0xe4, 0x75, 0x28, 0x31, 0xe6, 0x41, 0x21, 0xcb, - 0x5, 0x3d, 0x37, 0x21, 0xc7, 0x1c, 0x74, 0x1d, 0x3, 0x3, - 0x5f, 0x4b, 0x69, 0xda, 0x7d, 0xae, 0x95, 0xa7, 0x5b, 0x69, - 0xf6, 0x51, 0x79, 0x56, 0xb6, 0xd1, 0xac, 0x51, 0x47, 0xb8, - 0xb6, 0xd5, 0x3, 00, 0x64, 0x92, 0x4f, 0xe3, 0x51, 0x6a, - 0xba, 0x3e, 0x9b, 0xae, 0x59, 0x1b, 0x3d, 0x56, 0xc2, 0xde, - 0xf6, 0xdc, 0x9c, 0xf9, 0x73, 0xc6, 0x1c, 0x3, 0x82, 0x32, - 0x33, 0xd0, 0xe0, 0x9e, 0x47, 0x23, 0x35, 0x53, 0x77, 0xa9, - 0xcf, 0x1f, 0x3f, 0xc4, 0x51, 0x5e, 0xe7, 0x2b, 0x3c, 0xf7, - 0x55, 0xf8, 0xf5, 0xe0, 0xab, 0x4d, 0x1e, 0x5b, 0x9d, 0x3e, - 0xf2, 0x6b, 0xeb, 0xdd, 0x99, 0x8e, 0xd0, 0x5b, 0xc8, 0x84, - 0xb1, 0xe8, 0x19, 0x99, 0x42, 0x80, 0xf, 0x52, 0x9, 0xf6, - 0xcd, 0x71, 0x7f, 0x2, 0x34, 0xd, 0x4b, 0x57, 0xf1, 0x66, - 0xa5, 0xe3, 0x8d, 0x46, 0x26, 0x48, 0xa4, 0xf3, 0x4, 0x4e, - 0x53, 0x2, 0x69, 0x64, 0x6c, 0xb9, 0x5c, 0xf6, 0x5e, 0x47, - 0xe3, 0x8e, 0xc6, 0xbd, 0x2a, 0xd7, 0xe0, 0xdf, 0xc3, 0xfb, - 0x4b, 0xa8, 0xee, 0x23, 0xf0, 0xec, 0x4c, 0xf1, 0xb6, 0xe5, - 0x12, 0xdc, 0x4d, 0x22, 0x13, 0xee, 0xac, 0xe5, 0x48, 0xf6, - 0x20, 0x8a, 0xed, 0xe1, 0x86, 0x2b, 0x78, 0x23, 0x86, 0x8, - 0xd2, 0x28, 0xa3, 0x50, 0xa8, 0x88, 0xa1, 0x55, 0x54, 0x70, - 00, 0x3, 0xa0, 0xa1, 0x59, 0x3e, 0x6e, 0xa0, 0xee, 0xd7, - 0x2f, 0x43, 0xc7, 0x7c, 0x49, 0xf1, 0x83, 0x5a, 0xf0, 0x5f, - 0xc4, 0x89, 0x34, 0x7d, 0x7f, 0x4b, 0xb6, 0xfe, 0xc2, 0x27, - 0x7c, 0x53, 0x5b, 0xc6, 0xde, 0x73, 0x44, 0xc3, 0xe5, 0x70, - 0x4b, 0xed, 0x38, 0x39, 0x4, 0x60, 0x74, 0x35, 0x91, 0xf1, - 0x13, 0xc5, 0xff, 00, 0x8, 0xfc, 0x41, 0xe1, 0xfd, 0x42, - 0x68, 0x21, 0x86, 0xf7, 0x5a, 0x91, 0x49, 0x82, 0x5b, 0x7b, - 0x39, 0x20, 0x94, 0xca, 0x54, 0xaa, 0xb3, 0xc8, 0x55, 0x77, - 0x28, 0xe0, 0x90, 0xc4, 0xf4, 0xe8, 0x6b, 0xda, 0x75, 0xcf, - 0xe, 0xe8, 0xfe, 0x25, 0xb1, 0x36, 0x7a, 0xce, 0x9d, 0x6f, - 0x7b, 0x7, 0x3b, 0x44, 0xab, 0xca, 0x67, 0x82, 0x55, 0xba, - 0xa9, 0xf7, 0x4, 0x1a, 0xe6, 0x2d, 0x3e, 0xe, 0x7c, 0x3f, - 0xb2, 0xba, 0x8e, 0xe6, 0x2f, 0xe, 0x44, 0xcf, 0x19, 0xc8, - 0x13, 0x4f, 0x2c, 0xa8, 0x7e, 0xa8, 0xee, 0x54, 0xfe, 0x20, - 0xd4, 0x5a, 0xea, 0xcf, 0xef, 0x2a, 0xf6, 0x77, 0x47, 0x37, - 0xfb, 0x3b, 0xda, 0x5f, 0x5b, 0x78, 0x12, 0xee, 0x5b, 0x94, - 0x74, 0xb6, 0xb8, 0xbc, 0x67, 0xb6, 0xdc, 0x31, 0xb9, 0x76, - 0xa8, 0x66, 0x1e, 0xd9, 0x18, 0xfc, 0xd, 0x7a, 0xf5, 0x32, - 0x28, 0xa3, 0x82, 0x24, 0x8a, 0x24, 0x58, 0xe3, 0x45, 0xa, - 0x88, 0x83, 0x1, 0x40, 0xe0, 00, 0x3b, 0xa, 0x7d, 0x69, - 0x27, 0x76, 0x44, 0x55, 0x90, 0x51, 0x45, 0x15, 0x25, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x66, 0x6b, 0xba, 0xe5, - 0xae, 0x83, 0xa7, 0xb5, 0xcd, 0xc1, 0xdc, 0xc7, 0x88, 0xa2, - 0x7, 0x99, 0x1b, 0xd0, 0x7f, 0x53, 0x56, 0x35, 0x2b, 0xf8, - 0xb4, 0xbd, 0x3a, 0x7b, 0xd9, 0x83, 0x18, 0xe2, 0x5c, 0x90, - 0xa3, 0x93, 0xce, 00, 0xfc, 0xcd, 0x78, 0xb6, 0xb1, 0xac, - 0x5d, 0x6b, 0x7a, 0x83, 0xdd, 0xdd, 0x37, 0x27, 0x84, 0x41, - 0xf7, 0x63, 0x5f, 0x41, 0xfe, 0x79, 0xaf, 0x47, 0x2f, 0xc0, - 0xbc, 0x4c, 0xb9, 0xa5, 0xf0, 0xad, 0xff, 00, 0xc8, 0xe2, - 0xc6, 0x62, 0xd5, 0x8, 0xd9, 0x7c, 0x4c, 0x66, 0xa7, 0xa9, - 0xdd, 0x6a, 0xf7, 0xf2, 0x5e, 0x5d, 0xbe, 0xe9, 0x1f, 0xa0, - 0x1d, 0x10, 0x76, 0x3, 0xda, 0xa9, 0xd1, 0x45, 0x7d, 0x6c, - 0x62, 0xa2, 0x94, 0x62, 0xac, 0x91, 0xf3, 0xcd, 0xb9, 0x3b, - 0xb0, 0xa2, 0x8a, 0x2a, 0x84, 0x15, 0xb3, 0xe1, 0xcf, 0xf, - 0x5c, 0x78, 0x82, 0xfb, 0xcb, 0x4c, 0xc7, 0x6d, 0x19, 0x6, - 0x69, 0xb1, 0xf7, 0x47, 0xa0, 0xf7, 0x35, 0x16, 0x83, 0xa1, - 0x5c, 0xeb, 0xfa, 0x80, 0xb7, 0x83, 0xe5, 0x8d, 0x79, 0x96, - 0x62, 0x38, 0x45, 0xff, 00, 0x1f, 0x41, 0x5e, 0xc9, 0xa6, - 0xe9, 0xb6, 0xba, 0x55, 0x8c, 0x76, 0x76, 0x91, 0xec, 0x89, - 0x7, 0xe2, 0xc7, 0xb9, 0x27, 0xb9, 0x35, 0xe5, 0x66, 0x39, - 0x82, 0xc3, 0xae, 0x48, 0x7c, 0x4f, 0xf0, 0x3b, 0xf0, 0x58, - 0x37, 0x59, 0xf3, 0x4b, 0xe1, 0xfc, 0xc7, 0xd8, 0xd8, 0xdb, - 0xe9, 0xd6, 0x71, 0xda, 0x5a, 0xc4, 0x23, 0x86, 0x31, 0x85, - 0x51, 0xfc, 0xcf, 0xbd, 0x58, 0xa2, 0x8a, 0xf9, 0x56, 0xdb, - 0x77, 0x67, 0xbe, 0x92, 0x4a, 0xc8, 0x28, 0xa2, 0x8a, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x64, 0x91, 0xa4, 0xd1, 0xb4, - 0x72, 0x22, 0xba, 0x38, 0x2a, 0xca, 0xc3, 0x20, 0x83, 0xd8, - 0xd3, 0xe8, 0xa0, 0xf, 0x23, 0xf1, 0x6f, 0x85, 0x5f, 0x43, - 0xb8, 0x37, 0x36, 0xca, 0xcd, 0xa7, 0xc8, 0xdc, 0x1e, 0xa6, - 0x23, 0xfd, 0xd3, 0xed, 0xe8, 0x6b, 0x98, 0xaf, 0x7e, 0xb8, - 0xb7, 0x8a, 0xea, 0x9, 0x20, 0x9e, 0x35, 0x92, 0x29, 0x1, - 0x57, 0x46, 0x19, 0x4, 0x57, 0x91, 0x78, 0xab, 0xc3, 0x12, - 0xf8, 0x7e, 0xeb, 0xcc, 0x8b, 0x74, 0x96, 0x12, 0x9f, 0xdd, - 0xc8, 0x79, 0x28, 0x7f, 0xba, 0xde, 0xfe, 0x87, 0xbd, 0x7d, - 0x3e, 0x59, 0x98, 0xfb, 0x55, 0xec, 0xaa, 0xbf, 0x7b, 0xa7, - 0x9f, 0xfc, 0x13, 0xc2, 0xc7, 0x60, 0xfd, 0x9b, 0xf6, 0x90, - 0xdb, 0xf2, 0x39, 0xea, 0x28, 0xa2, 0xbd, 0x93, 0xcd, 0xa, - 0x92, 0xde, 0xe2, 0x6b, 0x4b, 0x88, 0xee, 0x2d, 0xe4, 0x68, - 0xe6, 0x8d, 0xb7, 0x23, 0xaf, 0x50, 0x6a, 0x3a, 0x29, 0x34, - 0x9a, 0xb3, 0x4, 0xed, 0xaa, 0x3d, 0x8f, 0xc2, 0xde, 0x27, - 0x87, 0xc4, 0x16, 0x9b, 0x5f, 0x6c, 0x77, 0xb1, 0xf, 0xde, - 0xc4, 0x3b, 0xff, 00, 0xb4, 0xbe, 0xdf, 0xca, 0xba, 0xa, - 0xf0, 0x3b, 0x3b, 0xcb, 0x8d, 0x3e, 0xee, 0x3b, 0xab, 0x59, - 0xc, 0x73, 0x46, 0x72, 0xac, 0x3f, 0x91, 0xf5, 0x1e, 0xd5, - 0xec, 0xde, 0x1c, 0xd6, 0xd3, 0x5f, 0xd2, 0x56, 0xec, 0x46, - 0x63, 0x90, 0x37, 0x97, 0x2a, 0x76, 0xc, 00, 0x27, 0x1e, - 0xdc, 0x8a, 0xf9, 0x5c, 0xcb, 0x2f, 0xfa, 0xbb, 0xf6, 0x90, - 0xf8, 0x5f, 0xe0, 0x7b, 0xf8, 0x2c, 0x5f, 0xb5, 0x5c, 0x92, - 0xf8, 0x97, 0xe2, 0x6b, 0x56, 0x76, 0xa9, 0xff, 00, 0x2c, - 0x3e, 0xad, 0xfc, 0xab, 0x46, 0xb3, 0xb5, 0x4f, 0xf9, 0x61, - 0xf5, 0x6f, 0xe5, 0x5e, 0x51, 0xe8, 0x17, 0x2d, 0xff, 00, - 0xd4, 0x27, 0xd2, 0xa5, 0xa8, 0xad, 0xff, 00, 0xd4, 0x27, - 0xd2, 0xa5, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x3, 0x38, 0xc9, 0xaf, 0x39, 0xf1, 0xd, 0xff, 00, - 0x99, 0xaa, 0xcb, 0x83, 0xf2, 0x8e, 0x5, 0x7a, 0xd, 0xc4, - 0x82, 0x2b, 0x69, 0x1c, 0x9c, 00, 0xa6, 0xbc, 0x62, 0xfa, - 0xf4, 0xc9, 0x73, 0x2b, 0x93, 0xd5, 0xcd, 0x54, 0x4c, 0xaa, - 0x32, 0xc4, 0x97, 0x7e, 0xf5, 0xd8, 0xf8, 0x6, 0xe4, 0x49, - 0x6f, 0x70, 0x99, 0xe7, 0x76, 0x6b, 0xcc, 0xa5, 0xba, 0xf7, - 0xae, 0xbb, 0xe1, 0xb5, 0xf8, 0x6d, 0x5a, 0x6b, 0x6c, 0xf5, - 0x42, 0xd5, 0x72, 0x5a, 0x19, 0xc2, 0x5e, 0xf1, 0xea, 0x54, - 0x8d, 0xf7, 0x4f, 0xd2, 0x96, 0xa3, 0xb8, 0x71, 0x15, 0xbc, - 0x8e, 0x7b, 0x3, 0x59, 0x1d, 0x2c, 0xf0, 0xfd, 0x72, 0x1f, - 0x37, 0x58, 0xb9, 0x7c, 0x7f, 0x19, 0xac, 0x79, 0xad, 0x72, - 0xa4, 0x62, 0xba, 0xab, 0xcb, 0x6f, 0x32, 0xea, 0x67, 0xc7, - 0xde, 0x72, 0x6b, 0x3e, 0x5b, 0x5f, 0x6a, 0xe8, 0x47, 0x9d, - 0x25, 0xa9, 0xdd, 0xfc, 0x34, 0xbb, 0x32, 0xe8, 0x8f, 0x6c, - 0x4f, 0xfa, 0x86, 0xc0, 0xae, 0xde, 0xbc, 0xd7, 0xe1, 0xe4, - 0xa6, 0xdf, 0x50, 0x9e, 0xdf, 0xb4, 0x9c, 0xe2, 0xbd, 0x2a, - 0xb1, 0x96, 0xe7, 0x6d, 0x27, 0xee, 0x20, 0xa2, 0x8a, 0x2a, - 0x4d, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa1, 0xb9, 0xfb, 0x95, - 0x35, 0x43, 0x73, 0xf7, 0x28, 0x2, 0x6a, 0x28, 0xa2, 0x80, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, - 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, - 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, 0xed, 0x7f, 0xe4, - 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, - 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xa0, - 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, 0x97, 0xa5, 0xff, - 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x5c, 0xff, 00, - 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, - 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0xc, 0x2f, 0x19, 0x7f, 0xc8, 0xa7, 0x7f, - 0xfe, 0xea, 0xff, 00, 0xe8, 0x6b, 0x5e, 0x33, 0x5e, 0xcd, - 0xe3, 0x2f, 0xf9, 0x14, 0xef, 0xff, 00, 0xdd, 0x5f, 0xfd, - 0xd, 0x6b, 0xc6, 0x6b, 0xe9, 0xf2, 0x4f, 0xe0, 0x4b, 0xd7, - 0xf4, 0x47, 0x85, 0x9a, 0x7f, 0x15, 0x7a, 0x7e, 0xac, 0x28, - 0xa2, 0x8a, 0xf6, 0x4f, 0x34, 0x2b, 0x43, 0x46, 0xd1, 0xee, - 0xb5, 0xcd, 0x41, 0x6d, 0x2d, 0x57, 0xde, 0x49, 0x8, 0xf9, - 0x63, 0x5f, 0x53, 0xfe, 0x1d, 0xea, 0x8c, 0x51, 0x99, 0x66, - 0x8e, 0x30, 0x40, 0x2e, 0xc1, 0x41, 0x3d, 0xb2, 0x71, 0x5e, - 0xdd, 0xa1, 0xe8, 0x96, 0xba, 0x16, 0x9e, 0xb6, 0xb6, 0xe3, - 0x2c, 0x79, 0x92, 0x52, 0x3e, 0x69, 0x1b, 0xd4, 0xff, 00, - 0x41, 0xda, 0xbc, 0xfc, 0xc3, 0x1b, 0xf5, 0x68, 0x7b, 0xbf, - 0x13, 0xd8, 0xec, 0xc1, 0xe1, 0x7d, 0xbc, 0xb5, 0xd9, 0x12, - 0x69, 0x1a, 0x45, 0xae, 0x8b, 0xa7, 0xa5, 0xa5, 0xaa, 0x61, - 0x47, 0x2c, 0xc7, 0xef, 0x3b, 0x77, 0x26, 0xaf, 0xd7, 0x7, - 0xe2, 0xf, 0x8a, 0x16, 0x3e, 0x1f, 0xd7, 0x2e, 0x74, 0xb9, - 0xb4, 0xdb, 0xa9, 0xa4, 0x83, 0x6e, 0x5d, 0x19, 0x40, 0x39, - 0x50, 0x7b, 0x9f, 0x7a, 0xcd, 0xff, 00, 0x85, 0xd3, 0xa6, - 0xff, 00, 0xd0, 0x1e, 0xf7, 0xfe, 0xfb, 0x4f, 0xf1, 0xaf, - 0x91, 0x94, 0x9c, 0x9b, 0x94, 0x9d, 0xdb, 0x3e, 0x8a, 0x31, - 0x51, 0x56, 0x5b, 0x1e, 0x9d, 0x45, 0x79, 0x8f, 0xfc, 0x2e, - 0x9d, 0x37, 0xfe, 0x80, 0xf7, 0xbf, 0xf7, 0xda, 0x7f, 0x8d, - 0x1f, 0xf0, 0xba, 0x74, 0xdf, 0xfa, 0x3, 0xde, 0xff, 00, - 0xdf, 0x69, 0xfe, 0x35, 0x23, 0x3d, 0x3a, 0x8a, 0xe2, 0x3c, - 0x33, 0xf1, 0x2a, 0xcb, 0xc4, 0xda, 0xda, 0x69, 0x90, 0x69, - 0xd7, 0x30, 0x3b, 0x46, 0xcf, 0xbe, 0x46, 0x52, 0x3e, 0x5f, - 0xa1, 0xf7, 0xa8, 0xb4, 0xff, 00, 0x8a, 0x16, 0x3a, 0x84, - 0x3a, 0xac, 0x89, 0xa6, 0xdd, 0x20, 0xd3, 0xa0, 0x33, 0xb8, - 0x66, 0x5f, 0x9c, 0x6, 0xdb, 0x81, 0xcf, 0x5a, 00, 0xef, - 0x28, 0xae, 0x22, 0xdb, 0xe2, 0x4d, 0x95, 0xd7, 0x85, 0x6f, - 0xb5, 0xe5, 0xd3, 0xae, 0x56, 0x1b, 0x49, 0x96, 0x16, 0x88, - 0xb2, 0xee, 0x62, 0xdb, 0x79, 0x1c, 0xe3, 0xf8, 0xab, 0x23, - 0xfe, 0x17, 0x4e, 0x9b, 0xff, 00, 0x40, 0x7b, 0xdf, 0xfb, - 0xed, 0x3f, 0xc6, 0x80, 0x3d, 0x3a, 0x8a, 0xe4, 0xfc, 0x23, - 0xe3, 0xdb, 0x2f, 0x17, 0x5d, 0xdc, 0xda, 0xc1, 0x6b, 0x3d, - 0xb4, 0xb0, 0x20, 0x93, 0x12, 0x95, 0x3b, 0x94, 0x9c, 0x1c, - 0x63, 0xd3, 0x8f, 0xce, 0xba, 0xca, 00, 0x2a, 0xb, 0xcb, - 0x48, 0x2f, 0xad, 0x24, 0xb6, 0xb9, 0x8c, 0x49, 0xc, 0x83, - 0x6b, 0x29, 0xef, 0x50, 0xea, 0xda, 0x94, 0x3a, 0x36, 0x91, - 0x77, 0xa8, 0xdc, 0x64, 0xc5, 0x6d, 0x19, 0x91, 0x80, 0xea, - 0x71, 0xd8, 0x7b, 0x9e, 0x95, 0xc3, 0xe9, 0xbf, 0x16, 0xec, - 0xf5, 0x4d, 0x4e, 0xd6, 0xc2, 0xdf, 0x47, 0xbc, 0xf3, 0xae, - 0x65, 0x58, 0xd7, 0x2e, 0x98, 0x4, 0x9e, 0xa7, 0x9e, 0x83, - 0xaf, 0xe1, 0x4d, 0x36, 0x9d, 0xd0, 0x9a, 0x4d, 0x59, 0x9c, - 0xe7, 0x89, 0x7c, 0x39, 0x3f, 0x87, 0xef, 0x76, 0x9c, 0xc9, - 0x69, 0x21, 0xfd, 0xcc, 0xbf, 0xfb, 0x29, 0xf7, 0x1f, 0xad, - 0x62, 0x57, 0xbc, 0xea, 0x1a, 0x7d, 0xb6, 0xa7, 0x65, 0x25, - 0xa5, 0xdc, 0x62, 0x48, 0x64, 0x18, 0x23, 0xb8, 0xf7, 0x1e, - 0x86, 0xbc, 0x4f, 0x57, 0xd3, 0xff, 00, 0xb2, 0xb5, 0x7b, - 0xab, 0x1f, 0x33, 0xcc, 0x10, 0xbe, 0xd0, 0xf8, 0xc6, 0x46, - 0x32, 0x3f, 0x9d, 0x7d, 0x5e, 0x5b, 0x8f, 0xfa, 0xc4, 0x79, - 0x27, 0xf1, 0x2f, 0xc4, 0xf0, 0x31, 0xb8, 0x4f, 0x62, 0xf9, - 0xa3, 0xf0, 0xb2, 0x95, 0x14, 0x51, 0x5e, 0xa1, 0xc0, 0x15, - 0xea, 0x7f, 0xd, 0xff, 00, 0xe4, 0x5c, 0x9f, 0xfe, 0xbe, - 0x9b, 0xff, 00, 0x41, 0x4a, 0xf2, 0xca, 0xf5, 0x3f, 0x86, - 0xff, 00, 0xf2, 0x2e, 0x4f, 0xff, 00, 0x5f, 0x4d, 0xff, - 00, 0xa0, 0xa5, 0x79, 0x79, 0xc7, 0xfb, 0xb3, 0xf5, 0x47, - 0x7e, 0x5b, 0xfc, 0x7f, 0x93, 0x3b, 0xa, 0xce, 0xd5, 0x3f, - 0xe5, 0x87, 0xd5, 0xbf, 0x95, 0x68, 0xd6, 0x76, 0xa9, 0xff, - 00, 0x2c, 0x3e, 0xad, 0xfc, 0xab, 0xe4, 0xcf, 0xa0, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, - 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x19, 0x3e, 0x25, 0x9f, 0xec, 0xda, - 0x5, 0xd4, 0xb9, 0xc6, 0x16, 0xbc, 0x3a, 0xe2, 0xe7, 0x25, - 0x8e, 0x7a, 0x9c, 0xd7, 0xaf, 0x78, 0xfe, 0xe3, 0xc9, 0xf0, - 0xc4, 0xcb, 0xfd, 0xfe, 0x2b, 0xc3, 0x27, 0x9f, 0x8e, 0xb5, - 0xac, 0x16, 0x87, 0x35, 0x67, 0xa8, 0xf9, 0xae, 0x7a, 0xf3, - 0x57, 0xbc, 0x2b, 0xae, 0x7f, 0x65, 0xf8, 0x96, 0xda, 0x5d, - 0xd8, 0x57, 0x60, 0x8c, 0x7d, 0xab, 0x9b, 0x9e, 0x7c, 0x93, - 0xcd, 0x53, 0x79, 0xc8, 0x39, 0xd, 0x82, 0x39, 0x6, 0xa9, - 0x98, 0xc5, 0xbb, 0xdc, 0xfa, 0xe5, 0x1d, 0x64, 0x8d, 0x5d, - 0x8, 0x2a, 0xc3, 0x20, 0x8a, 0xa3, 0xac, 0x4b, 0xe5, 0xd8, - 0x3a, 0xf7, 0x71, 0x81, 0x5c, 0x1f, 0xc3, 0x1f, 0x1e, 0x45, - 0xab, 0xd9, 0xae, 0x93, 0x78, 0xdb, 0x6e, 0xe0, 0x5c, 0x2b, - 0x1e, 0x8c, 0xb5, 0xd9, 0xdf, 0xee, 0xb8, 0x93, 0x4, 0x7c, - 0xa3, 0xa5, 0x65, 0x6d, 0x4e, 0xc7, 0x2b, 0xc4, 0xe4, 0x24, - 0xb4, 0xe3, 0xa7, 0x35, 0x9f, 0x3d, 0xae, 0x33, 0xc5, 0x75, - 0x72, 0xdb, 0x70, 0x78, 0xac, 0xdb, 0x8b, 0x7e, 0xbc, 0x56, - 0x89, 0x9c, 0xee, 0x26, 0x7f, 0x86, 0x3f, 0xd1, 0xbc, 0x45, - 0x13, 0x76, 0x20, 0x8a, 0xf4, 0xfa, 0xf3, 0x4b, 0x44, 0xf2, - 0x75, 0x48, 0x5b, 0xa7, 0xcc, 0x5, 0x7a, 0x50, 0xe8, 0x2a, - 0x26, 0x6b, 0x47, 0x61, 0x68, 0xa2, 0x8a, 0x83, 0x60, 0xa2, - 0x8a, 0x28, 00, 0xa8, 0x2e, 0x7e, 0xe5, 0x4f, 0x50, 0xdc, - 0x7d, 0xca, 00, 0x9a, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, 0xff, 00, 0x61, - 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, 0x81, 0xe0, 0xff, - 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, 0x5f, 0xf9, 0xa, - 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, 0x79, 0xa2, 0x7f, - 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, 0x68, 0x3, 0x3f, - 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, - 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, 0xf9, 0x12, - 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xb, - 0xc6, 0x5f, 0xf2, 0x29, 0xdf, 0xff, 00, 0xba, 0xbf, 0xfa, - 0x1a, 0xd7, 0x8c, 0xd7, 0xb3, 0x78, 0xcb, 0xfe, 0x45, 0x3b, - 0xff, 00, 0xf7, 0x57, 0xff, 00, 0x43, 0x5a, 0xf1, 0x9a, - 0xfa, 0x7c, 0x93, 0xf8, 0x12, 0xf5, 0xfd, 0x11, 0xe1, 0x66, - 0x9f, 0xc5, 0x5e, 0x9f, 0xab, 0xa, 0x28, 0xa2, 0xbd, 0x93, - 0xcd, 0x26, 0xb4, 0xff, 00, 0x8f, 0xeb, 0x6f, 0xfa, 0xec, - 0x9f, 0xfa, 0x10, 0xaf, 0x7d, 0xaf, 0x2, 0xb4, 0xff, 00, - 0x8f, 0xeb, 0x6f, 0xfa, 0xec, 0x9f, 0xfa, 0x10, 0xaf, 0x7d, - 0xaf, 0x9d, 0xcf, 0x7e, 0x28, 0x7c, 0xff, 00, 0x43, 0xd9, - 0xca, 0xb6, 0x97, 0xc8, 0xe2, 0x75, 0xdf, 0x86, 0x5a, 0x4e, - 0xbf, 0xac, 0xdc, 0x6a, 0x77, 0x37, 0x77, 0xb1, 0xcd, 0x3e, - 0xdd, 0xcb, 0x1b, 0x28, 0x51, 0x80, 0x7, 0x19, 0x53, 0xe9, - 0x5e, 0x7f, 0xf1, 0x3, 0xc0, 0xda, 0x77, 0x84, 0xb4, 0xfb, - 0x3b, 0x8b, 0x2b, 0x8b, 0xa9, 0x5a, 0x79, 0x8c, 0x6c, 0x26, - 0x65, 0x20, 00, 0xa4, 0xf1, 0x80, 0x2b, 0xdd, 0xab, 0xcc, - 0x7e, 0x34, 0xff, 00, 0xc8, 0x17, 0x4a, 0xff, 00, 0xaf, - 0xa6, 0xff, 00, 0xd0, 0xd, 0x78, 0x27, 0xac, 0x71, 0x5f, - 0xf, 0xfc, 0x25, 0x65, 0xe2, 0xdb, 0xcb, 0xe8, 0x6f, 0x67, - 0xb8, 0x89, 0x6d, 0xe3, 0x47, 0x53, 0x9, 00, 0x92, 0x49, - 0x1c, 0xe4, 0x1f, 0x4a, 0xdd, 0xf1, 0x9f, 0xc3, 0x7d, 0x2b, - 0xc3, 0x7e, 0x19, 0x9f, 0x53, 0xb5, 0xbb, 0xbc, 0x92, 0x68, - 0xdd, 0x14, 0x2c, 0xac, 0xa5, 0x7e, 0x66, 00, 0xf4, 0x51, - 0xeb, 0x4f, 0xf8, 0x2b, 0xff, 00, 0x21, 0x4d, 0x5f, 0xfe, - 0xb8, 0x47, 0xff, 00, 0xa1, 0x35, 0x75, 0xff, 00, 0x15, - 0x7f, 0xe4, 0x41, 0xbb, 0xff, 00, 0xae, 0xb1, 0x7f, 0xe8, - 0x62, 0x80, 0x3c, 0xdb, 0xe1, 0x47, 0xfc, 0x8f, 0xb0, 0x7f, - 0xd7, 0xb4, 0xbf, 0xc8, 0x57, 0x5b, 0xa5, 0x7c, 0x30, 0xd4, - 0x74, 0xfb, 0x7d, 0x72, 0x37, 0xd4, 0x6d, 0x5c, 0xea, 0x36, - 0xad, 0x2, 0x15, 0x46, 0xf9, 0x9, 0x6d, 0xd9, 0x35, 0xc9, - 0x7c, 0x28, 0xff, 00, 0x91, 0xf6, 0xf, 0xfa, 0xf6, 0x97, - 0xf9, 0xa, 0xf7, 0xda, 00, 0xf2, 0x2d, 0x5b, 0xc2, 0x97, - 0x3e, 0x12, 0xf8, 0x5b, 0xac, 0xda, 0xdd, 0x5c, 0xc3, 0x70, - 0xd3, 0x5d, 0x45, 0x28, 0x68, 0x94, 0x80, 0x6, 0xe4, 0x18, - 0xe7, 0xe9, 0x5e, 0x73, 0xa4, 0xe9, 0x8f, 0xaa, 0xcd, 0x75, - 0xc, 0x79, 0xf3, 0x22, 0xb4, 0x96, 0xe1, 00, 0xfe, 0x22, - 0x80, 0x1c, 0x7e, 0x59, 0xaf, 0x71, 0xf8, 0xa5, 0xff, 00, - 0x22, 0x5, 0xf7, 0xfb, 0xf1, 0x7f, 0xe8, 0xc5, 0xaf, 0x32, - 0xf8, 0x54, 0xa1, 0xbc, 0x77, 0x2, 0xb0, 0x4, 0x1b, 0x79, - 0x41, 0x7, 0xbf, 0x2, 0x80, 0x33, 0xfc, 0x1, 0xab, 0x7f, - 0x64, 0xf8, 0xd3, 0x4e, 0x9c, 0xb6, 0x22, 0x99, 0xfe, 0xcf, - 0x21, 0xcf, 0x1b, 0x5f, 0x81, 0xfa, 0xed, 0x35, 0xf4, 0x7d, - 0x7c, 0xc3, 0xe2, 0x5d, 0x29, 0xf4, 0x1f, 0x12, 0xdf, 0xe9, - 0xeb, 0x95, 0x10, 0x4c, 0x4c, 0x27, 0xfd, 0x83, 0xf3, 0x21, - 0xfc, 0x88, 0xfc, 0xab, 0xe8, 0xbf, 0xe, 0xea, 0x83, 0x5a, - 0xf0, 0xed, 0x86, 0xa2, 0xf, 0x33, 0xc2, 0xac, 0xde, 0xcd, - 0xd1, 0x87, 0xe6, 0xd, 00, 0x71, 0xbf, 0x18, 0x75, 0x5f, - 0xb2, 0xf8, 0x6e, 0xdf, 0x4d, 0x46, 0xc3, 0xde, 0xcc, 0xb, - 00, 0x7f, 0x81, 0x39, 0x3f, 0xae, 0xda, 0xe5, 0x7e, 0x10, - 0x68, 0xff, 00, 0x6c, 0xf1, 0x1c, 0xfa, 0x9c, 0x8b, 0x98, - 0xec, 0x62, 0xda, 0x87, 0xfe, 0x9a, 0x3f, 0x1f, 0xa2, 0x83, - 0xf9, 0xd5, 0xf, 0x8a, 0x7a, 0xb7, 0xf6, 0x8f, 0x8d, 0x26, - 0x81, 0x5b, 0x31, 0x58, 0xc6, 0x20, 0x1f, 0xef, 0x7d, 0xe6, - 0xfd, 0x4e, 0x3f, 0xa, 0xf4, 0xff, 00, 0x86, 0x9a, 0x3f, - 0xf6, 0x47, 0x82, 0xed, 0x59, 0xd7, 0x6c, 0xf7, 0x84, 0xdc, - 0xc9, 0x91, 0xcf, 0xcd, 0xf7, 0x47, 0xfd, 0xf2, 0x5, 00, - 0x75, 0xf5, 0xe2, 0xde, 0x2e, 0xff, 00, 0x91, 0xb3, 0x52, - 0xff, 00, 0xae, 0xa3, 0xff, 00, 0x41, 0x15, 0xed, 0x35, - 0xe2, 0xde, 0x2e, 0xff, 00, 0x91, 0xb3, 0x52, 0xff, 00, - 0xae, 0xa3, 0xff, 00, 0x41, 0x15, 0xec, 0xe4, 0x9f, 0xc7, - 0x97, 0xa7, 0xea, 0x8f, 0x33, 0x34, 0xfe, 0x12, 0xf5, 0xfd, - 0xc, 0x5a, 0x28, 0xa2, 0xbe, 0x9c, 0xf0, 0xc2, 0xbd, 0x4f, - 0xe1, 0xbf, 0xfc, 0x8b, 0x93, 0xff, 00, 0xd7, 0xd3, 0x7f, - 0xe8, 0x29, 0x5e, 0x59, 0x5e, 0xa7, 0xf0, 0xdf, 0xfe, 0x45, - 0xc9, 0xff, 00, 0xeb, 0xe9, 0xbf, 0xf4, 0x14, 0xaf, 0x2f, - 0x38, 0xff, 00, 0x76, 0x7e, 0xa8, 0xef, 0xcb, 0x7f, 0x8f, - 0xf2, 0x67, 0x61, 0x59, 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, - 0xf2, 0xad, 0x1a, 0xce, 0xd5, 0x3f, 0xe5, 0x87, 0xd5, 0xbf, - 0x95, 0x7c, 0x99, 0xf4, 0x5, 0xcb, 0x7f, 0xf5, 0x9, 0xf4, - 0xa9, 0x6a, 0x2b, 0x7f, 0xf5, 0x9, 0xf4, 0xa9, 0x68, 00, - 0xa2, 0x8a, 0x28, 00, 0xac, 0xed, 0x53, 0x59, 0xb6, 0xd2, - 0xe2, 0x26, 0x56, 0x6, 0x4e, 0xc8, 0x3a, 0x9a, 0xc9, 0xf1, - 0x27, 0x8b, 0x6d, 0xf4, 0x85, 0x30, 0x40, 0x44, 0x97, 0x47, - 0xa0, 0x1f, 0xc3, 0x5c, 0x1f, 0xda, 0xa7, 0xbf, 0xb8, 0x33, - 0xdc, 0x48, 0x5d, 0xd8, 0xe7, 0x9e, 0xd5, 0x71, 0x8d, 0xcc, - 0x67, 0x55, 0x2d, 0x11, 0xb7, 0x7d, 0x7f, 0x2e, 0xb8, 0xe4, - 0x5c, 0xf, 0xdd, 0x76, 0x4a, 0xc6, 0xba, 0xf0, 0x1d, 0x9d, - 0xf0, 0x2d, 0xb, 0xb4, 0x6e, 0x7d, 0x7a, 0x56, 0xb5, 0x9a, - 0xf4, 0xad, 0xeb, 0x54, 0xe0, 0x55, 0xec, 0x65, 0x6e, 0x6d, - 0xcf, 0x35, 0x93, 0xe1, 0x1e, 0xa5, 0x29, 0xfd, 0xd5, 0xf4, - 0x58, 0x3e, 0xb5, 0x66, 0xc7, 0xe0, 0xa5, 0xc3, 0x48, 0xd, - 0xf5, 0xfa, 0x34, 0x7d, 0xc2, 0x75, 0xaf, 0x5a, 0xb7, 0x4f, - 0x94, 0x55, 0xd4, 0x5a, 0x96, 0xcd, 0x14, 0x12, 0x39, 0xcf, - 0xf, 0xf8, 0x2b, 0x47, 0xf0, 0xdc, 0x40, 0x59, 0xc1, 0xba, - 0x5e, 0xf2, 0x3f, 0x26, 0xb7, 0x5a, 0x2c, 0xd5, 0xb0, 0xa2, - 0x91, 0x97, 0x8a, 0x9b, 0x9a, 0x58, 0xcb, 0x9a, 0xe, 0x33, - 0x59, 0x17, 0xc2, 0x38, 0x21, 0x79, 0xa6, 0x60, 0xa8, 0xa3, - 0x24, 0x9a, 0xe8, 0xe4, 0x4c, 0xd7, 0x8b, 0xfc, 0x50, 0xf1, - 0x4b, 0x3d, 0xef, 0xf6, 0x2d, 0x9b, 0xe1, 0x53, 0xfd, 0x69, - 0x1d, 0xea, 0x91, 0x9c, 0xf4, 0x45, 0x2d, 0x6b, 0xc5, 0x4d, - 0x7b, 0x76, 0x62, 0xb2, 0x62, 0x91, 0x21, 0xe1, 0xc7, 0x53, - 0x5d, 0x7f, 0x84, 0x7c, 0x7f, 0x24, 0x61, 0x2c, 0xf5, 0x43, - 0xb9, 0x3a, 0x2c, 0xbd, 0xc7, 0xd6, 0xbc, 0x86, 0xd5, 0xb1, - 0x81, 0x5b, 0x76, 0x87, 0x38, 0xaa, 0x6a, 0xe6, 0x30, 0x9b, - 0x4c, 0xfa, 0x42, 0x19, 0xa3, 0xb8, 0x89, 0x65, 0x89, 0xc3, - 0xa3, 0xc, 0x82, 0x2a, 0x4a, 0xf2, 0x5f, 0xb, 0xf8, 0x9a, - 0xe7, 0x4a, 0x71, 0x14, 0x8c, 0x64, 0xb6, 0x3d, 0x54, 0xf6, - 0xaf, 0x52, 0xb3, 0xbd, 0x86, 0xfa, 0xdd, 0x66, 0x81, 0xc3, - 0x29, 0xfd, 0x2b, 0x26, 0xac, 0x75, 0x46, 0x6a, 0x45, 0x8a, - 0x28, 0xa2, 0x91, 0x61, 0x50, 0xdc, 0x7d, 0xca, 0x9a, 0xa1, - 0xb9, 0xfb, 0x94, 0x1, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x1e, 0x67, 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, - 0x73, 0x7f, 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, - 0x14, 0xd7, 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, - 0xff, 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, - 0x6, 0x7f, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, - 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, - 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, - 0x35, 0xd0, 0x50, 0x1, 0x45, 0x15, 0xf3, 0xd7, 0xc6, 0xef, - 0xd, 0x78, 0xcf, 0x56, 0xf1, 0xd6, 0x9f, 0x73, 0xa5, 0xd9, - 0x6a, 0x17, 0x96, 0x42, 0x24, 0x16, 0x8d, 0x6a, 0x19, 0x96, - 0xde, 0x4c, 0xfc, 0xc4, 0xe3, 0xee, 0x1c, 0xed, 0x3b, 0x8e, - 0x3a, 0xe, 0x78, 0xe1, 0x37, 0x66, 0x97, 0x71, 0xa5, 0xa3, - 0x3e, 0x85, 0xa2, 0xa9, 0xe9, 0x31, 0xde, 0x43, 0xa3, 0x58, - 0xc7, 0xa8, 0x48, 0x24, 0xbd, 0x48, 0x11, 0x67, 0x70, 0x73, - 0xba, 0x40, 0xa3, 0x71, 0xfc, 0xf3, 0x57, 0x2a, 0x9a, 0xb3, - 0xb1, 0x29, 0xdd, 0x5c, 0x2a, 0x1b, 0xb6, 0x2b, 0x67, 0x3b, - 0x29, 0x20, 0x88, 0xd8, 0x82, 0x3b, 0x71, 0x53, 0x54, 0x17, - 0x9f, 0xf1, 0xe3, 0x71, 0xff, 00, 0x5c, 0xdb, 0xf9, 0x56, - 0x73, 0xf8, 0x59, 0x70, 0xf8, 0x91, 0xe6, 0xff, 00, 0xf, - 0xb5, 0x5d, 0x46, 0xf7, 0xe0, 0x5b, 0xea, 0x17, 0x57, 0xf7, - 0x53, 0xde, 0x8b, 0x6b, 0xb6, 0xfb, 0x4c, 0xb3, 0x33, 0x49, - 0x95, 0x2f, 0x83, 0xb8, 0x9c, 0xf1, 0x81, 0x8f, 0xa5, 0x66, - 0xf8, 0x1b, 0xc1, 0x37, 0x5e, 0x26, 0xf0, 0x56, 0x97, 0xac, - 0xde, 0xf8, 0xe7, 0xc6, 0x71, 0xdc, 0xdd, 0xc4, 0x5d, 0xd6, - 0x1d, 0x58, 0x84, 0x7, 0x71, 0x1c, 0x2, 0xa4, 0xf6, 0xf5, - 0xa9, 0xfe, 0x1a, 0x7f, 0xc9, 0xbd, 0xc9, 0xff, 00, 0x5e, - 0xb7, 0xbf, 0xce, 0x4a, 0xa5, 0xf0, 0xef, 0xc3, 0x7e, 0x35, - 0xbc, 0xf0, 0x6, 0x8f, 0x71, 0xa6, 0xf8, 0xff, 00, 0xfb, - 0x3a, 0xcd, 0xe1, 0x26, 0x2b, 0x5f, 0xec, 0x68, 0x66, 0xf2, - 0x86, 0xe3, 0xc6, 0xf6, 0x39, 0x3c, 0xf3, 0xcf, 0xad, 0x6b, - 0x3f, 0xe2, 0x4b, 0xe5, 0xfa, 0x99, 0xad, 0x97, 0xfd, 0xbd, - 0xfa, 0x1d, 0xf7, 0x87, 0x7c, 0x15, 0xff, 00, 0x8, 0xee, - 0xa2, 0xd7, 0xbf, 0xf0, 0x93, 0xf8, 0x93, 0x53, 0xcc, 0x66, - 0x3f, 0x27, 0x53, 0xbf, 0xf3, 0xa2, 0x19, 0x20, 0xee, 0xb, - 0xb4, 0x73, 0xc7, 0x5f, 0x73, 0x5c, 0xbe, 0x9f, 0x71, 0xae, - 0x7c, 0x51, 0xbc, 0xbf, 0xb9, 0xb5, 0xd7, 0x2f, 0x34, 0x4f, - 0xb, 0x5b, 0x4e, 0xd6, 0xd0, 0x7f, 0x67, 0xe1, 0x2e, 0x6f, - 0x19, 0x7a, 0xc9, 0xe6, 0x90, 0x4a, 0x2e, 0x71, 0xc0, 0xea, - 0x32, 0xf, 0xad, 0x75, 0x1a, 0x2e, 0x85, 0xe2, 0x7b, 0x2b, - 0x7d, 0x41, 0x35, 0xbf, 0x16, 0x7f, 0x6d, 0x79, 0xf0, 0xec, - 0x81, 0x7f, 0xb3, 0xe3, 0xb6, 0xf2, 0x9b, 0x7, 0x27, 0x28, - 0x79, 0xce, 0x47, 0x5f, 0x4a, 0xc4, 0xf8, 0x22, 0xe9, 0xff, - 00, 0xa, 0xba, 0xc2, 0xd8, 0x71, 0x35, 0xac, 0xd3, 0xc3, - 0x3a, 0xe3, 0x5, 0x5f, 0xcd, 0x63, 0x83, 0xef, 0x82, 0x29, - 0x2d, 0x5e, 0xbd, 0x17, 0xeb, 0xfa, 0x7e, 0xa5, 0x3d, 0x16, - 0x9d, 0x5f, 0xe9, 0xfd, 0x7d, 0xc5, 0x2d, 0x4f, 0x46, 0xf1, - 0x5f, 0x80, 0x1a, 0xd, 0x5b, 0x42, 0xd6, 0x75, 0xbf, 0x12, - 0xe9, 0xe2, 0x54, 0x5b, 0xed, 0x33, 0x50, 0x63, 0x75, 0x3b, - 0x21, 0x38, 0xdf, 0x13, 00, 0x8, 0x23, 0x3d, 0x7, 0xd4, - 0xe4, 0xc, 0x57, 0xa7, 0xc6, 0xe2, 0x48, 0xd6, 0x40, 0x18, - 0x6, 00, 0x80, 0xca, 0x54, 0x8c, 0xfa, 0x83, 0xc8, 0xaa, - 0x7a, 0xbe, 0xaf, 0x61, 0xa0, 0xe9, 0x57, 0x1a, 0xa6, 0xa7, - 0x70, 0x2d, 0xec, 0xad, 0xd4, 0x34, 0xb2, 0x95, 0x2d, 0xb4, - 0x12, 00, 0xe0, 0x2, 0x4f, 0x24, 0x74, 0x15, 0x6a, 0xde, - 0xe2, 0x2b, 0xbb, 0x68, 0xae, 0x60, 0x70, 0xf0, 0xca, 0x82, - 0x44, 0x61, 0xfc, 0x4a, 0x46, 0x41, 0xfc, 0xa9, 0x27, 0xa5, - 0x82, 0xda, 0x9c, 0xf, 0x88, 0xf5, 0xd, 0x57, 0xc4, 0xbe, - 0x3c, 0x4f, 0x6, 0x69, 0x5a, 0x8d, 0xce, 0x99, 0x65, 0x6f, - 0x6b, 0xf6, 0xbd, 0x52, 0xf6, 0xd3, 0xb, 0x3e, 0x18, 0xe1, - 0x23, 0x8d, 0xce, 0x76, 0x13, 0xd4, 0x9c, 0x67, 0xf5, 0x5, - 0xfa, 0x4f, 0x87, 0xfc, 0x53, 0xe1, 0x5f, 0x17, 0x59, 0xc3, - 0x69, 0xab, 0x6a, 0x5a, 0xef, 0x86, 0xee, 0xd1, 0xfe, 0xd6, - 0x75, 0x3b, 0x84, 0x92, 0x6b, 0x49, 00, 0xf9, 0x59, 0x58, - 0x90, 0xc4, 0x13, 0x81, 0xb4, 0xe, 0x39, 0x3e, 0xf5, 0xca, - 0x27, 0x87, 0x9f, 0xc4, 0x7f, 0x1d, 0x3c, 0x59, 0xa7, 0x5e, - 0xdd, 0xdc, 0xc5, 0xa5, 0x3d, 0xac, 0x12, 0x5d, 0x5b, 0x43, - 0x21, 0x8c, 0xdd, 0xae, 0xc5, 0x55, 0x46, 0x60, 0x43, 0x6c, - 0xe5, 0xb2, 0x1, 0xe7, 0xa1, 0xad, 0x19, 0xf4, 0x4b, 0x5f, - 0x86, 0x7e, 0x3c, 0xf0, 0xca, 0x78, 0x6d, 0xa6, 0xb6, 0xd2, - 0x75, 0xa9, 0xde, 0xd2, 0xf3, 0x4e, 0x69, 0xde, 0x48, 0xcb, - 0xe0, 0x6d, 0x95, 0x43, 0x12, 0x43, 0x74, 0xc9, 0xcf, 0x40, - 0x7, 0x73, 0x44, 0x36, 0x8b, 0x7d, 0x7f, 0xe0, 0xff, 00, - 0xc3, 0x7a, 0xea, 0x13, 0xde, 0x4b, 0xb7, 0xf9, 0x27, 0xff, - 00, 0x7, 0xf0, 0x3a, 0x5f, 0x1b, 0x78, 0xca, 0xfb, 0x48, - 0x9d, 0x74, 0x3f, 0xf, 0xe9, 0x53, 0xea, 0x3a, 0xf5, 0xc4, - 0x6, 0x64, 0xf9, 0x31, 0xd, 0xb4, 0x79, 0x23, 0xcc, 0x95, - 0xba, 0x1, 0x90, 0x70, 0x3b, 0xe3, 0xb6, 0x46, 0x59, 0xf0, - 0x8b, 0x51, 0xbd, 0xd5, 0xbe, 0x19, 0x69, 0x57, 0xda, 0x85, - 0xd4, 0xd7, 0x57, 0x52, 0x99, 0x8b, 0xcd, 0x33, 0x96, 0x66, - 0xfd, 0xeb, 0x81, 0xc9, 0xf6, 0xc0, 0xae, 0xc2, 0xf3, 0xfe, - 0x3c, 0x6e, 0x3f, 0xeb, 0x9b, 0x7f, 0x2a, 0xe1, 0xbe, 0x9, - 0x7f, 0xc9, 0x24, 0xd1, 0x7e, 0xb3, 0xff, 00, 0xe8, 0xe7, - 0xa7, 0x1d, 0xa5, 0x7f, 0x2f, 0xd4, 0x25, 0xd2, 0xdf, 0xd6, - 0x86, 0x16, 0xa9, 0xe4, 0x6b, 0xbe, 0x36, 0xf1, 0x4, 0xda, - 0xcf, 0x8e, 0x35, 0x3f, 0xe, 0xe9, 0x76, 0x53, 0x45, 0x65, - 0x66, 0x96, 0xba, 0xaa, 0xda, 0x24, 0xb2, 0x8, 0xc3, 0xc9, - 0xf7, 0xb8, 0x24, 0x16, 0x5e, 0x82, 0xbb, 0x8f, 0xc, 0xe8, - 0xf6, 0xbe, 0x1c, 0xd2, 0x6e, 0x2e, 0xd3, 0xc4, 0x7a, 0xb6, - 0xb3, 0x69, 0x3a, 0xb, 0x81, 0x71, 0xa8, 0xde, 0x8b, 0x90, - 0xa8, 0x14, 0x9c, 0xa3, 00, 0x6, 0xd2, 0x39, 0xf7, 0xe2, - 0xa9, 0x69, 0xff, 00, 0xb, 0xbc, 0x29, 0x65, 0xa9, 0x6a, - 0x7a, 0x8d, 0xce, 0x9d, 0x1e, 0xa9, 0x75, 0xa8, 0xdc, 0x35, - 0xc4, 0x8f, 0xa9, 0x47, 0x1c, 0xdb, 0x9, 0x24, 0xed, 0x40, - 0x57, 0xa, 0x32, 0x4f, 0xbf, 0xa9, 0x35, 0xca, 0xd8, 0x5b, - 0xb6, 0x8b, 0xe2, 0x8f, 0x1e, 0xf8, 0x5b, 0x4d, 0x5d, 0xba, - 0x4b, 0x69, 0x9f, 0x6d, 0xb7, 0xb5, 0x4f, 0xbb, 0x6f, 0x23, - 0xa1, 0xc, 0xa8, 0x3a, 0x28, 0x62, 0x49, 0xc7, 0x4e, 0x98, - 0xac, 0xdc, 0xb9, 0x61, 0xe7, 0x6f, 0xc5, 0x2b, 0xbf, 0xd5, - 0xfe, 0x5, 0x59, 0x39, 0x5f, 0xa5, 0xff, 00, 0x5b, 0x7f, - 0x5f, 0x78, 0x78, 0x7b, 0x48, 0xd7, 0x3e, 0x25, 0xe9, 0x33, - 0x78, 0x9e, 0xfb, 0xc5, 0x9a, 0xe6, 0x90, 0x97, 0x4f, 0x22, - 0xe9, 0xd6, 0x9a, 0x64, 0xfe, 0x44, 0x70, 0xc4, 0xac, 0xc1, - 0x4b, 0x81, 0xcb, 0x92, 0x79, 0x27, 0x20, 0xfb, 0xe3, 0x18, - 0x9a, 0x2f, 0x88, 0x3a, 0xd5, 0x8f, 0xc3, 0x1f, 0x11, 0xdd, - 0xdf, 0x2a, 0x4f, 0xe2, 0xd, 0x6, 0xe1, 0xec, 0x65, 0x91, - 0x63, 0xf9, 0x64, 0x6d, 0xc1, 0x56, 0x52, 0xa3, 0x8c, 0x61, - 0xb2, 0x7b, 0x71, 0x5d, 0xf, 0xc2, 0x39, 0x63, 0x97, 0xe1, - 0x5e, 0x80, 0xd1, 0x63, 0x68, 0x80, 0xa9, 0xc1, 0xcf, 0x21, - 0xd8, 0x1f, 0xd7, 0x35, 0xe7, 0x97, 0x1a, 0xe3, 0xe8, 0x90, - 0xfc, 0x49, 0xb9, 0xb6, 0xb4, 0xb6, 0xb9, 0x7b, 0xdd, 0x66, - 0x3d, 0x3e, 0x24, 0xb9, 0x50, 0xd0, 0x97, 0x60, 0x55, 0xb7, - 0x8e, 0x84, 00, 0x49, 0xe7, 0xf1, 0xaa, 0xa8, 0xb9, 0x5b, - 0x84, 0x7b, 0x7e, 0x37, 0x4b, 0xef, 0x77, 0x22, 0x12, 0xba, - 0x53, 0x97, 0x7f, 0xc2, 0xcd, 0xfe, 0x16, 0x35, 0xf5, 0x4f, - 0xf, 0x78, 0x83, 0xc3, 0xde, 0xb, 0x7f, 0x18, 0xc1, 0xe3, - 0xbd, 0x66, 0xe7, 0x56, 0xb7, 0x80, 0x5e, 0xc9, 0x1c, 0xf7, - 0x1, 0xac, 0x65, 0x4, 0x65, 0x90, 0x43, 0x8c, 00, 0x41, - 0xc0, 0xe7, 0xd3, 00, 0x71, 0x8f, 0x51, 0xd0, 0xb5, 0x16, - 0xd6, 0x3c, 0x3f, 0xa7, 0x6a, 0x6f, 0x17, 0x92, 0xd7, 0x76, - 0xd1, 0xce, 0x63, 0xfe, 0xe1, 0x65, 0x7, 0x1f, 0xad, 0x79, - 0x3e, 0xa9, 0xf0, 0x72, 0x7d, 0x3b, 0xc1, 0xa, 0xb0, 0xf8, - 0xa3, 0x53, 0xbb, 0x9f, 0x4f, 0x41, 0x72, 0x2c, 0x6f, 0x24, - 0xdf, 0xa7, 0xc8, 0xc9, 0x97, 0x2b, 0xe4, 0xe3, 0x80, 0x79, - 0xee, 0x7a, 0xfb, 0xd7, 0xa5, 0x78, 0x2f, 0x5e, 0x1e, 0x27, - 0xf0, 0x6e, 0x97, 0xac, 0x8, 0x16, 0x3, 0x73, 0x8, 0x2d, - 0x12, 0x7d, 0xd4, 0x60, 0x4a, 0x90, 0x3d, 0xb2, 0xe, 0x3d, - 0xaa, 0xf4, 0xf7, 0xad, 0xdd, 0x7e, 0xbf, 0xd7, 0xcb, 0xcc, - 0x4a, 0xfe, 0xed, 0xfb, 0x7f, 0x97, 0xf5, 0xf3, 0x39, 0xef, - 0x8c, 0x37, 0x97, 0xb6, 0x5e, 0x8, 0x47, 0xb0, 0xbe, 0xba, - 0xb2, 0x9a, 0x4b, 0xe8, 0x22, 0x33, 0x5a, 0xcc, 0x63, 0x70, - 0xac, 0xd8, 0x20, 0x30, 0xa4, 0xff, 00, 0x85, 0x59, 0xff, - 00, 0x53, 0xef, 0x8e, 0x7f, 0xf0, 0x71, 0xff, 00, 0xd8, - 0x55, 0x7f, 0x8d, 0xca, 0xef, 0xe0, 0x8, 0xd6, 0x39, 0x3c, - 0xb7, 0x3a, 0x85, 0xb0, 0x57, 0xc6, 0x76, 0x9d, 0xdc, 0x1c, - 0x77, 0xaa, 0x3e, 0x25, 0xd1, 0x3e, 0x2a, 0xe8, 0xfa, 0x1d, - 0xc5, 0xfe, 0x97, 0xe3, 0xa5, 0xd5, 0x27, 0x80, 0x17, 0x6b, - 0x5f, 0xec, 0x88, 0x22, 0x66, 0x40, 0x9, 0x3b, 0x4e, 0x1b, - 0x2d, 0xed, 0xc6, 0x7d, 0x73, 0xc1, 0xcd, 0x34, 0x94, 0x9b, - 0xef, 0xfa, 0x22, 0xec, 0xdc, 0x92, 0x5d, 0xbf, 0x56, 0x3f, - 0xc3, 0xe3, 0x59, 0x8b, 0xc4, 0xda, 0xef, 0xc3, 0xbd, 0x53, - 0xc4, 0x3a, 0x85, 0xe5, 0xb8, 0xb2, 0x5b, 0xbb, 0x3d, 0x4e, - 0x39, 0x36, 0x5e, 0x42, 0x8c, 0xc0, 0x14, 0x69, 0x30, 0x72, - 0xc3, 0x3c, 0x13, 0xfc, 0x8e, 0x6, 0x1f, 0x8f, 0x3c, 0x2d, - 0x7d, 0xe1, 0x73, 0xe1, 0xf1, 0x65, 0xe3, 0x7f, 0x18, 0x49, - 0xfd, 0xa3, 0xaa, 0xc5, 0x65, 0x37, 0x9f, 0xab, 0x31, 0xda, - 0x8d, 0x9c, 0x95, 0xc0, 0x18, 0x3c, 0x77, 0xc8, 0xf6, 0xae, - 0xa3, 0xe1, 0x1d, 0x8e, 0x8b, 0x75, 0xa3, 0x4d, 0xe2, 0x7b, - 0x3d, 0x4a, 0xeb, 0x55, 0xd5, 0xb5, 0x13, 0xb6, 0xfe, 0xf2, - 0xf3, 0x2, 0x45, 0x75, 0xc7, 0xee, 0xf6, 0x82, 0x42, 0x28, - 0xe0, 0x81, 0x93, 0xc6, 0x39, 0xc6, 00, 0x8f, 0xe2, 0xff, - 00, 0xde, 0xf0, 0x67, 0xfd, 0x8c, 0x36, 0xdf, 0xd6, 0xb4, - 0xe5, 0xb4, 0xa2, 0x9e, 0xf7, 0x57, 0xfb, 0xff, 00, 0xcb, - 0xef, 0x25, 0x3b, 0xa6, 0xd6, 0xda, 0xfe, 0x5f, 0xe6, 0x6f, - 0xe8, 0x1e, 0x7, 0x1e, 0x1e, 0xd4, 0xc5, 0xf9, 0xf1, 0x57, - 0x89, 0xb5, 0x10, 0xa8, 0xca, 0x60, 0xd4, 0xb5, 0xf, 0x3a, - 0x2e, 0x7b, 0xed, 0xda, 0x39, 0x1e, 0xb5, 0xcc, 0xd9, 0x4b, - 0xaf, 0xfc, 0x52, 0xbd, 0xbb, 0xbb, 0xb5, 0xd7, 0x2e, 0xf4, - 0x3f, 0x9, 0xdb, 0xce, 0xd0, 0x41, 0xfd, 0x9e, 0x42, 0x5c, - 0xde, 0xb2, 0x64, 0x17, 0xf3, 0x3a, 0xa2, 0xe7, 0xa0, 0x1d, - 0x46, 0x41, 0x1d, 0xeb, 0xd2, 0xaf, 0xa3, 0x79, 0x74, 0xfb, - 0x98, 0xe3, 0xff, 00, 0x58, 0xf1, 0x32, 0xaf, 0xd4, 0x83, - 0x8a, 0xe1, 0x7e, 0x9, 0xc9, 0x11, 0xf8, 0x5d, 0xa7, 0x40, - 0xab, 0xb2, 0x5b, 0x69, 0x26, 0x86, 0x74, 0x27, 0x95, 0x90, - 0x48, 0xc4, 0x83, 0xe8, 0x70, 0x41, 0xc7, 0xbd, 0x4a, 0xd5, - 0xbb, 0xf4, 0xfe, 0xbf, 0xf, 0xd4, 0x6f, 0x44, 0xad, 0xd5, - 0xff, 00, 0x5f, 0xd7, 0x91, 0x43, 0x59, 0xd2, 0x7c, 0x4f, - 0xf0, 0xea, 0xc5, 0xf5, 0xed, 0x1b, 0xc4, 0x5a, 0x9e, 0xbb, - 0xa7, 0x5b, 0x62, 0x4b, 0xfd, 0x3b, 0x58, 0x97, 0xcf, 0x77, - 0x8c, 0x7d, 0xe6, 0x8e, 0x4c, 0x2, 0xa4, 0xe, 0x71, 0xd3, - 0x8c, 0x9c, 0xe3, 0x15, 0xa9, 0xe3, 0x8f, 0x1b, 0xcd, 0x63, - 0xf0, 0xfe, 0xcb, 0x59, 0xd0, 0x25, 0x45, 0x93, 0x56, 0x96, - 0x8, 0x6d, 0x6e, 0x65, 0x50, 0x56, 0x1, 0x2f, 0x3e, 0x63, - 0x3, 0xc7, 0x3, 0xd7, 0x8c, 0xf5, 0xae, 0x8b, 0xc6, 0x17, - 0x36, 0xf6, 0x9e, 0xb, 0xd6, 0xe7, 0xba, 0xdb, 0xe4, 0x2d, - 0x8c, 0xdb, 0xc3, 0x1c, 0x6, 0xca, 0x11, 0x8f, 0xc7, 0xa7, - 0xe3, 0x5c, 0x47, 0x86, 0xc7, 0x87, 0xbf, 0xe1, 0x51, 0xf8, - 0x57, 0x40, 0xf1, 0x66, 0xc3, 0x1e, 0xaf, 0x12, 0x43, 0x4, - 0x52, 0x2b, 0xfe, 0xf1, 0xd8, 0xee, 0x40, 0x19, 0x47, 0xca, - 0x70, 0x57, 0x7, 0x23, 0xeb, 0x4a, 0xed, 0xdd, 0x76, 0xb7, - 0xe3, 0x7d, 0x3f, 0xd, 0x7, 0xa2, 0xb3, 0xf5, 0xfc, 0x2d, - 0xaf, 0xe2, 0x5f, 0x6f, 0x86, 0x9a, 0xa0, 0x87, 0xed, 0x31, - 0x7c, 0x42, 0xf1, 0x4f, 0xf6, 0xa8, 0xfd, 0xe0, 0x91, 0xae, - 0xc1, 0xb6, 0x32, 0xf5, 0xcf, 0x91, 0x8c, 0x6c, 0xcf, 0xf0, - 0x67, 0x18, 0xe2, 0xb7, 0x3c, 0x5, 0xab, 0xeb, 0x9a, 0xbf, - 0x86, 0xc3, 0x78, 0x8f, 0x4f, 0x96, 0xcf, 0x55, 0xb6, 0x99, - 0xed, 0xe6, 0xdf, 0x9, 0x8d, 0x66, 0xdb, 0x8c, 0x48, 0xa0, - 0x81, 0x95, 0x20, 0xf5, 0x1c, 0x67, 0x38, 0xae, 0x5f, 0xfe, - 0x15, 0x9f, 0x89, 0x74, 0x18, 0xcf, 0xfc, 0x21, 0xfe, 0x3e, - 0xd4, 0xed, 0xe3, 0x4b, 0x7f, 0x2e, 0x2b, 0x3d, 0x51, 0x16, - 0xea, 0x3c, 0x8e, 0x81, 0x49, 0x18, 0x8d, 0x7a, 0xe, 0x10, - 0x91, 0xef, 0xd2, 0xb7, 0xfe, 0x1f, 0xf8, 0xb6, 0xff, 00, - 0xc4, 0xd6, 0x9a, 0x95, 0xae, 0xb1, 0x69, 0xd, 0xae, 0xaf, - 0xa5, 0x5d, 0xb5, 0xad, 0xda, 0x40, 0x49, 0x8d, 0x88, 0xe8, - 0xcb, 0x92, 0x48, 0x7, 0x9e, 0xe7, 0xa6, 0x7b, 0xd5, 0x27, - 0xba, 0xfe, 0xbd, 0x49, 0x7d, 0xe, 0xc2, 0x8a, 0x28, 0xa4, - 0x30, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 0x2, 0xa6, 0xa7, 0xa7, 0xc5, 0xaa, 0xe9, 0xd3, 0x59, 0x4e, - 0xce, 0xb1, 0xca, 00, 0x62, 0x87, 0x7, 0x82, 0xf, 0xf4, - 0xae, 0x67, 0xfe, 0x15, 0xb6, 0x8f, 0xff, 00, 0x3f, 0x17, - 0xbf, 0xf7, 0xda, 0xff, 00, 0xf1, 0x35, 0xad, 0xe2, 0xf7, - 0x78, 0xfc, 0x2b, 0x7c, 0xc8, 0xec, 0x8c, 0x15, 0x70, 0xca, - 0x70, 0x47, 0xcc, 0x3b, 0xd7, 0x8f, 0x7d, 0xb6, 0xf3, 0xfe, - 0x7f, 0x2e, 0x7f, 0xef, 0xf3, 0x7f, 0x8d, 0x7b, 0x39, 0x6e, - 0x1e, 0xbd, 0x4a, 0x4d, 0xd3, 0xa9, 0xca, 0xaf, 0xfe, 0x47, - 0x99, 0x8d, 0xad, 0x4a, 0x13, 0x4a, 0x70, 0xbb, 0xb1, 0xe9, - 0x7f, 0xf0, 0xad, 0xb4, 0x7f, 0xf9, 0xf8, 0xbd, 0xff, 00, - 0xbe, 0xd7, 0xff, 00, 0x89, 0xa3, 0xfe, 0x15, 0xb6, 0x8f, - 0xff, 00, 0x3f, 0x17, 0xbf, 0xf7, 0xda, 0xff, 00, 0xf1, - 0x35, 0xe6, 0x9f, 0x6d, 0xbc, 0xff, 00, 0x9f, 0xcb, 0x9f, - 0xfb, 0xfc, 0xdf, 0xe3, 0x47, 0xdb, 0x6f, 0x3f, 0xe7, 0xf2, - 0xe7, 0xfe, 0xff, 00, 0x37, 0xf8, 0xd7, 0xa3, 0xf5, 0x2c, - 0x5f, 0xfc, 0xfe, 0xfc, 0xe, 0x3f, 0xac, 0xe1, 0xff, 00, - 0xe7, 0xd1, 0xe9, 0xb1, 0xfc, 0x3a, 0xd2, 0x22, 0x95, 0x24, - 0x59, 0xef, 0x32, 0x8c, 0x18, 0x65, 0xd7, 0xa8, 0x39, 0xf4, - 0xae, 0xbe, 0xbc, 0x26, 0xd2, 0xf6, 0xec, 0xde, 0xdb, 0x83, - 0x77, 0x70, 0x41, 0x95, 0x38, 0xf3, 0x5b, 0xfb, 0xc3, 0xde, - 0xbd, 0xda, 0xbc, 0x9c, 0xce, 0x8d, 0x5a, 0x4e, 0x3e, 0xd6, - 0x7c, 0xdb, 0x9e, 0x86, 0x6, 0xa5, 0x39, 0xa9, 0x72, 0x47, - 0x94, 0x2b, 0xcc, 0x7e, 0x34, 0xff, 00, 0xc8, 0x17, 0x4a, - 0xff, 00, 0xaf, 0xa6, 0xff, 00, 0xd0, 0xd, 0x7a, 0x75, - 0x79, 0x8f, 0xc6, 0x9f, 0xf9, 0x2, 0xe9, 0x5f, 0xf5, 0xf4, - 0xdf, 0xfa, 0x1, 0xaf, 0x2c, 0xef, 0x32, 0xbe, 0xa, 0xff, - 00, 0xc8, 0x53, 0x57, 0xff, 00, 0xae, 0x11, 0xff, 00, - 0xe8, 0x4d, 0x5d, 0x7f, 0xc5, 0x5f, 0xf9, 0x10, 0x6e, 0xff, - 00, 0xeb, 0xac, 0x5f, 0xfa, 0x18, 0xae, 0x43, 0xe0, 0xaf, - 0xfc, 0x85, 0x35, 0x7f, 0xfa, 0xe1, 0x1f, 0xfe, 0x84, 0xd5, - 0xe8, 0xde, 0x32, 0xd2, 0x64, 0xd7, 0x3c, 0x25, 0xa8, 0xd8, - 0x42, 0x33, 0x33, 0xc7, 0xba, 0x21, 0xea, 0xea, 0x43, 0x1, - 0xf8, 0x91, 0x8f, 0xc6, 0x80, 0x3c, 0x7f, 0xe1, 0x47, 0xfc, - 0x8f, 0xb0, 0x7f, 0xd7, 0xbc, 0xbf, 0xc8, 0x57, 0xbe, 0xd7, - 0xcb, 0xda, 0x6, 0xb1, 0x3f, 0x87, 0xb5, 0xeb, 0x5d, 0x4e, - 0x14, 0xcc, 0x96, 0xee, 0x77, 0xc6, 0xdc, 0x6e, 0x53, 0xc3, - 0x29, 0xf4, 0xe3, 0x3f, 0x8d, 0x7b, 0x7d, 0x9f, 0xc5, 0x1f, - 0xa, 0x5d, 0x5b, 0x9, 0x65, 0xbf, 0x6b, 0x57, 0xc7, 0x31, - 0x4d, 0x13, 0x6e, 0x1f, 0x90, 0x20, 0xfe, 0x6, 0x80, 0xf, - 0x8a, 0x5f, 0xf2, 0x20, 0x5f, 0x7f, 0xbf, 0x17, 0xfe, 0x8c, - 0x5a, 0xf3, 0x3f, 0x85, 0x3f, 0xf2, 0x3e, 0xdb, 0xff, 00, - 0xd7, 0xbc, 0xbf, 0xc8, 0x55, 0xff, 00, 0x88, 0x9e, 0x3f, - 0xb5, 0xf1, 0x1d, 0xac, 0x7a, 0x5e, 0x94, 0xb2, 0x7d, 0x91, - 0x64, 0x12, 0x4b, 0x34, 0x8b, 0xb7, 0xcc, 0x23, 0xa0, 0x3, - 0xae, 0x3b, 0xf3, 0xed, 0x56, 0x3e, 0xe, 0x68, 0xf2, 0xcd, - 0xac, 0xdd, 0xeb, 0xc, 0x84, 0x41, 0x4, 0x46, 0x4, 0x6f, - 0xef, 0x3b, 0x10, 0x4e, 0x3e, 0x80, 0x7e, 0xb4, 0x1, 0x3f, - 0xc6, 0x5d, 0x1f, 0xcb, 0xbb, 0xb0, 0xd6, 0x63, 0x5e, 0x25, - 0x53, 0x6d, 0x31, 0x3, 0xb8, 0xf9, 0x94, 0xfe, 0x5b, 0x87, - 0xe1, 0x57, 0x7e, 0x15, 0xf8, 0x86, 0x3b, 0x6f, 0x9, 0x6a, - 0xb0, 0x5c, 0xbf, 0xcb, 0xa6, 0x96, 0xb8, 00, 0x9f, 0xf9, - 0x66, 0xc0, 0x9f, 0xe6, 0x1b, 0xf3, 0xae, 0xcb, 0xc7, 0x1a, - 0x37, 0xf6, 0xe7, 0x84, 0x2f, 0xed, 0x15, 0x73, 0x32, 0xa7, - 0x9b, 0xf, 0xfb, 0xeb, 0xc8, 0xfc, 0xf1, 0x8f, 0xc6, 0xbe, - 0x76, 0xb4, 0xd4, 0x2e, 0x2c, 0xed, 0xee, 0xe2, 0x81, 0xb6, - 0xa5, 0xe4, 0x3e, 0x4c, 0xa3, 0xd5, 0x77, 0x6, 0xfe, 0x9f, - 0xa9, 0xa0, 0xb, 0xba, 0x4d, 0x9c, 0xfe, 0x29, 0xf1, 0x5d, - 0xbd, 0xbc, 0x84, 0x99, 0x2f, 0xee, 0x4b, 0xcc, 0x7d, 0x1, - 0x25, 0x9c, 0xfe, 0x59, 0xaf, 0xa6, 0xd1, 0x16, 0x38, 0xd6, - 0x34, 0x50, 0xa8, 0xa0, 0x5, 0x3, 0xa0, 0x2, 0xbc, 0x77, - 0xe0, 0xde, 0x8f, 0xe7, 0x6a, 0x57, 0xda, 0xc4, 0x8b, 0xf2, - 0xdb, 0xa0, 0x82, 0x22, 0x7f, 0xbc, 0xdc, 0xb1, 0xfc, 00, - 0x1f, 0xf7, 0xd5, 0x7b, 0x25, 00, 0x15, 0xcb, 0xea, 0x3e, - 0x5, 0xd3, 0x35, 0x3d, 0x46, 0x7b, 0xd9, 0xa6, 0xba, 0x59, - 0x26, 0x6d, 0xcc, 0x11, 0xc0, 0x1d, 0x31, 0xc7, 0x1e, 0xd5, - 0xd4, 0x57, 0x8e, 0x78, 0xae, 0xee, 0xe6, 0x3f, 0x15, 0x6a, - 0x2a, 0x97, 0x33, 0xaa, 0x89, 0x6, 0x15, 0x65, 0x60, 0x7, - 0xca, 0x3b, 0x66, 0xbd, 0x1c, 0xb6, 0x95, 0x5a, 0xb5, 0x1a, - 0xa5, 0x3e, 0x57, 0x63, 0x8f, 0x1b, 0x52, 0x10, 0x82, 0x73, - 0x8d, 0xd5, 0xce, 0xcb, 0xfe, 0x15, 0xb6, 0x8f, 0xff, 00, - 0x3f, 0x17, 0xbf, 0xf7, 0xda, 0xff, 00, 0xf1, 0x34, 0x7f, - 0xc2, 0xb6, 0xd1, 0xff, 00, 0xe7, 0xe2, 0xf7, 0xfe, 0xfb, - 0x5f, 0xfe, 0x26, 0xbc, 0xd3, 0xed, 0xb7, 0x9f, 0xf3, 0xf9, - 0x73, 0xff, 00, 0x7f, 0x9b, 0xfc, 0x68, 0xfb, 0x6d, 0xe7, - 0xfc, 0xfe, 0x5c, 0xff, 00, 0xdf, 0xe6, 0xff, 00, 0x1a, - 0xf6, 0x7e, 0xa5, 0x8b, 0xff, 00, 0x9f, 0xdf, 0x81, 0xe6, - 0x7d, 0x67, 0xf, 0xff, 00, 0x3e, 0x8f, 0x4a, 0xff, 00, - 0x85, 0x6d, 0xa3, 0xff, 00, 0xcf, 0xc5, 0xef, 0xfd, 0xf6, - 0xbf, 0xfc, 0x4d, 0x74, 0x1a, 0x26, 0x89, 0x6d, 0xa0, 0xd9, - 0x3d, 0xad, 0xab, 0xca, 0xc8, 0xd2, 0x19, 0x9, 0x90, 0x82, - 0x72, 0x40, 0x1d, 0x80, 0xf4, 0xaf, 0x15, 0xfb, 0x6d, 0xe7, - 0xfc, 0xfe, 0x5c, 0xff, 00, 0xdf, 0xe6, 0xff, 00, 0x1a, - 0xf4, 0xff, 00, 0x87, 0x72, 0xc9, 0x37, 0x87, 0xa6, 0x69, - 0x64, 0x79, 0x1b, 0xed, 0x4c, 0x32, 0xec, 0x58, 0xfd, 0xd5, - 0xf5, 0xae, 0x2c, 0xc3, 0xd, 0x88, 0xa7, 0x47, 0x9a, 0xa5, - 0x4e, 0x65, 0xd8, 0xea, 0xc2, 0x56, 0xa3, 0x3a, 0xb6, 0x84, - 0x2c, 0xce, 0xb6, 0xb3, 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, - 0xe5, 0x5a, 0x35, 0x9d, 0xaa, 0xff, 00, 0xcb, 0xf, 0xab, - 0x7f, 0x2a, 0xf0, 0x8f, 0x54, 0xb9, 0x6f, 0xfe, 0xa1, 0x3e, - 0x95, 0x2d, 0x45, 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 00, - 0x15, 0xc2, 0xf8, 0xcf, 0xc7, 0x11, 0xe9, 0x6a, 0xd6, 0x16, - 0x2e, 0x1e, 0xe9, 0x86, 0x19, 0x87, 0xf0, 0xd1, 0xf1, 0x7, - 0xc6, 0xd1, 0xe8, 0x16, 0x86, 0xca, 0xd1, 0x83, 0x5f, 0x4a, - 0x31, 0x80, 0x7e, 0xe8, 0xaf, 0x19, 0x8e, 0x79, 0x2e, 0x26, - 0x69, 0xa6, 0x72, 0xf2, 0x39, 0xcb, 0x31, 0xad, 0x21, 0xb, - 0xea, 0xce, 0x6a, 0xd5, 0xad, 0xee, 0xa3, 0x7a, 0x29, 0x64, - 0xb8, 0x98, 0xcd, 0x33, 0x97, 0x91, 0x8e, 0x49, 0x35, 0xb7, - 0x67, 0xda, 0xb9, 0xeb, 0x57, 0x18, 0x15, 0xd1, 0xe9, 0x96, - 0xf3, 0xdc, 0xb2, 0xac, 0x31, 0x33, 0x67, 0xb8, 0x1c, 0x56, - 0x8f, 0x43, 0x9e, 0x37, 0x66, 0xed, 0x9f, 0x41, 0x5b, 0xf6, - 0x9d, 0x5, 0x56, 0xd3, 0xfc, 0x39, 0x79, 0xb4, 0x19, 0xb0, - 0x80, 0xd6, 0xe4, 0x3a, 0x37, 0x94, 0x7, 0xef, 0x49, 0x35, - 0x9b, 0x68, 0xe9, 0x8c, 0x59, 0x34, 0x1f, 0x74, 0x55, 0xb8, - 0xeb, 0x17, 0x56, 0xd5, 0xec, 0x3c, 0x39, 0x1c, 0x6f, 0x7f, - 0x36, 0xc4, 0x73, 0x85, 0x35, 0xa5, 0x67, 0x77, 0x5, 0xe4, - 0xb, 0x3d, 0xb4, 0xab, 0x24, 0x6c, 0x32, 0xa, 0x9c, 0xd4, - 0x9a, 0x2d, 0xb, 0xb4, 0x87, 0xa5, 0x34, 0x38, 0xa4, 0x67, - 0xa5, 0x62, 0xae, 0x54, 0xd4, 0xae, 0x16, 0xd2, 0xc2, 0xe2, - 0x76, 0xe8, 0x88, 0x7f, 0x95, 0x7c, 0xa9, 0x7b, 0x75, 0x25, - 0xf6, 0xab, 0x73, 0x71, 0x2b, 0x6e, 0x66, 0x91, 0xb9, 0xf6, - 0xcd, 0x7d, 0x47, 0xac, 0xdb, 0xb5, 0xf6, 0x95, 0x71, 0x6b, - 0x19, 0xc3, 0xc8, 0xb8, 0x15, 0xe5, 0xf6, 0x5f, 0x4, 0xe4, - 0x90, 0xb4, 0x97, 0x7a, 0x81, 0x8d, 0x99, 0x89, 0xc2, 0xf3, - 0x56, 0x9a, 0x46, 0x53, 0x4d, 0xec, 0x79, 0xb5, 0xaf, 0x5a, - 0xdb, 0xb4, 0x1d, 0x2b, 0xb8, 0x97, 0xe0, 0xec, 0x90, 0x2e, - 0x6d, 0xef, 0xcc, 0x87, 0xd1, 0x86, 0x2b, 0x2a, 0xe7, 0xc1, - 0x9a, 0xc6, 0x94, 0x77, 0x4b, 0x6, 0xf4, 0x1d, 0xd3, 0x9a, - 0xae, 0x64, 0xcc, 0x3d, 0x9c, 0x96, 0xe4, 0x56, 0x7d, 0xab, - 0xac, 0xd0, 0x75, 0x29, 0xb4, 0xe9, 0x41, 0x56, 0x26, 0x33, - 0xf7, 0x96, 0xb9, 0x7b, 0x58, 0xd9, 0x1b, 0x6b, 0xa9, 0x56, - 0xf4, 0x35, 0xbd, 0x66, 0xbd, 0x29, 0x33, 0x48, 0xdd, 0x1e, - 0x9d, 0x69, 0x75, 0x1d, 0xdc, 0xb, 0x2c, 0x67, 0x20, 0xf5, - 0x1e, 0x95, 0x3d, 0x72, 0x1a, 0x4d, 0xd3, 0xda, 0x48, 0x8, - 0x3f, 0x21, 0xea, 0x2b, 0xac, 0x8e, 0x41, 0x2a, 0x7, 0x53, - 0x90, 0x6b, 0x36, 0x8e, 0x88, 0xbb, 0xa1, 0xf5, 0xd, 0xcf, - 0xfa, 0xba, 0x9a, 0xa1, 0xb9, 0xfb, 0x94, 0x8a, 0x26, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, - 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, - 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, - 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, - 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, - 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, - 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, - 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x2a, 0x3b, 0x88, 0xcc, 0xb6, 0xd2, 0xc6, 0xb8, 0x5, - 0xd0, 0xa8, 0xcf, 0xb8, 0xa9, 0x28, 0xa4, 0xd5, 0xd5, 0x98, - 0xd3, 0xb3, 0xb9, 0xc3, 0xf8, 0x43, 0xc1, 0xba, 0x8e, 0x81, - 0xf0, 0xb1, 0xbc, 0x31, 0x75, 0x35, 0xab, 0xde, 0x98, 0x6e, - 0x23, 0xf3, 0x22, 0x66, 0x31, 0xe6, 0x42, 0xc4, 0x72, 0x54, - 0x1f, 0xe2, 0x19, 0xe2, 0xb1, 0x3c, 0x3b, 0xa1, 0x7c, 0x55, - 0xf0, 0xcf, 0x87, 0xec, 0xf4, 0x6b, 0x29, 0x3c, 0x19, 0x25, - 0xb5, 0xa2, 0x14, 0x46, 0x98, 0xdd, 0x17, 0x23, 0x24, 0xf2, - 0x40, 0x3, 0xbf, 0xa5, 0x7a, 0x9d, 0x15, 0x4d, 0xdd, 0xb7, - 0xdc, 0x9b, 0x69, 0x6f, 0xeb, 0x53, 0x94, 0xf0, 0xff, 00, - 0xfc, 0x2c, 0x1f, 0xed, 0x41, 0xff, 00, 0x9, 0x27, 0xfc, - 0x23, 0x1f, 0xd9, 0xfb, 0xe, 0x7f, 0xb3, 0xbe, 0xd1, 0xe6, - 0xee, 0xed, 0xf7, 0xf8, 0xc7, 0xad, 0x65, 0x6a, 0x3e, 0xa, - 0xf1, 0x6, 0x8f, 0xe2, 0xb, 0xad, 0x73, 0xc0, 0xfa, 0xad, - 0xa5, 0xab, 0x5f, 0x49, 0xe6, 0x5e, 0x69, 0x7a, 0x82, 0x33, - 0x5a, 0xcd, 0x26, 0x8, 0x32, 0x2, 0xbf, 0x32, 0x9e, 0x87, - 0x3, 0xa9, 0x1c, 0x9c, 0x71, 0x5e, 0x81, 0x45, 0x2e, 0xb7, - 0x1f, 0x91, 0xe6, 0xb3, 0x78, 0x27, 0xc5, 0x9e, 0x2f, 0xbc, - 0x80, 0x78, 0xeb, 0x55, 0xd3, 0x57, 0x49, 0xb7, 0x75, 0x93, - 0xfb, 0x2f, 0x47, 0x59, 0x4, 0x77, 0x2c, 0x32, 0x73, 0x23, - 0xbf, 0xcd, 0x8e, 0x9c, 0xc, 0x83, 0xec, 0x79, 0xaf, 0x49, - 00, 0x2a, 0x85, 0x50, 00, 0x3, 00, 0xe, 0xd4, 0xb4, - 0x51, 0xd2, 0xc2, 0xb6, 0xb7, 0x38, 0xcf, 0x13, 0xf8, 0x43, - 0x52, 0xb8, 0xf1, 0x5, 0xbf, 0x8a, 0x7c, 0x31, 0x7b, 0x6f, - 0x69, 0xaf, 0x41, 0xf, 0xd9, 0xdd, 0x2e, 0xd4, 0xb5, 0xbd, - 0xd4, 0x24, 0xe7, 0x64, 0x9b, 0x7e, 0x61, 0x8e, 0xa0, 0x8f, - 0x40, 0x3d, 0xc5, 0x6d, 0x2b, 0xc2, 0x5e, 0x22, 0xd4, 0xfc, - 0x51, 0x67, 0xe2, 0x1f, 0x1a, 0x5e, 0x69, 0x92, 0xcf, 0xa6, - 0xab, 0xad, 0x85, 0x96, 0x98, 0x8f, 0xe4, 0xc6, 0xcc, 00, - 0x32, 0xb3, 0x3f, 0xcc, 0x5b, 0x1c, 0x63, 0xa0, 0xc0, 0x22, - 0xbb, 0xca, 0x28, 0x5a, 0xd, 0xea, 0x47, 0x71, 0x19, 0x96, - 0xda, 0x58, 0xd7, 00, 0xba, 0x15, 0x19, 0xf7, 0x15, 0xcd, - 0xfc, 0x3b, 0xf0, 0xdd, 0xe7, 0x84, 0x7c, 0xd, 0xa7, 0xe8, - 0x97, 0xf2, 0x41, 0x25, 0xcd, 0xb7, 0x99, 0xbd, 0xe0, 0x62, - 0x50, 0xee, 0x91, 0x98, 0x60, 0x90, 0xf, 0x42, 0x3b, 0x57, - 0x51, 0x45, 0xb, 0x4b, 0xf9, 0x83, 0xd6, 0xc7, 0x9c, 0xaf, - 0x84, 0xbc, 0x61, 0xe1, 0x5d, 0x4f, 0x51, 0x6f, 0x5, 0x5e, - 0xe8, 0x8f, 0xa6, 0x6a, 0x17, 0xd, 0x74, 0xf6, 0x7a, 0xba, - 0x4a, 0x3e, 0xcf, 0x21, 0xfb, 0xde, 0x5b, 0x47, 0xd4, 0x1f, - 0x43, 0xd3, 0x3, 0x1d, 0xc9, 0xde, 0xf0, 0x9f, 0x85, 0x26, - 0xd1, 0x65, 0xd4, 0x75, 0x4d, 0x56, 0xf1, 0x2f, 0xb5, 0xbd, - 0x55, 0xd5, 0xef, 0x27, 0x44, 0xdb, 0x1a, 0x80, 0x30, 0xb1, - 0xc6, 0x3a, 0xec, 0x51, 0xc0, 0xcf, 0x27, 0xa9, 0xae, 0xa2, - 0x8a, 0x16, 0x8a, 0xdf, 0x2f, 0x90, 0x3d, 0x59, 0xe6, 0x76, - 0xfe, 0xf, 0xf1, 0xcf, 0x85, 0x1a, 0xef, 0x4f, 0xf0, 0x76, - 0xab, 0xa3, 0x36, 0x89, 0x71, 0x23, 0x4b, 0xc, 0x5a, 0xa4, - 0x72, 0x79, 0x96, 0x4c, 0xc4, 0x96, 0x11, 0xec, 0x4, 0x30, - 0xe7, 0x23, 0x77, 0xe5, 0xd4, 0x9d, 0x18, 0xbe, 0x17, 0xe9, - 0xc7, 0xe1, 0xfd, 0xcf, 0x86, 0x2e, 0x6f, 0x66, 0x9a, 0x6b, - 0xa9, 0x8d, 0xd4, 0xfa, 0x86, 0xd0, 0xb2, 0x35, 0xc9, 0x21, - 0xbc, 0xdc, 0x76, 0xe4, 0xe, 0x33, 0xd3, 0x8c, 0xf7, 0xae, - 0xee, 0x8a, 0x3a, 0x58, 0x3a, 0xdc, 0xf3, 0x39, 0xfc, 0x3b, - 0xf1, 0x43, 0x53, 0xd3, 0x5b, 0x41, 0xbf, 0xd7, 0xf4, 0x18, - 0xb4, 0xd9, 0x14, 0xc3, 0x2e, 0xa3, 0x6f, 0xc, 0xa6, 0xf2, - 0x48, 0xb9, 0x1f, 0x74, 0xe1, 0x3, 0x30, 0xe0, 0xe0, 0xf1, - 0x93, 0x83, 0xeb, 0xde, 0xe8, 0xba, 0x45, 0xa6, 0x81, 0xa2, - 0xd9, 0xe9, 0x56, 0x8, 0x52, 0xd6, 0xd6, 0x21, 0x1c, 0x60, - 0x9c, 0x9c, 0xe, 0xe4, 0xfa, 0x9e, 0xa7, 0xeb, 0x57, 0xe8, - 0xa7, 0x71, 0x58, 0xe5, 0x3e, 0x21, 0x78, 0x66, 0xf7, 0xc5, - 0x9e, 0x1c, 0x8f, 0x4e, 0xb0, 0x96, 0xde, 0x39, 0x96, 0xee, - 0x19, 0xcb, 0x4e, 0xc4, 0x2e, 0xd4, 0x6c, 0x91, 0xc0, 0x3c, - 0xd7, 0x57, 0x45, 0x14, 0x96, 0x9a, 0x7f, 0x5d, 0x3f, 0xc8, - 0x7d, 0x6f, 0xfd, 0x7f, 0x5a, 0x9c, 0xe, 0x8b, 0xe0, 0x6d, - 0x47, 0xc3, 0x1f, 0x11, 0xaf, 0xf5, 0x6d, 0x1a, 0x7b, 0x55, - 0xf0, 0xf6, 0xa8, 0x9b, 0xee, 0xec, 0x5d, 0xd9, 0x5a, 0x39, - 0xb9, 0x3b, 0xe3, 0x1, 0x48, 0xc6, 0x7b, 0x64, 0x7d, 0xe3, - 0xe8, 0x2a, 0xff, 00, 0x8f, 0x3c, 0x2b, 0x7d, 0xe2, 0x83, - 0xe1, 0xf3, 0x65, 0x2d, 0xbc, 0x7f, 0xd9, 0xda, 0xac, 0x57, - 0xb3, 0x79, 0xec, 0xc3, 0x72, 0x2e, 0x72, 0x17, 00, 0xe4, - 0xf3, 0xdf, 0x3, 0xde, 0xba, 0xfa, 0x28, 0x5a, 0x5a, 0xdd, - 0x1, 0xeb, 0x7f, 0x30, 0xae, 0x2, 0xff, 00, 0xc1, 0x1a, - 0xd6, 0x8d, 0xae, 0x5d, 0xeb, 0x7e, 0x6, 0xd4, 0xed, 0x2c, - 0xe5, 0xbd, 0x7f, 0x32, 0xf3, 0x4c, 0xbf, 0x8d, 0x9a, 0xd6, - 0x77, 0xe7, 0xe7, 0xca, 0xfc, 0xc8, 0xdc, 0x93, 0xf2, 0xf5, - 0x38, 0xe8, 0x2b, 0xbf, 0xa2, 0x8b, 0x6b, 0x70, 0xf2, 0x3c, - 0xe2, 0x7f, 0x6, 0x78, 0xb7, 0xc5, 0xf2, 0x45, 0xf, 0x8d, - 0xf5, 0x7d, 0x3a, 0x3d, 0x26, 0x27, 0x57, 0x6d, 0x37, 0x45, - 0x49, 0x2, 0x5d, 0x10, 0x72, 0x3c, 0xc7, 0x93, 0xe6, 0x3, - 0x38, 0xf9, 0x47, 0x7, 0xd8, 0x80, 0x6b, 0xa3, 0xf1, 0x7f, - 0x83, 0x6c, 0x7c, 0x5d, 0xe1, 0xf5, 0xd2, 0xe4, 0x91, 0xec, - 0xe4, 0xb7, 0x75, 0x96, 0xce, 0xe2, 0xe, 0x1a, 0xda, 0x45, - 0x18, 0x56, 00, 0x63, 0x81, 0xd3, 0x1c, 0x7e, 0x7, 0x4, - 0x74, 0x94, 0x51, 0xd2, 0xc0, 0xb4, 0x77, 0x3c, 0xe9, 0x2c, - 0x7e, 0x2e, 0x43, 0x1, 0xb1, 0x5d, 0x5b, 0xc2, 0xb3, 0x46, - 0x33, 0x1a, 0xea, 0x12, 0xc3, 0x30, 0xb8, 0x2b, 0x9e, 0x1c, - 0xa0, 0x1e, 0x5e, 0xf0, 0x39, 0xc7, 0x4c, 0x8e, 0x73, 0xd6, - 0xba, 0x2f, 0x7, 0x78, 0x4a, 0x2f, 0x9, 0x69, 0xb7, 0x11, - 0x1b, 0xb9, 0x2f, 0xaf, 0xaf, 0x27, 0x6b, 0x9b, 0xdb, 0xc9, - 0x14, 0x2b, 0x4f, 0x2b, 0x75, 0x3b, 0x47, 0xa, 0x3d, 0x5, - 0x74, 0x74, 0x51, 0x70, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0x30, 0xbc, - 0x65, 0xff, 00, 0x22, 0x9d, 0xff, 00, 0xfb, 0xab, 0xff, - 00, 0xa1, 0xad, 0x78, 0xcd, 0x7b, 0x37, 0x8c, 0xbf, 0xe4, - 0x53, 0xbf, 0xff, 00, 0x75, 0x7f, 0xf4, 0x35, 0xaf, 0x19, - 0xaf, 0xa7, 0xc9, 0x3f, 0x81, 0x2f, 0x5f, 0xd1, 0x1e, 0x16, - 0x69, 0xfc, 0x55, 0xe9, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0xd9, - 0x3c, 0xd2, 0x6b, 0x4f, 0xf8, 0xfe, 0xb6, 0xff, 00, 0xae, - 0xc9, 0xff, 00, 0xa1, 0xa, 0xf7, 0xda, 0xf0, 0x2b, 0x42, - 0x5, 0xed, 0xb9, 0x24, 00, 0x25, 0x42, 0x49, 0xff, 00, - 0x78, 0x57, 0xbe, 0x8a, 0xf9, 0xdc, 0xf7, 0xe2, 0x87, 0xcf, - 0xf4, 0x3d, 0x9c, 0xab, 0x69, 0x7c, 0x86, 0x19, 0xa2, 0x52, - 0x41, 0x91, 0x1, 0x1d, 0x41, 0x61, 0x5c, 0xb7, 0x8d, 0xbc, - 0x2f, 0x17, 0x8b, 0xec, 0xad, 0x2d, 0xc6, 0xa5, 0x1d, 0xaf, - 0x91, 0x29, 0x93, 0x76, 0xd0, 0xfb, 0xb2, 0x31, 0x8e, 0xa2, - 0x97, 0x50, 0xf8, 0x75, 0xe1, 0xad, 0x53, 0x51, 0x9e, 0xfe, - 0xee, 0xd2, 0x57, 0xb8, 0x9d, 0xf7, 0xc8, 0xc2, 0x77, 00, - 0x9f, 0xa0, 0x35, 0x5b, 0xfe, 0x15, 0x5f, 0x84, 0xff, 00, - 0xe7, 0xc6, 0x6f, 0xfc, 0x9, 0x93, 0xfc, 0x6b, 0xc1, 0x3d, - 0x61, 0x9e, 0x9, 0xf0, 0x5c, 0x7e, 0xf, 0xbb, 0xbc, 0x9c, - 0xea, 0xd1, 0xdd, 0x7d, 0xa1, 0x15, 0x31, 0xb0, 0x26, 0xdc, - 0x12, 0x7f, 0xbc, 0x7d, 0x6b, 0xb3, 0xf3, 0xe1, 0xff, 00, - 0x9e, 0xb1, 0xff, 00, 0xdf, 0x42, 0xb8, 0xff, 00, 0xf8, - 0x55, 0x7e, 0x13, 0xff, 00, 0x9f, 0x19, 0xbf, 0xf0, 0x26, - 0x4f, 0xf1, 0xa3, 0xfe, 0x15, 0x5f, 0x84, 0xff, 00, 0xe7, - 0xc6, 0x6f, 0xfc, 0x9, 0x93, 0xfc, 0x68, 0x2, 0xb7, 0x8a, - 0xbe, 0x1c, 0xe8, 0xde, 0x21, 0xb9, 0x92, 0xfa, 0xda, 0xed, - 0x6c, 0x2f, 0x9f, 0x97, 0x64, 0xc3, 0x24, 0x87, 0xd5, 0x97, - 0x3d, 0x7d, 0xc1, 0xae, 0x2a, 0x4f, 0x84, 0x5a, 0xc2, 0xbe, - 0x23, 0xd5, 0x34, 0xb7, 0x5f, 0x53, 0x23, 0x29, 0xfc, 0xb0, - 0x6b, 0xbe, 0xff, 00, 0x85, 0x57, 0xe1, 0x3f, 0xf9, 0xf1, - 0x9b, 0xff, 00, 0x2, 0x64, 0xff, 00, 0x1a, 0x3f, 0xe1, - 0x55, 0xf8, 0x4f, 0xfe, 0x7c, 0x66, 0xff, 00, 0xc0, 0x99, - 0x3f, 0xc6, 0x80, 0x39, 0x3d, 0x2b, 0xe0, 0xfa, 0x79, 0xca, - 0xfa, 0xbe, 0xb5, 0x9, 0x8c, 0x1e, 0x62, 0xb5, 0xea, 0xde, - 0xdb, 0x9b, 0xa7, 0xe5, 0x5e, 0xa5, 0xa7, 0x5a, 0xe9, 0xda, - 0x4d, 0x84, 0x56, 0x56, 0x2b, 0xc, 0x16, 0xf1, 0xc, 0x2a, - 0x2b, 0xf, 0xf2, 0x4f, 0xbd, 0x73, 0x3f, 0xf0, 0xaa, 0xfc, - 0x27, 0xff, 00, 0x3e, 0x33, 0x7f, 0xe0, 0x4c, 0x9f, 0xe3, - 0x47, 0xfc, 0x2a, 0xbf, 0x9, 0xff, 00, 0xcf, 0x8c, 0xdf, - 0xf8, 0x13, 0x27, 0xf8, 0xd0, 0x7, 0x61, 0xe7, 0xc3, 0xff, - 00, 0x3d, 0x63, 0xff, 00, 0xbe, 0x85, 0x79, 0x5d, 0xf7, - 0xc2, 0x1b, 0x6b, 0x8d, 0x42, 0xe6, 0x7b, 0x7d, 0x76, 0x38, - 0x61, 0x96, 0x56, 0x74, 0x8b, 0xc9, 0x7, 0x60, 0x27, 0x38, - 0xce, 0xee, 0x71, 0x5d, 0x27, 0xfc, 0x2a, 0xbf, 0x9, 0xff, - 00, 0xcf, 0x8c, 0xdf, 0xf8, 0x13, 0x27, 0xf8, 0xd1, 0xff, - 00, 0xa, 0xaf, 0xc2, 0x7f, 0xf3, 0xe3, 0x37, 0xfe, 0x4, - 0xc9, 0xfe, 0x34, 0x1, 0xab, 0xe1, 0x4d, 0x12, 0xd3, 0xc2, - 0xfa, 0x4, 0x5a, 0x6c, 0x77, 0x51, 0xcc, 0xca, 0xcc, 0xf2, - 0x4b, 0xc2, 0xef, 0x62, 0x7a, 0xe3, 0x3c, 0x71, 0x81, 0xf8, - 0x56, 0xdf, 0x9f, 0xf, 0xfc, 0xf5, 0x4f, 0xfb, 0xe8, 0x57, - 0x1f, 0xff, 00, 0xa, 0xaf, 0xc2, 0x7f, 0xf3, 0xe3, 0x37, - 0xfe, 0x4, 0xc9, 0xfe, 0x34, 0xe4, 0xf8, 0x5b, 0xe1, 0x44, - 0x91, 0x5d, 0x6c, 0xa6, 0xdc, 0xac, 0x18, 0x7f, 0xa4, 0xbf, - 0x51, 0xcf, 0xad, 00, 0x76, 0x55, 0xe2, 0xde, 0x2e, 0xff, - 00, 0x91, 0xb3, 0x52, 0xff, 00, 0xae, 0xa3, 0xff, 00, - 0x41, 0x15, 0xed, 0x35, 0xe2, 0xbe, 0x2d, 0x21, 0xbc, 0x59, - 0xa9, 0x10, 0x41, 0x1e, 0x68, 0x1c, 0x7f, 0xba, 0x2b, 0xd9, - 0xc9, 0x3f, 0x8d, 0x2f, 0x4f, 0xd5, 0x1e, 0x66, 0x69, 0xfc, - 0x25, 0xea, 0x63, 0x51, 0x45, 0x15, 0xf4, 0xe7, 0x86, 0x15, - 0xea, 0x7f, 0xd, 0xff, 00, 0xe4, 0x5c, 0x9f, 0xfe, 0xbe, - 0x9b, 0xff, 00, 0x41, 0x4a, 0xf2, 0xca, 0xf5, 0x3f, 0x86, - 0xff, 00, 0xf2, 0x2e, 0x4f, 0xff, 00, 0x5f, 0x4d, 0xff, - 00, 0xa0, 0xa5, 0x79, 0x79, 0xc7, 0xfb, 0xb3, 0xf5, 0x47, - 0x7e, 0x5b, 0xfc, 0x7f, 0x93, 0x3b, 0xa, 0xce, 0xd5, 0x7f, - 0xe5, 0x8f, 0xd5, 0xbf, 0x95, 0x68, 0xd6, 0x76, 0xab, 0xff, - 00, 0x2c, 0x3e, 0xad, 0xfc, 0xab, 0xe4, 0xcf, 0xa0, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x64, 0x78, 0xaf, 0xc4, - 0x30, 0x78, 0x6f, 0x42, 0x9e, 0xf6, 0x56, 0x1b, 0x80, 0xc2, - 0x2f, 0x72, 0x6b, 0x5e, 0xdf, 0x8b, 0x75, 0xfa, 0x57, 0xcf, - 0xbf, 0x17, 0x7c, 0x4c, 0xda, 0x9f, 0x89, 0x7f, 0xb3, 0x23, - 0x7f, 0xdc, 0x5a, 0x70, 0x70, 0x78, 0x63, 0x4d, 0x2b, 0xb2, - 0x66, 0xec, 0x8e, 0x56, 0xf7, 0x53, 0xb8, 0xd5, 0xb5, 0x19, - 0xaf, 0xae, 0x9c, 0xb4, 0x92, 0x36, 0x79, 0xad, 0x1d, 0x2a, - 0xd6, 0xe7, 0x50, 0x9d, 0x61, 0xb4, 0x85, 0xa5, 0x72, 0x71, - 0xf2, 0x8c, 0xe2, 0xa4, 0xf0, 0x77, 0x83, 0xb5, 0xf, 0x14, - 0xdd, 0xa8, 0x89, 0xc, 0x76, 0xaa, 0x7e, 0x79, 0x48, 0xe3, - 0x1e, 0xd5, 0xf4, 0xf, 0x87, 0xbc, 0x2f, 0xa7, 0x78, 0x76, - 0xd1, 0x62, 0xb5, 0x88, 0x19, 00, 0xf9, 0xa4, 0x23, 0x93, - 0x5a, 0xb9, 0xa4, 0x71, 0xc6, 0x8b, 0x9b, 0xbb, 0x39, 0x2f, - 0xe, 0x7c, 0x39, 0x68, 0xd1, 0x27, 0xd5, 0x1f, 0xe6, 0xeb, - 0xe5, 0xaf, 0x4f, 0xc6, 0xbb, 0xfb, 0x4d, 0x3e, 0xd6, 0xc6, - 0x3f, 0x2e, 0xde, 0x15, 0x45, 0xf6, 0x15, 0x66, 0x8a, 0xc9, - 0xc9, 0xb3, 0xae, 0x34, 0xe3, 0x15, 0xa0, 0x50, 0x48, 0x3, - 0x27, 0xa5, 0x19, 0xc0, 0xc9, 0xae, 0xb, 0xc6, 0xde, 0x32, - 0x5b, 0x3b, 0x77, 0xb0, 0xd3, 0xdf, 0x74, 0xec, 0x30, 0xce, - 0x3f, 0x86, 0x84, 0xae, 0x39, 0x49, 0x45, 0x5d, 0x9c, 0x27, - 0xc5, 0x8d, 0x79, 0x35, 0x7d, 0x5d, 0x2c, 0x2d, 0xdb, 0x31, - 0x5b, 0x64, 0x31, 0x7, 0x82, 0x6b, 0x17, 0xc1, 0x7e, 0x32, - 0xbd, 0xf0, 0xce, 0xa3, 0x1c, 0x52, 0x48, 0xd2, 0x58, 0xc8, - 0x70, 0xc8, 0xc7, 0xee, 0xfb, 0xd6, 0x75, 0xc4, 0x2d, 0x23, - 0xb3, 0xb9, 0x25, 0x98, 0xe4, 0x93, 0x54, 0x65, 0xb6, 0xc8, - 0x20, 0x8a, 0xd9, 0x45, 0x5a, 0xc7, 0xb, 0xa8, 0xf9, 0xae, - 0x7d, 0x3f, 0x6d, 0x7b, 0xd, 0xdd, 0xb4, 0x77, 0x10, 0x36, - 0xe8, 0xe4, 0x5d, 0xca, 0x69, 0xed, 0x30, 0xc7, 0x5a, 0xf3, - 0x2f, 0x86, 0xba, 0xdb, 0xcb, 0xa5, 0xbe, 0x9f, 0x33, 0x92, - 0xf1, 0x1c, 0xae, 0x7b, 0xa, 0xed, 0x9a, 0xeb, 0x8e, 0xb5, - 0x16, 0x3a, 0x63, 0x3b, 0xab, 0x97, 0x66, 0xb8, 0xf7, 0xad, - 0xb, 0x2b, 0x95, 0xb8, 0x84, 0x73, 0xf3, 0xe, 0xa2, 0xb9, - 0x89, 0x6e, 0xb8, 0xeb, 0x55, 0xa1, 0xd5, 0x9e, 0xc6, 0xe0, - 0x48, 0xa7, 0x23, 0xb8, 0xf5, 0xa1, 0xc4, 0x6a, 0x76, 0x67, - 0x73, 0x48, 0x40, 0x23, 0x4, 0x3, 0xf5, 0xaa, 0xb6, 0x1a, - 0x8c, 0x1a, 0x84, 0x2, 0x48, 0x5c, 0x13, 0xdd, 0x7b, 0x8a, - 0xb7, 0x59, 0x9a, 0xa7, 0x73, 0x22, 0xff, 00, 0xc3, 0x9a, - 0x7d, 0xf8, 0x24, 0xc4, 0x12, 0x43, 0xfc, 0x6a, 0x39, 0xae, - 0x7e, 0x7f, 0xf, 0x5c, 0x69, 0xef, 0x94, 0x1e, 0x64, 0x5d, - 0x88, 0xeb, 0x5d, 0xbd, 0x4, 0x2, 0x30, 0x7a, 0x53, 0xb8, - 0x9c, 0x53, 0x38, 0xeb, 0x54, 0xe8, 0x31, 0x5b, 0xfa, 0x7c, - 0x85, 0x3e, 0x43, 0xf7, 0x4d, 0x3e, 0xe3, 0x4d, 0x8d, 0x9b, - 0xcc, 0x88, 0x6d, 0x6f, 0x4a, 0x6c, 0x11, 0x95, 0x38, 0x23, - 0x4, 0x53, 0xdc, 0x49, 0x58, 0xd1, 0xa8, 0x2e, 0x7e, 0xe5, - 0x4c, 0xbf, 0x74, 0x54, 0x37, 0x3f, 0x72, 0xa4, 0xb2, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, - 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, - 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, - 0x97, 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, - 0x5c, 0xff, 00, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, - 00, 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, - 0x2b, 0x9e, 0xd7, 0xfc, 0x75, 0xe1, 0x9f, 0xb, 0xdf, 0x5b, - 0x59, 0x6b, 0x5a, 0xbc, 0x36, 0x97, 0x37, 0x3c, 0xc7, 0x1b, - 0x2b, 0x31, 0xc6, 0x71, 0x96, 0xda, 0xe, 0xd1, 0x9e, 0xed, - 0x81, 0xc1, 0xf4, 0x34, 0x1, 0xd0, 0xd1, 0x48, 0xac, 0xae, - 0x81, 0xd1, 0x83, 0x2b, 0xc, 0x82, 0xe, 0x41, 0x14, 0xb4, - 00, 0x51, 0x45, 0x67, 0x6b, 0xfa, 0xb4, 0x7a, 0xf, 0x87, - 0xb5, 0x1d, 0x5a, 0x45, 0xdc, 0x96, 0x76, 0xef, 0x36, 0xdf, - 0xef, 0x6d, 0x52, 0x40, 0xfc, 0x4f, 0x14, 0x9b, 0xb2, 0xbb, - 0x1a, 0x57, 0x76, 0x24, 0xd4, 0xb5, 0x9d, 0x2f, 0x46, 0x89, - 0x25, 0xd5, 0x75, 0x2b, 0x3b, 0x18, 0xdd, 0xb6, 0xa3, 0xdd, - 0x4e, 0xb1, 0x6, 0x3d, 0x70, 0xb, 0x11, 0x93, 0x4e, 0xd3, - 0xb5, 0x5d, 0x3b, 0x57, 0xb6, 0x37, 0x3a, 0x65, 0xfd, 0xad, - 0xec, 0x1, 0x8a, 0x99, 0x6d, 0xa6, 0x59, 0x17, 0x70, 0xed, - 0x95, 0x24, 0x67, 0x91, 0x5e, 0x7b, 0xe0, 0x3f, 0x5, 0x69, - 0xfa, 0xe6, 0x8d, 0xf, 0x8a, 0xfc, 0x57, 0x67, 0x6, 0xaf, - 0xad, 0x6a, 0xd1, 0xf9, 0xec, 0xd7, 0x88, 0x25, 0x8e, 0x18, - 0xdb, 0x94, 0x44, 0x46, 0xca, 0xa8, 0x3, 0x1d, 0xb3, 0xc9, - 0xe7, 0x15, 0x76, 0xff, 00, 0xe1, 0xd9, 0xd3, 0x3c, 0x53, - 0xa6, 0xf8, 0x83, 0xc1, 0x69, 0x67, 0xa5, 0x4e, 0x92, 0x8, - 0xf5, 0xb, 0x40, 0x4c, 0x50, 0x5c, 0xdb, 0xf7, 0x1b, 0x51, - 0x48, 0xc, 0x3b, 0x70, 0x6, 0x79, 0x3c, 0x8a, 0xab, 0x34, - 0xed, 0x2f, 0xf8, 0x62, 0x6f, 0x75, 0x74, 0x7a, 0x5, 0x15, - 0xca, 0x78, 0xa7, 0xc6, 0xa3, 0x42, 0xd4, 0x6d, 0xb4, 0x6d, - 0x33, 0x4a, 0x9f, 0x59, 0xd7, 0xae, 0x93, 0xcc, 0x8a, 0xc6, - 0x17, 0x11, 0x85, 0x8c, 0x1c, 0x17, 0x92, 0x43, 0xc2, 0x2f, - 0x5e, 0x4f, 0x7f, 0x4e, 0xb5, 0x5f, 0x42, 0xf1, 0xdd, 0xc5, - 0xd6, 0xbd, 0x1e, 0x83, 0xe2, 0x4d, 0x2, 0x7d, 0x3, 0x56, - 0x9d, 0x1a, 0x4b, 0x58, 0xe4, 0x9d, 0x27, 0x8a, 0xe1, 0x40, - 0x19, 0xb, 0x22, 0xe0, 0x17, 0x1c, 0xe5, 0x71, 0xc0, 0xef, - 0xce, 0x29, 0x2d, 0x76, 0x1b, 0xd3, 0x73, 0xb3, 0xa6, 0x99, - 0x10, 0x48, 0xb1, 0x97, 0x50, 0xec, 0x9, 0x55, 0x27, 0x92, - 0x6, 0x32, 0x40, 0xfc, 0x47, 0xe7, 0x5e, 0x6f, 0xf, 0xc5, - 0xd, 0x5f, 0x54, 0xd4, 0x35, 0x6d, 0x3f, 0x41, 0xf0, 0x64, - 0xfa, 0x9d, 0xd6, 0x99, 0x79, 0x24, 0x13, 0x81, 0x7c, 0x91, - 0x20, 0x45, 0x38, 0x57, 0xdc, 0xcb, 0xcb, 0x31, 0xd, 0xf2, - 00, 0x48, 0xc7, 0x5a, 0xe6, 0xed, 0xb5, 0x8f, 0x12, 0x8f, - 0x8f, 0xf7, 0x32, 0xff, 00, 0xc2, 0x28, 0xd, 0xcb, 0x69, - 0xab, 0x3, 0xc0, 0x35, 0x18, 0xf0, 0xb6, 0xfe, 0x6a, 0xff, - 00, 0xa4, 0x6e, 0xc7, 0x3f, 0xee, 0x75, 0xe6, 0x88, 0xea, - 0xd7, 0x9f, 0xf9, 0x5f, 0xfa, 0xff, 00, 0x80, 0xf, 0x4b, - 0xf9, 0x7f, 0x99, 0xec, 0xb0, 0xea, 0x36, 0x37, 0x17, 0xd3, - 0xd8, 0xc3, 0x7b, 0x6f, 0x25, 0xdd, 0xb8, 0x6, 0x68, 0x12, - 0x55, 0x32, 0x44, 0xf, 0x4d, 0xca, 0xe, 0x46, 0x7b, 0x66, - 0xa9, 0x5c, 0x78, 0xa7, 0xc3, 0xd6, 0x97, 0xd2, 0x58, 0xdc, - 0xeb, 0xda, 0x5c, 0x37, 0x71, 0x82, 0x64, 0x82, 0x4b, 0xc8, - 0xd6, 0x44, 00, 0x6e, 0x39, 0x52, 0x72, 0x38, 0xe7, 0xe9, - 0xcd, 0x73, 0x31, 0xf8, 0x97, 0xfe, 0x2a, 0xff, 00, 0x16, - 0xd8, 0xe8, 0xfe, 0x15, 0xb7, 0x9f, 0x57, 0xd3, 0xa1, 0x81, - 0x9a, 0x54, 0x9d, 0x22, 0x92, 0xfb, 0x70, 0x18, 0x56, 0x72, - 0xbc, 0x6d, 0x1d, 0x32, 0x4f, 0x4e, 0xd5, 0xe7, 0x3f, 0xe, - 0x66, 0xf2, 0xfc, 0x3d, 0xe2, 0x1d, 0x73, 0x54, 0xf0, 0x2d, - 0x8d, 0xec, 0x51, 0x3d, 0xed, 0xd4, 0xba, 0x9d, 0xc4, 0xd1, - 0x3b, 0xb3, 0x81, 0xf3, 0x41, 0x82, 0xa5, 0x80, 0x20, 0x91, - 0xbb, 0xa7, 0x27, 0x8e, 0x69, 0x27, 0xd7, 0xca, 0xe3, 0xb6, - 0xb6, 0xf3, 0xb7, 0xe1, 0xfd, 0x7f, 0x57, 0x3d, 0xf6, 0xda, - 0xea, 0xde, 0xf6, 0xda, 0x3b, 0x9b, 0x59, 0xe2, 0x9e, 0xde, - 0x55, 0xd, 0x1c, 0xb1, 0x38, 0x65, 0x70, 0x7a, 0x10, 0x47, - 0x4, 0x54, 0xb5, 0xc5, 0xc1, 0xe3, 0x7d, 0x23, 0x47, 0xf8, - 0x73, 0xa5, 0x6b, 0xf2, 0xd8, 0x1b, 0x3b, 0x7b, 0xa8, 0xa2, - 0x5b, 0x5d, 0x3a, 0xcd, 0x3, 0xb1, 0x77, 0x1f, 0x2c, 0x51, - 0x80, 0x14, 0x13, 0xf8, 0xa, 0xcf, 0x1f, 0x11, 0xf5, 0x9d, - 0x2d, 0xed, 0xee, 0x3c, 0x59, 0xe0, 0xbb, 0xad, 0x13, 0x4a, - 0x9d, 0x96, 0x31, 0x7c, 0xb7, 0xb1, 0xdc, 0xac, 0x4c, 0xc4, - 0x5, 0xf3, 0x55, 0x40, 0x28, 0xbc, 0xf5, 0x3d, 0xe, 0x6, - 0x2a, 0xad, 0xef, 0x34, 0x4a, 0x7a, 0x5c, 0xf4, 0x4a, 0xad, - 0x79, 0xa8, 0xd8, 0xe9, 0xde, 0x4f, 0xdb, 0x6f, 0x6d, 0xed, - 0xbc, 0xf9, 0x4, 0x50, 0xf9, 0xf2, 0xaa, 0x79, 0x8e, 0x7a, - 0x2a, 0xe4, 0xf2, 0x4f, 0xa0, 0xe6, 0xb0, 0x3c, 0x5d, 0xe3, - 0x5b, 0x7f, 0xb, 0xc7, 0x65, 0x4, 0x36, 0x73, 0x6a, 0x7a, - 0xae, 0xa2, 0xe6, 0x3b, 0x1b, 0x1b, 0x72, 0x3, 0x4c, 0x40, - 0xc9, 0x25, 0x8f, 0xa, 0xa3, 0x8c, 0xb7, 0x38, 0xcf, 0x4e, - 0xb8, 0xf3, 0x2f, 0x1d, 0xf8, 0xab, 0x52, 0xd5, 0x35, 0x5f, - 0x9, 0x69, 0x5a, 0xef, 0x87, 0x2e, 0x34, 0x3d, 0x49, 0x35, - 0xcb, 0x7b, 0x88, 0xe3, 0x69, 0xd2, 0xe2, 0x29, 0x62, 0xce, - 0xd2, 0x56, 0x45, 0xe3, 0x70, 0x24, 0x65, 0x7b, 0x64, 0x1e, - 0xf4, 0x47, 0xde, 0x92, 0x5e, 0x76, 0x1b, 0xd1, 0x5f, 0xc8, - 0xf7, 0x5a, 0xad, 0xe, 0xa3, 0x63, 0x71, 0x7d, 0x3d, 0x8c, - 0x37, 0xb6, 0xf2, 0x5d, 0xdb, 0x80, 0x66, 0x81, 0x25, 0x53, - 0x24, 0x40, 0xf4, 0xdc, 0xa0, 0xe4, 0x67, 0xb6, 0x6a, 0xcd, - 0x78, 0xac, 0x5e, 0x23, 0xb9, 0xd0, 0xbe, 0x35, 0x78, 0xc6, - 0xd, 0x37, 0x46, 0xb9, 0xd5, 0xf5, 0x3b, 0xc8, 0xed, 0x56, - 0xde, 0xd6, 0x17, 0x11, 0xae, 0x16, 0x30, 0x59, 0x9e, 0x46, - 0xe1, 0x14, 0x2, 0x39, 0x3d, 0xc8, 0x1d, 0xea, 0x57, 0xc5, - 0x6f, 0x51, 0xdb, 0x46, 0xcf, 0x6a, 0xa2, 0xb8, 0xef, 0xc, - 0xf8, 0xe9, 0xf5, 0x9d, 0x62, 0xeb, 0x40, 0xd5, 0xb4, 0x69, - 0xf4, 0x5d, 0x7e, 0xde, 0x2f, 0x3b, 0xec, 0x73, 0x4a, 0xb2, - 0x24, 0xb1, 0x9e, 0x8c, 0x92, 0x28, 0xc3, 0xe, 0x99, 0xe3, - 0x8f, 0x7c, 0x1c, 0x5a, 0xf0, 0x3f, 0x8b, 0xff, 00, 0xe1, - 0x30, 0xd2, 0xae, 0xae, 0x25, 0xb0, 0x3a, 0x7d, 0xe5, 0x9d, - 0xd4, 0x96, 0x97, 0x36, 0x8d, 0x2f, 0x98, 0x63, 0x75, 0xc7, - 0x7c, 0xc, 0xf0, 0x7d, 0x3d, 0x69, 0xdb, 0xfc, 0xc4, 0x74, - 0xf5, 0x9b, 0xa9, 0xf8, 0x87, 0x44, 0xd1, 0x64, 0x48, 0xf5, - 0x5d, 0x63, 0x4f, 0xb0, 0x79, 0x6, 0xe4, 0x5b, 0xab, 0x94, - 0x88, 0xb0, 0xf5, 0x1, 0x88, 0xcd, 0x66, 0xe8, 0x5e, 0x2c, - 0xfe, 0xde, 0xf1, 0x36, 0xbb, 0xa5, 0xdb, 0xd8, 0x95, 0xb4, - 0xd2, 0x64, 0x48, 0x1a, 0xf0, 0xc9, 0x91, 0x2c, 0xa4, 0x65, - 0x90, 0x2e, 0x38, 0xdb, 0xd0, 0x9c, 0xfe, 0x15, 0xa5, 0xa9, - 0xf8, 0x7b, 0x44, 0xd6, 0xa4, 0x49, 0x35, 0x5d, 0x1f, 0x4f, - 0xbf, 0x78, 0xc6, 0xd4, 0x6b, 0xab, 0x64, 0x94, 0xa8, 0xf4, - 0x5, 0x81, 0xc5, 0x2e, 0xcd, 0x7, 0x74, 0x51, 0xff, 00, - 0x84, 0xef, 0xc1, 0xff, 00, 0xf4, 0x35, 0xe8, 0x7f, 0xf8, - 0x31, 0x87, 0xff, 00, 0x8a, 0xad, 0x8, 0xf5, 0xed, 0x1a, - 0x6d, 0x29, 0xf5, 0x58, 0xb5, 0x6b, 0x7, 0xd3, 0x93, 0x3b, - 0xae, 0xd6, 0xe5, 0xc, 0x4b, 0x83, 0x83, 0x97, 0xce, 0x7, - 0x3e, 0xf5, 0xe5, 0xbe, 0x11, 0xf0, 0xaf, 0x87, 0x6e, 0x7e, - 0x2b, 0xf8, 0xe6, 0xce, 0x7d, 0x7, 0x4b, 0x96, 0xd6, 0xd8, - 0xda, 0xf9, 0x10, 0x49, 0x67, 0x1b, 0x24, 0x59, 0x8c, 0x93, - 0xb5, 0x48, 0xc2, 0xe7, 0xbe, 0x2b, 0xa3, 0xf8, 0x99, 0xa6, - 0xd8, 0x69, 0x3f, 0x8, 0x75, 0xeb, 0x5d, 0x3a, 0xca, 0xda, - 0xce, 0xdc, 0x42, 0x18, 0x45, 0x6f, 0x12, 0xc6, 0x80, 0x97, - 0x5c, 0x9c, 0x28, 0x2, 0x89, 0x3e, 0x58, 0x73, 0x79, 0x5c, - 0x69, 0x5e, 0x7c, 0xbe, 0x76, 0x3b, 0xd4, 0x74, 0x96, 0x35, - 0x92, 0x36, 0x57, 0x46, 0x1, 0x95, 0x94, 0xe4, 0x10, 0x7a, - 0x10, 0x6a, 0xb3, 0x6a, 0x9a, 0x7a, 0x5e, 0x4b, 0x66, 0xd7, - 0xd6, 0xcb, 0x75, 0x14, 0x5e, 0x74, 0x90, 0x99, 0x94, 0x3a, - 0x47, 0xfd, 0xf2, 0xb9, 0xc8, 0x5f, 0x7e, 0x94, 0xcd, 0x13, - 0xfe, 0x40, 0x3a, 0x77, 0xfd, 0x7a, 0xc5, 0xff, 00, 0xa0, - 0x8a, 0xe1, 0xed, 0x14, 0x37, 0xc7, 0xed, 0x55, 0x58, 0x2, - 0xe, 0x83, 0x18, 0x20, 0xf7, 0xfd, 0xe5, 0x54, 0x95, 0xa5, - 0xca, 0xbc, 0xff, 00, 0x4, 0xdf, 0xe8, 0x42, 0x95, 0xe3, - 0xcd, 0xe9, 0xf8, 0xb4, 0x77, 0xf6, 0x77, 0xb6, 0x9a, 0x8d, - 0xa4, 0x77, 0x76, 0x37, 0x50, 0xdd, 0x5b, 0x48, 0x32, 0x93, - 0x41, 0x20, 0x74, 0x6e, 0x71, 0xc3, 0xe, 0xd, 0x36, 0xfb, - 0x51, 0xb1, 0xd3, 0x21, 0x59, 0xaf, 0xef, 0x2d, 0xed, 0x22, - 0x67, 0x8, 0x1e, 0xe2, 0x55, 0x8d, 0x4b, 0x1e, 0x83, 0x24, - 0xf5, 0x3e, 0x95, 0xc0, 0x7c, 0x2e, 0x56, 0xd0, 0x6f, 0xfc, - 0x47, 0xe0, 0xb9, 0x8f, 0x1a, 0x5d, 0xe1, 0x9e, 0xd0, 0x7a, - 0xdb, 0x4b, 0xf3, 0x2e, 0x3e, 0x87, 0x39, 0xf7, 0x34, 0xff, - 00, 0x15, 0x1, 0xe2, 0x4f, 0x8a, 0x5e, 0x1b, 0xf0, 0xee, - 0x3, 0xda, 0xe9, 0xaa, 0xda, 0xbd, 0xe2, 0x91, 0x91, 0x91, - 0xf2, 0xc4, 0xf, 0xfc, 0xb, 0x26, 0x96, 0xed, 0x5b, 0xaf, - 0xfc, 0x3b, 0xfb, 0xb5, 0x29, 0xe8, 0x9d, 0xfa, 0x7f, 0x4b, - 0xef, 0xd0, 0xf4, 0x5a, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0x30, 0xbc, 0x65, 0xff, 00, 0x22, 0x9d, 0xff, 00, - 0xfb, 0xab, 0xff, 00, 0xa1, 0xad, 0x78, 0xcd, 0x7b, 0x57, - 0x8a, 0xe0, 0x96, 0xe7, 0xc3, 0x17, 0xd1, 0x41, 0x1b, 0x49, - 0x21, 0x40, 0x42, 0xa8, 0xc9, 0x38, 0x60, 0x4f, 0xe8, 0x2b, - 0xc5, 0x6b, 0xe9, 0xf2, 0x46, 0xbd, 0x8c, 0x97, 0x9f, 0xe8, - 0x8f, 0xb, 0x34, 0x5f, 0xbd, 0x5e, 0x81, 0x45, 0x14, 0x57, - 0xb2, 0x79, 0xa1, 0x5d, 0xef, 0x82, 0xbc, 0x5f, 0xe5, 0x18, - 0xf4, 0x9d, 0x4a, 0x4f, 0x93, 0x85, 0xb7, 0x9d, 0x8f, 0x4f, - 0x44, 0x63, 0xe9, 0xe8, 0x7f, 0xa, 0xe0, 0xa8, 0xeb, 0x5c, - 0xf8, 0x9c, 0x34, 0x31, 0x14, 0xf9, 0x27, 0xff, 00, 0xc, - 0x6b, 0x42, 0xb4, 0xa8, 0xcf, 0x9a, 0x27, 0xd0, 0x74, 0x57, - 0x3, 0xe0, 0xaf, 0x17, 0xf9, 0xbe, 0x5e, 0x93, 0xa9, 0x49, - 0xfb, 0xcf, 0xbb, 0x4, 0xcc, 0x7e, 0xf7, 0xfb, 0x24, 0xfa, - 0xfa, 0x1e, 0xf5, 0xdf, 0x57, 0xc7, 0x62, 0x30, 0xf3, 0xc3, - 0xd4, 0x70, 0x9f, 0xfc, 0x39, 0xf4, 0xb4, 0x6b, 0x46, 0xb4, - 0x39, 0xa2, 0x15, 0xcf, 0x78, 0xb7, 0xc5, 0xd6, 0x5e, 0x11, - 0xd3, 0xe3, 0xb8, 0xb9, 0x8d, 0xe7, 0x9a, 0x66, 0xdb, 0xc, - 0x11, 0x9c, 0x17, 0x23, 0xa9, 0xcf, 0x60, 0x3d, 0x7d, 0xc5, - 0x74, 0x35, 0xe7, 0xbf, 0x13, 0xb4, 0x8d, 0x52, 0x57, 0xd2, - 0x75, 0xcd, 0x2a, 0x3, 0x71, 0x2e, 0x9b, 0x21, 0x76, 0x88, - 0x26, 0xf3, 0x8c, 0x82, 0x1b, 0x6f, 0x70, 0xa, 0xf3, 0xf5, - 0xac, 0xd, 0x47, 0x68, 0x3f, 0x14, 0x6d, 0xf5, 0x3d, 0x66, - 0x1d, 0x33, 0x51, 0xd2, 0xae, 0x34, 0xd9, 0xae, 0x8, 0x58, - 0x59, 0xdb, 0x21, 0x98, 0xf4, 0x7, 0x20, 0x11, 0x9e, 0xc7, - 0xd6, 0xac, 0x5b, 0xfc, 0x46, 0x4b, 0x9b, 0xdd, 0x56, 0xda, - 0x3d, 0x22, 0xe1, 0x9f, 0x4f, 0x99, 0x21, 0x3b, 0x24, 0xc, - 0x5f, 0x74, 0xbe, 0x5e, 0x40, 0x3, 0x80, 0x3a, 0xfd, 0x2b, - 0x9b, 0xb1, 0xf1, 0x96, 0x83, 0xe3, 0x2d, 0x67, 0x4c, 0xb7, - 0xf1, 0x1e, 0x98, 0xf6, 0x9a, 0x85, 0xbc, 0xa0, 0x5b, 0xcd, - 0x1c, 0xa4, 0x27, 0x98, 0x48, 0x20, 0x37, 0x42, 0x39, 0x3, - 00, 0xe4, 0x66, 0xa7, 0xf8, 0x71, 0x93, 0xf1, 0xf, 0xc5, - 0x79, 0xeb, 0xe6, 0x3f, 0xfe, 0x8d, 0x6a, 00, 0xde, 0xb8, - 0xf8, 0x8a, 0x96, 0xd7, 0x7a, 0x5d, 0xbc, 0x9a, 0x45, 0xc2, - 0xb5, 0xfd, 0xcc, 0x90, 0xd, 0xee, 0x14, 0xa6, 0xd9, 0x7c, - 0xbd, 0xd8, 0x23, 0x90, 0x73, 0x9a, 0xc9, 0xb9, 0xf8, 0xc1, - 0x15, 0xbd, 0xed, 0xcd, 0xb8, 0xd0, 0x6e, 0x64, 0xf2, 0x25, - 0x68, 0xd9, 0x92, 0x50, 0x73, 0xb4, 0x91, 0x9e, 0x9c, 0x74, - 0xa8, 0x7e, 0x24, 0xff, 00, 0xc8, 0xf9, 0xe1, 0x2f, 0xfa, - 0xec, 0xbf, 0xfa, 0x35, 0x2a, 0xcf, 0xc2, 0xbf, 0xf9, 0x9, - 0xf8, 0xb3, 0xfe, 0xbf, 0xbf, 0xf6, 0x69, 0x28, 0x3, 0xa9, - 0xf0, 0xa7, 0x8c, 0x74, 0xef, 0x16, 0xda, 0x49, 0x25, 0xa0, - 0x78, 0xa7, 0x84, 0x81, 0x2c, 0x12, 0x63, 0x72, 0xe7, 0xa1, - 0xe3, 0xa8, 0x3e, 0xb5, 0xd0, 0xd7, 0x97, 0xe9, 0xf1, 0x26, - 0x95, 0xf1, 0xd2, 0xea, 0xda, 0xd1, 0x4, 0x70, 0xdd, 0xda, - 0x97, 0x74, 0x5e, 0x6, 0x4a, 0x86, 0x3c, 0x7d, 0x57, 0x3f, - 0x8d, 0x7a, 0x85, 00, 0x14, 0x51, 0x5c, 0x9f, 0x8c, 0x3c, - 0x58, 0xba, 0x34, 0x26, 0xce, 0xcd, 0x83, 0x6a, 0x12, 0xe, - 0xbd, 0x44, 0x40, 0xf7, 0x3e, 0xfe, 0x82, 0xb5, 0xa3, 0x46, - 0x75, 0xa6, 0xa1, 0x5, 0xab, 0x33, 0xab, 0x56, 0x34, 0xa2, - 0xe5, 0x2d, 0x88, 0x7c, 0x65, 0xe2, 0xe1, 0xa6, 0x23, 0x69, - 0xda, 0x7b, 0x83, 0x7a, 0xc3, 0xf7, 0x92, 0xf, 0xf9, 0x62, - 0xf, 0xfe, 0xcd, 0xfc, 0xab, 0xcb, 0x89, 0x24, 0x92, 0x49, - 0x24, 0xf2, 0x49, 0xef, 0x4a, 0xcc, 0xd2, 0x3b, 0x3b, 0xb1, - 0x67, 0x62, 0x4b, 0x33, 0x1c, 0x92, 0x7d, 0x4d, 0x25, 0x7d, - 0x8e, 0x13, 0x9, 0xc, 0x34, 0x39, 0x63, 0xbf, 0x57, 0xdc, - 0xf9, 0xbc, 0x46, 0x22, 0x55, 0xe7, 0xcc, 0xf6, 0xe8, 0x14, - 0x51, 0x45, 0x75, 0x18, 0x5, 0x7a, 0x9f, 0xc3, 0x7f, 0xf9, - 0x17, 0x27, 0xff, 00, 0xaf, 0xa6, 0xff, 00, 0xd0, 0x52, - 0xbc, 0xb2, 0xbd, 0x5f, 0xe1, 0xdc, 0x12, 0xc3, 0xe1, 0xa6, - 0x69, 0x23, 0x64, 0x12, 0xdc, 0x33, 0xa6, 0x47, 0xde, 0x5d, - 0xaa, 0x32, 0x3d, 0xb2, 0xd, 0x79, 0x59, 0xc3, 0xff, 00, - 0x66, 0xf9, 0xa3, 0xbf, 0x2d, 0x5f, 0xbf, 0xf9, 0x1d, 0x65, - 0x67, 0x6a, 0xbf, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0xb4, 0x6b, - 0x3b, 0x54, 0xff, 00, 0x96, 0x1f, 0x56, 0xfe, 0x55, 0xf2, - 0x87, 0xd0, 0x12, 0xc8, 0xfe, 0x56, 0x95, 0x2c, 0x9f, 0xdd, - 0x89, 0x8f, 0xe9, 0x5f, 0x35, 0xf8, 0x57, 0xc3, 0x37, 0x9e, - 0x3b, 0xf1, 0x7d, 0xd4, 0xaf, 0xb8, 0x5a, 0xc7, 0x33, 0x79, - 0xd2, 0x1f, 0x63, 0xd2, 0xbe, 0x96, 0x68, 0xbc, 0xfd, 0x36, - 0x48, 0xbf, 0xbf, 0x19, 0x5f, 0xcc, 0x56, 0x2f, 0x82, 0xfc, - 0x35, 0x17, 0x86, 0xb4, 0x63, 0x2, 0xa0, 0x13, 0x49, 0x23, - 0x3c, 0x8c, 0x3b, 0xe4, 0xd3, 0x4e, 0xc4, 0xca, 0x37, 0x35, - 0xf4, 0xbd, 0x2a, 0xd3, 0x47, 0xb0, 0x8e, 0xce, 0xce, 0x25, - 0x8e, 0x34, 0x18, 0xe0, 0x75, 0xab, 0xb4, 0x52, 0x33, 0x2a, - 0x8c, 0x93, 0x8a, 0x45, 0xb, 0x51, 0x4f, 0x71, 0x15, 0xb4, - 0x65, 0xe5, 0x70, 0xaa, 0x3d, 0x6a, 0xa5, 0xd6, 0xa3, 0xe5, - 0x82, 0x23, 0x5c, 0x9f, 0x5a, 0xe6, 0xb5, 0x9, 0x26, 0xbb, - 0x62, 0x65, 0x62, 0x47, 0xa7, 0x6a, 0x69, 0x11, 0x29, 0x58, - 0x83, 0xc4, 0x3e, 0x28, 0x9a, 0x74, 0x6b, 0x7b, 0x1c, 0xa2, - 0x1e, 0xb, 0xf7, 0x35, 0xc0, 0x5c, 0x5b, 0x96, 0x62, 0xcd, - 0x92, 0xc7, 0xa9, 0x3d, 0xeb, 0xab, 0xb8, 0xb5, 0xf4, 0x15, - 0x99, 0x35, 0xaf, 0xb5, 0x6a, 0x95, 0x8e, 0x79, 0xb7, 0x23, - 0x95, 0x96, 0xd4, 0xfa, 0x55, 0x47, 0xb5, 0xf6, 0xae, 0x99, - 0xec, 0xd9, 0xdb, 0x6a, 0xa1, 0x27, 0xd8, 0x56, 0x8d, 0x8f, - 0x82, 0xf5, 0x2d, 0x45, 0x81, 0x31, 0x18, 0xa3, 0x3f, 0xc6, - 0xd4, 0xee, 0x67, 0xc8, 0xde, 0xc7, 0x3d, 0xe1, 0x49, 0x4d, - 0x8e, 0xb1, 0xb8, 0x70, 0x1c, 0x6d, 0xae, 0xfd, 0xef, 0x7, - 0xad, 0x69, 0xe9, 0x3f, 0xf, 0xf4, 0xfb, 0x11, 0xbe, 0x72, - 0x65, 0x9b, 0xd4, 0x74, 0xa4, 0xd4, 0xbc, 0x23, 0x20, 0xdc, - 0xf6, 0x72, 0x71, 0xfd, 0xc3, 0x53, 0xcc, 0x8d, 0x55, 0x39, - 0x24, 0x62, 0x4b, 0x79, 0x90, 0x79, 0xac, 0xf9, 0xae, 0xb3, - 0x9e, 0x69, 0xb7, 0xf6, 0xd7, 0xd6, 0xc, 0x45, 0xc4, 0xe, - 0xbe, 0xf8, 0xac, 0x79, 0x6e, 0xfa, 0xe4, 0xe2, 0xa9, 0x19, - 0x49, 0xb4, 0x68, 0xc1, 0xac, 0xdc, 0x69, 0xb7, 0x2, 0x6b, - 0x79, 0x8, 0x20, 0xf2, 0x3b, 0x1a, 0xee, 0xf4, 0x2f, 0x1b, - 0x58, 0xea, 0x61, 0x61, 0xb8, 0x71, 0xd, 0xc7, 0x4f, 0x9b, - 0xa3, 0x1f, 0x6a, 0xf2, 0x49, 0xae, 0x3a, 0xf3, 0x59, 0xb3, - 0x5c, 0x10, 0xdb, 0x95, 0x8a, 0xb0, 0xe8, 0x47, 0x6a, 0x1c, - 0x53, 0x8, 0xd6, 0x71, 0x67, 0xd2, 0xc0, 0x86, 00, 0x82, - 0x8, 0x3e, 0x94, 0xb5, 0xe0, 0x9a, 0x27, 0xc4, 0x8d, 0x4f, - 0x44, 0x65, 0x8e, 0x66, 0x37, 0x16, 0xe3, 0xf8, 0x5b, 0x93, - 0x5e, 0x93, 0xa2, 0xfc, 0x4a, 0xd0, 0x75, 0x55, 0x51, 0x24, - 0xe2, 0xda, 0x63, 0xfc, 0xe, 0x6b, 0x27, 0x6, 0x8e, 0xa8, - 0x56, 0x8c, 0x8e, 0xca, 0x9a, 0x50, 0x13, 0x9e, 0xf4, 0xc8, - 0xae, 0x60, 0x9d, 0x3, 0xc5, 0x2a, 0x3a, 0x9e, 0x84, 0x36, - 0x6a, 0x5e, 0xd5, 0x26, 0xa1, 0x50, 0x5c, 0xfd, 0xca, 0x98, - 0x10, 0x7a, 0x1c, 0xd4, 0x57, 0x1f, 0x72, 0x80, 0x26, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, - 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, - 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, - 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, - 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, - 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, - 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, - 0xba, 0xa, 00, 0x2b, 0xc7, 0x3e, 0x27, 0x7c, 0x1a, 0xd4, - 0x7c, 0x6b, 0xe2, 0xc8, 0x35, 0x9d, 0x37, 0x52, 0xb5, 0x81, - 0x24, 0x8d, 0x22, 0xb9, 0x4b, 0x90, 0xd9, 0x40, 0xbf, 0xc4, - 0x9b, 0x41, 0xdd, 0xc1, 0xe8, 0x71, 0xc8, 0xeb, 0xcf, 0x1e, - 0xc7, 0x45, 0x26, 0x93, 0x69, 0xf6, 0x1a, 0x76, 0x2a, 0x69, - 0x76, 0x9, 0xa5, 0xe9, 0x36, 0x7a, 0x7c, 0x6e, 0xce, 0x96, - 0xb0, 0x24, 0x2a, 0xcd, 0xd5, 0x82, 0xa8, 0x19, 0x3f, 0x95, - 0x5b, 0xa2, 0x8a, 0xa6, 0xdb, 0x77, 0x64, 0xa4, 0x92, 0xb2, - 0xa, 0xc5, 0xf1, 0x76, 0x95, 0x26, 0xb9, 0xe0, 0xed, 0x63, - 0x4c, 0x84, 0x66, 0x6b, 0xab, 0x39, 0x23, 0x8c, 0x67, 0x19, - 0x72, 0xa7, 0x6f, 0xeb, 0x8a, 0xda, 0xa2, 0xa6, 0x4a, 0xe9, - 0xa2, 0x93, 0xb3, 0xb9, 0xc6, 0xfc, 0x2d, 0xd6, 0x2d, 0xf5, - 0x6f, 0x87, 0xba, 0x4a, 0x44, 0xc0, 0x4f, 0x63, 0x2, 0xd9, - 0xdc, 0xc3, 0x9f, 0x9a, 0x29, 0x23, 0x1b, 0x48, 0x61, 0xdb, - 0x38, 0xcf, 0xe3, 0x56, 0xbc, 0x61, 0xe3, 0x38, 0x7c, 0x2a, - 0xfa, 0x5d, 0xb4, 0x76, 0xbf, 0x6f, 0xd4, 0x75, 0x2b, 0xb4, - 0xb7, 0x82, 0xcd, 0x25, 0x8, 0xe4, 0x13, 0xf3, 0x3f, 0x43, - 0xc0, 0xe3, 0xf3, 0x1c, 0x8a, 0xa7, 0xad, 0x7c, 0x31, 0xd1, - 0x35, 0x5d, 0x66, 0x4d, 0x66, 0xd2, 0xef, 0x54, 0xd1, 0x75, - 0x39, 0x81, 0x13, 0xdd, 0x69, 0x17, 0x46, 0x7, 0x98, 0x1c, - 0x70, 0xdc, 0x11, 0xd4, 0x3, 0xc0, 0x19, 0x3d, 0x73, 0x56, - 0x3c, 0x37, 0xf0, 0xef, 0x44, 0xf0, 0xe6, 0xa7, 0x26, 0xaa, - 0x24, 0xbd, 0xd4, 0xf5, 0x79, 0x6, 0xd3, 0xa8, 0xea, 0x73, - 0x99, 0xe7, 0xb, 0x80, 0x30, 0xe, 00, 0x1c, 0xc, 0x67, - 0x19, 0xc7, 0x19, 0xc5, 0x55, 0xf9, 0xa5, 0xcd, 0x2f, 0x99, - 0x36, 0xb2, 0xb2, 0x38, 0x4b, 0xdb, 0xd, 0x6e, 0xf3, 0xe3, - 0xc6, 0xb7, 0x6d, 0xa6, 0x78, 0x94, 0x68, 0x77, 0x53, 0x69, - 0xd0, 0xc9, 0x3, 0xb5, 0x84, 0x77, 0x3e, 0x74, 0x40, 00, - 0xca, 0x37, 0x91, 0x8c, 0x36, 0x4f, 0x1d, 0x79, 0xf4, 0xad, - 0x7b, 0x9f, 0x6, 0xeb, 0x5f, 0xf0, 0x92, 0xf8, 0x7a, 0xf3, - 0xc4, 0xbf, 0x11, 0xed, 0xee, 0x9e, 0xd2, 0xf0, 0x4b, 0x67, - 0x6d, 0x26, 0x9b, 0xd, 0xb3, 0x4c, 0xff, 00, 0xc4, 0x8a, - 0x55, 0xc1, 0x24, 0x8e, 0x31, 0x83, 0xf4, 0xae, 0xb7, 0xc5, - 0x3e, 0x8, 0xd2, 0x3c, 0x5b, 0xf6, 0x69, 0x6f, 0xd, 0xcd, - 0xb5, 0xf5, 0xa9, 0xcd, 0xb5, 0xfd, 0x94, 0xa6, 0x29, 0xe0, - 0x39, 0x7, 0xe5, 0x6f, 0xc3, 0xb8, 0x3e, 0xd8, 0x3c, 0xd5, - 0x4d, 0x7, 0xe1, 0xd6, 0x93, 0xa2, 0x6a, 0xc3, 0x57, 0x9e, - 0xf3, 0x54, 0xd6, 0x35, 0x34, 0x5f, 0x2e, 0x1b, 0xcd, 0x5a, - 0xe8, 0xdc, 0x49, 0xa, 0x1e, 0xaa, 0x9c, 00, 0x3a, 0x9e, - 0x71, 0x9e, 0x4f, 0x3c, 0x9a, 0x50, 0xd1, 0x2b, 0xf4, 0xff, - 00, 0x3b, 0xff, 00, 0x5f, 0x78, 0xe5, 0xad, 0xfc, 0xff, - 00, 0xca, 0xc6, 0x17, 0xc2, 0x50, 0x3f, 0xb4, 0x3c, 0x70, - 0x70, 0x32, 0x75, 0xf9, 0xf9, 0xa4, 0xb5, 0xff, 00, 0x93, - 0x8e, 0xbd, 0xff, 00, 0xb1, 0x7d, 0x7f, 0xf4, 0x6a, 0xd7, - 0x61, 0xe1, 0xdf, 0xa, 0xd8, 0xf8, 0x66, 0x6d, 0x56, 0x5b, - 0x29, 0x6e, 0x24, 0x6d, 0x4e, 0xf1, 0xef, 0x26, 0xf3, 0x99, - 0x48, 0x57, 0x6e, 0xa1, 0x70, 0x6, 0x7, 0xd7, 0x3f, 0x5a, - 0xa3, 0xae, 0x78, 0xb, 0x4f, 0xd6, 0xfc, 0x4b, 0x69, 0xe2, - 0x1, 0xa8, 0x6a, 0x9a, 0x7e, 0xa3, 0x6f, 0x18, 0x88, 0xc9, - 0xa7, 0xdc, 0xf9, 0x5e, 0x74, 0x61, 0xb7, 0x4, 0x7e, 0xe, - 0x57, 0x39, 0xe0, 0x63, 0x39, 0xe7, 0xb6, 0x8, 0xe8, 0xe3, - 0xe4, 0xbf, 0xf6, 0xdb, 0x4, 0xb5, 0xe6, 0xf3, 0x7f, 0xad, - 0xce, 0x7b, 0xc2, 0x7f, 0xf2, 0x5b, 0x3c, 0x77, 0xff, 00, - 0x5c, 0x6d, 0x3f, 0xf4, 0xa, 0xc0, 0xf0, 0x6f, 0xfc, 0x90, - 0xaf, 0x17, 0x7f, 0xd7, 0x4d, 0x43, 0xff, 00, 0x41, 0xaf, - 0x4e, 0xd3, 0xfc, 0x2b, 0x63, 0xa6, 0xf8, 0xa7, 0x56, 0xf1, - 0x4, 0x32, 0xdc, 0x35, 0xde, 0xa8, 0xb1, 0xac, 0xc8, 0xec, - 0xa6, 0x35, 0x8, 0x30, 0x36, 0x80, 0x32, 0x3d, 0xf2, 0x4d, - 0x53, 0xd3, 0x3c, 0x9, 0xa5, 0xe9, 0x5e, 0x13, 0xd4, 0x7c, - 0x39, 0x4, 0xf7, 0x8d, 0x67, 0x7e, 0xd3, 0x34, 0xae, 0xee, - 0xa6, 0x45, 0xf3, 0x46, 0x1b, 0x69, 0xa, 0x7, 0xd3, 0x20, - 0xfe, 0x35, 0x16, 0x7c, 0x96, 0xfe, 0xed, 0xbf, 0x1b, 0x95, - 0x7f, 0x7d, 0x4b, 0xcd, 0x3f, 0xc2, 0xc7, 0x93, 0x6a, 0xf1, - 0xdd, 0x1f, 0x8, 0x7c, 0x26, 0x78, 0x35, 0x11, 0xa6, 0xa6, - 0xe5, 0x8c, 0x5e, 0x34, 0xb, 0x30, 0x86, 0x56, 0x45, 0xf2, - 0xd8, 0xa3, 0x70, 0x7a, 0x1e, 0xa7, 0x8e, 0xbd, 0xab, 0xae, - 0xf1, 0x17, 0x82, 0x3c, 0x59, 0x79, 0xa0, 0x5e, 0x5b, 0xeb, - 0xff, 00, 0x14, 0x61, 0x5d, 0x2a, 0x44, 0xc5, 0xc1, 0x9f, - 0x46, 0xb7, 0x89, 0x2, 0xe4, 0x75, 0x7d, 0xe3, 0x1c, 0xe3, - 0x9c, 0x8a, 0xec, 0xbf, 0xe1, 0xa, 0xd1, 0x25, 0xf0, 0x6d, - 0xbf, 0x85, 0x6f, 0x2d, 0xda, 0xf3, 0x4c, 0x82, 0x25, 0x89, - 0x44, 0xed, 0xf3, 0x90, 0xbd, 0xe, 0xe5, 0xc6, 0x1b, 0xdc, - 0x62, 0xb0, 0x2d, 0xbe, 0x11, 0x68, 0xcb, 0x25, 0xba, 0xea, - 0x5a, 0xc7, 0x88, 0x35, 0x9b, 0x3b, 0x62, 0x1a, 0x2b, 0xd, - 0x4a, 0xfc, 0xcb, 0x6e, 0xac, 0xbc, 0x29, 0xd8, 00, 0xe8, - 0x38, 0xc7, 0x4c, 0x1c, 0x10, 0x6a, 0xdd, 0x9b, 0x6b, 0xa3, - 0x77, 0x22, 0x37, 0x49, 0x79, 0x2b, 0x19, 0x5e, 0x54, 0x7a, - 0x77, 0xc6, 0xf, 0x7, 0xc7, 0x73, 0x76, 0x97, 0x30, 0x1d, - 0x5, 0xad, 0xed, 0x2e, 0x70, 0x31, 0x2c, 0xab, 0xd5, 0x97, - 0xa8, 0xe5, 0x70, 0x7a, 0x9e, 0xb4, 0xff, 00, 0x8c, 0x32, - 0xdb, 0x8b, 0xff, 00, 0x4, 0x44, 0xce, 0xbf, 0x69, 0x3a, - 0xec, 0x2c, 0x8b, 0x9e, 0x76, 0x3, 0x86, 0x3f, 0x4c, 0x95, - 0xfd, 0x2b, 0xb6, 0xf1, 0x37, 0x84, 0xb4, 0x9f, 0x16, 0x69, - 0x69, 0x63, 0xa9, 0x42, 0xe0, 0x44, 0xdb, 0xed, 0xe6, 0x85, - 0xb6, 0x4b, 0x6e, 0xe0, 0x70, 0xc8, 0xc3, 0xa1, 0x1f, 0x88, - 0xe3, 0x90, 0x6b, 0x9b, 0x5f, 0x84, 0x3a, 0x1b, 0xdc, 0xd9, - 0xde, 0x5e, 0x6a, 0x9a, 0xdd, 0xfd, 0xfd, 0xa5, 0xd4, 0x77, - 0x31, 0xde, 0xde, 0xdd, 0x89, 0xa5, 0xc2, 0x72, 0xb1, 0x64, - 0xae, 0x4, 0x79, 0x24, 0xe0, 00, 0x49, 0x3d, 0x78, 0x14, - 0xd3, 0xf7, 0x93, 0x7d, 0x1d, 0xff, 00, 0x1b, 0x85, 0xac, - 0x9d, 0xbb, 0x5b, 0xf0, 0xb1, 0xe8, 0x15, 0xe6, 0x3e, 0x15, - 0x96, 0xd5, 0x7e, 0x3a, 0x78, 0xde, 0x27, 0x64, 0x17, 0x4f, - 0x5, 0xa9, 0x8c, 0x12, 0x37, 0x14, 0x8, 0x37, 0x63, 0xf1, - 0x2b, 0x9f, 0xc2, 0xbd, 0x3a, 0xb8, 0x7d, 0x57, 0xe1, 0x66, - 0x87, 0xaa, 0xf8, 0x82, 0xff, 00, 0x5d, 0x7b, 0xbd, 0x52, - 0xdb, 0x54, 0xbb, 0x31, 0x94, 0xb9, 0xb5, 0xb9, 0x11, 0x3d, - 0xb1, 0x55, 0xdb, 0x98, 0x88, 0x5c, 0x8c, 0xaf, 0x7, 0x39, - 0x7, 0xdb, 0x8a, 0x4b, 0x49, 0x5f, 0xd4, 0xad, 0xe2, 0xd7, - 0xa7, 0xe6, 0x67, 0x6b, 0xec, 0x2e, 0x3e, 0x3b, 0xf8, 0x52, - 0x3b, 0x46, 0x56, 0x9a, 0xda, 0xc6, 0xe5, 0xee, 0xc2, 0xf2, - 0x56, 0x26, 0x52, 0x17, 0x77, 0xa7, 0xcd, 0xfe, 0x7d, 0x72, - 0x35, 0xad, 0x56, 0x2f, 0x86, 0x5f, 0x12, 0x75, 0xbd, 0x46, - 0x62, 0x13, 0x4e, 0xd7, 0x34, 0xd6, 0xba, 0x8b, 0x71, 0xc0, - 0x37, 0x71, 0xf, 0xb8, 0x3d, 0xce, 0x7f, 0x12, 0xd5, 0xde, - 0x78, 0x5b, 0xc1, 0x1a, 0x4f, 0x85, 0x24, 0xb9, 0xb8, 0xb5, - 0x7b, 0xbb, 0xcd, 0x42, 0xec, 0xff, 00, 0xa4, 0x5f, 0xdf, - 0xcd, 0xe7, 0x4f, 0x28, 0x1d, 0x1, 0x6e, 0x38, 0x1e, 0xc0, - 0x74, 0x19, 0xce, 0x2b, 0x87, 0xf1, 0x5d, 0xd6, 0x8d, 0xf1, - 0x47, 0xc5, 0x1a, 0x37, 0x87, 0x34, 0xb8, 0x5e, 0xf9, 0x34, - 0xcb, 0xf6, 0x9b, 0x54, 0xb9, 0x30, 0xba, 0x25, 0xb2, 0x26, - 0x41, 0x88, 0x96, 0x3, 0x25, 0xc8, 0xc7, 0x19, 0xfb, 0xb4, - 0x5b, 0xe1, 0x8a, 0xf3, 0xfc, 0x6f, 0x7f, 0xba, 0xf7, 0xf9, - 0xa, 0xfb, 0xc9, 0xf9, 0x7e, 0x1b, 0x7d, 0xfb, 0x1d, 0x67, - 0xc3, 0x1d, 0xa, 0x5d, 0xb, 0xc1, 0x16, 0x82, 0xef, 0x71, - 0xd4, 0x2f, 0x99, 0xaf, 0xaf, 0x19, 0xbe, 0xf1, 0x96, 0x4e, - 0x4e, 0x7d, 0xc0, 0xc0, 0xfc, 0x2b, 0xb0, 0xa0, 0xc, 0xc, - 0xe, 0x94, 0x53, 0x93, 0xbb, 0xd0, 0x49, 0x59, 0x6a, 0x79, - 0xa7, 0x82, 0xbf, 0xe4, 0xb1, 0xfc, 0x42, 0xfa, 0xd9, 0xff, - 00, 0xe8, 0xb3, 0x5b, 0x5f, 0x15, 0x60, 0x92, 0xe7, 0xe1, - 0x7f, 0x88, 0x23, 0x89, 0x4b, 0x30, 0xb5, 0x2f, 0x81, 0xe8, - 0xa4, 0x31, 0xfd, 0x1, 0xad, 0x5d, 0x2f, 0xc2, 0xb6, 0x3a, - 0x4f, 0x89, 0x75, 0x9d, 0x7a, 0x9, 0x6e, 0x1a, 0xeb, 0x56, - 0xf2, 0xfc, 0xf4, 0x91, 0x94, 0xa2, 0xec, 0x5c, 0xd, 0xa0, - 00, 0x47, 0xbe, 0x49, 0xad, 0xb7, 0x45, 0x91, 0x19, 0x1d, - 0x43, 0x2b, 0xc, 0x15, 0x23, 0x20, 0x8f, 0x4a, 0x99, 0x2e, - 0x68, 0x28, 0xf9, 0x58, 0xa4, 0xed, 0x37, 0x2f, 0x3b, 0x99, - 0x3e, 0x15, 0xbd, 0x83, 0x52, 0xf0, 0x96, 0x91, 0x79, 0x6d, - 0x22, 0xc9, 0x14, 0xb6, 0x71, 0x10, 0x54, 0xe4, 0x7d, 0xd1, - 0x91, 0xf8, 0x1c, 0x8f, 0xc2, 0xb8, 0xed, 0x1e, 0x51, 0x7b, - 0xf1, 0xf3, 0xc4, 0x32, 0xc3, 0x86, 0x8e, 0xcf, 0x4a, 0x86, - 0xda, 0x56, 0x7, 0x20, 0x39, 0x60, 0xc0, 0x7e, 0x59, 0xfc, - 0xaa, 0xc3, 0x7c, 0x24, 0xd2, 0xa0, 0x9a, 0x5f, 0xec, 0x7d, - 0x7b, 0xc4, 0xba, 0x1d, 0xb4, 0x8d, 0xbc, 0xd9, 0xe9, 0x9a, - 0x91, 0x8a, 0x10, 0xc7, 0xa9, 0xa, 0x41, 0xc1, 0x3f, 0x5a, - 0xe9, 0xfc, 0x37, 0xe1, 0x6d, 0x23, 0xc2, 0x7a, 0x71, 0xb2, - 0xd2, 0x2d, 0xbc, 0xa4, 0x76, 0xdf, 0x2c, 0x8c, 0xc5, 0xe4, - 0x99, 0xfb, 0xb3, 0xb1, 0xe4, 0x9f, 0xd3, 0xd3, 0x15, 0x6d, - 0xde, 0x5c, 0xfe, 0xbf, 0x8e, 0x84, 0x28, 0xda, 0x3c, 0xbe, - 0x9f, 0x81, 0xca, 0x78, 0xa1, 0x4f, 0x87, 0xbe, 0x28, 0xf8, - 0x6f, 0xc4, 0x6a, 0x36, 0xda, 0xea, 0x2a, 0xda, 0x45, 0xe3, - 0x76, 0xdc, 0xdf, 0x34, 0x44, 0xff, 00, 0xc0, 0x81, 0x1f, - 0x85, 0x4b, 0xf0, 0xdd, 0x5b, 0x56, 0xbd, 0xf1, 0x17, 0x8b, - 0xa5, 0x53, 0xff, 00, 0x13, 0x5b, 0xd3, 0x15, 0xa9, 0x3f, - 0xf3, 0xed, 0xf, 0xc8, 0x84, 0x7d, 0x4e, 0xe3, 0x5d, 0x37, - 0x8a, 0x7c, 0x33, 0x63, 0xe2, 0xed, 0x6, 0x5d, 0x23, 0x50, - 0x79, 0xe3, 0x86, 0x46, 0x47, 0x12, 0x40, 0xc1, 0x64, 0x46, - 0x56, 0x4, 0x15, 0x24, 0x10, 0xf, 0x1e, 0x9d, 0xcd, 0x5b, - 0xd1, 0xf4, 0xab, 0x5d, 0xb, 0x46, 0xb3, 0xd2, 0xac, 0x83, - 0xb, 0x6b, 0x48, 0x96, 0x18, 0xf7, 0x1c, 0x92, 00, 0xc6, - 0x4f, 0xb9, 0xea, 0x6a, 0x63, 0xa2, 0xd7, 0xe5, 0xf3, 0xd7, - 0xf3, 0xfc, 0xca, 0x96, 0xbf, 0xaf, 0xcb, 0xfa, 0x5f, 0x71, - 0x7a, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbc, - 0xef, 0xc6, 0xbe, 0x10, 0xda, 0x64, 0xd5, 0xb4, 0xd8, 0xf8, - 0xfb, 0xd7, 0x10, 0x28, 0xe9, 0xea, 0xea, 0x3f, 0x98, 0xfc, - 0x6b, 0xd1, 0x28, 0xae, 0x8c, 0x36, 0x26, 0x78, 0x7a, 0x9c, - 0xf0, 0xff, 00, 0x87, 0x31, 0xaf, 0x42, 0x35, 0xa1, 0xcb, - 0x23, 0xe7, 0xca, 0x2b, 0xb7, 0xf1, 0xa7, 0x84, 0x7e, 0xc4, - 0xcf, 0xaa, 0x69, 0xd1, 0xff, 00, 0xa3, 0x13, 0xba, 0x78, - 0x54, 0x7f, 0xab, 0x3f, 0xde, 0x1e, 0xde, 0xbe, 0x9f, 0x4e, - 0x9c, 0x45, 0x7d, 0x8e, 0x1f, 0x11, 0xc, 0x45, 0x35, 0x38, - 0x7f, 0xc3, 0x1f, 0x37, 0x5a, 0x8c, 0xa8, 0xcf, 0x96, 0x41, - 0x45, 0x14, 0x56, 0xe6, 0x41, 0x5e, 0x9b, 0xe0, 0xcf, 0x17, - 0xfd, 0xbd, 0x53, 0x4c, 0xd4, 0x64, 0xff, 00, 0x4b, 0x51, - 0x88, 0xa5, 0x63, 0xfe, 0xb4, 0x7a, 0x1f, 0xf6, 0xbf, 0x9d, - 0x79, 0x95, 0x28, 0x25, 0x58, 0x32, 0x92, 0xac, 0xe, 0x41, - 0x7, 0x4, 0x1a, 0xe5, 0xc5, 0xe1, 0x21, 0x89, 0xa7, 0xcb, - 0x2d, 0xfa, 0x3e, 0xc6, 0xf8, 0x7c, 0x44, 0xa8, 0x4f, 0x9a, - 0x27, 0xd0, 0x55, 0xc0, 0xfc, 0x41, 0xd7, 0x35, 0xaf, 0xd, - 0x6a, 0x9a, 0x46, 0xa9, 0x6d, 0x24, 0x8d, 0xa4, 0x7, 0xd9, - 0x77, 0xa, 0xa8, 0xc3, 0x1c, 0xf7, 0x38, 0xe3, 0x20, 0x9c, - 0x76, 0xc8, 0xab, 0xde, 0xe, 0xf1, 0x68, 0xd5, 0xa3, 0x5b, - 0xb, 0xe7, 0x2, 0xfd, 0x7, 0xca, 0xc7, 0x8f, 0x38, 0xe, - 0xff, 00, 0xef, 0x7a, 0x8f, 0xc6, 0xba, 0xd9, 0x62, 0x8e, - 0x78, 0x9a, 0x29, 0x63, 0x49, 0x23, 0x61, 0x86, 0x47, 0x19, - 0x4, 0x7b, 0x83, 0x5f, 0x1d, 0x5e, 0x84, 0xe8, 0x4d, 0xc2, - 0x6b, 0x53, 0xe9, 0x29, 0x55, 0x8d, 0x58, 0xf3, 0x44, 0xf1, - 0x4f, 0x16, 0x78, 0x87, 0x4d, 0xf1, 0xd6, 0xaf, 0xa3, 0xda, - 0x68, 0x16, 0x12, 0x9b, 0xef, 0x3c, 0x16, 0x9d, 0xe3, 0xa, - 0xd8, 0xe3, 0x8e, 0x3a, 0x81, 0xd4, 0x93, 0xd3, 0x15, 0x35, - 0xbe, 0xb0, 0x3e, 0x1f, 0xfc, 0x4b, 0xd6, 0x5f, 0x54, 0xb6, - 0x98, 0xda, 0x5f, 0x33, 0x32, 0x3a, 0xc, 0x92, 0xac, 0xdb, - 0x83, 0xf, 0x51, 0xc9, 0x6, 0xbd, 0x76, 0xcf, 0x4a, 0xd3, - 0xb4, 0xf6, 0x66, 0xb2, 0xb0, 0xb5, 0xb6, 0x66, 0xfb, 0xc6, - 0x18, 0x55, 0x9, 0xfc, 0x85, 0x3e, 0xee, 0xc2, 0xce, 0xfe, - 0x31, 0x1d, 0xe5, 0xac, 0x17, 0x8, 0x39, 0xb, 0x34, 0x61, - 0xc0, 0xfc, 0xeb, 0x23, 0x43, 0xc7, 0xef, 0x75, 0xb8, 0xfc, - 0x7d, 0xf1, 0x23, 0x42, 0x3a, 0x55, 0xbc, 0xe6, 0xda, 0xc9, - 0xd5, 0x9d, 0x9d, 0x70, 0x76, 0x87, 0xc, 0xcc, 0x47, 0x61, - 0xc0, 0x3, 0x3d, 0x4d, 0x45, 0xe1, 0x1f, 0x1b, 0x69, 0x5e, - 0x14, 0xd5, 0x7c, 0x44, 0xba, 0x82, 0xdc, 0x33, 0x5c, 0xde, - 0x33, 0x27, 0x92, 0xa1, 0xbe, 0xeb, 0x3e, 0x73, 0x92, 0x3d, - 0x6b, 0xd9, 0x2d, 0x34, 0xfb, 0x2d, 0x3d, 0xa, 0x59, 0x5a, - 0x41, 0x6c, 0xa7, 0xa8, 0x86, 0x30, 0x80, 0xfe, 0x55, 0x1b, - 0x68, 0xfa, 0x63, 0x31, 0x66, 0xd3, 0xac, 0xcb, 0x13, 0x92, - 0x4c, 0xb, 0x92, 0x7f, 0x2a, 00, 0xf3, 0xbf, 0x4, 0x7d, - 0xa3, 0xc5, 0x5e, 0x3d, 0xd4, 0x7c, 0x5c, 0xf6, 0xcf, 0x5, - 0x92, 0xc7, 0xe4, 0x5b, 0xee, 0xfe, 0x23, 0x80, 0x3a, 0xf7, - 0xc0, 0x7, 0x38, 0xee, 0xd5, 0xea, 0x34, 0xd4, 0x44, 0x8d, - 0x2, 0x22, 0xaa, 0xaa, 0x8c, 0x5, 0x51, 0x80, 0x2b, 0xb, - 0xc5, 0x1e, 0x26, 0x87, 0xc3, 0xf6, 0x78, 0x5d, 0xb2, 0x5e, - 0xca, 0x3f, 0x75, 0x17, 0xa7, 0xfb, 0x47, 0xdb, 0xf9, 0xd6, - 0x94, 0xa9, 0x4a, 0xac, 0xd4, 0x20, 0xae, 0xd9, 0x15, 0x27, - 0x1a, 0x71, 0x72, 0x96, 0xc4, 0x3e, 0x2c, 0xf1, 0x54, 0x7a, - 0x15, 0xb7, 0x91, 0x1, 0x57, 0xbf, 0x94, 0x7c, 0x8a, 0x79, - 0x8, 0x3f, 0xbc, 0xdf, 0xd0, 0x77, 0xaf, 0x24, 0x96, 0x59, - 0x27, 0x99, 0xe6, 0x9a, 0x46, 0x92, 0x57, 0x62, 0xce, 0xec, - 0x72, 0x58, 0x9e, 0xf4, 0xeb, 0x9b, 0x99, 0xaf, 0x2e, 0x64, - 0xb8, 0xb8, 0x91, 0xa4, 0x9a, 0x43, 0xb9, 0xdd, 0xba, 0x93, - 0x51, 0x57, 0xd7, 0xe0, 0xb0, 0x50, 0xc2, 0xc2, 0xcb, 0x56, - 0xf7, 0x67, 0xce, 0x62, 0xb1, 0x32, 0xaf, 0x2b, 0xbd, 0xba, - 0x5, 0x14, 0x51, 0x5d, 0xa7, 0x30, 0x51, 0x45, 0x74, 0xde, - 0x12, 0xf0, 0xac, 0x9a, 0xed, 0xc7, 0xda, 0x2e, 0x3, 0x26, - 0x9f, 0x1b, 0x7c, 0xc7, 0xa1, 0x94, 0xff, 00, 0x74, 0x7b, - 0x7a, 0x9a, 0xca, 0xb5, 0x68, 0x51, 0x83, 0x9c, 0xde, 0x88, - 0xba, 0x74, 0xe5, 0x52, 0x4a, 0x31, 0xdc, 0x9b, 0xc1, 0xfe, - 0x13, 0x6d, 0x62, 0x55, 0xbe, 0xbd, 0x42, 0x2c, 0x10, 0xfc, - 0xaa, 0x78, 0xf3, 0x88, 0xed, 0xfe, 0xef, 0xaf, 0xaf, 0x4a, - 0xf5, 0x65, 0x55, 0x45, 0xa, 0xaa, 0x15, 0x40, 0xc0, 00, - 0x60, 0x1, 0x4d, 0x8a, 0x28, 0xe1, 0x89, 0x22, 0x89, 0x15, - 0x23, 0x40, 0x15, 0x55, 0x46, 00, 0x1e, 0x94, 0xfa, 0xf8, - 0xfc, 0x5e, 0x2e, 0x78, 0x99, 0xf3, 0x4b, 0x6e, 0x8b, 0xb1, - 0xf4, 0x98, 0x6c, 0x3c, 0x68, 0x42, 0xcb, 0x7e, 0xa1, 0x59, - 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, 0xf2, 0xad, 0x1a, 0xce, - 0xd5, 0x3f, 0xe5, 0x87, 0xd5, 0xbf, 0x95, 0x72, 0x1d, 0x5, - 0xcb, 0x7f, 0xf5, 0x9, 0xf4, 0xa9, 0x6a, 0x2b, 0x7f, 0xf5, - 0x9, 0xf4, 0xa9, 0x68, 00, 0xa8, 0x26, 0x8f, 0x35, 0x3d, - 0x35, 0xdd, 0x23, 0x42, 0xee, 0xc1, 0x54, 0x72, 0x49, 0x38, - 0x2, 0x81, 0x34, 0x65, 0x4f, 0x7, 0x5e, 0x2a, 0x84, 0x96, - 0x6e, 0xe7, 0xa, 0x84, 0xd5, 0xf5, 0xf1, 0x36, 0x84, 0xf7, - 0x3f, 0x67, 0x5d, 0x52, 0xd0, 0xcb, 0x9c, 0x6d, 0xf3, 0x5, - 0x6b, 0x2e, 0xd6, 00, 0xae, 0x8, 0x3d, 0x8, 0xaa, 0xb9, - 0x3c, 0x87, 0x29, 0xfd, 0x87, 0x73, 0x31, 0xfb, 0x98, 0x1e, - 0xb5, 0x3c, 0x3e, 0x12, 0x88, 0xb6, 0x67, 0x93, 0x70, 0xf4, - 0x15, 0xd2, 0xd4, 0x37, 0x57, 0x76, 0xf6, 0x50, 0x34, 0xd7, - 0x33, 0x24, 0x51, 0x2f, 0x56, 0x73, 0x80, 0x29, 0x73, 0x30, - 0xe4, 0x45, 0x6b, 0x4d, 0x1e, 0xc6, 0xcf, 0xfd, 0x54, 0xb, - 0x9f, 0x52, 0x33, 0x57, 0x80, 0xa, 0x30, 0x6, 0x7, 0xb5, - 0x56, 0xb1, 0xd4, 0xac, 0xf5, 0x38, 0x4c, 0xb6, 0x57, 0x11, - 0xce, 0x80, 0xe0, 0xb2, 0x1c, 0x8a, 0xb5, 0x48, 0xa4, 0x92, - 0xa, 0x2a, 0x8d, 0xd6, 0xb3, 0xa6, 0xd8, 0xc9, 0xe5, 0xdd, - 0x5f, 0x41, 0xb, 0xe3, 0x3b, 0x64, 0x70, 0xd, 0x32, 0xd, - 0x7f, 0x48, 0xb9, 0x90, 0x47, 0xe, 0xa5, 0x6a, 0xee, 0x7a, - 0x2a, 0xca, 0x32, 0x68, 0x19, 0x76, 0x58, 0x22, 0x9d, 0x4a, - 0xcb, 0x1a, 0xb8, 0x3e, 0xa3, 0x35, 0xcd, 0xea, 0x7e, 0x6, - 0xd2, 0xaf, 0xc3, 0x32, 0x27, 0x95, 0x21, 0xfe, 0x21, 0xd2, - 0xb6, 0xee, 0xf5, 0x7d, 0x3a, 0xc1, 0xc2, 0x5d, 0xde, 0xc1, - 0x3, 0x1e, 0x82, 0x47, 0x3, 0x35, 0x5c, 0xf8, 0x97, 0x44, - 0x3, 0x9d, 0x56, 0xd0, 0x7f, 0xdb, 0x51, 0x4d, 0x36, 0x89, - 0x71, 0x4f, 0x73, 0xce, 0x35, 0x5f, 0x86, 0x5a, 0x8c, 0x21, - 0x9a, 0xce, 0xe0, 0x4f, 0xe8, 0xbd, 0x2b, 0x8c, 0xd4, 0xbc, - 0x2d, 0xaf, 0xd8, 0x67, 0xcf, 0xb1, 0x70, 0x7, 0x75, 0xe6, - 0xbe, 0x89, 0x8e, 0xf2, 0xda, 0x5b, 0x61, 0x72, 0x93, 0xc6, - 0xd0, 0x11, 0x91, 0x20, 0x61, 0xb7, 0x1f, 0x5a, 0xcd, 0x1e, - 0x24, 0xd0, 0x26, 0xb8, 0xfb, 0x3f, 0xf6, 0x95, 0x9b, 0x49, - 0xd3, 0x69, 0x90, 0x55, 0x2a, 0x8c, 0xc6, 0x58, 0x78, 0xbd, - 0x8f, 0x98, 0xe7, 0x8a, 0xe6, 0x36, 0x21, 0xed, 0xa6, 0x7, - 0xfd, 0xc3, 0x54, 0x64, 0xf3, 0x43, 0x64, 0x45, 0x28, 0x6f, - 0x50, 0xa7, 0x35, 0xf5, 0xbc, 0x9a, 0x7d, 0x85, 0xca, 0x82, - 0xf6, 0xd0, 0xb8, 0x3d, 0xe, 0xd1, 0xcd, 0x60, 0x5e, 0x27, - 0x83, 0xac, 0xee, 0x3c, 0xbb, 0xa7, 0xb0, 0x8e, 0x5c, 0xfd, - 0xd6, 0x61, 0x91, 0x4d, 0xd4, 0x12, 0xc3, 0xdb, 0xa9, 0xf3, - 0x8d, 0x8e, 0xb7, 0xe2, 0x1b, 0x29, 00, 0xb1, 0x96, 0xf3, - 0x76, 0x78, 0x4, 0x12, 0x2b, 0xd3, 0xbc, 0x27, 0x17, 0xc4, - 0xad, 0x76, 0x54, 0xfb, 0x6d, 0xdf, 0xd9, 0x2c, 0xf, 0x57, - 0x61, 0xc9, 0x15, 0xeb, 0x16, 0x16, 0x3a, 0x41, 0x84, 0x4b, - 0x65, 0xd, 0xb3, 0xc6, 0x7a, 0x3a, 00, 0xc3, 0xf3, 0xad, - 0x10, 0x2, 0x8c, 00, 00, 0xf4, 0x15, 0x2e, 0x57, 0x36, - 0x8c, 0x2c, 0x43, 0x67, 0x6a, 0xb6, 0x76, 0xb1, 0xc0, 0x18, - 0xb6, 0xd1, 0xcb, 0x1e, 0xe6, 0x96, 0xe3, 0xee, 0x54, 0xd5, - 0xd, 0xc7, 0xdc, 0xa9, 0x2c, 0x9a, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0xf, 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, 0xff, - 00, 0x61, 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, 0x81, - 0xe0, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, 0x5f, - 0xf9, 0xa, 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, 0x79, - 0xa2, 0x7f, 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, 0x68, - 0x3, 0x3f, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, - 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, - 0xf9, 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, - 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x1, 0x8, 0xc, 0x8, 0x20, 0x10, - 0x78, 0x20, 0xd7, 0x96, 0xf8, 0xcb, 0xc2, 0x27, 0x4a, 0x91, - 0xb5, 0xb, 0x4, 0x26, 0xc5, 0x8e, 0x64, 0x41, 0xff, 00, - 0x2c, 0x49, 0xff, 00, 0xd9, 0x7f, 0x95, 0x7a, 0x9d, 0x35, - 0xd1, 0x64, 0x46, 0x47, 0x50, 0xc8, 0xc3, 0xc, 0xa4, 0x64, - 0x11, 0xe9, 0x5d, 0x58, 0x4c, 0x5c, 0xf0, 0xd5, 0x39, 0xa3, - 0xb7, 0x55, 0xdc, 0xc3, 0x11, 0x87, 0x8d, 0x78, 0x72, 0xbd, - 0xcf, 0x9f, 0xa8, 0xae, 0xa7, 0xc5, 0xfe, 0x14, 0x7d, 0x12, - 0x63, 0x77, 0x68, 0xa5, 0xb4, 0xf9, 0x1b, 0xa7, 0x53, 0x9, - 0x3d, 0x8f, 0xb7, 0xa1, 0xfc, 0x2b, 0x96, 0xaf, 0xb1, 0xa1, - 0x5a, 0x15, 0xa0, 0xa7, 0x7, 0xa1, 0xf3, 0x75, 0x69, 0x4a, - 0x94, 0x9c, 0x65, 0xb8, 0x51, 0x45, 0x15, 0xa9, 0x98, 0xe8, - 0xe4, 0x78, 0xa4, 0x49, 0x23, 0x76, 0x49, 0x10, 0x86, 0x56, - 0x53, 0x82, 0xa4, 0x77, 0x15, 0xd3, 0xaf, 0xc4, 0x1d, 0x79, - 0x54, 0xd, 0xd6, 0xc7, 0x3, 0x19, 0x31, 0x72, 0x7f, 0x5a, - 0xc0, 0x83, 0x4c, 0xbd, 0xb9, 0x48, 0x5e, 0xb, 0x69, 0x24, - 0x59, 0xdc, 0xc7, 0x11, 0x18, 0xf9, 0xd8, 0xc, 0x90, 0x3f, - 0xa, 0x9a, 0xf7, 0x43, 0xd5, 0x34, 0xeb, 0x7f, 0xb4, 0x5e, - 0x58, 0xcb, 0x4, 0x20, 0x81, 0xbd, 0xf1, 0x8c, 0x9e, 0x9d, - 0xeb, 0x9a, 0xac, 0x70, 0xf5, 0x64, 0xa3, 0x52, 0xcd, 0xf9, - 0xd8, 0xda, 0x9c, 0xab, 0x41, 0x37, 0xb, 0xa4, 0x6d, 0x7f, - 0xc2, 0xc3, 0xd7, 0xbd, 0x6d, 0x7f, 0xef, 0xd1, 0xff, 00, - 0x1a, 0x3f, 0xe1, 0x61, 0xeb, 0xde, 0xb6, 0xbf, 0xf7, 0xe8, - 0xff, 00, 0x8d, 0x62, 0x5c, 0x68, 0x9a, 0xa5, 0xad, 0x92, - 0xde, 0x4f, 0x61, 0x34, 0x76, 0xc7, 0x1f, 0xbc, 0x65, 0xe9, - 0x9e, 0x99, 0x1d, 0x47, 0xe3, 0x55, 0xed, 0x2c, 0xae, 0x6f, - 0xee, 0x4, 0x16, 0x90, 0x3c, 0xf2, 0x91, 0x9d, 0x88, 0x32, - 0x71, 0xeb, 0x59, 0x2c, 0x2e, 0xd, 0xa7, 0x25, 0x18, 0xd9, - 0x1a, 0x3a, 0xf8, 0x94, 0xec, 0xdb, 0xb9, 0xd1, 0xff, 00, - 0xc2, 0xc3, 0xd7, 0xbd, 0x6d, 0x7f, 0xef, 0xd1, 0xff, 00, - 0x1a, 0x3f, 0xe1, 0x61, 0xeb, 0xde, 0xb6, 0xbf, 0xf7, 0xe8, - 0xff, 00, 0x8d, 0x73, 0xc9, 0xa7, 0xde, 0x49, 0x7f, 0xf6, - 0x4, 0xb6, 0x90, 0xdd, 0xee, 0x2b, 0xe4, 0xe3, 0xd, 0x91, - 0xc9, 0xa7, 0x59, 0xe9, 0x77, 0xfa, 0x86, 0xff, 00, 0xb1, - 0xd9, 0xcd, 0x3f, 0x96, 0x70, 0xfe, 0x5a, 0xe7, 0x69, 0xf7, - 0xa6, 0xf0, 0xb8, 0x34, 0xae, 0xe2, 0x81, 0x62, 0x31, 0xf, - 0x44, 0xd9, 0xbf, 0xff, 00, 0xb, 0xf, 0x5e, 0xf5, 0xb5, - 0xff, 00, 0xbf, 0x47, 0xfc, 0x6b, 0x9c, 0xbd, 0xbd, 0xb8, - 0xd4, 0x6f, 0x24, 0xbb, 0xba, 0x90, 0xc9, 0x34, 0x87, 0x2c, - 0xc7, 0xf9, 0xf, 0x41, 0xed, 0x52, 0xc7, 0xa5, 0x6a, 0x13, - 0x45, 0x71, 0x2c, 0x56, 0x53, 0x3c, 0x76, 0xe4, 0x89, 0x98, - 0x2f, 0xdc, 0x23, 0xa8, 0x3f, 0x4a, 0x48, 0xf4, 0xbb, 0xf9, - 0xac, 0x1e, 0xfa, 0x3b, 0x39, 0x9e, 0xd5, 0x33, 0xba, 0x50, - 0xbf, 0x28, 0xc7, 0x5a, 0xd2, 0x9d, 0x3c, 0x35, 0x27, 0x78, - 0x24, 0x9e, 0xc4, 0x4e, 0x75, 0xaa, 0x2b, 0x4a, 0xec, 0xa9, - 0x45, 0x14, 0x57, 0x49, 0x80, 0x51, 0x45, 0x6d, 0x78, 0x6f, - 0xc3, 0x97, 0x1e, 0x20, 0xbe, 0xd8, 0x37, 0x47, 0x6b, 0x19, - 0x1e, 0x74, 0xde, 0x9f, 0xec, 0x8f, 0x73, 0xfa, 0x54, 0x54, - 0xa9, 0x1a, 0x50, 0x73, 0x9b, 0xb2, 0x45, 0x42, 0x12, 0x9c, - 0x94, 0x62, 0xb5, 0x26, 0xf0, 0xb7, 0x86, 0x26, 0xf1, 0x5, - 0xde, 0xf9, 0x37, 0x47, 0x63, 0x11, 0xfd, 0xec, 0x83, 0xab, - 0x1f, 0xee, 0xaf, 0xbf, 0xbf, 0x6a, 0xf5, 0xeb, 0x7b, 0x78, - 0x6d, 0x2d, 0xe3, 0x82, 0x8, 0xd6, 0x38, 0xa3, 0x5d, 0xa8, - 0x8a, 0x30, 00, 0xa6, 0xd9, 0xd9, 0xdb, 0xd8, 0x5a, 0x47, - 0x6b, 0x6d, 0x18, 0x8e, 0x18, 0xc6, 0x15, 0x45, 0x4f, 0x5f, - 0x1f, 0x8d, 0xc6, 0xcb, 0x15, 0x3b, 0xed, 0x15, 0xb2, 0x3e, - 0x8f, 0xb, 0x86, 0x8d, 0x8, 0xdb, 0xaf, 0x50, 0xa2, 0x8a, - 0x2b, 0x88, 0xea, 0xa, 0xce, 0xd5, 0x3f, 0xe5, 0x87, 0xd5, - 0xbf, 0x95, 0x68, 0xd6, 0x76, 0xa9, 0xff, 00, 0x2c, 0x3e, - 0xad, 0xfc, 0xa8, 0x2, 0xe5, 0xbf, 0xfa, 0x84, 0xfa, 0x54, - 0xb5, 0x15, 0xbf, 0xfa, 0x84, 0xfa, 0x54, 0xb4, 00, 0x57, - 0x9e, 0xfc, 0x62, 0x9b, 0x53, 0x87, 0xc1, 0x87, 0xfb, 0x37, - 0xcc, 0xc3, 0x48, 0x4, 0xe6, 0x31, 0xc8, 0x4e, 0xf5, 0xe8, - 0x55, 0xc5, 0xfc, 0x46, 0xf1, 0x35, 0xef, 0x85, 0xf4, 0x98, - 0x2e, 0xe1, 0xb1, 0x4b, 0xbb, 0x47, 0x90, 0x25, 0xca, 0xb0, - 0xce, 0x10, 0xf5, 0x34, 0x1, 0xe7, 0x3a, 0x67, 0x87, 0xfe, - 0x1d, 0xeb, 0xbe, 0x1a, 0x48, 0x2c, 0xaf, 0x96, 0xdb, 0x57, - 0xf2, 0xc6, 0x25, 0x96, 0x52, 0xad, 0xe6, 0x57, 0xa2, 0xe8, - 0x97, 0x57, 0xbe, 0xd, 0xf0, 0x11, 0x9f, 0xc4, 0x57, 0x2, - 0xe1, 0xad, 0x47, 0xca, 0xf1, 0x9d, 0xdb, 0x97, 0xb5, 0x71, - 0xba, 0xde, 0x9d, 0xf0, 0xc7, 0x5a, 0xd0, 0x1f, 0x53, 0x8a, - 0xe2, 0xd6, 0xce, 0x63, 0x1e, 0xf1, 0xe4, 0xbe, 0x1c, 0x37, - 0xa6, 0x2b, 0x37, 0x49, 0xf1, 0x16, 0xa5, 0xa6, 0x7c, 0x1b, - 0xb9, 0xb8, 0xbe, 0x81, 0xaf, 0x10, 0x4c, 0x63, 0xb7, 0x33, - 0x8c, 0xfc, 0x99, 0xe0, 0x9a, 00, 0xe8, 0x64, 0xf8, 0xb3, - 0xaa, 0x5b, 0xdb, 0xa6, 0xa7, 0x71, 0xe1, 0xf9, 0x23, 0xd2, - 0x59, 0x80, 0xf3, 0x88, 0x39, 00, 0xf7, 0xac, 0x3f, 0x8c, - 0x9e, 0x25, 0x9b, 0x52, 0xd1, 0xb4, 0xb4, 0xb3, 0x8a, 0x46, - 0xb0, 0xba, 0x65, 0x62, 0xc3, 0x8d, 0xfe, 0xd5, 0x83, 0xe2, - 0x75, 0xb8, 0x3e, 0x3, 0x17, 0x77, 0xbe, 0x29, 0x49, 0x3c, - 0xd0, 0xac, 0x96, 0x10, 0x9c, 0x8f, 0xa7, 0xe1, 0x5a, 0xbe, - 0x28, 0x91, 0x4f, 0xc3, 0x8f, 0x9, 0x30, 0x23, 0x1e, 0x72, - 0x76, 0xf7, 0xa0, 0xe, 0xae, 0xcf, 0xc4, 0xda, 0x5f, 0x81, - 0xfc, 0x2b, 0x65, 0x1d, 0xb6, 0x96, 0xf1, 0xdf, 0xde, 0x28, - 0x29, 0x68, 0xb9, 0x25, 0x8e, 0x3a, 0xd5, 0xed, 0x1b, 0xe2, - 0x54, 0xcf, 0xac, 0xc3, 0xa5, 0xeb, 0xfa, 0x63, 0xe9, 0xd3, - 0x5c, 0x7f, 0xa9, 0x62, 0xe, 0xd6, 0xf6, 0xae, 0x2f, 0xe2, - 0x9d, 0xb4, 0xc3, 0xc6, 0xde, 0x1d, 0xba, 0x92, 0xe9, 0xec, - 0xed, 0x5a, 00, 0xa2, 0xe5, 0x7a, 0x21, 0xc5, 0x54, 0xd5, - 0x74, 0xcb, 0x33, 0xe2, 0xbd, 0x12, 0x3b, 0xaf, 0x12, 0xdc, - 0x6a, 0xf7, 0x1e, 0x72, 0xb4, 0x62, 0x23, 0x9d, 0xbf, 0x5a, - 00, 0xb5, 0xe2, 0xfb, 0x3d, 0x22, 0xfb, 0xe3, 0x52, 0xc1, - 0xaf, 0x4c, 0x23, 0xb2, 0xfb, 0x38, 0x3f, 0x3c, 0x85, 0x46, - 0x6a, 0xbf, 0x8f, 0xb4, 0x6f, 0x5, 0x69, 0x3a, 0x2a, 0xdd, - 0xf8, 0x6a, 0xf8, 0xd, 0x51, 0x5c, 0x79, 0x2b, 0x4, 0xa5, - 0x8b, 0x1c, 0xd6, 0x86, 0xbf, 0xa2, 0xd8, 0xeb, 0xff, 00, - 0x1c, 0xa3, 0xb0, 0xd4, 0xa3, 0xf3, 0x62, 0x16, 0xa0, 0xe0, - 0xd5, 0x1f, 0x1a, 0xf8, 0x22, 0xd3, 0xe1, 0xee, 0xbf, 0x65, - 0xe2, 0x8d, 0x3e, 0xcf, 0xed, 0x1a, 0x72, 0xc8, 0x4, 0xf0, - 0xb7, 0x21, 0x3d, 0xe8, 0x3, 0xbe, 0x8b, 0xc1, 0x76, 0x1e, - 0x2e, 0xf0, 0xe6, 0x9f, 0x7d, 0xe2, 0x8, 0x1d, 0xaf, 0x45, - 0xb8, 0xc9, 0xdc, 0x47, 0x6a, 0xf3, 0xbf, 0x87, 0x3e, 0x2, - 0xd1, 0x75, 0xdd, 0x7b, 0xc4, 0x16, 0xd7, 0xf1, 0xc9, 0x24, - 0x56, 0xb2, 0x6d, 0x88, 0x6f, 0x3c, 0xc, 0xd7, 0xb9, 0xe9, - 0x7a, 0xa5, 0xa6, 0xb3, 0xa1, 0x45, 0x7f, 0x64, 0xea, 0xd0, - 0x4b, 0x16, 0x57, 0x6f, 0x41, 0xc7, 0x4a, 0xf3, 0x2f, 0x84, - 0x4, 0x1f, 0x15, 0x78, 0xab, 0x1f, 0xf3, 0xd8, 0x7f, 0x3a, - 00, 0x83, 0xc6, 0xe2, 0x61, 0xaa, 0xe8, 0xbf, 0xf, 0xb4, - 0x29, 0x5e, 0xda, 0xd6, 0x45, 0xcc, 0xcc, 0xa7, 0x90, 0xb5, - 0xbd, 0x71, 0xf0, 0x63, 0xc3, 0x8d, 0xa4, 0x1b, 0x7b, 0x74, - 0x92, 0x3b, 0xc0, 0xbf, 0x2d, 0xce, 0xf3, 0x9d, 0xde, 0xb5, - 0x8d, 0xf1, 0x16, 0x39, 0xbc, 0x35, 0xf1, 0x3, 0x48, 0xf1, - 0x60, 0x85, 0xe4, 0xb3, 0x51, 0xe5, 0xce, 0xc0, 0x67, 0x66, - 0x6b, 0xb7, 0xb9, 0xf8, 0x89, 0xe1, 0x88, 0x34, 0x86, 0xd4, - 0x6, 0xab, 0x6e, 0xea, 0x13, 0x70, 0x40, 0xdf, 0x31, 0x3e, - 0x98, 0xa0, 0xe, 0x2b, 0xc0, 0x3e, 0x20, 0xd6, 0xe, 0x89, - 0xe2, 0xf, 0xf, 0x4f, 0x33, 0x4d, 0xa9, 0x69, 0xa1, 0x96, - 0x7, 0x3d, 0x48, 0x1d, 0x2b, 0x93, 0xf0, 0x6d, 0xbf, 0x83, - 0x35, 0x24, 0xbb, 0x8f, 0xc5, 0xf2, 0xc8, 0xba, 0xcb, 0xca, - 0xdb, 0xcc, 0xee, 0x54, 0x2f, 0xd2, 0xb7, 0xbc, 0x4, 0x9a, - 0xa2, 0xdb, 0xf8, 0x97, 0xc6, 0x90, 0x5a, 0x13, 0x25, 0xc3, - 0x33, 0xdb, 0xc2, 0xe3, 0x1b, 0xc5, 0x5a, 0xd2, 0xf5, 0x2f, - 0x2, 0x78, 0xeb, 0x49, 0x7b, 0x8f, 0x10, 0x5b, 0xd9, 0xd8, - 0xea, 0xa0, 0x95, 0x9d, 0x58, 0xed, 0x60, 0x7d, 0x68, 0x3, - 0x7f, 0xe1, 0xbf, 0x86, 0xef, 0xbc, 0x3f, 0x77, 0x7e, 0xb0, - 0xea, 0x31, 0xde, 0x68, 0x72, 0xf3, 0x6b, 0xb5, 0xf7, 0x6d, - 0xaf, 0x44, 0xaf, 0x13, 0xf8, 0x5c, 0x7e, 0xc7, 0xe3, 0xdd, - 0x57, 0x4f, 0xd0, 0xee, 0xe5, 0xba, 0xd0, 0x11, 0x72, 0xae, - 0xc7, 0x2a, 0xf, 0xb5, 0x7b, 0x65, 00, 0x15, 0xd, 0xcf, - 0xdc, 0xa9, 0xaa, 0x1b, 0x9f, 0xb9, 0x40, 0x13, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 0x1, 0xe6, 0x76, 0xbf, 0xf2, 0x14, 0xd7, - 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, - 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd7, 0x7, 0x6b, - 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, 0x7f, 0x4a, - 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, 0x2, 0xff, - 00, 0xd0, 0x8d, 00, 0x67, 0xf8, 0x1f, 0xfe, 0x44, 0xbd, - 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, 0xba, 0xa, 0xe7, 0xfc, - 0xf, 0xff, 00, 0x22, 0x5e, 0x97, 0xff, 00, 0x5c, 0xbf, - 0xf6, 0x63, 0x5d, 0x5, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x47, 0x34, 0x31, 0x5c, 0x42, 0xf0, 0xcc, 0x8b, 0x24, - 0x4e, 0xa, 0xb2, 0x30, 0xc8, 0x22, 0xbc, 0x8f, 0xc5, 0x7e, - 0x16, 0x97, 0x40, 0xb9, 0xf3, 0xa1, 0xc, 0xfa, 0x7c, 0xad, - 0xf2, 0x39, 0xe4, 0xc6, 0x7f, 0xba, 0xdf, 0xd0, 0xf7, 0xaf, - 0x60, 0xa8, 0x6e, 0xad, 0x61, 0xbd, 0xb6, 0x92, 0xda, 0xe2, - 0x35, 0x92, 0x19, 0x17, 0x6b, 0xa3, 0x74, 0x22, 0xbb, 0x30, - 0x58, 0xc9, 0xe1, 0x67, 0x75, 0xb3, 0xdd, 0x1c, 0xd8, 0x9c, - 0x34, 0x6b, 0xc6, 0xcf, 0x7e, 0x87, 0x81, 0x51, 0x5b, 0xbe, - 0x27, 0xf0, 0xd4, 0xde, 0x1f, 0xbc, 0xe3, 0x74, 0x96, 0x52, - 0x9f, 0xdc, 0xca, 0x7b, 0x7f, 0xb2, 0xde, 0xff, 00, 0xce, - 0xb0, 0xab, 0xec, 0x29, 0x55, 0x85, 0x58, 0x29, 0xc1, 0xdd, - 0x33, 0xe7, 0x27, 0x9, 0x53, 0x93, 0x8c, 0xb7, 0x3b, 0x9f, - 0xc, 0xff, 00, 0xc7, 0x97, 0x87, 0x7f, 0xec, 0x23, 0x37, - 0xfe, 0x8b, 0x35, 0x44, 0x3e, 0x8f, 0x73, 0xac, 0x58, 0x43, - 0x6, 0xa9, 0xa8, 0xdd, 0x16, 0xbe, 0x41, 0x24, 0x57, 0x47, - 0xf7, 0x7b, 0x77, 0x73, 0xfa, 0xe2, 0xb2, 0x2c, 0x75, 0xfb, - 0xbb, 0x8, 0xac, 0xe3, 0x85, 0x62, 0x22, 0xd2, 0x66, 0x9e, - 0x3d, 0xca, 0x4e, 0x59, 0x86, 0xe, 0x79, 0xe9, 0x83, 0x52, - 0xea, 0x1e, 0x24, 0xb8, 0xd4, 0x6d, 0xbc, 0x96, 0xb3, 0xb1, - 0x80, 0xef, 0xe, 0x24, 0xb7, 0x87, 0x63, 0x82, 0xe, 0x7a, - 0xe6, 0xbc, 0xf7, 0x85, 0xab, 0xed, 0x5c, 0xba, 0x3b, 0xf5, - 0xf3, 0x7e, 0x5e, 0x67, 0x5f, 0xb7, 0x87, 0xb3, 0x4b, 0xb7, - 0xf9, 0x2f, 0xf2, 0x2d, 0xea, 0x1a, 0x86, 0xb5, 0x26, 0xb5, - 0xaf, 0x45, 0x3, 0xcb, 0x2a, 0x1f, 0x31, 0x6e, 0x23, 0x23, - 0x70, 0x48, 0x81, 0xc6, 0x70, 0x7a, 0x60, 0x63, 0x9a, 0x7f, - 0x86, 0x1a, 0xd6, 0xd, 0xb, 0x5f, 0xb8, 0xb9, 0x69, 0xd5, - 0x12, 0x38, 0x83, 0x1b, 0x76, 0xc4, 0x9b, 0x4b, 0x1e, 0x1, - 0xed, 0x93, 0x8a, 0xab, 0x7b, 0xe2, 0xcd, 0x46, 0xfa, 0xc2, - 0x4b, 0x59, 0x12, 0xd9, 0xc, 0xca, 0x16, 0x79, 0xa3, 0x8b, - 0x6c, 0x92, 0x81, 0xd9, 0x8d, 0x51, 0xd2, 0xb5, 0x6b, 0x8d, - 0x22, 0x79, 0x1e, 0x14, 0x8a, 0x54, 0x95, 0x36, 0x4b, 0xc, - 0xc9, 0xb9, 0x1c, 0x7b, 0x8a, 0xd3, 0xd8, 0x54, 0x74, 0x1c, - 0x39, 0x52, 0x7a, 0x6d, 0xd6, 0xd6, 0xeb, 0xf2, 0xd0, 0x8f, - 0x6b, 0x5, 0x55, 0x4a, 0xed, 0xad, 0x77, 0xf3, 0xb9, 0xd8, - 0x69, 0x97, 0x32, 0xd9, 0x78, 0xf8, 0xda, 0xb3, 0x8b, 0xa3, - 0x78, 0x11, 0x85, 0xd4, 0xca, 0x3c, 0xd1, 0x17, 0x96, 0x48, - 0x5e, 0x3a, 0x76, 0xc9, 0xf6, 0xac, 0xaf, 0xe, 0xdf, 0xd9, - 0x41, 0x60, 0xd6, 0x17, 0x7, 0x50, 0x8e, 0x4b, 0xbb, 0xe5, - 0x2, 0x6b, 0x56, 0xd8, 0x7, 0x18, 0x1f, 0x37, 0x7e, 0x4f, - 0x4a, 0xc8, 0x4d, 0x7a, 0xf5, 0x75, 0xe1, 0xac, 0x93, 0x1b, - 0xdd, 0x3, 0x90, 0xa, 0xfc, 0xa0, 0x6d, 0xdb, 0x8c, 0x7a, - 0x1, 0x52, 0x69, 0x7e, 0x23, 0xbc, 0xd2, 0x60, 0x78, 0x62, - 0x8e, 0xde, 0x68, 0xcc, 0x9e, 0x6a, 0x9, 0xe3, 0xdd, 0xe5, - 0xc9, 0xfd, 0xe5, 0xf4, 0x35, 0x9c, 0xb0, 0x93, 0xe5, 0x7a, - 0x6a, 0xd4, 0x7a, 0xdb, 0x55, 0x7f, 0xf8, 0x5, 0xac, 0x44, - 0x79, 0x96, 0xba, 0x5d, 0xfd, 0xce, 0xdf, 0xf0, 0x4e, 0xbe, - 0xca, 0x29, 0xb4, 0xeb, 0xcd, 0x2, 0xc9, 0x66, 0x67, 0xcd, - 0xed, 0xe2, 0x4e, 0x73, 0xfe, 0xb4, 0x8c, 0x8c, 0xb7, 0xaf, - 0x15, 0x16, 0x9c, 0x50, 0x69, 0xb6, 0x36, 0xa2, 0x57, 0x17, - 0xef, 0x65, 0x74, 0x2d, 0x61, 0x4, 0xf9, 0x4f, 0x19, 0x27, - 0x97, 0xff, 00, 0x6b, 00, 0xd7, 0x31, 0x65, 0xe2, 0x8d, - 0x4a, 0xca, 0xd6, 0x68, 0x50, 0xc5, 0x23, 0x48, 0xef, 0x22, - 0xcb, 0x22, 0x65, 0xe3, 0x66, 0xfb, 0xc5, 0x4f, 0x6c, 0xd2, - 0x5a, 0xf8, 0x9a, 0xfe, 0xd3, 0x4c, 0x16, 0x31, 0xa5, 0xb9, - 0xd8, 0x8d, 0x1c, 0x53, 0xb4, 0x79, 0x96, 0x34, 0x6e, 0xa1, - 0x5a, 0xb2, 0x96, 0x6, 0xb3, 0xbe, 0xdf, 0xe7, 0xf1, 0x6b, - 0xf8, 0xec, 0x5a, 0xc5, 0x53, 0x5f, 0xd7, 0xa7, 0xf9, 0x18, - 0xab, 0xf7, 0x47, 0xd2, 0x96, 0x8e, 0x83, 0x15, 0xa3, 0xa2, - 0xe8, 0xb7, 0x5a, 0xee, 0xa0, 0xb6, 0xb6, 0xc3, 0x3, 0xac, - 0x92, 0x11, 0xc4, 0x6b, 0xea, 0x7f, 0xa0, 0xaf, 0x5e, 0x73, - 0x8c, 0x22, 0xe5, 0x27, 0x64, 0x8f, 0x3e, 0x31, 0x72, 0x6a, - 0x31, 0xdc, 0x97, 0x40, 0xd0, 0x6e, 0x75, 0xfb, 0xf1, 0x4, - 0x39, 0x48, 0x53, 0x6, 0x69, 0x88, 0xe1, 0x7, 0xf5, 0x27, - 0xb0, 0xaf, 0x63, 0xd3, 0xb4, 0xfb, 0x6d, 0x2e, 0xc6, 0x3b, - 0x4b, 0x48, 0xc2, 0x45, 0x18, 0xe0, 0x77, 0x27, 0xb9, 0x27, - 0xb9, 0x35, 0x1e, 0x93, 0xa5, 0x5a, 0xe8, 0xd6, 0x11, 0xda, - 0x5a, 0x26, 0xd4, 0x5e, 0x4b, 0x1e, 0xae, 0x7b, 0x93, 0xef, - 0x57, 0xab, 0xe4, 0x71, 0xf8, 0xe9, 0x62, 0x67, 0x65, 0xa4, - 0x56, 0xdf, 0xe6, 0x7d, 0x16, 0x13, 0xa, 0xa8, 0x46, 0xef, - 0xe2, 0x61, 0x45, 0x14, 0x57, 0x9e, 0x76, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, - 0xb4, 0x6b, 0x3b, 0x56, 0x4, 0x44, 0x92, 0x7f, 0xa, 0x12, - 0x4f, 0xe5, 0x40, 0x17, 0x2d, 0xff, 00, 0xd4, 0x27, 0xd2, - 0xa5, 0xa8, 0x2c, 0xe4, 0x59, 0x2d, 0x90, 0xa9, 0xed, 0x53, - 0xd0, 0x1, 0x50, 0xdd, 0x5a, 0x5b, 0xdf, 0x5b, 0xbd, 0xbd, - 0xd4, 0x29, 0x2c, 0x4e, 0x30, 0xc8, 0xe3, 0x20, 0xd4, 0xd4, - 0x50, 0x7, 0x17, 0xff, 00, 0xa, 0xaf, 0xc2, 0x7f, 0x6a, - 0xf3, 0xff, 00, 0xb3, 0x53, 0x19, 0xce, 0xcf, 0xe1, 0xae, - 0x96, 0x6d, 0x17, 0x4e, 0x9f, 0x4b, 0x3a, 0x63, 0xda, 0x44, - 0x6c, 0xca, 0xed, 0xf2, 0xb1, 0xc6, 0x2a, 0xfd, 0x14, 0x1, - 0xc8, 0x5b, 0xfc, 0x34, 0xf0, 0xc4, 0x1b, 0x81, 0xd3, 0xd2, - 0x40, 0x7a, 0x7, 0xe4, 0x2f, 0xd2, 0xb5, 0x66, 0xf0, 0xa6, - 0x91, 0x3e, 0x9f, 0x6f, 0x63, 0x25, 0xaa, 0xb4, 0x16, 0xed, - 0xba, 0x35, 0x3f, 0xc2, 0x6b, 0x6a, 0x8a, 00, 0xcd, 0xd5, - 0x74, 0x1d, 0x37, 0x5b, 0xb2, 0x16, 0x9a, 0x85, 0xac, 0x73, - 0x44, 0x6, 0x14, 0x30, 0xe9, 0xf4, 0xac, 0xdd, 0x17, 0xc0, - 0x9a, 0x6, 0x85, 0x73, 0xf6, 0x9b, 0x4b, 0x24, 0xf3, 0xfb, - 0x48, 0xc3, 0x25, 0x7e, 0x95, 0xd2, 0x51, 0x40, 0x19, 0x87, - 0x40, 0xd3, 0x9b, 0x5a, 0xfe, 0xd7, 0x30, 0x2f, 0xdb, 0x36, - 0xed, 0xf3, 0x3b, 0xe2, 0xad, 0x6a, 0x1a, 0x7d, 0xb6, 0xa9, - 0x65, 0x25, 0x9d, 0xe4, 0x4b, 0x2c, 0x12, 0xc, 0x32, 0xb0, - 0xeb, 0x56, 0x68, 0xa0, 0xa, 0x1a, 0x4e, 0x8f, 0x67, 0xa2, - 0xe9, 0xeb, 0x63, 0x65, 0x1f, 0x97, 0x6e, 0xb9, 0xc2, 0xfa, - 0x54, 0x7a, 0x66, 0x83, 0xa7, 0x69, 0x17, 0x37, 0x13, 0xd9, - 0xdb, 0xac, 0x72, 0x5c, 0x1c, 0xc8, 0x47, 0xf1, 0x1a, 0xd3, - 0xa2, 0x80, 0x2b, 0xde, 0x59, 0x5b, 0x6a, 0x36, 0xcf, 0x6d, - 0x79, 0x2, 0x4d, 0xb, 0xfd, 0xe4, 0x71, 0x90, 0x6b, 0x94, - 0x8f, 0xe1, 0x6f, 0x85, 0x23, 0xbb, 0x13, 0xff, 00, 0x67, - 0x21, 0xc1, 0xc8, 0x43, 0xf7, 0x6b, 0xb3, 0xa2, 0x80, 0x22, - 0x86, 0xda, 0x1b, 0x6b, 0x75, 0x82, 0x18, 0x91, 0x22, 0x51, - 0x80, 0x8a, 0x30, 00, 0xae, 0x5b, 0x53, 0xf8, 0x6b, 0xe1, - 0x8d, 0x52, 0xed, 0xae, 0x66, 0xd3, 0xa3, 0x59, 0x58, 0xe5, - 0x8a, 0xc, 0x6e, 0xae, 0xba, 0x8a, 00, 0xcd, 0xd1, 0xb4, - 0xd, 0x33, 0x40, 0xb5, 0xfb, 0x3e, 0x9b, 0x69, 0x1c, 0x9, - 0xdf, 0x68, 0xe4, 0xfd, 0x6b, 0x4a, 0x8a, 0x28, 00, 0xa8, - 0x6e, 0x7f, 0xd5, 0xd4, 0xd5, 0x4e, 0xfa, 0xe6, 0x38, 0x82, - 0xab, 0x1e, 0x58, 0xe0, 0xa, 00, 0xb9, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x99, 0xda, 0xff, 00, 0xc8, 0x53, 0x5c, - 0xff, 00, 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, 0x13, 0xfe, - 0x40, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x5c, 0x1d, 0xaf, - 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, 0x2b, 0xbc, - 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, 00, 0x42, - 0x34, 0x1, 0x9f, 0xe0, 0x7f, 0xf9, 0x12, 0xf4, 0xbf, 0xfa, - 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, 0x2b, 0x9f, 0xf0, 0x3f, - 0xfc, 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, - 0x74, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 0x1, 0x5e, 0xfa, 0xc6, 0xdf, 0x52, 0xb3, 0x92, - 0xd2, 0xea, 0x31, 0x24, 0x32, 0xc, 0x30, 0x3f, 0xcc, 0x7a, - 0x1a, 0xf2, 0xeb, 0xff, 00, 00, 0xeb, 0x36, 0xf7, 0xb2, - 0x47, 0x67, 00, 0xb9, 0xb7, 0x7, 0xe4, 0x97, 0xcc, 0x45, - 0x24, 0x7a, 0x10, 0x48, 0xe6, 0xbd, 0x66, 0x8a, 0xec, 0xc2, - 0xe3, 0xaa, 0xe1, 0xaf, 0xc9, 0xb3, 0xe8, 0xce, 0x6c, 0x46, - 0x16, 0x9d, 0x7b, 0x73, 0x1e, 0x3b, 0xff, 00, 0x8, 0x3f, - 0x88, 0xbf, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa3, 0xff, 00, - 0xe2, 0xa8, 0xff, 00, 0x84, 0x1f, 0xc4, 0x5f, 0xf4, 0xf, - 0xff, 00, 0xc8, 0xd1, 0xff, 00, 0xf1, 0x55, 0xec, 0x54, - 0x57, 0x67, 0xf6, 0xde, 0x23, 0xb2, 0xfc, 0x7f, 0xcc, 0xe6, - 0xfe, 0xcb, 0xa3, 0xdd, 0xfe, 0x1f, 0xe4, 0x78, 0xef, 0xfc, - 0x20, 0xfe, 0x22, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x8f, - 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x7f, 0x11, 0x7f, 0xd0, - 0x3f, 0xff, 00, 0x23, 0x47, 0xff, 00, 0xc5, 0x57, 0xb1, - 0x51, 0x47, 0xf6, 0xde, 0x23, 0xb2, 0xfc, 0x7f, 0xcc, 0x3f, - 0xb2, 0xe8, 0xf7, 0x7f, 0x87, 0xf9, 0x1e, 0x3b, 0xff, 00, - 0x8, 0x3f, 0x88, 0xbf, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa3, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x1f, 0xc4, 0x5f, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd1, 0xff, 00, 0xf1, 0x55, - 0xec, 0x54, 0x51, 0xfd, 0xb7, 0x88, 0xec, 0xbf, 0x1f, 0xf3, - 0xf, 0xec, 0xba, 0x3d, 0xdf, 0xe1, 0xfe, 0x47, 0x8e, 0xff, - 00, 0xc2, 0xf, 0xe2, 0x2f, 0xfa, 0x7, 0xff, 00, 0xe4, - 0x68, 0xff, 00, 0xf8, 0xaa, 0x3f, 0xe1, 0x7, 0xf1, 0x17, - 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x7f, 0xfc, 0x55, 0x7b, - 0x15, 0x14, 0x7f, 0x6d, 0xe2, 0x3b, 0x2f, 0xc7, 0xfc, 0xc3, - 0xfb, 0x2e, 0x8f, 0x77, 0xf8, 0x7f, 0x91, 0xe4, 0x11, 0x78, - 0x13, 0xc4, 0x12, 0x4c, 0x88, 0xf6, 0x6b, 0x12, 0xb1, 00, - 0xc8, 0xd2, 0xa1, 0xa, 0x3d, 0x70, 0xe, 0x6b, 0xd3, 0xb4, - 0x5d, 0x16, 0xd7, 0x43, 0xd3, 0xd6, 0xd6, 0xd9, 0x73, 0xde, - 0x49, 0x8, 0xf9, 0xa4, 0x6f, 0x53, 0x5a, 0x34, 0x57, 0x2e, - 0x2b, 0x30, 0xad, 0x89, 0x4a, 0x33, 0xd1, 0x79, 0x1d, 0x14, - 0x30, 0x74, 0xe8, 0x3b, 0xc7, 0x7f, 0x30, 0xa2, 0x8a, 0x2b, - 0x84, 0xea, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0xa, 0x6c, 0x91, 0xac, 0xb1, 0xb4, 0x6e, 0x32, 0xac, 0x30, - 0x45, 0x3a, 0x8a, 00, 0xc6, 0x3a, 0x6d, 0xdd, 0xa1, 0x22, - 0xd6, 0x56, 0x74, 0xec, 0xa4, 0x81, 0x8a, 0x6f, 0x97, 0xab, - 0x7f, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xb7, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x4f, 0xb4, 0xd2, 0x25, - 0x37, 0x2b, 0x73, 0x7b, 0x33, 0x48, 0xca, 0x72, 0xa9, 0xc6, - 0x5, 0x6c, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x1e, 0x67, 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, - 0x73, 0x7f, 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, - 0x14, 0xd7, 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, - 0xff, 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, - 0x6, 0x4d, 0xaf, 0x84, 0xae, 0xac, 0x2d, 0xd6, 0xda, 0xcb, - 0xc5, 0x7a, 0xd5, 0xbd, 0xb2, 0x67, 0xcb, 0x85, 0x63, 0xb4, - 0x60, 0x83, 0x39, 0xc0, 0x2d, 0x1, 0x24, 0x73, 0xdc, 0x93, - 0x58, 0x57, 0xb, 0xaf, 0x45, 0x73, 0x2c, 0x6b, 0xe2, 0xfd, - 0x58, 0xaa, 0x39, 0x51, 0x98, 0x2c, 0xfb, 0x1f, 0xfa, 0xe1, - 0x5d, 0x19, 0xf1, 0xbf, 0x87, 0x37, 0x10, 0x35, 0x35, 0x6c, - 0x12, 0x32, 0x91, 0xbb, 0xe, 0x38, 0xe0, 0x81, 0x83, 0x59, - 0xf2, 0x6b, 0x9e, 0xf, 0x92, 0x46, 0x91, 0xaf, 0x18, 0xb3, - 0x12, 0x4f, 0xee, 0xe5, 0xea, 0x7f, 0xa, 00, 0xc7, 0xdd, - 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, - 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, - 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, - 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, - 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, - 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, - 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, - 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, - 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, - 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, - 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, - 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, - 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, - 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, - 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, - 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, - 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, - 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, - 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, - 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, - 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, - 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, - 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, - 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, - 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, - 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, - 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, - 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, - 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, - 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, - 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, - 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, - 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, - 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, - 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, - 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, - 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, - 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, - 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, - 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, - 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, - 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, - 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, - 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, - 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, - 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, - 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, - 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, - 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, - 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, - 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, - 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, - 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, - 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, - 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, - 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, - 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, - 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, - 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, - 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, - 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, - 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, - 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, - 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, - 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, - 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, - 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, - 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, - 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, - 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, - 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, - 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, - 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, - 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, - 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, - 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, - 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, - 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, - 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, - 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, - 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, - 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, - 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, - 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, - 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, - 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, - 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, - 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, - 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, - 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, - 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, - 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, - 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, - 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, - 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, - 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, - 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, - 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, - 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, - 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, - 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, - 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, - 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, - 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, - 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, - 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, - 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, - 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, - 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, - 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, - 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, - 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, - 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, - 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, - 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, - 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, - 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, - 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, - 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, - 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, - 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, - 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, - 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, - 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, - 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, - 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, - 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, - 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, - 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, - 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, - 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, - 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, - 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, - 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, - 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, - 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, - 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, - 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, - 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, - 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, - 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, - 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, - 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, - 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, - 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, - 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, - 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, - 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, - 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, - 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, - 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, - 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, - 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, - 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, - 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, - 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, - 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, - 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, - 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, - 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, - 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, - 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, - 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, - 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, - 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, - 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, - 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, - 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, - 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, - 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, - 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, - 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, - 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, - 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, - 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, - 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, - 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, - 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, - 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, - 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, - 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, - 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, - 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, - 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, - 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, - 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, - 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, - 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, - 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, - 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, - 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, - 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, - 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, - 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, - 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, - 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, - 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, - 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, - 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, - 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, - 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, - 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, - 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, - 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, - 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, - 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, - 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, - 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, - 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, - 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, - 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, - 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, - 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, - 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, - 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, - 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, - 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, - 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, - 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, - 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, - 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, - 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, - 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, - 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, - 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, - 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, - 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, - 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, - 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, - 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, - 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, - 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, - 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, - 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, - 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, - 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, - 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, - 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, - 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, - 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, - 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, - 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, - 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, - 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, - 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, - 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, - 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, - 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, - 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, - 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, - 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, - 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, - 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, - 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, - 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, - 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, - 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, - 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, - 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, - 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, - 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, - 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, - 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, - 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, - 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, - 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, - 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, - 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, - 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, - 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, - 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, - 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, - 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, - 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x7b, 0x1b, 0x33, 0x66, - 0x93, 0x6f, 0xb9, 0x9a, 0xea, 0x69, 0xa5, 0x69, 0xa5, 0x9a, - 0x60, 0x81, 0x9d, 0x9b, 0xa9, 0xc2, 0x2a, 0xa8, 0xfc, 00, - 0xae, 0xeb, 0x44, 0xff, 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, - 0xfd, 0x8, 0xd5, 0x2d, 0x36, 0xd7, 0x42, 0xd5, 0xed, 0x3e, - 0xd5, 0x60, 0xe2, 0x78, 0x77, 0x14, 0x2c, 0xae, 0xc3, 0xc, - 0x3a, 0x82, 0xf, 0x20, 0xd6, 0xcd, 0xbc, 0x11, 0xdb, 0x40, - 0xb0, 0xc4, 0x30, 0x8b, 0x9c, 0xc, 0xe7, 0xbe, 0x68, 0x3, - 0xf, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, - 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, 0xf9, - 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 0x3, 0x9a, 0xf0, 0xcd, 0xd5, 0xbc, 0x4f, 0xad, 0xa4, - 0x93, 0xc4, 0x8d, 0xfd, 0xab, 0x3f, 0xc, 0xe0, 0x1f, 0xe1, - 0xae, 0x8d, 0x24, 0x49, 0x50, 0x3c, 0x6e, 0xae, 0xa7, 0xa3, - 0x29, 0xc8, 0x35, 0xe6, 0xb6, 0xbf, 0xf2, 0x14, 0xd7, 0x3f, - 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, 0x90, - 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, 0x7f, 0x81, - 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, 0xfe, - 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, 0xf2, 0x25, - 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x4c, 0x96, 0x45, - 0x8a, 0x32, 0xed, 0xd0, 0xc, 0xd3, 0xeb, 0x3f, 0x54, 0x62, - 0x4, 0x43, 0xb1, 0x27, 0x3f, 0x95, 00, 0x5a, 0x85, 0xda, - 0x68, 0xc3, 0xb2, 0xed, 0x7, 0xa6, 0xd, 0x4b, 0xb4, 0x7b, - 0xfe, 0x66, 0xa3, 0xb7, 0xff, 00, 0x50, 0x9f, 0x4a, 0x96, - 0x80, 0x13, 0x68, 0xf7, 0xfc, 0xcd, 0x1b, 0x47, 0xbf, 0xe6, - 0x69, 0x68, 0xa0, 0x4, 0xda, 0x3d, 0xff, 00, 0x33, 0x46, - 0xd1, 0xef, 0xf9, 0x9a, 0x5a, 0x28, 0x1, 0x36, 0x8f, 0x7f, - 0xcc, 0xd1, 0xb4, 0x7b, 0xfe, 0x66, 0x96, 0x8a, 00, 0x4d, - 0xa3, 0xdf, 0xf3, 0x34, 0x6d, 0x1e, 0xff, 00, 0x99, 0xa5, - 0xa4, 0xdc, 0x3d, 0x68, 00, 0xda, 0x7, 0xaf, 0xe6, 0x6a, - 0x8d, 0xbe, 0xaf, 0xa6, 0xdd, 0x5d, 0x3d, 0xac, 0x37, 0x91, - 0xbc, 0xe9, 0xf7, 0xa3, 0xc, 0x72, 0x2a, 0xfd, 0x78, 0xe7, - 0xc6, 0xd, 0x6, 0xe3, 0x4e, 0x36, 0xfe, 0x23, 0xd1, 0xe4, - 0x7b, 0x7b, 0x84, 0x6c, 0x4b, 0xe5, 0xf0, 0x8, 0xf5, 0x34, - 0xd0, 0x9b, 0xb1, 0xec, 0x5b, 0x47, 0xbf, 0xe6, 0x68, 0xda, - 0x3d, 0xff, 00, 0x33, 0x5e, 0x67, 0xf0, 0xcb, 0xe2, 0x52, - 0xf8, 0x8e, 0x15, 0xd3, 0x75, 0x36, 0x54, 0xd4, 0x10, 0x61, - 0x5b, 0xb4, 0x95, 0xe9, 0xb4, 0x9a, 0xb0, 0x27, 0x71, 0x36, - 0x8f, 0x7f, 0xcc, 0xd1, 0xb4, 0x7b, 0xfe, 0x66, 0x96, 0x8a, - 0x6, 0x26, 0xd1, 0xef, 0xf9, 0x9a, 0x36, 0x8f, 0x7f, 0xcc, - 0xd2, 0xd1, 0x40, 0x9, 0xb4, 0x7b, 0xfe, 0x66, 0x8d, 0xa3, - 0xdf, 0xf3, 0x34, 0xb4, 0x50, 0x2, 0x6d, 0x1e, 0xff, 00, - 0x99, 0xa4, 0x27, 0x69, 0x3, 0x1c, 0x1f, 0x7a, 0x75, 0x45, - 0x33, 0x15, 0x5c, 0x8a, 00, 0x96, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0xf, 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, 0xff, - 00, 0x61, 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, 0x81, - 0xe0, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, 0x5f, - 0xf9, 0xa, 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, 0x79, - 0xa2, 0x7f, 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, 0x68, - 0x3, 0x3f, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, - 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, - 0xf9, 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, - 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xac, - 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, 0x8d, 0x67, - 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, 0x5b, - 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, 00, - 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x53, 0x25, 0x90, 0x45, 0x1b, - 0x39, 0xe8, 0x5, 00, 0x45, 0x3c, 0xe1, 0xe, 0xdc, 0xd3, - 0x2d, 0xe4, 0xf3, 0x25, 0xc7, 0x6a, 0xc9, 0x96, 0xeb, 0x73, - 0x33, 0x13, 0x57, 0x34, 0x97, 0xf3, 0x4b, 0xb7, 0xa7, 0x15, - 0x5d, 0x9, 0xbe, 0xa6, 0xad, 0x60, 0xf8, 0xcb, 0x4f, 0x1a, - 0x9f, 0x84, 0xf5, 0xb, 0x6d, 0xb9, 0x2d, 0x19, 0xdb, 0xf5, - 0xad, 0xea, 0x64, 0xc8, 0x24, 0x81, 0xd0, 0x8c, 0x86, 0x52, - 0x2a, 0x46, 0xf6, 0x3e, 0x41, 0xb5, 0x92, 0xe3, 0x47, 0xd4, - 0x92, 0x7b, 0x77, 0x29, 0x35, 0xbb, 0xf5, 0x1e, 0xd5, 0xf5, - 0x1f, 0x84, 0x3c, 0x41, 0x17, 0x88, 0xfc, 0x3f, 0x6f, 0x7a, - 0xa4, 0x79, 0x85, 0x70, 0xeb, 0xe8, 0x6b, 0xe6, 0xed, 0x66, - 0xcf, 0xc9, 0xd6, 0xef, 0x93, 0x1f, 0xf2, 0xd9, 0xbf, 0x9d, - 0x77, 0x5f, 0x8, 0x75, 0xb3, 0x61, 0xad, 0x49, 0xa5, 0xc8, - 0xdf, 0xbb, 0xb9, 0xe5, 0x72, 0x78, 0x4, 0x56, 0xb2, 0x8e, - 0x97, 0x39, 0x69, 0xd4, 0xb4, 0xac, 0x7b, 0xad, 0x14, 0x51, - 0x59, 0x1d, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x50, 0xdc, 0x7d, 0xca, 0x9a, 0xa1, 0xb8, 0xfb, 0x94, - 0x1, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, 0x67, 0x6b, - 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, 0x7f, 0x4a, - 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, 0x2, 0xff, - 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, 0x14, 0xd7, 0x3f, - 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, 0x90, - 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, 0x7f, 0x81, - 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, 0xfe, - 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, 0xf2, 0x25, - 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x50, - 0x1, 0x45, 0x15, 0xe7, 0x1f, 0x13, 0xbc, 0x67, 0xab, 0x69, - 0x57, 0x7a, 0x5f, 0x85, 0xbc, 0x2e, 0x10, 0xf8, 0x83, 0x57, - 0x6c, 0x47, 0x23, 0x60, 0xf9, 0x11, 0xe7, 0x1b, 0xb0, 0x78, - 0xe7, 0x7, 0x93, 0xd0, 0x29, 0xf6, 0xa4, 0xdf, 0x41, 0xa5, - 0xd4, 0xf4, 0x7a, 0x2b, 0xc6, 0xe0, 0xfd, 0x9f, 0x74, 0xeb, - 0xf8, 0x85, 0xd7, 0x89, 0xbc, 0x47, 0xac, 0x6a, 0x1a, 0xb4, - 0x98, 0x33, 0x5c, 0x47, 0x2a, 0x80, 0x78, 00, 0xc, 0xba, - 0xb3, 0x1c, 0x74, 0xc9, 0x3c, 0xe3, 0xa0, 0xe9, 0x55, 0x61, - 0xb8, 0xf1, 0x17, 0xc1, 0xbf, 0x12, 0x69, 0xb6, 0x3a, 0x8e, - 0xab, 0x36, 0xb1, 0xe1, 0xd, 0x42, 0x41, 0x6d, 0x14, 0x93, - 0x9f, 0x9e, 0xd0, 0xf4, 0x50, 0x32, 0x4e, 00, 00, 0x70, - 0x3e, 0x52, 0x1, 0x20, 0x3, 0x54, 0xb7, 0x4b, 0xb9, 0x2d, - 0xe9, 0x73, 0xdb, 0xa8, 0xaf, 0x22, 0xf8, 0xf3, 0x67, 0x1e, - 0xa3, 0x61, 0xe1, 0x6b, 0x29, 0x59, 0x84, 0x57, 0x3a, 0xba, - 0x42, 0xe5, 0x8, 0xc8, 0x56, 0x4, 0x1c, 0x7b, 0xf3, 0x4c, - 0xff, 00, 0x86, 0x71, 0xf0, 0x7f, 0xfd, 0x4, 0xb5, 0xcf, - 0xfb, 0xff, 00, 0xf, 0xff, 00, 0x1a, 0xa9, 0x5a, 0xdf, - 0xfa, 0xed, 0xfe, 0x63, 0x67, 0xb0, 0x51, 0x5e, 0x37, 0xf0, - 0xfc, 0xea, 0xde, 0xa, 0xf8, 0x9f, 0x7d, 0xe0, 0x1b, 0x9d, - 0x4a, 0x7d, 0x43, 0x49, 0x36, 0xbf, 0x69, 0xb0, 0x33, 0x36, - 0x5a, 0x15, 0x18, 0xc0, 0xf6, 0x18, 0xc8, 0x20, 0x71, 0x91, - 0x90, 0x6, 0x6b, 0x9, 0x3e, 0x1e, 0xe9, 0x3e, 0x3f, 0xf8, - 0xc5, 0xe3, 0x48, 0x75, 0x5b, 0x8b, 0xd8, 0x56, 0xd1, 0xe2, - 0x78, 0xcd, 0xab, 0xa2, 0x92, 0x59, 0x70, 0x73, 0xb9, 0x5b, - 0xd2, 0x9e, 0xed, 0x25, 0xd5, 0x37, 0xf7, 0x6, 0xc9, 0xdf, - 0xa5, 0xbf, 0x13, 0xe8, 0x1a, 0x2b, 0xc7, 0xff, 00, 0xe1, - 0x9c, 0x7c, 0x1f, 0xff, 00, 0x41, 0x2d, 0x73, 0xfe, 0xff, - 00, 0xc3, 0xff, 00, 0xc6, 0xab, 0xd0, 0x6c, 0x74, 0x2b, - 0x5f, 0xc, 0xf8, 0x20, 0xe8, 0xd6, 0x52, 0x4d, 0x25, 0xb5, - 0xa5, 0xac, 0x88, 0x8d, 0x31, 0x5, 0xc8, 0xc3, 0x1e, 0x48, - 00, 0x77, 0xf4, 0xa5, 0x27, 0x68, 0xb6, 0x9, 0x37, 0x24, - 0x8d, 0xfa, 0x2b, 0xe6, 0x3f, 0x83, 0x5e, 0x29, 0xbd, 0xf0, - 0x65, 0xd5, 0x9c, 0x5a, 0xa6, 0x57, 0xc3, 0x9a, 0xec, 0xad, - 0x1c, 0x53, 0x13, 0xf2, 0xc3, 0x70, 0xa4, 0x2e, 0x4f, 0xa6, - 0x78, 0x7, 0xd8, 0xa9, 0xec, 0x6b, 0xdd, 0xbe, 0x22, 0xff, - 00, 0xc9, 0x37, 0xf1, 0x27, 0xfd, 0x83, 0xa6, 0xff, 00, - 0xd0, 0xd, 0x39, 0xfb, 0xb1, 0xe6, 0x8, 0xfb, 0xce, 0xc7, - 0x4d, 0x45, 0x78, 0xe5, 0xd7, 0xfc, 0x9a, 0xe2, 0xff, 00, - 0xd8, 0x31, 0x3f, 0xf4, 0x31, 0x5e, 0x71, 0xf0, 0xfb, 0xe0, - 0xc7, 0xfc, 0x27, 0x7e, 0x19, 0xfe, 0xd9, 0xfe, 0xdf, 0xfb, - 0xf, 0xef, 0xde, 0x1f, 0x27, 0xec, 0x7e, 0x6f, 0xdd, 0xc7, - 0x39, 0xde, 0xbe, 0xbe, 0x94, 0x59, 0xf3, 0xca, 0x3d, 0x84, - 0x9a, 0xe5, 0x52, 0xee, 0x7d, 0x55, 0x45, 0x7c, 0xa1, 0xae, - 0xe9, 0x1a, 0xdf, 0xc0, 0xff, 00, 0x18, 0xe9, 0xf2, 0x69, - 0xba, 0xe7, 0xda, 0x92, 0xe1, 0x44, 0xac, 0xa8, 0xc, 0x42, - 0x65, 0x53, 0x82, 0x92, 0x47, 0x92, 0x8, 0xe4, 0xe0, 0xe4, - 0xfa, 0x8c, 0x11, 0x5e, 0xf5, 0xf1, 0x17, 0xc0, 0x9f, 0xf0, - 0xb1, 0x74, 0xb, 0x2b, 0x1f, 0xed, 0x13, 0xa7, 0x79, 0x33, - 0x8b, 0x8d, 0xe6, 0xf, 0x34, 0x9f, 0x94, 0x8d, 0xb8, 0xdc, - 0xb8, 0xfb, 0xdf, 0xa5, 0x1b, 0xc7, 0x99, 0x7a, 0xf, 0x69, - 0x59, 0x9d, 0xad, 0x15, 0xf1, 0xef, 0xc4, 0xbf, 0x86, 0xbf, - 0xf0, 0xae, 0xee, 0x34, 0xd8, 0xbf, 0xb5, 0xbf, 0xb4, 0x3e, - 0xda, 0xb2, 0x36, 0x7e, 0xcd, 0xe5, 0x6c, 0xda, 0x54, 0x7f, - 0x79, 0xb3, 0x9d, 0xde, 0xdd, 0x2b, 0xd4, 0xbc, 0x33, 0xf0, - 0x4, 0x68, 0x7a, 0xde, 0x99, 0xae, 0xb7, 0x89, 0xc4, 0xa2, - 0xd2, 0x54, 0xb9, 0x31, 0x1b, 0xd, 0xbb, 0xb1, 0xce, 0x37, - 0x79, 0x87, 0x1f, 0x5c, 0x53, 0x8d, 0x9a, 0xbb, 0xd8, 0x52, - 0xba, 0xd3, 0xa9, 0xee, 0x14, 0x57, 0xcc, 0xfa, 0xb6, 0xbd, - 0xe2, 0x8f, 0x8d, 0x3e, 0x36, 0xb8, 0xd0, 0x74, 0x2b, 0xc7, - 0xb4, 0xd0, 0x62, 0xc, 0xa, 0xef, 0x2b, 0x19, 0x88, 0x10, - 0x3c, 0xc9, 0x71, 0xcb, 0x96, 0x38, 0xc2, 0x9e, 0x9c, 0x74, - 0xe5, 0xaa, 0xc6, 0xb5, 0xf0, 0x3f, 0xc4, 0x5e, 0xb, 0xd3, - 0xe4, 0xd7, 0xbc, 0x35, 0xe2, 0x49, 0x2e, 0x2e, 0xed, 0x15, - 0x9d, 0xd6, 0x18, 0x9a, 0xda, 0x5f, 0x2f, 0x1f, 0x36, 0xc2, - 0x1d, 0xb7, 0x71, 0xd5, 0x4e, 0x32, 0x33, 0xd7, 0xa1, 0x9b, - 0xd9, 0x73, 0x4b, 0x44, 0x53, 0x5a, 0xf2, 0xad, 0xcf, 0xa4, - 0x28, 0xaf, 0x37, 0xf8, 0x3d, 0xf1, 0x12, 0x7f, 0x1c, 0xe8, - 0x33, 0xc3, 0xa9, 0x6c, 0xfe, 0xd6, 0xb0, 0x2a, 0xb3, 0x32, - 0x8c, 0x9, 0x90, 0xfd, 0xd7, 0xc7, 0x40, 0x78, 0x20, 0x81, - 0xc7, 0x19, 0xe3, 0x38, 0x1e, 0x67, 0xe2, 0x8b, 0xdd, 0x6f, - 0xe2, 0x8f, 0xc5, 0x9b, 0xcf, 0x7, 0x1d, 0x68, 0x69, 0x9a, - 0x5d, 0xbc, 0xd2, 0x42, 0x90, 0xb3, 0x1d, 0x8d, 0xe5, 0x9e, - 0x4e, 0xc0, 0x47, 0x98, 0xe4, 0x82, 0x40, 0x27, 0x81, 0xe9, - 0x83, 0x4d, 0xa6, 0xa4, 0xa2, 0x84, 0xbe, 0x17, 0x27, 0xd0, - 0xfa, 0x52, 0x8a, 0xf9, 0xce, 0xf7, 0xe0, 0x8f, 0x8c, 0x7c, - 0x1b, 0x35, 0xb6, 0xa7, 0xe0, 0xcd, 0x72, 0x4b, 0xeb, 0xd0, - 0xfb, 0x64, 0x58, 0x82, 0xda, 0x3a, 0xaf, 0x4, 0x7d, 0xe7, - 0x2a, 0xeb, 0x91, 0xca, 0x93, 0xe9, 0xc1, 0xe7, 0x1e, 0xf9, - 0xa1, 0x4b, 0xa9, 0x4f, 0xa0, 0xd8, 0xc9, 0xac, 0xdb, 0xad, - 0xbe, 0xa6, 0xd0, 0xaf, 0xda, 0xa2, 0x56, 0x4, 0x2c, 0x98, - 0xf9, 0xb0, 0x41, 0x23, 0x19, 0xf7, 0x34, 0xf4, 0xb5, 0xc3, - 0xa9, 0xa1, 0x45, 0x14, 0x52, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xac, 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, 0x8d, - 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, - 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x64, 0xeb, 0x97, 0x5e, 0x4d, - 0xba, 0xc7, 0x9e, 0x5e, 0xb5, 0xab, 0x89, 0xf1, 0x2d, 0xf6, - 0x75, 0x16, 0x88, 0x1e, 0x12, 0x9a, 0x44, 0xc9, 0xd9, 0x10, - 0xbd, 0xd7, 0xbd, 0x6f, 0xf8, 0x66, 0x4f, 0x36, 0xd6, 0x56, - 0xff, 00, 0x6a, 0xb8, 0x49, 0x2e, 0xfd, 0xeb, 0xad, 0xf0, - 0x44, 0xfe, 0x6d, 0x9d, 0xc0, 0xcf, 0x21, 0xea, 0x9a, 0xd0, - 0xce, 0x2f, 0x53, 0xab, 0xa4, 0x6f, 0xba, 0x7e, 0x94, 0xb4, - 0x87, 0xee, 0x9f, 0xa5, 0x41, 0xb1, 0xf3, 0x87, 0x8a, 0xad, - 0x40, 0xf1, 0x15, 0xde, 0x7, 0xf1, 0x9a, 0xcc, 0xd3, 0xa4, - 0x93, 0x4e, 0xd5, 0x6d, 0xae, 0xa2, 0x24, 0x32, 0xb8, 0xc9, - 0xf6, 0xcd, 0x75, 0x3e, 0x22, 0x83, 0xcc, 0xd7, 0x2e, 0x9b, - 0x1f, 0xc6, 0x6b, 0xe, 0x6b, 0x52, 0x14, 0xe0, 0x73, 0x5d, - 0xb, 0x63, 0xcc, 0x96, 0x92, 0x3e, 0x8d, 0xd3, 0xee, 0x52, - 0xf2, 0xc2, 0x9, 0xe3, 0x39, 0x57, 0x40, 0x73, 0x56, 0x6b, - 0x94, 0xf8, 0x7d, 0x7b, 0xf6, 0x9f, 0xc, 0x41, 0x11, 0x39, - 0x78, 0x46, 0xd3, 0x5d, 0x5d, 0x60, 0xd5, 0x99, 0xe8, 0xc5, - 0xdd, 0x5c, 0x28, 0xa2, 0x8a, 0x45, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x43, 0x73, 0xf7, 0x2a, 0x6a, 0x86, 0xe7, 0xee, 0x50, - 0x4, 0xd4, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x79, 0x9d, 0xaf, - 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, 0x2b, 0xbc, - 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, 00, 0x42, - 0x35, 0xc1, 0xda, 0xff, 00, 0xc8, 0x53, 0x5c, 0xff, 00, - 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, 0x13, 0xfe, 0x40, 0xf0, - 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x40, 0x19, 0xfe, 0x7, 0xff, - 00, 0x91, 0x2f, 0x4b, 0xff, 00, 0xae, 0x5f, 0xfb, 0x31, - 0xae, 0x82, 0xb9, 0xff, 00, 0x3, 0xff, 00, 0xc8, 0x97, - 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x40, - 0x5, 0x79, 0x6, 0xa6, 0xcb, 0x1f, 0xed, 0x3b, 0xa4, 0x9b, - 0xac, 0x5, 0x6d, 0x2c, 0x8b, 0x62, 0xf8, 0x3, 0x76, 0x24, - 0xe9, 0xef, 0xf7, 0xab, 0xd7, 0xeb, 0x85, 0xf8, 0x91, 0xe0, - 0x29, 0x7c, 0x5d, 0x6d, 0x65, 0x7f, 0xa5, 0x5d, 0xad, 0x96, - 0xbf, 0xa6, 0x49, 0xe6, 0xd9, 0xdc, 0x1e, 0x87, 0xbe, 0xd6, - 0x23, 0xa0, 0xc8, 0x4, 0x1c, 0x1c, 0x7a, 0x72, 0x69, 0x5e, - 0xcd, 0x4b, 0xfa, 0xda, 0xc1, 0x6b, 0xa6, 0xbf, 0xae, 0xe7, - 0x75, 0x5e, 0x53, 0xfb, 0x41, 0x3c, 0x3f, 0xf0, 0xae, 0x63, - 0x89, 0xc0, 0x33, 0x49, 0x7f, 0x10, 0x80, 0x77, 0x2d, 0x86, - 0xe9, 0xf8, 0x66, 0xa8, 0xc3, 0xf1, 0x33, 0xe2, 0x2e, 0x8d, - 0x18, 0xb1, 0xd6, 0xbe, 0x1a, 0xdf, 0x5f, 0xdf, 0x44, 00, - 0x7b, 0x8b, 0x12, 0xfe, 0x5b, 0xf0, 0x30, 0x7e, 0x44, 0x91, - 0x73, 0xeb, 0x86, 0xc6, 0x7b, 0xe, 0x94, 0xba, 0x4f, 0x85, - 0x3c, 0x5b, 0xf1, 0x3, 0xc5, 0x36, 0x3e, 0x23, 0xf1, 0xcd, - 0xba, 0x69, 0xba, 0x5d, 0x8b, 0x9, 0xac, 0x74, 0x94, 0x6e, - 0x58, 0xf0, 0xca, 0x5c, 0x64, 0x91, 0xdb, 0x3b, 0xb0, 0x72, - 0x31, 0xb4, 0xa, 0x1c, 0x79, 0x9a, 0x5d, 0x2e, 0xbf, 0xcc, - 0x14, 0xb9, 0x75, 0xea, 0x47, 0xf1, 0x9f, 0xed, 0xf0, 0x78, - 0x73, 0xc1, 0x7e, 0x44, 0x6b, 0x2e, 0xa3, 0x1e, 0xa3, 0xf, - 0x96, 0x8e, 0x78, 0x79, 0x42, 0x70, 0xf, 0x23, 0x82, 0xde, - 0xe2, 0xa7, 0xff, 00, 0x84, 0x87, 0xe3, 0x9f, 0xfd, 0x9, - 0x9a, 0x1f, 0xfd, 0xfe, 0x5f, 0xfe, 0x48, 0xad, 0x6f, 0x8b, - 0xba, 0x5e, 0xa1, 0xa9, 0x37, 0x84, 0xfe, 0xc1, 0x63, 0x73, - 0x75, 0xe4, 0x6b, 0x31, 0x4b, 0x2f, 0x91, 0xb, 0x3f, 0x96, - 0x83, 0xab, 0x36, 0x7, 0x3, 0xdc, 0xd7, 0xa5, 0x53, 0xbd, - 0xee, 0xfc, 0xff, 00, 0x44, 0x2b, 0x5a, 0xcb, 0xcb, 0xf5, - 0x67, 0x99, 0xfc, 0x3d, 0xf0, 0x2e, 0xbb, 0x67, 0xe2, 0x2b, - 0xef, 0x18, 0x78, 0xc6, 0xea, 0x19, 0xf5, 0xdb, 0xc8, 0xc4, - 0x71, 0xc3, 0x9, 0xca, 0xdb, 0xa6, 0x6, 0x41, 0xc7, 0x19, - 0xe0, 0x2e, 0x6, 0x46, 0x1, 0xe4, 0xe6, 0xb8, 0xa4, 0xf0, - 0x9e, 0xad, 0xe2, 0xaf, 0x8c, 0x5e, 0x34, 0x8f, 0x4a, 0xf1, - 0x4d, 0xee, 0x80, 0xd0, 0x3c, 0x4d, 0x23, 0xda, 0x87, 0xcc, - 0xa0, 0xaf, 00, 0xed, 0x75, 0xe9, 0x8f, 0x7e, 0xb5, 0xf4, - 0xd, 0x78, 0x4c, 0xba, 0xc7, 0x89, 0xbc, 0x17, 0xf1, 0x53, - 0xc5, 0x9a, 0x8d, 0x97, 0x82, 0x35, 0x6d, 0x66, 0xdb, 0x50, - 0x78, 0xd5, 0x24, 0x86, 0x29, 0x15, 0x30, 0xab, 0xd4, 0x30, - 0x8d, 0x83, 0x75, 0xfd, 0x29, 0x5d, 0x73, 0xae, 0xc9, 0x31, - 0xbb, 0xf2, 0xbe, 0xf7, 0x46, 0xb7, 0xfc, 0x2a, 0xf, 0x18, - 0x7f, 0xd1, 0x59, 0xd7, 0x3f, 0x29, 0xbf, 0xf8, 0xfd, 0x7a, - 0x5b, 0xda, 0xcb, 0x65, 0xe1, 0x46, 0xb5, 0x9e, 0xe5, 0xee, - 0xa5, 0x86, 0xc8, 0xc6, 0xf3, 0xbe, 0x77, 0x4a, 0xc1, 0x30, - 0x58, 0xe4, 0x9e, 0x4f, 0x5e, 0xa6, 0xbc, 0xd3, 0xfe, 0x16, - 0xff, 00, 0x8c, 0x3f, 0xe8, 0x93, 0x6b, 0x9f, 0x9c, 0xdf, - 0xfc, 0x62, 0xbb, 0xbd, 0x13, 0x59, 0xd4, 0x3c, 0x4b, 0xe0, - 0xb9, 0xaf, 0xaf, 0xb4, 0x3b, 0x9d, 0x26, 0xee, 0x58, 0xe6, - 0x4f, 0xb1, 0x4f, 0xb8, 0xc8, 0x31, 0x90, 0x3a, 0xaa, 0x9e, - 0x7a, 0xf4, 0xa5, 0x3b, 0xf2, 0x49, 0x21, 0xc6, 0xdc, 0xe9, - 0x9e, 0x69, 0xf0, 0xe7, 0xc2, 0x56, 0x9e, 0x34, 0xf8, 0xc, - 0x74, 0x8b, 0xac, 0x2b, 0xb5, 0xcc, 0xcf, 0x4, 0xc4, 0x64, - 0xc5, 0x28, 0x3f, 0x2b, 0x7f, 0x43, 0xea, 0x9, 0xa9, 0x74, - 0xff, 00, 0x15, 0x5d, 0x6a, 0x1f, 0x9, 0xfc, 0x59, 0xe1, - 0x8d, 0x73, 0x31, 0xf8, 0x83, 0x44, 0xd3, 0xe6, 0x82, 0x75, - 0x73, 0x93, 0x2c, 0x61, 0x48, 0x59, 0x32, 0x7a, 0xf6, 0x4, - 0xf7, 0xe0, 0xff, 00, 0x15, 0x74, 0xff, 00, 0x4, 0xb4, - 0xdb, 0xfd, 0x27, 0xe1, 0xc5, 0xbd, 0xae, 0xa3, 0x65, 0x73, - 0x67, 0x70, 0x2e, 0x25, 0x63, 0x15, 0xc4, 0x4d, 0x1b, 0x80, - 0x4f, 0x7, 0xc, 0x1, 0xac, 0x1f, 0x8d, 0x5e, 0x7, 0xd4, - 0xaf, 0xa2, 0x5f, 0x12, 0xf8, 0x6a, 0x19, 0x9f, 0x51, 0x10, - 0xb5, 0x9d, 0xec, 0x16, 0xc8, 0x59, 0xee, 0x20, 0x71, 0xb7, - 0xee, 0x8f, 0xbc, 0x46, 0x70, 0x78, 0xce, 0xe, 0x7f, 0x86, - 0xaa, 0xaf, 0x55, 0xd1, 0xa5, 0xf7, 0xdb, 0x47, 0xfa, 0xa, - 0x9e, 0xb6, 0xee, 0x9b, 0xfc, 0xf6, 0xfe, 0xba, 0x89, 0x75, - 0xff, 00, 0x26, 0xb8, 0xbf, 0xf6, 0xc, 0x4f, 0xfd, 0xc, - 0x57, 0x97, 0xf8, 0x3b, 0xc2, 0x7f, 0x10, 0xb5, 0x1f, 0x4, - 0xcf, 0xac, 0x78, 0x63, 0x5d, 0xb8, 0x82, 0xc6, 0x29, 0x1c, - 0x7d, 0x86, 0xda, 0xfe, 0x68, 0xa4, 0x76, 0x18, 0xdc, 0x55, - 0x14, 0x6d, 0x27, 0x4, 0x77, 0xc9, 0xc5, 0x7a, 0xe5, 0xce, - 0x91, 0xa9, 0xb7, 0xec, 0xe0, 0xba, 0x58, 0xd3, 0xae, 0xce, - 0xa3, 0xfd, 0x9e, 0x89, 0xf6, 0x41, 0x3, 0x79, 0xbb, 0xb7, - 0x83, 0x8d, 0x98, 0xce, 0x7d, 0xb1, 0x57, 0x7e, 0x6, 0xe9, - 0x7a, 0x86, 0x91, 0xf0, 0xf3, 0xec, 0xda, 0x95, 0x8d, 0xcd, - 0x95, 0xc7, 0xdb, 0x25, 0x6f, 0x2a, 0xe6, 0x16, 0x8d, 0xf0, - 0x42, 0xe0, 0xe1, 0x80, 0x38, 0xa6, 0xd5, 0xea, 0x54, 0xfe, - 0xba, 0x92, 0x9d, 0xa9, 0xc1, 0x7f, 0x5b, 0x1e, 0x4f, 0xf0, - 0xa7, 0x40, 0xd2, 0xbc, 0x7b, 0xe2, 0xb5, 0xbb, 0xf1, 0x36, - 0xbd, 0x7d, 0x7b, 0xaa, 0xda, 0xf, 0x33, 0xec, 0x37, 0x6a, - 0x5b, 0xce, 0xa, 0x78, 0xfd, 0xeb, 0x39, 0x2c, 0x7, 0x75, - 0xc0, 0xeb, 0xdc, 0x66, 0xbe, 0xa2, 0xaf, 0x9d, 0x3e, 0x23, - 0xf8, 0x17, 0x5f, 0xf0, 0xaf, 0xc4, 0x5b, 0x6f, 0x15, 0x78, - 0x3b, 0x4d, 0xbb, 0xb9, 0x49, 0xe5, 0xfb, 0x41, 0x8e, 0xd2, - 0x6, 0x93, 0xc9, 0x94, 0x7d, 0xf5, 0x2a, 0x83, 0x3b, 0x18, - 0x1f, 0xd5, 0x85, 0x7b, 0xf6, 0x8f, 0xa8, 0x36, 0xab, 0xa3, - 0xda, 0x5f, 0x3d, 0xa5, 0xc5, 0xa3, 0xcf, 0x18, 0x76, 0xb7, - 0xb9, 0x8c, 0xa4, 0x91, 0x1e, 0xea, 0xca, 0x79, 0x4, 0x1a, - 0x13, 0xbc, 0x13, 0x1b, 0x56, 0x9b, 0x3c, 0x1f, 0xf6, 0x96, - 0xff, 00, 0x90, 0x87, 0x86, 0xbf, 0xeb, 0x9c, 0xff, 00, - 0xce, 0x3a, 0xf7, 0x1d, 0x41, 0x64, 0x7f, 0xa, 0x5d, 0x24, - 0x39, 0xf3, 0x5a, 0xc5, 0xc2, 0x63, 0xd7, 0x61, 0xc5, 0x78, - 0xff, 00, 0xed, 0x7, 0xa0, 0x6b, 0x3a, 0xd5, 0xf7, 0x87, - 0xdb, 0x4a, 0xd2, 0x6f, 0xef, 0xd6, 0x24, 0x98, 0x48, 0x6d, - 0x6d, 0x9e, 0x50, 0x99, 0x29, 0x8c, 0xed, 0x7, 0x1d, 0xf, - 0xe5, 0x5e, 0xdf, 0x6a, 0xa5, 0x6d, 0x21, 0x56, 0x4, 0x11, - 0x1a, 0x82, 0xf, 0xd2, 0xa7, 0x97, 0x9a, 0x8b, 0x8f, 0x76, - 0xca, 0x6e, 0xd5, 0x13, 0xf2, 0xff, 00, 0x23, 0xe7, 0xef, - 0xd9, 0xa2, 0x48, 0x45, 0xf7, 0x88, 0xa3, 0x24, 0x79, 0xed, - 0x1c, 0xc, 0xa3, 0xbe, 0xd0, 0x5f, 0x3f, 0xa9, 0x5a, 0xfa, - 0x2, 0xe9, 0xe3, 0x8e, 0xce, 0x77, 0x94, 0x81, 0x1a, 0xc6, - 0xc5, 0x89, 0x38, 00, 0x63, 0x9a, 0xf9, 0xff, 00, 0xc4, - 0xdf, 0xd, 0xbc, 0x5d, 0xe0, 0x5f, 0x18, 0xcd, 0xe2, 0x9f, - 0x1, 0xa3, 0x4f, 0x6a, 0xe5, 0xe4, 0x36, 0xf0, 0x80, 0x5e, - 0x20, 0x4f, 0xcd, 0x19, 0x8c, 0xff, 00, 0xac, 0x43, 0x9e, - 0x36, 0xe4, 0x8c, 0x74, 0x4, 0x2, 0x6b, 0x6b, 0x1e, 0x20, - 0xf8, 0xc1, 0xe3, 0xdb, 0x26, 0xd0, 0xf, 0x86, 0x26, 0xd3, - 0xa1, 0xb8, 0x4, 0x4c, 0xe9, 0x65, 0x25, 0xb0, 0x91, 0x3b, - 0xab, 0x49, 0x2b, 0x60, 0xf, 0x60, 0x41, 0x3d, 0x39, 0xe9, - 0x4e, 0x6f, 0x9e, 0x36, 0x5b, 0xd8, 0x49, 0x72, 0xc9, 0xb7, - 0xb0, 0x7e, 0xcd, 0xea, 0xc7, 0xc5, 0x3a, 0xeb, 0xa0, 0x3e, - 0x48, 0xb4, 0x50, 0x7d, 0x32, 0x5f, 0x8f, 0xd0, 0x1a, 0xeb, - 0xbe, 0x24, 0xfc, 0x10, 0x5f, 0x16, 0x6a, 0xb2, 0xeb, 0x7a, - 0x25, 0xf4, 0x56, 0x7a, 0x84, 0xd8, 0xf3, 0xe0, 0xb8, 0x53, - 0xe5, 0x4a, 0xdc, 0xd, 0xdb, 0x94, 0x12, 0xa7, 0x19, 0xcf, - 0x7, 0x27, 0x1d, 0x39, 0x35, 0xd4, 0xfc, 0x30, 0xf8, 0x7b, - 0x1f, 0xc3, 0xff, 00, 0xf, 0xc9, 0x6f, 0x2c, 0xd1, 0xdc, - 0x6a, 0x37, 0x4c, 0x24, 0xba, 0x99, 0x6, 0x17, 0x20, 0x60, - 0x22, 0xe7, 0x92, 0xa3, 0x9e, 0x4f, 0x52, 0x49, 0xc0, 0xe9, - 0x5e, 0x5f, 0xad, 0x78, 0x27, 0xc7, 0x1f, 0xd, 0xbc, 0x6b, - 0x79, 0xe2, 0x3f, 0x6, 0x5b, 0x3d, 0xfe, 0x9f, 0x70, 0xe5, - 0x8c, 0x31, 0x27, 0x9a, 0xdb, 0x59, 0x81, 0x31, 0xbc, 0x63, - 0xe6, 0x20, 0x1e, 0x85, 0x7a, 0x1, 0xd4, 0x73, 0x44, 0xed, - 0xcd, 0x15, 0xdb, 0xa8, 0x46, 0xfe, 0xf4, 0xbb, 0xf4, 0x32, - 0x26, 0xd5, 0xfe, 0x2f, 0xfc, 0x2f, 0xc4, 0xda, 0x8b, 0xdd, - 0x5c, 0xe9, 0xa1, 0xf9, 0x6b, 0xa6, 0x17, 0x70, 0x30, 0x1f, - 0x28, 0xcb, 0x82, 0x5a, 0x30, 0x72, 0x30, 0x32, 0xb9, 0xf4, - 0xeb, 0x5f, 0x40, 0xf8, 0x33, 0xc4, 0xf0, 0x78, 0xc7, 0xc2, - 0x96, 0x5a, 0xdc, 0x11, 0x18, 0x7e, 0xd0, 0xa4, 0x3c, 0x44, - 0xe7, 0x63, 0xa9, 0x21, 0x86, 0x7b, 0x8c, 0x8e, 0xf, 0xa5, - 0x78, 0x5e, 0xb7, 0xac, 0x7c, 0x5c, 0xf8, 0x8d, 0x60, 0x7c, - 0x3d, 0x37, 0x85, 0x9e, 0xc2, 0xda, 0x62, 0x1a, 0x56, 0x16, - 0x52, 0x5b, 0x2b, 0x85, 0x20, 0x80, 0xcf, 0x33, 0x11, 0x80, - 0x40, 0x38, 0x1c, 0x9c, 0x77, 0xe9, 0x5e, 0xdb, 0xe0, 0x1f, - 0xa, 0x7f, 0xc2, 0x17, 0xe0, 0xeb, 0x2d, 0x15, 0xa6, 0x59, - 0xe6, 0x8b, 0x73, 0xcd, 0x22, 0x8c, 0x6, 0x76, 0x39, 0x38, - 0xf6, 0x19, 0xc0, 0xfa, 0x55, 0x2b, 0xf2, 0xbe, 0x62, 0x5d, - 0xae, 0xb9, 0x4e, 0x96, 0x8a, 0x28, 0xa9, 0x28, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x2b, 0x3b, 0x54, 0xff, 00, 0x96, 0x1f, 0x56, - 0xfe, 0x55, 0xa3, 0x59, 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, - 0xf2, 0xa0, 0xb, 0x96, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, - 0xd4, 0x56, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, 0xd0, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x3, 0x5c, 0xed, - 0x8d, 0x9b, 0xd0, 0x13, 0x5e, 0x49, 0xab, 0x5f, 0x99, 0xef, - 0xe6, 0x93, 0x3f, 0xc4, 0x45, 0x7a, 0x7e, 0xb1, 0x71, 0xf6, - 0x6d, 0x2a, 0xe2, 0x5c, 0xe3, 0xa, 0x6b, 0xc4, 0x2e, 0x6e, - 0x77, 0x48, 0xe7, 0x3d, 0x58, 0x9a, 0xb8, 0x23, 0x1a, 0xae, - 0xda, 0x16, 0x25, 0xbb, 0xf7, 0xae, 0xc7, 0xe1, 0xcd, 0xe0, - 0x79, 0xee, 0x20, 0xcf, 0x27, 0x9c, 0x57, 0x9a, 0x4d, 0x73, - 0xef, 0x5b, 0xff, 00, 0xf, 0xf5, 0x75, 0xb3, 0xf1, 0x42, - 0x2c, 0x8d, 0xf2, 0xca, 0xbb, 0x7, 0xd6, 0xaa, 0x4b, 0x43, - 0x28, 0x4b, 0xde, 0x3d, 0xc2, 0x9a, 0xe7, 0x6c, 0x6c, 0x4f, - 0x61, 0x4e, 0xaa, 0x9a, 0x94, 0xbe, 0x56, 0x9f, 0x33, 0x77, - 0xdb, 0xc5, 0x64, 0x75, 0x3d, 0x8f, 0x20, 0xd4, 0x60, 0x32, - 0xdf, 0xdc, 0x3e, 0x3a, 0xc8, 0x6b, 0x36, 0x5b, 0x5f, 0x6a, - 0xea, 0x66, 0xb5, 0xdc, 0xcc, 0xc4, 0x75, 0x39, 0xaa, 0x13, - 0x5a, 0xf5, 0xe2, 0xba, 0x13, 0x38, 0x65, 0x1d, 0x4d, 0xef, - 0x86, 0x73, 0x79, 0x5f, 0x6b, 0xb6, 0x6e, 0xed, 0x91, 0x5e, - 0x89, 0x5e, 0x63, 0xe0, 0xc2, 0x6d, 0xfc, 0x42, 0x13, 0xa2, - 0xb2, 0x9a, 0xf4, 0xea, 0xc6, 0x7b, 0x9d, 0x54, 0x7e, 0x10, - 0xa2, 0x8a, 0x2a, 0x4d, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0xa1, - 0xb9, 0xfb, 0x95, 0x35, 0x41, 0x73, 0xf7, 0x28, 0x2, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, - 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, - 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, - 0x97, 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, - 0x5c, 0xff, 00, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, - 00, 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xb3, 0xb5, 0x4f, 0xf9, 0x61, - 0xf5, 0x6f, 0xe5, 0x5a, 0x35, 0x9d, 0xaa, 0x7f, 0xcb, 0xf, - 0xab, 0x7f, 0x2a, 00, 0xb9, 0x6f, 0xfe, 0xa1, 0x3e, 0x95, - 0x2d, 0x45, 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x48, 0xce, 0xa8, 0xa5, 0x98, - 0x80, 0x7, 0x52, 0x68, 0x3, 0x9f, 0xf1, 0xb4, 0xfe, 0x47, - 0x85, 0xee, 0x8e, 0x70, 0x48, 0xc0, 0xaf, 0xc, 0x9a, 0xe3, - 0x8e, 0xb5, 0xeb, 0x5e, 0x2f, 0xbf, 0x8f, 0x59, 0xb4, 0x6b, - 0xb, 0x57, 0xef, 0xcb, 0x57, 0x96, 0xea, 0x3e, 0x1b, 0xd5, - 0x6d, 0xc1, 0x2b, 0x1, 0x74, 0x1d, 0x8, 0xad, 0x60, 0xac, - 0x8e, 0x5a, 0xae, 0xef, 0x43, 0x12, 0x7b, 0x9e, 0xbc, 0xd5, - 0x78, 0x75, 0x9, 0x2c, 0xef, 0x21, 0xba, 0x8c, 0xfc, 0xf1, - 0x38, 0x61, 0x4d, 0xb8, 0xb5, 0xbd, 0x46, 0x21, 0xad, 0x26, - 0xcf, 0xb2, 0x1a, 0x65, 0xb6, 0x8b, 0xab, 0x6a, 0x12, 0x88, - 0xed, 0xec, 0x66, 0x2c, 0x78, 0x1b, 0x94, 0x8a, 0xa6, 0xcc, - 0x92, 0x6c, 0xfa, 0x63, 0xc2, 0xbe, 0x20, 0xb7, 0xf1, 0x16, - 0x89, 0x5, 0xdc, 0x52, 0x2b, 0x49, 0xb4, 0x9, 0x17, 0x3c, - 0x86, 0xa9, 0x75, 0x89, 0x3c, 0xd5, 0x10, 0xaf, 0xe3, 0x5e, - 0x7b, 0xf0, 0xdf, 0xc1, 0x3a, 0xe7, 0x87, 0xe7, 0x6b, 0xcb, - 0xcb, 0x93, 0x2, 0xb8, 0xe6, 0xdf, 0x39, 0x6, 0xbd, 0x1a, - 0x48, 0x3, 0x12, 0x71, 0xd6, 0xb2, 0xb6, 0xa7, 0x5d, 0xdb, - 0x47, 0x37, 0x2d, 0xae, 0x7, 0x4a, 0xce, 0xb8, 0xb5, 0xeb, - 0xc5, 0x75, 0x33, 0x5b, 0xfb, 0x56, 0x65, 0xc5, 0xbf, 0x5c, - 0xa, 0xb4, 0xcc, 0x9c, 0x4c, 0x4d, 0x29, 0x7e, 0xcf, 0xac, - 0xc2, 0xfd, 0x39, 0xc5, 0x7a, 0x68, 0xe8, 0x2b, 0xc8, 0xb5, - 0x6d, 0x76, 0xdb, 0x48, 0xbb, 0x8f, 0x6e, 0x24, 0x99, 0x5b, - 0x25, 0x5, 0x7a, 0x7, 0x87, 0xbc, 0x53, 0x63, 0xaf, 0xdb, - 0x29, 0x89, 0xc2, 0x4c, 0x7, 0xcd, 0x19, 0x3d, 0x2a, 0x66, - 0x8a, 0xa4, 0xd2, 0xd0, 0xdd, 0xa2, 0x8a, 0x2a, 0xd, 0xc2, - 0x8a, 0x28, 0xa0, 0x2, 0xa1, 0xb9, 0xfb, 0x95, 0x35, 0x43, - 0x71, 0xf7, 0x28, 0x2, 0x6a, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0x3c, 0xce, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, - 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, - 0xff, 00, 0xa1, 0x1a, 0xe0, 0xed, 0x7f, 0xe4, 0x29, 0xae, - 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, 00, - 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xa0, 0xc, 0xff, - 00, 0x3, 0xff, 00, 0xc8, 0x97, 0xa5, 0xff, 00, 0xd7, - 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x5c, 0xff, 00, 0x81, 0xff, - 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, 0xfe, 0xcc, - 0x6b, 0xa0, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0xb3, 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, 0xe5, 0x5a, 0x35, - 0x9d, 0xaa, 0x7f, 0xcb, 0xf, 0xab, 0x7f, 0x2a, 00, 0xb9, - 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 0x45, 0x6f, 0xfe, 0xa1, - 0x3e, 0x95, 0x2d, 00, 0x14, 0x51, 0x59, 0xda, 0xc6, 0xb3, - 0x69, 0xa2, 0xd9, 0x35, 0xc5, 0xcc, 0x80, 0x60, 0x7c, 0xab, - 0x9e, 0x4d, 0x2, 0x6e, 0xda, 0xb2, 0xcd, 0xe5, 0xed, 0xbd, - 0x85, 0xbb, 0x4f, 0x71, 0x20, 0x44, 0x51, 0xdf, 0xbd, 0x79, - 0xf6, 0xaf, 0xe2, 0x79, 0xf5, 0x69, 0x4c, 0x50, 0x13, 0x1d, - 0xb0, 0x3d, 0xbf, 0x8a, 0xb9, 0xcd, 0x5b, 0xc4, 0x77, 0x5e, - 0x20, 0xbb, 0x2f, 0x23, 0x15, 0x80, 0x1f, 0x92, 0x31, 0x52, - 0x59, 0x8e, 0x95, 0xac, 0x63, 0x63, 0x9a, 0x75, 0x79, 0xb4, - 0x46, 0xcd, 0x9c, 0x63, 0x22, 0xb7, 0xad, 0x63, 0x4, 0xc, - 0x80, 0x7e, 0xb5, 0x91, 0x66, 0x38, 0x15, 0xbd, 0x6a, 0x38, - 0x14, 0xd8, 0x44, 0xbf, 0x5, 0xac, 0x2c, 0x1, 0x68, 0x63, - 0x3f, 0xf0, 0x11, 0x5a, 0x11, 0x43, 0x12, 0x7d, 0xc8, 0xa3, - 0x5f, 0xa2, 0x8a, 0x86, 0xdc, 0x7c, 0xa2, 0xae, 0x20, 0xa8, - 0x66, 0xa9, 0x6, 0xcc, 0xd2, 0x32, 0x54, 0xd4, 0x84, 0x71, - 0x53, 0x72, 0xec, 0x51, 0x96, 0x3c, 0x8e, 0x95, 0xc1, 0xf8, - 0xf3, 0xc4, 0xb1, 0xf8, 0x7e, 0xcb, 0xc9, 0x88, 0x83, 0x77, - 0x30, 0xc2, 0x8f, 0x4a, 0xf4, 0x19, 0xd8, 0x47, 0x14, 0x92, - 0x31, 0xc0, 0x45, 0x2d, 0x5f, 0x30, 0xf8, 0xab, 0x59, 0x93, - 0x5c, 0xf1, 0x2d, 0xd5, 0xcb, 0x31, 0x28, 0x1c, 0xaa, 0x8f, - 0x4c, 0x55, 0xa3, 0x2a, 0x8e, 0xc8, 0x48, 0xee, 0x64, 0xb8, - 0x99, 0xa6, 0x99, 0xcb, 0x48, 0xc7, 0x24, 0x9a, 0xdc, 0xd3, - 0x2e, 0xe6, 0xb4, 0x99, 0x26, 0xb7, 0x90, 0xa3, 0xa9, 0xce, - 0x41, 0xae, 0x6e, 0xd7, 0xad, 0x6e, 0x5a, 0x76, 0xab, 0x67, - 0x32, 0x67, 0xb3, 0x78, 0x5f, 0xc6, 0x11, 0xea, 0x51, 0xad, - 0xb5, 0xe9, 0x9, 0x70, 0x6, 0x3, 0x1e, 0x8d, 0x5d, 0x78, - 0xe4, 0x71, 0x5e, 0x11, 0x64, 0x4a, 0x95, 0x65, 0x24, 0x11, - 0xd0, 0x8a, 0xf4, 0x7f, 0xd, 0x78, 0x8d, 0x99, 0x16, 0xd6, - 0xf1, 0xb2, 0x7a, 0x2b, 0x9a, 0xce, 0x51, 0x3a, 0xe9, 0xce, - 0xfa, 0x33, 0xb0, 0xa2, 0x90, 0x10, 0x46, 0x41, 0xc8, 0x34, - 0xb5, 0x6, 0xa1, 0x50, 0xdc, 0x7d, 0xca, 0x9a, 0xa1, 0xb9, - 0xfb, 0x94, 0x1, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, - 0x67, 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, - 0x7f, 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, - 0x2, 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, 0x14, - 0xd7, 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, - 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, - 0x7f, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, - 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, - 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, - 0xd0, 0x50, 0x1, 0x45, 0x15, 0xc4, 0x78, 0xbf, 0xe2, 0xb7, - 0x86, 0xbc, 0x15, 0xac, 0x5b, 0xe9, 0x7a, 0x9b, 0x5d, 0x49, - 0x73, 0x2a, 0x87, 0x71, 0x6d, 0x10, 0x71, 0xa, 0x93, 0x80, - 0xcf, 0x92, 0x3d, 0xce, 0x6, 0x4e, 0x7, 0x4e, 0x99, 0x2e, - 0x16, 0x3b, 0x7a, 0x2a, 0x3b, 0x7b, 0x88, 0x6e, 0xed, 0xa2, - 0xb9, 0xb7, 0x91, 0x64, 0x86, 0x54, 0xf, 0x1b, 0xa9, 0xe1, - 0x94, 0x8c, 0x82, 0x3f, 0xa, 0x92, 0x86, 0xac, 0x9, 0xdc, - 0x28, 0xa2, 0xb2, 0x3c, 0x53, 0xab, 0x9d, 0x3, 0xc2, 0x9a, - 0xae, 0xac, 0xaa, 0x19, 0xed, 0x2d, 0x64, 0x95, 0x1, 0x19, - 0x5, 0x82, 0x9c, 0x7e, 0xb8, 0xa5, 0x27, 0x65, 0x71, 0xa5, - 0x77, 0x62, 0x9f, 0x88, 0xbc, 0x7d, 0xe1, 0x6f, 0xa, 0x4a, - 0xb1, 0x6b, 0x5a, 0xcd, 0xbd, 0xb4, 0xcd, 0x8f, 0xdc, 0x80, - 0xd2, 0x48, 0x32, 0x32, 0x9, 0x44, 0x5, 0x80, 0xf7, 0x23, - 0x15, 0x2f, 0x87, 0x3c, 0x69, 0xe1, 0xcf, 0x16, 0xa4, 0x8d, - 0xa1, 0xea, 0xb0, 0x5d, 0x98, 0xfe, 0xfc, 0x60, 0x14, 0x91, - 0x47, 0x1c, 0x94, 0x60, 0x1b, 0x1c, 0xf5, 0xc6, 0x2b, 0xb, - 0xe1, 0x5f, 0x87, 0x6d, 0xec, 0x3c, 0x29, 0x69, 0xad, 0xdc, - 0x22, 0xdc, 0x6b, 0x5a, 0xb4, 0x42, 0xee, 0xee, 0xfa, 0x41, - 0x99, 0x64, 0xf3, 0x30, 0xc1, 0x77, 0x75, 0xa, 0x6, 0xde, - 0x7, 0x19, 0x15, 0x7b, 0xc4, 0x5e, 0x6, 0x83, 0x57, 0xf1, - 0x1e, 0x95, 0xe2, 0x2d, 0x3e, 0xe9, 0x74, 0xcd, 0x5e, 0xc6, - 0x60, 0xcf, 0x70, 0x90, 0x6f, 0xfb, 0x44, 0x58, 0xc1, 0x8d, - 0xc6, 0xe5, 0xc8, 0x23, 0x8c, 0xf6, 0x19, 0xaa, 0xb3, 0x8b, - 0xb4, 0xbf, 0xe1, 0xbf, 0xcc, 0x9b, 0xdd, 0x5d, 0x1d, 0x6d, - 0x15, 0xc4, 0xf8, 0xa7, 0xc6, 0x1a, 0xad, 0xb7, 0x88, 0xad, - 0xbc, 0x2b, 0xe1, 0x6d, 0x3e, 0xde, 0xf3, 0x5c, 0x9a, 0x1f, - 0xb4, 0x49, 0x25, 0xdb, 0x95, 0xb7, 0xb5, 0x87, 0x76, 0x37, - 0x3e, 0xdf, 0x98, 0xe7, 0xd0, 0x73, 0xc8, 0xeb, 0xd2, 0xab, - 0x69, 0x5e, 0x30, 0xf1, 0x16, 0x99, 0xe2, 0xab, 0x3f, 0xe, - 0x78, 0xd3, 0x4f, 0xd3, 0xe2, 0x9f, 0x51, 0xc, 0x6c, 0x2f, - 0xb4, 0xc7, 0x73, 0x4, 0x85, 0x40, 0x26, 0x32, 0x1f, 0xe6, - 0xd, 0xef, 0xee, 0x6, 0x3b, 0xd2, 0x5a, 0x8d, 0xe8, 0x77, - 0xf4, 0x57, 0x96, 0x69, 0x7e, 0x37, 0xf1, 0xc7, 0x89, 0xb5, - 0x4d, 0x7b, 0x4b, 0xd0, 0xb4, 0xbd, 0x19, 0x65, 0xd2, 0xf5, - 0x9, 0x21, 0x37, 0x97, 0xc6, 0x55, 0x87, 0xcb, 0x7, 0xa, - 0x98, 0x52, 0x59, 0xa4, 0x38, 0x24, 0x9e, 00, 00, 0x71, - 0xc8, 0xa4, 0xd0, 0x7c, 0x7d, 0xe3, 0x4f, 0x16, 0x5b, 0xdc, - 0xe9, 0xda, 0x46, 0x85, 0xa6, 0xdb, 0x6b, 0x3a, 0x6c, 0xcd, - 0xe, 0xa3, 0x73, 0x7d, 0x23, 0x8b, 0x30, 0xe1, 0xb0, 0x16, - 0x30, 0x99, 0x76, 0x63, 0x82, 0x79, 0xe1, 0x71, 0xd4, 0xe4, - 0x50, 0xb5, 0xfc, 0xc6, 0xd5, 0x9d, 0x8f, 0x54, 0xa2, 0xb8, - 0xef, 0x2, 0x78, 0xbe, 0xf3, 0xc4, 0xfa, 0x4e, 0xa2, 0x35, - 0x3b, 0x28, 0xad, 0x35, 0x6d, 0x2e, 0xe5, 0xed, 0x2e, 0xe2, - 0x89, 0x89, 0x8c, 0xba, 0x8f, 0xbc, 0xb9, 0xe4, 0x3, 0xcf, - 0x19, 0x3d, 0x3a, 0xd7, 0x27, 0xe1, 0xdf, 0x1d, 0x7c, 0x43, - 0xf1, 0x8f, 0x86, 0x4e, 0xa7, 0xa2, 0x69, 0x1a, 0x14, 0x46, - 0xd9, 0xa4, 0x59, 0xe4, 0xbd, 0x32, 0x85, 0xb8, 0x60, 0x49, - 0xb, 0xa, 0x29, 0x27, 0x81, 0x8c, 0x96, 0x6c, 0x12, 0x70, - 0x31, 0x83, 0x43, 0xff, 00, 0x83, 0xf2, 0x4, 0xbf, 0x3b, - 0x7c, 0xcf, 0x5d, 0xa2, 0xbc, 0xb3, 0x48, 0xf1, 0xe7, 0x8d, - 0x7c, 0x6d, 0xe1, 0xf5, 0xd4, 0xfc, 0x29, 0xa1, 0x69, 0xb6, - 0xcb, 0x2, 0x95, 0xb8, 0x6d, 0x56, 0x47, 0x22, 0x79, 0x40, - 0xf9, 0x92, 0x15, 0x4e, 0x70, 0x38, 0xf9, 0x98, 0x8e, 0x5b, - 0x1d, 0x89, 0xad, 0x7d, 0x3f, 0xe2, 0x75, 0x94, 0xdf, 0xc, - 0x47, 0x8c, 0x6f, 0x6d, 0x5e, 0x22, 0xb9, 0x89, 0xed, 0x23, - 0x6d, 0xcc, 0xd3, 0x6, 0xda, 0x11, 0x4f, 0xb9, 0xe7, 0xd8, - 0x1f, 0x6a, 0x1e, 0x97, 0xbf, 0x41, 0x2d, 0x6c, 0x77, 0x94, - 0x57, 0x9a, 0x4f, 0xe2, 0x2f, 0x89, 0xba, 0x66, 0x9e, 0xda, - 0xf6, 0xa1, 0xa0, 0x68, 0x52, 0x69, 0x71, 0xa9, 0x9a, 0x5d, - 0x3a, 0xde, 0x79, 0x3e, 0xdb, 0x1c, 0x58, 0x27, 0xef, 0x1f, - 0x90, 0xb2, 0x8e, 0x4e, 0x7, 0x38, 0x20, 0x1, 0xda, 0xdf, - 0x8c, 0xbe, 0x22, 0xbe, 0x8b, 0xe1, 0x4d, 0x7, 0xc4, 0x1a, - 0x25, 0xbc, 0x77, 0xd6, 0xfa, 0x95, 0xdc, 0x31, 0xf9, 0x6e, - 0xa7, 0x73, 0x46, 0xea, 0x49, 0xb, 0x82, 0x30, 0xfc, 0x63, - 0x9c, 0x80, 0x7b, 0x51, 0xfd, 0x7d, 0xe0, 0xb5, 0x3d, 0x2, - 0x8a, 0xf3, 0x8b, 0xff, 00, 0x18, 0xf8, 0xb7, 0xc2, 0xba, - 0x6b, 0xdd, 0x78, 0x97, 0x4e, 0xd2, 0x6e, 0x2e, 0x6f, 0x66, - 0x8a, 0xdf, 0x49, 0xb0, 0xd3, 0x1e, 0x4d, 0xf2, 0x4a, 0xe4, - 0xe5, 0x64, 0x77, 0xe3, 0x80, 0x7, 0x20, 0x60, 0xd0, 0x9e, - 0x2e, 0xf1, 0x8f, 0x86, 0xf5, 0x9d, 0x2a, 0xf, 0x1a, 0xd8, - 0xe8, 0xbf, 0xd9, 0xfa, 0xa4, 0xc2, 0xd6, 0x2b, 0xad, 0x2d, - 0xe4, 0xff, 00, 0x47, 0x98, 0xfd, 0xd1, 0x20, 0x7c, 0xe4, - 0x1e, 0x99, 0x1c, 0xc, 0x13, 0x9a, 0x16, 0xae, 0xc0, 0xf4, - 0x57, 0x3b, 0x46, 0xf1, 0x6, 0x96, 0xbe, 0x23, 0x4f, 0xf, - 0x9b, 0xac, 0x6a, 0x8f, 0x6f, 0xf6, 0x95, 0x83, 0xcb, 0x6e, - 0x63, 0xce, 0x37, 0x6e, 0xc6, 0xde, 0xbd, 0xb3, 0x9a, 0xd3, - 0xae, 0x42, 0x5f, 0x15, 0x5f, 0x27, 0xc5, 0x78, 0x3c, 0x2a, - 0x22, 0xb7, 0xfb, 0xc, 0x9a, 0x59, 0xbc, 0x32, 0x15, 0x6f, - 0x37, 0x78, 0x72, 0xb8, 0xce, 0x71, 0x8c, 0x7b, 0x7e, 0x35, - 0x9f, 0x3e, 0xbb, 0xf1, 0x7, 0x59, 0xd5, 0x2f, 0x93, 0xc3, - 0x9a, 0x2e, 0x97, 0xa7, 0xe9, 0xf6, 0x73, 0x18, 0x16, 0x7d, - 0x78, 0x4e, 0x8f, 0x74, 0x47, 0x57, 0x8d, 0x50, 0x2, 0x13, - 0xd0, 0x9c, 0xe7, 0xd7, 0xa8, 0x2, 0xfe, 0xbe, 0xfb, 0xd, - 0xab, 0x3f, 0xbb, 0xf2, 0xb9, 0xdf, 0x33, 0x5, 0x52, 0xc7, - 0x80, 0x6, 0x4d, 0x67, 0x68, 0x5a, 0xf6, 0x99, 0xe2, 0x5d, - 0x2d, 0x35, 0x2d, 0x22, 0xe7, 0xed, 0x36, 0x6e, 0xcc, 0xab, - 0x27, 0x96, 0xc9, 0x92, 0xa7, 0x7, 0x86, 00, 0xf5, 0xf6, - 0xae, 0x63, 0xc1, 0x7e, 0x30, 0xd4, 0xf5, 0xe9, 0xb5, 0xdd, - 0x13, 0x5f, 0xd3, 0xe0, 0xb4, 0xd6, 0xb4, 0x76, 0x9, 0x39, - 0xb5, 0x62, 0x61, 0x95, 0x5c, 0x12, 0xac, 0x99, 0x24, 0x8e, - 0x7, 0x42, 0x7b, 0x83, 0xc7, 0x41, 0x47, 0xe0, 0x6f, 0xfc, - 0x92, 0xfb, 0x3f, 0xfa, 0xf8, 0x9f, 0xff, 00, 0x46, 0x1a, - 0x16, 0xef, 0xd2, 0xe2, 0x7b, 0x7c, 0xed, 0xf8, 0x1d, 0xa6, - 0xb3, 0xe2, 0xd, 0x2f, 0xc3, 0xf1, 0xda, 0xbe, 0xa9, 0x75, - 0xf6, 0x75, 0xba, 0xb8, 0x5b, 0x68, 0x4f, 0x96, 0xcf, 0xba, - 0x46, 0xfb, 0xab, 0xf2, 0x83, 0x8e, 0x9d, 0x4f, 0x14, 0x37, - 0x88, 0x34, 0xb5, 0xf1, 0x1a, 0x78, 0x7c, 0xdd, 0x63, 0x54, - 0x7b, 0x7f, 0xb4, 0xac, 0x1e, 0x5b, 0x73, 0x1e, 0x71, 0xbb, - 0x76, 0x36, 0xf5, 0xed, 0x9c, 0xd7, 0xf, 0xf1, 0x93, 0xfe, - 0x3c, 0x3c, 0x2d, 0xff, 00, 0x63, 0x5, 0xaf, 0xfe, 0xcd, - 0x5b, 0x92, 0xf8, 0xaa, 0xf9, 0x3e, 0x2b, 0xc1, 0xe1, 0x51, - 0x15, 0xbf, 0xd8, 0x64, 0xd2, 0xcd, 0xe1, 0x90, 0xab, 0x79, - 0xbb, 0xc3, 0x95, 0xc6, 0x73, 0x8c, 0x63, 0xdb, 0xf1, 0xa1, - 0x6b, 0xf7, 0xbf, 0xca, 0xe3, 0x6a, 0xdf, 0x72, 0xfc, 0xec, - 0x75, 0xf4, 0x57, 0x9c, 0x3f, 0x8c, 0x3c, 0x5d, 0xe2, 0x6d, - 0x63, 0x53, 0xb7, 0xf0, 0x45, 0x86, 0x8f, 0xf6, 0xd, 0x2e, - 0x66, 0xb6, 0x9a, 0xf3, 0x55, 0x79, 0x31, 0x3c, 0xa3, 0xaa, - 0xc6, 0x23, 0xe9, 0x8f, 0x53, 0xd7, 0x23, 0xa5, 0x58, 0xb2, - 0xf8, 0xa3, 0x66, 0x7c, 0x9, 0x7d, 0xaf, 0xea, 0x76, 0x4f, - 0x6d, 0x7b, 0xa7, 0x4e, 0xd6, 0x77, 0x56, 0x8, 0xc1, 0x9b, - 0xed, 00, 0x80, 0x11, 0x4f, 0x7c, 0xe4, 0x73, 0xdb, 0x9e, - 0xb8, 0xa5, 0x7d, 0x2e, 0x16, 0xd6, 0xc7, 0x7f, 0x45, 0x79, - 0xa4, 0xfe, 0x22, 0xf8, 0x9b, 0xa6, 0x69, 0xed, 0xaf, 0x6a, - 0x1a, 0x6, 0x85, 0x26, 0x97, 0x1a, 0x99, 0xa5, 0xd3, 0xad, - 0xe7, 0x93, 0xed, 0xb1, 0xc5, 0x82, 0x7e, 0xf1, 0xf9, 0xb, - 0x28, 0xe4, 0xe0, 0x73, 0x82, 00, 0x1d, 0xac, 0xf8, 0xd7, - 0xe2, 0x34, 0x9a, 0x27, 0x84, 0x74, 0x3f, 0x10, 0xe8, 0x50, - 0x47, 0x7b, 0x6, 0xa5, 0x75, 0x12, 0x6c, 0x92, 0x36, 0x2c, - 0xd1, 0xba, 0x92, 0x42, 0x80, 0x46, 0x1f, 0x8c, 0x73, 0x9e, - 0x7b, 0x53, 0xfe, 0xbe, 0xf1, 0x2d, 0x76, 0x3d, 0xa, 0x8a, - 0xf2, 0xdd, 0x67, 0xc6, 0x9e, 0x3d, 0xf0, 0x9c, 0x56, 0xfa, - 0xe7, 0x88, 0x74, 0x5d, 0x14, 0x68, 0x32, 0x4c, 0xa9, 0x3c, - 0x16, 0x73, 0x48, 0xd7, 0x56, 0x8a, 0xfc, 0xd, 0xec, 0x7e, - 0x46, 0x20, 0x90, 0xe, 0xd1, 0x82, 0x7d, 0x33, 0x9a, 0xdd, - 0xf1, 0x87, 0x8b, 0xf5, 0x2d, 0x37, 0x5a, 0xd2, 0x7c, 0x39, - 0xe1, 0xeb, 0x4b, 0x49, 0xf5, 0x9d, 0x55, 0x5d, 0xe2, 0x92, - 0xf9, 0xd9, 0x60, 0x89, 0x13, 0x92, 0x58, 0x2f, 0xcc, 0xd9, - 00, 0xf0, 0x3d, 0x33, 0xed, 0x47, 0xfc, 0x30, 0x1d, 0xad, - 0x66, 0x69, 0x3e, 0x20, 0xd2, 0xf5, 0xd9, 0x2f, 0x93, 0x4d, - 0xba, 0xf3, 0xda, 0xc6, 0xe1, 0xad, 0xae, 0x47, 0x96, 0xcb, - 0xb2, 0x45, 0xea, 0xbf, 0x30, 0x19, 0xfa, 0x8c, 0x8a, 0xe7, - 0x34, 0x2d, 0x77, 0xc6, 0x76, 0xfe, 0x24, 0x8b, 0x45, 0xf1, - 0x56, 0x89, 0x68, 0xf1, 0xdc, 0xc6, 0xd2, 0x43, 0xa9, 0xe9, - 0x2, 0x56, 0xb7, 0x42, 0x3f, 0xe5, 0x9c, 0x9b, 0xc6, 0x54, - 0xf0, 0x79, 0x24, 0x3, 0x90, 00, 0x3c, 0xe2, 0x96, 0x99, - 0xe3, 0xcd, 0x52, 0xf7, 0x40, 0xf1, 0xc5, 0xfc, 0x90, 0x59, - 0x89, 0x74, 0x1b, 0x9b, 0x98, 0x6d, 0x42, 0xa3, 0x6d, 0x71, - 0x1a, 0x92, 0xbb, 0xfe, 0x6e, 0x4f, 0xae, 0x31, 0x49, 0xbb, - 0x6b, 0xe5, 0x71, 0xa5, 0x7d, 0x3c, 0xec, 0x7a, 0x1d, 0x15, - 0xe4, 0xfa, 0x77, 0x8c, 0x7e, 0x25, 0xeb, 0xfe, 0x14, 0x87, - 0xc4, 0x5a, 0x56, 0x87, 0xa1, 0x45, 0x6a, 0x20, 0xde, 0xd0, - 0xdd, 0x34, 0xbe, 0x75, 0xc9, 0x51, 0xf3, 0x34, 0x4a, 0xe, - 0x15, 0x49, 0xc8, 0x50, 0xc7, 0x27, 0x19, 0xe8, 0x45, 0x74, - 0x2b, 0xf1, 0x2b, 0x4f, 0x1f, 0xc, 0x22, 0xf1, 0xac, 0x96, - 0xd2, 0x2a, 0x4b, 0x1e, 0x12, 0xd0, 0x36, 0x59, 0xa6, 0xdc, - 0x53, 0xcb, 0x7, 0x1f, 0xde, 0x1d, 0x71, 0xd3, 0x9c, 0x76, - 0xa6, 0xd5, 0xaf, 0x7e, 0x82, 0x5a, 0xdb, 0xcc, 0xed, 0xe8, - 0xaf, 0x29, 0xd6, 0x3c, 0x63, 0xf1, 0x2b, 0xc3, 0x7e, 0x1d, - 0xb8, 0xd7, 0xf5, 0x5d, 0x7, 0x44, 0x7b, 0x23, 0x11, 0x65, - 0x82, 0xd5, 0xe5, 0x69, 0xed, 0x19, 0xbe, 0xe1, 0x98, 0x13, - 0xb5, 0xd4, 0x1c, 0x6, 0xda, 0x47, 0x5c, 0xf0, 0x5, 0x77, - 0xfe, 0x15, 0xd5, 0x67, 0xd7, 0x3c, 0x27, 0xa4, 0xea, 0xb7, - 0x29, 0x1a, 0x4f, 0x79, 0x6b, 0x1c, 0xd2, 0x2c, 0x40, 0x85, - 0xc, 0xca, 0x9, 0xc0, 0x24, 0x9c, 0x7e, 0x34, 0xed, 0xbf, - 0x90, 0xae, 0x6b, 0xd1, 0x45, 0x14, 0x86, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x15, 0x9d, 0xaa, 0x7f, 0xcb, 0xf, 0xab, - 0x7f, 0x2a, 0xd1, 0xac, 0xed, 0x57, 0xfe, 0x58, 0xfd, 0x5b, - 0xf9, 0x50, 0x5, 0xcb, 0x7f, 0xf5, 0x9, 0xf4, 0xa9, 0x6a, - 0x2b, 0x7f, 0xf5, 0x9, 0xf4, 0xa4, 0xba, 0xb9, 0x8a, 0xce, - 0xda, 0x4b, 0x89, 0x98, 0x2c, 0x71, 0xa9, 0x62, 0x4d, 00, - 0x53, 0xd6, 0xf5, 0xab, 0x5d, 0xb, 0x4e, 0x92, 0xf2, 0xe9, - 0xc2, 0xaa, 0x8e, 0x6, 0x7a, 0x9a, 0xf0, 0x9d, 0x6f, 0xc4, - 0x97, 0x5e, 0x24, 0xd4, 0x5a, 0x79, 0x98, 0x88, 0x41, 0xfd, - 0xdc, 0x79, 0xe0, 0xa, 0x83, 0xc6, 0xbe, 0x30, 0x9b, 0xc5, - 0x1a, 0xc3, 0x84, 0x62, 0x2c, 0xa2, 0x38, 0x8d, 0x3d, 0x7d, - 0xcd, 0x64, 0xdb, 0x38, 0x18, 0xad, 0xa1, 0x1b, 0x6a, 0x70, - 0x56, 0xaa, 0xe4, 0xec, 0x8d, 0xfb, 0x53, 0xd2, 0xb7, 0x6d, - 0x1b, 0xa5, 0x67, 0xe8, 0x3a, 0x1e, 0xa1, 0xab, 0x32, 0x8b, - 0x68, 0x1b, 0xcb, 0xcf, 0x2e, 0x47, 0x2, 0xbd, 0x2f, 0x48, - 0xf0, 0x44, 0x16, 0xaa, 0xaf, 0x76, 0xfe, 0x64, 0x83, 0xd3, - 0xa5, 0x39, 0x49, 0x20, 0xa7, 0x4d, 0xc8, 0xc6, 0xb0, 0x57, - 0x93, 0x1b, 0x14, 0xb7, 0xd2, 0xba, 0x1b, 0x58, 0x27, 00, - 0x13, 0x13, 0xa, 0xdf, 0x86, 0xce, 0xde, 0x5, 0x2, 0x38, - 0x95, 0x71, 0xe8, 0x2a, 0x7c, 0x56, 0x6e, 0x47, 0x54, 0x69, - 0xd8, 0xce, 0x80, 0x30, 0x18, 0x61, 0x83, 0xef, 0x56, 0xd0, - 0xe2, 0xbc, 0xc7, 0xe2, 0xd7, 0x89, 0x2e, 0x34, 0xc6, 0xb4, - 0xb5, 0xb0, 0x9c, 0xa4, 0xe7, 0xe6, 0x6d, 0xa7, 0xa7, 0xd6, - 0x97, 0xc0, 0x9f, 0x12, 0xd7, 0x55, 0x74, 0xd3, 0x75, 0x62, - 0x23, 0xb9, 0xe8, 0x92, 0x76, 0x6a, 0x2d, 0xa0, 0xb9, 0xd2, - 0x76, 0x3d, 0x4b, 0x34, 0x8c, 0xd8, 0xa8, 0x7c, 0xcc, 0x77, - 0xa6, 0xb4, 0x95, 0x36, 0x2e, 0xe6, 0x7f, 0x88, 0x9d, 0xd7, - 0x41, 0xbc, 0x68, 0xfe, 0xfe, 0xc2, 0x6, 0x2b, 0xe6, 0xbb, - 0x7f, 0xf, 0x6b, 0x37, 0x73, 0xca, 0xf0, 0xe9, 0xd3, 0xb8, - 0x2e, 0x4e, 0x42, 0xd7, 0xd3, 0x73, 0xc8, 0x84, 0x6d, 0x60, - 0x19, 0x4f, 0x50, 0x6a, 0xe5, 0xac, 0x70, 0x24, 0x40, 0xc1, - 0x1a, 0x22, 0x9e, 0xca, 0x31, 0x55, 0x7b, 0x10, 0xe1, 0xcc, - 0x7c, 0xce, 0x9a, 0x6, 0xad, 0x6d, 0xcc, 0xda, 0x7c, 0xe8, - 0x7, 0x72, 0xb5, 0x76, 0xd5, 0x4a, 0xb6, 0xd6, 0x4, 0x1f, - 0x42, 0x2b, 0xe8, 0xe9, 0x20, 0x8a, 0x51, 0x89, 0x23, 0x56, - 0x1e, 0xe2, 0xb2, 0x2f, 0xfc, 0x29, 0xa4, 0xea, 0xa, 0x43, - 0xdb, 0x2c, 0x67, 0xfb, 0xc8, 0x31, 0x4f, 0x9c, 0x8f, 0x61, - 0x6d, 0x8f, 0x24, 0xb3, 0x5e, 0x95, 0xbf, 0x66, 0xbd, 0x31, - 0x5a, 0x97, 0xbe, 0x6, 0x9e, 0xcc, 0x99, 0x2c, 0xdf, 0xcc, - 0x8c, 0x7f, 0x7, 0x7a, 0xa9, 0x5, 0xbc, 0x90, 0xc9, 0xb2, - 0x54, 0x28, 0xc3, 0xa8, 0x34, 0xee, 0x98, 0x28, 0xb5, 0xb9, - 0xd7, 0x68, 0x9a, 0x9b, 0x6d, 0x5b, 0x79, 0xcf, 0xfb, 0xac, - 0x6b, 0xa0, 0xae, 0x2e, 0xd5, 0x71, 0x8a, 0xea, 0x2c, 0x27, - 0x32, 0x46, 0x11, 0xfe, 0xf0, 0xa8, 0x68, 0xda, 0x2c, 0xb9, - 0x50, 0xdc, 0xff, 00, 0xab, 0xa9, 0xaa, 0x1b, 0x9f, 0xb9, - 0x52, 0x59, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, 0x67, - 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, 0x7f, - 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, 0x2, - 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, 0x14, 0xd7, - 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, - 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, 0x7f, - 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, - 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, 0xf2, - 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, - 0x50, 0x1, 0x5e, 0x65, 0xe3, 0xff, 00, 0x83, 0x56, 0x3e, - 0x3a, 0xf1, 0x14, 0x1a, 0xc1, 0xd5, 0x66, 0xb1, 0x90, 0x22, - 0xc7, 0x70, 0x8b, 0x10, 0x90, 0x4a, 0xaa, 0x78, 0xda, 0x49, - 0x1b, 0x4e, 0x32, 0x33, 0xc8, 0xe9, 0xc7, 0x5c, 0xfa, 0x6d, - 0x14, 0xac, 0x9e, 0xa3, 0xb9, 0x5e, 0xc6, 0xce, 0x1d, 0x3b, - 0x4f, 0xb6, 0xb2, 0xb7, 0x4, 0x41, 0x6f, 0x12, 0xc5, 0x18, - 0x27, 0x24, 0x2a, 0x8c, 0xe, 0x7e, 0x82, 0xac, 0x51, 0x45, - 0x53, 0x77, 0x77, 0x64, 0xa5, 0x65, 0x64, 0x15, 0x97, 0xe2, - 0x5d, 0x27, 0xfb, 0x77, 0xc3, 0x1a, 0xa6, 0x92, 0x8, 0x56, - 0xbc, 0xb5, 0x92, 0x15, 0x66, 0xe8, 0x19, 0x94, 0x80, 0x7f, - 0x3c, 0x56, 0xa5, 0x15, 0x32, 0x57, 0x56, 0x29, 0x3b, 0x3b, - 0x9c, 0x17, 0xc2, 0xcf, 0x12, 0x5a, 0xdf, 0xf8, 0x5e, 0xd3, - 0x41, 0xb8, 0x91, 0x20, 0xd7, 0x34, 0x98, 0xbe, 0xc9, 0x77, - 0x63, 0x21, 0xdb, 0x2a, 0x79, 0x78, 0x5d, 0xdb, 0x4f, 0x25, - 0x71, 0xb7, 0x91, 0xc6, 0x4d, 0x4d, 0xe2, 0xff, 00, 0x1c, - 0xc9, 0xa5, 0x6b, 0x3a, 0x67, 0x87, 0xb4, 0x5, 0xb5, 0xbf, - 0xd7, 0xef, 0x2e, 0x91, 0x24, 0xb6, 0x7c, 0xb0, 0x82, 0x1e, - 0xac, 0xef, 0xb4, 0xfc, 0xbc, 0x60, 0x8c, 0xf6, 0xe7, 0x7, - 0x15, 0xa5, 0xe2, 0x2f, 0x87, 0xde, 0x14, 0xf1, 0x5d, 0xc2, - 0xdc, 0x6b, 0x3a, 0x2c, 0x17, 0x17, 0xb, 0xff, 00, 0x2d, - 0x95, 0x9a, 0x29, 0x1b, 0x8c, 0x61, 0x99, 0x8, 0x2c, 0x3d, - 0x1, 0x27, 0x15, 0x3f, 0x87, 0x3c, 0x17, 0xe1, 0xcf, 0x9, - 0x24, 0x8b, 0xa1, 0xe9, 0x50, 0x5a, 0x19, 0x3e, 0xfc, 0x80, - 0x97, 0x91, 0x87, 0x1c, 0x17, 0x62, 0x5b, 0x1c, 0x74, 0xce, - 0x2a, 0xae, 0xe4, 0xef, 0x2f, 0xf8, 0x72, 0x6d, 0x65, 0x68, - 0x9c, 0x85, 0xb5, 0xcc, 0x3a, 0x2f, 0xc7, 0xdd, 0x49, 0x35, - 0x7, 0x58, 0x86, 0xb1, 0xa6, 0xc3, 0xf6, 0x29, 0x24, 0x20, - 0x7, 0x64, 0x21, 0x4c, 0x60, 0xff, 00, 0x78, 0xe3, 0x38, - 0xff, 00, 0xeb, 0x51, 0xf1, 0xa, 0xe6, 0x1d, 0x53, 0xc7, - 0xfe, 0x9, 0xd0, 0xac, 0xe4, 0x59, 0x35, 0x8, 0x35, 0x1f, - 0xb6, 0xcc, 0xa8, 0x41, 0x30, 0xc4, 0x8b, 0x92, 0x5b, 0xd3, - 0x3d, 0xbd, 0x71, 0x5d, 0xbf, 0x88, 0x3c, 0x31, 0xa2, 0xf8, - 0xaa, 0xc0, 0x59, 0x6b, 0x7a, 0x7c, 0x57, 0x90, 0x3, 0xb9, - 0x43, 0xe4, 0x32, 0x1f, 0x55, 0x60, 0x43, 0x2f, 0xe0, 0x46, - 0x7a, 0x55, 0x6f, 0xd, 0xf8, 0x2b, 0xc3, 0x9e, 0x11, 0x49, - 0x46, 0x85, 0xa5, 0x43, 0x68, 0xd2, 0x9f, 0x9e, 0x4c, 0xb3, - 0xbb, 0xe, 0x38, 0xde, 0xc4, 0xb6, 0x38, 0x1c, 0x67, 0x14, - 0xa3, 0xa5, 0xaf, 0xd3, 0xfc, 0xef, 0xf9, 0x8e, 0x5a, 0xde, - 0xdd, 0x7f, 0xca, 0xc7, 0x27, 0xf0, 0x97, 0xfe, 0x3f, 0xfc, - 0x71, 0xff, 00, 0x63, 0x4, 0xff, 00, 0xd2, 0xa5, 0xf8, - 0x5b, 0xff, 00, 0x21, 0x7f, 0x1d, 0xff, 00, 0xd8, 0xc1, - 0x3f, 0xf4, 0xae, 0xcf, 0x49, 0xf0, 0xfe, 0x97, 0xa1, 0x49, - 0x7c, 0xfa, 0x6d, 0xaf, 0x90, 0xd7, 0xd7, 0xd, 0x73, 0x72, - 0x7c, 0xc6, 0x6d, 0xf2, 0x37, 0x56, 0xf9, 0x89, 0xc7, 0xd0, - 0x60, 0x52, 0xe9, 0x7a, 0xe, 0x99, 0xa2, 0xcd, 0x7f, 0x2e, - 0x9f, 0x6d, 0xe4, 0xbd, 0xfd, 0xc3, 0x5d, 0x5c, 0x9f, 0x31, - 0x9b, 0xcc, 0x91, 0xba, 0xb7, 0x24, 0xe3, 0xe8, 0x30, 0x28, - 0x5a, 0x5b, 0xd2, 0xdf, 0x97, 0xf9, 0xe, 0x4e, 0xf7, 0xf5, - 0xbf, 0xe7, 0xfe, 0x67, 0x7, 0xf0, 0xcb, 0xfe, 0x43, 0x1f, - 0x10, 0xff, 00, 0xec, 0x37, 0x37, 0xf5, 0xa9, 0xbe, 0x7, - 0x7f, 0xc9, 0x2d, 0xb4, 0xff, 00, 0xaf, 0x8b, 0x8f, 0xfd, - 0x18, 0x6b, 0xb4, 0xd3, 0x3c, 0x3b, 0xa5, 0x68, 0xd3, 0x6a, - 0x33, 0x58, 0x5a, 0xf9, 0x32, 0x6a, 0x33, 0x9b, 0x8b, 0xa3, - 0xe6, 0x33, 0x79, 0x92, 0x1e, 0xa7, 0x92, 0x71, 0xf4, 0x18, - 0x14, 0xed, 0xf, 0x40, 0xd3, 0x3c, 0x37, 0xa5, 0xa6, 0x99, - 0xa4, 0xdb, 0x7d, 0x9e, 0xcd, 0x19, 0x99, 0x63, 0xf3, 0x19, - 0xf0, 0x58, 0xe4, 0xf2, 0xc4, 0x9e, 0xa7, 0xd6, 0x92, 0x5a, - 0x35, 0xe4, 0x97, 0xdc, 0x12, 0x77, 0xfb, 0xdb, 0xfc, 0xff, - 00, 0xcc, 0xe2, 0xfe, 0x8, 0xff, 00, 0xc9, 0x31, 0xb6, - 0xff, 00, 0xaf, 0x9b, 0x8f, 0xfd, 0x18, 0xd5, 0xe6, 0x29, - 0x6b, 0x34, 0xff, 00, 0xb3, 0xc5, 0xbd, 0xcc, 0x7f, 0x68, - 0xf2, 0xac, 0xb5, 0xc3, 0x71, 0x39, 0xb7, 0x38, 0x90, 0x46, - 0x1c, 0x82, 0x41, 0xec, 0x46, 0xe0, 0x73, 0xdb, 0x19, 0xaf, - 0xa0, 0xb4, 0x4d, 0x7, 0x4c, 0xf0, 0xe6, 0x96, 0xba, 0x6e, - 0x93, 0x6d, 0xf6, 0x7b, 0x45, 0x66, 0x71, 0x1f, 0x98, 0xcf, - 0x82, 0xc7, 0x27, 0x96, 0x24, 0xf5, 0x3e, 0xb4, 0xcd, 0x1f, - 0xc3, 0x7a, 0x46, 0x83, 0xa3, 0xb6, 0x93, 0xa7, 0x59, 0x2c, - 0x56, 0xc, 0x5d, 0x9a, 0x7, 0x66, 0x90, 0x36, 0xef, 0xbd, - 0x9d, 0xe4, 0x92, 0xf, 0xa5, 0x37, 0xbd, 0xfc, 0x97, 0xe1, - 0x6f, 0xf2, 0x1b, 0x96, 0xfe, 0x6d, 0xbf, 0x93, 0xbf, 0xf9, - 0x9e, 0x7f, 0x37, 0x82, 0x74, 0x46, 0xf0, 0xdb, 0xeb, 0x33, - 0xfc, 0x4b, 0xf1, 0x7b, 0x68, 0xed, 0xe, 0xf6, 0xb8, 0x6d, - 0x68, 0x18, 0xd9, 0xf, 0x18, 0xfb, 0x9c, 0xe7, 0xa6, 0x3d, - 0x78, 0xeb, 0x59, 0x3e, 0x2c, 0xb3, 0xd2, 0xac, 0x3e, 0x1e, - 0x78, 0xe, 0xdf, 0x44, 0xb9, 0xb9, 0xb9, 0xd3, 0x17, 0x5b, - 0xb6, 0x6b, 0x69, 0xae, 0x54, 0xab, 0xba, 0x12, 0xe7, 0x24, - 0x15, 0x5f, 0x5e, 0x38, 0x1c, 0x62, 0xbb, 0x58, 0xfe, 0x11, - 0x78, 0xa, 0x2d, 0x4b, 0xed, 0xeb, 0xe1, 0xbb, 0x63, 0x36, - 0xf3, 0x26, 0xd6, 0x92, 0x46, 0x8b, 0x27, 0xfe, 0x99, 0x96, - 0xd9, 0x8f, 0x6c, 0x63, 0xda, 0xba, 0x3d, 0x63, 0xc3, 0xda, - 0x56, 0xbd, 0x15, 0xa4, 0x5a, 0x95, 0xa0, 0x99, 0x2d, 0x27, - 0x4b, 0x98, 0x14, 0x3b, 0x26, 0xc9, 0x17, 0xee, 0x9f, 0x94, - 0x8c, 0xe3, 0x3d, 0xf, 0x14, 0xff, 00, 0xcd, 0x3f, 0xb9, - 0x91, 0xfe, 0x4d, 0x7d, 0xe8, 0xe2, 0x7e, 0x2a, 0xca, 0xba, - 0x76, 0xab, 0xe0, 0xcd, 0x6e, 0xe4, 0x95, 0xd3, 0xec, 0x75, - 0x65, 0xfb, 0x4b, 0x9f, 0xbb, 0x18, 0x71, 0x80, 0xc7, 0xd0, - 0xc, 0x1a, 0xe8, 0x7c, 0x59, 0xe3, 0x28, 0xfc, 0x36, 0x74, - 0x8b, 0x7b, 0x5b, 0x55, 0xd4, 0x6f, 0xf5, 0x5b, 0xa4, 0xb7, - 0xb7, 0xb5, 0x49, 0xb6, 0x16, 0x53, 0xf7, 0xa4, 0xce, 0xf, - 0xca, 0xbc, 0x67, 0x8e, 0xfd, 0x6b, 0xa1, 0xbd, 0xb1, 0xb5, - 0xd4, 0xac, 0xe5, 0xb3, 0xbe, 0xb6, 0x8a, 0xe6, 0xda, 0x51, - 0xb6, 0x48, 0xa5, 0x40, 0xca, 0xc3, 0xdc, 0x1a, 0xe7, 0xbc, - 0x3d, 0xf0, 0xe7, 0xc2, 0x5e, 0x15, 0xbd, 0x6b, 0xdd, 0x1b, - 0x45, 0x8a, 0xde, 0xe8, 0x8d, 0xa2, 0x56, 0x91, 0xe5, 0x65, - 0x1c, 0xfd, 0xd2, 0xec, 0x76, 0xe7, 0x3c, 0xe3, 0x19, 0xa5, - 0x1d, 0x34, 0x7b, 0x5e, 0xff, 00, 0x96, 0x9f, 0x80, 0xe5, - 0xdd, 0x6f, 0x6b, 0x7e, 0x7f, 0xe6, 0x73, 0x97, 0x1f, 0xf2, - 0x71, 0x76, 0xbf, 0xf6, 0x2f, 0xb7, 0xfe, 0x8d, 0x35, 0x8d, - 0xe1, 0x8b, 0x4b, 0xff, 00, 0x89, 0x30, 0xea, 0xba, 0xee, - 0xaf, 0xe3, 0x3d, 0x67, 0x4c, 0x58, 0x2e, 0xa4, 0xb7, 0x5d, - 0x3f, 0x4b, 0xbb, 0x16, 0xc9, 0x6b, 0x1a, 0x13, 0xfe, 0xb3, - 0x83, 0xb8, 0x90, 0x7a, 0x9f, 0x4e, 0xa7, 0xb7, 0xa8, 0xb7, - 0x87, 0xf4, 0xb6, 0xf1, 0x1a, 0x78, 0x80, 0xda, 0xe7, 0x54, - 0x4b, 0x7f, 0xb3, 0x2c, 0xfe, 0x63, 0x71, 0x1e, 0x73, 0xb7, - 0x6e, 0x76, 0xf5, 0xef, 0x8c, 0xd6, 0x1e, 0xa9, 0xf0, 0xb7, - 0xc1, 0x5a, 0xce, 0xae, 0xfa, 0xad, 0xf6, 0x81, 0x4, 0x97, - 0x8e, 0xc1, 0xdd, 0xd6, 0x49, 0x11, 0x5d, 0xb3, 0x9c, 0xb2, - 0xab, 0x5, 0x24, 0xf7, 0xc8, 0xe7, 0xbe, 0x69, 0x25, 0xb7, - 0xcf, 0xf3, 0xb8, 0xdb, 0xbd, 0xdf, 0xa7, 0xe0, 0xac, 0x70, - 0x5f, 0x8, 0x57, 0x45, 0x8b, 0xc6, 0x9e, 0x3a, 0x87, 0xc3, - 0xf8, 0xfe, 0xcb, 0x8c, 0x42, 0x96, 0xf8, 0x90, 0xbe, 0xe0, - 0xa1, 0xc1, 0x60, 0xc4, 0x92, 0x41, 0x6c, 0x9c, 0xfb, 0xd7, - 0x4b, 0xf0, 0x37, 0xfe, 0x49, 0x7d, 0x9f, 0xfd, 0x7c, 0x4f, - 0xff, 00, 0xa3, 0xd, 0x75, 0xd6, 0x1e, 0x14, 0xd0, 0xf4, - 0xad, 0x52, 0xe3, 0x52, 0xb0, 0xd3, 0xa2, 0xb5, 0xb9, 0xb8, - 0x85, 0x2d, 0xe5, 0x30, 0x92, 0xa8, 0x63, 0x50, 0x2, 0xa8, - 0x40, 0x76, 0x8c, 00, 0x7, 00, 0x54, 0xfa, 0x16, 0x83, - 0xa6, 0x78, 0x6b, 0x4b, 0x4d, 0x37, 0x48, 0xb6, 0xfb, 0x35, - 0x9a, 0x33, 0x32, 0xc7, 0xe6, 0x33, 0xe0, 0xb1, 0xc9, 0xe5, - 0x89, 0x3d, 0x7d, 0xea, 0x93, 0xef, 0xda, 0xdf, 0x88, 0x9e, - 0xbf, 0x7d, 0xff, 00, 0x3, 0x86, 0xf8, 0xc9, 0xff, 00, - 0x1e, 0x1e, 0x16, 0xff, 00, 0xb1, 0x82, 0xd7, 0xff, 00, - 0x66, 0xa2, 0xe3, 0xfe, 0x4e, 0x2e, 0xd7, 0xfe, 0xc5, 0xf6, - 0xff, 00, 0xd1, 0xa6, 0xbb, 0x8d, 0x67, 0xc3, 0xfa, 0x5f, - 0x88, 0x23, 0xb5, 0x4d, 0x52, 0xd7, 0xed, 0xb, 0x6b, 0x70, - 0xb7, 0x30, 0x8f, 0x31, 0x93, 0x6c, 0x8b, 0xf7, 0x5b, 0xe5, - 0x23, 0x3d, 0x7a, 0x1e, 0x28, 0x6f, 0xf, 0xe9, 0x6d, 0xe2, - 0x34, 0xf1, 0x1, 0xb5, 0xce, 0xa8, 0x96, 0xff, 00, 0x66, - 0x59, 0xfc, 0xc6, 0xe2, 0x3c, 0xe7, 0x6e, 0xdc, 0xed, 0xeb, - 0xdf, 0x19, 0xa9, 0x5a, 0x7d, 0xef, 0xf1, 0x56, 0x1b, 0x77, - 0x5f, 0x25, 0xf9, 0xdc, 0xe1, 0xfe, 0xf, 0x5c, 0xc5, 0x69, - 0xa5, 0xeb, 0xda, 0x25, 0xc3, 0x88, 0xf5, 0xd, 0x3f, 0x55, - 0x9c, 0xdc, 0x46, 0xe7, 0xd, 0xb5, 0x8e, 0x55, 0xf9, 0x3d, - 0xe, 0xf, 0x3e, 0xd5, 0xcd, 0x7c, 0x41, 0xf1, 0x24, 0xbe, - 0x36, 0xf8, 0x7f, 0xa8, 0x6a, 0x36, 0x76, 0x57, 0x11, 0x69, - 0x5a, 0x46, 0xb7, 0x18, 0x5b, 0xbb, 0x69, 0xf2, 0xd7, 0x31, - 0x21, 0x21, 0xa4, 0x4f, 0x97, 0xe5, 00, 0xb2, 0x90, 0x7e, - 0x61, 0xf9, 0x57, 0xa4, 0xf8, 0x8b, 0xe1, 0xdf, 0x84, 0xfc, - 0x57, 0x78, 0x97, 0x9a, 0xd6, 0x8d, 0x15, 0xc5, 0xca, 0x8d, - 0xbe, 0x6a, 0xc8, 0xf1, 0x33, 0xe, 0x3e, 0xf1, 0x46, 0x1b, - 0xb1, 0x8e, 0x33, 0x9c, 0x76, 0xad, 0xcb, 0x5d, 0x2e, 0xc2, - 0xcb, 0x4c, 0x5d, 0x36, 0xda, 0xca, 0xde, 0x2b, 0x15, 0x43, - 0x18, 0xb7, 0x48, 0xc0, 0x8f, 0x69, 0xea, 0x36, 0xf4, 0xe7, - 0x27, 0x3e, 0xb9, 0xa2, 0xde, 0xea, 0xbf, 0x4b, 0x7e, 0x16, - 0xff, 00, 0x2f, 0xc4, 0x36, 0x6e, 0xdd, 0x6f, 0xf8, 0xdf, - 0xfc, 0xcf, 0x35, 0x9b, 0xc1, 0x3a, 0x23, 0x78, 0x6d, 0xf5, - 0x99, 0xfe, 0x25, 0xf8, 0xbd, 0xb4, 0x76, 0x87, 0x7b, 0x5c, - 0x36, 0xb4, 0xc, 0x6c, 0x87, 0x8c, 0x7d, 0xce, 0x73, 0xd3, - 0x1e, 0xbc, 0x75, 0xac, 0x9f, 0x16, 0x59, 0xe9, 0x56, 0x1f, - 0xf, 0x3c, 0x7, 0x6f, 0xa2, 0x5c, 0xdc, 0xdc, 0xe9, 0x8b, - 0xad, 0xdb, 0x35, 0xb4, 0xd7, 0x2a, 0x55, 0xdd, 0x9, 0x73, - 0x92, 0xa, 0xaf, 0xaf, 0x1c, 0xe, 0x31, 0x5d, 0xac, 0x7f, - 0x8, 0xbc, 0x5, 0x16, 0xa5, 0xf6, 0xf5, 0xf0, 0xdd, 0xb1, - 0x9b, 0x79, 0x93, 0x6b, 0x49, 0x23, 0x45, 0x93, 0xff, 00, - 0x4c, 0xcb, 0x6c, 0xc7, 0xb6, 0x31, 0xed, 0x5d, 0x1e, 0xb1, - 0xe1, 0xed, 0x2b, 0x5e, 0x8a, 0xd2, 0x2d, 0x4a, 0xd0, 0x4c, - 0x96, 0x93, 0xa5, 0xcc, 0xa, 0x1d, 0x93, 0x64, 0x8b, 0xf7, - 0x4f, 0xca, 0x46, 0x71, 0x9e, 0x87, 0x8a, 0xaf, 0xf3, 0x4f, - 0xee, 0x64, 0xff, 00, 0x93, 0x5f, 0x7a, 0x38, 0xdf, 0x8e, - 0x5f, 0xf2, 0x4a, 0x75, 0x2f, 0xfa, 0xeb, 0x7, 0xfe, 0x8d, - 0x5a, 0x8b, 0xc6, 0xf6, 0x9e, 0x13, 0xd7, 0x35, 0x4f, 0xe, - 0x68, 0x1e, 0x20, 0x17, 0xd6, 0x7a, 0x85, 0xc2, 0x79, 0x9a, - 0x6e, 0xa7, 0x6e, 0xe2, 0x2f, 0x2d, 0xc6, 0xdc, 0xa0, 0x72, - 0x4f, 0xcc, 0x70, 0xb8, 0x5, 0x4f, 0x51, 0x82, 0x9, 0x15, - 0xdc, 0xeb, 0xba, 0xe, 0x9b, 0xe2, 0x5d, 0x26, 0x5d, 0x2f, - 0x57, 0xb6, 0xfb, 0x4d, 0x9c, 0xa5, 0x59, 0xe3, 0xde, 0xc9, - 0x92, 0xa4, 0x11, 0xca, 0x90, 0x7a, 0x81, 0xde, 0xa3, 0xd6, - 0xfc, 0x35, 0xa3, 0x78, 0x8f, 0x4b, 0xfe, 0xcd, 0xd5, 0xf4, - 0xf8, 0xae, 0xed, 0x6, 0xa, 0xa4, 0x99, 0xca, 0x11, 0xc6, - 0x55, 0x87, 0x2a, 0x71, 0xc6, 0x41, 0x6, 0x92, 0xdb, 0xe7, - 0x7f, 0xc0, 0xa7, 0xab, 0x5e, 0x96, 0x3c, 0xde, 0x16, 0xf1, - 0x3f, 0xc3, 0xff, 00, 0x1b, 0xe8, 0x1a, 0x34, 0x9e, 0x2a, - 0x97, 0xc4, 0x3a, 0x76, 0xaf, 0x71, 0x22, 0x1b, 0x4b, 0xc4, - 0xcd, 0xcc, 0x9, 0xc1, 0x12, 0x6f, 0xc9, 0x66, 00, 0x75, - 0x3c, 0x2f, 0x7, 0xe5, 0xe7, 0x8a, 0x3a, 0xf, 0xfc, 0x89, - 0xdf, 0x16, 0x7f, 0xeb, 0xfe, 0xfb, 0xff, 00, 0x40, 0x35, - 0xe8, 0xde, 0x1c, 0xf8, 0x7f, 0xe1, 0x5f, 0x9, 0xdc, 0x49, - 0x71, 0xa2, 0x68, 0xf0, 0xdb, 0x5c, 0x38, 0xc1, 0x99, 0x9d, - 0xe5, 0x70, 0x3d, 0x3, 0x39, 0x25, 0x47, 0xa8, 0x18, 0xcd, - 0x5a, 0x83, 0xc2, 0x3a, 0x1d, 0xad, 0x9e, 0xad, 0x69, 0xd, - 0x8e, 0xd8, 0x35, 0x79, 0x1e, 0x4b, 0xe4, 0xf3, 0x5c, 0xf9, - 0xac, 0xe3, 0xc, 0x72, 0x5b, 0x2b, 0x91, 0xfd, 0xdc, 0x52, - 0x92, 0xbc, 0x5a, 0xf2, 0x6b, 0xf2, 0xff, 00, 0x21, 0xc5, - 0xda, 0x49, 0xf9, 0xa7, 0xf9, 0xff, 00, 0x99, 0x95, 0xe0, - 0x1f, 0xf9, 0x24, 0xda, 0x27, 0xfd, 0x83, 0x17, 0xff, 00, - 0x41, 0xaf, 0x27, 0xb2, 0x8e, 0x45, 0xfd, 0x9d, 0xfc, 0x3d, - 0x7e, 0xa8, 0xf2, 0x41, 0xa7, 0x6a, 0xeb, 0x77, 0x72, 0xa8, - 0xb9, 0x26, 0x25, 0x99, 0xc1, 0xe3, 0xd3, 0x90, 0x6b, 0xdf, - 0x34, 0xfd, 0x2a, 0xcb, 0x4b, 0xd2, 0x60, 0xd2, 0xec, 0xe1, - 0xf2, 0xac, 0xa0, 0x88, 0x43, 0x1c, 0x5b, 0x8b, 0x6d, 0x40, - 0x31, 0x8c, 0x92, 0x49, 0xfc, 0xeb, 0x95, 0xf1, 0x7, 0x85, - 0xef, 0x74, 0x7f, 0x87, 0x73, 0x68, 0xbe, 0x4, 0x82, 0xb, - 0x79, 0x23, 0x39, 0x8e, 0xd6, 0x7c, 0x4a, 0x93, 0x23, 0x31, - 0x32, 0x46, 0x7c, 0xdd, 0xc3, 0xe6, 0x4, 0xf5, 0xe3, 0xb7, - 0x15, 0x52, 0x96, 0xb2, 0x92, 0xea, 0xd7, 0xe0, 0xee, 0x4c, - 0x57, 0xba, 0xa2, 0xfc, 0xff, 00, 0x15, 0x62, 0x3f, 0x89, - 0x7a, 0xfe, 0x94, 0x9f, 0xa, 0x35, 0x5b, 0xcf, 0xb6, 0x40, - 0xf6, 0xf7, 0xf6, 0x66, 0x2b, 0x56, 0x57, 0x4, 0x4c, 0xce, - 0x30, 0xbb, 0x7d, 0x7d, 0x7e, 0x80, 0xfa, 0x56, 0xaf, 0xc3, - 0xcf, 0xf9, 0x27, 0x3e, 0x1c, 0xff, 00, 0xb0, 0x74, 0x3f, - 0xfa, 00, 0xaf, 0x22, 0x6d, 0x13, 0x4d, 0xd4, 0xac, 0x6e, - 0x6c, 0xfc, 0x35, 0xf0, 0xaf, 0x59, 0xd3, 0x3c, 0x41, 0xa8, - 0xc0, 0xd0, 0x49, 0x75, 0xa8, 0x44, 0xe9, 0x6b, 0x6a, 0x1c, - 0x7e, 0xf1, 0x91, 0xdd, 0x88, 0xe0, 0x64, 0xd, 0xaa, 0xa4, - 0x83, 0xc0, 0xec, 0x7d, 0xcf, 0x43, 0xd3, 0x17, 0x45, 0xd0, - 0x74, 0xfd, 0x2d, 0x18, 0x32, 0xd9, 0xdb, 0x47, 00, 0x60, - 0x31, 0x9d, 0xaa, 0x6, 0x7f, 0x4a, 0x6b, 0x44, 0xfc, 0xed, - 0xfa, 0xff, 00, 0x9e, 0xe2, 0xec, 0xbd, 0x7f, 0x42, 0xfd, - 0x14, 0x51, 0x52, 0x30, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xac, 0xed, 0x57, 0xfe, 0x58, 0xfd, 0x5b, 0xf9, 0x56, 0x8d, - 0x67, 0x6a, 0xbf, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x79, 0x47, 0xc6, 0x3f, - 0x16, 0x35, 0xb4, 0x11, 0xe8, 0x76, 0x92, 0x61, 0xe5, 0xe6, - 0x62, 0xa7, 0x95, 0xaf, 0x54, 0x57, 0xf2, 0xac, 0x4c, 0x9f, - 0xdd, 0x42, 0xdf, 0x90, 0xaf, 0x96, 0x35, 0xcb, 0x9b, 0xbf, - 0x16, 0x78, 0xe6, 0xe8, 0xdb, 0x2b, 0x4b, 0x2c, 0xb2, 0xec, - 0x50, 0x39, 0xc6, 0xd, 0x54, 0x48, 0xa8, 0xf4, 0xb1, 0x4e, - 0xca, 0x19, 0x6e, 0x66, 0x48, 0x2d, 0xe3, 0x69, 0x24, 0x73, - 0x80, 0xaa, 0x3b, 0xd7, 0xb2, 0x78, 0x3b, 0xe1, 0x86, 0xc4, - 0x8e, 0xf3, 0x5a, 0xce, 0xee, 0xab, 0xf, 0xa7, 0xd6, 0xb7, - 0x7c, 0x9, 0xf0, 0xfa, 0xd3, 0xc3, 0x56, 0x89, 0x73, 0x72, - 0x8b, 0x2d, 0xfb, 0xc, 0xb3, 0x11, 0x9d, 0xbe, 0xd5, 0xdd, - 0x55, 0x39, 0xf4, 0x46, 0x50, 0xa0, 0xb7, 0x64, 0x36, 0xd6, - 0xb0, 0x5a, 0x44, 0x22, 0x82, 0x25, 0x8d, 00, 0xc6, 0x14, - 0x62, 0xa6, 0xa2, 0x8a, 0xcc, 0xe8, 0xd8, 0x2b, 0x2b, 0x5e, - 0xd7, 0x6d, 0xb4, 0x2d, 0x3d, 0xee, 0x27, 0x61, 0xbb, 0x1f, - 0x22, 0xf7, 0x26, 0x99, 0xad, 0x78, 0x86, 0xd7, 0x48, 0x81, - 0xb2, 0x43, 0xcd, 0x8f, 0x95, 0x1, 0xaf, 0x22, 0xd7, 0xb5, - 0xb, 0xbd, 0x6a, 0xe9, 0xa6, 0xb9, 0x72, 0x47, 0xf0, 0xa7, - 0x61, 0x55, 0x18, 0xdc, 0xca, 0xa5, 0x4e, 0x55, 0xa1, 0xcb, - 0x6b, 0xd7, 0xd7, 0x1a, 0xd6, 0xa9, 0x35, 0xf5, 0xc1, 0x25, - 0x9c, 0xf0, 0x3d, 0x5, 0x63, 0x85, 0x92, 0x19, 0x92, 0x68, - 0x89, 0x59, 0x10, 0xe5, 0x48, 0xec, 0x6b, 0xa0, 0x9a, 0xdb, - 0xda, 0xa9, 0xbd, 0xae, 0x7b, 0x56, 0xc7, 0x13, 0xbd, 0xee, - 0x7b, 0x3f, 0x82, 0xfc, 0x48, 0x75, 0xad, 0x2, 0x37, 0x91, - 0xb3, 0x34, 0x5f, 0x23, 0xe7, 0xbd, 0x6f, 0xb5, 0xd7, 0x1d, - 0x6b, 0xc8, 0x7c, 0x3, 0x74, 0xd6, 0x3a, 0x94, 0xb0, 0x13, - 0x88, 0xdd, 0x78, 0x1e, 0xf5, 0xe8, 0x6d, 0x77, 0xef, 0x50, - 0xd1, 0xd1, 0x9, 0xdd, 0x1a, 0x13, 0x5c, 0xf0, 0x79, 0xa9, - 0x34, 0xdd, 0x5d, 0x61, 0x97, 0xc9, 0x99, 0xb0, 0x8d, 0xd0, - 0xfa, 0x56, 0xc, 0xb7, 0x7c, 0x1e, 0x6b, 0x3a, 0x7b, 0xac, - 0xf7, 0xa2, 0xd7, 0x1f, 0x3d, 0x8f, 0x51, 0x4, 0x30, 0x4, - 0x1c, 0x83, 0x4b, 0x5e, 0x7d, 0xa3, 0xf8, 0xbd, 0xac, 0x5c, - 0x41, 0x78, 0x77, 0x43, 0xd0, 0x37, 0xf7, 0x6b, 0xba, 0xb5, - 0xbb, 0x82, 0xf2, 0x15, 0x96, 0xde, 0x45, 0x74, 0x6e, 0x78, - 0x35, 0x9b, 0x4d, 0x1b, 0x46, 0x6a, 0x44, 0xf5, 0x52, 0xef, - 0x4e, 0xb7, 0xbb, 0x5f, 0x9d, 0x6, 0xef, 0xef, 0xe, 0xb5, - 0x6e, 0x8a, 0x45, 0x9c, 0xf3, 0xe9, 0xb2, 0x5a, 0x3f, 0x1f, - 0x32, 0x7a, 0xd5, 0xdb, 0x50, 0x54, 0x82, 0x3a, 0xd6, 0x99, - 0x1, 0x86, 0x8, 0xc8, 0xa8, 0x45, 0xb8, 0x46, 0xca, 0xf4, - 0xa7, 0x72, 0x79, 0x6c, 0x4c, 0xe, 0x45, 0x43, 0x73, 0xf7, - 0x2a, 0x60, 0x30, 0x2a, 0x1b, 0x9f, 0xb9, 0x48, 0xa2, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, - 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, - 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, - 0x97, 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, - 0x5c, 0xff, 00, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, - 00, 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0xe0, 0xee, 0xfe, 0x22, 0xdc, 0xde, 0xea, 0x57, - 0x36, 0x1e, 0xf, 0xf0, 0xd5, 0xdf, 0x88, 0xa4, 0xb4, 0x90, - 0xc7, 0x73, 0x70, 0xb3, 0xa5, 0xb5, 0xb2, 0x30, 0xea, 0xab, - 0x2b, 0xe4, 0x33, 0x2, 0x47, 00, 0x7b, 0xe4, 0xd4, 0xba, - 0x27, 0xc4, 0x27, 0x9f, 0x5f, 0x8b, 0xc3, 0xfe, 0x25, 0xd0, - 0xae, 0x7c, 0x3f, 0xab, 0xce, 0xb, 0x5b, 0x47, 0x2c, 0xab, - 0x34, 0x37, 00, 0xc, 0xe1, 0x25, 0x5e, 0xb, 0x75, 0xe3, - 0x1f, 0x8e, 0x78, 0xa1, 0x6b, 0xb0, 0x3d, 0x37, 0x3b, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x2b, 0x31, 0xaf, 0x75, 0x41, 0xe2, - 0x34, 0xb2, 0x1a, 0x46, 0x74, 0xb3, 0x6f, 0xe6, 0x36, 0xa3, - 0xf6, 0x95, 0xf9, 0x64, 0xce, 0x3c, 0xbf, 0x2b, 0xef, 0x74, - 0xe7, 0x77, 0x4a, 0xd3, 0xa0, 0x2, 0x8a, 0x6b, 0xb6, 0xc8, - 0xd9, 0xf1, 0x9d, 0xa0, 0x9c, 0x57, 0x3d, 0xe0, 0x6f, 0x15, - 0xff, 00, 0xc2, 0x69, 0xe1, 0x78, 0x75, 0xaf, 0xb1, 0x7d, - 0x8f, 0xcc, 0x92, 0x48, 0xfc, 0x9f, 0x37, 0xcc, 0xc6, 0xd6, - 0x2b, 0x9d, 0xd8, 0x1d, 0x71, 0xe9, 0x42, 0xd7, 0x40, 0xe9, - 0x73, 0xa3, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0xb3, 0xf5, 0xdd, 0x62, 0xdf, 0xc3, 0xfa, - 0x15, 0xee, 0xaf, 0x76, 0x92, 0xbd, 0xbd, 0x9c, 0x46, 0x59, - 0x16, 0x20, 0xb, 0x90, 0x3d, 0x1, 0x20, 0x67, 0xf1, 0xa7, - 0x68, 0xba, 0x9a, 0x6b, 0x5a, 0x15, 0x86, 0xa9, 0x1c, 0x6d, - 0x1a, 0x5e, 0x5b, 0xa4, 0xea, 0x8c, 0x72, 0x54, 0x32, 0x86, - 00, 0xfe, 0x74, 0x1, 0x7a, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xb3, - 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, 0xe5, 0x5a, 0x35, 0x9d, - 0xaa, 0x7f, 0xcb, 0xf, 0xab, 0x7f, 0x2a, 00, 0x92, 0xe1, - 0x4b, 0x68, 0xd3, 0xaa, 0xf5, 0x30, 0xb0, 0x1f, 0x95, 0x79, - 0xcf, 0xc2, 0x6f, 0x5, 0x26, 0x99, 0xd, 0xce, 0xb3, 0x79, - 0x18, 0x6b, 0xa9, 0xe5, 0x6f, 0x2f, 0x70, 0xfb, 0x83, 0x35, - 0xe9, 0xd0, 00, 0x6d, 0xd4, 0x1e, 0x84, 0x53, 0xa2, 0x86, - 0x38, 0x23, 0x11, 0xc6, 0xa1, 0x54, 0x76, 0x14, 0xa, 0xc3, - 0xe8, 0xa2, 0xa0, 0x99, 0xdc, 0x2, 0x17, 0x8a, 0x2, 0xe3, - 0xe5, 0x9e, 0x38, 0x54, 0xb3, 0xb0, 00, 0x57, 0x3f, 0xaa, - 0x6b, 0x92, 0x95, 0x68, 0xed, 0x46, 0xdf, 0xf6, 0xea, 0xc5, - 0xca, 0x33, 0x9c, 0xb1, 0x26, 0xb2, 0xe7, 0x83, 0xaf, 0x15, - 0x49, 0x11, 0x29, 0x33, 0x97, 0xbc, 0x89, 0xe6, 0x76, 0x79, - 0x9, 0x66, 0x3d, 0x49, 0xac, 0xa9, 0xad, 0xbd, 0xab, 0xab, - 0x9a, 0xd8, 0xb6, 0x40, 0x19, 0x35, 0x2, 0xe8, 0x77, 0x77, - 0x4d, 0xb6, 0x38, 0x48, 0xf7, 0x22, 0xae, 0xe6, 0xe, 0x2d, - 0x9c, 0x5c, 0xb6, 0xbe, 0xd5, 0x54, 0xd9, 0x34, 0x8d, 0xb6, - 0x34, 0x2e, 0x7d, 0x14, 0x66, 0xbd, 0x3e, 0xd3, 0xc0, 0xa6, - 0x42, 0x1a, 0xee, 0x5d, 0xbe, 0xcb, 0x5d, 0x1d, 0x87, 0x87, - 0xb4, 0xed, 0x3f, 0x6, 0x2b, 0x75, 0x2e, 0x3f, 0x88, 0x8e, - 0x68, 0x73, 0x1a, 0xa2, 0xde, 0xe7, 0x98, 0x78, 0x7b, 0xc1, - 0xba, 0xac, 0x97, 0xb, 0x74, 0x22, 0xf2, 0xd0, 0x7f, 0x7b, - 0x82, 0x6b, 0x66, 0xfa, 0xb, 0xcb, 0x27, 0x2b, 0x34, 0x4c, - 0x3d, 0xc0, 0xe2, 0xbd, 0x28, 00, 0x3a, 0xc, 0xa, 0x64, - 0xb0, 0xc7, 0x3a, 0x14, 0x91, 0x3, 0x29, 0xec, 0x45, 0x4f, - 0x39, 0xa7, 0xb1, 0x56, 0xd0, 0xf2, 0x59, 0x2f, 0x1, 0xcf, - 0x3c, 0xd5, 0x29, 0xae, 0xba, 0xf3, 0x5e, 0x8b, 0xa9, 0xf8, - 0x2e, 0xc2, 0xf4, 0x16, 0x87, 0x30, 0x37, 0xfb, 0x35, 0xc5, - 0xea, 0xbe, 0x8, 0xd5, 0xad, 0x37, 0x3c, 0x1, 0x65, 0x8c, - 0x7a, 0x75, 0xab, 0x52, 0x46, 0x32, 0xa7, 0x24, 0x73, 0xb3, - 0xdc, 0x67, 0x39, 0x34, 0x69, 0xfe, 0x27, 0xbf, 0xd1, 0x67, - 0xdf, 0x6b, 0x31, 0xd9, 0x9f, 0x99, 0x9, 0xe0, 0xd5, 0x1b, - 0xe8, 0x2f, 0x6d, 0x49, 0x13, 0xdb, 0x4b, 0x1e, 0x3b, 0x95, - 0xe2, 0xb1, 0x65, 0xba, 0x53, 0x9f, 0x9a, 0xaf, 0x46, 0x61, - 0x76, 0x99, 0xed, 0xda, 0x7, 0xc4, 0x8d, 0x33, 0x53, 0xdb, - 0xd, 0xdb, 0xb, 0x7b, 0x83, 0xd8, 0xf4, 0xae, 0xce, 0x29, - 0xa2, 0x9d, 0x37, 0xc5, 0x22, 0xba, 0xfa, 0xa9, 0xcd, 0x7c, - 0x9f, 0x34, 0xb9, 0xe4, 0x12, 0x3d, 0xc5, 0x5f, 0xd3, 0x3c, - 0x67, 0xad, 0xe8, 0x8c, 0x3e, 0xcb, 0x7a, 0xfe, 0x58, 0xff, - 00, 0x96, 0x64, 0xf0, 0x6b, 0x39, 0x43, 0xb1, 0xd1, 0x4e, - 0xbb, 0xd9, 0x9f, 0x52, 0x51, 0x5e, 0x21, 0xa7, 0x7c, 0x72, - 0x9a, 0x25, 0x55, 0xd4, 0x6c, 0x57, 0x3, 0xab, 0xa9, 0xe4, - 0xd7, 0x47, 0x61, 0xf1, 0xa3, 0x45, 0xd4, 0xe5, 0x5b, 0x6b, - 0x3b, 0x5b, 0x99, 0xae, 0x58, 0xe0, 0x2a, 0xae, 0x40, 0x35, - 0x9b, 0x4d, 0x1d, 0x2a, 0x69, 0x9e, 0x99, 0x50, 0xdc, 0xfd, - 0xca, 0x6d, 0x94, 0x93, 0x4d, 0x68, 0x92, 0x5c, 0x20, 0x49, - 0x18, 0x64, 0xa8, 0xed, 0x4e, 0xb8, 0xfb, 0x94, 0x8a, 0x26, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, - 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, - 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, - 0xe, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, - 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, - 00, 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, - 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, - 0xf8, 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, - 0xc6, 0xba, 0xa, 00, 0x2b, 0xc7, 0x3e, 0x27, 0x7c, 0x65, - 0xd4, 0x7c, 0x15, 0xe2, 0xc8, 0x34, 0x6d, 0x37, 0x4d, 0xb5, - 0x9d, 0x23, 0x8d, 0x25, 0xb9, 0x7b, 0x92, 0xd9, 0x70, 0xdf, - 0xc2, 0x9b, 0x48, 0xdb, 0xc0, 0xea, 0x73, 0xc9, 0xe9, 0xc7, - 0x3e, 0xc7, 0x5c, 0xf6, 0xbf, 0xe0, 0x5f, 0xc, 0xf8, 0xa2, - 0xfa, 0xda, 0xf7, 0x5a, 0xd2, 0x21, 0xbb, 0xb9, 0xb6, 0xe2, - 0x39, 0x19, 0x99, 0x4e, 0x33, 0x9c, 0x36, 0xd2, 0x37, 0xc, - 0xf6, 0x6c, 0x8e, 0x4f, 0xa9, 0xa4, 0xef, 0x75, 0x61, 0xab, - 0x59, 0x9a, 0xda, 0x5d, 0xfa, 0x6a, 0x9a, 0x4d, 0x9e, 0xa1, - 0x1a, 0x32, 0x25, 0xd4, 0x9, 0x32, 0xab, 0x75, 0x50, 0xca, - 0xe, 0xf, 0xe7, 0x56, 0xe9, 0x15, 0x55, 0x10, 0x22, 0x28, - 0x55, 0x51, 0x80, 00, 0xc0, 0x2, 0x96, 0xa9, 0xda, 0xfa, - 0x12, 0xaf, 0x6d, 0x42, 0xb9, 0xef, 0x1d, 0xdf, 0x4f, 0xa6, - 0xf8, 0xb, 0x5e, 0xbc, 0xb5, 0x24, 0x4f, 0x15, 0x8c, 0xac, - 0x8c, 0x3a, 0xa9, 0xda, 0x79, 0xfc, 0x3a, 0xfe, 0x15, 0xd0, - 0xd5, 0x5d, 0x4e, 0xc2, 0x1d, 0x57, 0x4a, 0xbb, 0xd3, 0xae, - 0x41, 0x30, 0x5d, 0x42, 0xf0, 0xc9, 0x8e, 0xbb, 0x58, 0x10, - 0x7f, 0x9d, 0x44, 0xd5, 0xe2, 0xd2, 0x2e, 0xe, 0xd2, 0x4d, - 0x9c, 0xf7, 0xc3, 0x3d, 0x3e, 0xdf, 0x4d, 0xf8, 0x6d, 0xa0, - 0x43, 0x6e, 0x81, 0x56, 0x4b, 0x28, 0xe7, 0x6e, 0x3a, 0xbb, - 0x8d, 0xec, 0x7f, 0x32, 0x6b, 0x5f, 0x59, 0xf0, 0xee, 0x95, - 0xe2, 0x3, 0x66, 0x75, 0x3b, 0x5f, 0x39, 0xac, 0xa7, 0x5b, - 0x9b, 0x76, 0x12, 0x32, 0x34, 0x72, 0xe, 0x8c, 0xa, 0x90, - 0x7f, 0xe, 0x95, 0xe7, 0x3e, 0x1d, 0xf1, 0xb2, 0x7c, 0x39, - 0xd3, 0xe2, 0xf0, 0xb7, 0x8e, 0x21, 0xba, 0xb2, 0x5b, 0x2d, - 0xd1, 0x59, 0xea, 0x8b, 0x3, 0xc9, 0x6f, 0x75, 0x10, 0x23, - 0x68, 0x5, 0x41, 0x21, 0x80, 0x3d, 0x31, 0xc0, 0x1c, 0x90, - 0x78, 0xa9, 0xaf, 0x3c, 0x57, 0x7f, 0xf1, 0x1f, 0x55, 0xb0, - 0xd3, 0x7c, 0x16, 0xfa, 0x85, 0xbe, 0x8f, 0x5, 0xd2, 0x4d, - 0x7f, 0xad, 0xaa, 0xb4, 0x8, 0xc8, 0xb8, 0x26, 0x28, 0xf2, - 0x1, 0x62, 0x73, 0x82, 0x8, 0xed, 0xd3, 0x1c, 0xd6, 0x92, - 0x6a, 0x73, 0xbc, 0x7a, 0xbf, 0xbb, 0xfc, 0xac, 0x66, 0x97, - 0x2c, 0x6c, 0xff, 00, 0xe1, 0xff, 00, 0xe1, 0xcb, 0x9e, - 0x22, 0xbc, 0xd6, 0x7c, 0x55, 0xf1, 00, 0xf8, 0x37, 0x4c, - 0xd5, 0x6e, 0x74, 0x9d, 0x3a, 0xce, 0xd1, 0x6e, 0xb5, 0x1b, - 0xbb, 0x4f, 0x96, 0x77, 0x2c, 0xc3, 0x6c, 0x68, 0xff, 00, - 0xc3, 0xc6, 0xe, 0x47, 0xbe, 0x73, 0xd2, 0xab, 0x2f, 0xf6, - 0xcf, 0xc3, 0xaf, 0x19, 0xe8, 0x96, 0x32, 0x6b, 0xba, 0x86, - 0xb3, 0xa0, 0x6b, 0x53, 0x35, 0xb1, 0xfe, 0xd3, 0x93, 0xce, - 0x9e, 0xde, 0x7c, 0xd, 0xa4, 0x49, 0xc1, 0x20, 0xfa, 0x63, - 0x3, 0x9e, 0xfc, 0xd1, 0xaf, 0x5d, 0x37, 0x80, 0x7e, 0x27, - 0xdc, 0x78, 0xaa, 0xfa, 0xda, 0x77, 0xf0, 0xfe, 0xab, 0x67, - 0x1d, 0xbd, 0xd5, 0xd4, 0x31, 0x17, 0xfb, 0x2c, 0xa8, 0x40, - 0x56, 0x70, 0x39, 0xda, 0x46, 0x6, 0x79, 0xe4, 0xfe, 0x15, - 0x5a, 0xeb, 0x58, 0x83, 0xe2, 0x8f, 0x8d, 0x3c, 0x3a, 0x3c, - 0x3f, 0xc, 0xf7, 0x1a, 0x16, 0x8d, 0x74, 0x6f, 0x6e, 0xf5, - 0x17, 0x81, 0xa3, 0x8c, 0xca, 0xa0, 0x6c, 0x8d, 0x37, 0x80, - 0x4b, 0x64, 0xf2, 0x31, 0xdc, 0x1f, 0x7a, 0x9a, 0x7f, 0x67, - 0xd7, 0x5f, 0xbf, 0xfc, 0xb6, 0xf9, 0x15, 0x3e, 0xbe, 0x9a, - 0x7d, 0xdf, 0xe7, 0xff, 00, 0x7, 0x42, 0x9f, 0x85, 0x74, - 0xed, 0x7f, 0xc6, 0x9a, 0xc7, 0x8b, 0x2d, 0xaf, 0x3c, 0x59, - 0xac, 0xd9, 0x69, 0x76, 0x5a, 0xc4, 0xc9, 0xa, 0xd8, 0xdd, - 0x14, 0x98, 0xb6, 0x7e, 0xee, 0xf6, 0x4, 0xac, 0x6a, 0xb8, - 0xc2, 0xc, 0x2, 0x58, 0x93, 0xd0, 0x52, 0xf8, 0x36, 0xc3, - 0xc5, 0x3e, 0x2d, 0x4d, 0x63, 0x43, 0xd5, 0xbc, 0x5b, 0xa9, - 0x5b, 0xd8, 0x68, 0x77, 0xd2, 0x59, 0xa5, 0xc5, 0x8c, 0x9e, - 0x5d, 0xe5, 0xcb, 0x83, 0xc1, 0x92, 0x52, 0x9, 0xda, 0x7, - 0x61, 0xc9, 0xdd, 0xc9, 0xe0, 0x56, 0xd7, 0xc2, 0x5f, 0xf8, - 0xff, 00, 0xf1, 0xc7, 0xfd, 0x8c, 0x13, 0xff, 00, 0x4a, - 0x97, 0xe1, 0x6f, 0xfc, 0x85, 0xfc, 0x77, 0xff, 00, 0x63, - 0x4, 0xff, 00, 0xd2, 0x94, 0x7a, 0x2f, 0xee, 0xaf, 0xd0, - 0xa9, 0x75, 0x7f, 0xde, 0xb7, 0xe7, 0xfe, 0x43, 0xbe, 0x18, - 0xea, 0xda, 0xa5, 0xc6, 0x9f, 0xe2, 0x2d, 0x1f, 0x54, 0xd4, - 0x25, 0xbf, 0x9b, 0x45, 0xd4, 0x25, 0xb3, 0x8a, 0xee, 0x5f, - 0xf5, 0x92, 0x20, 0x1c, 0x6e, 0x3d, 0x49, 0xe0, 0xf2, 0x79, - 0xe6, 0xb9, 0x4f, 00, 0xe8, 0x7e, 0x23, 0xf1, 0xcf, 0x81, - 0x16, 0xff, 00, 0x52, 0xf1, 0x9e, 0xbb, 0x6a, 0x63, 0x92, - 0x68, 0xec, 0x85, 0x95, 0xd9, 0x46, 0x62, 0x18, 0xe5, 0xa6, - 0x73, 0x96, 0x7e, 0x78, 0x3, 0x20, 00, 0xbc, 0x75, 0x35, - 0xd0, 0xfc, 0x32, 0xff, 00, 0x90, 0xc7, 0xc4, 0x3f, 0xfb, - 0xd, 0xcd, 0xfd, 0x6a, 0x6f, 0x81, 0xdf, 0xf2, 0x4b, 0x6d, - 0x3f, 0xeb, 0xe2, 0xe3, 0xff, 00, 0x46, 0x1a, 0x57, 0xba, - 0x6f, 0xfb, 0xa9, 0x83, 0xf7, 0x76, 0xfe, 0x67, 0xfa, 0x98, - 0x5e, 0xd, 0xb0, 0xf1, 0x47, 0xc4, 0x7f, 0x5, 0xc7, 0xa9, - 0x6b, 0x1e, 0x2e, 0xd4, 0xb4, 0xf6, 0x87, 0x7d, 0xbd, 0xa8, - 0xd2, 0xa4, 0xf2, 0xb, 0xb2, 0x64, 0x19, 0x26, 0x6e, 0xae, - 0x49, 0xe3, 0x3, 0x68, 0xc2, 0xe7, 0xa9, 0x34, 0xeb, 0xf, - 0x89, 0x5a, 0xad, 0x9f, 0xc1, 0x28, 0x75, 0xbb, 0x99, 0x62, - 0x9b, 0x59, 0x6b, 0x93, 0xa7, 0xc5, 0x3c, 0xf8, 0x54, 0x69, - 0x37, 0x90, 0x1d, 0xfa, 0xe, 0x14, 0x64, 0xfd, 0x39, 0xef, - 0x5b, 0xbf, 0x4, 0x7f, 0xe4, 0x98, 0xdb, 0x7f, 0xd7, 0xcd, - 0xc7, 0xfe, 0x8c, 0x6a, 0xe0, 0xb4, 0x3f, 0xe, 0x5e, 0xf8, - 0x8f, 0xe0, 00, 0x8f, 0x4e, 0xb7, 0x4b, 0x9b, 0xdb, 0x2d, - 0x56, 0x4b, 0xc8, 0xad, 0xdd, 0x77, 0x9, 0x76, 0x39, 0xca, - 0xe3, 0xa1, 0xc8, 0x27, 0x83, 0xd7, 0xa5, 0x54, 0xb7, 0x7d, - 0xac, 0x9f, 0xe2, 0xaf, 0xf8, 0x5c, 0x39, 0x52, 0xf9, 0x36, - 0x97, 0xe3, 0x6f, 0xc9, 0x1a, 0xd7, 0x6b, 0x6d, 0xa6, 0xe9, - 0x72, 0xea, 0xf6, 0x1f, 0x19, 0x5a, 0xe7, 0xc4, 0x10, 0xa3, - 0x4d, 0xe5, 0x4d, 0xaa, 0xc2, 0xf6, 0x73, 0x3e, 0x9, 0x28, - 0x20, 0xce, 00, 0x3d, 0x7, 0x5c, 0x70, 0x40, 0xe9, 0x57, - 0x7c, 0x67, 0xe3, 0x1d, 0x57, 0x55, 0xf8, 0x77, 0xe1, 0xd, - 0x77, 0x44, 0xb9, 0x7d, 0x3e, 0xf3, 0x50, 0xd4, 0xad, 0xd4, - 0x88, 0xe4, 0x21, 0x77, 0x10, 0xc0, 0xa3, 0x60, 0x8d, 0xc9, - 0xb8, 0x74, 0x3d, 0x40, 0xaa, 0xeb, 0xe3, 0xf, 0x85, 0x72, - 0x58, 0xf9, 0x70, 0xf8, 0x36, 0xd2, 0x5d, 0x7b, 0x1b, 0x3f, - 0xb1, 0x57, 0x42, 0x1f, 0x68, 0xf3, 0x41, 0xc1, 0x8f, 0xfd, - 0x5e, 0xde, 0xe, 0x73, 0xcf, 0x41, 0xd3, 0x3c, 0x55, 0xaf, - 0x88, 0x71, 0x18, 0x7c, 0x21, 0xe0, 0xa5, 0x6d, 0x22, 0xd, - 0x1d, 0xbf, 0xb7, 0x2d, 0x59, 0xac, 0x2d, 0xd9, 0x4a, 0x40, - 0x4e, 0xe3, 0xb4, 0x15, 00, 0x77, 0xe7, 0x3, 0xae, 0x69, - 0xff, 00, 0x9a, 0xfc, 0xfa, 0x7f, 0x5f, 0x99, 0xb, 0xbf, - 0x93, 0xfc, 0x89, 0x7c, 0x43, 0x6b, 0xac, 0xf8, 0x26, 0x1b, - 0x2d, 0x3f, 0x49, 0xf1, 0x36, 0xad, 0x7f, 0xac, 0x78, 0x8a, - 0xf2, 0x2b, 0x44, 0x9f, 0x53, 0x9c, 0x4c, 0x96, 0xbd, 0x4c, - 0x92, 0x46, 0x98, 0xa, 0x3a, 0x8e, 0x30, 0x6b, 0x49, 0x3c, - 0x29, 0xe2, 0x9f, 0x9, 0xeb, 0x3a, 0x55, 0xe6, 0x89, 0xaf, - 0x6b, 0x5a, 0xfd, 0xa4, 0xb3, 0x8, 0x75, 0x3b, 0x4d, 0x52, - 0xf1, 0x64, 0xc4, 0x47, 0xfe, 0x5a, 0xc6, 0x5b, 0x1b, 0x4a, - 0xf5, 0xc0, 0xc9, 0x3c, 0x55, 0x8f, 0x8a, 0x1a, 0x76, 0xa3, - 0xb3, 0x41, 0xf1, 0xe, 0x99, 0x67, 0x2d, 0xec, 0xba, 0x25, - 0xfa, 0xdc, 0xcb, 0x6d, 0x8, 0x26, 0x49, 0x21, 0x3c, 0x3e, - 0xd0, 0x3a, 0x9e, 0x9c, 0x56, 0x75, 0xdf, 0xc4, 0x73, 0xe3, - 0x2b, 0xfd, 0x2b, 0x49, 0xf8, 0x7f, 0x79, 0x3c, 0x93, 0x49, - 0x72, 0x92, 0x6a, 0x37, 0x9f, 0x63, 0x3b, 0x2d, 0x6d, 0xc6, - 0x4b, 0x6, 0xf3, 0x17, 0x1b, 0x9b, 0xa0, 0xc7, 0xa7, 0x5a, - 0x50, 0xdf, 0xce, 0xff, 00, 0x85, 0x97, 0xe1, 0xbd, 0xc2, - 0x5b, 0x6b, 0xb5, 0xbf, 0x1d, 0x7f, 0x1d, 0x8b, 0xf3, 0xea, - 0x37, 0xc3, 0xe3, 0xd5, 0xb6, 0x9c, 0x2f, 0x6e, 0x5, 0x89, - 0xd0, 0xda, 0x53, 0x6c, 0x25, 0x6f, 0x28, 0xbf, 0x98, 0x46, - 0xed, 0xb9, 0xc6, 0x71, 0xdf, 0x15, 0x9b, 0xac, 0xe9, 0xd2, - 0x4f, 0xad, 0xde, 0xcb, 0xe3, 0x1f, 0x89, 0x2f, 0xa1, 0x66, - 0x42, 0xda, 0x7d, 0x86, 0x95, 0xaa, 0xa5, 0xa6, 0xcb, 0x7e, - 0xc5, 0xf7, 0x28, 0x67, 0x62, 0x41, 0xe7, 0x1c, 0x60, 0xe0, - 0xf6, 0x16, 0x2e, 0x3f, 0xe4, 0xe2, 0xed, 0x7f, 0xec, 0x5f, - 0x6f, 0xfd, 0x1a, 0x6b, 0x8b, 0xf0, 0xd6, 0xa3, 0xe0, 0xcd, - 0x6, 0xeb, 0x59, 0xb5, 0xf8, 0x83, 0xa5, 0x89, 0xbc, 0x53, - 0x25, 0xf4, 0x8c, 0xdf, 0x6d, 0xd3, 0xda, 0xe5, 0xae, 0x54, - 0x9f, 0x93, 0xca, 0xf9, 0x58, 00, 0x7a, 0xe, 0x99, 0xe3, - 0x92, 0x31, 0x89, 0x5d, 0x3e, 0x7f, 0x9f, 0xe7, 0xfa, 0x17, - 0x2d, 0xdf, 0xcb, 0xff, 00, 0x49, 0x3a, 0x5f, 0x84, 0xbe, - 0x26, 0xb8, 0xd5, 0x6e, 0x7c, 0x4d, 0xa3, 0x8d, 0x72, 0x7d, - 0x73, 0x4b, 0xd3, 0xca, 0x35, 0x8d, 0xf5, 0xca, 0xb0, 0x99, - 0x91, 0xf7, 0x12, 0x18, 0xb0, 0x5, 0xb0, 0x46, 0x32, 0x7d, - 0xe, 0x38, 0xc0, 0x1a, 0x7f, 0x3, 0x7f, 0xe4, 0x97, 0xd9, - 0xff, 00, 0xd7, 0xc4, 0xff, 00, 0xfa, 0x30, 0xd6, 0x1f, - 0xc3, 0x5b, 0xfb, 0xab, 0xcf, 0x88, 0xde, 0x38, 0x9a, 0xff, - 00, 0x4f, 0x9b, 0x4e, 0xb8, 0xbb, 0x86, 0x9, 0xe2, 0xb5, - 0x9d, 0x76, 0xba, 0x42, 0x14, 0x84, 0xdc, 0x3b, 0x1d, 0xa5, - 0x72, 0x3b, 0x13, 0x8a, 0xdc, 0xf8, 0x1b, 0xff, 00, 0x24, - 0xbe, 0xcf, 0xfe, 0xbe, 0x27, 0xff, 00, 0xd1, 0x86, 0xad, - 0x6a, 0xef, 0xfd, 0xd5, 0xf9, 0x92, 0xf6, 0xb7, 0xf7, 0xbf, - 0x42, 0x4f, 0x8b, 0xbe, 0x21, 0xd4, 0x34, 0xd, 0xf, 0x4d, - 0x16, 0xd7, 0xb3, 0x69, 0xd6, 0x57, 0x97, 0xab, 0x6f, 0x7d, - 0xa8, 0x41, 0x1e, 0xf9, 0x2d, 0xe1, 0x20, 0xe4, 0xaf, 0x70, - 0x7a, 0xf2, 0x39, 0x18, 0xe3, 0x9c, 0x55, 0x4f, 0xf, 0x68, - 0xf7, 0xb1, 0xea, 0xd6, 0x57, 0xfe, 0xf, 0xf8, 0x81, 0x36, - 0xbf, 0xa7, 0x2c, 0xaa, 0xba, 0xa5, 0xb6, 0xa9, 0xa8, 0xb, - 0xbf, 0xdd, 0x91, 0xc6, 0xc6, 0x55, 0x25, 0x1c, 0x72, 0x70, - 0x71, 0x9c, 0xc, 0x9c, 0xc, 0x56, 0xff, 00, 0xc4, 0x1d, - 0x5f, 0x52, 0xd1, 0x74, 0x9b, 0x7b, 0xbb, 0x7d, 0x16, 0x2d, - 0x5f, 0x49, 0x32, 0xec, 0xd5, 0xad, 0x8c, 0x26, 0x59, 0x3e, - 0xce, 0x47, 0x2c, 0xab, 0x9c, 0x1c, 0x77, 0x4, 0x11, 0x8f, - 0x41, 0x92, 0x3c, 0xaf, 0x54, 0x8f, 0xc1, 0x5a, 0xf6, 0xbd, - 0xa6, 0x4f, 0xf0, 0xbe, 0xde, 0x75, 0xf1, 0x27, 0xdb, 0x63, - 0x92, 0x49, 0xac, 0x60, 0x9a, 0x18, 0x6d, 0xe1, 0x1c, 0x31, - 0x91, 0x58, 0x4, 0x55, 0xc7, 0x1f, 0x28, 0xe7, 0xbf, 0x5c, - 0x15, 0x4f, 0xe2, 0xf9, 0xff, 00, 0x97, 0xe1, 0xff, 00, - 0x4, 0x27, 0xf0, 0xfc, 0xbf, 0xcf, 0xf1, 0xff, 00, 0x80, - 0x7a, 0x17, 0x86, 0x35, 0x1b, 0xeb, 0x8f, 0x8c, 0x1e, 0x33, - 0xb1, 0x9a, 0xf6, 0xe2, 0x4b, 0x4b, 0x78, 0xad, 0x4c, 0x30, - 0x3c, 0xac, 0x63, 0x88, 0x94, 0xe7, 0x6a, 0x93, 0x81, 0x9e, - 0xf8, 0xa4, 0x1a, 0x8d, 0xf7, 0xfc, 0x2f, 0xc3, 0xa6, 0xfd, - 0xb6, 0xe3, 0xec, 0x1f, 0xd8, 0x5e, 0x6f, 0xd9, 0xbc, 0xd6, - 0xf2, 0xb7, 0xf9, 0xb8, 0xdd, 0xb7, 0x38, 0xce, 0x38, 0xce, - 0x33, 0x58, 0x77, 0x3a, 0xed, 0x9f, 0xc3, 0xef, 0x8c, 0x1a, - 0xf6, 0xa3, 0xe2, 0x21, 0x35, 0xb6, 0x97, 0xad, 0x5b, 0x40, - 0x6d, 0xaf, 0x56, 0x17, 0x78, 0xf7, 0xc6, 0xb8, 0x28, 0x76, - 0x82, 0x73, 0xd7, 0xa7, 0xb7, 0xad, 0x33, 0xc3, 0xda, 0xd3, - 0x6b, 0xff, 00, 0x1f, 0xe6, 0xbf, 0x5b, 0x3b, 0x8b, 0x6b, - 0x57, 0xd0, 0xc8, 0xb5, 0x37, 0x11, 0x98, 0xde, 0x68, 0x84, - 0x83, 0x12, 0x6d, 0x3c, 0x80, 0x4e, 0xec, 0x67, 0x4, 0x8c, - 0x1c, 0x73, 0x45, 0x3d, 0x54, 0x7d, 0x1f, 0xe4, 0xc2, 0x7b, - 0xcb, 0xe5, 0xfa, 0x15, 0xbc, 0x2d, 0xa6, 0x78, 0x93, 0xc6, - 0x7a, 0xf7, 0x8a, 0xad, 0xee, 0xfc, 0x55, 0xac, 0x58, 0xe8, - 0xb6, 0x5a, 0xbc, 0xc9, 0x1f, 0xd8, 0xae, 0x4a, 0xce, 0xcf, - 0x9c, 0x4, 0xe, 0x73, 0xb6, 0x35, 0x5c, 0x7c, 0xa0, 0x60, - 0x96, 0xf6, 0x15, 0xd2, 0x78, 0x3f, 0x53, 0xd6, 0x34, 0x8f, - 0x16, 0x6b, 0x5e, 0xa, 0xd6, 0x35, 0x39, 0x35, 0x31, 0x6b, - 0x6c, 0xb7, 0x9a, 0x7d, 0xe4, 0xc4, 0x79, 0xcd, 0x9, 0xe0, - 0xab, 0x9f, 0xe2, 0x20, 0xe3, 0xe6, 0x3c, 0x9e, 0x7d, 0x80, - 0xe4, 0xbc, 0x15, 0xe3, 0xcd, 0x3f, 0xc2, 0x3e, 0x21, 0xf1, - 0x8c, 0x3a, 0xf2, 0xcf, 0x6d, 0xa6, 0x4d, 0xad, 0x4e, 0xd1, - 0x5f, 0xac, 0xf, 0x24, 0x62, 0x5c, 0xf3, 0x1b, 0x6d, 0x4, - 0x82, 0x40, 0x4, 0x71, 0xd9, 0xab, 0xa5, 0xf0, 0x80, 0x9f, - 0xc5, 0x3e, 0x38, 0xd6, 0xbc, 0x72, 0x2d, 0x27, 0xb6, 0xd2, - 0xde, 0xc5, 0x6c, 0x34, 0xe3, 0x70, 0x85, 0x1a, 0xe1, 0x1, - 0xdc, 0xd2, 00, 0x7a, 0x29, 0x3d, 0x3d, 0x73, 0xf5, 0xa9, - 0xfb, 0xa, 0xdb, 0x72, 0xeb, 0xf7, 0x7f, 0x9f, 0xe1, 0xe4, - 0x39, 0x7c, 0x4e, 0xfd, 0xf4, 0xfb, 0xff, 00, 0xcb, 0xfa, - 0xb9, 0xcf, 0x7c, 0x39, 0xd0, 0x7c, 0x4b, 0xe3, 0x8f, 0x9, - 0x25, 0xfe, 0xb3, 0xe3, 0x2d, 0x7a, 0xd2, 0xda, 0x39, 0x65, - 0x8e, 0xd0, 0x58, 0xdd, 0x94, 0x96, 0x4f, 0x98, 0xee, 0x79, - 0x5c, 0xe4, 0xb0, 0xcf, 0xca, 0x17, 0xb0, 0x5f, 0x7a, 0xdc, - 0xd1, 0x3c, 0x75, 0xaa, 0x68, 0x9e, 0x17, 0xf1, 0x75, 0xbe, - 0xbf, 0x32, 0x5f, 0xea, 0x9e, 0x18, 0x72, 0x82, 0x70, 0xbb, - 0x7e, 0xd2, 0xac, 0x3f, 0x74, 0x58, 0xe, 0x84, 0x9e, 0xf, - 0xf5, 0x39, 0x35, 0xcc, 0xfc, 0x2b, 0xf8, 0x97, 0xa3, 0xf8, - 0x57, 0xc0, 0xe9, 0x61, 0xe2, 0x3f, 0xb4, 0x58, 0xc6, 0xb3, - 0x4c, 0xd6, 0x57, 0x1f, 0x66, 0x77, 0x8e, 0xe5, 0x77, 0x12, - 0xca, 0xa5, 0x41, 0xf9, 0x95, 0xb2, 0xe, 0x71, 0xd5, 0x6b, - 0x63, 0x4e, 0xf0, 0x96, 0xa5, 0xe2, 0xdf, 0xb, 0xf8, 0xe7, - 0x54, 0xb9, 0xb3, 0x96, 0xc6, 0xe7, 0xc4, 0xae, 0x1a, 0xca, - 0xd6, 0xe4, 0x6d, 0x75, 0x48, 0x87, 0xee, 0x8b, 0x83, 0xf7, - 0x49, 0x3f, 0x97, 0x5f, 0x4a, 0xa9, 0xde, 0xcf, 0x97, 0x6b, - 0x7e, 0x3a, 0x7e, 0x3b, 0x86, 0x9c, 0xca, 0xff, 00, 0xcd, - 0xf8, 0x6b, 0xf8, 0x17, 0xb4, 0xdf, 0x4, 0x78, 0x9f, 0x5c, - 0xd0, 0xe1, 0xd7, 0x6f, 0xbc, 0x73, 0xae, 0x5a, 0x6b, 0xb7, - 0x51, 0xad, 0xcc, 0x70, 0xdb, 0xcc, 0x12, 0xce, 0x2, 0x40, - 0x2a, 0x86, 0x1c, 0x61, 0x80, 0xe8, 0x79, 0xe7, 0xbe, 0x79, - 0xcf, 0x3f, 0xad, 0xf8, 0xe3, 0xc4, 0x5a, 0xb7, 0xc3, 0xbf, - 0xf, 0xde, 0x5b, 0xdd, 0x35, 0x8e, 0xbb, 0x1e, 0xbc, 0x9a, - 0x7d, 0xd1, 0x89, 0x8a, 0x23, 0xc8, 0xbb, 0x86, 0x18, 0x3, - 0x82, 0xa7, 0xe5, 0x25, 0x7a, 0x75, 0xad, 0xfd, 0x27, 0xe2, - 0xf6, 0x8f, 0xa5, 0xe8, 0x16, 0xda, 0x5e, 0xb3, 0x6d, 0xa8, - 0x41, 0xe2, 0x6b, 0x58, 0x92, 0xd9, 0xf4, 0x91, 0x68, 0xe6, - 0x59, 0xa5, 00, 0x1, 0xb3, 0x3, 0x6e, 0x1b, 0x82, 0x32, - 0x7b, 0xfd, 0x33, 0xc9, 0x6a, 0x3a, 0xd, 0xfe, 0x87, 0xe0, - 0x1f, 0xc, 0x3e, 0xab, 0xf, 0x91, 0xa8, 0xea, 0x3e, 0x2a, - 0x8a, 0xfa, 0xe2, 0x1f, 0xf9, 0xe6, 0xce, 0x4e, 0x14, 0xfb, - 0xe0, 0xe, 0x3b, 0x74, 0xaa, 0xd3, 0x9a, 0xcb, 0xe1, 0xba, - 0xb7, 0xde, 0xbf, 0x4b, 0xdf, 0xe4, 0x4a, 0x6f, 0x96, 0xef, - 0x7b, 0x3f, 0xc9, 0xfe, 0xb6, 0xfd, 0xe, 0x97, 0xc6, 0xfe, - 0x2, 0x97, 0x4e, 0xf8, 0x7d, 0xaf, 0x5d, 0x4d, 0xe2, 0xff, - 00, 0x13, 0x5e, 0xc8, 0xb6, 0xfe, 0x7b, 0x24, 0xf7, 0xf9, - 0x8d, 0x99, 0x43, 0x65, 0x76, 0x1, 0x8f, 0x2d, 0xb7, 0x7d, - 0xdf, 0xf6, 0x47, 0x35, 0xd4, 0xfc, 0x2e, 0xd1, 0xff, 00, - 0xb2, 0xbc, 0x7, 0xa5, 0xbf, 0xf6, 0x8e, 0xa1, 0x79, 0xf6, - 0xbb, 0x58, 0x6e, 0x36, 0xde, 0x4f, 0xe6, 0x8, 0x73, 0x1a, - 0xfc, 0x91, 0xf0, 0x36, 0xa0, 0xec, 0x2a, 0xf7, 0xc4, 0x1b, - 0x49, 0xef, 0xbe, 0x1e, 0xeb, 0xf6, 0xd6, 0xb1, 0x34, 0xb3, - 0xc9, 0x65, 0x20, 0x48, 0xd0, 0x65, 0x98, 0xe3, 0x38, 00, - 0x75, 0x35, 0x9f, 0xf0, 0xb3, 0xc4, 0x5a, 0x5e, 0xbb, 0xe0, - 0x4d, 0x32, 0x1d, 0x3a, 0xe7, 0xce, 0x93, 0x4f, 0xb4, 0x82, - 0xda, 0xe9, 0x7c, 0xb6, 0x5f, 0x2e, 0x41, 0x18, 0xc8, 0xe4, - 0xc, 0xf4, 0xea, 0x32, 0x29, 0x47, 0x69, 0x7c, 0xbf, 0x5f, - 0xf8, 0x3, 0x7d, 0x3e, 0x7f, 0xa1, 0xda, 0xd1, 0x45, 0x14, - 0x80, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x2b, 0x3b, 0x54, 0xff, 00, 0x96, 0x1f, 0x56, 0xfe, - 0x55, 0xa3, 0x59, 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, 0xf2, - 0xa0, 0xb, 0x96, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, 0xd4, - 0x56, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, 0xd0, 0x1, 0x4d, - 0x64, 0xd, 0x43, 0xb2, 0xa2, 0x17, 0x72, 0x2, 0xa8, 0xc9, - 0x27, 0xb5, 0x79, 0x45, 0xef, 0x8e, 0x7c, 0x4d, 0xe2, 0x9f, - 0x10, 0x5c, 0xe9, 0x7e, 0xe, 0x82, 0x35, 0xb7, 0xb6, 0x6d, - 0x92, 0xdd, 0xca, 0x3e, 0x5c, 0xfb, 0x50, 0x7, 0xa8, 0xbd, - 0xa2, 0xbf, 0x53, 0x51, 0xff, 00, 0x66, 0xc2, 0x4f, 0x39, - 0x35, 0xe5, 0xbf, 0xf0, 0x9a, 0x78, 0xbb, 0xc1, 0x7a, 0xbd, - 0xb5, 0xbf, 0x8b, 0xe1, 0x86, 0x6d, 0x3e, 0xe1, 0xc2, 0x2d, - 0xd4, 0x23, 0x85, 0x3e, 0xf5, 0xea, 0x9f, 0xda, 0x36, 0x82, - 0x8, 0xa6, 0x69, 0xd1, 0x52, 0x55, 0xc, 0x85, 0x8e, 0x32, - 0x29, 0xdc, 0x56, 0x43, 0x92, 0xca, 0xdd, 0x39, 0x11, 0x2e, - 0x7d, 0x71, 0x53, 0x80, 00, 0xc0, 00, 0xa, 0xab, 0x67, - 0xa9, 0xd8, 0xdf, 0xb3, 0x2d, 0xad, 0xcc, 0x72, 0x94, 0xe1, - 0x82, 0x9e, 0x94, 0xdd, 0x43, 0x56, 0xb0, 0xd2, 0xa3, 0x12, - 0x5f, 0xdd, 0xc5, 0x6e, 0xa7, 0xa1, 0x73, 0x8c, 0xd2, 0x19, - 0x76, 0x8a, 0xab, 0x65, 0xa9, 0x59, 0x6a, 0x36, 0xfe, 0x7d, - 0x9d, 0xcc, 0x73, 0x45, 0xfd, 0xe4, 0x39, 0x15, 0x52, 0xe3, - 0xc4, 0xba, 0x2d, 0xaa, 0xb1, 0x9f, 0x52, 0xb7, 0x40, 0xa7, - 0x69, 0xcb, 0x74, 0x34, 0x1, 0xab, 0x45, 0x62, 0xeb, 0x7a, - 0xd2, 0xdb, 0xf8, 0x56, 0xfb, 0x55, 0xd3, 0xe5, 0x8e, 0x63, - 0x14, 0x25, 0xe3, 0x60, 0x72, 0x9, 0xaf, 0x33, 0xf0, 0xde, - 0xb7, 0xf1, 0x37, 0xc5, 0x3a, 0x48, 0xd4, 0xec, 0xa5, 0xd3, - 0xd2, 0x16, 0x62, 0x15, 0x58, 0x73, 0x40, 0x1e, 0xcd, 0x45, - 0x79, 0x67, 0x86, 0xbc, 0x75, 0xe2, 0xf, 0xf8, 0x49, 0xae, - 0x7c, 0x2d, 0xe2, 0x18, 0x21, 0x5d, 0x4f, 0xcb, 0xcc, 0x12, - 0x46, 0x3e, 0x52, 0x71, 0xc6, 0x6b, 0x1b, 0xc5, 0x3e, 0x24, - 0xf8, 0x97, 0xe1, 0x5b, 0x47, 0xbe, 0xbb, 0x6b, 0x16, 0xb7, - 0x32, 0xec, 0x4c, 0x2f, 0x3c, 0x9e, 0x28, 0x3, 0xd8, 0xee, - 0x6c, 0x2d, 0x2f, 0x17, 0x6d, 0xcd, 0xbc, 0x72, 0xf, 0xf6, - 0x85, 0x73, 0xba, 0x87, 0xc3, 0xdd, 0x6, 0xfc, 0x1f, 0xf4, - 0x61, 0x9, 0x3d, 0xe3, 0x15, 0x81, 0xe1, 0x5b, 0xcf, 0x88, - 0x17, 0x37, 0x56, 0xf7, 0xba, 0xcc, 0x96, 0x43, 0x4b, 0x68, - 0xfc, 0xc7, 0xd8, 0x39, 0x3, 0xad, 0x67, 0xdd, 0x78, 0xdf, - 0xc4, 0xfe, 0x2c, 0xd7, 0xae, 0x74, 0xef, 0x6, 0xc1, 0x12, - 0x5a, 0x5b, 0x36, 0xc9, 0x2e, 0xe6, 0x1c, 0x13, 0xed, 0x4d, - 0x36, 0x89, 0x70, 0x8b, 0xdd, 0x16, 0xae, 0xbe, 0xb, 0x69, - 0x52, 0x12, 0x61, 0xbc, 0x9d, 0x7d, 0x8d, 0x66, 0x3f, 0xc0, - 0xf8, 0xd9, 0xb8, 0xbe, 0x6c, 0x7d, 0x6a, 0x78, 0xfc, 0x6b, - 0xe2, 0xcf, 0x6, 0xeb, 0x36, 0xd6, 0x9e, 0x30, 0x86, 0x29, - 0x6c, 0x2e, 0x58, 0x22, 0x5d, 0x42, 0x38, 0x52, 0x7d, 0x6b, - 0xa0, 0xf8, 0x81, 0xe3, 0x99, 0xfc, 0x3d, 0x6b, 0xa7, 0xc1, - 0xa4, 0x46, 0x93, 0x5f, 0x6a, 0x2c, 0x16, 0x2, 0xdf, 0x77, - 0x9e, 0xf4, 0xf9, 0x99, 0x3e, 0xca, 0x3d, 0x8c, 0xb, 0x5f, - 0x81, 0x5a, 0x50, 0x70, 0xd7, 0x57, 0xb3, 0xb6, 0x3f, 0x85, - 0x6b, 0xbc, 0xd0, 0x7c, 0x1b, 0xa2, 0x78, 0x71, 0x47, 0xd8, - 0x6c, 0xe3, 0x12, 0x8f, 0xf9, 0x6a, 0x47, 0xcc, 0x6b, 0xce, - 0xf5, 0xd, 0x6b, 0xe2, 0x57, 0x85, 0x2d, 0xa3, 0xd5, 0xb5, - 0x41, 0x6b, 0x77, 0x65, 0x90, 0x66, 0x8e, 0x21, 0x92, 0xa0, - 0xd7, 0xaa, 0xe8, 0xfa, 0x94, 0x7a, 0xbe, 0x93, 0x6d, 0x7f, - 0x12, 0x95, 0x59, 0x90, 0x36, 0xf, 0x6a, 0x57, 0x65, 0xa8, - 0xa4, 0x5e, 0xa8, 0x6e, 0x3e, 0xe5, 0x4d, 0x50, 0xdc, 0xfd, - 0xca, 0x43, 0x26, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xae, 0xe, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, - 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, - 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, - 0xfc, 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, - 0x74, 0x15, 0xcf, 0xf8, 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, - 0xb9, 0x7f, 0xec, 0xc6, 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0xe4, 0x3c, 0xf, 0xe1, 0x5b, 0xef, 0xc, - 0xdd, 0x78, 0x8e, 0x5b, 0xd9, 0x6d, 0xe4, 0x5d, 0x4f, 0x54, - 0x92, 0xf2, 0x1f, 0x25, 0x98, 0x95, 0x46, 0xe8, 0x1b, 0x20, - 0x60, 0xfd, 0x33, 0xf5, 0xae, 0xb6, 0x45, 0x2f, 0x13, 0xa8, - 0xea, 0x54, 0x8a, 0x75, 0x14, 0x9a, 0xba, 0xb7, 0xc8, 0x77, - 0xd6, 0xe7, 0x27, 0xf0, 0xe3, 0xc2, 0xf7, 0xbe, 0xf, 0xf0, - 0x6c, 0x1a, 0x3e, 0xa1, 0x2d, 0xbc, 0xb7, 0x11, 0xcb, 0x2b, - 0x96, 0xb7, 0x66, 0x64, 0xc3, 0x39, 0x23, 0x92, 0x1, 0xef, - 0xe9, 0x5d, 0x65, 0x14, 0x55, 0x37, 0x71, 0x5, 0x14, 0x51, - 0x48, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0xb3, 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, 0xe5, 0x5a, 0x35, - 0x9d, 0xaa, 0x7f, 0xcb, 0xf, 0xab, 0x7f, 0x2a, 00, 0xb9, - 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 0x45, 0x6f, 0xfe, 0xa1, - 0x3e, 0x95, 0x2d, 00, 0x67, 0xeb, 0xc1, 0xce, 0x81, 0x7e, - 0x22, 0xce, 0xf3, 0x3, 0xed, 0xc7, 0xae, 0x2b, 0xce, 0xbe, - 0x5, 0xb4, 0x43, 0xc3, 0x77, 0xf1, 0xe4, 0x7d, 0xa0, 0x5d, - 0x1f, 0x34, 0x1e, 0xb9, 0xe6, 0xbd, 0x50, 0x80, 0xc0, 0x82, - 0x32, 0xf, 0x51, 0x5e, 0x5f, 0xaa, 0xfc, 0x3b, 0xd6, 0x34, - 0x9d, 0x7e, 0x7d, 0x6b, 0xc2, 0x1a, 0x88, 0xb5, 0x6b, 0x83, - 0x99, 0xad, 0xd8, 0x65, 0x58, 0xfa, 0xd0, 0x5, 0x8f, 0x8d, - 0xad, 0x6e, 0x3c, 0x7, 0x22, 0xcd, 0x8f, 0x31, 0xa4, 0x1e, - 0x50, 0xef, 0xbb, 0xda, 0xb0, 0x75, 0x5d, 0x3a, 0x6d, 0x4d, - 0x3c, 0xd, 0x61, 0x73, 0x71, 0x2c, 0x51, 0xc8, 0x8b, 0xe6, - 0x5, 0x6c, 0x16, 0x18, 0xad, 0xb, 0x7f, 0x87, 0x9e, 0x20, - 0xf1, 0x1e, 0xaf, 0x6f, 0x7d, 0xe3, 0xd, 0x4d, 0x66, 0xb7, - 0xb7, 0x60, 0xc9, 0x6a, 0x83, 00, 0x9a, 0x5f, 0x89, 0x36, - 0x57, 0x33, 0x78, 0xa7, 0xc2, 0xf6, 0xba, 0x6c, 0xdf, 0x66, - 0x99, 0x65, 0xc4, 0x4f, 0x8e, 0x17, 0x14, 00, 0xff, 00, - 0x14, 0xe9, 0xb1, 0x78, 0x4f, 0xc4, 0x9a, 0x1d, 0xfe, 0x96, - 0xf2, 0x47, 0xbe, 0x42, 0x92, 0xc5, 0xbb, 0x89, 0x7, 0xd2, - 0xb8, 0x9d, 0x67, 0x57, 0x7d, 0x67, 0xe2, 0x65, 0xf2, 0xea, - 0x3a, 0x75, 0xd6, 0xa3, 0x6b, 0x6e, 0xa3, 0xcb, 0xb6, 0x89, - 0xb0, 0x17, 0x3e, 0xa2, 0xbd, 0x36, 0xdb, 0xc2, 0x1a, 0xc6, - 0xa5, 0xe2, 0xb, 0x5d, 0x4b, 0xc4, 0x17, 0xe9, 0x3c, 0x56, - 0x47, 0x30, 0xc2, 0xab, 0x80, 0x4f, 0xa9, 0xaa, 0x1e, 0x21, - 0xf0, 0x16, 0xad, 0x6f, 0xe2, 0xa7, 0xf1, 0x27, 0x86, 0x6e, - 0xd2, 0x1b, 0x99, 0x46, 0x26, 0x89, 0x97, 0x21, 0xa8, 0x3, - 0x95, 0xf0, 0x34, 0xba, 0x8d, 0x9f, 0x8e, 0xee, 0xa3, 0xb4, - 0xd3, 0xae, 0x2c, 0xb4, 0x89, 0xa1, 0x66, 0x68, 0x66, 0x7c, - 0xed, 0x3e, 0xc2, 0x9b, 0xe0, 0xf, 0x7, 0x69, 0xfe, 0x29, - 0xbe, 0xf1, 0x25, 0xde, 0xa8, 0xf3, 0x4b, 0xe5, 0xdc, 0x98, - 0xd1, 0x37, 0x70, 0x3a, 0xf3, 0x5d, 0xa7, 0x85, 0xbc, 0x15, - 0xac, 0x43, 0xad, 0xdc, 0xeb, 0xda, 0xfd, 0xff, 00, 0x9d, - 0x79, 0x2a, 0x14, 0x48, 0x93, 0x85, 0x50, 0x7d, 0xaa, 0xff, - 00, 0x81, 0x7c, 0x21, 0x73, 0xe1, 0x85, 0xd6, 0x45, 0xc4, - 0xc2, 0x4f, 0xb6, 0xdc, 0x19, 0x53, 0x1d, 0x87, 0x34, 0x1, - 0xc0, 0xf8, 0x2d, 0xe4, 0x87, 0xc0, 0xbe, 0x33, 0xd3, 0x9a, - 0x57, 0x92, 0xb, 0x67, 0x75, 0x8b, 0x79, 0xc9, 0x2, 0xb2, - 0x3c, 0x1a, 0x9f, 0x10, 0xed, 0xfc, 0x10, 0xd7, 0x7a, 0xd, - 0xcc, 0xd, 0x68, 0x84, 0x95, 0x84, 0xae, 0x58, 0xfa, 0xd7, - 0xa1, 0xe8, 0x9e, 00, 0xbc, 0xd3, 0x74, 0x8f, 0x12, 0xda, - 0x49, 0x70, 0x19, 0xb5, 0x47, 0x66, 0x8c, 0xff, 00, 0x77, - 0x35, 0xbd, 0xe0, 0x2f, 0xd, 0xcf, 0xe1, 0x6f, 0xc, 0xc7, - 0xa6, 0x5c, 0x48, 0x24, 0x75, 0x62, 0x49, 0xfa, 0xd0, 0x7, - 0x9e, 0xfc, 0x23, 0xb3, 0x4f, 0x11, 0x6b, 0x77, 0x7e, 0x25, - 0xd6, 0x2f, 0x4, 0xda, 0xdc, 0x47, 0xcb, 0x68, 0x7a, 0x18, - 0xf1, 0x5d, 0x7, 0xc6, 0xd3, 0xff, 00, 0x14, 0x52, 0x7f, - 0xd7, 0xc2, 0x7f, 0x3a, 0x79, 0xf8, 0x7f, 0x79, 0xa5, 0x7c, - 0x44, 0x1e, 0x21, 0xd1, 0x6e, 0x4, 0x36, 0x93, 0xff, 00, - 0xc7, 0xcd, 0xb8, 0xe8, 0xde, 0xf5, 0xb5, 0xf1, 0xb, 0xc2, - 0xf7, 0x1e, 0x2d, 0xf0, 0xf2, 0xd8, 0x5b, 0xca, 0x23, 0x71, - 0x2a, 0xbe, 0x4f, 0xb1, 0xa0, 0xb, 00, 0x48, 0xdf, 0xf, - 0x18, 0x45, 0x9f, 0x33, 0xec, 0x7, 0x18, 0xff, 00, 0x76, - 0xb9, 0x1f, 0x81, 0x6d, 0xf, 0xfc, 0x22, 0x57, 0x28, 0xb8, - 0x13, 0xad, 0xc1, 0xf3, 0x47, 0x7c, 0xe4, 0xf5, 0xaf, 0x46, - 0xd3, 0x6c, 0xcd, 0xa6, 0x93, 0x6f, 0x67, 0x21, 0xd, 0xe5, - 0xc4, 0x11, 0xbd, 0xf8, 0xaf, 0x39, 0xd4, 0xbe, 0x1d, 0xeb, - 0x7a, 0x36, 0xbb, 0x71, 0xab, 0xf8, 0x3f, 0x52, 0x16, 0xdf, - 0x68, 0x39, 0x96, 0xd9, 0x86, 0x54, 0x9a, 00, 0x9b, 0xe3, - 0x8b, 0x40, 0x3c, 0xe, 0x16, 0x4c, 0x79, 0xad, 0x32, 0xf9, - 0x43, 0xbe, 0xef, 0x6a, 0xad, 0xab, 0xe8, 0xda, 0x3f, 0x88, - 0xbc, 0x31, 0xe1, 0xdd, 0x27, 0x51, 0xd4, 0x5, 0x9e, 0xb6, - 0x20, 0x46, 0xb5, 0x6c, 0xe1, 0xb7, 0x62, 0x96, 0xd3, 0xe1, - 0xe6, 0xbf, 0xe2, 0xd, 0x66, 0xdf, 0x51, 0xf1, 0x86, 0xa6, - 0x2e, 0x22, 0xb7, 0x60, 0xd1, 0xda, 0xa0, 0xc0, 0xcf, 0xad, - 0x6e, 0xf8, 0xef, 0xe1, 0xfa, 0xf8, 0xa2, 0x2b, 0x4b, 0x9b, - 0x1b, 0x8f, 0xb1, 0xea, 0x36, 0x64, 0x18, 0x25, 0x3, 0xa6, - 0x3b, 0x50, 0x7, 0x15, 0xa8, 0xc3, 0xf1, 0xf, 0xc1, 0x16, - 0x2d, 0x3d, 0xc5, 0xd4, 0x1a, 0xb6, 0x95, 0x16, 0x3c, 0xd5, - 0x75, 0xce, 0x56, 0xbd, 0x4b, 0xc2, 0x7a, 0xd5, 0xb6, 0xbf, - 0xe1, 0xcb, 0x5d, 0x46, 0xd6, 0x11, 0xc, 0x52, 0x2f, 0xfa, - 0xb0, 0x30, 0x14, 0xf7, 0xaf, 0x3a, 0xb8, 0xf0, 0x8f, 0xc4, - 0x4d, 0x72, 0xd7, 0xfb, 0x27, 0x54, 0xd6, 0xa2, 0x5b, 0x16, - 0xc2, 0xc8, 0xca, 0xbc, 0xba, 0x8a, 0xf4, 0xed, 0x3, 0x45, - 0xb7, 0xf0, 0xfe, 0x8b, 0x6f, 0xa6, 0xda, 0x8f, 0xdd, 0xc2, - 0xb8, 0xcf, 0xa9, 0xee, 0x68, 0x3, 0x4a, 0xa1, 0xb9, 0xfb, - 0x95, 0x35, 0x43, 0x73, 0xfe, 0xae, 0x80, 0x26, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, 0xae, - 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, 00, - 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, 0xd7, - 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, - 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, - 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, 0xfd, - 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, 0x1f, - 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, 0xba, - 0xa, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x3b, - 0x55, 0xff, 00, 0x96, 0x3f, 0x56, 0xfe, 0x55, 0xa3, 0x55, - 0xaf, 0xad, 0xbe, 0xd5, 0x6c, 0xc8, 0xa7, 0xf, 0x83, 0xb4, - 0xfb, 0xe2, 0x80, 0x24, 0xb7, 0xff, 00, 0x50, 0x9f, 0x4a, - 0x96, 0xb1, 0x6d, 0xb5, 0x9, 0xad, 0x53, 0xc9, 0xb9, 0x81, - 0xc3, 0x2f, 0x19, 0x23, 0x83, 0x53, 0xff, 00, 0x6c, 0xc7, - 0xfd, 0xc3, 0x40, 0x1a, 0x74, 0x56, 0x67, 0xf6, 0xcc, 0x7f, - 0xdc, 0x34, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x40, 0x1a, 0x75, - 0x4a, 0xeb, 0x49, 0xb2, 0xbd, 0xbc, 0xb7, 0xbb, 0x9e, 0x10, - 0xf3, 0x5b, 0x9d, 0xd1, 0xb1, 0xfe, 0x13, 0x50, 0xff, 00, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x45, 0x66, 0x7f, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x45, 0x66, 0x7f, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x45, 0x66, 0x7f, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x50, 0x5c, 0x9f, - 0xdd, 0xd5, 0x3f, 0xed, 0x98, 0xff, 00, 0xb8, 0x6a, 0x98, - 0xb9, 0xba, 0xd5, 0x2f, 0x23, 0x48, 0xa2, 0x78, 0xe0, 0x46, - 0xcb, 0xbb, 0xc, 0x2, 0x28, 0x3, 0x7e, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xf, 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, - 0xff, 00, 0x61, 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, - 0x81, 0xe0, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, - 0x5f, 0xf9, 0xa, 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, - 0x79, 0xa2, 0x7f, 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, - 0x68, 0x3, 0x3f, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, - 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, - 0x7f, 0xf9, 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, - 0x1a, 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x1, 0x92, 0x43, 0x14, 0xbf, 0xeb, 0x23, - 0x47, 0xff, 00, 0x79, 0x41, 0xa8, 0xfe, 0xc5, 0x69, 0xff, - 00, 0x3e, 0xd0, 0xff, 00, 0xdf, 0xb1, 0x53, 0xd1, 0x40, - 0x10, 0x7d, 0x8a, 0xd7, 0xfe, 0x7d, 0xa1, 0xff, 00, 0xbf, - 0x62, 0x8f, 0xb1, 0x5a, 0xff, 00, 0xcf, 0xb4, 0x3f, 0xf7, - 0xec, 0x54, 0xf4, 0x50, 0x4, 0x1f, 0x62, 0xb5, 0xff, 00, - 0x9f, 0x68, 0x7f, 0xef, 0xd8, 0xa3, 0xec, 0x56, 0xbf, 0xf3, - 0xed, 0xf, 0xfd, 0xfb, 0x15, 0x3d, 0x14, 0x1, 0x7, 0xd8, - 0xad, 0x7f, 0xe7, 0xda, 0x1f, 0xfb, 0xf6, 0x28, 0xfb, 0x15, - 0xaf, 0xfc, 0xfb, 0x43, 0xff, 00, 0x7e, 0xc5, 0x4f, 0x45, - 00, 0x41, 0xf6, 0x2b, 0x5f, 0xf9, 0xf6, 0x87, 0xfe, 0xfd, - 0x8a, 0x3e, 0xc5, 0x6b, 0xff, 00, 0x3e, 0xd0, 0xff, 00, - 0xdf, 0xb1, 0x53, 0xd1, 0x40, 0x10, 0x7d, 0x8a, 0xd7, 0xfe, - 0x7d, 0xa1, 0xff, 00, 0xbf, 0x62, 0x8f, 0xb1, 0x5a, 0xff, - 00, 0xcf, 0xb4, 0x3f, 0xf7, 0xec, 0x54, 0xf4, 0x50, 0x4, - 0x1f, 0x62, 0xb5, 0xff, 00, 0x9f, 0x68, 0x7f, 0xef, 0xd8, - 0xa3, 0xec, 0x56, 0xbf, 0xf3, 0xed, 0xf, 0xfd, 0xfb, 0x15, - 0x3d, 0x14, 0x1, 0x7, 0xd8, 0xad, 0x7f, 0xe7, 0xda, 0x1f, - 0xfb, 0xf6, 0x28, 0xfb, 0x15, 0xaf, 0xfc, 0xfb, 0x43, 0xff, - 00, 0x7e, 0xc5, 0x4f, 0x45, 00, 0x41, 0xf6, 0x2b, 0x5f, - 0xf9, 0xf6, 0x87, 0xfe, 0xfd, 0x8a, 0x3e, 0xc5, 0x6b, 0xff, - 00, 0x3e, 0xd0, 0xff, 00, 0xdf, 0xb1, 0x53, 0xd1, 0x40, - 0x10, 0x7d, 0x8a, 0xd7, 0xfe, 0x7d, 0xa1, 0xff, 00, 0xbf, - 0x62, 0x8f, 0xb1, 0x5a, 0xff, 00, 0xcf, 0xb4, 0x3f, 0xf7, - 0xec, 0x54, 0xf4, 0x50, 0x4, 0x1f, 0x62, 0xb5, 0xff, 00, - 0x9f, 0x68, 0x7f, 0xef, 0xd8, 0xa9, 0x51, 0x15, 0x17, 0x6a, - 0x28, 0x51, 0xe8, 0x6, 0x29, 0xd4, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x7, 0x99, 0xda, 0xff, 00, 0xc8, 0x53, - 0x5c, 0xff, 00, 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, 0x13, - 0xfe, 0x40, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x5c, 0x1d, - 0xaf, 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, 0x2b, - 0xbc, 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, 00, - 0x42, 0x34, 0x1, 0x46, 0x4f, 0x4, 0x78, 0x4a, 0x59, 0x1a, - 0x49, 0x3c, 0x2f, 0xa2, 0x3b, 0xb9, 0x2c, 0xcc, 0xda, 0x7c, - 0x44, 0x92, 0x7a, 0x92, 0x76, 0xd7, 0x17, 0x77, 0xe1, 0x1f, - 0xd, 0x2d, 0xec, 0xea, 0xbe, 0x1e, 0xd2, 0x42, 0x89, 0x18, - 00, 0x2c, 0xa3, 0xe3, 0x9f, 0xf7, 0x6b, 0xd4, 0xaa, 0x33, - 0x4, 0x44, 0x92, 0x62, 0x42, 0x4f, 0xfb, 0x22, 0x80, 0x3c, - 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, - 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, - 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, - 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, - 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, - 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, - 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, - 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, - 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, - 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, - 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, - 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, - 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, - 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, - 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, - 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, - 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, - 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, - 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, - 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, - 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, - 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, - 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, - 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, - 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, - 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, - 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, - 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, - 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, - 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, - 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, - 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, - 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, - 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, - 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, - 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, - 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, - 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, - 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, - 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, - 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, - 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, - 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, - 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, - 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, - 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, - 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, - 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, - 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, - 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, - 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, - 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, - 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, - 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, - 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, - 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, - 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, - 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, - 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, - 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, - 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, - 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, - 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, - 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, - 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, - 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, - 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, - 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, - 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, - 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, - 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, - 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, - 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, - 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, - 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, - 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, - 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, - 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, - 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, - 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, - 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, - 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, - 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, - 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, - 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, - 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, - 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, - 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, - 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, - 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, - 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, - 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, - 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, - 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, - 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, - 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, - 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, - 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, - 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, - 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, - 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, - 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, - 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, - 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, - 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, - 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, - 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, - 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, - 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, - 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, - 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, - 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, - 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, - 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, - 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, - 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, - 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, - 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, - 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, - 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, - 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, - 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, - 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, - 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, - 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, - 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, - 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, - 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, - 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, - 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, - 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, - 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, - 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, - 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, - 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, - 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, - 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, - 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, - 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, - 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, - 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, - 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, - 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, - 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, - 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, - 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, - 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, - 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, - 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, - 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, - 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, - 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, - 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, - 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, - 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, - 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, - 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, - 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, - 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, - 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, - 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, - 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, - 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, - 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, - 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, - 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, - 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, - 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, - 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, - 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, - 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, - 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, - 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, - 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, - 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, - 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, - 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, - 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, - 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, - 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, - 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, - 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, - 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, - 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, - 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, - 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, - 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, - 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, - 0xcf, 0x2d, 0x2c, 0xad, 0x34, 0xfb, 0x71, 0x6f, 0x65, 0x6b, - 0xd, 0xb4, 0x20, 0x92, 0x23, 0x86, 0x30, 0x8a, 0x9, 0xeb, - 0xc0, 0xe2, 0xbb, 0x7d, 0x13, 0xfe, 0x40, 0xf0, 0x7f, 0xc0, - 0xbf, 0xf4, 0x23, 0x57, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, - 0xf7, 0xc8, 0xa7, 0xaa, 0xaa, 0x8c, 0x28, 00, 0xe, 0xc0, - 0x50, 0x7, 0x21, 0xa2, 0x41, 0xae, 0xeb, 0x7a, 0x4c, 0x5a, - 0x8b, 0xf8, 0x9a, 0xea, 0x3, 0x3b, 0x39, 0xf2, 0xa2, 0xb5, - 0x80, 0xaa, 00, 0xe4, 00, 0x32, 0x84, 0xf4, 0x1d, 0xcd, - 0x68, 0x7f, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, - 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xc1, 0x1f, 0xf2, 0x28, - 0x58, 0xff, 00, 0xdb, 0x4f, 0xfd, 0x18, 0xd5, 0xd0, 0x50, - 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, - 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, - 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, - 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, - 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, - 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, - 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, - 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, - 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, - 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, - 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, - 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, - 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, - 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, - 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, - 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, - 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, - 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, - 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, - 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, - 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, - 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, - 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, - 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, - 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, - 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, - 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, - 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, - 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, - 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, - 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, - 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, - 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, - 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, - 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, - 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, - 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, - 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, - 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, - 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, - 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, - 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, - 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, - 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, - 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, - 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, - 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, - 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, - 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, - 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, - 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, - 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, - 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, - 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, - 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, - 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, - 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, - 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, - 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, - 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, - 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, - 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, - 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, - 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, - 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, - 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, - 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, - 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, - 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, - 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, - 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, - 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, - 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, - 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, - 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, - 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, - 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, - 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, - 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, - 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, - 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, - 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, - 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, - 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, - 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, - 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, - 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, - 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, - 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, - 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, - 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, - 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, - 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, - 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, - 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, - 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, - 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, - 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, - 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, - 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, - 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, - 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, - 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, - 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, - 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, - 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, - 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, - 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, - 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, - 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, - 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, - 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, - 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, - 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, - 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, - 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, - 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, - 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, - 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, - 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, - 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, - 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, - 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, - 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, - 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, - 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, - 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, - 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, - 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, - 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, - 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, - 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, - 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, - 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, - 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, - 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, - 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, - 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, - 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, - 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, - 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, - 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, - 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, - 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, - 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, - 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, - 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, - 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, - 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, - 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, - 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, - 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, - 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, - 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, - 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, - 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, - 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, - 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, - 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, - 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, - 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, - 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, - 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, - 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, - 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, - 0x45, 00, 0x61, 0x78, 0x62, 0xea, 0xf6, 0x78, 0x75, 0x18, - 0x2f, 0xae, 0x8d, 0xd4, 0x96, 0x97, 0xcf, 0x6e, 0xb3, 0x32, - 0x2a, 0x33, 0x28, 0x55, 0x23, 0x21, 0x40, 0x19, 0xf9, 0x8f, - 0x41, 0x5b, 0xb5, 0xc1, 0xe9, 0xba, 0xb5, 0xcd, 0x96, 0xa7, - 0xaf, 0xc5, 0x10, 0x8f, 0x6f, 0xf6, 0x9c, 0x87, 0xe6, 0x19, - 0xfe, 0x4, 0xae, 0xbb, 0x4f, 0xbc, 0x96, 0xe6, 0xc6, 0x39, - 0xa4, 0xdb, 0xb9, 0xb3, 0x9c, 0xe, 0x3a, 0x91, 0x40, 0x19, - 0xbe, 0x8, 0xff, 00, 0x91, 0x42, 0xc7, 0xfe, 0xda, 0x7f, - 0xe8, 0xc6, 0xae, 0x82, 0xb9, 0xff, 00, 0x4, 0x7f, 0xc8, - 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, 0xf4, 0x63, 0x57, 0x41, - 0x40, 0x5, 0x73, 0x9e, 0x26, 0xf1, 0xdf, 0x86, 0xbc, 0x1f, - 0x35, 0xbc, 0x5a, 0xf6, 0xa5, 0xf6, 0x47, 0xb8, 0x52, 0xd1, - 0xf, 0x22, 0x49, 0x37, 0x1, 0xc1, 0xfb, 0x8a, 0x71, 0xd4, - 0x75, 0xae, 0x8e, 0xbe, 0x75, 0xfd, 0xa5, 0x31, 0xfd, 0xb3, - 0xe1, 0xec, 0xf4, 0xf2, 0x25, 0xcf, 0xfd, 0xf4, 0xb4, 0xb5, - 0xe6, 0x49, 0x75, 0x63, 0x4b, 0x46, 0x7a, 0x57, 0xfc, 0x2e, - 0xdf, 0x87, 0x9f, 0xf4, 0x30, 0xff, 00, 0xe4, 0x95, 0xc7, - 0xff, 00, 0x1b, 0xae, 0x9b, 0xc3, 0x7e, 0x2d, 0xd0, 0xfc, - 0x5f, 0x67, 0x35, 0xde, 0x85, 0x7d, 0xf6, 0xb8, 0x21, 0x93, - 0xcb, 0x91, 0xbc, 0xa7, 0x8f, 0xd, 0x8c, 0xe3, 0xe, 0x1, - 0xe8, 0x6b, 0xce, 0x13, 0xc1, 0xbf, 0x3, 0x4a, 0x29, 0x37, - 0x5a, 0x1e, 0x71, 0xcf, 0xfc, 0x4f, 0x5b, 0xff, 00, 0x8f, - 0x57, 0x6d, 0xe1, 0xcd, 0x2f, 0xc2, 0xfe, 0x15, 0xf0, 0xbd, - 0xe5, 0xe7, 0x84, 0xe1, 0x81, 0xf4, 0xf7, 0x57, 0xb9, 0x26, - 0xb, 0xb6, 0x99, 0x25, 0x65, 0x5c, 0x1c, 0x39, 0x66, 0xfe, - 0xee, 0x38, 0xa6, 0xda, 0x8a, 0x6d, 0xf4, 0x25, 0x5e, 0x56, - 0xb7, 0x53, 0xab, 0xa2, 0xbc, 0x57, 0x4e, 0xfd, 0xa0, 0x1f, - 0x57, 0xb3, 0xd9, 0xa6, 0xf8, 0x3a, 0xf6, 0xf7, 0x56, 0xf3, - 0xe, 0x2c, 0x6d, 0x66, 0x69, 0x71, 0x10, 0x3, 0x32, 0x16, - 0x11, 0xe7, 0xa9, 0xc6, 0x2, 0x9e, 0xf9, 0x23, 0x8c, 0xf4, - 0x7a, 0xc7, 0xc5, 0xcb, 0x6f, 0xd, 0x78, 0x4a, 0xc3, 0x54, - 0xd7, 0xb4, 0x6b, 0x9b, 0x2d, 0x5a, 0xfd, 0x5d, 0xa1, 0xd2, - 0x3, 0xee, 0x91, 0x40, 0x24, 0x2, 0xec, 0x42, 0xed, 0x7, - 0x8e, 0xd9, 0xe7, 0xa1, 0xc1, 0xa1, 0xe8, 0x35, 0xae, 0xc7, - 0xa3, 0xd1, 0x5e, 0x47, 0xa7, 0xfc, 0x72, 0x58, 0x75, 0x5b, - 0x7b, 0x3f, 0x15, 0xf8, 0x57, 0x51, 0xf0, 0xec, 0x57, 0x5f, - 0xea, 0x6e, 0x2e, 0xb, 0x32, 0x9e, 0x7a, 0x90, 0xc8, 0x84, - 0x2f, 0x3d, 0x46, 0x7f, 0xad, 0x7a, 0x37, 0x88, 0x7c, 0x49, - 0xa6, 0x78, 0x63, 0x40, 0x9f, 0x5a, 0xd4, 0xa7, 0xdb, 0x67, - 0x12, 0x82, 0xa, 0x7c, 0xcd, 0x21, 0x3f, 0x75, 0x54, 0x77, - 0x27, 0xb7, 0x6e, 0xe7, 0x3, 0x9a, 0x1e, 0x8a, 0xec, 0x16, - 0xae, 0xc8, 0xd6, 0xa8, 0xae, 0xae, 0x61, 0xb2, 0xb4, 0x9a, - 0xea, 0xe1, 0xf6, 0x43, 0xa, 0x34, 0x92, 0x36, 0x9, 0xc2, - 0x81, 0x92, 0x70, 0x39, 0xe9, 0x5e, 0x38, 0xbf, 0x1f, 0x67, - 0x11, 0x8d, 0x4a, 0x4f, 0x3, 0x6a, 0xab, 0xe1, 0xf3, 0x2e, - 0xc1, 0xa9, 0x9, 0x9, 0x1b, 0x77, 0x63, 0x38, 0xd9, 0xb3, - 0x77, 0xfb, 0x3b, 0xfa, 0xf1, 0x9a, 0xf4, 0x2b, 0xbd, 0x73, - 0x4f, 0xf1, 0x1f, 0xc3, 0xbd, 0x43, 0x55, 0xd2, 0xee, 0x4, - 0xf6, 0x93, 0xd8, 0x4c, 0x55, 0x87, 0x4, 0x1d, 0x87, 0x20, - 0x8e, 0xc4, 0x1e, 0x8, 0xa9, 0x9b, 0x6a, 0xe, 0x4b, 0xa0, - 0xe2, 0x93, 0x92, 0x8b, 0xea, 0x62, 0xff, 00, 0xc2, 0xed, - 0xf8, 0x79, 0xff, 00, 0x43, 0xf, 0xfe, 0x49, 0x5c, 0x7f, - 0xf1, 0xba, 0xbd, 0xa4, 0x7c, 0x56, 0xf0, 0x3e, 0xb9, 0xa8, - 0x47, 0x61, 0x61, 0xe2, 0x8, 0x1a, 0xe6, 0x4e, 0x11, 0x66, - 0x8a, 0x48, 0x43, 0x1c, 0x80, 00, 0x2e, 0xa0, 0x12, 0x49, - 0xe0, 0x67, 0x26, 0xbc, 0x27, 0xe1, 0xe, 0x89, 0xe0, 0xd, - 0x5a, 0xc3, 0x54, 0x6f, 0x19, 0xcb, 0x60, 0x93, 0x47, 0x2a, - 0xb, 0x7f, 0xb5, 0x6a, 0x6, 0xd8, 0x95, 0x20, 0xee, 0xc0, - 0xe, 0xb9, 0xe7, 0x1e, 0xb5, 0x17, 0xc5, 0xcd, 0x1b, 0xe1, - 0xf6, 0x92, 0x9a, 0x69, 0xf0, 0x6d, 0xdd, 0xbb, 0xdc, 0xb9, - 0x6f, 0x3e, 0x3b, 0x4b, 0xc3, 0x73, 0x18, 0x4e, 0xc4, 0xb1, - 0x66, 0xc3, 0x67, 0xb6, 0x7a, 0x76, 0xaa, 0x95, 0xa2, 0xd5, - 0xc9, 0x8f, 0xbc, 0xb4, 0x3e, 0x9b, 0xd7, 0x75, 0xed, 0x33, - 0xc3, 0x5a, 0x4c, 0xba, 0xa6, 0xaf, 0x73, 0xf6, 0x6b, 0x28, - 0x8a, 0x87, 0x97, 0xcb, 0x67, 0xc1, 0x62, 00, 0xe1, 0x41, - 0x3d, 0x48, 0xed, 0x5c, 0x8f, 0xfc, 0x2e, 0xdf, 0x87, 0x9f, - 0xf4, 0x30, 0xff, 00, 0xe4, 0x95, 0xc7, 0xff, 00, 0x1b, - 0xad, 0x6d, 0x3f, 0x44, 0x87, 0xc5, 0x3f, 0xe, 0x34, 0xad, - 0x3b, 0xc5, 0x16, 0xef, 0x75, 0xe7, 0xd9, 0xdb, 0xb5, 0xd4, - 0x6e, 0xec, 0x8c, 0xce, 0x15, 0x5b, 0x24, 0xa9, 0x7, 0x39, - 0x1c, 0xf3, 0x5e, 0x3b, 0xf1, 0xb7, 0xe1, 0xf7, 0x85, 0xfc, - 0x23, 0xe1, 0x7d, 0x3e, 0xf3, 0x42, 0xd2, 0xfe, 0xc9, 0x71, - 0x2d, 0xe8, 0x89, 0xdf, 0xed, 0x12, 0xc9, 0x95, 0xd8, 0xc7, - 0x18, 0x76, 0x23, 0xa8, 0x14, 0x4f, 0xdc, 0x6d, 0x3e, 0xe3, - 0x8f, 0xbc, 0x93, 0x47, 0xa7, 0x27, 0xc6, 0xaf, 0x87, 0xd2, - 0x48, 0xb1, 0xa7, 0x88, 0x32, 0xcc, 0x40, 0x3, 0xec, 0x77, - 0x1c, 0x93, 0xff, 00, 0x6c, 0xeb, 0xb6, 0xbc, 0xbf, 0xb3, - 0xd3, 0xac, 0xde, 0xf2, 0xfa, 0xea, 0xb, 0x5b, 0x58, 0xc0, - 0x2f, 0x34, 0xf2, 0x4, 0x45, 0xc9, 0xc0, 0xcb, 0x1e, 0x7, - 0x24, 0xa, 0xf2, 0xdf, 0x5, 0x7c, 0x25, 0xf0, 0x3e, 0xa3, - 0xe0, 0xfd, 0xf, 0x54, 0xba, 0xd1, 0x3c, 0xcb, 0xc9, 0xed, - 0x22, 0x9a, 0x49, 0x3e, 0xd7, 0x30, 0xdc, 0xe5, 0x41, 0x27, - 0x1, 0xf1, 0xd7, 0xda, 0xb8, 0x7f, 0x89, 0xf7, 0xda, 0x8f, - 0xc4, 0xf, 0x8b, 0x76, 0x9e, 0x8, 0xb5, 0xb8, 0x30, 0xd8, - 0xdb, 0x4c, 0xb0, 0xa8, 0xea, 0xbb, 0xf6, 0xee, 0x92, 0x42, - 0x3b, 0x90, 0xa4, 0x80, 0x3d, 0x8f, 0x4c, 0x9a, 0x72, 0x56, - 0x97, 0x22, 0xde, 0xe2, 0x8b, 0xba, 0xe6, 0x7b, 0x1e, 0xab, - 0xff, 00, 0xb, 0xa7, 0xe1, 0xef, 0x9d, 0xe5, 0x7f, 0xc2, - 0x44, 0xbb, 0xb7, 0x6d, 0xcf, 0xd9, 0x67, 0xdb, 0x9f, 0xae, - 0xcc, 0x63, 0xdf, 0xa5, 0x76, 0xd6, 0x77, 0xb6, 0x9a, 0x8d, - 0xa4, 0x77, 0x76, 0x37, 0x50, 0xdd, 0x5b, 0x48, 0x32, 0x93, - 0x41, 0x20, 0x74, 0x6e, 0x71, 0xc3, 0xe, 0xd, 0x79, 0xd8, - 0xf8, 0xd, 0xe0, 0x31, 0xa5, 0xfd, 0x90, 0xd8, 0x5d, 0x19, - 0xf6, 0x6d, 0xfb, 0x6f, 0xda, 0x9f, 0xcd, 0xcf, 0xf7, 0xb1, - 0x9d, 0x99, 0xff, 00, 0x80, 0xe3, 0xda, 0xbc, 0xdf, 0xe1, - 0xbd, 0xee, 0xa5, 0xf0, 0xeb, 0xe2, 0xfd, 0xc7, 0x82, 0xae, - 0x2e, 0x9a, 0x6b, 0xb, 0x99, 0x8c, 0x24, 0x74, 0x52, 0xe5, - 0x77, 0x47, 0x20, 0x1d, 0x89, 0x18, 0x4, 0x7b, 0xf7, 0xc0, - 0xa2, 0x36, 0x6f, 0x97, 0xa8, 0x3b, 0xa5, 0xcd, 0xd0, 0xfa, - 0x3, 0x5c, 0xf1, 0xe, 0x91, 0xe1, 0xab, 0x3, 0x7b, 0xac, - 0xea, 0x10, 0x59, 0x5b, 0x8c, 0xe1, 0xa5, 0x6e, 0x5c, 0x81, - 0x9c, 0x2a, 0xf5, 0x63, 0xec, 0x1, 0x35, 0xcd, 0x59, 0x7c, - 0x61, 0xf0, 0x5, 0xfd, 0xdc, 0x76, 0xb0, 0xf8, 0x8e, 0x15, - 0x92, 0x43, 0x80, 0x67, 0x86, 0x58, 0x53, 0xa6, 0x79, 0x77, - 0x50, 0xa3, 0xf1, 0x35, 0xe3, 0x9f, 0x17, 0x65, 0x82, 0x6f, - 0x8d, 0x96, 0xd0, 0xf8, 0xa1, 0xee, 0x93, 0x41, 0x8d, 0x21, - 0xb, 0xe5, 0xe, 0x44, 0x24, 0x65, 0x8a, 0x8f, 0xf7, 0xf7, - 0x64, 0x8e, 0x70, 0x38, 0xe8, 0x2b, 0xb1, 0x6f, 0x85, 0x9f, - 0xc, 0x3c, 0x6d, 0xa3, 0x32, 0x78, 0x3e, 0xfa, 0xde, 0xd6, - 0xf3, 0xb, 0x28, 0x9a, 0xb, 0x97, 0x9d, 0xd1, 0x4f, 0x69, - 0x21, 0x77, 0xc8, 0x7, 0xdf, 0x69, 0xce, 0x3d, 0xc1, 0x98, - 0xb6, 0xd7, 0x31, 0x52, 0x49, 0x3e, 0x53, 0xda, 0x41, 0xc, - 0xa1, 0x94, 0x82, 0x8, 0xc8, 0x23, 0xbd, 0x2d, 0x73, 0xfe, - 0xa, 0xf0, 0xdd, 0xc7, 0x84, 0xbc, 0x2b, 0x69, 0xa2, 0x5c, - 0x6a, 0x6d, 0xa8, 0xfd, 0x9b, 0x70, 0x49, 0xda, 0x2f, 0x2c, - 0xec, 0x27, 0x21, 0x71, 0xb9, 0xb8, 0x19, 0xc0, 0xe7, 0xa5, - 0x74, 0x15, 0x4e, 0xd7, 0xd0, 0x95, 0x7e, 0xa1, 0x45, 0x14, - 0x52, 0x18, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 0x1, 0xe6, 0xb0, 0x7f, 0xc8, 0x6b, 0x5f, - 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, 0x5d, 0xa6, - 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, 0xfa, 0x11, - 0xae, 0x2e, 0xf, 0xf9, 0xd, 0x6b, 0xff, 00, 0xf6, 0x12, - 0x7f, 0xfd, 0x1, 0x2b, 0xb4, 0xd1, 0xff, 00, 0xe4, 0x15, - 0xf, 0xfc, 0xb, 0xff, 00, 0x42, 0x34, 0x1, 0x57, 0xc1, - 0x1f, 0xf2, 0x28, 0x58, 0xff, 00, 0xdb, 0x4f, 0xfd, 0x18, - 0xd5, 0xd0, 0x57, 0x3f, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, 0x7f, - 0xed, 0xa7, 0xfe, 0x8c, 0x6a, 0xe8, 0x28, 00, 0xaf, 0x9d, - 0x7f, 0x69, 0x41, 0x9d, 0x67, 0xc3, 0xc3, 0xd6, 0x9, 0x7f, - 0xf4, 0x25, 0xaf, 0xa2, 0xab, 0xca, 0x7e, 0x2e, 0x7c, 0x33, - 0xd6, 0xbc, 0x7d, 0xa8, 0xe9, 0x57, 0x1a, 0x55, 0xd5, 0x84, - 0x29, 0x69, 0x1b, 0xac, 0x82, 0xea, 0x47, 0x52, 0x49, 0x20, - 0x8c, 0x6d, 0x46, 0xf4, 0xa1, 0x25, 0xcf, 0x1b, 0xed, 0x72, - 0x93, 0xd1, 0x95, 0x13, 0xf6, 0x72, 0xf0, 0x83, 0x22, 0x93, - 0xa9, 0x6b, 0x99, 0x23, 0x3f, 0xeb, 0xe2, 0xff, 00, 0xe3, - 0x55, 0xdc, 0xda, 0x78, 0x6e, 0xcf, 0xc2, 0x3f, 0xe, 0xee, - 0x74, 0x4b, 0x9, 0x27, 0x92, 0xda, 0xda, 0xd2, 0xe3, 0x63, - 0xce, 0xc0, 0xb9, 0xdd, 0xb9, 0x8e, 0x48, 00, 0x75, 0x27, - 0xb5, 0x74, 0xe8, 0x36, 0xa2, 0x83, 0xd4, 0xc, 0x55, 0x6d, - 0x4e, 0xd9, 0xef, 0x74, 0xab, 0xcb, 0x58, 0xca, 0x87, 0x9a, - 0x7, 0x8d, 0x4b, 0x74, 0x4, 0xa9, 0x3, 0x3f, 0x9d, 0x4d, - 0x5b, 0xb8, 0x4a, 0x2b, 0xa8, 0xa9, 0xef, 0x16, 0xcf, 0xb, - 0xfd, 0x9a, 0x2d, 0xe3, 0xd9, 0xe2, 0x2b, 0x9d, 0xbf, 0xbd, - 0xcc, 0x11, 0x83, 0xe8, 0x3e, 0x73, 0xfe, 0x7e, 0x95, 0x8b, - 0xf1, 0x2e, 0xe3, 0x59, 0x6f, 0xda, 0x6, 0xd8, 0x58, 0x59, - 0xc1, 0x7b, 0x7b, 0x7, 0xd9, 0xc5, 0x85, 0xbd, 0xc9, 0x2, - 0x37, 0x3b, 0x77, 00, 0x72, 0xcb, 0xfc, 0x45, 0xbb, 0x8e, - 0x6b, 0xd3, 0x3e, 0x10, 0xfc, 0x3b, 0xd5, 0xfc, 0x1, 0x6f, - 0xaa, 0xc7, 0xaa, 0xdc, 0x59, 0x4c, 0x6e, 0xde, 0x36, 0x8f, - 0xec, 0xae, 0xed, 0x8d, 0xa1, 0xb3, 0x9d, 0xca, 0xbe, 0xa2, - 0xac, 0x7c, 0x48, 0xf8, 0x5d, 0x1f, 0x8d, 0xa5, 0xb6, 0xd5, - 0x74, 0xfb, 0xf3, 0xa6, 0xeb, 0x96, 0x6b, 0x88, 0x6e, 00, - 0x3b, 0x5c, 0xc, 0x95, 0xc, 0x47, 0x2a, 0x43, 0x72, 0x18, - 0x67, 0x19, 0x3c, 0x1e, 0x31, 0x73, 0x7e, 0xfc, 0x64, 0xba, - 0x5b, 0xf2, 0x26, 0xb, 0xdd, 0x92, 0x7d, 0x4e, 0x3, 0xc6, - 0x9a, 0x5f, 0xc5, 0xef, 0x1d, 0xe9, 0x11, 0xe9, 0xba, 0xaf, - 0x83, 0xf4, 0xa8, 0xe3, 0x8a, 0x61, 0x32, 0x49, 0x6f, 0x71, - 0x1a, 0xba, 0xb0, 0x4, 0x75, 0x69, 0xc8, 0xc1, 0x7, 0xd2, - 0xa8, 0x7c, 0x5e, 0x8b, 0x5a, 0xd3, 0x7e, 0x17, 0xf8, 0x27, - 0x4b, 0xd5, 0x23, 0x68, 0xa5, 0x89, 0x59, 0x2e, 0x63, 0x2e, - 0xad, 0x89, 0x11, 0x42, 0xa7, 0x2a, 0x48, 0x3f, 0x29, 0x6e, - 0xf5, 0xd8, 0x45, 0xe0, 0x9f, 0x8b, 0xfa, 0x85, 0xf5, 0xa7, - 0xf6, 0xaf, 0x8f, 0xad, 0x2d, 0xad, 0xed, 0xdf, 0xcc, 0xf, - 0x64, 0x84, 0xb6, 0x47, 0x40, 0xc8, 0x23, 0x8c, 0x48, 0x3d, - 0x43, 0x12, 0x3d, 0x8d, 0x77, 0x7e, 0x2f, 0xf0, 0x4d, 0x9f, - 0x8c, 0xfc, 0x29, 0xfd, 0x89, 0xa9, 0x5c, 0xca, 0xd2, 0x20, - 0x56, 0x8a, 0xf4, 0xaa, 0xf9, 0x8b, 0x28, 0x18, 0xe, 0x40, - 0x1, 0x79, 0xc9, 0xc8, 00, 0x2, 0x9, 0xc6, 0x38, 0xc4, - 0xc9, 0x7b, 0xba, 0x77, 0x4f, 0xee, 0x2a, 0x2f, 0xde, 0x4d, - 0xf6, 0x6b, 0xef, 0x3c, 0xb6, 0x3b, 0x8f, 0x8b, 0xda, 0x87, - 0x83, 0x93, 0x46, 0x8b, 0xc1, 0x7a, 0x1b, 0x69, 0x33, 0xd8, - 0x8b, 0x74, 0xdb, 0x2a, 0x2, 0x62, 0x29, 0x80, 0x47, 0xef, - 0xfa, 0xe3, 0x7, 0xa7, 0x5a, 0xd5, 0xf8, 0x73, 0xe1, 0x8f, - 0x11, 0x78, 0x4f, 0xe1, 0x97, 0x8a, 0x74, 0xfd, 0x7e, 0xc8, - 0xda, 0x96, 0x8e, 0x69, 0x60, 0x53, 0x34, 0x72, 0x2, 0xc, - 0x44, 0x1f, 0xb8, 0xc7, 0x1c, 0x81, 0x55, 0x60, 0xf8, 0x79, - 0xf1, 0x73, 0x4e, 0xd2, 0xff, 00, 0xb0, 0xf4, 0xef, 0x1a, - 0xd8, 0x26, 0x93, 0x1e, 0x63, 0x84, 0xe5, 0x92, 0x65, 0x8f, - 0x3c, 0x61, 0xbc, 0xa2, 0xca, 0x71, 0xd8, 0x3f, 0x1d, 0x1, - 0xc5, 0x7a, 0x45, 0x87, 0x87, 0x75, 0x5b, 0x5f, 0x4, 0x5c, - 0xe8, 0x97, 0xfa, 0xec, 0xba, 0xbd, 0xf4, 0xb6, 0xf2, 0x42, - 0xb7, 0x77, 0x31, 0x88, 0xfa, 0xa9, 0x55, 0x7, 0x6e, 0x49, - 0x3, 0x8c, 0x96, 0x2c, 0xc4, 0xe4, 0xe7, 0xb0, 0x2a, 0x6b, - 0x19, 0xb5, 0xd5, 0x7c, 0xc5, 0xd, 0x25, 0x14, 0xfa, 0x33, - 0xe7, 0xaf, 0x84, 0xdf, 0xc, 0x74, 0x9f, 0x88, 0x1a, 0x5e, - 0xaf, 0x35, 0xfd, 0xe5, 0xed, 0xb4, 0xf6, 0xae, 0x89, 0x9, - 0x81, 0x93, 0x6e, 0x59, 0x49, 0xcb, 0x2, 0xa4, 0x9e, 0x40, - 0xe8, 0x45, 0x33, 0xc1, 0xf6, 0x9a, 0x47, 0x81, 0x7e, 0x28, - 0x7f, 0x61, 0xf8, 0xcf, 0x47, 0xb6, 0x9d, 0xa2, 0xb8, 0xb, - 0xd, 0xf4, 0x8c, 0xe0, 0x44, 0xc7, 0xee, 0x3e, 0xdc, 0xec, - 0x64, 0x3c, 0x1e, 0x46, 0x46, 0x73, 0x9e, 0x31, 0x5e, 0xcb, - 0xf0, 0x87, 0xe1, 0xf6, 0xad, 0xe0, 0xb, 0xd, 0x52, 0xd, - 0x56, 0xe2, 0xca, 0x66, 0xbb, 0x95, 0x1d, 0xd, 0xab, 0xbb, - 00, 0x14, 0x10, 0x73, 0xb9, 0x57, 0xd6, 0xa2, 0xf8, 0xb3, - 0xf0, 0xad, 0xfc, 0x7a, 0xb6, 0x77, 0xba, 0x5c, 0xb6, 0xb6, - 0xda, 0xad, 0xbf, 0xee, 0xd9, 0xee, 0xb, 0x2a, 0xcb, 0x17, - 0x5c, 0x12, 0xa0, 0x9c, 0x83, 0xd3, 0x8e, 0xe6, 0xaa, 0x4f, - 0x96, 0x69, 0xad, 0xb4, 0x26, 0x2b, 0x9a, 0x2d, 0x4b, 0x7d, - 0x4f, 0x4e, 0xaf, 0x19, 0xfd, 0xa4, 0x7f, 0xe4, 0x4a, 0xd2, - 0xbf, 0xec, 0x22, 0x3f, 0xf4, 0x5b, 0xd7, 0xa4, 0x78, 0x36, - 0xc7, 0x5c, 0xd3, 0x3c, 0x2d, 0x65, 0x61, 0xe2, 0x19, 0xed, - 0xae, 0x2f, 0xed, 0x97, 0xca, 0x33, 0x5b, 0xc8, 0xce, 0x24, - 0x41, 0xc2, 0x92, 0x58, 0x3, 0xbb, 0x1d, 0x7e, 0x99, 0xef, - 0x5c, 0xef, 0xc5, 0xaf, 0x3, 0x6a, 0x7e, 0x3d, 0xf0, 0xf5, - 0x96, 0x9f, 0xa5, 0xcf, 0x69, 0xc, 0xb0, 0x5d, 0x89, 0xd8, - 0xdd, 0x3b, 0x2a, 0x95, 0xd8, 0xcb, 0xc6, 0xd5, 0x6e, 0x72, - 0x45, 0x4d, 0x45, 0xd1, 0x79, 0x7e, 0x65, 0xc1, 0xf5, 0x66, - 0xdf, 0xc3, 0xcf, 0xf9, 0x27, 0x3e, 0x1c, 0xff, 00, 0xb0, - 0x74, 0x3f, 0xfa, 00, 0xaf, 0xb, 0xbe, 0xb9, 0x8f, 0xc2, - 0x5f, 0xb4, 0xd1, 0xbe, 0xd4, 0xdb, 0xc9, 0xb5, 0x92, 0xef, - 0x7f, 0x9b, 0x27, 0xa, 0x12, 0x58, 0xca, 0x86, 0xc9, 0xec, - 0xb, 0x72, 0x7b, 0x60, 0xfa, 0x57, 0xd0, 0x5e, 0x15, 0xd2, - 0xa7, 0xd0, 0xfc, 0x27, 0xa4, 0xe9, 0x57, 0x2f, 0x1b, 0xcf, - 0x67, 0x6b, 0x1c, 0x32, 0x34, 0x44, 0x95, 0x2c, 0xaa, 0x1, - 0xc1, 0x20, 0x1c, 0x7e, 0x15, 0xce, 0xfc, 0x44, 0xf8, 0x63, - 0xa5, 0xfc, 0x41, 0xb6, 0x85, 0xe6, 0x99, 0xac, 0xb5, 0x28, - 0x6, 0xd8, 0x6f, 0x11, 0x37, 0xfc, 0xb9, 0xc9, 0x56, 0x5c, - 0x8d, 0xc3, 0xa9, 0x1c, 0x82, 0xf, 0x7e, 0xa0, 0xdc, 0xdd, - 0xaa, 0xf3, 0xad, 0x77, 0xfb, 0x99, 0x31, 0x57, 0xa7, 0xc8, - 0xce, 0xe3, 0x23, 0x6e, 0xec, 0x8c, 0x63, 0x39, 0xaf, 0x99, - 0xa0, 0xba, 0x8b, 0xc5, 0xbf, 0xb4, 0xcc, 0x57, 0x9a, 0x53, - 0x79, 0xf6, 0xb1, 0xde, 0x2b, 0xf9, 0xa8, 0x32, 0xa5, 0x62, - 0x8c, 0x6, 0x6c, 0xfa, 0x12, 0xb8, 0x7, 0xbe, 0x47, 0xad, - 0x69, 0xff, 00, 0xc2, 0x96, 0xf8, 0x94, 0x2c, 0xce, 0x94, - 0xbe, 0x31, 0x83, 0xfb, 0x27, 0x1e, 0x57, 0xd9, 0xfe, 0xdf, - 0x72, 0x13, 0xcb, 0xcf, 0x4f, 0x2f, 0x6e, 0xde, 0x9f, 0xc3, - 0xd2, 0xbd, 0x3b, 0xe1, 0xe7, 0xc2, 0xfd, 0x27, 0xe1, 0xfc, - 0x12, 0xc9, 0xc, 0xad, 0x7b, 0xa9, 0xcc, 0xbb, 0x25, 0xbc, - 0x91, 0x36, 0xfc, 0xb9, 0xce, 0xd5, 0x5c, 0x9d, 0xa3, 0x80, - 0x4f, 0x24, 0x93, 0xdf, 0xa0, 0xa, 0x36, 0x52, 0x53, 0xec, - 0x12, 0xd6, 0x2e, 0x1d, 0xca, 0x3e, 0x27, 0x97, 0xe1, 0xcf, - 0x8f, 0xb5, 0xc3, 0xe1, 0x2d, 0x56, 0xe5, 0x5f, 0x5b, 0x81, - 0x9e, 0x38, 0x82, 0xc7, 0x24, 0x52, 0xc4, 0xf8, 0x39, 0xb, - 0x21, 0x5d, 0xa7, 0x8e, 0x70, 0x49, 0x7, 0x3, 0x83, 0x5e, - 0x6d, 0xe3, 0xf, 0x80, 0xb3, 0xf8, 0x73, 0x4f, 0xbb, 0xd7, - 0x74, 0x1d, 0x7b, 0x74, 0x56, 0x2a, 0x6e, 0x7c, 0xab, 0xa1, - 0xe5, 0xc9, 0x1a, 0x22, 0xee, 0xca, 0xc8, 0xbc, 0x33, 0xe4, - 0x71, 0xf2, 0xaf, 0xd7, 0xd7, 0xbc, 0xf8, 0x8f, 0xf0, 0x6a, - 0xf, 0x18, 0x6a, 0x4d, 0xae, 0x69, 0x37, 0xc3, 0x4e, 0xd6, - 0x36, 0x8d, 0xdb, 0x97, 0xf7, 0x73, 0x32, 0xfd, 0xd2, 0x48, - 0xe5, 0x5b, 0xa0, 0xdc, 0x33, 0xc0, 0x1c, 0x57, 0x21, 0x27, - 0xc1, 0x8f, 0x89, 0x1a, 0xc6, 0xdb, 0x3d, 0x77, 0xc6, 0xc9, - 0x36, 0x9c, 0xec, 0xc, 0xaa, 0xd7, 0xd7, 0x17, 0x18, 0xc7, - 0x20, 0x88, 0xdc, 00, 0xc7, 0x3e, 0xa4, 0x54, 0x24, 0xed, - 0xd9, 0x96, 0xed, 0x7d, 0x75, 0x47, 0x6d, 0xf0, 0x3f, 0xc5, - 0x9a, 0x97, 0x8a, 0x7c, 0x19, 0x28, 0xd5, 0x66, 0x7b, 0x8b, - 0x9b, 0x19, 0xfc, 0x81, 0x70, 0xfc, 0xb4, 0x89, 0xb4, 0x11, - 0xb8, 0xf7, 0x23, 0x24, 0x67, 0xa9, 0xe3, 0x3c, 0xf3, 0x5e, - 0x9b, 0x5c, 0xf7, 0x83, 0x3c, 0x1f, 0xa7, 0x78, 0x23, 0xc3, - 0xd1, 0xe9, 0x3a, 0x76, 0xe7, 0x1b, 0xbc, 0xc9, 0xa6, 0x7f, - 0xbd, 0x2c, 0x84, 0xc, 0xb1, 0xf4, 0xe8, 00, 0x1d, 0x80, - 0xfc, 0x6b, 0xa1, 0xad, 0x26, 0xd3, 0x7a, 0x19, 0xc5, 0x3b, - 0x6a, 0x14, 0x51, 0x45, 0x49, 0x41, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x19, 0xa3, 0x22, 0x80, 0xa, 0x29, 0xb, 0x1, 0x4d, - 0xf3, 0x7, 0xa1, 0xa0, 0x7, 0xd1, 0x4c, 0xf3, 0x57, 0xde, - 0x8f, 0x31, 0x7d, 0xe8, 0x1, 0xf4, 0x52, 0x6, 0x4, 0x75, - 0x14, 0x64, 0x7a, 0xd0, 0x2, 0xd1, 0x49, 0x91, 0xeb, 0x46, - 0x47, 0xad, 00, 0x2d, 0x14, 0x66, 0x8a, 00, 0x28, 0xa3, - 0x34, 0x64, 0x7a, 0xd0, 0x1, 0x45, 0x19, 0x1e, 0xb4, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x7, 0x9a, 0xc1, 0xff, - 00, 0x21, 0xad, 0x7f, 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, - 0x25, 0x76, 0x9a, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, - 0x7f, 0xe8, 0x46, 0xb8, 0xb8, 0x3f, 0xe4, 0x35, 0xaf, 0xff, - 00, 0xd8, 0x49, 0xff, 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, - 0xff, 00, 0x90, 0x54, 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, - 0x5, 0x5f, 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, - 0x3f, 0xf4, 0x63, 0x57, 0x41, 0x5c, 0xff, 00, 0x82, 0x3f, - 0xe4, 0x50, 0xb1, 0xff, 00, 0xb6, 0x9f, 0xfa, 0x31, 0xab, - 0xa0, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0xc7, 0x4d, - 0x62, 0xe8, 0x78, 0xb5, 0xb4, 0x59, 0xac, 0xe1, 0x58, 0x1a, - 0xd1, 0xae, 0xa1, 0xb8, 0x4b, 0x82, 0xcc, 0xc1, 0x59, 0x54, - 0x86, 0x42, 0x80, 0x2f, 0x2d, 0xd9, 0x8f, 0x4e, 0xd5, 0xb1, - 0x47, 0x4b, 0x87, 0x5b, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x56, 0x5e, 0x9d, 0x6, 0xb1, 0x1e, 0xb1, 0xab, 0x4b, 0x7f, - 0x77, 0xc, 0xba, 0x7c, 0xaf, 0x19, 0xb0, 0x89, 0x6, 0x1a, - 0x25, 0x9, 0x87, 0xd, 0xf2, 0x8e, 0xad, 0xcf, 0x53, 0xf8, - 0x50, 0x6, 0xa5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x15, 0x1c, 0xed, 0x32, 0xdb, - 0xc8, 0xd6, 0xf1, 0xc7, 0x24, 0xe1, 0x49, 0x8d, 0x24, 0x72, - 0x8a, 0xcd, 0xd8, 0x16, 00, 0x90, 0x3d, 0xf0, 0x7e, 0x95, - 0x9f, 0xe1, 0xdd, 0x5a, 0x4d, 0x73, 0x43, 0x86, 0xfe, 0x5b, - 0x65, 0xb6, 0x91, 0xde, 0x44, 0x78, 0x92, 0x5f, 0x30, 0x29, - 0x49, 0x19, 0xe, 0x1b, 0x6a, 0xe4, 0x7c, 0xb9, 0xe8, 0x3a, - 0xd0, 0x6, 0xa5, 0x14, 0x54, 0x17, 0x97, 0x51, 0x58, 0xd8, - 0xdc, 0x5e, 0x4d, 0x91, 0x14, 0x11, 0xb4, 0xaf, 0x81, 0x93, - 0xb5, 0x46, 0x4f, 0xe8, 0x29, 0x37, 0x65, 0x76, 0x9, 0x5f, - 0x42, 0x7a, 0x2b, 0x9e, 0xd3, 0x35, 0x4f, 0x11, 0xea, 0x22, - 0xda, 0xe5, 0xb4, 0x3d, 0x3a, 0xde, 0xc6, 0x7c, 0x3e, 0x5f, - 0x53, 0x63, 0x3a, 0xc6, 0x79, 0x4, 0xa0, 0x84, 0xae, 0xec, - 0x76, 0xf, 0x8f, 0xf6, 0xbb, 0xd7, 0x43, 0x54, 0xd5, 0x84, - 0x9d, 0xc2, 0x8a, 0x28, 0xa4, 0x30, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x91, 0xc3, 0x14, 0x60, 0xa7, - 0xd, 0x8e, 0xf, 0xbd, 0x66, 0xf8, 0x7e, 0xd, 0x5a, 0xdf, - 0x41, 0xb4, 0x87, 0x5d, 0xba, 0x86, 0xeb, 0x53, 0x55, 0x22, - 0xe2, 0x68, 0x46, 0x11, 0xce, 0x4e, 0x31, 0xf2, 0xaf, 0x6c, - 0x76, 0x14, 0x1, 0xa7, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x15, 0x99, 0xa6, 0x6a, 0xff, - 00, 0xda, 0x3a, 0x8e, 0xad, 0x69, 0xe4, 0x79, 0x7f, 0xd9, - 0xf7, 0x2b, 0x6, 0xed, 0xf9, 0xf3, 0x33, 0x1a, 0x3e, 0x71, - 0x8e, 0x3e, 0xfe, 0x31, 0xcf, 0x4a, 00, 0xd3, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0xb2, 0x75, 0xeb, - 0xfd, 0x53, 0x4d, 0xb1, 0x7b, 0xad, 0x3a, 0xc2, 0xce, 0xed, - 0x22, 0x8d, 0xe4, 0x98, 0x5c, 0x5e, 0x34, 0x4, 0x5, 0x19, - 0xf9, 0x76, 0xc6, 0xfb, 0x89, 0xe7, 0xae, 0x3b, 0x55, 0xcd, - 0x32, 0xf3, 0xfb, 0x47, 0x49, 0xb3, 0xbe, 0xf2, 0xfc, 0xbf, - 0xb4, 0xc0, 0x93, 0x6c, 0xce, 0x76, 0xee, 0x50, 0x71, 0x9e, - 0xfd, 0x68, 0x5a, 0x83, 0xd2, 0xc5, 0xaa, 0x2b, 0x9f, 0xd5, - 0xf5, 0xbd, 0x53, 0x49, 0xd4, 0xec, 0xd1, 0xb4, 0xcb, 0x39, - 0x34, 0xeb, 0xab, 0xb8, 0xad, 0x56, 0x71, 0x7a, 0xc2, 0x65, - 0x2f, 0xc6, 0x4c, 0x7e, 0x56, 0x30, 0xe, 0x7f, 0x8e, 0xba, - 0xa, 0x16, 0xaa, 0xe1, 0xd6, 0xc1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x4c, 0x67, - 0x2, 0x87, 0x6c, 0x56, 0x5b, 0xea, 0x2a, 0xda, 0xbc, 0x76, - 0x11, 0xe4, 0xc8, 00, 0x77, 0x3d, 0x80, 0xf4, 0xa4, 0xda, - 0x5b, 0x8a, 0x52, 0x4b, 0x73, 0x4c, 0x6, 0x6e, 0x49, 0x22, - 0xa3, 0x96, 0xd9, 0xa5, 0x65, 0xcc, 0xf2, 0x28, 0x1d, 0x94, - 0x91, 0x9a, 0xb0, 0x3a, 0x57, 0x1f, 0xe3, 0xdf, 0x88, 0x1a, - 0x77, 0x81, 0xb4, 0xc1, 0x2d, 0xc7, 0xef, 0x6e, 0xe5, 0xe2, - 0x18, 0x17, 0xab, 0x1f, 0x5f, 0xa7, 0x4a, 0x1a, 0x4f, 0x46, - 0x12, 0x8a, 0x92, 0xb3, 0x37, 0xe5, 0xd2, 0x7c, 0xc6, 0xcf, - 0xdb, 0x2e, 0x47, 0xb0, 0x73, 0x51, 0x1d, 0x15, 0xb2, 0x36, - 0xde, 0xcc, 0x31, 0xef, 0x5e, 0x13, 0xe1, 0xdf, 0x8b, 0xfe, - 0x31, 0xf1, 0x2f, 0x8b, 0xed, 0x34, 0xf8, 0x96, 0x18, 0x20, - 0x9a, 0x4c, 0xb2, 0x79, 0x79, 0x21, 0x7e, 0xa6, 0xbd, 0x43, - 0x42, 0xf8, 0x8f, 0x16, 0xb1, 0xe3, 0x7b, 0xbf, 0xd, 0xb, - 0x57, 0x59, 0x2d, 0x94, 0xe6, 0x53, 0xd0, 0x91, 0xd6, 0xb3, - 0xf6, 0x30, 0xfe, 0x9b, 0x31, 0xfa, 0xbd, 0x3d, 0xed, 0xf8, - 0xb3, 0xa7, 0x6d, 0x2a, 0xe4, 0xfd, 0xdb, 0xf7, 0x1f, 0xf0, - 0x11, 0x49, 0xfd, 0x9b, 0x7e, 0x6, 0x16, 0xff, 00, 0xf3, - 0x4a, 0x97, 0x53, 0xd5, 0x3e, 0xc0, 0x51, 0x42, 0x6, 0x66, - 0xac, 0xf1, 0xe2, 0x46, 0xef, 00, 0xfc, 0xeb, 0x9a, 0xa5, - 0x5a, 0x10, 0x93, 0x8c, 0xa4, 0xef, 0xea, 0xce, 0x4a, 0xb5, - 0xb0, 0xd4, 0xe6, 0xe1, 0x29, 0x34, 0xfd, 0x59, 0x70, 0xd8, - 0xea, 0x7b, 0x7e, 0x5d, 0x44, 0x67, 0xdd, 0x29, 0xa2, 0xd3, - 0x57, 0x51, 0x8f, 0xb6, 0x46, 0xc7, 0xd4, 0x8c, 0x55, 0x71, - 0xe2, 0x31, 0xde, 0x2a, 0x70, 0xf1, 0x1c, 0x79, 0xe6, 0x23, - 0x52, 0xab, 0xe1, 0xff, 00, 0x9d, 0xfd, 0xec, 0x95, 0x89, - 0xc2, 0xf4, 0xa8, 0xfe, 0xf6, 0x58, 0x11, 0x6a, 0xea, 0x98, - 0xf3, 0x21, 0x66, 0xf5, 0x39, 0xa0, 0xd, 0x65, 0x7a, 0x8b, - 0x76, 0xff, 00, 0x81, 0x1a, 0x96, 0xdb, 0x58, 0xb5, 0xb9, - 0x60, 0xbb, 0xb6, 0x31, 0xec, 0x6b, 0x42, 0xba, 0x20, 0xa3, - 0x35, 0x78, 0x4d, 0xfd, 0xe7, 0x55, 0x35, 0x1a, 0x8b, 0x9a, - 0x9c, 0xdb, 0xf9, 0x99, 0x5b, 0xf5, 0x8d, 0xb9, 0xf2, 0xa0, - 0xcf, 0xa6, 0xe3, 0x48, 0x25, 0xd6, 00, 0x3b, 0xad, 0xa2, - 0xf6, 0xda, 0xf5, 0x7a, 0xee, 0xf2, 0x2b, 0x34, 0xd, 0x29, - 0xc0, 0x27, 0x2, 0xaa, 0xd, 0x76, 0xcf, 0x3f, 0x78, 0xd4, - 0xca, 0x50, 0x83, 0xb4, 0xaa, 0x59, 0xfc, 0xbf, 0xc8, 0x89, - 0xce, 0x10, 0x97, 0x2c, 0xaa, 0xb4, 0xfe, 0x5f, 0xe4, 0x35, - 0x6e, 0x75, 0x20, 0xbf, 0x3d, 0x91, 0x27, 0xfd, 0x97, 0x14, - 0xb, 0xeb, 0xe0, 0x7e, 0x6d, 0x3e, 0x5c, 0x7b, 0x30, 0xa9, - 0x6, 0xb5, 0x64, 0x7f, 0xe5, 0xa7, 0xe9, 0x4f, 0x1a, 0xbd, - 0x97, 0xfc, 0xf6, 0x14, 0x7b, 0x48, 0x74, 0xa9, 0xf9, 0x2, - 0xab, 0xe, 0x95, 0x7f, 0x2f, 0xf2, 0x21, 0x5d, 0x46, 0xe8, - 0xb1, 0xce, 0x9d, 0x38, 0x1d, 0x8e, 0x47, 0xf8, 0xd2, 0x7f, - 0x6a, 0xcc, 0x1b, 0x7, 0x4f, 0xb9, 0x3, 0xd7, 0x19, 0x15, - 0x64, 0x6a, 0x96, 0x67, 0xfe, 0x5b, 0x2d, 0x4d, 0x15, 0xdc, - 0x13, 0xb6, 0xd8, 0xe4, 0x56, 0x3e, 0x80, 0xd3, 0x4e, 0xfb, - 0x54, 0xfc, 0x8a, 0x52, 0x72, 0x76, 0x55, 0x7f, 0x22, 0x90, - 0xd5, 0xc1, 0x3c, 0xda, 0xdc, 0xf, 0x73, 0x19, 0xa4, 0x3a, - 0xd4, 0x20, 0xe0, 0xc3, 0x38, 0xff, 00, 0xb6, 0x46, 0xb5, - 0x28, 0xc0, 0xad, 0x39, 0x6a, 0x7f, 0x37, 0xe0, 0x6b, 0xc9, - 0x57, 0xf9, 0xbf, 0xf, 0xf8, 0x26, 0x6f, 0xf6, 0xcd, 0xa8, - 0x3f, 0xf2, 0xd7, 0xfe, 0xfd, 0x1f, 0xf0, 0xa3, 0xfb, 0x72, - 0xc8, 0x36, 0xd2, 0xee, 0xf, 0xba, 0x11, 0x57, 0x5e, 0x58, - 0x10, 0xfc, 0xec, 0x80, 0xfb, 0xd3, 0x5, 0xcd, 0xa1, 0xe0, - 0x49, 0x1f, 0xe6, 0x2a, 0x6f, 0x35, 0xbc, 0x97, 0xdd, 0xff, - 00, 0x4, 0x8e, 0x6a, 0x8b, 0x47, 0x35, 0xf7, 0x7f, 0xc1, - 0x2b, 0x9d, 0x66, 0xc8, 0x1c, 0x19, 0x80, 0x34, 0xf1, 0xab, - 0x58, 0xf7, 0xb9, 0x8c, 0x7b, 0x13, 0x56, 0x4, 0x70, 0x3f, - 0x21, 0x50, 0xe7, 0xda, 0x90, 0xda, 0xdb, 0x9e, 0xb0, 0xa1, - 0xff, 00, 0x80, 0xd3, 0xfd, 0xef, 0x46, 0x8a, 0xfd, 0xf7, - 0x46, 0xbf, 0x1f, 0xf3, 0x18, 0x2f, 0xed, 0x3f, 0xe7, 0xe6, - 0x1f, 0xfb, 0xec, 0x53, 0xfe, 0xd7, 0x6e, 0x46, 0x44, 0xf1, - 0xe3, 0xfd, 0xea, 0x61, 0xd3, 0xed, 0x18, 0xe4, 0xdb, 0xa7, - 0xe5, 0x48, 0x74, 0xdb, 0x23, 0xff, 00, 0x2e, 0xb1, 0x7f, - 0xdf, 0x22, 0x9f, 0xef, 0x7c, 0x87, 0xfb, 0xef, 0x2f, 0xc4, - 0x98, 0x5c, 0x42, 0x46, 0x44, 0x8b, 0x8f, 0xad, 0x3f, 0x70, - 0x23, 0x39, 0xaa, 0x67, 0x49, 0xb1, 0x3f, 0xf2, 0xec, 0x9f, - 0x95, 0x23, 0x69, 0x16, 0x4d, 0xd6, 0x2f, 0xc8, 0xd1, 0x7a, - 0xbd, 0x97, 0xdf, 0xff, 00, 00, 0x2f, 0x5b, 0xb2, 0xfb, - 0xff, 00, 0xe0, 0x17, 0x72, 0x8, 0xce, 0x78, 0xa3, 0x23, - 0xd6, 0xb3, 0xff, 00, 0xb1, 0x2c, 0x87, 0xdd, 0x57, 0x5f, - 0xf7, 0x5c, 0x8f, 0xe5, 0x4b, 0xfd, 0x8f, 0x6d, 0xb7, 0x1, - 0xe7, 0x1f, 0xf6, 0xd5, 0xbf, 0xc6, 0x8e, 0x6a, 0x9f, 0xca, - 0xbe, 0xff, 00, 0xf8, 0x2, 0xe7, 0xad, 0xfc, 0xab, 0xef, - 0xff, 00, 0x80, 0x68, 0x51, 0x59, 0x4f, 0xa4, 0xbc, 0x68, - 0xc6, 0xb, 0xeb, 0x88, 0xf1, 0xc8, 0xcb, 0x16, 0xfe, 0x75, - 0x94, 0xda, 0xe6, 0xa3, 0xa5, 0x48, 0x45, 0xe2, 0xa5, 0xd5, - 0xb8, 0xfe, 0x34, 0x18, 0x71, 0xf8, 0x77, 0xa1, 0x54, 0x92, - 0xf8, 0xa3, 0x6f, 0xc4, 0x15, 0x59, 0x2f, 0x8e, 0x2d, 0x7e, - 0x27, 0x55, 0x45, 0x57, 0xb3, 0xbe, 0x82, 0xfa, 0xd9, 0x27, - 0xb7, 0x70, 0xe8, 0xc3, 0x23, 0xdb, 0xeb, 0x56, 0x33, 0x9a, - 0xd4, 0xdc, 0x28, 0xa2, 0x8a, 00, 0xf3, 0x58, 0x3f, 0xe4, - 0x35, 0xaf, 0xff, 00, 0xd8, 0x49, 0xff, 00, 0xf4, 0x4, - 0xae, 0xd3, 0x47, 0xff, 00, 0x90, 0x54, 0x3f, 0xf0, 0x2f, - 0xfd, 0x8, 0xd7, 0x17, 0x7, 0xfc, 0x86, 0xb5, 0xff, 00, - 0xfb, 0x9, 0x3f, 0xfe, 0x80, 0x95, 0xda, 0x68, 0xff, 00, - 0xf2, 0xa, 0x87, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 00, - 0xab, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, 0x7f, 0xed, 0xa7, 0xfe, - 0x8c, 0x6a, 0xe8, 0x2b, 0x9f, 0xf0, 0x47, 0xfc, 0x8a, 0x16, - 0x3f, 0xf6, 0xd3, 0xff, 00, 0x46, 0x35, 0x74, 0x14, 00, - 0x57, 0x2b, 0x25, 0x85, 0xaf, 0x88, 0xfc, 0x57, 0xa9, 0xda, - 0x6b, 0x10, 0xc7, 0x77, 0x67, 0x61, 0x1c, 0x22, 0x1b, 0x29, - 0xd4, 0x3c, 0x45, 0x9c, 0x33, 0x19, 0x19, 0xf, 0xc, 0x7f, - 0x84, 0x12, 0x38, 0xda, 0x71, 0xd4, 0xd7, 0x55, 0x59, 0x5a, - 0x96, 0x85, 0x1d, 0xfd, 0xda, 0x5e, 0xc1, 0x79, 0x75, 0xa7, - 0xdf, 0xa2, 0x79, 0x7f, 0x6a, 0xb4, 0x29, 0xb9, 0x93, 0x39, - 0xd8, 0xca, 0xea, 0xc8, 0xc3, 0x24, 0x91, 0x95, 0x24, 0x64, - 0xe0, 0x8c, 0x9c, 0xa1, 0x9c, 0xee, 0x9d, 0xa3, 0x59, 0xe8, - 0xbf, 0x13, 0x92, 0x1b, 0x2, 0x62, 0xb5, 0x7d, 0x1e, 0x46, - 0x5b, 0x35, 0x6f, 0xdd, 0xc0, 0x7c, 0xe4, 0xc9, 0x45, 0xfe, - 0x5, 0x3f, 0xdd, 0x18, 0x19, 0x4, 0x81, 0xc9, 0xac, 0xcf, - 0x2e, 0x3d, 0x6f, 0xc4, 0xda, 0xe4, 0xfa, 0xbf, 0x84, 0x6e, - 0xfc, 0x41, 0xf6, 0x4b, 0xb3, 0x69, 0x6c, 0xa7, 0xec, 0xaf, - 0x5, 0xbc, 0x61, 0x11, 0xb0, 0xb1, 0xcd, 0x2a, 0xe1, 0xd8, - 0x9d, 0xc5, 0xb6, 0xe4, 0x82, 00, 0x38, 0x15, 0xd2, 0xd9, - 0xf8, 0x32, 0xb, 0x2d, 0x7a, 0x2d, 0x6d, 0x35, 0x6d, 0x4e, - 0x4d, 0x43, 0xcb, 0x68, 0xae, 0x25, 0x95, 0xe3, 0x7f, 0xb4, - 0xa1, 0x60, 0xdb, 0x58, 0x14, 0xc2, 0x80, 0x40, 0xc0, 0x8f, - 0x60, 0x1c, 0xfa, 0x9c, 0xdd, 0xbf, 0xf0, 0xfa, 0xdc, 0xdf, - 0x35, 0xf5, 0x9e, 0xa3, 0x7d, 0xa5, 0xdd, 0xc8, 0xa1, 0x26, - 0x96, 0xcc, 0xc6, 0x44, 0xaa, 0x3a, 0x6e, 0x49, 0x11, 0xd0, - 0x91, 0xfd, 0xed, 0xbb, 0xb1, 0xc6, 0x71, 0xc5, 0x35, 0xb2, - 0xbf, 0x9f, 0xe7, 0x7f, 0xf8, 0x2, 0xea, 0xed, 0xe5, 0xf9, - 0x19, 0xbe, 0x12, 0x83, 0x50, 0xb4, 0xbd, 0xd4, 0x6d, 0xdb, - 0x48, 0xbd, 0xd3, 0x74, 0x7c, 0x46, 0xf6, 0x70, 0xdd, 0xcd, - 0x13, 0x98, 0x98, 0x82, 0x1d, 0x10, 0x47, 0x23, 0xed, 0x8c, - 0x61, 0x48, 0x19, 00, 0x64, 0x80, 0x31, 0x80, 0x32, 0xae, - 0x7c, 0x1f, 0x72, 0x97, 0x77, 0xb3, 0x5c, 0x68, 0x1a, 0x46, - 0xba, 0xf2, 0xcf, 0x24, 0xe9, 0xa8, 0x5c, 0xdd, 0xbc, 0x57, - 0xa8, 0xac, 0x72, 0xa9, 0x19, 0xf2, 0x9b, 0x61, 0x41, 0x85, - 0x52, 0xb2, 0x20, 0xe0, 0x1f, 0x94, 0xe4, 0xd7, 0x55, 0xa5, - 0x68, 0x36, 0xfa, 0x5c, 0xf3, 0xdd, 0xb5, 0xc5, 0xcd, 0xed, - 0xfd, 0xc0, 0x55, 0x9a, 0xf2, 0xe9, 0xc1, 0x91, 0xd5, 0x49, - 0xda, 0xa0, 0x28, 0x8, 0xaa, 0x32, 0x78, 0x55, 0x51, 0xdc, - 0xe4, 0x92, 0x6b, 0x32, 0xcb, 0xc1, 0x8f, 0xa6, 0x5a, 0x2d, - 0x9e, 0x9d, 0xe2, 0x6d, 0x72, 0xd6, 0xd1, 0x73, 0xfb, 0x95, - 0x78, 0x24, 0x19, 0x27, 0x9c, 0x34, 0x91, 0x33, 0x2f, 0xd1, - 0x48, 0x3, 0xb0, 0x14, 0x3d, 0x40, 0xb3, 0xe1, 0x6b, 0x6d, - 0x2a, 0x5f, 0x5, 0x58, 0xd9, 0xd9, 0xac, 0xb3, 0xe9, 0xa2, - 0xdc, 0xdb, 0xf9, 0x77, 0xaa, 0xb, 0x90, 0x32, 0xac, 0x92, - 0xc, 0x60, 0x90, 0x41, 0x7, 0xb1, 0xc1, 0xeb, 0x59, 0xfe, - 0x17, 0xd3, 0x6c, 0x34, 0x9f, 0x17, 0xf8, 0x9a, 0xd7, 0x4d, - 0xb2, 0xb6, 0xb3, 0xb7, 0xb, 0x68, 0xc2, 0x2b, 0x68, 0x96, - 0x34, 0x4, 0xa3, 0x64, 0xe1, 0x40, 0x15, 0xbc, 0xba, 0x44, - 0x76, 0xda, 0x2a, 0x69, 0x7a, 0x6d, 0xc4, 0xfa, 0x74, 0x71, - 0xa8, 0x58, 0xe5, 0xb7, 0xda, 0xee, 0x9c, 0xe4, 0xf3, 0x22, - 0xb8, 0x24, 0xf3, 0x92, 0xc0, 0x93, 0x92, 0x7a, 0xf3, 0x58, - 0xf0, 0x78, 0x3a, 0xea, 0xde, 0xfe, 0xe6, 0xf6, 0x2f, 0x16, - 0xeb, 0x8b, 0x71, 0x74, 0x10, 0x4c, 0xfe, 0x5d, 0x99, 0xdf, - 0xb0, 0x10, 0xbc, 0x7d, 0x9f, 0x3, 00, 0x9e, 0x94, 0x3d, - 0x58, 0xad, 0xa2, 0x26, 0xf1, 0x36, 0x6f, 0x35, 0x2d, 0x13, - 0x47, 0x97, 0x78, 0xb1, 0xbf, 0x9e, 0x41, 0x74, 0x14, 0xe3, - 0xcd, 0x54, 0x89, 0x98, 0x46, 0x4f, 0xf7, 0x58, 0x81, 0x91, - 0xdc, 0x29, 0x7, 0x20, 0x9a, 0xe7, 0x3c, 0x53, 0xe0, 0xff, - 00, 0xf, 0xda, 0xea, 0xfe, 0x18, 0x8e, 0xdb, 0x4e, 0xb3, - 0xb7, 0xb4, 0xb8, 0xd5, 0x4, 0x73, 0xe9, 0xe9, 0xa, 0x8b, - 0x79, 0xff, 00, 0x73, 0x29, 0xc, 0xd1, 0x7d, 0xd2, 0xc3, - 0x1f, 0x7b, 0x19, 0xc7, 0x7, 0xa0, 0xc7, 0x67, 0xaf, 0x5a, - 0x69, 0xf7, 0x3a, 0x53, 0xbe, 0xa5, 0x72, 0x2d, 0x62, 0xb7, - 0x3e, 0x72, 0xde, 0x79, 0xa2, 0x36, 0xb6, 0x61, 0xd2, 0x40, - 0xe7, 0x85, 0x23, 0x27, 0xaf, 0x4, 0x12, 0x8, 0x20, 0x90, - 0x78, 0x91, 0x16, 0x9d, 0xad, 0x78, 0x9b, 0x40, 0x97, 0x4d, - 0xf1, 0x1c, 0x9e, 0x24, 0xbb, 0xb3, 0xbc, 0x33, 0x4b, 0x71, - 0xe7, 0x43, 0x22, 0x5a, 0x41, 0xe5, 0x38, 0x20, 0xf9, 0x2a, - 0xa8, 0xa5, 0x98, 0xa8, 0x19, 0x1b, 0x8e, 0x3d, 0x14, 0xe0, - 0x5f, 0x12, 0xf5, 0x45, 0x7d, 0x97, 0xe8, 0xff, 00, 0x22, - 0xfe, 0xbd, 0xe1, 0xed, 0x37, 0x51, 0xf8, 0x8f, 0xa3, 0x2c, - 0xd6, 0xe8, 0xa9, 0x2e, 0x9f, 0x73, 0xf6, 0x95, 0x8d, 0x42, - 0xfd, 0xa5, 0x11, 0xa1, 0xdb, 0x1c, 0x84, 0xc, 0xb2, 0xc, - 0xfd, 0xdc, 0xe0, 0xf4, 0x39, 0x4, 0x83, 0x63, 0x44, 0xb3, - 0xb6, 0xd0, 0xfe, 0x21, 0x6a, 0x5a, 0x4e, 0x97, 0x4, 0x76, - 0x9a, 0x74, 0xba, 0x6c, 0x37, 0x66, 0xd6, 0x15, 0xdb, 0x12, - 0xcb, 0xe6, 0x3a, 0x16, 0x55, 0x1c, 0x2e, 0x55, 0x57, 0x38, - 0xc6, 0x70, 0xf, 0x5a, 0xd7, 0xba, 0xf0, 0xe1, 0xba, 0xf1, - 0x35, 0xae, 0xb9, 0xfd, 0xaf, 0xa8, 0x45, 0x25, 0xb2, 0x18, - 0xd2, 0xd9, 0x4, 0x3e, 0x56, 0xc6, 0x2a, 0x5d, 0x4e, 0x63, - 0x2d, 0xf3, 0x14, 0x5c, 0xfc, 0xd9, 0x18, 0xe0, 0x8a, 0x23, - 0xf0, 0xe2, 0xc7, 0xe2, 0xc9, 0x3c, 0x43, 0xfd, 0xa9, 0x7c, - 0xd2, 0xc9, 00, 0xb7, 0x36, 0xc4, 0x45, 0xe4, 0xf9, 0x63, - 0x24, 0xf, 0xf5, 0x7b, 0xf8, 0x62, 0x5b, 0x3b, 0xb3, 0x93, - 0xe9, 0xc5, 0x35, 0xd3, 0xe7, 0xfa, 0xff, 00, 0xc0, 0x7, - 0xb3, 0xf9, 0x7e, 0x87, 0xf, 0xa3, 0xc1, 0x6f, 0xae, 0x43, - 0x73, 0xaa, 0xeb, 0x3e, 0x6, 0xbb, 0xd7, 0xaf, 0x2e, 0x2e, - 0x66, 0x43, 0x73, 0x28, 0xb3, 0x91, 0x23, 0x44, 0x91, 0xd5, - 0x63, 0x8d, 0x65, 0x98, 0x14, 0xa, 0x6, 0x8, 0xda, 0xa4, - 0x9c, 0x93, 0xcd, 0x75, 0x1a, 0x14, 0xda, 0xbe, 0x9b, 0xe1, - 0xcd, 0x59, 0xae, 0xec, 0x2f, 0x22, 0x5b, 0x47, 0x95, 0xec, - 0x23, 0xbd, 0x9d, 0x26, 0x99, 0xa2, 0xd8, 0x18, 0x2b, 0x32, - 0x3b, 0xe7, 0xd, 0xb9, 0x46, 0x58, 0x9c, 0x1, 0x9a, 0xbf, - 0x71, 0xe1, 0xac, 0xdd, 0xcd, 0x73, 0xa6, 0xeb, 0x1a, 0x8e, - 0x94, 0xd7, 0xd, 0xbe, 0x74, 0xb4, 0x31, 0x32, 0x48, 0xff, - 00, 0xde, 0xdb, 0x2c, 0x6e, 0x14, 0xfa, 0xed, 0xdb, 0x9e, - 0xa7, 0x27, 0x9a, 0xb7, 0xa4, 0x68, 0xb6, 0xba, 0x34, 0x33, - 0x2c, 0x6, 0x59, 0x66, 0xb8, 0x7f, 0x36, 0xe2, 0xe2, 0x77, - 0xdf, 0x24, 0xef, 0x80, 0x37, 0x31, 0xe9, 0xd0, 0xe, 00, - 0xa, 0x7, 00, 0x1, 0xc5, 0x4d, 0x9f, 0x2b, 0x4b, 0xb0, - 0x5f, 0x5b, 0xf9, 0x98, 0x5a, 0x57, 0x84, 0x74, 0x4d, 0x4b, - 0x45, 0xb3, 0xbf, 0xbe, 0xb6, 0x8e, 0xf3, 0x53, 0xb9, 0x81, - 0x26, 0x7d, 0x50, 0xf1, 0x73, 0xbd, 0x94, 0x1d, 0xc9, 0x28, - 0xf9, 0x90, 0xc, 0xfc, 0xa1, 0x48, 00, 0x70, 0x38, 0xa9, - 0x7e, 0x1c, 0xa9, 0x4f, 0x3, 0x59, 0x21, 0x9c, 0xdc, 0x15, - 0x96, 0xe0, 0x19, 0x8e, 0x33, 0x27, 0xef, 0xe4, 0xf9, 0xb8, - 0xe3, 0x9e, 0xb5, 0x31, 0xf0, 0x84, 0x4a, 0x86, 0xda, 0xd7, - 0x58, 0xd5, 0x6d, 0x34, 0xc6, 0x39, 0x3a, 0x7d, 0xbc, 0xa8, - 0xb1, 0x1, 0x9c, 0x95, 0x57, 0xd8, 0x65, 0x45, 0x3e, 0x88, - 0xea, 0x7, 0x41, 0x81, 0x57, 0x3c, 0x39, 0xe1, 0xe8, 0x3c, - 0x33, 0xa7, 0x1d, 0x3a, 0xd2, 0xea, 0xe2, 0x5b, 0x35, 0x76, - 0x68, 0x61, 0x98, 0x47, 0x88, 0x1, 0x25, 0x8a, 0xae, 0xd5, - 0x53, 0xb7, 0x24, 0xfd, 0xec, 0x9f, 0x7a, 0xa6, 0xef, 0x7b, - 0x13, 0x6f, 0x99, 0xaf, 0x58, 0x1e, 0x34, 0xd2, 0xf4, 0xfd, - 0x4f, 0xc2, 0x9a, 0x97, 0xdb, 0xec, 0x6d, 0x6e, 0xfc, 0x8b, - 0x59, 0xa4, 0x8b, 0xcf, 0x85, 0x64, 0xf2, 0xdc, 0x21, 0xc3, - 0x2e, 0x47, 0x7, 0xdc, 0x56, 0xfd, 0x66, 0x6b, 0x9a, 0x3b, - 0xeb, 0x76, 0xf, 0x66, 0x35, 0x4b, 0xcb, 0x18, 0xa4, 0x56, - 0x49, 0x7e, 0xca, 0xb1, 0x13, 0x22, 0xb0, 0xc1, 0x53, 0xe6, - 0x23, 0xe3, 0xf0, 0xc1, 0xf7, 0xa8, 0x9a, 0xbc, 0x5a, 0x45, - 0xc5, 0xda, 0x49, 0xb3, 0x3f, 0xc3, 0x1e, 0x19, 0xd0, 0x34, - 0xfd, 0x3f, 0x4e, 0xbe, 0xb2, 0xd0, 0xf4, 0xdb, 0x6b, 0xc3, - 0x6c, 0x9f, 0xe9, 0x10, 0xda, 0x46, 0x92, 0x72, 0xa3, 0x3f, - 0x30, 0x19, 0xe7, 0xbd, 0x41, 0x73, 0x69, 0x6f, 0xe2, 0x1f, - 0x18, 0xdf, 0x69, 0xba, 0xb4, 0x51, 0xdc, 0xd8, 0x58, 0x5a, - 0xc3, 0x24, 0x76, 0x53, 0x2e, 0xe8, 0xa5, 0x79, 0xb, 0xe5, - 0xdd, 0x4f, 0xf, 0x8d, 0x80, 0xc, 0x82, 0x1, 0xc9, 0xeb, - 0xd3, 0x47, 0x48, 0xd0, 0xae, 0xb4, 0xa6, 0x88, 0x37, 0x88, - 0x75, 0x3b, 0xdb, 0x78, 0xa3, 0xf2, 0xd6, 0xde, 0xe5, 0x2d, - 0x82, 00, 0x6, 0x7, 0x29, 0x12, 0xb6, 0x47, 0xd6, 0xa5, - 0xd5, 0x34, 0x48, 0xf5, 0x19, 0xe2, 0xba, 0x8a, 0xee, 0xe6, - 0xc2, 0xfa, 0x25, 0x28, 0x97, 0x76, 0xa5, 0x37, 0xec, 0x3d, - 0x50, 0x87, 0x56, 0x56, 0x5e, 0xf8, 0x2a, 0x70, 0x79, 0x18, - 0x35, 0x73, 0x77, 0x95, 0xcc, 0xe2, 0x9a, 0x8d, 0x8c, 0xa8, - 0x6c, 0xed, 0xbc, 0x3b, 0xe2, 0xbd, 0x3b, 0x4f, 0xd2, 0x2d, - 0xe3, 0xb5, 0xb1, 0xbf, 0x82, 0x76, 0x9a, 0xd2, 0x15, 0xdb, - 0x12, 0x34, 0x7b, 0x30, 0xea, 0x83, 0x84, 0xfb, 0xc4, 0x1c, - 0x1, 0x9c, 0x82, 0x79, 0x15, 0x95, 0xab, 0xf8, 0x7a, 0xce, - 0xe3, 0xe2, 0x75, 0x80, 0xb6, 0x55, 0xb1, 0xfb, 0x5e, 0x9b, - 0x74, 0xf7, 0xd2, 0x5a, 0x20, 0x8a, 0x5b, 0x90, 0x24, 0x83, - 0xe5, 0x69, 0x17, 0xc, 0x3a, 0xfd, 0xe0, 0x73, 0x8c, 0x80, - 0x46, 0x73, 0x5d, 0x56, 0x99, 0xa1, 0xc7, 0xa7, 0xdc, 0x4b, - 0x77, 0x35, 0xe5, 0xd6, 0xa1, 0x7d, 0x22, 0x84, 0x6b, 0xab, - 0xbd, 0x9b, 0xc2, 0xe, 0x42, 0x28, 0x45, 0x55, 0x51, 0x9e, - 0x78, 0x51, 0x93, 0xd7, 0x38, 0x15, 0x9b, 0x75, 0xe1, 0x19, - 0xee, 0x75, 0xb1, 0xab, 0xf, 0x13, 0xeb, 0x30, 0xdc, 0xa4, - 0x72, 0x45, 0x10, 0x8d, 0x2d, 0x36, 0xc7, 0x1b, 0xb2, 0xb1, - 0x40, 0x1a, 0x3, 0x91, 0x94, 0x5e, 0x4e, 0x4f, 0x1d, 0x7a, - 0xd2, 0x5b, 0xa6, 0xfc, 0xff, 00, 0x26, 0x57, 0x47, 0xf2, - 0xfc, 0xcd, 0x3d, 0x27, 0x40, 0xd3, 0x74, 0x27, 0xb8, 0x1a, - 0x5d, 0xb2, 0x5a, 0x41, 0x36, 0xd2, 0x6d, 0xa1, 0x50, 0x91, - 0x2b, 00, 0x46, 0xe5, 0x40, 0x30, 0x9, 0x18, 0xc9, 0xef, - 0x81, 0x5a, 0x75, 0x5e, 0xc6, 0xde, 0x5b, 0x4b, 0x44, 0x86, - 0x6b, 0xd9, 0xef, 0x64, 0x5c, 0xe6, 0x79, 0xc2, 0x7, 0x6e, - 0x73, 0xc8, 0x45, 0x55, 0xe3, 0xa7, 00, 0x74, 0xab, 0x14, - 0x30, 0x47, 0x13, 0xf1, 0x37, 0x4d, 0xb5, 0xd4, 0x34, 0x6d, - 0x28, 0x4f, 0x10, 0xf3, 0x6, 0xaf, 0x66, 0x89, 0x32, 0xfc, - 0xb2, 0x44, 0x1e, 0x65, 0xd, 0xb1, 0xc7, 0x2a, 0x48, 0xee, - 0x8, 0xac, 0xab, 0xbf, 0xc, 0x68, 0xe6, 0xfb, 0xc5, 0x56, - 0x26, 0xc6, 0x2f, 0xb0, 0x59, 0x58, 0xc7, 0x71, 0x69, 0x68, - 0x14, 0x8, 0xad, 0xe5, 0x78, 0xdf, 0x74, 0x88, 0xa3, 0xee, - 0xbf, 0xee, 0xd7, 0xe6, 0x1c, 0x83, 0xb8, 0x8c, 0x16, 0x6c, - 0xf6, 0x5e, 0x23, 0xf0, 0xea, 0x78, 0x8e, 0xde, 0xda, 0x9, - 0x35, 0x1b, 0xdb, 0x25, 0xb7, 0x9d, 0x2e, 0x14, 0xda, 0xf9, - 0x59, 0x67, 0x46, 0xc, 0x84, 0xef, 0x46, 0xe8, 0x40, 0x3c, - 0x63, 0x3d, 0xf3, 0x48, 0xfe, 0x1b, 0x8a, 0x4d, 0x4a, 0xfe, - 0xf5, 0xaf, 0xaf, 0x3f, 0xd3, 0xed, 0x16, 0xd6, 0xe2, 0x1f, - 0xdd, 0xec, 0x60, 0xa1, 0x80, 0x71, 0xf2, 0x6e, 0xd, 0xf3, - 0x37, 0x7c, 0x73, 0xd2, 0xa6, 0x49, 0xf2, 0x34, 0xb7, 0xd7, - 0xf2, 0x5f, 0xe4, 0x52, 0x7e, 0xf2, 0x6f, 0x6f, 0xf8, 0x23, - 0x6c, 0x6c, 0x6c, 0xbc, 0x43, 0xe1, 0x4d, 0x28, 0x6b, 0x56, - 0x76, 0xda, 0x8a, 0xbd, 0xb4, 0x33, 0x32, 0xdd, 0xc2, 0xb2, - 0xa9, 0x72, 0x83, 0xe6, 0xc3, 0x2, 0x33, 0xc9, 0xe7, 0xde, - 0xaa, 0x7c, 0x3d, 0x8d, 0x22, 0xf0, 0x3e, 0x9f, 0x1c, 0x68, - 0xa8, 0x88, 0xd3, 0x2a, 0xaa, 0x8c, 00, 0x4, 0xaf, 0x80, - 0x5, 0x5a, 0x8f, 0xc3, 0xb7, 0x36, 0xfa, 0x4d, 0x8e, 0x9f, - 0x6b, 0xe2, 0x4d, 0x56, 0xdd, 0x6d, 0x13, 0xcb, 0x12, 0xa2, - 0x5b, 0x17, 0x91, 0x7f, 0x84, 0x36, 0xe8, 0x48, 0xe0, 0xc, - 0xc, 0x1, 0xef, 0x93, 0xcd, 0x47, 0xa1, 0x78, 0x5a, 0x5d, - 0x5, 0x60, 0x86, 0x1f, 0x10, 0xea, 0xb7, 0x16, 0x90, 0x96, - 0x22, 0xd6, 0x74, 0xb6, 0xd8, 0xdb, 0x89, 0x27, 0x25, 0x61, - 0x57, 0xea, 0x49, 0xe1, 0x87, 0xe5, 0xc5, 0x69, 0x26, 0x9c, - 0x9b, 0x5b, 0x19, 0x45, 0x34, 0x95, 0xfa, 0x22, 0x84, 0x3a, - 0x7d, 0x97, 0x8a, 0x3c, 0x51, 0xae, 0x26, 0xb5, 0x6f, 0x1d, - 0xf5, 0xbe, 0x9d, 0x2c, 0x56, 0xf6, 0xf6, 0x57, 0x2a, 0x24, - 0x85, 0x33, 0x12, 0xb9, 0x93, 0xcb, 0x3c, 0x16, 0x25, 0xc8, - 0xdc, 0x41, 0x20, 0x2e, 0x6, 0x32, 0x73, 0xab, 0xa4, 0xf8, - 0x4f, 0x48, 0xd0, 0xf5, 0x6b, 0x9d, 0x43, 0x4c, 0x80, 0xda, - 0xf9, 0xf0, 0xa4, 0x26, 0xda, 0x23, 0x88, 0x50, 0x2b, 0x33, - 0x65, 0x13, 0xa2, 0x64, 0xb1, 0xc8, 0x18, 0x7, 0xae, 0x32, - 0x49, 0x2e, 0xd4, 0x7c, 0x3b, 0x1d, 0xe6, 0xa1, 0xfd, 0xa3, - 0x69, 0x7f, 0x79, 0xa6, 0x5f, 0x94, 0x11, 0xc9, 0x71, 0x66, - 0x63, 0xcc, 0xa8, 0x33, 0x85, 0x75, 0x91, 0x1d, 0x1b, 0x4, - 0x9c, 0x1d, 0xb9, 0x19, 0x38, 0x20, 0x12, 0xb, 0xb4, 0xbf, - 0xf, 0x41, 0xa6, 0xdd, 0x4d, 0x7a, 0xf7, 0x57, 0x77, 0xda, - 0x8c, 0xc9, 0xe5, 0xbd, 0xe5, 0xdc, 0x81, 0x9f, 0x66, 0x72, - 0x15, 0x55, 0x40, 0x44, 0x1d, 0x38, 0x45, 0x50, 0x70, 0x9, - 0xc9, 0xe6, 0xa5, 0x7f, 0x5f, 0xd7, 0x99, 0xa3, 0xd4, 0xe5, - 0x2d, 0xbc, 0x2d, 0xa6, 0xcf, 0xf1, 0x1b, 0x5c, 0xb4, 0x8e, - 0x8, 0xad, 0xb4, 0xc3, 0x63, 0x69, 0x2d, 0xcd, 0x95, 0xb4, - 0x62, 0x24, 0xba, 0x72, 0xf3, 0xf3, 0x26, 0xdc, 0x6e, 0x5e, - 0xe, 0x54, 0xf0, 0xdc, 0x67, 0x20, 0x60, 0xee, 0x6a, 0xb0, - 0xc7, 0xe0, 0xef, 0x6, 0x6b, 0x13, 0x68, 0xd1, 0x88, 0x56, - 0x18, 0xe4, 0x9e, 0x8, 0x70, 0x3c, 0xb8, 0x9, 0x1f, 0xc0, - 0xbd, 0x2, 0x3, 0x96, 0xdb, 0xd3, 0x93, 0x4c, 0x8f, 0xc1, - 0xb7, 0x31, 0x6a, 0x77, 0x1a, 0x8c, 0x7e, 0x2d, 0xd7, 0x16, - 0xea, 0xe2, 0x34, 0x8a, 0x57, 0xf2, 0xec, 0xfe, 0x65, 0x42, - 0xc5, 0x46, 0x3e, 0xcf, 0x81, 0x8d, 0xed, 0xf9, 0xd7, 0x47, - 0x1d, 0xb8, 0x16, 0x6b, 0x6d, 0x71, 0x23, 0x5d, 0xf, 0x2f, - 0x64, 0x8f, 0x32, 0xae, 0x65, 0xe3, 0x4, 0xb0, 00, 0x2f, - 0x3d, 0xc0, 00, 0x7b, 0x50, 0xf6, 0xd0, 0x5f, 0x6a, 0xe6, - 0xc, 0x7e, 0x7, 0xf0, 0xf1, 0xb7, 0x57, 0x6b, 0x18, 0xa4, - 0xbe, 0xda, 0x9, 0xd5, 0x31, 0xfe, 0x96, 0xcf, 0xfd, 0xff, - 00, 0x3c, 0x7c, 0xf9, 0xfa, 0x1c, 0x63, 0x8e, 0x9c, 0x56, - 0x3c, 0x9a, 0xbd, 0xee, 0xad, 0xe1, 0x4f, 0xa, 0xa5, 0xc5, - 0xcc, 0x90, 0x36, 0xaf, 0x73, 0x1c, 0x17, 0x53, 0xc0, 0xde, - 0x53, 0x32, 0x84, 0x77, 0x3b, 0x48, 0xc1, 0x5d, 0xfe, 0x58, - 0x19, 0x52, 0x8, 0xc, 0x70, 0x7a, 0x56, 0xcf, 0xfc, 0x22, - 0x20, 0x43, 0xf6, 0x35, 0xd7, 0xb5, 0x75, 0xd2, 0xf1, 0xb7, - 0xfb, 0x3c, 0x3c, 0x5e, 0x5f, 0x97, 0xff, 00, 0x3c, 0xfc, - 0xcf, 0x2f, 0xcd, 0xdb, 0xdb, 0xef, 0xe7, 0x1c, 0x67, 0x15, - 0xa9, 0x7f, 0xa3, 0x58, 0x6a, 0x5a, 0x58, 0xd3, 0xae, 0x2d, - 0xc0, 0xb6, 0x5d, 0xbe, 0x5a, 0xc4, 0x4c, 0x66, 0x22, 0xa4, - 0x15, 0x28, 0x57, 0x5, 0x4a, 0x90, 0x30, 0x46, 0x31, 0x8a, - 0x1, 0x18, 0xd7, 0x5f, 0xf, 0x3c, 0x2d, 0x3c, 0x51, 0xad, - 0xbe, 0x91, 0x6d, 0xa7, 0xc8, 0x92, 0xc7, 0x20, 0x9a, 0xc2, - 0x25, 0x81, 0xdb, 0x63, 0x86, 0xa, 0xc5, 0x47, 0xcc, 0xa4, - 0xa8, 0xc8, 0x6c, 0x8e, 0xfd, 0x40, 0x21, 0xb7, 0x36, 0x96, - 0xfe, 0x21, 0xf1, 0x8d, 0xf6, 0x9b, 0xab, 0x45, 0x1d, 0xcd, - 0x85, 0x85, 0xac, 0x32, 0x47, 0x65, 0x32, 0xee, 0x8a, 0x57, - 0x90, 0xbe, 0x5d, 0xd4, 0xf0, 0xf8, 0xd8, 00, 0xc8, 0x20, - 0x1c, 0x9e, 0xbd, 0x27, 0x3e, 0x11, 0x17, 0x5e, 0x5a, 0x6a, - 0xda, 0xee, 0xad, 0xaa, 0xda, 0xa1, 0xc, 0x2d, 0x6e, 0x5a, - 0x28, 0xe3, 0x62, 0xf, 0x1b, 0xc4, 0x31, 0xa1, 0x71, 0xc7, - 0xdd, 0x62, 0x54, 0xf7, 0x6, 0xaf, 0xea, 0x9a, 0x24, 0x7a, - 0x8c, 0xf1, 0x5d, 0x45, 0x77, 0x73, 0x61, 0x7d, 0x12, 0x94, - 0x4b, 0xbb, 0x52, 0x9b, 0xf6, 0x1e, 0xa8, 0x43, 0xab, 0x2b, - 0x2f, 0x7c, 0x15, 0x38, 0x3c, 0x8c, 0x1a, 00, 0xca, 0x86, - 0xce, 0xdb, 0xc3, 0xbe, 0x2b, 0xd3, 0xb4, 0xfd, 0x22, 0xde, - 0x3b, 0x5b, 0x1b, 0xf8, 0x27, 0x69, 0xad, 0x21, 0x5d, 0xb1, - 0x23, 0x47, 0xb3, 0xe, 0xa8, 0x38, 0x4f, 0xbc, 0x41, 0xc0, - 0x19, 0xc8, 0x27, 0x91, 0x59, 0x6d, 0xe1, 0x8d, 0x23, 0x51, - 0xf8, 0x9b, 0xab, 0xb, 0xab, 0x28, 0x64, 0xb7, 0x6d, 0x3e, - 0xda, 0x69, 0xad, 0x4c, 0x6b, 0xe5, 0x5c, 0x48, 0x5e, 0x60, - 0x1e, 0x55, 0xc7, 0xef, 0x8, 0x3, 0x8d, 0xd9, 0x1d, 0xe, - 0x32, 0x14, 0x8e, 0xa7, 0x4c, 0xd0, 0xe3, 0xd3, 0xee, 0x25, - 0xbb, 0x9a, 0xf2, 0xeb, 0x50, 0xbe, 0x91, 0x42, 0x35, 0xd5, - 0xde, 0xcd, 0xe1, 0x7, 0x21, 0x14, 0x22, 0xaa, 0xa8, 0xcf, - 0x3c, 0x28, 0xc9, 0xeb, 0x9c, 0xa, 0x82, 0xdf, 0xc3, 0x86, - 0xdf, 0xc4, 0xf7, 0x1a, 0xef, 0xf6, 0xbe, 0xa1, 0x24, 0x93, - 0xc6, 0x22, 0x7b, 0x67, 0x10, 0xf9, 0x5b, 0x14, 0xb1, 0x55, - 0x18, 0x8c, 0x3f, 0x5, 0xd8, 0xe7, 0x76, 0x7d, 0x49, 0xa6, - 0xb7, 0x5f, 0x30, 0xe8, 0xd7, 0xf5, 0xb9, 0x95, 0xe1, 0x3b, - 0x68, 0x6d, 0x35, 0x7f, 0x14, 0xe8, 0x50, 0xc4, 0xab, 0xa5, - 0xda, 0xdd, 0x47, 0xe4, 0x5a, 0x91, 0x98, 0xe2, 0x59, 0x61, - 0x57, 0x74, 0x50, 0x78, 0xa, 0x58, 0x93, 0xb7, 0xa0, 0xc9, - 0xc0, 0xac, 0xef, 0xf, 0x78, 0x37, 0xc2, 0xd3, 0xeb, 0xbe, - 0x27, 0x8e, 0x5f, 0xd, 0xe8, 0xf2, 0x24, 0x37, 0xe8, 0x91, - 0x2b, 0xd8, 0xc4, 0x44, 0x6b, 0xf6, 0x78, 0x8e, 0x14, 0x6d, - 0xe0, 0x64, 0x93, 0xc7, 0x72, 0x6b, 0xa6, 0xd2, 0xbc, 0x38, - 0xba, 0x56, 0xb5, 0xa9, 0xea, 0x63, 0x54, 0xbe, 0xb9, 0x7d, - 0x45, 0x83, 0xcb, 0x14, 0xe2, 0x2d, 0x8a, 0x40, 0xa, 0xbb, - 0x76, 0xc6, 0xad, 0xc2, 0x80, 0xbc, 0x93, 0xc7, 0x5c, 0x9e, - 0x69, 0xb7, 0x7e, 0x1a, 0xf3, 0x75, 0x4b, 0x8d, 0x42, 0xc3, - 0x58, 0xd4, 0x74, 0xb9, 0xee, 0x42, 0xfd, 0xa0, 0x5a, 0x79, - 0x2c, 0xb2, 0x95, 0x18, 0x56, 0x2b, 0x2c, 0x6e, 0x3, 0x1, - 0xc6, 0x57, 0x19, 00, 0x67, 0x38, 0x14, 0x96, 0x9a, 0xf9, - 0x5b, 0xf2, 0xff, 00, 0x21, 0x9a, 0x4d, 0xa5, 0xe9, 0xef, - 0xa6, 0x7f, 0x66, 0x3d, 0x8d, 0xb3, 0x58, 0x6c, 0x11, 0xfd, - 0x94, 0xc2, 0xa6, 0x2d, 0x83, 0xa2, 0xec, 0xc6, 0x31, 0xed, - 0x8a, 0xe1, 0x3c, 0x17, 0xe1, 0xd, 0x2b, 0x52, 0xf0, 0xf4, - 0xdf, 0xda, 0x50, 0x47, 0x77, 0x6b, 0x1d, 0xf5, 0xec, 0x56, - 0x96, 0x6e, 0x80, 0x43, 0x6a, 0xa2, 0xe2, 0x41, 0x94, 0x4e, - 0x9b, 0xfa, 0xe1, 0xfa, 0x81, 0xc0, 0xc0, 0xce, 0x7b, 0x44, - 0xd2, 0x1a, 0xd, 0x20, 0xd8, 0xda, 0xea, 0x7a, 0x84, 0x32, - 0x13, 0xbb, 0xed, 0x6d, 0x28, 0x9a, 0x6c, 0xe7, 0x24, 0xe6, - 0x50, 0xeb, 0xcf, 0xa6, 0xdc, 0xc, 0xf0, 0x5, 0x65, 0xe9, - 0x1e, 0x11, 0x9f, 0x45, 0x54, 0x8e, 0xdb, 0xc4, 0xfa, 0xcb, - 0x5b, 0xac, 0xef, 0x3b, 0x41, 0x22, 0x5a, 0x15, 0x76, 0x77, - 0x2e, 0xe0, 0x91, 00, 0x6c, 0x16, 0x63, 0xd0, 0x8c, 0x67, - 0x8c, 0x53, 0xdf, 0x71, 0x74, 0x42, 0x6b, 0xeb, 0x22, 0x1f, - 0xf, 0xe8, 0x5f, 0x6a, 0xb8, 0x16, 0xb7, 0x93, 0x98, 0x2e, - 0x27, 0x32, 0x91, 0x2c, 0x88, 0x91, 0x33, 0xed, 0x2e, 0x30, - 0x72, 0xe5, 0x6, 0x48, 0xe4, 0x8c, 0xfa, 0xd5, 0x5d, 0x6f, - 0x44, 0xd2, 0xbc, 0x2d, 0xa7, 0x8d, 0x5f, 0x41, 0xd3, 0x2d, - 0x34, 0xeb, 0xb8, 0x67, 0x85, 0x48, 0xb3, 0x85, 0x61, 0x59, - 0xd5, 0xe5, 0x54, 0x28, 0xea, 0xa0, 0x7, 0xc8, 0x63, 0x8c, - 0x83, 0x83, 0xc8, 0xe6, 0xba, 0x5d, 0x4f, 0x4c, 0xb6, 0xd5, - 0xac, 0xcd, 0xb5, 0xc8, 0x6d, 0xbb, 0x83, 0xa3, 0xc6, 0xc5, - 0x5e, 0x37, 0x1c, 0xab, 0xab, 0xe, 0x43, 0x3, 0xde, 0xb3, - 0xed, 0xfc, 0x36, 0x45, 0xe4, 0x37, 0x1a, 0x8e, 0xb3, 0xa8, - 0xea, 0xbe, 0x43, 0x6f, 0x86, 0x2b, 0xb1, 0xa, 0xa4, 0x6f, - 0xd9, 0xf6, 0xc5, 0x1a, 0x6e, 0x23, 0xb6, 0xec, 0xe3, 0xa8, - 0xc1, 0xe6, 0x95, 0xf5, 0xbf, 0xf5, 0xfd, 0x7e, 0x1f, 0x88, - 0x17, 0x35, 0xef, 0xf9, 0x17, 0x75, 0x3f, 0xfa, 0xf4, 0x97, - 0xff, 00, 0x40, 0x35, 0x17, 0x86, 0x7f, 0xe4, 0x54, 0xd1, - 0xff, 00, 0xeb, 0xc6, 0x1f, 0xfd, 00, 0x53, 0x35, 0x9d, - 0xe, 0xe3, 0x57, 0xde, 0x8b, 0xaf, 0x6a, 0x56, 0x36, 0xf2, - 0x44, 0x62, 0x92, 0xb, 0x54, 0xb7, 0x2a, 0xc0, 0xe7, 0x27, - 0x32, 0x44, 0xcd, 0x92, 0xe, 0x38, 0x34, 0x9a, 0x26, 0x83, - 0x3e, 0x8a, 0x91, 0xc4, 0x75, 0xdd, 0x4a, 0xf6, 0xda, 0x28, - 0x44, 0x31, 0xc1, 0x74, 0x96, 0xe1, 0x50, 0xc, 00, 0x73, - 0x1c, 0x4a, 0xc4, 0x80, 0x31, 0xc9, 0x3d, 0x68, 0x8e, 0xef, - 0xce, 0xdf, 0x85, 0xff, 00, 0xcc, 0x4f, 0x75, 0xe5, 0x7f, - 0xc6, 0xdf, 0xe4, 0x53, 0xf1, 0x8f, 0xfa, 0xbd, 0xf, 0xfe, - 0xc3, 0x36, 0xbf, 0xfa, 0x11, 0xad, 0xdd, 0x42, 0x79, 0x2d, - 0x74, 0xdb, 0xab, 0x88, 0x93, 0x7c, 0xb1, 0x42, 0xee, 0x89, - 0x8c, 0xee, 0x20, 0x12, 0x5, 0x61, 0x6a, 0x7e, 0x12, 0xb8, - 0xd5, 0x67, 0x47, 0x9f, 0xc5, 0x1a, 0xca, 0x24, 0x57, 0xb, - 0x73, 0xc, 0x51, 0xa5, 0xa0, 0x58, 0x9d, 0x4e, 0x57, 0x19, - 0x80, 0x92, 0x7, 0xb9, 0x3e, 0xf9, 0xad, 0x9d, 0x36, 0xca, - 0x7b, 0x1b, 0x76, 0x8e, 0xe3, 0x53, 0xbb, 0xd4, 0x1c, 0xb6, - 0xe1, 0x2d, 0xd2, 0xc4, 0xac, 0x6, 0x7, 0x3, 0xcb, 0x44, - 0x18, 0xfc, 0x33, 0xcf, 0x5a, 0x9b, 0x3e, 0x56, 0xb6, 0xbb, - 0xfd, 0x12, 0xfd, 0x7, 0xf6, 0xd3, 0xfe, 0xb7, 0x7f, 0xe6, - 0x79, 0xc6, 0x85, 0xa7, 0x59, 0x5f, 0x68, 0x56, 0x9a, 0x85, - 0xf7, 0x80, 0xf5, 0x2d, 0x57, 0x51, 0xbc, 0x89, 0x2e, 0x25, - 0xd5, 0x59, 0xec, 0x8c, 0xd2, 0x3b, 0x28, 0x3b, 0xe3, 0x90, - 0xdc, 0x7, 0x8c, 0xe, 0x36, 0x85, 0x2b, 0xb4, 0x1, 0x8c, - 0x57, 0x69, 0xa0, 0x5a, 0x5d, 0xdf, 0x78, 0x4e, 0x2b, 0x2f, - 0x12, 0x58, 0x99, 0x24, 0x3b, 0xe2, 0x92, 0x1b, 0xdf, 0x2e, - 0x53, 0x2c, 0x61, 0x88, 0x43, 0x26, 0xd2, 0xca, 0x58, 0xa8, - 0x52, 0x79, 0x3c, 0xe6, 0x9a, 0x7c, 0x2a, 0xd0, 0x17, 0x4d, - 0x33, 0x5e, 0xd5, 0x74, 0xcb, 0x57, 0x62, 0xdf, 0x65, 0xb6, - 0x30, 0xbc, 0x6a, 0x4f, 0x5d, 0xbe, 0x6c, 0x6e, 0xc8, 0x3f, - 0xd9, 0x52, 0x14, 0x76, 0x2, 0xae, 0xc3, 0xa1, 0x41, 0x63, - 0xa3, 0x1d, 0x37, 0x4b, 0xb8, 0xb9, 0xd3, 0xd7, 0x71, 0x71, - 0x3c, 0x4c, 0xb2, 0x4b, 0xb8, 0xb6, 0xe6, 0x62, 0xd2, 0x87, - 0xdc, 0x49, 0x27, 0x25, 0x81, 0x3c, 0xd5, 0xb6, 0x9d, 0xf4, - 0x5, 0xd0, 0xe3, 0x7c, 0x17, 0xe1, 0xd, 0x2b, 0x52, 0xf0, - 0xf4, 0xdf, 0xda, 0x50, 0x47, 0x77, 0x6b, 0x1d, 0xf5, 0xec, - 0x56, 0x96, 0x6e, 0x80, 0x43, 0x6a, 0xa2, 0xe2, 0x41, 0x94, - 0x4e, 0x9b, 0xfa, 0xe1, 0xfa, 0x81, 0xc0, 0xc0, 0xce, 0x7a, - 0x4f, 0x10, 0xf8, 0x7a, 0xe3, 0x52, 0xd1, 0xec, 0x2c, 0xe0, - 0x94, 0x5d, 0x25, 0xa4, 0x88, 0xf2, 0xdb, 0x5e, 0xca, 0xc2, - 0x3b, 0xe5, 0x55, 0x2b, 0xb2, 0x66, 0x50, 0x49, 0x4, 0x90, - 0xc7, 0x2a, 0xc0, 0x95, 0xe5, 0x48, 0x35, 0x1e, 0x91, 0xe1, - 0x19, 0xf4, 0x55, 0x48, 0xed, 0xbc, 0x4f, 0xac, 0xb5, 0xba, - 0xce, 0xf3, 0xb4, 0x12, 0x25, 0xa1, 0x57, 0x67, 0x72, 0xee, - 0x9, 0x10, 0x6, 0xc1, 0x66, 0x3d, 0x8, 0xc6, 0x78, 0xc5, - 0x5e, 0xd6, 0x7c, 0x3d, 0xe, 0xb3, 0x77, 0x65, 0x76, 0x6f, - 0x6f, 0x6c, 0xee, 0x6c, 0xb7, 0x98, 0x25, 0xb4, 0x90, 0x29, - 0x5, 0x80, 0x4, 0x90, 0x41, 0xd, 0xd3, 0xa1, 0x4, 0x7a, - 0x83, 0x49, 0x82, 0xdd, 0xfc, 0xff, 00, 0x13, 0x9b, 0xd2, - 0x34, 0x7b, 0xd, 0x23, 0xc6, 0x1a, 0x7b, 0xdc, 0x68, 0x36, - 0xda, 0x2d, 0xdc, 0xb0, 0xcd, 0x1d, 0xaa, 0x69, 0x77, 0x1e, - 0x65, 0xa4, 0xc4, 0x85, 0x2e, 0x19, 0x7c, 0xb4, 0xdb, 0x26, - 0x13, 0x39, 0xb, 0xc8, 0x1c, 0xb1, 0xc0, 0x3, 0xa4, 0xf1, - 0x5d, 0xa6, 0x97, 0xa8, 0x78, 0x5f, 0x50, 0xb3, 0xd6, 0xaf, - 0x45, 0x96, 0x9d, 0x3c, 0x5e, 0x5c, 0xf7, 0x6, 0x61, 0x16, - 0xc0, 0x48, 00, 0xee, 0x6e, 0x7, 0x38, 0xeb, 0xc1, 0xe9, - 0xcd, 0x25, 0x8f, 0x87, 0x85, 0xb6, 0xa0, 0x97, 0xf7, 0xba, - 0x9d, 0xf6, 0xa9, 0x75, 0x12, 0x94, 0x81, 0xef, 0x3c, 0xa0, - 0x21, 0xd, 0xf7, 0xb6, 0xac, 0x48, 0x8b, 0x93, 0x80, 0x32, - 0x41, 0x38, 0xe0, 0x10, 0x9, 0xce, 0x7f, 0x8e, 0x7c, 0x2b, - 0x3f, 0x8c, 0x6c, 0x2c, 0x34, 0xa3, 0x3c, 0x71, 0x69, 0xbf, - 0x6c, 0x49, 0xb5, 0x5, 0x24, 0x87, 0x96, 0x24, 0xc9, 0xd8, - 0xb8, 0x1d, 0xdb, 0x6f, 0x39, 0x18, 0xc6, 0x68, 0x6a, 0xea, - 0xc3, 0x4e, 0xce, 0xe5, 0xff, 00, 0x8, 0xe9, 0x3a, 0x66, - 0x87, 0xe1, 0x5d, 0x3f, 0x4e, 0xd1, 0xee, 0xde, 0xef, 0x4e, - 0x8a, 0x32, 0x60, 0x9d, 0xa6, 0x12, 0x99, 0x14, 0x92, 0xd9, - 0xdc, 0xbc, 0x11, 0xcf, 0x18, 0xe2, 0xb6, 0xa9, 0xb1, 0xc6, - 0x91, 0x46, 0xb1, 0xc6, 0xa1, 0x11, 00, 0x55, 0x55, 0x18, - 00, 0xe, 0x80, 0x53, 0xa9, 0xb7, 0x77, 0x72, 0x52, 0xb2, - 0xb0, 0x51, 0x45, 0x14, 0x86, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x87, 0xa5, 0x2d, 0x31, 0xce, 0x1, - 0xa0, 0x8, 0x26, 0x90, 0x28, 0x2c, 0xdc, 00, 0x32, 0x6b, - 0x9d, 0xf0, 0x98, 0x92, 0xf2, 0xfb, 0x51, 0xd4, 0xe6, 0xeb, - 0x24, 0x85, 0x13, 0xfd, 0xd1, 0xc0, 0xab, 0x7e, 0x25, 0xbe, - 0x16, 0x3a, 0x1d, 0xcc, 0xbc, 0xe4, 0xae, 0xc0, 0x7, 0x5c, - 0x9e, 0x2a, 0xd7, 0x86, 0xac, 0x46, 0x9f, 0xa1, 0x5b, 0x40, - 0x33, 0x90, 0xb9, 0x39, 0xac, 0x9e, 0xb5, 0x12, 0xed, 0xa9, - 0x8c, 0xbd, 0xea, 0xa9, 0x76, 0xd7, 0xf4, 0x35, 0xc9, 0xc0, - 0xcd, 0x7c, 0xed, 0x2d, 0xc6, 0x9f, 0xe2, 0xef, 0x8e, 0x52, - 0xa6, 0xbb, 0x70, 0x9f, 0x62, 0xb1, 0x7, 0xca, 0x8d, 0x8e, - 0x15, 0x88, 0xe7, 0x15, 0xf4, 0x49, 0x19, 0x4, 0x57, 0xcc, - 0x3f, 0x13, 0x7e, 0x1b, 0x78, 0x86, 0xd3, 0xc5, 0x37, 0x3a, - 0xa6, 0x95, 0x6d, 0x34, 0xf6, 0xf3, 0x9d, 0xdb, 0xa1, 0x7, - 0x2b, 0xed, 0xc5, 0x6a, 0x6c, 0x5f, 0xf0, 0xae, 0xa1, 0xa4, - 0x41, 0xe3, 0xff, 00, 0x10, 0x78, 0x8e, 0x57, 0x8a, 0x1b, - 0x2b, 0x14, 0x65, 0x81, 0x46, 0x6, 0x4f, 0x41, 0x81, 0x5b, - 0x7f, 0x4, 0x2c, 0xe6, 0xd6, 0x7c, 0x49, 0xae, 0x78, 0xaa, - 0x78, 0x88, 0x8e, 0x66, 0xd9, 0x11, 0x6e, 0xf9, 0x39, 0xe3, - 0xf2, 0xaf, 0x35, 0xf0, 0xbf, 0xc2, 0x9f, 0x16, 0x78, 0x8e, - 0xe8, 0x43, 0x25, 0xb4, 0xd6, 0x76, 0x65, 0x81, 0x96, 0x59, - 0xb2, 0x6, 0x33, 0xe9, 0xdc, 0xd7, 0xd4, 0x9a, 0x6, 0x87, - 0x6b, 0xe1, 0x5f, 0xd, 0xc3, 0xa7, 0x5a, 00, 0x23, 0x81, - 0xe, 0x5b, 0xfb, 0xc7, 0x1c, 0x9a, 0x4d, 0xd9, 0x5c, 0x4d, - 0xd9, 0x5d, 0x99, 0x7a, 0xcc, 0xfe, 0x76, 0xa0, 0xc3, 0x39, - 0x9, 0xc0, 0xac, 0xf0, 0x9, 0x38, 0x3, 0x26, 0x9d, 0x2b, - 0x99, 0x25, 0x77, 0x3f, 0xc4, 0x73, 0x57, 0xb4, 0x68, 0x3c, - 0xed, 0x41, 0x49, 0x19, 0x8, 0x37, 0x57, 0xcd, 0x6b, 0x5a, - 0xb7, 0xab, 0x3e, 0x41, 0xdf, 0x11, 0x5f, 0xfc, 0x4c, 0xa6, - 0xd6, 0xf3, 0x28, 0xf9, 0xa3, 0x61, 0xf8, 0x54, 0x78, 0xc7, - 0x5a, 0xef, 0x70, 0x8, 0xc6, 0x5, 0x73, 0x9e, 0x20, 0x86, - 0x28, 0xe5, 0x8d, 0x90, 00, 0xcd, 0x9c, 0x81, 0x5d, 0x58, - 0x8c, 0xf, 0xb2, 0x87, 0x3a, 0x95, 0xce, 0xdc, 0x56, 0x5b, - 0xec, 0x29, 0xba, 0x8a, 0x57, 0xb1, 0x8a, 0xe, 0xe, 0x47, - 0x5a, 0xeb, 0x74, 0x6b, 0x96, 0xb9, 0xb1, 0x1b, 0xc9, 0x2c, - 0xa7, 0x6e, 0x6b, 0x92, 0xae, 0xaf, 0x43, 0x84, 0xc5, 0xa7, - 0x82, 0x7f, 0x88, 0x93, 0x4b, 0x2d, 0x72, 0xf6, 0xba, 0x6d, - 0x61, 0x65, 0x2e, 0x5e, 0xdd, 0xa5, 0xb5, 0x8c, 0xdf, 0x10, - 0xcf, 0xba, 0xe9, 0x22, 0x7, 0xee, 0x8c, 0x91, 0x58, 0xd5, - 0xdb, 0x4b, 0x65, 0x6f, 0x3b, 0xef, 0x92, 0x25, 0x66, 0xf5, - 0x22, 0xb3, 0xf5, 0x4b, 0x2b, 0x48, 0x2c, 0x5e, 0x45, 0x89, - 0x55, 0x87, 0x3, 0x15, 0xb6, 0x2b, 0x7, 0x39, 0x4a, 0x55, - 0x5b, 0x46, 0xf8, 0xcc, 0xbe, 0xa4, 0xa5, 0x2a, 0xce, 0x4a, - 0xc7, 0x33, 0x45, 0x15, 0xa7, 0xa3, 0xe9, 0xf1, 0xde, 0xbb, - 0x99, 0x46, 0x51, 0x7b, 0x57, 0x9b, 0x4e, 0x9c, 0xaa, 0x49, - 0x42, 0x3b, 0x9e, 0x45, 0x1a, 0x52, 0xab, 0x35, 0x8, 0xee, - 0xcc, 0xcc, 0x56, 0xf7, 0x87, 0x21, 0xe6, 0x59, 0x8f, 0xd0, - 0x55, 0xc3, 0xa0, 0xd9, 0x9e, 0x8a, 0x47, 0xe3, 0x56, 0xa3, - 0x8a, 0xd, 0x36, 0xd1, 0xb6, 0x8c, 0x22, 0xf2, 0x6b, 0xd3, - 0xc3, 0x60, 0xa7, 0x4a, 0xa7, 0x3c, 0xed, 0x64, 0x7b, 0x18, - 0x4c, 0xbe, 0xa5, 0x1a, 0xaa, 0xa5, 0x4b, 0x59, 0xf, 0xba, - 0xbb, 0x8a, 0xd2, 0x13, 0x24, 0x8d, 0x8f, 0x41, 0xeb, 0x5c, - 0xdd, 0xe6, 0xb5, 0x71, 0x72, 0x48, 0x8c, 0xf9, 0x69, 0xe8, - 0x3a, 0xd5, 0x6b, 0xeb, 0xd9, 0x2f, 0x67, 0x2e, 0xc4, 0xed, - 0xfe, 0x15, 0xf4, 0x15, 0x5e, 0x38, 0xde, 0x57, 0x8, 0x8a, - 0x59, 0x89, 0xc0, 0x2, 0xb0, 0xc4, 0xe3, 0x67, 0x52, 0x5c, - 0xb0, 0xd1, 0x7e, 0x67, 0x36, 0x2f, 0x30, 0x9d, 0x69, 0x72, - 0x53, 0xd1, 0x7e, 0x62, 0x33, 0x33, 0x1c, 0xb3, 0x12, 0x7d, - 0xcd, 0x25, 0x6f, 0xdb, 0x78, 0x78, 0x6d, 0x6, 0x77, 0xe4, - 0xf6, 0x1d, 0xa8, 0xbb, 0xf0, 0xf8, 0x58, 0xcb, 0x5b, 0xb1, - 0x24, 0x7f, 0x9, 0xef, 0x59, 0xbc, 0x15, 0x7e, 0x5e, 0x66, - 0x8c, 0x9e, 0x5d, 0x88, 0xe5, 0xe7, 0x6b, 0xfc, 0xcc, 0x58, - 0x6e, 0x66, 0x81, 0x83, 0x47, 0x23, 0x29, 0xfa, 0xd7, 0x4d, - 0xa5, 0x6a, 0x82, 0xf4, 0x79, 0x72, 0x71, 0x28, 0x1f, 0x9d, - 0x72, 0xa4, 0x15, 0x24, 0x1e, 0xa2, 0xa5, 0xb5, 0x99, 0xa0, - 0xb9, 0x8e, 0x45, 0x3d, 0xd, 0x4e, 0x1b, 0x13, 0x2a, 0x33, - 0x5a, 0xe8, 0x4e, 0x13, 0x17, 0x3a, 0x13, 0x5a, 0xe9, 0xd5, - 0x1d, 0xc5, 0x32, 0x49, 0x12, 0x24, 0x2e, 0xec, 0x15, 0x47, - 0x52, 0x69, 0x51, 0x83, 0x20, 0x61, 0xd0, 0x8c, 0xd7, 0x31, - 0xad, 0x5f, 0xb4, 0xf7, 0x6, 0x14, 0x3f, 0xbb, 0x43, 0x8f, - 0xa9, 0xaf, 0x6f, 0x11, 0x88, 0x54, 0x61, 0xcc, 0x7d, 0x16, - 0x2b, 0x15, 0x1c, 0x3d, 0x3e, 0x7e, 0xbd, 0xb, 0x57, 0x7e, - 0x21, 0x39, 0x2b, 0x6c, 0xbf, 0xf0, 0x26, 0xac, 0xd7, 0xd5, - 0x6f, 0x5c, 0xff, 00, 0xaf, 0x61, 0xf4, 0xe2, 0xa9, 0x1, - 0x93, 0x81, 0x5a, 0x30, 0xe8, 0xb7, 0x73, 0x28, 0x6d, 0xa1, - 0x41, 0xf5, 0x35, 0xe2, 0xba, 0xd8, 0x8a, 0xef, 0x46, 0xfe, - 0x47, 0xcf, 0xba, 0xf8, 0xac, 0x4c, 0xbd, 0xd6, 0xdf, 0xa1, - 0x5c, 0x6a, 0x37, 0x83, 0xa5, 0xc3, 0xfe, 0x75, 0x66, 0x1d, - 0x6e, 0xf2, 0x32, 0x32, 0xc1, 0xc7, 0xa1, 0x14, 0xf7, 0xd0, - 0x2e, 0xd7, 0xa6, 0xd3, 0xf8, 0xd4, 0x11, 0x69, 0xf3, 0xa5, - 0xec, 0x71, 0xcb, 0x19, 0x5e, 0x7a, 0xd3, 0x51, 0xc4, 0xc1, - 0xad, 0xd0, 0x28, 0xe2, 0xe9, 0xc9, 0x6e, 0x8e, 0x85, 0xee, - 0xd9, 0xed, 0x43, 0x91, 0xb4, 0xb0, 0xe4, 0x57, 0x25, 0xac, - 0xdd, 0xa8, 0x57, 0x27, 0xd2, 0xba, 0x4b, 0xd6, 0xd9, 0x16, - 0x7, 0x61, 0x5e, 0x7f, 0xe2, 0x6b, 0xaf, 0x2e, 0xd6, 0x56, - 0xcf, 0x38, 0x35, 0xef, 0xed, 0x1d, 0x4f, 0xa8, 0xd6, 0x31, - 0xd4, 0xe4, 0xec, 0x3e, 0x21, 0x4f, 0xe1, 0xbf, 0x14, 0x2a, - 0xee, 0xdd, 0xa7, 0xc8, 0xe1, 0x25, 0x43, 0xdb, 0x27, 0xad, - 0x7b, 0xf5, 0xa5, 0xc4, 0x77, 0x56, 0xc9, 0x3c, 0x4d, 0xba, - 0x37, 0x1, 0x94, 0xfb, 0x1a, 0xf8, 0xc3, 0x59, 0xb8, 0x2f, - 0x3c, 0x8d, 0x93, 0x9d, 0xd9, 0x6, 0xbe, 0xaf, 0xf8, 0x7f, - 0x34, 0xb3, 0xf8, 0x23, 0x4c, 0x79, 0xbe, 0xf9, 0x84, 0x64, - 0xfa, 0xf1, 0x59, 0x50, 0x93, 0x92, 0x6d, 0x98, 0x61, 0xa7, - 0x29, 0xa6, 0xd9, 0xd3, 0x51, 0x45, 0x15, 0xb9, 0xd2, 0x79, - 0xac, 0x1f, 0xf2, 0x1a, 0xd7, 0xff, 00, 0xec, 0x24, 0xff, - 00, 0xfa, 0x2, 0x57, 0x69, 0xa3, 0xff, 00, 0xc8, 0x2a, - 0x1f, 0xf8, 0x17, 0xfe, 0x84, 0x6b, 0x8b, 0x83, 0xfe, 0x43, - 0x5a, 0xff, 00, 0xfd, 0x84, 0x9f, 0xff, 00, 0x40, 0x4a, - 0xed, 0x34, 0x7f, 0xf9, 0x5, 0x43, 0xff, 00, 0x2, 0xff, - 00, 0xd0, 0x8d, 00, 0x55, 0xf0, 0x47, 0xfc, 0x8a, 0x16, - 0x3f, 0xf6, 0xd3, 0xff, 00, 0x46, 0x35, 0x74, 0x15, 0xcf, - 0xf8, 0x23, 0xfe, 0x45, 0xb, 0x1f, 0xfb, 0x69, 0xff, 00, - 0xa3, 0x1a, 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x2a, - 0x29, 0xf, 0x15, 0x29, 0xaa, 0xf2, 0x36, 0x73, 0x40, 0x1c, - 0xaf, 0x89, 0x73, 0x7d, 0xaa, 0x69, 0x9a, 0x62, 0x1e, 0x5e, - 0x5f, 0x35, 0xc7, 0xaa, 0x8a, 0xec, 0x23, 0x50, 0xb1, 0x85, - 0x1d, 00, 0xc0, 0xae, 0x43, 0x4a, 0x3, 0x52, 0xf1, 0x95, - 0xe5, 0xe0, 0x3b, 0xa3, 0xb5, 0x5f, 0x29, 0xf, 0xbf, 0x7f, - 0xd6, 0xbb, 0x1a, 0xca, 0x96, 0xad, 0xcb, 0xbf, 0xe8, 0x61, - 0x47, 0xde, 0x72, 0x9f, 0x77, 0xf9, 0x19, 0x7e, 0x20, 0xf1, - 0x6, 0x9f, 0xe1, 0xad, 0x22, 0x6d, 0x4b, 0x51, 0x99, 0x63, - 0x86, 0x31, 0xc0, 0x3d, 0x58, 0xf6, 0x2, 0xbc, 0x4a, 0x4f, - 0xda, 0x6, 0xff, 00, 0x51, 0xd5, 0x61, 0xb2, 0xd2, 0xb4, - 0x98, 0xb6, 0xcb, 0x20, 0x45, 0x32, 0x1c, 0x93, 0x9a, 0x93, - 0xe2, 0x54, 0xcd, 0xe3, 0xf, 0x8a, 0x1a, 0x5f, 0x85, 0x25, - 0xb8, 0x31, 0x59, 0x23, 0x7e, 0xf4, 0x67, 0x19, 0x35, 0x9e, - 0x9e, 0x1f, 0xd1, 0x53, 0xe3, 0x44, 0x16, 0x3a, 0x74, 0x51, - 0xc5, 0x61, 0xa6, 0x47, 0xbe, 0x62, 0x3a, 0x65, 0x7d, 0x6b, - 0x53, 0x73, 0xd6, 0x17, 0xe2, 0x15, 0x85, 0xbf, 0x89, 0x2c, - 0xfc, 0x3b, 0x71, 0x3, 0x8d, 0x42, 0x78, 0xc3, 0x36, 0xc1, - 0xf2, 0xa9, 0x23, 0x38, 0xae, 0x8f, 0x5b, 0x9f, 0xca, 0xd3, - 0x98, 0xe, 0xaf, 0xc5, 0x78, 0x7f, 0x84, 0xd9, 0x7c, 0x65, - 0xf1, 0xd2, 0xf3, 0x55, 0xb7, 0x8c, 0xc9, 0x65, 0x64, 0xac, - 0x3, 0xf6, 0xfe, 0xe8, 0xaf, 0x5f, 0xf1, 0x14, 0xfb, 0xa6, - 0x8e, 0x10, 0x7e, 0xe8, 0xc9, 0xae, 0x6c, 0x65, 0x4e, 0x4a, - 0x2d, 0x9c, 0x78, 0xfa, 0xbe, 0xcf, 0xf, 0x27, 0xdf, 0x43, - 0x12, 0xb5, 0x74, 0x7b, 0xcb, 0x7b, 0x33, 0x23, 0x4b, 0x9d, - 0xcd, 0xd2, 0xb2, 0xa8, 0xaf, 0x9f, 0xa5, 0x51, 0xd3, 0x92, - 0x9a, 0xdc, 0xf9, 0x8a, 0x35, 0x65, 0x4a, 0x6a, 0x71, 0xdd, - 0x1d, 0x4c, 0x9a, 0xfd, 0xa2, 0xaf, 0xcb, 0x96, 0x3e, 0x95, - 0xcf, 0x5e, 0xde, 0x3d, 0xed, 0xc1, 0x95, 0xf8, 0xec, 0x7, - 0xa0, 0xaa, 0xf5, 0x6f, 0x4f, 0x8e, 0x9, 0x6e, 0xd5, 0x27, - 0xce, 0xd3, 0xe9, 0x5b, 0xd4, 0xc4, 0x55, 0xc4, 0x35, 0x9, - 0x33, 0xa2, 0xae, 0x2e, 0xb6, 0x29, 0xaa, 0x72, 0x76, 0x41, - 0xa7, 0xd8, 0xc9, 0x7b, 0x70, 0x15, 0x47, 0xc8, 0xe, 0x59, - 0xab, 0xb1, 0x8d, 0x16, 0x28, 0xd5, 0x14, 0x60, 0x28, 0xc0, - 0xa6, 0xc3, 0xc, 0x70, 0x46, 0x12, 0x24, 0xa, 0xa3, 0xd2, - 0xa4, 0xaf, 0x63, 0xb, 0x86, 0x54, 0x23, 0xdd, 0xb3, 0xde, - 0xc1, 0x60, 0xd6, 0x1a, 0x3d, 0xdb, 0xa, 0xc2, 0xf1, 0x1c, - 0xd8, 0x8a, 0x28, 0x7d, 0x4e, 0xe3, 0x5b, 0xb5, 0xc9, 0x6b, - 0x73, 0x79, 0xba, 0x8b, 00, 0x78, 0x50, 0x5, 0x46, 0x3e, - 0x7c, 0xb4, 0x5a, 0xee, 0x67, 0x99, 0xd4, 0xe4, 0xc3, 0xb5, - 0xdf, 0x43, 0x3a, 0xba, 0xad, 0xa, 0x1f, 0x2a, 0xc0, 0x31, - 0xea, 0xe7, 0x35, 0xcb, 0x22, 0x96, 0x75, 0x51, 0xdc, 0xe2, - 0xbb, 0x8b, 0x68, 0xc4, 0x56, 0xd1, 0xa0, 0xec, 0xa2, 0xb8, - 0xb2, 0xd8, 0x5e, 0xa3, 0x97, 0x63, 0xcf, 0xca, 0x29, 0xde, - 0xa3, 0x9f, 0x64, 0x4b, 0x58, 0x3e, 0x21, 0xbb, 0x20, 0x2d, - 0xb2, 0x9e, 0xbc, 0xb5, 0x6e, 0x93, 0x80, 0x4f, 0xa5, 0x71, - 0x9a, 0x8c, 0xc6, 0x7b, 0xe9, 0x5b, 0x39, 00, 0xe0, 0x57, - 0x5e, 0x61, 0x53, 0x92, 0x97, 0x2a, 0xea, 0x77, 0xe6, 0x95, - 0xb9, 0x28, 0xf2, 0xae, 0xa5, 0x5a, 0xe8, 0xf4, 0x1b, 0x10, - 0xb1, 0xfd, 0xa9, 0xc7, 0xcc, 0xdf, 0x77, 0xe9, 0x5c, 0xfc, - 0x48, 0x64, 0x95, 0x50, 0x77, 0x38, 0xae, 0xe2, 0x18, 0xc4, - 0x30, 0xa4, 0x6b, 0xd1, 0x40, 0x15, 0xc7, 0x97, 0x51, 0x52, - 0x9b, 0x9b, 0xe8, 0x79, 0xf9, 0x4d, 0x5, 0x3a, 0x8e, 0xa3, - 0xe9, 0xf9, 0x8f, 0xa2, 0x8a, 0x42, 0x70, 0x32, 0x6b, 0xdb, - 0x3e, 0x88, 0xe3, 0x75, 0x35, 0xb, 0xa8, 0xcc, 00, 00, - 0x6e, 0xed, 0x55, 0x47, 0xde, 0x1f, 0x5a, 0x9e, 0xf6, 0x5f, - 0x3a, 0xf6, 0x57, 0xf5, 0x63, 0x51, 0xc0, 0x86, 0x49, 0xd1, - 0x7, 0x52, 0xc0, 0x57, 0xcb, 0xcf, 0xde, 0xa8, 0xed, 0xdc, - 0xf8, 0xca, 0x9e, 0xf5, 0x57, 0xcb, 0xd5, 0x9d, 0x86, 0xf3, - 0x16, 0x9b, 0xbf, 0x3c, 0xac, 0x7f, 0xd2, 0xb8, 0xc6, 0x25, - 0x98, 0x93, 0xd4, 0x9c, 0xd7, 0x6d, 0x34, 0x3b, 0xec, 0xda, - 0x25, 0xee, 0xb8, 0x15, 0xc5, 0x3a, 0x34, 0x72, 0x32, 0x30, - 0x20, 0x83, 0x82, 0xd, 0x77, 0xe6, 0x49, 0xae, 0x5e, 0xc7, - 0xa9, 0x9b, 0x29, 0x2e, 0x45, 0xd2, 0xc4, 0xd6, 0x2d, 0x1a, - 0x5e, 0xc4, 0xd2, 0x7d, 0xc0, 0xc3, 0x39, 0xae, 0xd1, 0x19, - 0x59, 0x41, 0x52, 0x8, 0xf6, 0xae, 0xe, 0xad, 0x5b, 0x6a, - 0x17, 0x36, 0xb8, 0x11, 0xc8, 0x76, 0xff, 00, 0x74, 0xf4, - 0xac, 0xb0, 0x78, 0xb5, 0x46, 0xea, 0x4b, 0x46, 0x61, 0x80, - 0xc7, 0x2c, 0x3d, 0xe3, 0x25, 0xa3, 0x3b, 0x4a, 0x6b, 0xe3, - 0x69, 0x24, 0x67, 0x15, 0x91, 0x63, 0xae, 0xa4, 0xcc, 0x23, - 0xb8, 0x1, 0x18, 0xf7, 0xed, 0x5a, 0x93, 0x38, 0x11, 0x12, - 0xf, 0x51, 0xc5, 0x7b, 0x34, 0xab, 0x42, 0xaa, 0xbc, 0x19, - 0xf4, 0x14, 0x6b, 0xd3, 0xad, 0x1e, 0x68, 0x3b, 0x98, 0x5a, - 0x9c, 0xb8, 0x8d, 0xb9, 0xaf, 0x2b, 0xf1, 0xc5, 0xef, 0x93, - 0x61, 0x20, 0xcf, 0x2d, 0xc5, 0x7a, 0x46, 0xb1, 0x2e, 0x14, - 0xf3, 0x5e, 0x2f, 0xe3, 0xfb, 0xcc, 0xb8, 0x8c, 0x37, 0x1c, - 0xf1, 0x45, 0x79, 0x5a, 0xc, 0x58, 0x89, 0x72, 0xd3, 0x67, - 0x9e, 0x8, 0x8d, 0xe6, 0xa9, 0x5, 0xb8, 0x19, 0x32, 0x4a, - 0xab, 0x8f, 0xa9, 0xaf, 0xb1, 0x3c, 0x39, 0x6e, 0xb6, 0x9a, - 0x1d, 0xb5, 0xba, 0x8c, 0x8, 0xd0, 0x2e, 0x3f, 0x1, 0x5f, - 0x2c, 0xfc, 0x3e, 0xb1, 0x1a, 0x8f, 0x8e, 0xac, 0x95, 0xd7, - 0x72, 0xc6, 0xc5, 0xff, 00, 0x2a, 0xfa, 0xbb, 0x4c, 0xe6, - 0xd5, 0xbf, 0xdf, 0x3f, 0xc8, 0x52, 0xa3, 0x1b, 0x44, 0x58, - 0x78, 0xda, 0x25, 0xda, 0x28, 0xa2, 0xb6, 0x3a, 0xf, 0x35, - 0x83, 0xfe, 0x43, 0x5a, 0xff, 00, 0xfd, 0x84, 0x9f, 0xff, - 00, 0x40, 0x4a, 0xed, 0x34, 0x7f, 0xf9, 0x5, 0x43, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x71, 0x70, 0x7f, 0xc8, - 0x6b, 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, - 0x5d, 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xa, 0xbe, 0x8, 0xff, 00, 0x91, 0x42, - 0xc7, 0xfe, 0xda, 0x7f, 0xe8, 0xc6, 0xae, 0x82, 0xb9, 0xff, - 00, 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, - 0xf4, 0x63, 0x57, 0x41, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0xd, - 0x63, 0xc5, 0x67, 0xdf, 0xdc, 0x7d, 0x9a, 0xce, 0x79, 0xc9, - 0x3, 0xcb, 0x42, 0xdc, 0xd5, 0xe9, 0xf, 0x15, 0xcb, 0x78, - 0xc2, 0x6c, 0xe9, 0xb1, 0xd9, 0x28, 0x63, 0x25, 0xd4, 0xa1, - 0x14, 0x2f, 0xd7, 0x9a, 0x8a, 0x92, 0xe5, 0x8b, 0x64, 0x54, - 0x97, 0x24, 0x1c, 0x89, 0xfc, 0x15, 0x6c, 0xc9, 0xa4, 0x1b, - 0xa9, 0x6, 0x24, 0xb9, 0x73, 0x2b, 0x7e, 0x3c, 0xd7, 0x4d, - 0x55, 0xac, 0x20, 0x5b, 0x6b, 0x28, 0xa1, 0x5f, 0xba, 0x8a, - 00, 0xfc, 0xab, 0x17, 0xc7, 0x97, 0x77, 0xb6, 0x3e, 0xa, - 0xd5, 0x2e, 0x2c, 0x37, 0xb, 0x84, 0x84, 0xed, 0x65, 0xea, - 0x3e, 0x94, 0x42, 0x3c, 0xb1, 0x48, 0x29, 0xc3, 0x92, 0xa, - 0x27, 0x83, 0xfc, 0x69, 0xf0, 0xde, 0xad, 0x61, 0xe3, 0x3f, - 0xed, 0xdb, 0x14, 0x91, 0xa3, 0x94, 0x6e, 0x12, 0x43, 0x92, - 0x50, 0x8f, 0xa5, 0x79, 0xfe, 0x8b, 0x67, 0xe2, 0x9d, 0x67, - 0x54, 0x78, 0xf4, 0xc8, 0xef, 0x24, 0xba, 0xb9, 0xf9, 0x64, - 0x65, 0x4, 0x64, 0x7b, 0x9f, 0x4a, 0xf7, 0x2f, 0x81, 0x7a, - 0x9c, 0x9a, 0xe6, 0x95, 0xa9, 0x2e, 0xb1, 0x78, 0x6e, 0xe6, - 0xe, 00, 0x8a, 0x73, 0xb8, 0x85, 0xe7, 0x3d, 0x6b, 0xd8, - 0x2d, 0xac, 0xac, 0xec, 0xc1, 0x5b, 0x5b, 0x68, 0x61, 0x7, - 0x9c, 0x46, 0x81, 0x7f, 0x95, 0x59, 0x67, 0x21, 0xf0, 0xcf, - 0xc0, 0xa9, 0xe0, 0x8f, 0xe, 0xf9, 0x53, 0x10, 0xf7, 0xd3, - 0xe1, 0xe7, 0x7f, 0x43, 0xe9, 0x4f, 0xd4, 0x26, 0x33, 0xdf, - 0x4a, 0xe4, 0xe4, 0x67, 0x2, 0xba, 0xdb, 0xe9, 0xbc, 0x8b, - 0x29, 0x5f, 0xb8, 0x5e, 0x2b, 0x89, 0x27, 0x24, 0x93, 0xdf, - 0x9a, 0xf2, 0x73, 0x39, 0xfc, 0x30, 0x3c, 0x3c, 0xe2, 0xa7, - 0xc3, 0x4f, 0xe6, 0x4d, 0x69, 0x17, 0x9f, 0x75, 0x1c, 0x7d, - 0x99, 0xb9, 0xae, 0xb5, 0xf4, 0xdb, 0x57, 0x8b, 0x61, 0x89, - 0x7a, 0x63, 0x38, 0xe6, 0xb0, 0xfc, 0x3f, 0xe, 0xfb, 0xc6, - 0x90, 0x8e, 0x10, 0x7e, 0xb5, 0xd3, 0xd5, 0xe5, 0xf4, 0x62, - 0xe9, 0xb9, 0x49, 0x6e, 0x69, 0x95, 0xe1, 0xe2, 0xe8, 0xb9, - 0x49, 0x5e, 0xe7, 0xf, 0x75, 0xf, 0x91, 0x73, 0x24, 0x7d, - 0x94, 0xf1, 0x4d, 0xb7, 0x38, 0xb8, 0x8c, 0xff, 00, 0xb4, - 0x2a, 0xd6, 0xae, 0x31, 0xa8, 0xc9, 0x54, 0xe3, 0x38, 0x95, - 0xf, 0xb8, 0xaf, 0x2a, 0x69, 0x46, 0xa3, 0x4b, 0xa3, 0x3c, - 0x5a, 0x91, 0x50, 0xac, 0xd2, 0xe8, 0xce, 0xea, 0x3f, 0xf5, - 0x6b, 0xf4, 0xa7, 0x53, 0x22, 0x39, 0x85, 0xf, 0xfb, 0x22, - 0x9f, 0x5f, 0x4e, 0xb6, 0x3e, 0xc6, 0x3b, 0xc, 0x95, 0xc4, - 0x71, 0x33, 0x9e, 0x80, 0x57, 0xf, 0x33, 0xf9, 0xb3, 0xc9, - 0x21, 0xfe, 0x26, 0x26, 0xba, 0xbd, 0x66, 0x6f, 0x27, 0x4e, - 0x7c, 0x1e, 0x5b, 0xe5, 0xae, 0x46, 0xbc, 0x7c, 0xce, 0x77, - 0x92, 0x87, 0x63, 0xc1, 0xce, 0x2a, 0x5e, 0x71, 0x87, 0x62, - 0xe6, 0x99, 0x9, 0x9a, 0xfe, 0x31, 0xd8, 0x1c, 0x9a, 0xec, - 0xab, 0x9e, 0xf0, 0xec, 0x39, 0x79, 0x26, 0x3d, 0xb8, 0x15, - 0xd0, 0xd7, 0x56, 0x5d, 0xe, 0x5a, 0x5c, 0xdd, 0xce, 0xcc, - 0xaa, 0x9f, 0x2d, 0xe, 0x6e, 0xe4, 0x57, 0x2e, 0x63, 0xb6, - 0x91, 0x87, 0x50, 0xa6, 0xb8, 0x76, 0x39, 0x62, 0x7d, 0x4d, - 0x76, 0xd7, 0xaa, 0x5a, 0xce, 0x50, 0x3f, 0xba, 0x6b, 0x88, - 0xe8, 0x6b, 0x9b, 0x33, 0x6f, 0x9a, 0x28, 0xe3, 0xce, 0x1b, - 0xe6, 0x8a, 0x2e, 0x69, 0x6b, 0xbf, 0x51, 0x84, 0x7a, 0x1c, - 0xd7, 0x65, 0x5c, 0x5e, 0x9f, 0x28, 0x82, 0xfa, 0x27, 0x3d, - 0x1, 0xe6, 0xbb, 0x30, 0x43, 00, 0x41, 0xc8, 0x35, 0xb6, - 0x58, 0xd7, 0xb3, 0x6b, 0xcc, 0xe8, 0xc9, 0xda, 0xf6, 0x72, - 0x5d, 0x6e, 0x2d, 0x55, 0xd4, 0x27, 0x16, 0xf6, 0x72, 0x39, - 0x38, 0x38, 0xc0, 0xab, 0x2c, 0x42, 0xa9, 0x24, 0xe0, 0xe, - 0xb5, 0xcb, 0x6b, 0x3a, 0x88, 0xbb, 0x94, 0x45, 0x19, 0xfd, - 0xda, 0x77, 0xf5, 0x35, 0xd3, 0x8b, 0xae, 0xa9, 0x53, 0x7d, - 0xde, 0xc7, 0x5e, 0x37, 0x10, 0xa8, 0x52, 0x6f, 0xab, 0xd8, - 0xcb, 0x27, 0x24, 0x93, 0xde, 0xb4, 0x74, 0x58, 0xc, 0xba, - 0x82, 0x36, 0x38, 0x4e, 0x6b, 0x3a, 0xba, 0xad, 0x16, 0xc8, - 0xdb, 0x5a, 0xf9, 0x8e, 0x3e, 0x79, 0x39, 0xfc, 0x2b, 0xc6, - 0xc1, 0xd2, 0x75, 0x2a, 0xae, 0xcb, 0x53, 0xc0, 0xcb, 0xe8, - 0xba, 0xb5, 0xd7, 0x65, 0xa9, 0xa9, 0x59, 0x9a, 0x86, 0x91, - 0x1d, 0xe3, 0x19, 0x10, 0xec, 0x93, 0xd7, 0xd6, 0xb4, 0xe8, - 0xaf, 0x7e, 0xa5, 0x38, 0xd4, 0x8f, 0x2c, 0x96, 0x87, 0xd3, - 0xd5, 0xa5, 0xa, 0xb1, 0xe5, 0x9a, 0xba, 0x38, 0xcb, 0x9d, - 0x36, 0xe6, 0xd4, 0xfc, 0xe8, 0x4a, 0xff, 00, 0x78, 0x55, - 0x4a, 0xef, 0x48, 0x4, 0x60, 0x8c, 0x83, 0x5c, 0xa6, 0xb5, - 0x6f, 0x1d, 0xbd, 0xe9, 0x11, 0x8c, 0x6, 0x19, 0x23, 0xd2, - 0xbc, 0x6c, 0x5e, 0x9, 0x52, 0x8f, 0x3c, 0x5e, 0x87, 0xcf, - 0xe3, 0xb2, 0xf5, 0x42, 0x3e, 0xd2, 0xf, 0x43, 0x36, 0xb7, - 0xb4, 0xeb, 0xb6, 0x9a, 0xc8, 0xab, 0x36, 0x4a, 0x71, 0x58, - 0x7, 0x80, 0x6b, 0x47, 0x4b, 0x1b, 0x2c, 0x9d, 0xff, 00, - 0xbd, 0x53, 0x97, 0x37, 0xed, 0xac, 0x89, 0xca, 0x9b, 0xf6, - 0xf6, 0x5d, 0x8c, 0xfd, 0x6a, 0x7c, 0x2b, 0x9c, 0xf4, 0xaf, - 0x6, 0xf1, 0x85, 0xe7, 0x9f, 0xa8, 0xc9, 0x86, 0x24, 0xe, - 0x5, 0x7b, 0x2f, 0x88, 0xae, 0x84, 0x76, 0xf2, 0xbf, 0xa0, - 0x35, 0xe0, 0x3a, 0xe5, 0xc7, 0x9d, 0x73, 0x2b, 0xee, 0xce, - 0x49, 0xaf, 0x57, 0x10, 0xee, 0xd4, 0x4f, 0x6b, 0x14, 0xee, - 0xe3, 0x13, 0xbe, 0xf8, 0x2b, 0xa7, 0x79, 0x9a, 0x8d, 0xee, - 0xa2, 0x40, 0xc2, 0xae, 0xc1, 0xc7, 0x4a, 0xfa, 0x17, 0x4b, - 0xe2, 0xd4, 0xff, 00, 0xbe, 0x7f, 0x90, 0xaf, 0x25, 0xf8, - 0x45, 0xa7, 0x7d, 0x93, 0xc2, 0x29, 0x31, 0x52, 0x1a, 0xe1, - 0xcb, 0x9c, 0xd7, 0xad, 0xe9, 0xbf, 0xf1, 0xea, 0x7f, 0xde, - 0xfe, 0x82, 0xb7, 0x8a, 0xb2, 0x3a, 0xa0, 0xad, 0x14, 0x8b, - 0x94, 0x51, 0x45, 0x51, 0x47, 0x9a, 0xc1, 0xff, 00, 0x21, - 0xad, 0x7f, 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, 0x25, 0x76, - 0x9a, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, 0x7f, 0xe8, - 0x46, 0xb8, 0xb8, 0x3f, 0xe4, 0x35, 0xaf, 0xff, 00, 0xd8, - 0x49, 0xff, 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, 0xff, 00, - 0x90, 0x54, 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x5, 0x5f, - 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, 0xf4, - 0x63, 0x57, 0x41, 0x5c, 0xff, 00, 0x82, 0x3f, 0xe4, 0x50, - 0xb1, 0xff, 00, 0xb6, 0x9f, 0xfa, 0x31, 0xab, 0xa0, 0xa0, - 0x2, 0x8a, 0x2b, 0xe7, 0xaf, 0x8d, 0xde, 0x25, 0xf1, 0x9e, - 0x93, 0xe3, 0xad, 0x3e, 0xdb, 0x4b, 0xbd, 0xd4, 0x2c, 0xec, - 0x8c, 0x48, 0x6d, 0x16, 0xd4, 0xb2, 0xad, 0xc4, 0x99, 0xf9, - 0x81, 0xc7, 0xdf, 0x39, 0xda, 0x36, 0x9c, 0xf5, 0x1c, 0x73, - 0xca, 0x6e, 0xcd, 0x2e, 0xe3, 0x4a, 0xe9, 0xbe, 0xc7, 0xd0, - 0xb4, 0x55, 0x3d, 0x26, 0x4b, 0xc9, 0xb4, 0x6b, 0x19, 0x35, - 0x8, 0xc4, 0x77, 0xaf, 0x2, 0x34, 0xe8, 0x6, 0x36, 0xc8, - 0x54, 0x6e, 0x1f, 0x9e, 0x6a, 0xe5, 0x53, 0x56, 0x76, 0x25, - 0x3b, 0xab, 0x85, 0x65, 0x78, 0x9b, 0x56, 0x7d, 0xb, 0xc2, - 0xfa, 0xa6, 0xad, 0x1a, 0x2c, 0x8f, 0x67, 0x6b, 0x24, 0xca, - 0xad, 0xd0, 0x95, 0x52, 0x46, 0x7d, 0xab, 0x56, 0x8a, 0x96, - 0xae, 0x8a, 0x4e, 0xcc, 0xe4, 0xef, 0x7c, 0x63, 0x63, 0xa0, - 0x7c, 0x3d, 0xb6, 0xf1, 0x15, 0xcd, 0xd4, 0x9a, 0x8a, 0x3d, - 0xbc, 0x66, 0x27, 0x48, 0xf6, 0x3d, 0xdc, 0x8e, 0x6, 0xd0, - 0x17, 0x3, 0x6e, 0xe3, 0xdb, 0x1c, 0xf, 0xa5, 0x62, 0xda, - 0xe9, 0x3f, 0x13, 0xf5, 0xc8, 0x45, 0xfd, 0xe7, 0x8a, 0xac, - 0xfc, 0x38, 0xd2, 0xe0, 0xa6, 0x9d, 0x6b, 0xa6, 0xc7, 0x74, - 0x23, 0x5c, 0x71, 0xbd, 0xe4, 0x39, 0xdf, 0xea, 0x6, 0x47, - 0x1c, 0x7a, 0x8, 0xfe, 0x2d, 0xed, 0xfb, 0x47, 0x82, 0xfc, - 0xfd, 0xdf, 0x65, 0xff, 00, 0x84, 0x82, 0xf, 0x37, 0x1d, - 0x33, 0xce, 0x33, 0xfa, 0xd7, 0xa5, 0x53, 0xde, 0xf2, 0xf3, - 0xff, 00, 0x27, 0xfa, 0x8b, 0x6b, 0x2f, 0x2f, 0xf3, 0xff, - 00, 0x23, 0x84, 0xf0, 0xdf, 0x8b, 0x75, 0x9b, 0x6f, 0x13, - 0xff, 00, 0xc2, 0x23, 0xe3, 0x8, 0x2d, 0x63, 0xd5, 0x1e, - 0x1f, 0x3a, 0xca, 0xf6, 0xd0, 0x91, 0xd, 0xea, 0x1, 0xf3, - 0x7c, 0xa7, 0x95, 0x71, 0x82, 0x48, 0xfa, 0xe0, 00, 0x6, - 0x79, 0xad, 0x7b, 0xc7, 0x57, 0x5a, 0xb7, 0xc4, 0x9, 0xf4, - 0x5d, 0x23, 0xc7, 0x9a, 0x3f, 0x87, 0xf4, 0xab, 0x3b, 0x41, - 0x23, 0x5e, 0x32, 0xc1, 0x38, 0x9e, 0x52, 0x46, 0x53, 0x32, - 0x1c, 0x64, 0xe, 0xc0, 0xe4, 0x73, 0x9c, 0xf6, 0xd7, 0xf8, - 0x87, 0xb7, 0xfe, 0x16, 0xf, 0xc3, 0xdf, 0x2b, 0x3f, 0x6b, - 0xfe, 0xd0, 0x97, 0x18, 0xff, 00, 0x9e, 0x7b, 0x57, 0x7f, - 0xe9, 0x8f, 0xd6, 0xb2, 0x74, 0xaf, 0xc, 0x78, 0x7e, 0xe3, - 0xe3, 0x97, 0x88, 0xec, 0xa7, 0xd0, 0xb4, 0xc9, 0x6d, 0x13, - 0x4e, 0x86, 0x54, 0x81, 0xed, 0x23, 0x64, 0x57, 0x25, 0x72, - 0xc1, 0x48, 0xc0, 0x27, 0x27, 0x9a, 0x49, 0xb9, 0x35, 0xf3, - 0xfc, 0x15, 0xff, 00, 0xaf, 0x34, 0x12, 0xf7, 0x53, 0xb7, - 0x97, 0xe2, 0xed, 0xfd, 0x7a, 0x8b, 0xa3, 0xf8, 0xb7, 0x56, - 0xf1, 0x6f, 0x8f, 0xef, 0xec, 0xec, 0x7c, 0x77, 0xa6, 0xe9, - 0xfa, 0x75, 0x8d, 0xc4, 0x50, 0xdb, 0xda, 0xc7, 0x4, 0x13, - 0x3e, 0xa4, 0xa0, 0x12, 0xec, 0xac, 0xc7, 0x3c, 0xe0, 0xf2, - 0xb9, 0x3, 0x3d, 0x38, 0xc9, 0xf4, 0x2f, 0xe, 0xc9, 0x34, - 0x93, 0x6a, 0xbe, 0x6f, 0x89, 0x2d, 0xf5, 0x90, 0xb7, 0x8e, - 0x11, 0x21, 0x8e, 0x35, 0x36, 0x63, 0xfe, 0x78, 0xb6, 0xc2, - 0x72, 0x47, 0xab, 0x60, 0xd7, 0x3, 0xf0, 0xcb, 0x42, 0xd1, - 0xd3, 0xc7, 0x1e, 0x35, 0x91, 0x34, 0xab, 0x15, 0x7b, 0x2d, - 0x4c, 0x2d, 0xa3, 0xb, 0x74, 0x6, 0xdc, 0x61, 0xb8, 0x43, - 0x8f, 0x94, 0x7d, 0x31, 0x59, 0x3a, 0x3e, 0xad, 0x71, 0xa1, - 0xf8, 0x3f, 0xe2, 0x96, 0xa3, 0x68, 0xe5, 0x2e, 0x62, 0xd5, - 0xae, 0x3c, 0xa7, 0x1d, 0x55, 0x9b, 0xa, 0x8, 0xfa, 0x67, - 0x34, 0x9c, 0xad, 0x1b, 0xff, 00, 0x76, 0xff, 00, 0x97, - 0xf5, 0xf9, 0xd, 0x2b, 0xbb, 0x79, 0xdb, 0xf3, 0xff, 00, - 0x23, 0xd7, 0x5b, 0xc4, 0x5a, 0x1a, 0xea, 0xbf, 0xd9, 0x4d, - 0xac, 0xe9, 0xc3, 0x51, 0xdc, 0x17, 0xec, 0x86, 0xe9, 0x3c, - 0xec, 0x91, 0x9c, 0x6c, 0xce, 0x73, 0x8e, 0x7a, 0x55, 0x6d, - 0x5a, 0x49, 0x97, 0xc4, 0x3a, 0x32, 0x27, 0x89, 0x2d, 0xf4, - 0xf8, 0xd9, 0xa4, 0xdf, 0xa7, 0x49, 0x1c, 0x6c, 0xf7, 0xfc, - 0xe, 0x14, 0xb1, 0xdc, 0x36, 0xf5, 0xf9, 0x41, 0xeb, 0xcd, - 0x71, 0xfa, 0x6f, 0xc2, 0x9f, 0xd, 0xea, 0x1f, 0xd, 0xed, - 0x6c, 0x1a, 0xce, 0xdd, 0x75, 0x1b, 0x9b, 0x44, 0x94, 0xea, - 0x9e, 0x50, 0x69, 0xd6, 0x66, 0x1, 0xf7, 0xef, 0xce, 0xe2, - 0x37, 0x1e, 0x9b, 0xb1, 0x8e, 0x2a, 0xaf, 0x89, 0xad, 0xae, - 0x6c, 0xbe, 0x21, 0x7c, 0x31, 0xb5, 0xbc, 0xbc, 0xfb, 0x65, - 0xcc, 0x3f, 0x68, 0x8e, 0x4b, 0x92, 0x9b, 0xc, 0xac, 0x23, - 0x50, 0x58, 0x8c, 0x9c, 0x13, 0xd7, 0xad, 0x5d, 0xad, 0x25, - 0x17, 0xbd, 0xec, 0x4a, 0x77, 0x8b, 0x92, 0xda, 0xcd, 0x9e, - 0x91, 0xa9, 0xeb, 0x5a, 0x56, 0x8b, 0x1c, 0x72, 0x6a, 0xba, - 0x9d, 0x9d, 0x82, 0x48, 0x76, 0xa3, 0x5d, 0x4e, 0xb1, 0x6, - 0x3e, 0x80, 0xb1, 0x19, 0xa7, 0x69, 0xba, 0xb6, 0x9b, 0xac, - 0xdb, 0xb5, 0xc6, 0x97, 0xa8, 0x5a, 0x5f, 0x42, 0xad, 0xb1, - 0xa4, 0xb5, 0x99, 0x65, 0x50, 0xd8, 0x7, 0x4, 0xa9, 0x23, - 0x38, 0x23, 0x8f, 0x7a, 0xf2, 0xff, 00, 0x10, 0xdc, 0xf8, - 0x26, 0xd3, 0xe2, 0xe, 0xa1, 0x25, 0xe6, 0x8d, 0xab, 0x78, - 0xbf, 0x5b, 0x92, 0x14, 0x59, 0xac, 0xe0, 0xb2, 0x4b, 0xd4, - 0xb0, 0x8d, 0x71, 0x80, 0x10, 0x80, 0x17, 0x39, 0xcf, 0xf1, - 0x1c, 0xfa, 0x67, 0x9c, 0xdf, 0x1, 0x16, 0x83, 0xe3, 0x75, - 0xe8, 0xb7, 0xf0, 0xec, 0x9e, 0x1b, 0xb4, 0xbc, 0xd2, 0x3c, - 0xf1, 0xa7, 0x97, 0x51, 0xbc, 0x7, 0x1, 0x24, 0x68, 0xd7, - 0x88, 0xdb, 0x19, 0xf9, 0x3a, 0x83, 0x9f, 0x53, 0x4a, 0x1e, - 0xf7, 0xe3, 0xfd, 0x7e, 0x3, 0x96, 0x87, 0x4b, 0xe1, 0xbf, - 0x12, 0xeb, 0x1a, 0xae, 0x93, 0xe3, 0xb6, 0xbc, 0xd6, 0x5, - 0xb3, 0x69, 0xb7, 0xf7, 0x10, 0x5a, 0x5d, 0x1b, 0x74, 0x6f, - 0xb3, 0x22, 0xaf, 0xca, 0x76, 0x80, 0x37, 0xe3, 0xdf, 0x24, - 0xd7, 0x6b, 0xe1, 0xa9, 0x35, 0x19, 0x7c, 0x31, 0xa5, 0xc9, - 0xab, 0x96, 0xfe, 0xd1, 0x7b, 0x58, 0xda, 0xe7, 0x72, 0x5, - 0x3e, 0x61, 0x50, 0x5b, 0x20, 0x70, 0xe, 0x7b, 0xa, 0xe2, - 0x3e, 0x12, 0xff, 00, 0xc7, 0xff, 00, 0x8e, 0x3f, 0xec, - 0x60, 0x9f, 0xfa, 0x57, 0xa5, 0xd0, 0xbe, 0x15, 0xe6, 0x97, - 0xe4, 0x39, 0x7c, 0x4f, 0xd5, 0xfe, 0x65, 0x69, 0xf5, 0x1b, - 0x1b, 0x5b, 0xbb, 0x7b, 0x4b, 0x8b, 0xdb, 0x78, 0x6e, 0x6e, - 0x49, 0x10, 0x43, 0x24, 0xaa, 0xaf, 0x29, 0x1c, 0x9d, 0xaa, - 0x4e, 0x5b, 0x1e, 0xd5, 0x5f, 0x4d, 0xf1, 0x6, 0x8b, 0xac, - 0x4b, 0x24, 0x5a, 0x5e, 0xaf, 0x61, 0x7d, 0x24, 0x43, 0x32, - 0x25, 0xad, 0xca, 0x4a, 0x50, 0x7b, 0x85, 0x27, 0x15, 0xe6, - 0xff, 00, 0x14, 0xf4, 0x58, 0xbc, 0x43, 0xf1, 0x3, 0xc0, - 0xba, 0x54, 0xf2, 0x49, 0x1c, 0x17, 0x12, 0x5c, 0x89, 0x4c, - 0x6c, 0x55, 0x99, 0x2, 0xa9, 0x65, 0xc8, 0xe4, 0x6e, 00, - 0xaf, 0xd0, 0xd3, 0x3e, 0x27, 0x78, 0x6f, 0x46, 0xf0, 0x86, - 0x87, 0x61, 0xe2, 0xbd, 0x3, 0x4f, 0xb6, 0xd2, 0xf5, 0xd, - 0x26, 0xf2, 0x22, 0xaf, 0x67, 0x1a, 0xc5, 0xe6, 0xc6, 0xcc, - 0x15, 0x91, 0xc0, 0xc6, 0xec, 0x83, 0xdf, 0x9e, 0xbd, 0x89, - 0xa2, 0x3a, 0xda, 0xfd, 0x5d, 0xbf, 0x40, 0x92, 0xb6, 0x8b, - 0xb5, 0xcf, 0x54, 0xbe, 0xbf, 0xb3, 0xd3, 0x2d, 0x1e, 0xee, - 0xfe, 0xee, 0xb, 0x4b, 0x64, 0xc6, 0xf9, 0xa7, 0x90, 0x46, - 0x8b, 0x93, 0x81, 0x96, 0x3c, 0xe, 0x6a, 0x2d, 0x37, 0x57, - 0xd3, 0x35, 0x98, 0x1a, 0x7d, 0x2f, 0x51, 0xb4, 0xbe, 0x85, - 0x1b, 0x63, 0x49, 0x6b, 0x3a, 0xca, 0xa1, 0xba, 0xe0, 0x95, - 0x27, 0x9e, 0x45, 0x79, 0xd5, 0xde, 0x9f, 0x6f, 0xe3, 0x5f, - 0x8c, 0xf7, 0x36, 0x1a, 0xcc, 0x62, 0xe7, 0x4b, 0xd0, 0xec, - 0x22, 0x9a, 0x1b, 0x29, 0x72, 0x63, 0x79, 0xa4, 0x20, 0xef, - 0x65, 0xe8, 0xd8, 0x7, 0x18, 0x39, 0x1c, 0x7d, 0x6a, 0x3f, - 0x12, 0xe8, 0xd6, 0x1e, 0x8, 0xf1, 0xff, 00, 0x84, 0xf5, - 0x8f, 0xf, 0xda, 0xc5, 0xa7, 0xae, 0xa3, 0x79, 0xfd, 0x9d, - 0x7b, 0x6d, 0x6a, 0x9b, 0x22, 0x99, 0x18, 0x7c, 0xa4, 0xa2, - 0xf0, 0x8, 0x39, 0x3d, 0x3d, 0x3d, 0x28, 0x8e, 0xb6, 0xbf, - 0x5f, 0xf3, 0xb7, 0xe6, 0x4b, 0x7b, 0xdb, 0xa6, 0xbf, 0x85, - 0xff, 00, 0x23, 0xd1, 0x2e, 0xbc, 0x45, 0xa2, 0x58, 0x9b, - 0x91, 0x77, 0xac, 0x69, 0xf6, 0xe6, 0xd4, 0xa2, 0xdc, 0x9, - 0x6e, 0x91, 0x3c, 0xa2, 0xdc, 0xa8, 0x6c, 0x9f, 0x97, 0x38, - 0xe3, 0x3d, 0x6b, 0x8b, 0xd6, 0xfe, 0x27, 0x58, 0x59, 0x78, - 0xf3, 0xc3, 0xda, 0x55, 0xae, 0xb5, 0xa3, 0x36, 0x93, 0x74, - 0x92, 0xc9, 0x7b, 0x73, 0xf6, 0x84, 0x3e, 0x5e, 0x10, 0x98, - 0xc1, 0x7d, 0xdb, 0x54, 0x31, 0x20, 0xf3, 0xd7, 0x8c, 0x1a, - 0xc6, 0xd2, 0x7c, 0x3d, 0xa5, 0xeb, 0xdf, 0x1c, 0xfc, 0x62, - 0xda, 0xad, 0x9c, 0x37, 0xb1, 0x5b, 0x43, 0x6c, 0x52, 0xb, - 0x84, 0x12, 0x47, 0xb9, 0xa3, 0x3, 0x71, 0x53, 0xc1, 0x20, - 0x2, 0x1, 0xed, 0x93, 0x49, 0xe2, 0x9f, 0xd, 0x68, 0x29, - 0xf1, 0x97, 0xc1, 0x56, 0x43, 0x45, 0xd3, 0xfe, 0xcb, 0x35, - 0xbd, 0xc2, 0xcd, 0x9, 0xb6, 0x42, 0xb2, 0x4, 0x8b, 0x9, - 0xb8, 0x63, 0xe6, 0xda, 00, 0xc6, 0x7a, 0x60, 0x51, 0xd, - 0x5c, 0x5f, 0x7f, 0xf2, 0x7f, 0xe4, 0x54, 0xb4, 0x52, 0x5d, - 0xbf, 0xe0, 0x1e, 0x9f, 0xa8, 0xf8, 0x83, 0x45, 0xd2, 0x16, - 0x16, 0xd4, 0xf5, 0x7b, 0xb, 0x25, 0x9c, 0x13, 0x11, 0xb9, - 0xb9, 0x48, 0xc4, 0x80, 0x63, 0x3b, 0x77, 0x11, 0x9e, 0xa3, - 0xa7, 0xad, 0x5c, 0xb6, 0xba, 0xb7, 0xbd, 0xb6, 0x8e, 0xe6, - 0xd6, 0x78, 0xa7, 0xb7, 0x95, 0x43, 0x47, 0x2c, 0x4e, 0x19, - 0x5c, 0x1e, 0x84, 0x11, 0xc1, 0x15, 0xe2, 0xba, 0xe5, 0xb2, - 0x78, 0x53, 0xe2, 0xe, 0xbd, 0xac, 0x78, 0xab, 0xc1, 0x93, - 0x78, 0x83, 0x44, 0xbb, 0x8d, 0x1e, 0xd6, 0xf2, 0x2b, 0x54, - 0xb9, 0x5b, 0x38, 0xe3, 0x51, 0x94, 0x28, 0xdf, 0x2a, 0xe, - 0x7a, 0x92, 0xbf, 0x77, 0x8c, 0xe4, 0xe3, 0xae, 0xf8, 0x5e, - 0xfe, 0xd, 0x96, 0x3d, 0x5a, 0xe7, 0xc1, 0xba, 0x8c, 0xef, - 0x6f, 0x75, 0x32, 0xcd, 0x3e, 0x9f, 0x27, 0xca, 0xb6, 0x8e, - 0x47, 0xf0, 0x21, 0x50, 0x54, 0x1e, 0x9d, 0x4a, 0xfc, 0xb8, - 0x7, 0x8a, 0x23, 0xaa, 0xb8, 0x9e, 0x8e, 0xc7, 0x5f, 0xaf, - 0x6b, 0x56, 0x7e, 0x1f, 0xd1, 0xae, 0x75, 0x1b, 0xdb, 0x9b, - 0x78, 0x12, 0x24, 0x62, 0x86, 0x79, 0x2, 0x7, 0x7c, 0x12, - 0x14, 0x13, 0xdc, 0xe3, 0xa7, 0x5a, 0xe1, 0x3e, 0x16, 0x6b, - 0x3a, 0xe7, 0x89, 0xe2, 0x5d, 0x67, 0x52, 0xf1, 0x95, 0x95, - 0xf0, 0x96, 0x37, 0x69, 0x34, 0x4b, 0x6b, 0x68, 0x54, 0xda, - 0x12, 0xe4, 0x26, 0xe7, 0x7, 0x7f, 0x40, 0x70, 0x18, 0x77, - 0xea, 0x71, 0x93, 0xd8, 0x78, 0xce, 0xc2, 0xcf, 0x50, 0xf0, - 0x7e, 0xab, 0x1d, 0xed, 0xa4, 0x17, 0x28, 0x96, 0xb2, 0xc8, - 0x8b, 0x34, 0x61, 0xc2, 0xb8, 0x43, 0x86, 00, 0xf4, 0x23, - 0xb1, 0xaf, 0x20, 0x8d, 0x53, 0x47, 0xf8, 0x1, 0xa3, 0xc9, - 0xa4, 0x41, 0x5, 0x8e, 0xa3, 0xad, 0x49, 0x15, 0x8c, 0xf7, - 0xb0, 0x44, 0x16, 0x56, 0x56, 0x91, 0xb2, 0x59, 0x80, 0xc9, - 0xe0, 0x11, 0xc9, 0xef, 0x49, 0x37, 0x77, 0xf2, 0x4b, 0xe7, - 0x70, 0x7d, 0x3e, 0x6f, 0xee, 0xb1, 0xec, 0xf0, 0xf8, 0x9b, - 0x40, 0xb8, 0xd4, 0xff, 00, 0xb3, 0x21, 0xd7, 0x34, 0xd9, - 0x2f, 0xf7, 0x94, 0xfb, 0x2a, 0x5d, 0xc6, 0x65, 0xdc, 0x33, - 0x91, 0xb0, 0x1c, 0xe4, 0x60, 0xe4, 0x63, 0xb5, 0x5d, 0xba, - 0xbf, 0xb3, 0xb0, 0xf2, 0x7e, 0xd9, 0x77, 0x5, 0xbf, 0x9f, - 0x20, 0x86, 0x2f, 0x3a, 0x40, 0x9e, 0x63, 0x9e, 0x8a, 0xb9, - 0x3c, 0xb1, 0xec, 0x7, 0x35, 0xc3, 0xeb, 0x3f, 0xa, 0xfc, - 0x24, 0xbe, 0xb, 0xb8, 0xd3, 0xec, 0xf4, 0x8b, 0x5b, 0x69, - 0xed, 0xed, 0xd9, 0xa0, 0xbd, 0x48, 0xc0, 0x9d, 0x64, 0x50, - 0x4a, 0xb9, 0x90, 0x7c, 0xc7, 0x9e, 0x70, 0x4e, 0x2b, 0x84, - 0xf1, 0x36, 0xa3, 0x71, 0xe2, 0xbf, 0x83, 0xfe, 0x4, 0xb8, - 0xbe, 0x9a, 0x5f, 0xb4, 0x5d, 0x6a, 0xb0, 0x41, 0x2c, 0xc1, - 0x88, 0x76, 0x23, 0x7a, 0x17, 0xcf, 0xa9, 0xc6, 0x73, 0x4f, - 0xc9, 0x77, 0x5f, 0x88, 0x79, 0xbe, 0xcf, 0xf0, 0x57, 0x3d, - 0xb2, 0xc3, 0x5c, 0xd2, 0x35, 0x59, 0xe6, 0x83, 0x4e, 0xd5, - 0x2c, 0x6f, 0x25, 0x83, 0x89, 0xa3, 0xb7, 0xb8, 0x49, 0x1a, - 0x3e, 0x71, 0xf3, 0x5, 0x27, 0x1c, 0x83, 0xd7, 0xd2, 0x9f, - 0xaa, 0x6a, 0x96, 0x3a, 0x26, 0x99, 0x71, 0xa9, 0x6a, 0x57, - 0x29, 0x6d, 0x67, 0x6e, 0xbb, 0xe5, 0x95, 0xfa, 0x28, 0xfc, - 0x39, 0x27, 0xb0, 0x3, 0x92, 0x78, 0xa8, 0x34, 0x8f, 0xe, - 0xe8, 0xba, 0x2, 0xb8, 0xd2, 0x34, 0xbb, 0x3b, 0x1f, 0x31, - 0x55, 0x64, 0x36, 0xf0, 0xaa, 0x17, 0xb, 0x9c, 0x6e, 0xc0, - 0xe4, 0xf2, 0x79, 0x3c, 0xf3, 0x57, 0x6e, 0xad, 0x2d, 0xaf, - 0xad, 0xda, 0xde, 0xf2, 0xde, 0x2b, 0x88, 0x18, 0x82, 0xd1, - 0xcc, 0x81, 0xd4, 0x90, 0x72, 0x32, 0xf, 0x1c, 0x10, 0xf, - 0xe1, 0x43, 0xf2, 0x5, 0xe6, 0x79, 0xa7, 0x84, 0x3e, 0x22, - 0xea, 0x3e, 0x2e, 0xf8, 0x9b, 0x3d, 0x94, 0x76, 0xd3, 0x5a, - 0x68, 0x3f, 0xd9, 0x6d, 0x73, 0x6b, 0x1c, 0xf1, 0x5, 0x7b, - 0x8f, 0xde, 0x2a, 0x89, 0xb2, 0x46, 0x40, 0x39, 0x60, 0x6, - 0x71, 0x8e, 0x6b, 0x6f, 0xc7, 0xfe, 0x26, 0xd5, 0x74, 0xbb, - 0x8d, 0x1b, 0x41, 0xd0, 0x3e, 0xce, 0x9a, 0xbe, 0xb5, 0x33, - 0xc3, 0x15, 0xc5, 0xc0, 0x25, 0x20, 0x55, 0x19, 0x67, 0xc7, - 0x72, 0x32, 0x30, 0xf, 0xe4, 0x7a, 0x56, 0x74, 0x5f, 0xf2, - 0x71, 0x53, 0xff, 00, 0xd8, 0xb8, 0x3f, 0xf4, 0x78, 0xaa, - 0xff, 00, 0x14, 0x96, 0x6d, 0x73, 0x5b, 0xf0, 0xf7, 0x85, - 0xf4, 0x98, 0x42, 0x6b, 0x92, 0xca, 0x6f, 0x20, 0xd4, 0x4c, - 0x8c, 0xbf, 0x60, 0x44, 0xfb, 0xce, 0x36, 0xf5, 0x27, 0x91, - 0x83, 0xc7, 0xe8, 0x40, 0xed, 0x68, 0x2f, 0xeb, 0x77, 0xfa, - 0x7, 0x59, 0x7f, 0x5d, 0x17, 0xea, 0x3a, 0x4d, 0x57, 0xc5, - 0xde, 0x5, 0xf1, 0x1e, 0x8b, 0x6f, 0xe2, 0xd, 0x72, 0x1f, - 0x10, 0x69, 0x5a, 0xc5, 0xca, 0xd9, 0xf9, 0xbf, 0x62, 0x4b, - 0x69, 0x6d, 0xa5, 0x39, 0xdb, 0x80, 0x87, 0xc, 0xa7, 0xbe, - 0x7d, 0x38, 0xc7, 0x7f, 0x4d, 0xaf, 0x17, 0xf1, 0x16, 0x9d, - 0xaf, 0xf8, 0x4f, 0xc4, 0xda, 0x7, 0x88, 0xfc, 0x5d, 0xac, - 0xf, 0x13, 0xe9, 0x30, 0x5c, 0x8, 0x47, 0xee, 0x16, 0xd4, - 0xd9, 0xca, 0xe7, 0xb, 0x28, 0x8d, 0xe, 0xd7, 0xc7, 0x3d, - 0x79, 0xfd, 0xd, 0x7b, 0x45, 0x35, 0xac, 0x6f, 0xe6, 0xff, - 00, 0x4f, 0xeb, 0xe6, 0x27, 0xf1, 0x58, 0xa3, 0xa9, 0xeb, - 0x5a, 0x56, 0x8b, 0x1c, 0x72, 0x6a, 0xba, 0x9d, 0x9d, 0x82, - 0x48, 0x76, 0xa3, 0x5d, 0x4e, 0xb1, 0x6, 0x3e, 0x80, 0xb1, - 0x19, 0xa7, 0x69, 0xba, 0xb6, 0x9b, 0xac, 0xdb, 0xb5, 0xc6, - 0x97, 0xa8, 0x5a, 0x5f, 0x42, 0xad, 0xb1, 0xa4, 0xb5, 0x99, - 0x65, 0x50, 0xd8, 0x7, 0x4, 0xa9, 0x23, 0x38, 0x23, 0x8f, - 0x7a, 0xf2, 0xff, 00, 0x10, 0xdc, 0xf8, 0x26, 0xd3, 0xe2, - 0xe, 0xa1, 0x25, 0xe6, 0x8d, 0xab, 0x78, 0xbf, 0x5b, 0x92, - 0x14, 0x59, 0xac, 0xe0, 0xb2, 0x4b, 0xd4, 0xb0, 0x8d, 0x71, - 0x80, 0x10, 0x80, 0x17, 0x39, 0xcf, 0xf1, 0x1c, 0xfa, 0x67, - 0x9c, 0xdf, 0x1, 0x16, 0x83, 0xe3, 0x75, 0xe8, 0xb7, 0xf0, - 0xec, 0x9e, 0x1b, 0xb4, 0xbc, 0xd2, 0x3c, 0xf1, 0xa7, 0x97, - 0x51, 0xbc, 0x7, 0x1, 0x24, 0x68, 0xd7, 0x88, 0xdb, 0x19, - 0xf9, 0x3a, 0x83, 0x9f, 0x53, 0x4a, 0x1e, 0xf7, 0xe3, 0xfd, - 0x7e, 0x3, 0x96, 0x87, 0xac, 0x5c, 0x78, 0xa7, 0xc3, 0xd6, - 0x91, 0xb4, 0x97, 0x3a, 0xf6, 0x97, 0xc, 0x69, 0x33, 0x40, - 0xcd, 0x25, 0xe4, 0x6a, 0x16, 0x55, 0xfb, 0xc8, 0x49, 0x3f, - 0x78, 0x64, 0x64, 0x75, 0x15, 0x26, 0xa3, 0xe2, 0x1d, 0x13, - 0x48, 0x10, 0x9d, 0x4f, 0x58, 0xd3, 0xec, 0x84, 0xe0, 0xb4, - 0x5f, 0x69, 0xb9, 0x48, 0xfc, 0xc0, 0x31, 0x92, 0xbb, 0x88, - 0xcf, 0x51, 0xd3, 0xd6, 0xbc, 0xb7, 0xe1, 0xcf, 0x85, 0x74, - 0x5d, 0x6f, 0x5e, 0xf1, 0xbd, 0xe6, 0xad, 0xa7, 0x5b, 0x5f, - 0xb2, 0x6b, 0x33, 0x43, 0x1a, 0x5d, 0x46, 0x24, 0x58, 0xc6, - 0x72, 0x4a, 0x83, 0xd0, 0x9c, 0x8c, 0x91, 0xcf, 0x2, 0xad, - 0x7c, 0x39, 0xf0, 0xfe, 0x93, 0xe3, 0x8, 0xb5, 0xdf, 0x13, - 0x78, 0x82, 0xc2, 0xdb, 0x53, 0xbc, 0xbc, 0xd4, 0x65, 0x85, - 0x5, 0xdc, 0x4b, 0x28, 0x82, 0x14, 0xe1, 0x51, 0x41, 0xce, - 0xdc, 0x7b, 0x60, 0xf4, 0xa4, 0xb5, 0xb7, 0xa5, 0xff, 00, - 0x2f, 0xf3, 0x1c, 0xac, 0x9b, 0xf5, 0xb7, 0xe7, 0xfe, 0x47, - 0xa0, 0x78, 0xa7, 0x51, 0x9a, 0xc3, 0xc1, 0x7a, 0xbe, 0xa5, - 0xa7, 0xce, 0xab, 0x34, 0x36, 0x32, 0xcf, 0x4, 0xaa, 0x3, - 00, 0x42, 0x12, 0xac, 0x33, 0x90, 0x7b, 0x7b, 0x56, 0x47, - 0x86, 0x3c, 0x65, 0x60, 0x7c, 0x1d, 0xa0, 0xdd, 0x78, 0x87, - 0x5d, 0xd3, 0xe0, 0xd4, 0x6f, 0x6c, 0xe3, 0x99, 0xbe, 0xd3, - 0x3c, 0x70, 0xb4, 0xa4, 0xf5, 0x21, 0x78, 0xef, 0xe8, 0x2b, - 0x2e, 0xe3, 0xc2, 0xaf, 0xe0, 0xef, 0x85, 0x3e, 0x28, 0xd2, - 0xd7, 0x51, 0x6b, 0xbb, 0x2f, 0xb3, 0xdd, 0x4b, 0x69, 0x1b, - 0xc6, 0x54, 0xdb, 0x46, 0xc8, 0x48, 0x8f, 0x25, 0x8e, 0xe0, - 0xe, 0x79, 0xe3, 0xad, 0x66, 0x78, 0x23, 0xe1, 0xe7, 0x85, - 0xef, 0x3e, 0x13, 0xd9, 0xcb, 0x7d, 0xa4, 0xdb, 0xdd, 0xdd, - 0x5f, 0x59, 0x79, 0xd2, 0xdd, 0xce, 0x81, 0xa6, 0x52, 0x57, - 0x80, 0x8e, 0x79, 0x40, 0xa0, 00, 00, 0xc6, 0x31, 0xf5, - 0xa1, 0xb4, 0xb9, 0x9f, 0x45, 0x6f, 0xd4, 0x2d, 0x7e, 0x55, - 0xd7, 0x5f, 0xd0, 0xf4, 0xf, 0x14, 0x49, 0x2c, 0x7e, 0x1d, - 0xb9, 0x78, 0x35, 0xf8, 0x34, 0x17, 0x1b, 0x71, 0xa8, 0xcf, - 0x1a, 0x3a, 0x45, 0xf3, 0xe, 0xa1, 0xc8, 0x53, 0x9e, 0x9c, - 0x9e, 0xf5, 0xcb, 0xf8, 0xeb, 0xc7, 0xa3, 0xc2, 0xb7, 0x3e, - 0x1c, 0xb2, 0x83, 0x52, 0xd3, 0x4c, 0xb7, 0xb7, 0xb0, 0xc7, - 0x7a, 0xd3, 0x3a, 0xee, 0x4b, 0x72, 0x7e, 0x69, 0x40, 0xdc, - 0x2, 0x83, 0x83, 0xf3, 0x1c, 0x8e, 0xb5, 0xc0, 0xcd, 0x79, - 0x3d, 0xef, 0xec, 0xa2, 0x1e, 0xe2, 0x46, 0x91, 0xe3, 0xb, - 0x10, 0x66, 0x39, 0x3b, 0x56, 0xe4, 0x5, 0x1f, 0x80, 00, - 0x7e, 0x15, 0xbb, 0xf1, 0x37, 0x4a, 0xd3, 0xae, 0x26, 0xf8, - 0x7f, 0x3c, 0xd6, 0x16, 0xb2, 0xcb, 0x3e, 0xa9, 0x6b, 0x6f, - 0x34, 0x8f, 0xa, 0xb3, 0x49, 0x16, 0x7, 0xc8, 0xc4, 0x8e, - 0x57, 0x93, 0xc1, 0xe3, 0x9a, 0xbe, 0x5b, 0x4f, 0x97, 0xfb, - 0xc9, 0x7d, 0xe4, 0xdf, 0xdd, 0x4f, 0xc9, 0xfe, 0x7, 0xaa, - 0x49, 0xac, 0xe9, 0x70, 0xe9, 0x63, 0x54, 0x97, 0x52, 0xb3, - 0x4d, 0x38, 0xa8, 0x61, 0x76, 0xd3, 0xa8, 0x88, 0x83, 0xc0, - 0x3b, 0xf3, 0x8c, 0x1c, 0x8e, 0xf4, 0xba, 0x6e, 0xad, 0xa6, - 0xeb, 0x36, 0xed, 0x71, 0xa5, 0xea, 0x16, 0x97, 0xd0, 0xab, - 0x6c, 0x69, 0x2d, 0x66, 0x59, 0x54, 0x36, 0x1, 0xc1, 0x2a, - 0x48, 0xce, 0x8, 0xe3, 0xde, 0xbc, 0x67, 0xc4, 0x77, 0xda, - 0x73, 0x7c, 0x56, 0x97, 0x4b, 0xbf, 0xf0, 0xc6, 0xa9, 0xac, - 0x68, 0xba, 0x15, 0x9c, 0x4b, 0x69, 0xa5, 0xe9, 0x56, 0x22, - 0x68, 0x63, 0x91, 0xc0, 0x6d, 0xef, 0x18, 0x21, 0x71, 0x83, - 0x80, 0x8, 0xc7, 0x1d, 0x38, 0xa9, 0x2c, 0xee, 0x51, 0x3e, - 0x22, 0x68, 0x3a, 0x8f, 0x85, 0x7c, 0xb, 0xe2, 0x3d, 0xa, - 0x39, 0x24, 0x36, 0xda, 0x9a, 0xcb, 0xa5, 0x7d, 0x9e, 0xde, - 0x48, 0x5b, 0xa1, 0x21, 0x49, 0x50, 0x54, 0xf3, 0x9c, 0xf, - 0xad, 0x4c, 0x7d, 0xeb, 0x79, 0x8e, 0x5e, 0xef, 0xcb, 0xfe, - 0x1c, 0xf6, 0x1d, 0x4b, 0x58, 0xd3, 0x34, 0x68, 0x12, 0x7d, - 0x53, 0x51, 0xb4, 0xb1, 0x89, 0xdb, 0x62, 0xc9, 0x75, 0x3a, - 0xc4, 0xac, 0xd8, 0xce, 0x1, 0x62, 0x32, 0x70, 0xd, 0x41, - 0x7f, 0xaf, 0xe9, 0xb6, 0x9e, 0x1e, 0x97, 0x59, 0x1a, 0x8d, - 0x90, 0xb3, 0x11, 0x17, 0x8e, 0xe5, 0xa7, 0x5f, 0x25, 0xcf, - 0xf0, 0xe1, 0xb3, 0x83, 0x93, 0x81, 0xd7, 0x9a, 0xf3, 0xef, - 0xf, 0xe9, 0x16, 0x1e, 0x33, 0xf8, 0x97, 0xe2, 0xed, 0x47, - 0x5e, 0xb5, 0x87, 0x50, 0x8f, 0x4c, 0x99, 0x2c, 0x2c, 0xed, - 0xae, 0x90, 0x49, 0x1c, 0x4b, 0x82, 0x58, 0x84, 0x39, 0x19, - 0x24, 0x67, 0x38, 0xf5, 0xad, 0xab, 0x5f, 0x87, 0xf6, 0x1a, - 0x15, 0x8f, 0x89, 0xa1, 0x56, 0x82, 0xe3, 0x43, 0xbf, 0xcd, - 0xcc, 0x3a, 0x54, 0xb6, 0xc1, 0xa3, 0xb5, 0x90, 0x29, 0x24, - 0xa9, 0x24, 0x82, 0x9, 00, 0x81, 0x81, 0x8c, 0xc, 0x74, - 0xa8, 0x93, 0xf7, 0x2f, 0xe5, 0x7f, 0xeb, 0xe4, 0x52, 0xf8, - 0xad, 0xe7, 0x6f, 0xeb, 0xe6, 0x3f, 0xe1, 0xd7, 0x8e, 0xa1, - 0xf1, 0x47, 0x82, 0xe3, 0xd5, 0x75, 0x3d, 0x47, 0x4e, 0x4b, - 0xf8, 0xc4, 0x92, 0xde, 0x45, 0x1c, 0xaa, 0xa2, 0xd9, 0x3, - 0xb0, 0x52, 0xca, 0x49, 0x2a, 0xbb, 0x40, 0xe5, 0xbe, 0xb9, - 0xae, 0xca, 0xde, 0xee, 0xda, 0xee, 0xd1, 0x2e, 0xed, 0xae, - 0x22, 0x9a, 0xda, 0x45, 0xde, 0x93, 0x46, 0xe1, 0x91, 0x97, - 0xd4, 0x30, 0xe0, 0x8f, 0x7a, 0xf1, 0xbf, 0x4, 0xe9, 0xd6, - 0x30, 0x7e, 0xce, 0x57, 0xf7, 0xd0, 0xd9, 0xdb, 0xc7, 0x77, - 0x71, 0xa7, 0x5e, 0x9, 0xa7, 0x48, 0x94, 0x49, 0x28, 0x56, - 0x90, 0xd, 0xcc, 0x6, 0x4e, 0x7, 0x4c, 0xd7, 0x75, 0xe0, - 0x1f, 0xf9, 0x24, 0xda, 0x27, 0xfd, 0x83, 0x17, 0xff, 00, - 0x41, 0xad, 0x2a, 0xfb, 0xae, 0x5e, 0x5f, 0xf0, 0x7f, 0xc8, - 0x98, 0x2b, 0xdb, 0xcd, 0xbf, 0xd3, 0xfc, 0xcd, 0xf8, 0xf5, - 0xfd, 0x1a, 0x5b, 0x4b, 0x6b, 0xb8, 0xf5, 0x7b, 0x7, 0xb6, - 0xba, 0x94, 0x43, 0x6f, 0x32, 0xdc, 0xa1, 0x49, 0x64, 0x27, - 0x1, 0x15, 0xb3, 0x86, 0x6c, 0x82, 0x30, 0x39, 0xe2, 0x9d, - 0x61, 0xae, 0x69, 0x1a, 0xac, 0xf3, 0x41, 0xa7, 0x6a, 0x96, - 0x37, 0x92, 0xc1, 0xc4, 0xd1, 0xdb, 0xdc, 0x24, 0x8d, 0x1f, - 0x38, 0xf9, 0x82, 0x93, 0x8e, 0x41, 0xeb, 0xe9, 0x5f, 0x3c, - 0xad, 0xb8, 0xbb, 0xf8, 0x17, 0xe0, 0x9b, 0x66, 0x77, 0x41, - 0x36, 0xbe, 0x23, 0x2c, 0x87, 0xc, 0x1, 0x92, 0x41, 0x90, - 0x7b, 0x1e, 0x6b, 0xd0, 0x7e, 0x27, 0x5a, 0xd8, 0xf8, 0x2b, - 0xc0, 0x6f, 0xf, 0x86, 0xf4, 0xd8, 0xf4, 0xe9, 0x75, 0x4b, - 0x98, 0x2c, 0x25, 0x7d, 0x3a, 00, 0xb2, 0xba, 0x7c, 0xc7, - 0x8c, 0x63, 0x73, 0x10, 0x18, 0xc, 0xf2, 0x77, 0x51, 0x35, - 0xcb, 0x7f, 0x5b, 0x7e, 0x5f, 0xe6, 0xb, 0x5b, 0x7d, 0xff, - 00, 0x8b, 0xff, 00, 0x23, 0xd0, 0x21, 0xf1, 0x2e, 0x83, - 0x73, 0xa9, 0x9d, 0x32, 0xd, 0x6f, 0x4d, 0x97, 0x50, 0xc, - 0xc8, 0x6d, 0x52, 0xed, 0x1a, 0x5d, 0xcb, 0x9d, 0xc3, 0x60, - 0x39, 0xc8, 0xc1, 0xc8, 0xc7, 0x18, 0xad, 0x9, 0xee, 0x21, - 0xb5, 0xb7, 0x92, 0xe2, 0xe2, 0x68, 0xe1, 0x82, 0x25, 0x2f, - 0x24, 0x92, 0x30, 0x55, 0x45, 0x1c, 0x92, 0x49, 0xe0, 0xa, - 0xf0, 0xbd, 0x45, 0x3c, 0x27, 0x3f, 0x86, 0x24, 0xd2, 0xac, - 0xbe, 0x14, 0xf8, 0xb2, 0xda, 0xe1, 0x61, 0xdb, 0x6f, 0x78, - 0x9a, 0x20, 0x59, 0xd2, 0x40, 0x3e, 0x57, 0x32, 0x86, 0xdc, - 0x79, 0xc1, 0x39, 0x27, 0x35, 0xa7, 0xe2, 0x4b, 0x1f, 0x15, - 0x78, 0x8f, 0xe1, 0x67, 0x85, 0xef, 0x6e, 0x74, 0x8b, 0xab, - 0xfb, 0xab, 0x29, 0xd2, 0x7d, 0x53, 0x4a, 0x98, 0x18, 0xa4, - 0xba, 0x54, 0xc8, 0xe5, 0x71, 0x92, 0x4e, 0x33, 0x8c, 0x12, - 0x77, 0x67, 0x7, 0xa5, 0x27, 0xa2, 0xfb, 0xbf, 0x1e, 0xbf, - 0x20, 0x5b, 0x9e, 0xa9, 0xa6, 0x78, 0x83, 0x45, 0xd6, 0x9e, - 0x44, 0xd2, 0xb5, 0x7b, 0xb, 0xf6, 0x88, 0x3, 0x20, 0xb5, - 0xb9, 0x49, 0x4a, 0x3, 0xd3, 0x3b, 0x49, 0xc5, 0x68, 0xd7, - 0x8a, 0xe9, 0x7a, 0xb7, 0xc3, 0x6d, 0x5f, 0xc6, 0x3a, 0x5a, - 0x47, 0xa7, 0x5e, 0x78, 0x3f, 0xc4, 0x56, 0x17, 0xb, 0xe5, - 0x5b, 0x9b, 0x34, 0xb3, 0x33, 0x33, 0x2f, 0x31, 0xbe, 0xd5, - 0x2a, 0x54, 0x8e, 0x3e, 0x6d, 0xa4, 0xee, 0xc0, 0xeb, 0x5e, - 0xd5, 0x4e, 0xda, 0x5c, 0x57, 0xd4, 0x28, 0xa2, 0x8a, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa4, 0x6e, 0x94, 0x1, - 0x14, 0xa7, 0x1c, 0x7a, 0x57, 0x27, 0x72, 0xe, 0xa5, 0xe3, - 0x6b, 0x58, 0x3, 0x7e, 0xee, 0xd1, 0x37, 0xb7, 0xfb, 0xc6, - 0xba, 0x79, 0x9c, 0x2a, 0xb3, 0x13, 0xc0, 0x19, 0xae, 0x73, - 0xc1, 0xea, 0xd7, 0x97, 0x3a, 0x86, 0xab, 0x22, 0xb0, 0xf3, - 0xa5, 0x2a, 0x9b, 0x87, 0x38, 0x1c, 0x7f, 0x4a, 0xca, 0xa6, - 0xae, 0x31, 0xfe, 0xb4, 0x30, 0xab, 0xef, 0x4a, 0x30, 0xf3, - 0xbf, 0xdc, 0x75, 0x9b, 0x94, 0x60, 0x12, 0x1, 0x3d, 0xb3, - 0x5e, 0x4d, 0xf1, 0xcf, 0xc4, 0x3a, 0xae, 0x9d, 0xa2, 0xdb, - 0x69, 0xfa, 0x52, 0xca, 0x1e, 0xe5, 0xff, 00, 0x78, 0xd1, - 0xae, 0x7e, 0x50, 0x3a, 0x7e, 0xb5, 0xcf, 0xff, 00, 0xc2, - 0x49, 0xaa, 0xf8, 0x8b, 0xe3, 0xaa, 0xd8, 0x41, 0xa8, 0x4b, - 0xe, 0x9f, 0x6b, 0x26, 0x3c, 0xb4, 0x7c, 0x2, 0x7, 0xad, - 0x77, 0x10, 0xfc, 0x49, 0xb2, 0xd4, 0x3e, 0x20, 0x1f, 0xa, - 0xdb, 0xe9, 0xde, 0x79, 0x8c, 0x90, 0xf7, 0xd, 0x8c, 0xc, - 0xa, 0xd4, 0xdc, 0xf9, 0x72, 0xc2, 0xe3, 0x5e, 0xd2, 0x6e, - 0x9a, 0x7b, 0x2f, 0xb5, 0x41, 0x29, 0xea, 0x54, 0x11, 0x5e, - 0x8d, 0xf0, 0xe3, 0xc5, 0x5e, 0x34, 0xd7, 0x3c, 0x67, 0x61, - 0x65, 0x3e, 0xa3, 0x76, 0xf6, 0xc1, 0xb7, 0x48, 0xaf, 0x9c, - 0x15, 0x1d, 0x8d, 0x7d, 0x2c, 0xda, 0x65, 0x8b, 0x92, 0x5a, - 0xd2, 0x12, 0x4f, 0x5f, 0x90, 0x52, 0x5b, 0xe9, 0x96, 0x16, - 0x72, 0x19, 0x2d, 0xac, 0xe0, 0x85, 0xc8, 0xc1, 0x68, 0xe3, - 0xa, 0x4f, 0xe5, 0x40, 0x14, 0x7c, 0x41, 0x36, 0xcb, 0x44, - 0x88, 0x75, 0x63, 0xfc, 0xab, 0x9a, 0xae, 0xee, 0x48, 0x63, - 0x94, 0x62, 0x44, 0x56, 0xfa, 0x8c, 0xd4, 0x46, 0xc6, 0xd4, - 0x8c, 0x79, 0x11, 0xff, 00, 0xdf, 0x35, 0xe7, 0x62, 0x70, - 0x53, 0xad, 0x3e, 0x7e, 0x63, 0xc9, 0xc5, 0xe5, 0xd3, 0xaf, - 0x53, 0x9d, 0x48, 0xa1, 0xe1, 0xf8, 0x7c, 0xbb, 0x23, 0x21, - 0x1c, 0xb9, 0xad, 0x7a, 0x6a, 0x22, 0xc6, 0x81, 0x50, 00, - 0xa3, 0xa0, 0x14, 0xea, 0xed, 0xa3, 0x4f, 0xd9, 0xc1, 0x43, - 0xb1, 0xe8, 0xd0, 0xa5, 0xec, 0xa9, 0xa8, 0x76, 0x38, 0xfd, - 0x63, 0xfe, 0x42, 0x52, 0x55, 0x25, 0x3f, 0x3a, 0xfd, 0x6b, - 0xb0, 0x9f, 0x4b, 0xb5, 0xb9, 0x94, 0xc9, 0x22, 0x65, 0x8f, - 0x53, 0x9a, 0x8b, 0xfb, 0xe, 0xcb, 0x39, 0xd8, 0x7f, 0x3a, - 0xf2, 0xaa, 0xe0, 0x2a, 0xca, 0x6e, 0x4a, 0xdb, 0x9e, 0x2d, - 0x6c, 0xae, 0xb4, 0xaa, 0x39, 0xa6, 0xb5, 0x65, 0xeb, 0x73, - 0x9b, 0x78, 0xcf, 0xfb, 0x22, 0xa4, 0xa4, 0x55, 0x8, 0xa1, - 0x47, 0x40, 0x30, 0x29, 0x6b, 0xd8, 0x4a, 0xca, 0xc7, 0xbd, - 0x15, 0x64, 0x91, 0xcf, 0xf8, 0x8e, 0x6e, 0x62, 0x84, 0x7f, - 0xbc, 0x6b, 0x6, 0xba, 0xab, 0xdd, 0x19, 0x2f, 0x67, 0x32, - 0xb4, 0xac, 0xe, 0x31, 0x8f, 0x4a, 0xac, 0x7c, 0x38, 0xbc, - 0x62, 0x63, 0x5e, 0x36, 0x27, 0xb, 0x5a, 0xa5, 0x57, 0x24, - 0x8f, 0x3, 0x19, 0x82, 0xc4, 0x55, 0xad, 0x29, 0xa5, 0xa1, - 0x73, 0x45, 0x87, 0xca, 0xd3, 0xd0, 0xf7, 0x6e, 0x6b, 0x46, - 0x99, 0x14, 0x62, 0x28, 0x96, 0x35, 0xe8, 0xa3, 0x14, 0xfa, - 0xf5, 0xe9, 0x43, 0x92, 0xa, 0x3d, 0x8f, 0x72, 0x8d, 0x3f, - 0x67, 0x4d, 0x43, 0xb0, 0x8c, 0x37, 0x29, 0x53, 0xdc, 0x57, - 0x19, 0xa8, 0x5b, 0x1b, 0x5b, 0xc7, 0x42, 0x8, 0x5c, 0xe4, - 0x7d, 0x2b, 0xb4, 0xaa, 0xb7, 0xb6, 0x11, 0x5e, 0xc7, 0xb5, - 0xc6, 0x18, 0x74, 0x61, 0xd6, 0xb9, 0xf1, 0x98, 0x7f, 0x6d, - 0xd, 0x37, 0x47, 0x2e, 0x3f, 0x9, 0xf5, 0x88, 0x7b, 0xbb, - 0xa3, 0x8b, 0xab, 0xf6, 0xda, 0xc5, 0xd5, 0xb4, 0x7e, 0x5a, - 0x90, 0xcb, 0xdb, 0x35, 0x2c, 0xfa, 0x15, 0xd4, 0x6c, 0x76, - 00, 0xeb, 0xdb, 0x15, 0x50, 0xe9, 0xf7, 0x60, 0xe0, 0xc0, - 0xff, 00, 0x95, 0x78, 0xca, 0x15, 0xe9, 0x3d, 0x13, 0x4c, - 0xf9, 0xf5, 0x4f, 0x13, 0x42, 0x5a, 0x26, 0x98, 0xfb, 0x9d, - 0x52, 0xea, 0xe9, 0x76, 0xbb, 0xe1, 0x7d, 0x7, 0x15, 0x4e, - 0xaf, 0x47, 0xa3, 0xde, 0xca, 0x7f, 0xd5, 0x15, 0xf7, 0x6e, - 0x2b, 0x5a, 0xcf, 0x41, 0x8e, 0x32, 0x1e, 0xe0, 0xef, 0x6f, - 0xee, 0xf6, 0xab, 0x8e, 0x1e, 0xbd, 0x79, 0x5d, 0xfd, 0xec, - 0xd2, 0x38, 0x5c, 0x4e, 0x22, 0x57, 0x92, 0x7e, 0xac, 0xa5, - 0xa4, 0x69, 0x6d, 0x71, 0x20, 0x9e, 0x55, 0xc4, 0x43, 0xa0, - 0x3d, 0xeb, 0xa6, 0x3f, 0x2a, 0x93, 0xe8, 0x28, 00, 0x28, - 00, 00, 00, 0xe8, 0x5, 0x57, 0xbe, 0xf3, 0x4d, 0x9c, - 0x82, 0x10, 0x4b, 0x91, 0x80, 0x5, 0x7b, 0x14, 0xa8, 0xc7, - 0xf, 0x4d, 0xdb, 0x53, 0xdf, 0xa1, 0x87, 0x8e, 0x16, 0x93, - 0x51, 0xd5, 0xfe, 0x67, 0x3c, 0xda, 0xcd, 0xcc, 0x77, 0xb2, - 0x3a, 0x3e, 0xe8, 0xf7, 0x70, 0xa7, 0xa6, 0x2a, 0xec, 0x5e, - 0x23, 0x43, 0xfe, 0xb6, 0x22, 0x3e, 0x95, 0x85, 0x24, 0x13, - 0x46, 0xc4, 0x3c, 0x6c, 0xf, 0xd2, 0xa3, 0xfc, 0xd, 0x78, - 0xcb, 0x17, 0x5e, 0xd, 0xea, 0x7c, 0xfc, 0x71, 0xd8, 0x8a, - 0x6d, 0xeb, 0xf7, 0x9d, 0x1c, 0x9e, 0x22, 0x8b, 0x69, 0xf2, - 0xe3, 0x62, 0x7d, 0xeb, 0xa, 0xe6, 0xe5, 0xee, 0xa7, 0x69, - 0x64, 0x3c, 0x9f, 0xd2, 0xa1, 00, 0x9e, 0x82, 0xad, 0x5b, - 0x69, 0xf7, 0x37, 0x4d, 0x88, 0xe3, 0x38, 0xf5, 0x34, 0xa7, - 0x5e, 0xb6, 0x23, 0xdd, 0x7a, 0x93, 0x53, 0x11, 0x5f, 0x15, - 0x68, 0xbd, 0x7c, 0x91, 0x54, 0x23, 0x48, 0xc2, 0x35, 0xce, - 0x58, 0xe3, 0x8a, 0xd7, 0x96, 0x31, 0x69, 0x64, 0x23, 0xee, - 0x7, 0x35, 0xa3, 0x6b, 0xa5, 0x47, 0x65, 0x1f, 0x98, 0xc7, - 0x74, 0xb8, 0xeb, 0x59, 0x5a, 0xb4, 0xb8, 0x53, 0x5e, 0xa6, - 0xb, 0xa, 0xe9, 0x2e, 0x69, 0x6e, 0xcf, 0x6b, 0x2e, 0xc1, - 0x3a, 0x9, 0xce, 0x7b, 0xb3, 0xcf, 0x3c, 0x69, 0x78, 0x22, - 0xd3, 0xe4, 0xe7, 0x9f, 0x4f, 0x5a, 0xf1, 0x1b, 0xbd, 0xd7, - 0x17, 0x4b, 0x1a, 0x8c, 0xb3, 0xb0, 00, 0x7e, 0x35, 0xe9, - 0xbf, 0x10, 0x2f, 0x6, 0xd1, 0x1e, 0xef, 0xc2, 0xb8, 0x5f, - 0xb, 0x59, 0x7f, 0x6a, 0x78, 0xc2, 0xc2, 0xdf, 0xa8, 0xf3, - 0x43, 0x1f, 0xa0, 0xad, 0x25, 0xef, 0x55, 0xf4, 0x35, 0x9f, - 0xbf, 0x5f, 0xd0, 0xfa, 0x37, 0xc3, 0x36, 0x22, 0xc3, 0x40, - 0xb1, 0xb6, 0xb, 0xb7, 0x64, 0x43, 0x23, 0xdf, 0x15, 0xd8, - 0xe9, 0xe3, 0x16, 0xc7, 0xfd, 0xef, 0xf0, 0xac, 0x4b, 0x64, - 0xa, 0x15, 0x40, 0xe0, 0x71, 0x5b, 0xb6, 0x43, 0x10, 0x1f, - 0xf7, 0xab, 0xac, 0xee, 0x2c, 0xd1, 0x45, 0x14, 0x1, 0xe6, - 0xb0, 0x7f, 0xc8, 0x6b, 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, - 00, 0xe8, 0x9, 0x5d, 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, - 0x7f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0x2e, 0xf, 0xf9, 0xd, - 0x6b, 0xff, 00, 0xf6, 0x12, 0x7f, 0xfd, 0x1, 0x2b, 0xb4, - 0xd1, 0xff, 00, 0xe4, 0x15, 0xf, 0xfc, 0xb, 0xff, 00, - 0x42, 0x34, 0x1, 0x57, 0xc1, 0x1f, 0xf2, 0x28, 0x58, 0xff, - 00, 0xdb, 0x4f, 0xfd, 0x18, 0xd5, 0xd0, 0x57, 0x3f, 0xe0, - 0x8f, 0xf9, 0x14, 0x2c, 0x7f, 0xed, 0xa7, 0xfe, 0x8c, 0x6a, - 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0x17, 0xc5, 0x7e, 0x19, 0xb3, - 0xf1, 0x77, 0x87, 0xae, 0x74, 0x7b, 0xd6, 0x74, 0x49, 0x70, - 0xc9, 0x2c, 0x67, 0xd, 0x13, 0x83, 0x95, 0x61, 0xf4, 0x35, - 0xc9, 0xdb, 0x6a, 0x9f, 0x13, 0x74, 0x8, 0x17, 0x4e, 0xb9, - 0xf0, 0xb5, 0x9f, 0x89, 0xc, 0x40, 0x8, 0xf5, 0x1b, 0x6d, - 0x49, 0x2d, 0x7c, 0xc5, 0x3, 0x3, 0x7a, 0x48, 0x33, 0xbf, - 0x8c, 0x92, 0x38, 0xe7, 0x8f, 0x5a, 0xf4, 0x6a, 0x29, 0x5a, - 0xc0, 0x70, 0x9e, 0x1b, 0xf0, 0x96, 0xb3, 0x73, 0xe2, 0x7f, - 0xf8, 0x4b, 0xbc, 0x61, 0x3d, 0xac, 0x9a, 0xa2, 0x43, 0xe4, - 0xd9, 0x59, 0x5a, 0x2, 0x61, 0xb2, 0x43, 0xf7, 0xbe, 0x63, - 0xcb, 0x39, 0xc9, 0x4, 0xfd, 0x70, 0x48, 0x23, 0x12, 0x69, - 0x7e, 0x1f, 0xd4, 0xed, 0xbe, 0x2f, 0xeb, 0x9a, 0xec, 0xb6, - 0xdb, 0x74, 0xdb, 0xad, 0x3e, 0x28, 0x61, 0x9f, 0xcc, 0x53, - 0xb9, 0xd7, 0x6e, 0x46, 0xdc, 0xee, 0x1d, 0xf, 0x51, 0x5d, - 0xbd, 0x14, 0xfa, 0xa6, 0xba, 0x7e, 0xbf, 0xf0, 0xe2, 0x6a, - 0xe9, 0xdf, 0xaf, 0xe9, 0x6f, 0xf2, 0x38, 0x8f, 0x3, 0xf8, - 0x7f, 0x53, 0xd1, 0xfc, 0x4f, 0xe3, 0x1b, 0xcb, 0xfb, 0x6f, - 0x26, 0xd, 0x47, 0x50, 0x13, 0x5a, 0xbf, 0x98, 0xad, 0xe6, - 0x26, 0xf, 0x38, 0x4, 0x91, 0xd7, 0xbe, 0x2b, 0x33, 0xc3, - 0x7e, 0x7, 0xbd, 0x93, 0x4a, 0xf1, 0xce, 0x97, 0xad, 0x5b, - 0x9b, 0x68, 0x35, 0xad, 0x46, 0x79, 0x20, 0x70, 0xea, 0xe4, - 0xc6, 0xe3, 0xe5, 0x70, 0x1, 0x38, 0xe7, 0x9c, 0x1c, 0x1e, - 0x2b, 0xd2, 0xa8, 0xa5, 0x65, 0x6b, 0x79, 0x5b, 0xe5, 0xa7, - 0xf9, 0x14, 0x9d, 0xbe, 0xfb, 0xfe, 0x7f, 0xe6, 0x79, 0x2f, - 0xd9, 0x7e, 0x26, 0xaf, 0x85, 0x8f, 0x82, 0xc6, 0x8b, 0x62, - 0xc3, 0xc8, 0xfb, 0x10, 0xf1, 0x1, 0xbf, 0x5f, 0x2f, 0xc9, - 0xdb, 0x8d, 0xde, 0x56, 0x37, 0xee, 0xdb, 0xf2, 0xe7, 0xd7, - 0x9c, 0x62, 0xb4, 0x2e, 0xfc, 0xb, 0x79, 0xa7, 0xf8, 0x87, - 0xe1, 0xf4, 0x7a, 0x4d, 0xb1, 0x9b, 0x4c, 0xd0, 0x96, 0x64, - 0xb9, 0x98, 0xc8, 0xaa, 0x57, 0x72, 00, 0x18, 0x82, 0x72, - 0x49, 0x39, 0x3c, 0x3, 0x5e, 0x95, 0x45, 0x55, 0xdd, 0xef, - 0xd6, 0xf7, 0x15, 0xb4, 0xb7, 0x4b, 0x35, 0xf7, 0x9e, 0x5d, - 0x16, 0x9b, 0xe3, 0x2f, 0x5, 0x78, 0xbb, 0x5f, 0xbc, 0xd1, - 0x7c, 0x3b, 0x7, 0x88, 0x34, 0xed, 0x66, 0x71, 0x74, 0x8, - 0xbf, 0x4b, 0x69, 0x20, 0x7e, 0xea, 0xc5, 0xfa, 0x8e, 0x4e, - 0x31, 0xfa, 0x74, 0xa6, 0xf8, 0x7b, 0xc3, 0x1e, 0x32, 0x83, - 0xe2, 0xd7, 0xfc, 0x25, 0x1a, 0xec, 0x56, 0x92, 0x43, 0x79, - 0xa7, 0xb4, 0x32, 0x7d, 0x92, 0x41, 0xb2, 0xd0, 0xe4, 0x6c, - 0x8c, 0x6e, 0x3b, 0x9b, 0x85, 0x4, 0x90, 0x31, 0x96, 0x3d, - 0xab, 0xd4, 0xe8, 0xa5, 0x1f, 0x76, 0xde, 0x5a, 0x7e, 0x16, - 0x7, 0xad, 0xfc, 0xff, 00, 0xe1, 0xce, 0x1f, 0xe1, 0xe7, - 0x87, 0xf5, 0x4d, 0xa, 0xef, 0xc5, 0x4f, 0xa9, 0x5a, 0xf9, - 0xb, 0x7d, 0xac, 0x4b, 0x73, 0x6c, 0x7c, 0xc5, 0x6d, 0xf1, - 0xb7, 0x46, 0xf9, 0x49, 0xc7, 0xd0, 0xe0, 0xd7, 0x71, 0x45, - 0x14, 0x74, 0x48, 0x1e, 0xad, 0xb3, 0xc8, 0xfe, 0x2c, 0x43, - 0xaa, 0x4f, 0xe3, 0xef, 0x2, 0x26, 0x8b, 0x34, 0x31, 0x6a, - 0x42, 0x5b, 0x86, 0x81, 0xa7, 0xcf, 0x96, 0x58, 0x2a, 0x9c, - 0x36, 0x39, 0xc1, 00, 0x83, 0x8f, 0x5a, 0xb9, 0x7d, 0xa6, - 0xf8, 0xcf, 0xe2, 0x5, 0xd5, 0x86, 0x9f, 0xe2, 0xd, 0x6, - 0xdf, 0x40, 0xd0, 0xed, 0xae, 0x12, 0xe6, 0xed, 0x7e, 0xdc, - 0xb7, 0x32, 0x5e, 0x15, 0x39, 0x8, 0xbb, 0x3e, 0xea, 0xe7, - 0xae, 0x79, 0xe9, 0x83, 0xc6, 0x2b, 0xb4, 0xd5, 0xbc, 0x2b, - 0x63, 0xac, 0x78, 0x87, 0x46, 0xd6, 0xae, 0x25, 0xb8, 0x5b, - 0x9d, 0x25, 0xa4, 0x68, 0x16, 0x36, 0x50, 0x8c, 0x5c, 00, - 0x77, 0x2, 0x9, 0x3d, 0x3b, 0x11, 0x5b, 0x94, 0x47, 0x44, - 0xbd, 0x6e, 0x13, 0xd7, 0xee, 0xb7, 0xe6, 0x70, 0x1e, 0x26, - 0xf0, 0xee, 0xbf, 0xa6, 0x78, 0xca, 0x3f, 0x19, 0x78, 0x56, - 0xde, 0xde, 0xfa, 0xe1, 0xad, 0x85, 0xa5, 0xf6, 0x99, 0x2c, - 0xa2, 0x2f, 0xb4, 0x46, 0x18, 0x10, 0xc8, 0xe7, 0x80, 0xc3, - 0xdf, 0xb0, 0xef, 0xd2, 0xab, 0x5a, 0x68, 0x9e, 0x29, 0xf1, - 0x87, 0x8b, 0xb4, 0xbd, 0x73, 0xc5, 0x1a, 0x6d, 0xbe, 0x8b, - 0xa7, 0xe8, 0xee, 0xd2, 0x5a, 0xe9, 0xab, 0x72, 0xb7, 0x12, - 0x4b, 0x31, 0x3, 0xf7, 0x8e, 0xeb, 0xf2, 0xe0, 0x76, 0xef, - 0x90, 0x78, 0xe7, 0x35, 0xe9, 0x14, 0x50, 0xb4, 0xf9, 0x3, - 0xd4, 0xe1, 0xfc, 0x3d, 0xe1, 0xfd, 0x52, 0xc7, 0xe2, 0x97, - 0x8b, 0x35, 0x9b, 0x9b, 0x5d, 0x9a, 0x7d, 0xfc, 0x76, 0xcb, - 0x6d, 0x37, 0x98, 0xa7, 0xcc, 0x28, 0xb8, 0x6e, 0x1, 0xc8, - 0xc1, 0xf5, 0x2, 0xaa, 0x78, 0xf3, 0x45, 0xf1, 0x7, 0xfc, - 0x26, 0x3e, 0x1a, 0xf1, 0x46, 0x81, 0xa5, 0x26, 0xac, 0xfa, - 0x60, 0x9e, 0x39, 0x6c, 0xcd, 0xd2, 0x40, 0x58, 0x48, 0xb8, - 0xc, 0x19, 0xb8, 0xc0, 0xe7, 0xd4, 0xf4, 0xe3, 0xae, 0x3d, - 0xe, 0x8a, 0x16, 0x89, 0x5b, 0xa7, 0xf5, 0xfa, 0x8d, 0xbb, - 0xde, 0xfd, 0x4f, 0x39, 0x9d, 0x3c, 0x7f, 0xe1, 0xdf, 0x10, - 0xde, 0x6a, 0x1a, 0x6e, 0x9d, 0xff, 00, 0x9, 0xe, 0x97, - 0xa9, 0x5, 0x97, 0xfb, 0x3e, 0x6d, 0x45, 0x62, 0x92, 0xc2, - 0x5c, 0x7c, 0xca, 0xae, 0xff, 00, 0x29, 0x4e, 0xbc, 0xf, - 0xd3, 0x1f, 0x35, 0x9f, 0x6, 0x78, 0x6f, 0x58, 0x1e, 0x2d, - 0xd5, 0xfc, 0x61, 0xaf, 0x59, 0xdb, 0x69, 0xb7, 0x9a, 0x8c, - 0x49, 0x4, 0x7a, 0x7d, 0xbc, 0xa2, 0x4f, 0x29, 0x17, 0xbc, - 0x8e, 0x6, 0x19, 0xce, 0xd1, 0xc8, 0xed, 0xf9, 0xe, 0xf6, - 0x8a, 0x16, 0x82, 0x7a, 0xee, 0x67, 0xeb, 0xb6, 0xd3, 0x5e, - 0xf8, 0x7b, 0x52, 0xb5, 0xb7, 0x4d, 0xf3, 0x4d, 0x6b, 0x2c, - 0x71, 0xae, 0x40, 0xcb, 0x15, 0x20, 0xc, 0x9e, 0x3a, 0xd7, - 0xb, 0x67, 0xf0, 0xfe, 0xef, 0x54, 0xf8, 0x2d, 0x61, 0xe1, - 0x5d, 0x4b, 0xfd, 0x3, 0x53, 0x86, 0x20, 0xc8, 0xfb, 0x83, - 0xf9, 0x33, 0x2b, 0x96, 0x53, 0x95, 0x24, 0x7b, 0x70, 0x7a, - 0x1a, 0xf4, 0xaa, 0x29, 0x5b, 0x7f, 0x3b, 0x7e, 0x17, 0xff, - 00, 0x30, 0xea, 0x9f, 0x6b, 0xfe, 0x36, 0xff, 00, 0x23, - 0xcb, 0xee, 0xee, 0x7e, 0x29, 0x6b, 0x1a, 0x3c, 0x9e, 0x1d, - 0x97, 0xc3, 0x9a, 0x7d, 0x94, 0xd3, 0xa3, 0x5b, 0xcf, 0xae, - 0x7f, 0x68, 0x2b, 0x45, 0xb3, 0x4, 0x17, 0x48, 0x87, 0xce, - 0x9, 0x1d, 0x33, 0xd0, 0x9e, 0x40, 0xed, 0x27, 0x8a, 0x3c, - 0x7, 0x79, 0x17, 0x84, 0x7c, 0x23, 0xa1, 0xe8, 0x56, 0xe6, - 0xe9, 0x34, 0x9d, 0x4a, 0xda, 0x59, 0x98, 0xb2, 0x46, 0x76, - 0x26, 0x77, 0xb9, 0xc9, 0x1d, 0x49, 0xce, 0x6, 0x4f, 0x35, - 0xe9, 0x94, 0x53, 0xf3, 0xf4, 0x7f, 0x70, 0x7f, 0x93, 0x5f, - 0x78, 0x51, 0x45, 0x14, 0x1, 0xc5, 0x47, 0xa0, 0xea, 0x6b, - 0xf1, 0x9e, 0x5f, 0x10, 0x1b, 0x6f, 0xf8, 0x95, 0xb6, 0x88, - 0x2d, 0x44, 0xfe, 0x62, 0xff, 00, 0xad, 0xf3, 0x43, 0x6d, - 0xdb, 0x9d, 0xdd, 0x3b, 0xe3, 0x14, 0xcf, 0x1b, 0x78, 0x67, - 0x58, 0xb8, 0xd6, 0xf4, 0xaf, 0x15, 0xf8, 0x6b, 0xc8, 0x93, - 0x57, 0xd2, 0xd5, 0xe3, 0x36, 0x97, 0x7, 0x6a, 0x5d, 0x44, - 0xc3, 0x94, 0xdd, 0xfc, 0x2d, 0xd7, 0x4, 0xf1, 0xcf, 0x27, - 0x8a, 0xee, 0x28, 0xa3, 0xa2, 0xf2, 0xff, 00, 0x83, 0xfe, - 0x61, 0xdf, 0xcc, 0xf2, 0xfd, 0x47, 0x4b, 0xf1, 0x97, 0xc4, - 0x3b, 0x9b, 0x1b, 0x1d, 0x7f, 0x41, 0x83, 0xc3, 0xda, 0x1d, - 0xad, 0xc2, 0x5c, 0xdc, 0xa1, 0xbe, 0x4b, 0x99, 0xae, 0x8a, - 0xe4, 0xaa, 0x29, 0x41, 0x85, 0x1e, 0xb9, 0xf5, 0x18, 0xce, - 0x31, 0x5e, 0xa1, 0x45, 0x14, 0x74, 0xb0, 0xad, 0xad, 0xcf, - 0x2e, 0x8b, 0x4d, 0xf1, 0x97, 0x82, 0xbc, 0x5d, 0xaf, 0xde, - 0x68, 0xbe, 0x1d, 0x83, 0xc4, 0x1a, 0x76, 0xb3, 0x38, 0xba, - 0x4, 0x5f, 0xa5, 0xb4, 0x90, 0x3f, 0x75, 0x62, 0xfd, 0x47, - 0x27, 0x18, 0xfd, 0x3a, 0x53, 0x7c, 0x3d, 0xe1, 0x8f, 0x19, - 0x41, 0xf1, 0x6b, 0xfe, 0x12, 0x8d, 0x76, 0x2b, 0x49, 0x21, - 0xbc, 0xd3, 0xda, 0x19, 0x3e, 0xc9, 0x20, 0xd9, 0x68, 0x72, - 0x36, 0x46, 0x37, 0x1d, 0xcd, 0xc2, 0x82, 0x48, 0x18, 0xcb, - 0x1e, 0xd5, 0xea, 0x74, 0x51, 0x1f, 0x76, 0xde, 0x5a, 0x7e, - 0x16, 0x1b, 0xd6, 0xfe, 0x7f, 0xf0, 0xe7, 0xf, 0xf0, 0xf3, - 0xc3, 0xfa, 0xa6, 0x85, 0x77, 0xe2, 0xa7, 0xd4, 0xad, 0x7c, - 0x85, 0xbe, 0xd6, 0x25, 0xb9, 0xb6, 0x3e, 0x62, 0xb6, 0xf8, - 0xdb, 0xa3, 0x7c, 0xa4, 0xe3, 0xe8, 0x70, 0x6b, 0x22, 0xd7, - 0x4b, 0xf1, 0x97, 0x80, 0x35, 0x2d, 0x56, 0xf, 0xf, 0x68, - 0x50, 0xf8, 0x83, 0x47, 0xd4, 0x2e, 0x5e, 0xee, 0x8, 0xfe, - 0xdc, 0x96, 0xd2, 0x5a, 0x3b, 0x63, 0x72, 0xb6, 0xfe, 0x19, - 0x4f, 0x6c, 0x7a, 0x1c, 0xe3, 0x35, 0xe9, 0xf4, 0x52, 0xb6, - 0xde, 0x96, 0xfe, 0xbe, 0xe1, 0xb7, 0x7b, 0xfa, 0xdc, 0xf3, - 0x8d, 0x37, 0xc1, 0x1a, 0xad, 0x87, 0xc3, 0xff, 00, 0x14, - 0x45, 0x76, 0xd1, 0x5d, 0xf8, 0x8f, 0x5e, 0x5b, 0x89, 0xae, - 0x4, 0x2d, 0x88, 0xfc, 0xc7, 0x52, 0x16, 0x35, 0x2d, 0x8c, - 0x1, 0x9e, 0xfe, 0xa7, 0xb5, 0x74, 0x7e, 0x10, 0xd2, 0xaf, - 0x74, 0xbf, 0x87, 0x9a, 0x5e, 0x97, 0x79, 0xf, 0x95, 0x7b, - 0x5, 0x8a, 0xc3, 0x24, 0x5b, 0x83, 0x6d, 0x70, 0xb8, 0xc6, - 0x41, 0x20, 0xfe, 0x75, 0xd2, 0x51, 0x43, 0x57, 0x4d, 0x77, - 0xb7, 0xe0, 0x9, 0xda, 0xcf, 0xb5, 0xff, 00, 0x13, 0xc6, - 0xe3, 0xf0, 0x37, 0x88, 0xd7, 0xf6, 0x7a, 0x7f, 0xb, 0x9d, - 0x3b, 0xfe, 0x27, 0x45, 0xc9, 0x16, 0xde, 0x7c, 0x7d, 0x3c, - 0xfd, 0xff, 00, 0x7b, 0x76, 0xdf, 0xbb, 0xcf, 0x5a, 0xe8, - 0xbe, 0x20, 0x78, 0x6f, 0x5a, 0xd4, 0xf4, 0x4f, 0xd, 0xdc, - 0xe8, 0xf6, 0x69, 0x77, 0x7f, 0xa3, 0x5f, 0x41, 0x76, 0xd6, - 0x8d, 0x32, 0xc7, 0xe6, 0x85, 0x1c, 0xa8, 0x63, 0xc0, 0x39, - 0xc7, 0x7e, 0x99, 0xeb, 0xd2, 0xbd, 0xa, 0x8a, 0xa6, 0xdd, - 0xdb, 0xf3, 0x4f, 0xee, 0x12, 0xda, 0xde, 0xbf, 0x89, 0xe6, - 0x5a, 0x8e, 0x89, 0xe2, 0xcb, 0x6f, 0x10, 0xda, 0x78, 0xef, - 0x45, 0xd2, 0xa0, 0xfe, 0xd3, 0xb8, 0xb4, 0x5b, 0x6d, 0x53, - 0x43, 0x9a, 0xed, 0x7e, 0x70, 0x18, 0x63, 0x64, 0xa3, 0xe5, - 0xdc, 0x31, 0xd4, 0xf1, 0xc7, 0x7e, 0x95, 0xab, 0xa5, 0x5c, - 0x78, 0xff, 00, 0x5c, 0xd7, 0x6d, 0x6e, 0x35, 0x1b, 0xb, - 0x6f, 0xd, 0x69, 0x16, 0xd9, 0x33, 0x5a, 0x9, 0xe3, 0xbb, - 0x9e, 0xed, 0xbb, 0xd, 0xe0, 0x6d, 0x44, 0xfa, 0x61, 0xb8, - 0x3e, 0xbc, 0x77, 0x14, 0x52, 0x5a, 0x3, 0x3c, 0xe2, 0xfb, - 0x46, 0xf1, 0x47, 0x84, 0xfc, 0x67, 0xa9, 0xeb, 0xfe, 0x19, - 0xd2, 0xe1, 0xd6, 0xec, 0x75, 0x80, 0x86, 0xeb, 0x4f, 0x6b, - 0xb5, 0xb7, 0x78, 0xa6, 0x50, 0x40, 0x91, 0x59, 0xbe, 0x5d, - 0xa4, 0x75, 0x1d, 0x72, 0x7d, 0xaa, 0xdf, 0x84, 0xfc, 0x2b, - 0xab, 0x1b, 0xed, 0x7b, 0xc4, 0x7e, 0x23, 0x58, 0x60, 0xd5, - 0xf5, 0x94, 0x10, 0xad, 0xb4, 0x2f, 0xbd, 0x6d, 0x20, 0xb, - 0x85, 0x4d, 0xdd, 0xb, 0x7a, 0x91, 0x91, 0xc7, 0x1d, 0x6b, - 0xbc, 0xa2, 0x95, 0xb4, 0xb7, 0xcb, 0xe5, 0xfd, 0x7e, 0x1a, - 0xe, 0xfa, 0xdc, 0xf3, 0xf, 0x1, 0xf8, 0x6f, 0xc4, 0x36, - 0xde, 0x4, 0xbe, 0xf0, 0x46, 0xbd, 0xa3, 0xad, 0x9d, 0xaa, - 0x5b, 0xcf, 0x4, 0x3a, 0x8c, 0x77, 0x69, 0x20, 0x9f, 0xcc, - 0x67, 0xe4, 0x20, 0xe5, 0x71, 0xbb, 0x3c, 0xf5, 0xf4, 0x15, - 0x5b, 0x42, 0xb5, 0xf8, 0x93, 0xa7, 0x78, 0x61, 0x3c, 0x1e, - 0x74, 0x3b, 0x8, 0x56, 0x8, 0x9a, 0xda, 0x3d, 0x77, 0xed, - 0xaa, 0xc8, 0x22, 0xe8, 0x19, 0x61, 0x1f, 0x39, 0x6d, 0xbc, - 0xc, 0xed, 0x19, 0xc6, 0x71, 0xcd, 0x7a, 0xc5, 0x14, 0xe5, - 0xef, 0x5e, 0xfd, 0x77, 0x12, 0xd3, 0x6e, 0x87, 0x89, 0xda, - 0xf8, 0xb, 0xc4, 0xd1, 0xfc, 0x31, 0xf0, 0x8e, 0x8e, 0xfa, - 0x6e, 0x2f, 0xf4, 0xfd, 0x69, 0x6e, 0xae, 0x62, 0xf3, 0xe3, - 0xfd, 0xdc, 0x42, 0x47, 0x25, 0xb3, 0xbb, 0x7, 0x82, 0x38, - 0x4, 0x9a, 0xf4, 0x8f, 0x1d, 0xf8, 0x50, 0x78, 0xcb, 0xc2, - 0x97, 0x1a, 0x48, 0xb8, 0x36, 0xf7, 0x1b, 0x96, 0x5b, 0x79, - 0xbf, 0xb9, 0x2a, 0x9c, 0xa9, 0x3e, 0xdd, 0x8f, 0xd6, 0xba, - 0x4a, 0x29, 0xc9, 0xf3, 0x5f, 0xd6, 0xff, 00, 0x97, 0xf9, - 0x2, 0xd3, 0xfa, 0xf5, 0xff, 00, 0x33, 0xcd, 0xd7, 0x58, - 0xf8, 0xab, 0x25, 0x8f, 0xf6, 0x58, 0xf0, 0xa6, 0x9d, 0xd, - 0xf6, 0x3c, 0xaf, 0xed, 0x96, 0xd4, 0x50, 0xdb, 0x82, 0xf, - 0xfa, 0xcf, 0x24, 0x2, 0xfc, 0x8e, 0x83, 0xd4, 0xf2, 0x3b, - 0x56, 0x97, 0x88, 0xf4, 0x1f, 0x17, 0x49, 0xe1, 0xed, 0x26, - 0x5d, 0x23, 0x5f, 0x69, 0x75, 0xed, 0x31, 0xc4, 0xb2, 0x19, - 0x7f, 0x73, 0xd, 0xff, 00, 0x1f, 0x32, 0x3a, 0x26, 00, - 0x7, 0xb7, 0xa7, 0xa8, 0xce, 0xe1, 0xdb, 0x51, 0x49, 0x82, - 0xd0, 0xf2, 0xad, 0x6b, 0x4c, 0xf1, 0x97, 0xc4, 0x53, 0xa7, - 0xe9, 0x9a, 0xcf, 0x85, 0xad, 0xbc, 0x3f, 0xa7, 0xdb, 0xdd, - 0x25, 0xd4, 0xd7, 0x52, 0x6a, 0x11, 0xdc, 0xc8, 0xc1, 0x7f, - 0x86, 0x20, 0x83, 0xe5, 0x63, 0x93, 0xc9, 0xe3, 0x1f, 0x91, - 0xf5, 0x5a, 0x28, 0xa3, 0xa5, 0x85, 0x6d, 0x6e, 0x14, 0x51, - 0x45, 0x3, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x46, 0xe9, 0x4b, - 0x4d, 0x6e, 0xff, 00, 0x4a, 00, 0xc1, 0xf1, 0x2d, 0xef, - 0xd8, 0xb4, 0x3b, 0x99, 0x3, 0x6d, 0x76, 0x5d, 0x88, 0x7f, - 0xda, 0x3d, 0x2a, 0x7f, 0xf, 0xd9, 0x3d, 0x9f, 0x87, 0xa1, - 0x84, 0x12, 0x25, 0x31, 0xe4, 0x93, 0xd7, 0x71, 0xac, 0x4f, - 0x16, 0x4e, 0x27, 0xd4, 0x34, 0xdd, 0x2c, 0x60, 0x89, 0x24, - 0xf3, 0x24, 0x7, 0xb0, 0x1d, 0x2b, 0xaa, 0xb6, 0xb8, 0x8d, - 0xa2, 00, 0x10, 0x31, 0x81, 0x8a, 0xca, 0x3e, 0xf5, 0x46, - 0xfb, 0x68, 0x61, 0x1f, 0x7a, 0xab, 0x7d, 0xb4, 0xfd, 0x4f, - 0x8d, 0xf5, 0xeb, 0x4f, 0x10, 0x78, 0x73, 0xc5, 0x5a, 0x85, - 0xca, 0xc5, 0x75, 0x6d, 0x21, 0x99, 0xc8, 0x97, 0x4, 0x64, - 0x13, 0xeb, 0x59, 0x1a, 0x7e, 0xb5, 0xac, 0x5a, 0x6a, 0x12, - 0x6a, 0x16, 0x73, 0xcc, 0x2e, 0x9f, 0xef, 0x4a, 0xbc, 0x93, - 0x5f, 0x5f, 0xf8, 0xeb, 0x42, 0x1e, 0x22, 0xf0, 0xd5, 0xd5, - 0x8c, 0x11, 0xc4, 0x6e, 0x25, 0x5d, 0xab, 0x23, 0x63, 0xe5, - 0xe9, 0xcd, 0x64, 0x78, 0xb, 0xe1, 0xce, 0x99, 0xe1, 0xdf, - 0xf, 0xb, 0x3b, 0xeb, 0x68, 0x2e, 0xae, 0x58, 0x92, 0xee, - 0xe8, 0x1a, 0xb5, 0x37, 0x3e, 0x79, 0x8f, 0xe2, 0x97, 0x8d, - 0x50, 0xaf, 0xfc, 0x4c, 0xa7, 0x62, 0x3f, 0xbc, 0xb9, 0xcd, - 0x7d, 0x29, 0xe0, 0x9d, 0x5b, 0x53, 0x6f, 0x87, 0xc9, 0xab, - 0x6b, 0x52, 0x79, 0x93, 0xf9, 0x4d, 0x31, 0x38, 0xc7, 0xcb, - 0x8c, 0xe3, 0xf4, 0xad, 0x66, 0xf0, 0x77, 0x87, 0x58, 0x60, - 0xe9, 0x16, 0xbd, 0x7f, 0xe7, 0x90, 0xff, 00, 0xa, 0xd4, - 0x92, 0xc2, 0xd6, 0x5b, 0x6, 0xb2, 0x30, 0xa8, 0xb6, 0x65, - 0x28, 0x63, 0x51, 0x81, 0xb4, 0xf6, 0xa0, 0xf, 0x98, 0x2f, - 0x3e, 0x3b, 0x78, 0xb2, 0x3d, 0x4e, 0xe4, 0xc3, 0x2c, 0x22, - 0x1d, 0xe4, 0x22, 0xf9, 0x63, 0x81, 0x9a, 0x23, 0xf8, 0xff, - 00, 0xe2, 0xc5, 0xcf, 0x98, 0x2d, 0xdf, 0xd3, 0xe4, 0xc7, - 0xf2, 0xaf, 0x74, 0x97, 0xe1, 0x5f, 0x83, 0xa5, 0xc1, 0x3a, - 0x4c, 0x43, 0xf1, 0x35, 0x52, 0x5f, 0x83, 0xbe, 0xd, 0x95, - 0xf7, 0x1d, 0x3d, 0x47, 0xb0, 0x63, 0xfe, 0x34, 0x1, 0xe4, - 0x31, 0x7e, 0xd0, 0xde, 0x21, 0x44, 0xc4, 0x96, 0x96, 0xee, - 0x7d, 0x70, 0x6a, 0xe4, 0x7f, 0xb4, 0x66, 0xa8, 0xa8, 0x3, - 0xe9, 0x90, 0xb3, 0x77, 0x39, 0x35, 0xe8, 0xcf, 0xf0, 0x3f, - 0xc1, 0xee, 0x58, 0xfd, 0x99, 0xd7, 0x3e, 0x8c, 0x78, 0xaa, - 0x6f, 0xf0, 0xf, 0xc2, 0xcc, 0xa4, 0x2b, 0x4e, 0xf, 0x63, - 0xb8, 0x50, 0x7, 0x22, 0xbf, 0xb4, 0x85, 0xc6, 0x6, 0xed, - 0x1e, 0x2f, 0x7c, 0x31, 0xab, 0x9, 0xfb, 0x47, 0xa1, 0x71, - 0xbf, 0x48, 0xc2, 0xf7, 0xc3, 0x56, 0xdc, 0xbf, 0xb3, 0xdf, - 0x87, 0x9d, 0x30, 0x97, 0x33, 0xab, 0x7a, 0xe6, 0xa9, 0xcd, - 0xfb, 0x3a, 0xe9, 0x6d, 0x81, 0x16, 0xa1, 0x2a, 0x7d, 0x46, - 0x68, 0x1, 0x22, 0xfd, 0xa3, 0x34, 0xc6, 0x7f, 0xde, 0x69, - 0x92, 0xaa, 0xfb, 0x1c, 0xd5, 0xb8, 0x7f, 0x68, 0x7d, 0x1, - 0xb3, 0xe6, 0x59, 0xdc, 0x2d, 0x64, 0xcd, 0xfb, 0x38, 0xc1, - 0xb8, 0x79, 0x5a, 0xab, 0x6d, 0xc7, 0x3b, 0x96, 0xaa, 0x3f, - 0xec, 0xe5, 0x36, 0xe3, 0xb3, 0x54, 0x18, 0xed, 0x91, 0x40, - 0x1d, 0x5c, 0x5f, 0xb4, 0x7, 0x86, 0x1d, 0x72, 0xd1, 0x4e, - 0x87, 0xd0, 0x8a, 0xb7, 0x17, 0xc7, 0x6f, 0x9, 0x3a, 0x65, - 0xe5, 0x91, 0x4f, 0xa6, 0x2b, 0xcf, 0x9b, 0xf6, 0x74, 0xd4, - 0xf9, 0xdb, 0xa8, 0xc6, 0x7d, 0x38, 0xaa, 0x52, 0xfe, 0xcf, - 0x5e, 0x22, 0x44, 0x25, 0x6e, 0x6d, 0xdc, 0xf6, 0x1, 0xa8, - 0x3, 0xd6, 0x63, 0xf8, 0xd3, 0xe0, 0xe9, 0x11, 0x5b, 0xed, - 0xd8, 0x27, 0xb1, 0x15, 0x75, 0x3e, 0x2d, 0x78, 0x39, 0xc8, - 0x1f, 0xda, 0xa8, 0x9, 0xf5, 0x15, 0xe1, 0xd2, 0x7c, 0x2, - 0xf1, 0x4a, 0x2e, 0x54, 0xc2, 0xc7, 0xd0, 0x35, 0x55, 0x9b, - 0xe0, 0x67, 0x8b, 0xa3, 0x20, 0x2d, 0xba, 0x3e, 0x7d, 0xd, - 00, 0x7d, 0xb, 0x1f, 0xc4, 0xbf, 0x9, 0x4a, 0xfb, 0x57, - 0x57, 0x83, 0x3e, 0xec, 0x5, 0x5b, 0x8b, 0xc7, 0x7e, 0x19, - 0x99, 0x8a, 0xa6, 0xb1, 0x6a, 0x4f, 0xfd, 0x74, 0x15, 0xf3, - 0x2c, 0xbf, 0x6, 0x3c, 0x67, 0x1b, 0x60, 0x69, 0xee, 0xfe, - 0xe2, 0xaa, 0x37, 0xc2, 0x9f, 0x19, 0x46, 0xc4, 0xd, 0x2e, - 0x7c, 0x8f, 0x40, 0x68, 0x3, 0xea, 0xe8, 0xfc, 0x59, 0xa0, - 0xc8, 0x9, 0x5d, 0x5a, 0xd3, 0x8f, 0x59, 0x45, 0x58, 0x4d, - 0x77, 0x49, 0x91, 0x77, 0x26, 0xa1, 0x6c, 0xc3, 0xd4, 0x38, - 0xaf, 0x90, 0x5b, 0xe1, 0xe7, 0x8c, 0x62, 0xd, 0x9d, 0x36, - 0xe8, 0x5, 0xeb, 0xd6, 0xab, 0x49, 0xe1, 0x5f, 0x16, 0x5b, - 0xc7, 0x96, 0xb2, 0xbd, 0xb, 0xed, 0x9a, 00, 0xfb, 0x39, - 0x75, 0x2b, 0x16, 0x50, 0xcb, 0x75, 0x9, 0x7, 0xa1, 0xdc, - 0x2a, 0x45, 0xba, 0xb7, 0x60, 0xa, 0xcc, 0x87, 0x3d, 0x39, - 0xaf, 0x8a, 0x1f, 0x4c, 0xf1, 0x54, 0x4a, 0xb, 0x43, 0x7e, - 0xa3, 0xb7, 0xde, 0xa5, 0xf3, 0xbc, 0x59, 0x1, 0x51, 0xbf, - 0x50, 0x18, 0xe8, 0x32, 0x68, 0x3, 0xed, 0xaf, 0x31, 0x32, - 0x6, 0xf5, 0xe7, 0xde, 0x94, 0x3a, 0x9e, 0x8c, 0x3f, 0x3a, - 0xf8, 0x9c, 0x6b, 0x9e, 0x2f, 0xb7, 0x90, 0x11, 0x77, 0xa8, - 0x2b, 0x7d, 0x5a, 0xa5, 0x8f, 0xc6, 0xfe, 0x31, 0xb6, 0x73, - 0xb7, 0x54, 0xbe, 0xd, 0xdf, 0x2c, 0xd4, 0x1, 0xf6, 0x91, - 0x54, 0x7e, 0x8, 0x6, 0xa2, 0x36, 0x76, 0xe4, 0xe4, 0xc2, - 0x9f, 0xf7, 0xc8, 0xaf, 0x8e, 0x62, 0xf8, 0x95, 0xe3, 0x58, - 0x9, 0x23, 0x56, 0xbb, 0xcf, 0xfb, 0x44, 0xf1, 0x56, 0xe2, - 0xf8, 0xbb, 0xe3, 0x58, 0x53, 0x7, 0x52, 0x91, 0xbd, 0xdd, - 0x73, 0xfc, 0xea, 0x5c, 0x53, 0xdd, 0x12, 0xe1, 0x17, 0xba, - 0x3e, 0xbc, 0x5b, 0x4b, 0x75, 0xe9, 0xa, 0x7f, 0xdf, 0x22, - 0xa6, 00, 0x1, 0x80, 0x2b, 0xe4, 0x64, 0xf8, 0xd9, 0xe3, - 0x44, 00, 0x7d, 0xb8, 0x10, 0x3f, 0xd8, 0x1f, 0xe1, 0x57, - 0x13, 0xe3, 0xdf, 0x8c, 0x15, 0x86, 0xe9, 0x20, 0x2a, 0x3b, - 0x79, 0x63, 0xfc, 0x29, 0xa8, 0xa5, 0xb0, 0xd4, 0x52, 0xd9, - 0x1f, 0x51, 0xde, 0x36, 0x23, 0xc5, 0x71, 0xfa, 0xcc, 0xd8, - 0xd, 0x58, 0xbf, 0xd, 0xfc, 0x6f, 0xaa, 0x78, 0xcf, 0x4a, - 0xba, 0xbb, 0xd4, 0x23, 0x54, 0x11, 0xb6, 0xd5, 0x2a, 0x30, - 0xd, 0x59, 0xd7, 0xae, 0x36, 0x45, 0x21, 0x27, 0xa0, 0x34, - 0xc6, 0xcf, 0x1b, 0xf1, 0xad, 0xe1, 0x97, 0x50, 0x75, 0xcf, - 0xb, 0x57, 0xbe, 0xf, 0x69, 0xeb, 0x75, 0xe2, 0x5b, 0x8b, - 0xc6, 0x19, 0x36, 0xe9, 0xc1, 0xc7, 0xad, 0x72, 0xde, 0x22, - 0xb9, 0x33, 0x5e, 0xca, 0xe7, 0xb9, 0xaf, 0x55, 0xf8, 0x35, - 0xa6, 0x88, 0x34, 0x9, 0xaf, 0x8, 0xc9, 0x9e, 0x4e, 0xf, - 0xb5, 0x72, 0x50, 0x57, 0x93, 0x91, 0xc3, 0x86, 0x5c, 0xd3, - 0x72, 0x3d, 0x52, 0xdc, 0x56, 0xd5, 0xa0, 0xc4, 0x3f, 0x8d, - 0x65, 0x5b, 0xaf, 0x4a, 0xd6, 0xb6, 0xe2, 0x2f, 0xc6, 0xba, - 0xce, 0xe2, 0x6a, 0x28, 0xa2, 0x80, 0x3c, 0xd6, 0xf, 0xf9, - 0xd, 0x6b, 0xff, 00, 0xf6, 0x12, 0x7f, 0xfd, 0x1, 0x2b, - 0xb4, 0xd1, 0xff, 00, 0xe4, 0x15, 0xf, 0xfc, 0xb, 0xff, - 00, 0x42, 0x35, 0xc5, 0xc1, 0xff, 00, 0x21, 0xad, 0x7f, - 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, 0x25, 0x76, 0x9a, 0x3f, - 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0x80, - 0x2a, 0xf8, 0x23, 0xfe, 0x45, 0xb, 0x1f, 0xfb, 0x69, 0xff, - 00, 0xa3, 0x1a, 0xba, 0xa, 0xe7, 0xfc, 0x11, 0xff, 00, - 0x22, 0x85, 0x8f, 0xfd, 0xb4, 0xff, 00, 0xd1, 0x8d, 0x5d, - 0x5, 00, 0x14, 0x51, 0x54, 0xaf, 0xb5, 0x9d, 0x2f, 0x4c, - 0x9a, 0xde, 0x1d, 0x43, 0x52, 0xb3, 0xb4, 0x96, 0xe5, 0xb6, - 0xc0, 0x97, 0x13, 0xac, 0x6d, 0x29, 0xe0, 0x61, 0x41, 0x23, - 0x71, 0xe4, 0x74, 0xf5, 0x14, 0x1, 0x76, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x2b, 0xf, 0xc6, 0x5a, 0xff, 00, 0xfc, 0x22, - 0xfe, 0xf, 0xd5, 0x35, 0x90, 0xa1, 0x9e, 0xd6, 0x2, 0xd1, - 0xab, 0x74, 0x2e, 0x78, 0x50, 0x7f, 0xe0, 0x44, 0x52, 0x93, - 0xe5, 0x57, 0x1a, 0x57, 0x76, 0x37, 0x28, 0xaf, 0x1a, 0x87, - 0xc0, 0xde, 0x11, 0xbb, 0xd3, 0x6c, 0xe5, 0xf1, 0x7e, 0xba, - 0x83, 0xc6, 0x97, 0xd0, 0xa4, 0xff, 00, 0x6b, 0x9f, 0x54, - 0x31, 0x5c, 0x47, 0x23, 0xf2, 0x9e, 0x5a, 0x6e, 0x3, 0xa, - 0x78, 0x50, 0x17, 0xb7, 0x15, 0xb5, 0xe2, 0x2d, 0x5f, 0xc4, - 0xde, 0x9, 0xf8, 0x3d, 0xff, 00, 0x13, 0x2b, 0xc8, 0x6e, - 0x7c, 0x45, 0xf2, 0xd9, 0xc5, 0x75, 0xb, 0x16, 0xc, 0xce, - 0xd8, 0x57, 0xcb, 0x1, 0x96, 0xb, 0xea, 0x3a, 0x8e, 0xf4, - 0xda, 0x6a, 0xeb, 0xa8, 0x93, 0xbd, 0x9f, 0x43, 0xd2, 0xe8, - 0xaf, 0x25, 0xd5, 0xfe, 0x13, 0xe9, 0xda, 0x27, 0x85, 0xa7, - 0xd6, 0xf4, 0xbb, 0x9b, 0xe8, 0xbc, 0x59, 0x65, 0xb, 0x5d, - 0xff, 00, 0x6a, 0x9b, 0xb7, 0x69, 0x26, 0x94, 0x29, 0x67, - 0xe, 0x9, 0xda, 0x43, 0x72, 0xf, 0x1d, 0xf, 0x39, 0xe7, - 0x32, 0x78, 0x93, 0xc6, 0x5a, 0x86, 0xb3, 0xe0, 0x3f, 0x9, - 0xc7, 0xa5, 0x5c, 0x3d, 0x9e, 0xa1, 0xe2, 0x69, 0xa1, 0xb7, - 0x79, 0xe0, 0x6c, 0x34, 0x20, 0xff, 00, 0xad, 0x2a, 0x7b, - 0x10, 0x78, 0xcf, 0x5f, 0xc6, 0x8f, 0x25, 0xbd, 0xd2, 0xfb, - 0xf6, 0x15, 0xf4, 0xbf, 0x4b, 0x37, 0xf7, 0x1e, 0xad, 0x45, - 0x78, 0xf7, 0x8a, 0xfc, 0x7, 0xa6, 0x7c, 0x39, 0xd0, 0x3f, - 0xe1, 0x2c, 0xf0, 0x80, 0xb8, 0xb2, 0xd4, 0x74, 0xc2, 0x8d, - 0x71, 0x9b, 0x97, 0x75, 0xbc, 0x88, 0xb2, 0x87, 0x59, 0x3, - 0x12, 0x39, 0xeb, 0xc0, 0x1c, 0xf6, 0xe9, 0x8d, 0x4f, 0x1b, - 0xea, 0x33, 0x78, 0x9f, 0x5d, 0xf0, 0xbf, 0x84, 0xac, 0x6e, - 0xe7, 0xb6, 0xb1, 0xd6, 0x63, 0x7b, 0xbb, 0xe9, 0x20, 0x7d, - 0xae, 0xd6, 0xc1, 0x33, 0xb3, 0x3d, 0x83, 0x72, 0xf, 0xf8, - 0x66, 0x8d, 0xf4, 0x5b, 0xde, 0xdf, 0xaf, 0xdd, 0xbf, 0xdc, - 0x37, 0xa6, 0xaf, 0x6f, 0xeb, 0xfe, 0x7, 0xde, 0x7a, 0x6d, - 0x15, 0xe4, 0x5a, 0xe7, 0x87, 0x34, 0xef, 0x85, 0x5a, 0xa6, - 0x8b, 0xaf, 0xf8, 0x60, 0x4d, 0x65, 0x61, 0x71, 0x7d, 0x15, - 0x96, 0xa7, 0x66, 0x67, 0x77, 0x8e, 0x68, 0xdf, 0x38, 0x7f, - 0x9c, 0x93, 0xb9, 0x7b, 0x73, 0xdf, 0xeb, 0x9f, 0x5d, 0xa3, - 0x75, 0x74, 0x1d, 0x6c, 0x14, 0x57, 0x8d, 0x47, 0xe3, 0x9b, - 0xb1, 0xf1, 0xd6, 0x78, 0x5b, 0x49, 0xf1, 0x24, 0x96, 0x8b, - 0x65, 0xf6, 0x44, 0xb4, 0x16, 0xe4, 0x84, 0x63, 0x2a, 0x83, - 0x71, 0xb3, 0x76, 0x4, 0x47, 0x1f, 0x7f, 0xd3, 0x15, 0xd9, - 0x6b, 0x7f, 0x12, 0xf4, 0x9d, 0x27, 0x5a, 0x93, 0x47, 0xb5, - 0xb0, 0xd5, 0xf5, 0xbd, 0x42, 0x15, 0xdd, 0x71, 0x6, 0x91, - 0x69, 0xf6, 0x83, 0x6e, 0x38, 0xc6, 0xfe, 0x40, 0x19, 0xcf, - 0x6c, 0xe3, 0xbe, 0x38, 0xa3, 0xa2, 0x7d, 0xc3, 0xab, 0x5d, - 0x8e, 0xce, 0x8a, 0xc3, 0xf0, 0xbf, 0x8b, 0x74, 0x9f, 0x17, - 0xe9, 0xcd, 0x79, 0xa5, 0x4c, 0xc4, 0xc6, 0xdb, 0x27, 0x82, - 0x55, 0xd9, 0x2c, 0xf, 0xfd, 0xd7, 0x5e, 0xc7, 0xf3, 0x1c, - 0x1c, 0x13, 0x5b, 0x17, 0x10, 0x47, 0x75, 0x6f, 0x2d, 0xbc, - 0xcb, 0xba, 0x29, 0x50, 0xa3, 0xae, 0x48, 0xca, 0x91, 0x82, - 0x38, 0xa1, 0xdd, 0x2, 0xb3, 0x24, 0xa2, 0xbc, 0x8f, 0xc6, - 0x1f, 0xe, 0x3e, 0x19, 0x78, 0x43, 0xc2, 0xf7, 0xba, 0xd5, - 0xd7, 0x87, 0x77, 0x88, 0x13, 0x11, 0xc5, 0xf6, 0xeb, 0x80, - 0x64, 0x90, 0xf0, 0xab, 0xfe, 0xb3, 0xb9, 0xfd, 0x32, 0x6b, - 0x36, 0xd3, 0x4c, 0xbb, 0xf8, 0x51, 0xf0, 0x66, 0xf2, 0xf6, - 0xdd, 0x4c, 0x3e, 0x20, 0xd5, 0xa4, 0x41, 0xb4, 0x1c, 0x88, - 0x1e, 0x43, 0x84, 0x45, 0x4, 0x9f, 0xb8, 0xa4, 0xf5, 0xcf, - 0x3d, 0x73, 0x45, 0xf7, 0xfe, 0xb5, 0x7d, 0x2, 0xdb, 0x7f, - 0x5b, 0x75, 0x3d, 0xba, 0x8a, 0xf2, 0x5d, 0x5f, 0xe1, 0x3e, - 0x9d, 0xa2, 0x78, 0x5a, 0x7d, 0x6f, 0x4b, 0xb9, 0xbe, 0x8b, - 0xc5, 0x96, 0x50, 0xb5, 0xdf, 0xf6, 0xa9, 0xbb, 0x76, 0x92, - 0x69, 0x42, 0x96, 0x70, 0xe0, 0x9d, 0xa4, 0x37, 0x20, 0xf1, - 0xd0, 0xf3, 0x9e, 0x73, 0x27, 0x89, 0x3c, 0x65, 0xa8, 0x6b, - 0x3e, 0x3, 0xf0, 0x9c, 0x7a, 0x55, 0xc3, 0xd9, 0xea, 0x1e, - 0x26, 0x9a, 0x1b, 0x77, 0x9e, 0x6, 0xc3, 0x42, 0xf, 0xfa, - 0xd2, 0xa7, 0xb1, 0x7, 0x8c, 0xf5, 0xfc, 0x68, 0xf2, 0x5b, - 0xdd, 0x2f, 0xbf, 0x61, 0x5f, 0x4b, 0xf4, 0xb3, 0x7f, 0x71, - 0xea, 0xd4, 0x57, 0x8f, 0x78, 0xaf, 0xc0, 0x7a, 0x67, 0xc3, - 0x9d, 0x3, 0xfe, 0x12, 0xcf, 0x8, 0xb, 0x8b, 0x2d, 0x47, - 0x4c, 0x28, 0xd7, 0x19, 0xb9, 0x77, 0x5b, 0xc8, 0x8b, 0x28, - 0x75, 0x90, 0x31, 0x23, 0x9e, 0xbc, 0x1, 0xcf, 0x6e, 0x98, - 0xd4, 0xf1, 0xbe, 0xa3, 0x37, 0x89, 0xf5, 0xdf, 0xb, 0xf8, - 0x4a, 0xc6, 0xee, 0x7b, 0x6b, 0x1d, 0x66, 0x37, 0xbb, 0xbe, - 0x92, 0x7, 0xda, 0xed, 0x6c, 0x13, 0x3b, 0x33, 0xd8, 0x37, - 0x20, 0xff, 00, 0x86, 0x68, 0xdf, 0x45, 0xbd, 0xed, 0xfa, - 0xfd, 0xdb, 0xfd, 0xc3, 0x7a, 0x6a, 0xf6, 0xfe, 0xbf, 0xe0, - 0x7d, 0xe7, 0xa6, 0xd1, 0x5e, 0x45, 0xae, 0x78, 0x73, 0x4e, - 0xf8, 0x55, 0xaa, 0x68, 0xba, 0xff, 00, 0x86, 0x4, 0xd6, - 0x56, 0x17, 0x17, 0xd1, 0x59, 0x6a, 0x76, 0x66, 0x77, 0x78, - 0xe6, 0x8d, 0xf3, 0x87, 0xf9, 0xc9, 0x3b, 0x97, 0xb7, 0x3d, - 0xfe, 0xb9, 0xf5, 0xda, 0x37, 0x57, 0x41, 0xd6, 0xc1, 0x45, - 0x72, 0x5e, 0x23, 0xf8, 0x85, 0xa4, 0xf8, 0x7b, 0x56, 0x4d, - 0x21, 0x6d, 0x35, 0x3d, 0x57, 0x55, 0x64, 0xf3, 0x5a, 0xcb, - 0x4a, 0xb6, 0x33, 0xcb, 0x1a, 0x7f, 0x79, 0x86, 0x40, 0x3, - 0xf1, 0xcf, 0x23, 0x8c, 0x1a, 0xe2, 0xfc, 0x39, 0xe2, 0x2b, - 0xf, 0x13, 0xfc, 0x79, 0xfe, 0xd0, 0xd3, 0xcc, 0xa1, 0x6, - 0x80, 0x62, 0x96, 0x29, 0xa3, 0x29, 0x24, 0x32, 0x2c, 0xbf, - 0x34, 0x6e, 0xa7, 0xa3, 0x3, 0xc1, 0xfd, 0x33, 0x44, 0x7d, - 0xe7, 0x65, 0xe7, 0xf8, 0x26, 0xf, 0x45, 0xa9, 0xec, 0x34, - 0x57, 0x19, 0xad, 0xfc, 0x4b, 0xd2, 0x74, 0x9d, 0x6a, 0x4d, - 0x1e, 0xd6, 0xc3, 0x57, 0xd6, 0xf5, 0x8, 0x57, 0x75, 0xc4, - 0x1a, 0x45, 0xa7, 0xda, 0xd, 0xb8, 0xe3, 0x1b, 0xf9, 00, - 0x67, 0x3d, 0xb3, 0x8e, 0xf8, 0xe2, 0xa7, 0xb4, 0xf8, 0x89, - 0xa1, 0xea, 0x1e, 0x12, 0xbe, 0xf1, 0x15, 0x97, 0xda, 0x6e, - 0x21, 0xb0, 0x42, 0xd7, 0x76, 0x8b, 0x18, 0x17, 0x10, 0x90, - 0x32, 0xca, 0xc8, 0xc4, 00, 0x47, 0x3d, 0xf1, 0xc1, 0xc1, - 0x34, 0xae, 0xad, 0x70, 0xeb, 0x63, 0xac, 0xa2, 0xb9, 0xed, - 0x53, 0xc6, 0x7a, 0x56, 0x93, 0xe0, 0xa1, 0xe2, 0xb9, 0xfc, - 0xe7, 0xd3, 0x9a, 0x18, 0xe6, 0x55, 0x8c, 0x29, 0x91, 0x83, - 0xe0, 0x28, 00, 0x90, 0x33, 0xf3, 0xe, 0xf4, 0xdb, 0xdf, - 0x1a, 0xe9, 0x36, 0x1e, 0x6, 0x5f, 0x17, 0x48, 0x27, 0x6d, - 0x35, 0xa0, 0x8e, 0x75, 0x54, 0x40, 0x64, 0x21, 0xc8, 00, - 0x63, 0x38, 0xce, 0x48, 0x1d, 0x7f, 0x1a, 0x6f, 0x4b, 0xdf, - 0xa0, 0x2d, 0x6d, 0x6e, 0xa7, 0x47, 0x45, 0x71, 0x7a, 0xcf, - 0xc4, 0xed, 0xf, 0x41, 0xd5, 0xed, 0xf4, 0xbb, 0xfb, 0x7d, - 0x41, 0x6e, 0xee, 0x2c, 0xd6, 0xee, 0x18, 0xe3, 0x84, 0x48, - 0xd2, 0x16, 0x3b, 0x56, 0x25, 0xa, 0xc4, 0x99, 0x9, 0xe3, - 00, 0x63, 0xdf, 0x15, 0x27, 0x87, 0x3e, 0x23, 0x69, 0x5e, - 0x21, 0xd6, 0xe4, 0xd1, 0x5a, 0xc7, 0x55, 0xd2, 0x75, 0x45, - 0x8f, 0xcd, 0x4b, 0x4d, 0x52, 0xd7, 0xc9, 0x79, 0x13, 0xbb, - 0x28, 0xc9, 0xe9, 0xef, 0x8f, 0x6c, 0xe0, 0xe1, 0xd8, 0x2f, - 0xd4, 0xec, 0x28, 0xaf, 0x34, 0xf0, 0x97, 0xfc, 0x96, 0xdf, - 0x1d, 0xff, 00, 0xd7, 0x1b, 0x4f, 0xfd, 0x2, 0xaf, 0xea, - 0x1f, 0x16, 0x74, 0x5b, 0x5b, 0xfb, 0xbb, 0x5d, 0x3f, 0x4b, - 0xd7, 0x35, 0xb5, 0xb3, 0xe2, 0xea, 0xe3, 0x4a, 0xb2, 0xf3, - 0xa1, 0x85, 0xb9, 0xca, 0xb3, 0x96, 0x3, 0x23, 0x19, 0xc8, - 0xe3, 0xdf, 0xad, 0x4a, 0x6a, 0xc9, 0xf7, 0x1b, 0x5a, 0xb5, - 0xd8, 0xef, 0x28, 0xac, 0x9d, 0x2b, 0xc4, 0xda, 0x36, 0xb5, - 0xa0, 0x7f, 0x6e, 0x58, 0x5f, 0xc5, 0x2e, 0x9c, 0x15, 0x9d, - 0xe6, 0x27, 0x68, 0x8c, 0x28, 0xcb, 0x6e, 0x7, 0x95, 0x23, - 0xbe, 0x6b, 0x8f, 0x9b, 0xe3, 0x1e, 0x92, 0x96, 0xd2, 0xdf, - 0x5b, 0x78, 0x73, 0xc5, 0x37, 0x9a, 0x5a, 0x2, 0xc3, 0x51, - 0x83, 0x4d, 0xff, 00, 0x47, 0x64, 0x1d, 0x58, 0x33, 0x30, - 0xe0, 0x60, 0xf5, 0x3, 0xa5, 0x3d, 0x9d, 0x84, 0xb5, 0x57, - 0x47, 0xa3, 0x51, 0x58, 0xf1, 0x78, 0xa7, 0x44, 0x9f, 0xc3, - 0x1f, 0xf0, 0x92, 0x26, 0xa3, 0x11, 0xd2, 0x3c, 0xa3, 0x31, - 0xb9, 0x39, 00, 0x28, 0xe0, 0xf1, 0x8c, 0xe7, 0x3c, 0x63, - 0x19, 0xcf, 0x18, 0xcd, 0x79, 0xcf, 0x8b, 0x7e, 0x29, 0x68, - 0xda, 0xbf, 0x82, 0x35, 0x9b, 0x53, 0xa6, 0xeb, 0x56, 0x30, - 0x5e, 0xd8, 0xcd, 0x1d, 0x95, 0xf5, 0xed, 0x91, 0x8e, 0xde, - 0xe9, 0x8a, 0x9d, 0xaa, 0x8f, 0x93, 0x92, 0xc3, 0x24, 0x64, - 0xe, 0x9e, 0xbc, 0x52, 0x93, 0xb5, 0xfb, 0xa1, 0xa5, 0x7b, - 0x1e, 0xbd, 0x45, 0x79, 0xce, 0x8b, 0xe3, 0x2d, 0x33, 0xc2, - 0x7f, 0xd, 0xbc, 0x26, 0xb7, 0x69, 0x75, 0x75, 0x79, 0x77, - 0x61, 0xa, 0xda, 0xd8, 0xd9, 0x42, 0x65, 0x9e, 0x72, 0x11, - 0x73, 0xb5, 0x7d, 0xb3, 0x9e, 0x48, 0xfc, 0xeb, 0x67, 0xc3, - 0xbf, 0x10, 0xb4, 0xaf, 0x10, 0x6a, 0xcd, 0xa4, 0x35, 0x9e, - 0xa7, 0xa4, 0xea, 0xa2, 0x33, 0x2a, 0x59, 0x6a, 0xb6, 0xa6, - 0x9, 0x64, 0x8c, 0x7f, 0x1a, 0xf2, 0x41, 0x1d, 0x7b, 0xe7, - 0x83, 0xc6, 0x5, 0x5b, 0x8d, 0xa4, 0xe2, 0xba, 0x12, 0x9e, - 0x89, 0xb3, 0xad, 0xa2, 0x8a, 0xf3, 0xf9, 0x3e, 0x2f, 0x68, - 0x42, 0xf6, 0xf2, 0xc2, 0xd7, 0x4d, 0xd6, 0xaf, 0xb5, 0x1b, - 0x4b, 0xa9, 0x2d, 0x9e, 0xca, 0xca, 0xd0, 0x4d, 0x33, 0x4, - 0xfb, 0xd2, 0x5, 0xd, 0xf7, 0x33, 0x81, 0x92, 0x41, 0xc9, - 0xe9, 0xd7, 0x13, 0x7e, 0x85, 0x5b, 0xa9, 0xe8, 0x14, 0x56, - 0xf, 0x85, 0xbc, 0x5f, 0xa4, 0xf8, 0xbe, 0xca, 0x69, 0xf4, - 0xd7, 0x95, 0x65, 0xb7, 0x93, 0xca, 0xb9, 0xb5, 0xb8, 0x8c, - 0xc7, 0x35, 0xbb, 0xff, 00, 0x75, 0xd4, 0xf4, 0x3f, 0x4c, - 0x8e, 0xf, 0x3c, 0x1a, 0xc2, 0xbf, 0xf8, 0xad, 0xa4, 0x5b, - 0x5f, 0xdd, 0x5a, 0xe9, 0xda, 0x4e, 0xbb, 0xad, 0xad, 0xa1, - 0xdb, 0x73, 0x71, 0xa4, 0xd9, 0x79, 0xd0, 0xc4, 0xe3, 0xaa, - 0x97, 0xc8, 0xe4, 0x63, 0x3c, 0x64, 0x7b, 0xd0, 0xf4, 0x76, - 0x62, 0x5a, 0x9d, 0xdd, 0x15, 0x85, 0x17, 0x8b, 0xf4, 0x6b, - 0xaf, 0x9, 0x4f, 0xe2, 0x7b, 0x1b, 0x83, 0x79, 0xa6, 0xc3, - 0xb, 0xcc, 0x5a, 0x15, 0xf9, 0x88, 0x40, 0x4b, 0xd, 0xad, - 0x8c, 0x37, 0x1d, 0xe, 0x2b, 0x23, 0x43, 0xf8, 0x97, 0xa6, - 0xf8, 0x8f, 0x50, 0xb2, 0xb6, 0xd3, 0x34, 0x8d, 0x6e, 0x68, - 0x2e, 0xd4, 0x11, 0x7f, 0xf6, 0x40, 0x2d, 0xa3, 0x6d, 0x85, - 0x8a, 0x34, 0x9b, 0xb1, 0xb8, 0x63, 0x4, 0xc, 0xf3, 0xc7, - 0x34, 0x5b, 0x5b, 0x7, 0x4b, 0xf4, 0x3b, 0x4a, 0x2a, 0x9e, - 0xad, 0xa9, 0x43, 0xa3, 0x68, 0xf7, 0x9a, 0x9d, 0xc2, 0xc8, - 0xd0, 0x5a, 0x42, 0xf3, 0xc8, 0xb1, 0x80, 0x58, 0xaa, 0x8c, - 0x9c, 0x64, 0x81, 0x9e, 0x3d, 0x6b, 0x86, 0x93, 0xe3, 0x36, - 0x80, 0xb6, 0x31, 0x5f, 0xc1, 0xa5, 0xeb, 0xd7, 0x5a, 0x79, - 0x44, 0x69, 0xef, 0x6d, 0xec, 0x77, 0xc1, 0x6a, 0x5b, 0x19, - 0x49, 0x1f, 0x76, 0x37, 00, 0x46, 0x42, 0xe7, 0x19, 0xc7, - 0x5e, 0x28, 0xb, 0x1e, 0x8b, 0x45, 0x70, 0x5a, 0x97, 0xc5, - 0xcf, 0xe, 0xd8, 0x83, 0x3d, 0xb5, 0xb6, 0xab, 0xaa, 0x69, - 0xf1, 0xed, 0xf3, 0xf5, 0x1d, 0x3a, 0xd0, 0xcb, 0x6d, 0x6e, - 0x4e, 0xe, 0x1e, 0x4c, 0x81, 0x90, 0x18, 0x12, 0x6, 0x71, - 0x9c, 0x75, 0xe2, 0xba, 0x5b, 0xef, 0x14, 0xe8, 0x9a, 0x6f, - 0x87, 0x17, 0xc4, 0x17, 0x7a, 0x84, 0x51, 0xe9, 0x6f, 0x1a, - 0xc8, 0x93, 0xf2, 0x43, 0x86, 0x19, 0x5c, 0xe, 0xa4, 0x9f, - 0x4c, 0x66, 0x87, 0xa2, 0xbb, 0xe, 0xb6, 0x36, 0x28, 0xae, - 0x6, 0xc3, 0xe2, 0xde, 0x89, 0x73, 0x79, 0x69, 0x6, 0xa1, - 0xa5, 0xeb, 0x9a, 0x2c, 0x57, 0x98, 0x16, 0xd7, 0x7a, 0xa5, - 0x97, 0x93, 0x4, 0xcc, 0x71, 0x80, 0xae, 0x18, 0xf5, 0x7, - 0x39, 0x3c, 0x63, 0xbd, 0x6b, 0x78, 0xab, 0xc7, 0xda, 0x27, - 0x83, 0x2f, 0x74, 0xeb, 0x7d, 0x65, 0xa7, 0x89, 0x6f, 0x84, - 0x85, 0x27, 0x44, 0xc, 0x91, 0x84, 00, 0x9d, 0xdc, 0xee, - 0xe7, 0x20, 00, 0x1, 0x24, 0xd0, 0xb, 0x5d, 0x8e, 0xa2, - 0x8a, 0xe2, 0x34, 0xaf, 0x8a, 0x3a, 0x4e, 0xa1, 0xaf, 0xdb, - 0x68, 0xd7, 0x9a, 0x56, 0xb7, 0xa3, 0x5d, 0xdd, 0x83, 0xf6, - 0x5f, 0xed, 0x5b, 0x2f, 0x21, 0x67, 0x23, 0xb2, 0x9c, 0x9e, - 0x7e, 0xb8, 0x1d, 0xba, 0x90, 0x2b, 0x93, 0xf1, 0xb7, 0x8d, - 0xae, 0xf4, 0xdf, 0x8b, 0xfe, 0x1f, 0xb7, 0x4d, 0x33, 0xc4, - 0x52, 0xda, 0x59, 0xac, 0xde, 0x65, 0xb5, 0xb4, 0x5, 0x96, - 0xf5, 0x8c, 0x67, 0xd, 0x12, 0xee, 0xc4, 0x9b, 0x77, 0x72, - 0x7b, 0x73, 0x42, 0xdd, 0x2e, 0xe1, 0xd1, 0xf9, 0x1e, 0xc7, - 0x45, 0x78, 0xc5, 0x8f, 0x8a, 0xec, 0x7c, 0x3d, 0xf1, 0x83, - 0xc6, 0x53, 0x5c, 0xdb, 0xde, 0xcf, 0x73, 0x77, 0xd, 0xa0, - 0xb6, 0xb1, 0xb4, 0xb7, 0x32, 0xdc, 0x4c, 0xc2, 0x2d, 0xc4, - 0x2a, 0xf, 0x41, 0xc9, 0xc9, 00, 0x7a, 0xd7, 0xa0, 0x78, - 0x53, 0xc7, 0x7a, 0x57, 0x8b, 0x67, 0xbc, 0xb4, 0xb6, 0x82, - 0xfa, 0xc7, 0x50, 0xb2, 0x23, 0xed, 0x16, 0x3a, 0x84, 0x1e, - 0x54, 0xc8, 0xf, 0x46, 0xdb, 0x93, 0xc7, 0xe3, 0x91, 0xc6, - 0x71, 0x91, 0x91, 0x6a, 0x93, 0x7, 0xa3, 0x3a, 0x7a, 0x28, - 0xa2, 0x80, 0xa, 0x6b, 0x77, 0xfa, 0x53, 0xa9, 0xac, 0x3a, - 0xfd, 0x28, 0x3, 0xce, 0x7c, 0x5b, 0x28, 0x83, 0xc6, 0x76, - 0x12, 0x64, 0x67, 0xc9, 0x23, 0x14, 0xf4, 0xf1, 0x45, 0xbc, - 0x1c, 0x34, 0xc0, 0x11, 0xef, 0x4c, 0xf8, 0x97, 0xa5, 0xce, - 0xf6, 0xd0, 0xea, 0x96, 0x99, 0x32, 0xc1, 0x90, 0xca, 0x7, - 0x6a, 0xf1, 0xe9, 0xa5, 0x9e, 0x63, 0xb9, 0xd9, 0xb7, 0x7d, - 0x6b, 0x82, 0xb6, 0x23, 0xd8, 0x49, 0xab, 0x6f, 0xa9, 0xe6, - 0x62, 0x31, 0x7f, 0x56, 0x93, 0x56, 0xdf, 0x53, 0xda, 0x3f, - 0xe1, 0x30, 0xb4, 0x6f, 0xf9, 0x6c, 0x3f, 0x3a, 0x95, 0x7c, - 0x57, 0x6a, 0x4e, 0x3c, 0xe5, 0xfc, 0xeb, 0xc2, 0x1b, 0xcf, - 0x1d, 0x24, 0x6f, 0xce, 0x90, 0x3d, 0xc8, 0xe9, 0x23, 0x7e, - 0x75, 0x92, 0xcc, 0x1f, 0x63, 0x15, 0x9a, 0x3e, 0xc7, 0xbe, - 0x27, 0x89, 0xed, 0x49, 0xe2, 0x61, 0xf9, 0xd4, 0xa3, 0xc4, - 0x96, 0xc7, 0xa4, 0xc3, 0xf3, 0xaf, 00, 0x17, 0x17, 0x43, - 0xa4, 0xad, 0xf9, 0xd3, 0xc5, 0xed, 0xea, 0xf4, 0x95, 0xff, - 00, 0x3a, 0xa5, 0x98, 0x79, 0x14, 0xb3, 0x4f, 0x23, 0xe8, - 0x24, 0xf1, 0xc, 0x5f, 0xc3, 0x30, 0x1f, 0x8d, 0x4a, 0x3c, - 0x40, 0x87, 0xfe, 0x5e, 0x3f, 0xf1, 0xea, 0xf9, 0xe8, 0x6a, - 0x77, 0xeb, 0xcf, 0x9c, 0xff, 00, 0x9d, 0x3d, 0x75, 0xad, - 0x45, 0x7f, 0xe5, 0xb3, 0x55, 0x2c, 0x7a, 0xec, 0x52, 0xcc, - 0xd7, 0xf2, 0x9f, 0x43, 0xd, 0x75, 0x4f, 0xfc, 0xb7, 0xff, - 00, 0xc7, 0xa9, 0xeb, 0xad, 0x8f, 0xf9, 0xeb, 0x9f, 0xa9, - 0xaf, 0x9e, 0x97, 0x5f, 0xd4, 0x53, 0xfe, 0x5a, 0xb7, 0xe7, - 0x52, 0xaf, 0x89, 0xf5, 0x35, 0x3f, 0xeb, 0xe, 0x29, 0xac, - 0x7c, 0x7b, 0x14, 0xb3, 0x38, 0x76, 0x3e, 0x84, 0x1a, 0xd6, - 0x7a, 0x3a, 0xfe, 0x42, 0x9e, 0x35, 0x90, 0x7a, 0x30, 0xfc, - 0xab, 0xe7, 0xd5, 0xf1, 0x76, 0xa6, 0xbf, 0xc7, 0x53, 0x2f, - 0x8c, 0xf5, 0x1, 0x8c, 0x93, 0xf9, 0xd5, 0x2c, 0x75, 0x3e, - 0xc5, 0xac, 0xc6, 0x9f, 0x63, 0xdf, 0x97, 0x57, 0xcf, 0x56, - 0x14, 0xff, 00, 0xed, 0x75, 0xf4, 0x5f, 0xce, 0xbc, 0x11, - 0x3c, 0x73, 0x7c, 0xbd, 0x72, 0x6a, 0x65, 0xf1, 0xf5, 0xe0, - 0xfe, 0x13, 0xf9, 0xd5, 0x7d, 0x76, 0x99, 0x5f, 0xda, 0x14, - 0x4f, 0x77, 0x1a, 0xaa, 0x91, 0xd0, 0x53, 0x86, 0xa8, 0xa7, - 0xb0, 0xfc, 0xeb, 0xc3, 0x13, 0xe2, 0xd, 0xc0, 0xea, 0xd, - 0x4e, 0x9f, 0x10, 0xe4, 0xfe, 0x20, 0x69, 0xfd, 0x6e, 0x97, - 0x72, 0xbe, 0xbf, 0x47, 0xb9, 0xed, 0xff, 00, 0xda, 0x51, - 0xfb, 0xd3, 0x86, 0xa3, 0x11, 0x1d, 0xf, 0xe7, 0x5e, 0x28, - 0xbf, 0x11, 0x7d, 0x54, 0xd4, 0xe9, 0xf1, 0x19, 0xf, 0x50, - 0x45, 0x52, 0xc5, 0x52, 0xee, 0x52, 0xc6, 0xd1, 0x7d, 0x4f, - 0x65, 0x1a, 0x84, 0x44, 0xf7, 0xa5, 0xfb, 0x6c, 0x5e, 0xa2, - 0xbc, 0x81, 0x3e, 0x22, 0x43, 0xdf, 0x35, 0x3a, 0xfc, 0x41, - 0xb6, 0x3d, 0x5e, 0x9a, 0xc4, 0xd2, 0xee, 0x52, 0xc5, 0xd1, - 0x7f, 0x68, 0xf5, 0x9f, 0xb4, 0xc0, 0xc3, 0x92, 0xbf, 0x95, - 0x29, 0xba, 0x84, 0xf5, 0x60, 0x6b, 0xcb, 0x17, 0xc7, 0xf6, - 0x87, 0xfe, 0x5a, 0xa, 0x9d, 0x7c, 0x75, 0x66, 0x7a, 0xc9, - 0x55, 0xed, 0xa9, 0xf7, 0x2b, 0xeb, 0x14, 0xbf, 0x98, 0xf4, - 0xc2, 0xf6, 0xf2, 0x1, 0xb8, 0x23, 0x63, 0xd7, 0x14, 0xc6, - 0x82, 0xca, 0x43, 0x96, 0x86, 0x12, 0x7d, 0xc0, 0xaf, 0x3d, - 0x5f, 0x1a, 0xd9, 0x91, 0xfe, 0xb4, 0x7e, 0x75, 0x32, 0x78, - 0xc6, 0xcc, 0xff, 00, 0xcb, 0x61, 0xf9, 0xd3, 0x55, 0x60, - 0xfa, 0x94, 0xab, 0x53, 0x7d, 0x4e, 0xdd, 0xb4, 0xdd, 0x29, - 0xc9, 0x2d, 0x65, 0x68, 0xc4, 0xf5, 0x26, 0x35, 0x26, 0xa2, - 0xff, 00, 0x84, 0x7b, 0x43, 0x7c, 0x9f, 0xec, 0xab, 0x36, - 0xcf, 0x7f, 0x25, 0x4f, 0xf4, 0xae, 0x4d, 0x7c, 0x5b, 0x66, - 0x4f, 0xfa, 0xe1, 0xf8, 0x9a, 0x99, 0x7c, 0x51, 0x6a, 0x47, - 0x12, 0x8f, 0xce, 0xab, 0x9e, 0x3d, 0xc7, 0xed, 0x23, 0xdc, - 0xdd, 0x7f, 0x6, 0xf8, 0x72, 0x45, 0x20, 0xe9, 0x16, 0xb8, - 0x3d, 0x7f, 0x74, 0x3f, 0xc2, 0xaa, 0xcb, 0xf0, 0xf7, 0xc2, - 0xb3, 0xa8, 0x57, 0xd1, 0xed, 0xc8, 0x1d, 0x82, 0x63, 0xf9, - 0x55, 0x15, 0xf1, 0x2d, 0xb1, 0xe9, 0x30, 0xfc, 0xea, 0x51, - 0xe2, 0x18, 0x9, 0xc0, 0x98, 0x7e, 0x74, 0xee, 0x8a, 0xe6, - 0x5d, 0xc6, 0xcb, 0xf0, 0xb7, 0xc1, 0xb3, 0xc, 0x36, 0x8f, - 0x8, 0x3, 0xd0, 0x91, 0xfd, 0x6b, 0x37, 0x50, 0xf8, 0x3d, - 0xe0, 0xd9, 0xa2, 0x3b, 0x6c, 0x84, 0x19, 0x1c, 0x15, 0x26, - 0xb6, 0x57, 0xc4, 0x11, 0x60, 0x62, 0x6e, 0x9e, 0xf5, 0x5a, - 0x7d, 0x7a, 0x32, 0x9, 0x12, 0x2, 0x7e, 0xb4, 0x5d, 0x5, - 0xd3, 0x20, 0xd1, 0xf4, 0x1d, 0x3b, 0xc2, 0x7a, 0x41, 0xb0, - 0xb0, 0xcf, 0x97, 0x92, 0x49, 0x3d, 0x4d, 0x72, 0x9e, 0x2e, - 0xbc, 0x11, 0xd8, 0x4c, 0x41, 0xea, 0xf, 0x3e, 0x95, 0xa5, - 0xa8, 0x6b, 0x60, 0x82, 0x37, 0x57, 0x9f, 0xf8, 0xb3, 0x51, - 0x69, 0xed, 0x76, 0x6, 0x3c, 0x83, 0x9a, 0x8a, 0xae, 0xd0, - 0x64, 0x56, 0x76, 0xa6, 0xd9, 0xe7, 0x1a, 0x8c, 0x9e, 0x64, - 0xa4, 0x67, 0xa9, 0xc5, 0x7d, 0x27, 0xe0, 0x7b, 0xf, 0xec, - 0xef, 0xa, 0xd8, 0x41, 0x80, 0x8, 0x8c, 0x13, 0x8f, 0x7a, - 0xf9, 0xdb, 0x4a, 0xb2, 0x7d, 0x4b, 0xc4, 0x36, 0x56, 0xa1, - 0x59, 0xbc, 0xc9, 0x94, 0x1c, 0x76, 0x19, 0xaf, 0xa9, 0xac, - 0xa2, 0x11, 0x43, 0x1c, 0x63, 0xa2, 0x28, 0x15, 0x9e, 0x1e, - 0x36, 0x89, 0x8e, 0x16, 0x36, 0x89, 0xa9, 00, 0xad, 0x38, - 0x6, 0x23, 0xfc, 0x6b, 0x3e, 0x1, 0xc5, 0x68, 0xc3, 0xf7, - 0x3f, 0x1a, 0xe8, 0x3a, 0x89, 0x28, 0xa2, 0x8a, 00, 0xf3, - 0x58, 0x3f, 0xe4, 0x35, 0xaf, 0xff, 00, 0xd8, 0x49, 0xff, - 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, 0xff, 00, 0x90, 0x54, - 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd7, 0x17, 0x7, 0xfc, 0x86, - 0xb5, 0xff, 00, 0xfb, 0x9, 0x3f, 0xfe, 0x80, 0x95, 0xda, - 0x68, 0xff, 00, 0xf2, 0xa, 0x87, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xab, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, 0x7f, - 0xed, 0xa7, 0xfe, 0x8c, 0x6a, 0xe8, 0x2b, 0x9f, 0xf0, 0x47, - 0xfc, 0x8a, 0x16, 0x3f, 0xf6, 0xd3, 0xff, 00, 0x46, 0x35, - 0x74, 0x14, 00, 0x57, 0x84, 0x7c, 0x60, 0xf8, 0x5d, 0xe2, - 0x9f, 0x16, 0x78, 0xd2, 0xdf, 0x53, 0xd1, 0xe2, 0x8e, 0xea, - 0xd6, 0x58, 0x52, 0x16, 0xdf, 0x3a, 0xa7, 0xd9, 0xf6, 0x9e, - 0x49, 0xc, 0x79, 0x53, 0x9c, 0xfc, 0xb9, 0x3d, 0x78, 0xe9, - 0x9f, 0x77, 0xa2, 0x93, 0x49, 0xb4, 0xfb, 0xd, 0x3b, 0x5c, - 0xa7, 0xa4, 0xda, 0x4b, 0xa7, 0xe8, 0xd6, 0x36, 0x73, 0xcc, - 0x67, 0x96, 0xde, 0x4, 0x89, 0xe5, 0x39, 0xf9, 0xd9, 0x54, - 0x2, 0x79, 0xf5, 0xc5, 0x5c, 0xa2, 0x8a, 0xa6, 0xee, 0xee, - 0xc9, 0x4a, 0xca, 0xc8, 0x2b, 0x83, 0xf8, 0xcd, 0x6f, 0x2d, - 0xcf, 0xc2, 0x8d, 0x6d, 0x62, 0x52, 0xcc, 0x8b, 0x1c, 0x84, - 0xf, 0xee, 0xac, 0x8a, 0x49, 0xfc, 00, 0x26, 0xbb, 0xca, - 0x8a, 0xea, 0xd6, 0xb, 0xdb, 0x49, 0xad, 0x6e, 0xa2, 0x59, - 0x6d, 0xe6, 0x43, 0x1c, 0x91, 0xb8, 0xc8, 0x65, 0x23, 0x4, - 0x1f, 0xc2, 0xa2, 0x4a, 0xea, 0xc8, 0xb8, 0xbb, 0x49, 0x33, - 0x84, 0xf0, 0xef, 0xc3, 0xbf, 0x9, 0xde, 0xf8, 0x26, 0xc8, - 0x5e, 0x69, 0x76, 0x9a, 0x8c, 0xb7, 0xb6, 0x8b, 0x24, 0xd7, - 0xf3, 0xa0, 0x92, 0x79, 0x19, 0xd4, 0x12, 0xc2, 0x53, 0xf3, - 0xe, 0xbc, 0x60, 0x8c, 0x57, 0x9c, 0xdc, 0x5f, 0x5d, 0xdd, - 0x7c, 0x5, 0xb4, 0x9a, 0xe2, 0x56, 0xbb, 0x8b, 0x48, 0xd6, - 0xd2, 0x31, 0x33, 0x82, 0x77, 0xc1, 0x1c, 0x98, 0x52, 0x7d, - 0x47, 0xcc, 0x7, 0xd0, 0x57, 0x7e, 0x9f, 0xd, 0xb5, 0xdb, - 0x18, 0x1b, 0x4a, 0xd1, 0xfc, 0x79, 0x7f, 0x63, 0xe1, 0xe2, - 0x4a, 0xad, 0x89, 0xb4, 0x8e, 0x49, 0x63, 0x8c, 0xfd, 0xe4, - 0x49, 0xc9, 0xdc, 0xbd, 0xf6, 0x9c, 0x7c, 0xbc, 0x75, 0xef, - 0xd5, 0x43, 0xe0, 0xfd, 0x16, 0x1f, 0x7, 0x7f, 0xc2, 0x2a, - 0xb6, 0xb9, 0xd2, 0xbc, 0x83, 0x1, 0x8c, 0x9e, 0x48, 0x3c, - 0x96, 0x27, 0xfb, 0xc4, 0xf3, 0x9f, 0x5a, 0xb6, 0xee, 0xdc, - 0x97, 0x96, 0x9e, 0x8e, 0xff, 00, 0xf0, 0x3e, 0x64, 0x28, - 0xe8, 0xa2, 0xfe, 0xff, 00, 0x55, 0x6f, 0xf8, 0x3f, 0x22, - 0x6f, 0x13, 0x5d, 0x45, 0x6f, 0xe1, 0xd, 0x5e, 0xed, 0xd8, - 0x8, 0x92, 0xc6, 0x67, 0x2c, 0x4f, 0x18, 0xd8, 0x6b, 0xc7, - 0xad, 0xe1, 0x97, 0x4e, 0xf0, 0xc7, 0xc2, 0x1b, 0x9b, 0x88, - 0xf1, 0x12, 0x5e, 0xaa, 0xb1, 0x23, 0x20, 0x79, 0xbc, 0xa7, - 0xe8, 0x73, 0x5d, 0x68, 0xf8, 0x5b, 0xaa, 0xdc, 0x5a, 0x47, - 0xa2, 0xea, 0x7e, 0x38, 0xd4, 0x6f, 0x7c, 0x33, 0x1b, 0x71, - 0xa7, 0x1b, 0x64, 0x49, 0x5e, 0x30, 0x72, 0xa8, 0xf3, 0x83, - 0xb9, 0x80, 0xe0, 0x1e, 0x6, 0x40, 0xe3, 0x1c, 0x63, 0xb0, - 0xf1, 0x7, 0x85, 0x74, 0xbf, 0x11, 0xf8, 0x74, 0xe8, 0x77, - 0x71, 0xbc, 0x76, 0x80, 0x2f, 0x94, 0x60, 0x6d, 0x8f, 0x9, - 0x5f, 0xba, 0xc8, 0x7b, 0x11, 0x4a, 0xc9, 0x3e, 0x65, 0xdd, - 0x7e, 0xd, 0xff, 00, 0x98, 0x6e, 0xac, 0xfb, 0x35, 0xf7, - 0xd8, 0xc5, 0xf8, 0xb9, 0x70, 0x96, 0xdf, 0xb, 0x35, 0xe6, - 0x90, 0x81, 0xbe, 0x1, 0x1a, 0xe4, 0xf5, 0x2c, 0xea, 00, - 0xfd, 0x6b, 0x9c, 0xf2, 0x64, 0xd3, 0x3e, 0x2b, 0x78, 0x9, - 0x6e, 0x63, 0xb, 0xe6, 0x68, 0x92, 0x5a, 0x82, 0x47, 0x49, - 0x15, 0x32, 0x47, 0xb1, 0xff, 00, 0x1a, 0xd5, 0xb7, 0xf8, - 0x6d, 0xaa, 0xde, 0xdd, 0x58, 0x8f, 0x15, 0xf8, 0xc6, 0xeb, - 0x5d, 0xd3, 0xec, 0x5d, 0x65, 0x82, 0xc8, 0xda, 0x24, 0xa, - 0xce, 0xbf, 0x74, 0xca, 0xc0, 0x93, 0x26, 0x3d, 0xfb, 0xf7, - 0xea, 0xf, 0x43, 0xe2, 0xff, 00, 0x8, 0x5a, 0xf8, 0xbb, - 0x4f, 0x86, 0x29, 0x2e, 0x6e, 0x2c, 0xaf, 0x6d, 0x24, 0xf3, - 0xac, 0xaf, 0x6d, 0x9b, 0x12, 0x5b, 0xc9, 0x8e, 0x8, 0xf5, - 0x1e, 0xa3, 0xbf, 0xa8, 0x3c, 0xd0, 0x95, 0x9f, 0x37, 0xf5, - 0x6b, 0x35, 0xfa, 0xb1, 0xb5, 0x7d, 0x3f, 0xab, 0xdd, 0x3f, - 0xd1, 0x1c, 0xdf, 0xc6, 0x63, 0xe6, 0xf8, 0x5b, 0x4c, 0xb2, - 0x4c, 0x19, 0xee, 0xf5, 0x7b, 0x58, 0xa2, 0x5e, 0xec, 0xdb, - 0x89, 0xfe, 0x95, 0xe8, 0xd5, 0xc3, 0x69, 0x5e, 00, 0xbf, - 0x3a, 0xfd, 0xa6, 0xb3, 0xe2, 0xaf, 0x13, 0x4f, 0xaf, 0xdc, - 0xd8, 0xe4, 0xd9, 0x46, 0x6d, 0x52, 0xda, 0x28, 0x58, 0xf5, - 0x72, 0x88, 0x48, 0x66, 0xf4, 0x3d, 0xbd, 0xf8, 0xc7, 0x73, - 0x42, 0x56, 0x56, 0xf3, 0xbf, 0xe0, 0x97, 0xe8, 0x2d, 0xdd, - 0xfc, 0xad, 0xf9, 0xff, 00, 0x99, 0xe6, 0x76, 0xdf, 0xf2, - 0x71, 0xb7, 0xdf, 0xf6, 0x2f, 0x2f, 0xfe, 0x8d, 0x5a, 0x7f, - 0xc1, 0x65, 0x47, 0xf0, 0xc6, 0xab, 0x75, 0x26, 0xe, 0xa1, - 0x3e, 0xaf, 0x72, 0x6f, 0x9, 0x39, 0x6f, 0x30, 0x11, 0xc1, - 0xfc, 0x31, 0xf9, 0xd6, 0xb6, 0xb7, 0xe0, 0x7b, 0xdb, 0xdf, - 0x1b, 0x5b, 0x78, 0xa7, 0x47, 0xf1, 0x3, 0xe9, 0x57, 0x6b, - 0x6e, 0x2d, 0x6e, 0x53, 0xec, 0x89, 0x3a, 0xcf, 0x10, 0x70, - 0xdb, 0x7e, 0x62, 0x36, 0x9e, 0xd9, 0xe7, 0xb6, 0x31, 0x8e, - 0x6b, 0x5f, 0xfc, 0x3c, 0xbf, 0xb7, 0xd7, 0x6e, 0xf5, 0x6f, - 0x9, 0x78, 0xa2, 0xe3, 0xc3, 0xf2, 0x5f, 0xb1, 0x7b, 0xd8, - 0x3e, 0xca, 0x97, 0x50, 0xca, 0xfc, 0x7c, 0xe1, 0x1c, 0x80, - 0xad, 0xd7, 0x27, 0x9c, 0xe7, 0xb7, 0x71, 0x3b, 0x25, 0xe8, - 0xd7, 0xfe, 0x4d, 0x71, 0xbd, 0x7f, 0x7, 0xf8, 0x58, 0xa3, - 0xa2, 0xaa, 0xc1, 0xf1, 0xf7, 0xc4, 0x71, 0xd9, 0x80, 0x21, - 0x9b, 0x4b, 0x86, 0x5b, 0xb0, 0xbd, 0x3c, 0xec, 0x80, 0xb9, - 0xf7, 0xda, 0x7f, 0x5a, 0xf4, 0xaa, 0xe6, 0xbc, 0x23, 0xe0, - 0xcb, 0x5f, 0xa, 0x45, 0x75, 0x31, 0xbb, 0xb8, 0xd4, 0x35, - 0x4b, 0xe6, 0x59, 0x2f, 0x6f, 0xee, 0x4e, 0x5e, 0x66, 0x3, - 0xb0, 0xfe, 0x15, 0x1c, 0xe0, 0x73, 0x8c, 0xf5, 0x35, 0xd2, - 0xd1, 0xb2, 0x4b, 0xb7, 0xf5, 0xff, 00, 00, 0x5b, 0xb6, - 0xff, 00, 0xae, 0xc7, 0x99, 0x78, 0xe1, 0x47, 0x89, 0x3e, - 0x27, 0x78, 0x53, 0xc2, 0xae, 0xb, 0x59, 0xdb, 0xef, 0xd5, - 0x6e, 0xd3, 0xb3, 0x4, 0xc8, 0x8c, 0x11, 0xdc, 0x6e, 0x4, - 0x1f, 0x66, 0xa9, 0xbe, 0x36, 0x6, 0x8f, 0xc0, 0xb0, 0xdd, - 0xec, 0xdd, 0x1d, 0xae, 0xa3, 0x6d, 0x34, 0xb9, 0x19, 0x1, - 0x43, 0x63, 0x91, 0xf5, 0x22, 0xba, 0x28, 0x7c, 0x24, 0x23, - 0xf8, 0x89, 0x73, 0xe2, 0xd7, 0xbd, 0x32, 0x34, 0xb6, 0x2b, - 0x65, 0x1d, 0xb7, 0x95, 0x8f, 0x2c, 0x6, 0xc, 0x4e, 0xec, - 0xf3, 0x92, 0x3a, 0x63, 0xbf, 0x5a, 0xd8, 0xd5, 0xf4, 0xab, - 0x3d, 0x73, 0x49, 0xba, 0xd2, 0xf5, 0x8, 0xbc, 0xdb, 0x4b, - 0xa8, 0xcc, 0x72, 0x26, 0x71, 0x90, 0x7d, 0xf, 0x63, 0xdc, - 0x1a, 0x5b, 0x45, 0x77, 0x4e, 0xff, 00, 0x8f, 0xf9, 0x24, - 0x56, 0x8e, 0x4e, 0xfb, 0x5a, 0xdf, 0x87, 0xf9, 0xb6, 0x55, - 0xf1, 0x35, 0xd4, 0x56, 0xfe, 0x10, 0xd5, 0xee, 0xdd, 0x80, - 0x89, 0x2c, 0x66, 0x72, 0xc4, 0xf1, 0x8d, 0x86, 0xbc, 0x7a, - 0xde, 0x19, 0x74, 0xef, 0xc, 0x7c, 0x21, 0xb9, 0xb8, 0x8f, - 0x11, 0x25, 0xea, 0xab, 0x12, 0x32, 0x7, 0x9b, 0xca, 0x7e, - 0x87, 0x35, 0xd6, 0x8f, 0x85, 0xba, 0xad, 0xc5, 0xa4, 0x7a, - 0x2e, 0xa7, 0xe3, 0x8d, 0x46, 0xf7, 0xc3, 0x31, 0xb7, 0x1a, - 0x71, 0xb6, 0x44, 0x95, 0xe3, 0x7, 0x2a, 0x8f, 0x38, 0x3b, - 0x98, 0xe, 0x1, 0xe0, 0x64, 0xe, 0x31, 0xc6, 0x3b, 0xf, - 0x10, 0x78, 0x57, 0x4b, 0xf1, 0x1f, 0x87, 0x4e, 0x87, 0x77, - 0x1b, 0xc7, 0x68, 0x2, 0xf9, 0x46, 0x6, 0xd8, 0xf0, 0x95, - 0xfb, 0xac, 0x87, 0xb1, 0x14, 0xec, 0x93, 0xe6, 0x5d, 0xd7, - 0xe0, 0xdf, 0xf9, 0x93, 0xba, 0xb3, 0xec, 0xd7, 0xdf, 0x63, - 0x17, 0xe2, 0xe5, 0xc2, 0x5b, 0x7c, 0x2c, 0xd7, 0x9a, 0x42, - 0x6, 0xf8, 0x4, 0x6b, 0x93, 0xd4, 0xb3, 0xa8, 0x3, 0xf5, - 0xae, 0x73, 0xc9, 0x93, 0x4c, 0xf8, 0xad, 0xe0, 0x25, 0xb9, - 0x8c, 0x2f, 0x99, 0xa2, 0x49, 0x6a, 0x9, 0x1d, 0x24, 0x54, - 0xc9, 0x1e, 0xc7, 0xfc, 0x6b, 0x56, 0xdf, 0xe1, 0xb6, 0xab, - 0x7b, 0x75, 0x62, 0x3c, 0x57, 0xe3, 0x1b, 0xad, 0x77, 0x4f, - 0xb1, 0x75, 0x96, 0xb, 0x23, 0x68, 0x90, 0x2b, 0x3a, 0xfd, - 0xd3, 0x2b, 0x2, 0x4c, 0x98, 0xf7, 0xef, 0xdf, 0xa8, 0x3d, - 0xf, 0x8b, 0xfc, 0x21, 0x6b, 0xe2, 0xed, 0x3e, 0x18, 0xa4, - 0xb9, 0xb8, 0xb2, 0xbd, 0xb4, 0x93, 0xce, 0xb2, 0xbd, 0xb6, - 0x6c, 0x49, 0x6f, 0x26, 0x38, 0x23, 0xd4, 0x7a, 0x8e, 0xfe, - 0xa0, 0xf3, 0x42, 0x56, 0x7c, 0xdf, 0xd5, 0xac, 0xd7, 0xea, - 0xc6, 0xd5, 0xf4, 0xfe, 0xaf, 0x74, 0xff, 00, 0x44, 0x73, - 0x7f, 0x19, 0x8f, 0x9b, 0xe1, 0x6d, 0x32, 0xc9, 0x30, 0x67, - 0xbb, 0xd5, 0xed, 0x62, 0x89, 0x7b, 0xb3, 0x6e, 0x27, 0xfa, - 0x57, 0xa3, 0x57, 0xd, 0xa5, 0x78, 0x2, 0xfc, 0xeb, 0xf6, - 0x9a, 0xcf, 0x8a, 0xbc, 0x4d, 0x3e, 0xbf, 0x73, 0x63, 0x93, - 0x65, 0x19, 0xb5, 0x4b, 0x68, 0xa1, 0x63, 0xd5, 0xca, 0x21, - 0x21, 0x9b, 0xd0, 0xf6, 0xf7, 0xe3, 0x1d, 0xcd, 0x9, 0x59, - 0x5b, 0xce, 0xff, 00, 0x82, 0x5f, 0xa0, 0xb7, 0x77, 0xf2, - 0xb7, 0xe7, 0xfe, 0x67, 0x9b, 0xfc, 0x37, 0x54, 0x93, 0xc6, - 0x3e, 0x3e, 0xb9, 0x9c, 0x2f, 0xdb, 0xff, 00, 0xb5, 0xbc, - 0xa6, 0x27, 0xef, 0x8, 0x55, 0x7f, 0x77, 0xf8, 0x63, 0x35, - 0x52, 0xde, 0xde, 0xde, 0xf, 0xda, 0x4a, 0xed, 0xa0, 0x44, - 0x57, 0x97, 0x42, 0x12, 0x4d, 0xb7, 0x1c, 0xbe, 0xf0, 0x32, - 0x7d, 0xf0, 0x16, 0xb7, 0xb5, 0xef, 0x1, 0x5c, 0x5d, 0x78, - 0x85, 0xfc, 0x41, 0xe1, 0xbd, 0x7e, 0x7d, 0x3, 0x55, 0x9d, - 0x4, 0x77, 0x52, 0x25, 0xba, 0xcf, 0x15, 0xc2, 0x81, 0x80, - 0x5a, 0x36, 0x20, 0x6e, 0x1c, 0x61, 0xbd, 0x7, 0x4e, 0xf5, - 0x5f, 0xc3, 0x7f, 0xd, 0x5b, 0x41, 0xf1, 0xab, 0xf8, 0x9e, - 0x6d, 0x76, 0xe3, 0x50, 0xbc, 0x9e, 0xcc, 0xc1, 0x74, 0x67, - 0x8b, 0xd, 0x2c, 0xa5, 0x81, 0x32, 0x2, 0x1b, 0xa, 0xb8, - 0x1, 0x42, 0x1, 0x80, 00, 0xe6, 0x88, 0x7d, 0x9b, 0xf4, - 0x56, 0xfc, 0x1a, 0xfe, 0xbf, 0xa6, 0x39, 0x7d, 0xaf, 0x37, - 0x7f, 0xc6, 0xe5, 0x3f, 0x82, 0xca, 0x8f, 0xe1, 0x8d, 0x56, - 0xea, 0x4c, 0x1d, 0x42, 0x7d, 0x5e, 0xe4, 0xde, 0x12, 0x72, - 0xde, 0x60, 0x23, 0x83, 0xf8, 0x63, 0xf3, 0xaa, 0xf6, 0x56, - 0x56, 0xf7, 0x1f, 0x1b, 0xbc, 0x57, 0xa7, 0xc6, 0x8a, 0xd6, - 0x77, 0xba, 0x34, 0x7f, 0x6e, 0x41, 0xf7, 0x4c, 0x87, 0xa, - 0x32, 0x3d, 0x4a, 0x13, 0xf9, 0xd6, 0xad, 0xff, 00, 0xc3, - 0xcb, 0xfb, 0x7d, 0x76, 0xef, 0x56, 0xf0, 0x97, 0x8a, 0x2e, - 0x3c, 0x3f, 0x25, 0xfb, 0x17, 0xbd, 0x83, 0xec, 0xa9, 0x75, - 0xc, 0xaf, 0xc7, 0xce, 0x11, 0xc8, 0xa, 0xdd, 0x72, 0x79, - 0xce, 0x7b, 0x77, 0xd7, 0xf0, 0x8f, 0x83, 0x2d, 0x7c, 0x29, - 0x15, 0xd4, 0xc6, 0xee, 0xe3, 0x50, 0xd5, 0x2f, 0x99, 0x64, - 0xbd, 0xbf, 0xb9, 0x39, 0x79, 0x98, 0xe, 0xc3, 0xf8, 0x54, - 0x73, 0x81, 0xce, 0x33, 0xd4, 0xd2, 0x4a, 0xe9, 0x5f, 0xa2, - 0xb7, 0xe1, 0x6f, 0xbb, 0xa8, 0x36, 0xd3, 0x76, 0xea, 0xef, - 0xf8, 0xdf, 0xfe, 0x1, 0xe5, 0x3a, 0x63, 0xb6, 0xb3, 0xe1, - 0xdf, 0xa, 0x78, 0x6, 0xec, 0xf9, 0x92, 0x5b, 0x6b, 0x93, - 0xdb, 0x5e, 0xa9, 0x19, 0xd, 0xd, 0xae, 0x5f, 0x4, 0x1e, - 0xc4, 0x32, 0xe, 0x7d, 0x2a, 0x3d, 0x3d, 0x9b, 0x52, 0xd0, - 0xfc, 0x35, 0xf0, 0xf4, 0xc9, 0xba, 0x4b, 0x5f, 0x11, 0x4f, - 0x5, 0xd0, 0xc6, 0x73, 0x5, 0xbb, 0x19, 0xe, 0x7d, 0x88, - 0x75, 0xfc, 0xab, 0xd3, 0x34, 0xef, 0x87, 0xb6, 0xda, 0x77, - 0xc4, 0xad, 0x43, 0xc6, 0x9, 0x7a, 0xce, 0x6e, 0xe2, 0x2a, - 0xb6, 0x86, 0x3c, 0x8, 0xdc, 0x85, 0xc, 0xe1, 0xb7, 0x73, - 0x9d, 0x9d, 0x31, 0xde, 0x9b, 0xa6, 0x7c, 0x3a, 0xb5, 0xd3, - 0x7e, 0x26, 0x6a, 0x7e, 0x33, 0x5b, 0xc2, 0xef, 0x79, 0x16, - 0xc5, 0xb5, 0xf2, 0xb0, 0x23, 0x62, 0x14, 0x33, 0x6e, 0xdd, - 0xce, 0x76, 0x9e, 0x30, 0x3a, 0x9a, 0xa8, 0xbd, 0x53, 0x7e, - 0xaf, 0xd5, 0x5a, 0xdf, 0x97, 0xe2, 0x29, 0x25, 0x66, 0x97, - 0xa2, 0xf4, 0x77, 0xff, 00, 0x3f, 0xc0, 0xc6, 0xbb, 0x86, - 0x29, 0x7f, 0x68, 0xdb, 0x6, 0x78, 0xd5, 0x9a, 0x2d, 0x9, - 0x9e, 0x32, 0x47, 0xdd, 0x6f, 0x31, 0x86, 0x47, 0xe0, 0x48, - 0xfc, 0x69, 0xde, 0x31, 0xc2, 0x7c, 0x69, 0xf0, 0x3, 0xa8, - 0x1, 0x99, 0x2f, 0x14, 0x9c, 0x72, 0x47, 0x97, 0xd3, 0xf5, - 0x3f, 0x9d, 0x74, 0xf2, 0x78, 0x4b, 0x7f, 0xc4, 0x68, 0xbc, - 0x5b, 0xf6, 0xec, 0x79, 0x7a, 0x79, 0xb2, 0xfb, 0x2f, 0x95, - 0xd7, 0x2d, 0xbb, 0x76, 0xfc, 0xfe, 0x98, 0xfc, 0x69, 0x35, - 0xaf, 0x8, 0xff, 00, 0x6b, 0xf8, 0xcf, 0xc3, 0xfe, 0x21, - 0xfb, 0x77, 0x95, 0xfd, 0x90, 0x26, 0xfd, 0xc7, 0x95, 0xbb, - 0xcd, 0xf3, 0x17, 0x1f, 0x7b, 0x70, 0xdb, 0x8f, 0xa1, 0xa5, - 0xd, 0x1c, 0x6f, 0xd2, 0xff, 00, 0xaf, 0xf9, 0x8e, 0x7a, - 0xf3, 0x5b, 0xaa, 0x5f, 0x92, 0x38, 0x9b, 0x39, 0x27, 0x87, - 0xe2, 0x4f, 0xc4, 0xf9, 0x2d, 0x73, 0xf6, 0x84, 0xd3, 0xa1, - 0x68, 0xb1, 0xd7, 0x70, 0x84, 0xe3, 0xf5, 0xae, 0x93, 0xe0, - 0xfc, 0x36, 0xb1, 0x7c, 0x2c, 0xd0, 0xcd, 0xa6, 0xd2, 0x24, - 0x89, 0x9e, 0x46, 0x7, 0x39, 0x90, 0xbb, 0x6e, 0xcf, 0xbe, - 0x72, 0x3f, 0xa, 0xd2, 0xd2, 0xbc, 0x22, 0x34, 0xcf, 0x1b, - 0x6b, 0xde, 0x22, 0x37, 0xbe, 0x68, 0xd5, 0x92, 0x14, 0xfb, - 0x3f, 0x93, 0x8f, 0x2b, 0x62, 0xe3, 0xef, 0x64, 0xee, 0xcf, - 0xd0, 0x57, 0x3e, 0x7e, 0x1a, 0x6a, 0xfa, 0x54, 0xd7, 0x51, - 0x78, 0x47, 0xc6, 0x77, 0x5a, 0x1e, 0x99, 0x74, 0xc5, 0xde, - 0xc5, 0xac, 0xd2, 0xe5, 0x63, 0x73, 0x9c, 0x98, 0xd9, 0x88, - 0x28, 0x39, 0xe8, 0x39, 0xcf, 0x7e, 0x98, 0x51, 0xd2, 0x29, - 0x79, 0x2f, 0xc1, 0xbf, 0xf3, 0x1c, 0xb5, 0x95, 0xfc, 0xff, - 00, 0x45, 0xfe, 0x46, 0x6, 0x8b, 0xa9, 0xe9, 0x9e, 0x1d, - 0x9f, 0xe2, 0x8c, 0xf7, 0x76, 0xa9, 0x73, 0xa1, 0x5b, 0x5e, - 0xab, 0x9b, 0x62, 0xa1, 0x92, 0x49, 0x58, 0x10, 0xe9, 0x82, - 0x31, 0xcb, 0x6d, 0x18, 0xfd, 0x2b, 0x46, 0x26, 0xf8, 0x91, - 0xaa, 0x78, 0x6b, 0xcc, 0x1f, 0xf0, 0x8c, 0xf8, 0x67, 0x45, - 0x7b, 0x72, 0xe8, 0xb1, 0x42, 0xf3, 0x5c, 0x5a, 0xc0, 0x14, - 0x95, 0x5d, 0xa7, 0xf7, 0x47, 0xe5, 00, 0x1e, 0x98, 0x7, - 0xa0, 0x23, 0x15, 0xd4, 0x59, 0x7c, 0x3c, 0xd0, 0xec, 0xbc, - 0x1b, 0x7b, 0xe1, 0x95, 0x17, 0x32, 0xda, 0xdf, 0x6f, 0x6b, - 0xab, 0x89, 0x65, 0xdd, 0x3c, 0xb2, 0x37, 0x59, 0xb, 0x63, - 0xef, 0x70, 0x3b, 0x63, 0x8e, 0x9d, 0x6b, 0xe, 0xdf, 0xe1, - 0x9e, 0xb7, 0x25, 0x82, 0x68, 0xda, 0xbf, 0x8e, 0xf5, 0xb, - 0xdf, 0xf, 0xa2, 0xf9, 0x7f, 0x61, 0x8a, 0xd5, 0x20, 0x91, - 0xd0, 0x74, 0x47, 0x98, 0x12, 0xcc, 0xb8, 0xe0, 0x8e, 0x32, - 0x3d, 0x29, 0x35, 0xa7, 0x2f, 0x92, 0x5f, 0x72, 0x4, 0xf5, - 0xe6, 0xf3, 0x6f, 0xfc, 0xbf, 0xe0, 0x9e, 0x79, 0x6b, 0x87, - 0xfd, 0x9e, 0x7c, 0x33, 0x4, 0xd8, 0xfb, 0x14, 0xda, 0xd2, - 0x47, 0x77, 0x93, 0x81, 0xe5, 0x79, 0xce, 0x4e, 0x7d, 0xb2, - 0x5, 0x7a, 0xe7, 0xc4, 0xdb, 0x5b, 0x59, 0x7e, 0x17, 0xeb, - 0xf1, 0x4d, 0x1c, 0x7e, 0x54, 0x76, 0x4e, 0xd1, 0x82, 0x6, - 0x15, 0x94, 0x65, 0x31, 0xef, 0x90, 0x31, 0x50, 0x68, 0x7f, - 0xd, 0xec, 0x74, 0xff, 00, 0x87, 0xf3, 0x78, 0x3b, 0x52, - 0xb9, 0x3a, 0x8d, 0x84, 0x8f, 0x21, 0x57, 0xf2, 0xfc, 0xb6, - 0x40, 0xcd, 0xb8, 0x63, 0x93, 0xf3, 0x29, 0xe4, 0x1f, 0xd2, - 0xb1, 0xef, 0x3e, 0x15, 0xeb, 0x5a, 0xae, 0x8f, 0x36, 0x8b, - 0xaa, 0xf8, 0xee, 0xfa, 0xf7, 0x49, 0x11, 0xb2, 0xda, 0xdb, - 0xbd, 0xa2, 0x2b, 0x23, 0x7f, 0xcb, 0x33, 0x2c, 0x81, 0xb7, - 0x4a, 0x17, 0xae, 0xe, 0x1, 0x20, 0x1e, 0x31, 0x8a, 0xaa, - 0x9e, 0xf7, 0x32, 0x5d, 0x75, 0xfc, 0x17, 0xf9, 0xa, 0x1a, - 0x34, 0xdf, 0x4f, 0xf3, 0x6f, 0xf5, 0x31, 0xed, 0xfc, 0x3b, - 0x77, 0xaa, 0xe8, 0x3e, 0x3, 0xd4, 0xfc, 0x3b, 0xaf, 0x58, - 0x58, 0x78, 0x9e, 0xc3, 0x4b, 0x43, 0x5, 0xad, 0xdb, 0x2, - 0xb7, 0x10, 0xb2, 0xa8, 0x6c, 0xa8, 0xcb, 0x60, 0xd, 0xdc, - 0x85, 0x3d, 0x7a, 0x83, 0x82, 0x34, 0xec, 0x3c, 0x57, 0xac, - 0xd9, 0xf8, 0xbf, 0x48, 0xb1, 0xf1, 0xf7, 0x84, 0x2c, 0x2d, - 0xaf, 0xae, 0x26, 0x92, 0xd, 0x3b, 0x58, 0xb4, 0x2b, 0x22, - 0x6, 0xe0, 0x6d, 0x50, 0x4b, 0x32, 0x6, 0x7, 0xa9, 0x60, - 0x4e, 0x47, 0xcb, 0xd7, 0x1a, 0xf7, 0xbf, 0xc, 0xe2, 0xb8, - 0xd0, 0xfc, 0x3f, 0xd, 0xae, 0xaf, 0x3d, 0x8e, 0xb5, 0xa1, - 0x42, 0xb1, 0x59, 0xea, 0x90, 0x46, 0x33, 0xc0, 00, 0x86, - 0x8c, 0x9c, 0x32, 0x9c, 0x7d, 0xdc, 0xfb, 0x67, 0x4, 0x82, - 0xfd, 0x2f, 0xc0, 0x3a, 0x83, 0x6b, 0xd6, 0x7a, 0xcf, 0x8a, - 0x7c, 0x4f, 0x3e, 0xbf, 0x73, 0x60, 0x49, 0xb2, 0x8f, 0xec, - 0x91, 0xdb, 0x45, 0x13, 0x11, 0xcb, 0x14, 0x4c, 0xee, 0x6e, - 0x98, 0x3c, 0x63, 0xdf, 0x8c, 0x5b, 0x6b, 0x9d, 0xbe, 0x97, - 0x7f, 0x8f, 0x62, 0x6d, 0xee, 0xf9, 0xdb, 0xfa, 0xb9, 0xdc, - 0xd7, 0x98, 0x7c, 0x25, 0xb7, 0xb4, 0x1a, 0xd7, 0x8e, 0x6e, - 0x15, 0x53, 0xed, 0x87, 0x5c, 0x99, 0x24, 0x6f, 0xe2, 0xf2, - 0xc1, 0x25, 0x47, 0xd3, 0x25, 0xab, 0xd3, 0xeb, 0xc3, 0x3c, - 0x15, 0xe1, 0x6d, 0x4f, 0x54, 0xf1, 0x7, 0x8c, 0xb5, 0x4d, - 0xb, 0xc4, 0x97, 0x1a, 0x26, 0xa0, 0x9a, 0xd4, 0xf0, 0x48, - 0xeb, 0x6e, 0x97, 0x11, 0x4b, 0x1e, 0x77, 0x61, 0xa3, 0x6e, - 0x37, 0x2, 0x78, 0x6c, 0xf1, 0x92, 0x3b, 0xd4, 0x2f, 0x8b, - 0xe4, 0xff, 00, 0x34, 0x5b, 0xf8, 0x7e, 0x6b, 0xf2, 0x66, - 0xae, 0xa4, 0xf3, 0xd9, 0x7c, 0x58, 0xf1, 0x93, 0x69, 0x43, - 0x6c, 0x8f, 0xe1, 0x93, 0x3c, 0xbb, 0x38, 0xfd, 0xfa, 0xf0, - 0x84, 0xf3, 0xd7, 0x15, 0x53, 0xe1, 0xc2, 0x7c, 0x44, 0x4f, - 00, 0xe9, 0x47, 0xc3, 0xdf, 0xf0, 0x86, 0xff, 00, 0x66, - 0xb4, 0x6c, 0xd1, 0x9b, 0x8f, 0xb4, 0xf9, 0xa4, 0xee, 0x3b, - 0xb7, 0xed, 0xe3, 0x76, 0xec, 0xe7, 0x15, 0xe8, 0x5e, 0x12, - 0xf0, 0x65, 0xbf, 0x86, 0x22, 0xbd, 0x9a, 0x6b, 0xc9, 0xf5, - 0x3d, 0x53, 0x50, 0x60, 0xf7, 0xd7, 0xd7, 0x38, 0xdd, 0x31, - 0x3, 00, 0x5, 0xe8, 0xaa, 0x39, 0xc2, 0xf3, 0x8c, 0xf5, - 0xe9, 0x58, 0x31, 0xfc, 0x36, 0xd6, 0x34, 0x4b, 0x8b, 0x84, - 0xf0, 0x7f, 0x8c, 0xee, 0x34, 0x4d, 0x36, 0x77, 0x32, 0x9b, - 0x19, 0x2c, 0x63, 0xbb, 0x48, 0xdc, 0x93, 0x9f, 0x2f, 0x79, - 0x1b, 0x17, 0x9e, 0x9f, 0xa9, 0xec, 0x96, 0x9a, 0x79, 0x7e, - 0xad, 0xfe, 0xbf, 0x80, 0x9e, 0xba, 0xf9, 0xfe, 0x89, 0x7e, - 0x9f, 0x89, 0x95, 0x7, 0x85, 0xf5, 0xff, 00, 0xe, 0xf8, - 0x1f, 0xc7, 0xf7, 0x1a, 0xe4, 0x9a, 0x5e, 0xed, 0x4e, 0x19, - 0xae, 0x96, 0x2d, 0x34, 0xc9, 0xe5, 0xa3, 0x98, 0xdb, 0x7f, - 0xe, 0x1, 0x19, 0xe3, 0xd6, 0xba, 0xef, 0x86, 0x31, 0x24, - 0x5f, 0xc, 0xbc, 0x3a, 0xb1, 0xa8, 0x50, 0x6c, 0x91, 0x88, - 0x3, 0xb9, 0xe4, 0x9f, 0xcc, 0x9a, 0x8e, 0xc7, 0xe1, 0xf5, - 0x96, 0x9b, 0xe1, 0x1d, 0x5f, 0x45, 0xb7, 0xbd, 0xb9, 0x92, - 0xeb, 0x56, 0x8e, 0x41, 0x77, 0xa8, 0xdd, 0x1f, 0x36, 0x59, - 0x64, 0x75, 0x2b, 0xbd, 0xb9, 0x19, 0x3, 0x3c, 0xe, 0x3e, - 0xb9, 0xc9, 0xad, 0xbf, 0xd, 0x68, 0xdf, 0xf0, 0x8e, 0xf8, - 0x67, 0x4e, 0xd1, 0xfe, 0xd1, 0xf6, 0x8f, 0xb1, 0x40, 0xb0, - 0xf9, 0xbb, 0x36, 0x6f, 0xc0, 0xc6, 0x71, 0x93, 0x8f, 0xcc, - 0xd5, 0x6d, 0x75, 0xe9, 0xf8, 0x5c, 0x1f, 0x4f, 0x9f, 0xe3, - 0x62, 0x9f, 0x8f, 0x3f, 0xe4, 0x9f, 0xf8, 0x87, 0xfe, 0xc1, - 0xd3, 0xff, 00, 0xe8, 0x6, 0xb9, 0x5d, 0x1e, 0xda, 0x4, - 0xfd, 0x9d, 0x44, 0x4b, 0x12, 0x2a, 0x36, 0x83, 0x2b, 0x95, - 0x3, 00, 0xb1, 0x8d, 0x98, 0x9f, 0xa9, 0x27, 0x35, 0xdd, - 0xeb, 0xda, 0x5f, 0xf6, 0xdf, 0x87, 0xf5, 0x1d, 0x2b, 0xce, - 0xf2, 0x7e, 0xd9, 0x6f, 0x24, 0x1e, 0x6e, 0xdd, 0xdb, 0x37, - 0x29, 0x19, 0xc6, 0x46, 0x71, 0x9e, 0x99, 0xac, 0xcb, 0x4f, - 0xa, 0xfd, 0x97, 0xe1, 0xe0, 0xf0, 0xa7, 0xdb, 0x77, 0x63, - 0x4f, 0x6b, 0x1f, 0xb5, 0x79, 0x58, 0xea, 0x85, 0x77, 0x6c, - 0xcf, 0xbe, 0x71, 0x9f, 0xc6, 0xa2, 0x49, 0xb8, 0xc9, 0x77, - 0xb7, 0xea, 0x5c, 0x5a, 0x52, 0x8b, 0x7d, 0x1b, 0xfd, 0xe, - 0x63, 0x45, 0x82, 0x28, 0x7f, 0x67, 0x60, 0x91, 0xc6, 0x8a, - 0xad, 0xa0, 0xca, 0xe4, 0x1, 0xc1, 0x63, 0x1b, 0x12, 0x7e, - 0xa4, 0x92, 0x6b, 0x92, 0x50, 0xb7, 0x1e, 0x18, 0xf8, 0x43, - 0x6d, 0x78, 0x73, 0x61, 0x25, 0xda, 0x99, 0x3, 0x1f, 0x94, - 0xba, 0x8f, 0xdd, 0x83, 0xf8, 0xe4, 0x62, 0xbd, 0x52, 0xd3, - 0xc2, 0xbf, 0x65, 0xf8, 0x78, 0x3c, 0x29, 0xf6, 0xdd, 0xd8, - 0xd3, 0xda, 0xc7, 0xed, 0x5e, 0x56, 0x3a, 0xa1, 0x5d, 0xdb, - 0x33, 0xef, 0x9c, 0x67, 0xf1, 0xaa, 0x1f, 0xf0, 0xae, 0xb4, - 0xeb, 0x9f, 0x87, 0xfa, 0x7f, 0x85, 0x35, 0x1b, 0x89, 0x66, - 0x5b, 0x15, 0x5f, 0x26, 0xf2, 0x11, 0xe5, 0x48, 0x92, 0x2e, - 0x71, 0x22, 0xf2, 0x76, 0x9e, 0x7d, 0xea, 0xe4, 0xfd, 0xf7, - 0x25, 0xdd, 0x3f, 0xb9, 0xb3, 0x34, 0xbd, 0xc5, 0x17, 0xd9, - 0xfe, 0x29, 0xd, 0xf8, 0xb5, 0xd, 0xac, 0xdf, 0xb, 0x75, - 0xef, 0xb5, 0x85, 0xd8, 0x90, 0x6f, 0x42, 0xdd, 0xa4, 0xc, - 0x36, 0x63, 0xdf, 0x76, 0x7, 0xe3, 0x5c, 0x86, 0xb2, 0xaf, - 0x7d, 0xe2, 0x9f, 0x84, 0x8d, 0xa8, 0x20, 0x92, 0x66, 0x89, - 0xa4, 0x90, 0x48, 0x33, 0xfb, 0xc1, 0x12, 0x36, 0x7a, 0x75, - 0xc, 0x33, 0x5b, 0x9f, 0xf0, 0xac, 0xf5, 0x7d, 0x59, 0xad, - 0xad, 0xbc, 0x5b, 0xe3, 0x4b, 0xbd, 0x6f, 0x4a, 0xb7, 0x2a, - 0xeb, 0x62, 0xb6, 0x89, 0x6c, 0x24, 0x65, 0x23, 0x1e, 0x6b, - 0xa9, 0x25, 0xc7, 0x1d, 0xf, 0x39, 0xe7, 0x3e, 0xbd, 0xe, - 0xb9, 0xe1, 0x11, 0xac, 0x78, 0xab, 0xc3, 0xba, 0xda, 0xde, - 0x88, 0x6, 0x8c, 0xd2, 0xb0, 0x80, 0x43, 0xbb, 0xcd, 0xde, - 0xa0, 0x63, 0x39, 0x1b, 0x71, 0x8f, 0x43, 0x44, 0x74, 0x92, - 0x7e, 0x6b, 0xf0, 0xbf, 0xf9, 0xfe, 0x3, 0x7a, 0xa6, 0xbc, - 0x9f, 0xe3, 0xff, 00, 0xc, 0x73, 0x3f, 0x17, 0xb0, 0xb3, - 0xf8, 0x2a, 0x40, 0x6, 0xf5, 0xf1, 0xd, 0xbe, 0x1b, 0x1c, - 0x8e, 0xbf, 0xe0, 0x3f, 0x2a, 0x3c, 0x57, 0xff, 00, 0x25, - 0xcb, 0xc0, 0x9f, 0xf5, 0xc2, 0xf3, 0xff, 00, 0x45, 0x9a, - 0xe9, 0xbc, 0x61, 0xe1, 0x1f, 0xf8, 0x4a, 0xce, 0x8c, 0x7e, - 0xdd, 0xf6, 0x5f, 0xec, 0xdd, 0x46, 0x3b, 0xef, 0xf5, 0x5b, - 0xfc, 0xcd, 0x99, 0xf9, 0x7e, 0xf0, 0xc6, 0x73, 0xd7, 0x9f, - 0xa5, 0x55, 0xf1, 0x8f, 0x82, 0x6e, 0x7c, 0x47, 0xaa, 0xe9, - 0x3a, 0xc6, 0x97, 0xad, 0xbe, 0x8f, 0xaa, 0xe9, 0x86, 0x41, - 0x15, 0xc0, 0xb6, 0x59, 0xc1, 0x57, 0x18, 0x60, 0x51, 0x88, - 0x19, 0xf7, 0xf7, 0x3c, 0x7a, 0x11, 0x76, 0xb3, 0xf3, 0x7f, - 0x8c, 0x6c, 0xf, 0x54, 0xd7, 0x97, 0xea, 0xcc, 0x1f, 0xa, - 0x43, 0x13, 0x7c, 0x74, 0xf1, 0xc4, 0xed, 0x1a, 0x99, 0x52, - 0xde, 0xd5, 0x55, 0xc8, 0xe4, 0x2, 0x83, 0x20, 0x7d, 0x76, - 0x8f, 0xca, 0x9c, 0x98, 0x4f, 0xda, 0x3a, 0x5d, 0xa0, 0xd, - 0xfe, 0x1e, 0x1b, 0xb0, 0x3a, 0xfe, 0xf7, 0xff, 00, 0xac, - 0x3f, 0x2a, 0xe8, 0xf4, 0x2f, 0x7, 0xc9, 0xa3, 0xf8, 0xbf, - 0x59, 0xf1, 0x4, 0xba, 0x97, 0xda, 0xa4, 0xd4, 0xe2, 0x82, - 0x37, 0x8f, 0xc8, 0xd9, 0xb0, 0xc6, 0xbb, 0x4b, 0x67, 0x71, - 0xce, 0x7a, 0xe3, 0x3, 0x14, 0xf1, 0xe1, 0x1f, 0xf8, 0xb8, - 0xe7, 0xc5, 0xdf, 0x6e, 0xeb, 0xa7, 0x7d, 0x87, 0xec, 0xbe, - 0x57, 0xfb, 0x7b, 0xb7, 0x6f, 0xdd, 0xf8, 0x63, 0x1f, 0x8d, - 0x11, 0xd3, 0x95, 0x3e, 0x89, 0xfe, 0x4f, 0xfc, 0xc2, 0x5a, - 0xf3, 0x3e, 0xf6, 0xfd, 0xe, 0x9a, 0x8a, 0x28, 0xa4, 0x1, - 0x48, 0x7a, 0x52, 0xd1, 0x40, 0x15, 0x2e, 0x21, 0x49, 0xa2, - 0x78, 0xa4, 0x50, 0xc8, 0xe0, 0x82, 0xd, 0x79, 0x9e, 0xb7, - 0xf0, 0xd8, 0xfd, 0xa0, 0xcd, 0xa6, 0xbf, 0xee, 0xc9, 0xc9, - 0x8d, 0xbb, 0x7d, 0x2b, 0xd5, 0x59, 0x73, 0x50, 0xb4, 0x75, - 0x95, 0x5a, 0x30, 0xaa, 0xad, 0x24, 0x63, 0x5a, 0x84, 0x2b, - 0x2b, 0x4d, 0x1e, 0x2a, 0xfe, 0x12, 0x31, 0xf1, 0x2c, 0x7b, - 0xf, 0xa1, 0x15, 0x9, 0xf0, 0xa2, 0x36, 0x70, 0x47, 0xd3, - 0x69, 0xaf, 0x68, 0x7b, 0x70, 0xc7, 0x95, 0x7, 0xea, 0x2a, - 0x7, 0xb3, 0x8d, 0x8e, 0x7c, 0xb5, 0xcf, 0xd2, 0xb9, 0x9e, - 0x2, 0x1d, 0x19, 0xc6, 0xf2, 0xca, 0x7d, 0x19, 0xe3, 0x2d, - 0xe1, 0x31, 0x8f, 0xe1, 0xa8, 0x9f, 0xc2, 0x64, 0x1e, 0x8b, - 0xf9, 0xd7, 0xb2, 0x3e, 0x9b, 0x3, 0xf5, 0x85, 0x7f, 0x2a, - 0x89, 0xb4, 0x9b, 0x42, 0x30, 0x6d, 0xd0, 0xfe, 0x15, 0x3f, - 0xd9, 0xf1, 0xee, 0x43, 0xca, 0xe3, 0xdc, 0xf1, 0xb6, 0xf0, - 0xa4, 0x99, 0xf9, 0x40, 0x3f, 0xf0, 0x2a, 0x8c, 0xf8, 0x52, - 0x6f, 0x4a, 0xf6, 0x43, 0xa3, 0x5a, 0x9f, 0xf9, 0x60, 0xa3, - 0xe8, 0x29, 0x8d, 0xa2, 0x5a, 0xff, 00, 0xcf, 0x3c, 0x7d, - 0x2a, 0x5e, 0x5e, 0xbb, 0x92, 0xf2, 0xb5, 0xdc, 0xf1, 0xa6, - 0xf0, 0xbc, 0xe3, 0xf8, 0x1a, 0xa2, 0x6f, 0xc, 0xdc, 0xf, - 0xf9, 0x66, 0xdf, 0x95, 0x7b, 0x31, 0xd0, 0x6d, 0x8e, 0x46, - 0xd7, 0xc7, 0xd6, 0xa1, 0x3e, 0x1f, 0xb6, 0x1d, 0x3c, 0xc0, - 0x7f, 0xde, 0xa9, 0x79, 0x7b, 0xee, 0x4b, 0xca, 0xdf, 0x73, - 0xc6, 0x8f, 0x87, 0x6e, 0x41, 0xfb, 0xa4, 0x7e, 0x14, 0xc6, - 0xd0, 0x27, 0x4, 0xfc, 0xa7, 0xf2, 0xaf, 0x65, 0x6d, 0xa, - 0x2c, 0xf0, 0xcc, 0x2a, 0x26, 0xd0, 0x6, 0x7f, 0xd6, 0x9f, - 0xfb, 0xe6, 0xa7, 0xfb, 0x3e, 0x7d, 0xc8, 0xfe, 0xcb, 0x9f, - 0x73, 0xc6, 0xdb, 0x44, 0x9c, 0xf, 0xb8, 0x7f, 0x2a, 0x8c, - 0xe8, 0xd3, 0x8e, 0x89, 0x5e, 0xc8, 0x7c, 0x3f, 0x81, 0xcc, - 0xb9, 0xfa, 0xa0, 0xa8, 0xdb, 0x40, 0xc8, 0xea, 0x84, 0xff, - 00, 0xbb, 0x52, 0xf0, 0x15, 0x9, 0x79, 0x6d, 0x5e, 0x87, - 0x8e, 0x1d, 0x22, 0x7f, 0xee, 0x53, 0x3f, 0xb2, 0xe5, 0xfe, - 0xe5, 0x7b, 0x13, 0x78, 0x79, 0x8f, 0xf0, 0xc4, 0x7f, 0xa, - 0x8c, 0xf8, 0x70, 0xff, 00, 0xcf, 0x38, 0x69, 0x3c, 0x15, - 0x52, 0x5e, 0x5d, 0x58, 0xf1, 0xe3, 0xa7, 0x4b, 0xff, 00, - 0x3c, 0xcd, 0x34, 0xe9, 0xf2, 0xf, 0xf9, 0x66, 0x6b, 0xd7, - 0x8f, 0x87, 0x6, 0x3f, 0xd4, 0x47, 0x9f, 0x6a, 0x85, 0xfc, - 0x3a, 0xb9, 0xff, 00, 0x8f, 0x6e, 0x3d, 0x8d, 0x4f, 0xd5, - 0x2a, 0xae, 0x84, 0xfd, 0x42, 0xba, 0xe8, 0x79, 0x29, 0xb1, - 0x90, 0x7f, 0x3, 0x7e, 0x54, 0xd3, 0x68, 0xe3, 0xf8, 0x4d, - 0x7a, 0xbb, 0x78, 0x6d, 0x73, 0xcd, 0xab, 0x7e, 0x75, 0x11, - 0xf0, 0xdc, 0x59, 0x39, 0xb7, 0x70, 0x6a, 0x5e, 0x1a, 0xaa, - 0xe8, 0x4b, 0xc1, 0xd7, 0x5d, 0xf, 0x2c, 0xfb, 0x33, 0x8e, - 0xcd, 0x49, 0xe4, 0x38, 0xee, 0x6b, 0xd3, 0xdf, 0xc3, 0x70, - 0x1, 0x9f, 0x2d, 0xf3, 0xdc, 0x62, 0xa1, 0x6f, 0xe, 0x5b, - 0x9e, 0xcf, 0xff, 00, 0x7c, 0x52, 0x74, 0x2a, 0xae, 0x84, - 0xbc, 0x2d, 0x65, 0xd1, 0xfd, 0xc7, 0x9b, 0x79, 0x52, 0xf, - 0xe2, 0x6a, 0x36, 0x4a, 0x39, 0xe, 0xd5, 0xe8, 0xbf, 0xf0, - 0x8c, 0xc0, 0xc7, 0xbf, 0xe2, 0xb5, 0x13, 0x78, 0x5e, 0x1f, - 0xef, 0xf, 0xc4, 0x54, 0xfb, 0x2a, 0x8b, 0xa1, 0x3e, 0xc6, - 0xaa, 0xe8, 0x70, 0x1b, 0xae, 0x7, 0xfc, 0xb4, 0x6f, 0xce, - 0x9d, 0xe7, 0x5d, 0xe, 0x92, 0xb7, 0xe7, 0x5d, 0xbb, 0x78, - 0x5a, 0x30, 0x32, 0x19, 0x3f, 0x1a, 0x61, 0xf0, 0xaa, 0x37, - 0x1, 0x93, 0xf3, 0xa5, 0xcb, 0x34, 0x4f, 0x25, 0x44, 0x71, - 0x82, 0xee, 0xf1, 0x7a, 0x4c, 0xff, 00, 0x9d, 0x3c, 0x6a, - 0x17, 0xcb, 0xd2, 0x67, 0xfc, 0xeb, 0xac, 0x6f, 0x9, 0xb7, - 0x6d, 0xbf, 0x81, 0xa8, 0xdb, 0xc2, 0x72, 0x72, 0x40, 0xfd, - 0x68, 0xf7, 0xc3, 0xf7, 0x88, 0xe6, 0x86, 0xaf, 0xa8, 0x2f, - 0x2, 0x56, 0xfc, 0xe9, 0x3f, 0xb6, 0xb5, 0x15, 0x24, 0x89, - 0xf, 0xbd, 0x74, 0x4d, 0xe1, 0x59, 0xb0, 0x7e, 0x43, 0xf9, - 0xd5, 0x1b, 0x8f, 0xe, 0x4e, 0x8a, 0xd8, 0x56, 0xc8, 0xf5, - 0x14, 0xd5, 0x49, 0xc4, 0xa5, 0x56, 0xa4, 0x4c, 0xf4, 0xd7, - 0xae, 0x9, 0x3e, 0x71, 0xdc, 0xf, 0xe9, 0x55, 0x75, 0x7b, - 0xb4, 0xba, 0x80, 0x32, 0x82, 00, 0xf5, 0xab, 0xb, 0xa2, - 0x5c, 0xcd, 0x26, 0xc4, 0x85, 0xdd, 0xbd, 0x85, 0x75, 0x5a, - 0xf, 0xc3, 0xf6, 0x91, 0xe3, 0x9f, 0x52, 0x38, 0x40, 0x73, - 0xe4, 0xfa, 0xfd, 0x6b, 0xb6, 0x8d, 0x5a, 0xb5, 0x57, 0x2d, - 0xb4, 0x3d, 0xc, 0x3d, 0x6a, 0xd5, 0xd3, 0x85, 0xb4, 0xee, - 0x53, 0xf8, 0x5d, 0xe1, 0x69, 0x85, 0xe9, 0xd6, 0xae, 0x50, - 0x2a, 0x1, 0xb6, 0x25, 0x3d, 0x4f, 0xbd, 0x7b, 0x3d, 0xb8, - 0xe4, 0x56, 0x7d, 0x95, 0xac, 0x76, 0xf1, 0x2c, 0x50, 0xa0, - 0x44, 0x51, 0x80, 00, 0xad, 0x6b, 0x78, 0xcf, 0xa5, 0x7a, - 0x30, 0x8f, 0x2a, 0xb1, 0xea, 0xc2, 0x1c, 0xb1, 0xb1, 0x76, - 0x11, 0xc5, 0x5f, 0x88, 0x61, 0x2a, 0xa4, 0x4b, 0xd2, 0xae, - 0x20, 0xc2, 0xd5, 0x16, 0x3a, 0x8a, 0x28, 0xa0, 0xf, 0x35, - 0x83, 0xfe, 0x43, 0x5a, 0xff, 00, 0xfd, 0x84, 0x9f, 0xff, - 00, 0x40, 0x4a, 0xed, 0x34, 0x7f, 0xf9, 0x5, 0x43, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x71, 0x70, 0x7f, 0xc8, - 0x6b, 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, - 0x5d, 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xa, 0xbe, 0x8, 0xff, 00, 0x91, 0x42, - 0xc7, 0xfe, 0xda, 0x7f, 0xe8, 0xc6, 0xae, 0x82, 0xb9, 0xff, - 00, 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, - 0xf4, 0x63, 0x57, 0x41, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x15, 0xcd, - 0xf8, 0x8b, 0xc7, 0xfe, 0x16, 0xf0, 0x9c, 0xc9, 0x6, 0xb5, - 0xac, 0xc1, 0x6d, 0x3b, 0x74, 0x85, 0x43, 0x49, 0x20, 0x1d, - 0x41, 0x2a, 0x80, 0x90, 0x3d, 0xc8, 0xc5, 0x4f, 0xe1, 0xcf, - 0x19, 0xf8, 0x77, 0xc5, 0xb1, 0xbb, 0xe8, 0x7a, 0xb4, 0x17, - 0x65, 0x33, 0xbe, 0x31, 0x94, 0x91, 0x47, 0xa9, 0x46, 0x1, - 0x80, 0xe7, 0xae, 0x31, 0x42, 0xd7, 0x60, 0x7a, 0x6e, 0x6e, - 0xd1, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x55, 0x6b, - 0x4d, 0x3a, 0xc7, 0x4f, 0x69, 0xda, 0xca, 0xca, 0xde, 0xd9, - 0xae, 0x24, 0x32, 0xcc, 0x61, 0x89, 0x50, 0xc8, 0xe7, 0xab, - 0x36, 0x7, 0x27, 0xdc, 0xd5, 0x9a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa4, 0xc5, 0x2d, 0x14, 00, 0xd6, - 0x50, 0x69, 0x86, 0x21, 0xef, 0x52, 0xd1, 0x40, 0x10, 0x18, - 0x45, 0x37, 0xca, 0xab, 0x34, 0x50, 0x5, 0x53, 0x17, 0x1c, - 0x52, 0x79, 0x3e, 0xd5, 0x6e, 0x8c, 0x50, 0x5, 0x33, 0x8, - 0xa6, 0x98, 0x47, 0xa5, 0x5d, 0xda, 0x29, 0x36, 0xf, 0x4a, - 00, 0xa0, 0x60, 0x1e, 0x94, 0xc3, 0x6e, 0x2b, 0x44, 0xa0, - 0xf4, 0xa4, 0x31, 0x83, 0xd8, 0xd0, 0x6, 0x71, 0xb7, 0x7, - 0xb0, 0xa6, 0xfd, 0x94, 0x7a, 0x56, 0x97, 0x94, 0x3d, 0xe9, - 0x3c, 0xb1, 0xeb, 0x40, 0x19, 0xa6, 0xd8, 0x7a, 0x53, 0x4d, - 0xaf, 0xb5, 0x6a, 0x79, 0x43, 0xd6, 0x93, 0xca, 0x1e, 0xb4, - 0x1, 0x96, 0x6d, 0x80, 0xed, 0x51, 0xb5, 0xb6, 0x3b, 0x56, - 0xbf, 0x93, 0xed, 0x4d, 0xf2, 0xf, 0xa5, 00, 0x63, 0x35, - 0xa9, 0xc7, 0x4a, 0x67, 0xd9, 0x7d, 0xab, 0x68, 0xdb, 0x93, - 0xfc, 0x34, 0xd3, 0x6c, 0xdf, 0xdd, 0x34, 0x1, 0x8a, 0x6d, - 0xbd, 0x5, 0x37, 0xec, 0xc7, 0xd2, 0xb6, 0xfe, 0xca, 0x7f, - 0xbb, 0x47, 0xd9, 0x4f, 0xf7, 0x28, 0x3, 0xc, 0xda, 0x67, - 0xf8, 0x41, 0xa8, 0xcd, 0x9a, 0x9c, 0xe5, 0x6, 0x7e, 0x95, - 0xbc, 0x6d, 0x18, 0xff, 00, 0x9, 0xfc, 0xa9, 0x3e, 0xc8, - 0x7f, 0xb8, 0x7f, 0x2a, 00, 0xe7, 0xda, 0xc6, 0x3c, 0x7f, - 0xab, 0x53, 0xf8, 0x53, 0x1a, 0xc2, 0x3c, 0x7f, 0xab, 0x5f, - 0xca, 0xb7, 0xda, 0xd7, 0x7, 0x91, 0x83, 0xe9, 0x51, 0x9b, - 0x6c, 0xd0, 0x7, 0x3e, 0xda, 0x74, 0x67, 0x92, 0x82, 0xa3, - 0xfe, 0xce, 0x8b, 0xfb, 0x9f, 0xad, 0x74, 0x6, 0xd7, 0x9e, - 0x94, 0x86, 0xd8, 0x7a, 0x52, 0xb2, 0x15, 0x91, 0xcf, 0x1d, - 0x32, 0x1f, 0xee, 0x63, 0xf1, 0xa4, 0xfe, 0xcb, 0x88, 0xfd, - 0xe5, 0x2d, 0xf5, 0xad, 0xf3, 0x6b, 0xed, 0x47, 0xd9, 0x7d, - 0xa9, 0x72, 0xc7, 0xb0, 0xb9, 0x23, 0xd8, 0xc6, 0x86, 0xc2, - 0x38, 0x8f, 0xee, 0xe2, 0x55, 0xf7, 0x2, 0xae, 0x47, 0x6e, - 0x73, 0xd2, 0xb4, 0x45, 0xaf, 0x3d, 0x2a, 0x64, 0xb7, 0x19, - 0xe9, 0x54, 0x51, 0x56, 0x28, 0x3d, 0xaa, 0xfc, 0x31, 0x62, - 0xa5, 0x8e, 0xdd, 0x87, 0xf0, 0x9a, 0x9d, 0x62, 0x23, 0xb6, - 0x28, 00, 0x8d, 0x2a, 0x61, 0xd2, 0x85, 0x18, 0x14, 0xb4, - 00, 0x51, 0x45, 0x14, 0x1, 0xe6, 0xb0, 0x7f, 0xc8, 0x6b, - 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, 0x5d, - 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, 0xfa, - 0x11, 0xae, 0x2e, 0xf, 0xf9, 0xd, 0x6b, 0xff, 00, 0xf6, - 0x12, 0x7f, 0xfd, 0x1, 0x2b, 0xb4, 0xd1, 0xff, 00, 0xe4, - 0x15, 0xf, 0xfc, 0xb, 0xff, 00, 0x42, 0x34, 0x1, 0x57, - 0xc1, 0x1f, 0xf2, 0x28, 0x58, 0xff, 00, 0xdb, 0x4f, 0xfd, - 0x18, 0xd5, 0xd0, 0x57, 0x3f, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, - 0x7f, 0xed, 0xa7, 0xfe, 0x8c, 0x6a, 0xe8, 0x28, 00, 0xae, - 0x23, 0xc5, 0xff, 00, 0x15, 0xbc, 0x35, 0xe0, 0xad, 0x62, - 0xdf, 0x4b, 0xd4, 0xda, 0xea, 0x4b, 0x99, 0x54, 0x3b, 0x8b, - 0x68, 0x83, 0x88, 0x54, 0x9c, 0x6, 0x7c, 0x91, 0xee, 0x70, - 0x32, 0x70, 0x3a, 0x74, 0xcf, 0x6f, 0x5e, 0x65, 0xe3, 0xff, - 00, 0x83, 0x56, 0x3e, 0x3a, 0xf1, 0x14, 0x1a, 0xc1, 0xd5, - 0x66, 0xb1, 0x90, 0x22, 0xc7, 0x70, 0x8b, 0x10, 0x90, 0x4a, - 0xaa, 0x78, 0xda, 0x49, 0x1b, 0x4e, 0x32, 0x33, 0xc8, 0xe9, - 0xc7, 0x5c, 0xa7, 0x7b, 0xab, 0xd, 0x5a, 0xce, 0xe7, 0xa4, - 0xdb, 0xdc, 0x43, 0x77, 0x6d, 0x15, 0xcd, 0xbc, 0x8b, 0x24, - 0x32, 0xa0, 0x78, 0xdd, 0x4f, 0xc, 0xa4, 0x64, 0x11, 0xf8, - 0x54, 0x95, 0x5e, 0xc6, 0xce, 0x1d, 0x3b, 0x4f, 0xb6, 0xb2, - 0xb7, 0x4, 0x41, 0x6f, 0x12, 0xc5, 0x18, 0x27, 0x24, 0x2a, - 0x8c, 0xe, 0x7e, 0x82, 0xac, 0x55, 0x3b, 0x5f, 0x42, 0x55, - 0xed, 0xa8, 0x56, 0x47, 0x8a, 0xb5, 0x76, 0xd0, 0x3c, 0x29, - 0xaa, 0xea, 0xc8, 0xa1, 0xa4, 0xb4, 0xb5, 0x92, 0x54, 0x53, - 0xd0, 0xb0, 0x53, 0x8c, 0xfe, 0x38, 0xad, 0x7a, 0xc8, 0xf1, - 0x4e, 0x90, 0x75, 0xff, 00, 0xa, 0xea, 0xba, 0x4a, 0xbe, - 0xc7, 0xbb, 0xb5, 0x92, 0x25, 0x63, 0xd9, 0x88, 0xe0, 0xfe, - 0x78, 0xa8, 0x9d, 0xf9, 0x5d, 0x8b, 0x85, 0xb9, 0x95, 0xce, - 0x6f, 0xe1, 0x7f, 0x86, 0x6d, 0x74, 0xef, 0xc, 0xda, 0x6b, - 0x97, 0x11, 0x9, 0xf5, 0xdd, 0x56, 0x11, 0x75, 0x79, 0x7d, - 0x30, 0xcc, 0xae, 0x64, 0xc3, 0x6d, 0xcf, 0x50, 0xa3, 0xe5, - 0xe0, 0x71, 0xc6, 0x6a, 0x87, 0xc5, 0x9d, 0x16, 0x2b, 0x2d, - 0x1b, 0xfe, 0x13, 0x5d, 0x2a, 0x24, 0xb7, 0xd7, 0xf4, 0x79, - 0x12, 0x75, 0xb9, 0x8d, 0x70, 0xd2, 0xc7, 0x90, 0xac, 0x8f, - 0x8f, 0xbc, 0xbb, 0x4f, 0x7e, 0xc0, 0x8e, 0xe6, 0xaf, 0xfc, - 0x2e, 0xf1, 0x2d, 0xbe, 0xa3, 0xe1, 0xab, 0x5d, 0xa, 0xe9, - 0xbe, 0xcd, 0xae, 0xe9, 0x31, 0xb, 0x5b, 0xbb, 0x19, 0x9b, - 0x12, 0xaf, 0x96, 0x2, 0xef, 0xc7, 0x52, 0xa4, 0x6d, 0xe7, - 0xa6, 0x4d, 0x50, 0xf8, 0xb3, 0xad, 0x45, 0x7b, 0xa3, 0x7f, - 0xc2, 0x15, 0xa5, 0x4a, 0x97, 0x1a, 0xfe, 0xb1, 0x22, 0x40, - 0xb6, 0xd1, 0xb6, 0x5a, 0x28, 0xf2, 0x19, 0x9d, 0xf1, 0xf7, - 0x57, 0x68, 0xef, 0xd8, 0x93, 0xd8, 0xd5, 0x54, 0xdf, 0xf7, - 0x7f, 0x2f, 0xd3, 0xe5, 0xfa, 0x13, 0x4b, 0x6f, 0x7f, 0xe7, - 0xfa, 0x8f, 0xf1, 0x8f, 0xc4, 0x6d, 0x4b, 0x40, 0xbc, 0xf0, - 0xa0, 0xd2, 0xf4, 0xb4, 0xbf, 0x8f, 0x5b, 0x46, 0x63, 0x6f, - 0x82, 0x25, 0x66, 0x2a, 0xa5, 0x15, 0x1b, 0x20, 0x2e, 0x4b, - 0x8c, 0x92, 0xe, 0x5, 0x32, 0x4f, 0x18, 0xf8, 0xcb, 0xc2, - 0xba, 0x8e, 0x9c, 0x7c, 0x69, 0xa6, 0xe8, 0xe7, 0x49, 0xbf, - 0x99, 0x6d, 0xc5, 0xde, 0x94, 0xf2, 0x66, 0xd6, 0x46, 0xfb, - 0xbe, 0x60, 0x7e, 0xa0, 0xf4, 0xc8, 0xe0, 0x60, 0xf3, 0xd0, - 0x1c, 0xcf, 0x1d, 0xdd, 0x58, 0xf8, 0x5b, 0xc6, 0xff, 00, - 0xd, 0xda, 0xf6, 0x55, 0x4b, 0x3b, 0x4f, 0x3a, 0x6, 0x95, - 0xce, 0x2, 0x8d, 0x88, 0x81, 0x89, 0x3d, 00, 0x24, 0x12, - 0x6b, 0x4b, 0xe3, 0x45, 0xcc, 0x37, 0x9e, 0x14, 0xb4, 0xd0, - 0x2d, 0xe5, 0x57, 0xd5, 0x35, 0x5b, 0xd8, 0x12, 0xd2, 0x14, - 0x6c, 0xbb, 0x61, 0xc1, 0x2e, 0x6, 0x7a, 0xc, 0x75, 0xe9, - 0xc8, 0xaa, 0x56, 0xba, 0x6b, 0xac, 0xad, 0xf2, 0xbf, 0xf9, - 0xb, 0x5e, 0x5b, 0x3d, 0x3d, 0xdb, 0xfc, 0xf5, 0x35, 0xfc, - 0x4d, 0xe2, 0xed, 0x56, 0x2f, 0x10, 0xc3, 0xe1, 0x6f, 0xa, - 0xd8, 0x5b, 0x5e, 0x6b, 0x72, 0x43, 0xf6, 0x89, 0xa5, 0xbc, - 0x72, 0xb6, 0xf6, 0x91, 0x67, 0x1b, 0x9f, 0x6f, 0xcc, 0x49, - 0xec, 0x7, 0x3c, 0x83, 0xcf, 0x4a, 0xaf, 0xa5, 0x78, 0xb7, - 0xc4, 0x5a, 0x67, 0x89, 0x6c, 0xfc, 0x3f, 0xe3, 0x4b, 0xd, - 0x3e, 0x29, 0xb5, 0x10, 0xc6, 0xc6, 0xff, 00, 0x4c, 0x77, - 0x30, 0x48, 0xca, 0x1, 0x31, 0x32, 0xbf, 0xcc, 0xad, 0x8c, - 0x9c, 0xf4, 0x3c, 00, 0x3b, 0xd7, 0x1f, 0xab, 0x68, 0x71, - 0xdc, 0x7c, 0x73, 0xbf, 0xb3, 0xd4, 0x75, 0xfd, 0x67, 0x45, - 0x1a, 0x95, 0x8c, 0x2f, 0x65, 0x3e, 0x9f, 0x79, 0xf6, 0x7f, - 0x3d, 0x90, 0x4, 0x31, 0x92, 0x41, 0xdc, 0x72, 0x9, 0x3, - 0xfc, 0x6b, 0x62, 0x6f, 0x6, 0xf8, 0x6b, 0x49, 0xf1, 0x86, - 0x83, 0xe, 0xa9, 0xe3, 0x5f, 0x13, 0x5f, 0x6a, 0xc2, 0xe0, - 0x4f, 0x61, 0x65, 0x79, 0x7b, 0xf6, 0x8c, 0xb0, 0xee, 0x54, - 0x46, 0x4a, 0xaf, 0x7, 0x2c, 0x48, 0x1c, 0x1e, 0x78, 0xa9, - 0x87, 0x46, 0xfa, 0xff, 00, 0x9d, 0xbf, 0xaf, 0xf2, 0x9, - 0x75, 0xb7, 0x45, 0xfa, 0x5c, 0x9e, 0xeb, 0xc7, 0x1e, 0x2e, - 0xbb, 0xf8, 0x85, 0xad, 0xf8, 0x4f, 0x41, 0xd2, 0xb4, 0xd9, - 0x9e, 0xd1, 0x22, 0x78, 0x6e, 0xae, 0x8b, 0xa4, 0x70, 0xa9, - 0x50, 0xcc, 0x65, 0x2a, 0x49, 0x6c, 0x92, 0x15, 0x42, 0x80, - 0x79, 0xc9, 0xe0, 0x1a, 0xd2, 0xf0, 0x97, 0x8b, 0xf5, 0xdb, - 0x9f, 0x16, 0x6a, 0x1e, 0x14, 0xf1, 0x55, 0x85, 0x94, 0x1a, - 0xad, 0xb4, 0x2, 0xee, 0x29, 0xec, 0x19, 0x8c, 0x33, 0xc2, - 0x48, 0x19, 0x1, 0xb2, 0x41, 0x4, 0xf7, 0x3c, 0xf3, 0xc0, - 0xc7, 0x39, 0xfe, 0x12, 0xff, 00, 0x92, 0xdb, 0xe3, 0xbf, - 0xfa, 0xe3, 0x69, 0xff, 00, 0xa0, 0x50, 0x3f, 0xe4, 0xe3, - 0x9b, 0xfe, 0xc5, 0xe1, 0xff, 00, 0xa3, 0x68, 0x86, 0xaa, - 0x3e, 0x69, 0xfe, 0x4f, 0xfc, 0x87, 0x3d, 0xe5, 0x6e, 0x96, - 0xfd, 0x3f, 0xcc, 0xf4, 0x6b, 0x9b, 0x88, 0xed, 0x2d, 0x66, - 0xb9, 0x94, 0x91, 0x1c, 0x28, 0xd2, 0x39, 0x3, 0x3c, 0x1, - 0x93, 0x5e, 0x65, 0xa6, 0xf8, 0xbf, 0xe2, 0x27, 0x89, 0x74, - 0x8f, 0xf8, 0x49, 0x34, 0x1d, 0x23, 0xc3, 0xff, 00, 0xd8, - 0xee, 0x59, 0xa0, 0xb3, 0xb8, 0x9a, 0x53, 0x77, 0x2a, 0x21, - 0xc1, 0x1, 0x97, 0xe4, 0xc, 0x48, 0x38, 0xcf, 0x4e, 0xf9, - 0xef, 0xe9, 0x97, 0x72, 0xac, 0x16, 0x53, 0xcc, 0xd1, 0x3c, - 0xcb, 0x1c, 0x6c, 0xc6, 0x34, 0x5c, 0xb3, 0x80, 0x33, 0x80, - 0x3b, 0x93, 0x5e, 0x3b, 0xa0, 0xf8, 0x37, 0x49, 0xd5, 0xf4, - 0x8f, 0xf8, 0x49, 0x7e, 0x1d, 0xf8, 0xbf, 0x55, 0xf0, 0xe4, - 0xf, 0x31, 0x9a, 0x6b, 0x49, 0x1c, 0x49, 0x4, 0x2c, 0xa3, - 0x5, 0x5e, 0x2d, 0xd8, 0x7, 0x80, 0x7e, 0x62, 0xc3, 0x7, - 0xa6, 0x8, 0xa9, 0xea, 0xdf, 0x61, 0xf4, 0x47, 0x63, 0xa9, - 0xfc, 0x43, 0x3a, 0x67, 0x82, 0xf4, 0xdd, 0x66, 0x6d, 0xe, - 0xf6, 0x3d, 0x53, 0x51, 0x91, 0x6d, 0xad, 0xf4, 0x99, 0x81, - 0x8e, 0x53, 0x3b, 0x12, 0x36, 0x12, 0xc0, 0x60, 0x64, 0x1f, - 0x9b, 0x1c, 0x8c, 0x71, 0xcd, 0x63, 0xde, 0xf8, 0xbf, 0xc7, - 0xde, 0x11, 0xb6, 0x87, 0x57, 0xf1, 0x6e, 0x93, 0xa2, 0x4f, - 0xa2, 0x92, 0xab, 0x72, 0x74, 0xa7, 0x93, 0xce, 0xb4, 0xdc, - 0x40, 0xc, 0xc1, 0xc9, 0xc, 0x1, 0x38, 0xc2, 0xf7, 0xef, - 0xeb, 0xc8, 0xbf, 0x8a, 0x35, 0x1d, 0x5b, 0x46, 0xf0, 0x37, - 0x8a, 0xfc, 0x40, 0x23, 0x68, 0x34, 0xdd, 0x6a, 0x4b, 0x5b, - 0xab, 0xb8, 0x94, 0x8, 0xe4, 0x7, 0xa, 0xb3, 0xf4, 0xe0, - 0x64, 0x1c, 0x91, 0x81, 0x91, 0xd3, 0xb0, 0xf4, 0x1f, 0x8b, - 0x3a, 0xce, 0x9f, 0x6b, 0xf0, 0xcb, 0x52, 0x57, 0x9e, 0x39, - 0x1f, 0x51, 0x80, 0x43, 0x66, 0x88, 0xc1, 0x8c, 0xec, 0xe4, - 0x63, 0x67, 0xf7, 0xb0, 0xe, 0x78, 0xed, 0x55, 0x27, 0x64, - 0xe4, 0xbb, 0xed, 0xf2, 0x4d, 0x2f, 0x9d, 0xfd, 0x44, 0xb5, - 0x6a, 0x2f, 0xb7, 0xea, 0xd7, 0xe1, 0x6f, 0x42, 0xdf, 0x88, - 0x3c, 0x5d, 0x77, 0xa6, 0xf8, 0xcb, 0xc2, 0x5a, 0x55, 0x92, - 0x5b, 0x4b, 0x65, 0xad, 0x34, 0xbe, 0x6c, 0x8e, 0xac, 0x58, - 0x2a, 0xa0, 0x65, 0x28, 0x41, 00, 0x67, 0x3d, 0xc1, 0xa7, - 0x78, 0xf3, 0xc5, 0x57, 0xde, 0x17, 0x3e, 0x1f, 0x16, 0x51, - 0x5b, 0xc9, 0xfd, 0xa3, 0xaa, 0xc5, 0x65, 0x37, 0x9e, 0xac, - 0x76, 0xa3, 0x67, 0x25, 0x70, 0x46, 0xf, 0x1d, 0xf2, 0x3d, - 0xab, 0x8d, 0xf1, 0x4, 0x2d, 0xa1, 0x78, 0x8f, 0xe1, 0x40, - 0xd4, 0x5c, 0x44, 0x96, 0xa8, 0xf6, 0xd3, 0x4a, 0xe7, 0xa, - 0xb2, 0x79, 0x48, 0xa0, 0x13, 0xd0, 0x64, 0xd5, 0xaf, 0x8c, - 0x1a, 0x9d, 0x98, 0xd6, 0x7c, 0x15, 0xa5, 0x9, 0xd0, 0xde, - 0x9d, 0x6e, 0xb, 0x83, 0x8, 0x60, 0x59, 0x63, 0x7, 0x6e, - 0xe2, 0x3b, 0x2, 0x4f, 0x1e, 0xb8, 0x3e, 0x95, 0x49, 0x2b, - 0xa5, 0xfd, 0xeb, 0x7c, 0xae, 0xbf, 0x41, 0x5e, 0xea, 0xff, - 00, 0xdd, 0xbf, 0xe6, 0x69, 0xf8, 0x97, 0xc6, 0x9e, 0x23, - 0xb3, 0xf8, 0x87, 0x7, 0x84, 0xf4, 0x2d, 0x3e, 0xc2, 0xe2, - 0x5b, 0xad, 0x3f, 0xcf, 0x86, 0x4b, 0xad, 0xea, 0xb1, 0x49, - 0xbc, 0xe5, 0xa4, 0x2a, 0x7e, 0xe0, 0x55, 0x3c, 0x1, 0x92, - 0x48, 0xe6, 0xa4, 0xd5, 0xbc, 0x61, 0xe2, 0x4d, 0xa, 0xc3, - 0x48, 0xd2, 0x2e, 0x2c, 0x74, 0xdb, 0xdf, 0x18, 0x6a, 0xd2, - 0xc9, 0x1c, 0x10, 0xda, 0xb3, 0xad, 0xac, 0x6a, 0xa4, 0xfe, - 0xf1, 0x8b, 0x1d, 0xc5, 0x42, 0xe0, 0x91, 0xc1, 0x3c, 0xf4, - 0xc5, 0x54, 0x9f, 0xfe, 0x4e, 0x2e, 0xd3, 0xfe, 0xc5, 0xf6, - 0xff, 00, 0xd1, 0xa6, 0x8f, 0x15, 0xcf, 0x1e, 0x93, 0xf1, - 0x9f, 0xc2, 0x3a, 0x9d, 0xeb, 0x8, 0xec, 0xae, 0x2d, 0x67, - 0xb2, 0x49, 0x5b, 0x85, 0x49, 0x4f, 0x20, 0x13, 0xd8, 0x9c, - 0x81, 0x50, 0xb5, 0xe5, 0x5d, 0xef, 0xfa, 0xfe, 0x76, 0xb1, - 0x52, 0xd1, 0xbb, 0x74, 0xb7, 0xe4, 0xbf, 0xce, 0xe5, 0xdd, - 0x23, 0xc5, 0xbe, 0x24, 0xd3, 0xbc, 0x5d, 0x69, 0xe1, 0xbf, - 0x19, 0xd9, 0xe9, 0x71, 0xcd, 0xa8, 0xc6, 0xef, 0x61, 0x79, - 0xa6, 0x34, 0x9e, 0x53, 0xb2, 0xc, 0xb4, 0x6c, 0x1f, 0x90, - 0xd8, 0xe7, 0x3c, 0xe, 0x83, 0x9a, 0x85, 0xbc, 0x5d, 0xe2, - 0xdf, 0x13, 0xea, 0xb7, 0xd0, 0x78, 0x22, 0xc3, 0x48, 0x1a, - 0x7e, 0x9f, 0x33, 0x5b, 0xcb, 0x7f, 0xab, 0x3c, 0x9b, 0x27, - 0x94, 0x63, 0x2b, 0x1a, 0xc7, 0xce, 0x7, 0xa9, 0xe0, 0xe7, - 0xb5, 0x6e, 0xeb, 0x3e, 0x2f, 0x5d, 0x3f, 0xc6, 0x1a, 0x37, - 0x86, 0x6d, 0x2c, 0xc5, 0xe5, 0xe6, 0xa0, 0x1e, 0x49, 0xb6, - 0xcd, 0xb4, 0xda, 0xc2, 0xa3, 0xfd, 0x63, 0xc, 0x1c, 0x83, - 0xc8, 0x3, 0x8c, 0xe2, 0xbc, 0xb3, 0xe1, 0xb7, 0x84, 0x22, - 0xd5, 0x6d, 0xf5, 0x5d, 0x2a, 0xe3, 0xc5, 0xbe, 0x28, 0xd2, - 0xf5, 0x6d, 0x3e, 0xfa, 0x54, 0x9e, 0xc6, 0xcb, 0x52, 0xf2, - 0x54, 0xae, 0xee, 0x24, 0x9, 0xb4, 0x9c, 0x1c, 0xf5, 0xf5, - 0xfa, 0x8a, 0x16, 0xaf, 0xe4, 0xff, 00, 0x3f, 0xd3, 0xfa, - 0xd9, 0x89, 0xe8, 0xbe, 0xef, 0xd7, 0xfc, 0xbf, 0xad, 0xf, - 0x4e, 0xf0, 0x7f, 0x8b, 0x6e, 0xb5, 0xab, 0xad, 0x43, 0x46, - 0xd6, 0xac, 0x17, 0x4f, 0xd7, 0xb4, 0xc2, 0x82, 0xe6, 0x18, - 0xdf, 0x7c, 0x72, 0x2b, 0xf, 0x96, 0x58, 0xcf, 0xf7, 0x4f, - 0x3c, 0x1c, 0x91, 0xc0, 0x26, 0xba, 0xca, 0xf3, 0xbf, 0x5, - 0x68, 0x5e, 0x1a, 0xd2, 0xfc, 0x6d, 0xab, 0x1d, 0x3b, 0xc4, - 0xda, 0xc6, 0xb5, 0xad, 0x43, 0x6e, 0xb0, 0x5e, 0xfd, 0xba, - 0xe3, 0xcf, 0x11, 0x2e, 0xee, 0x1, 0x70, 0x80, 0x6e, 0x4, - 0x11, 0xb7, 0x71, 0x23, 0x9e, 0x2b, 0xd1, 0x2a, 0xba, 0x26, - 0x2e, 0xad, 0x5, 0x14, 0x51, 0x48, 0x61, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x46, 0x28, 0xa2, - 0x80, 0xc, 0xa, 0x4c, 0xa, 0x5a, 0x28, 0x1, 0x30, 0x28, - 0xc0, 0xa5, 0xa2, 0x80, 0x13, 0x2, 0x8c, 0xf, 0x4a, 0x5a, - 0x28, 0x1, 0xa5, 0x1, 0xf6, 0xa4, 0x31, 0x3, 0xdc, 0xd3, - 0xe8, 0xa0, 0x8, 0xfc, 0x85, 0xf5, 0x34, 0x9e, 0x42, 0xfa, - 0x9a, 0x96, 0x8a, 00, 0x8b, 0xc8, 0x4f, 0x53, 0x47, 0xd9, - 0xd3, 0xde, 0xa5, 0xa2, 0x80, 0x22, 0xf2, 0x17, 0xd4, 0xd3, - 0x84, 0x40, 0x77, 0x34, 0xfa, 0x28, 0x1, 0x30, 0x29, 0x68, - 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0x3c, 0xd6, 0xf, 0xf9, 0xd, 0x6b, 0xff, 00, 0xf6, 0x12, - 0x7f, 0xfd, 0x1, 0x2b, 0xb4, 0xd1, 0xff, 00, 0xe4, 0x15, - 0xf, 0xfc, 0xb, 0xff, 00, 0x42, 0x35, 0xc5, 0xc1, 0xff, - 00, 0x21, 0xad, 0x7f, 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, - 0x25, 0x76, 0x9a, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, - 0x7f, 0xe8, 0x46, 0x80, 0x2a, 0xf8, 0x23, 0xfe, 0x45, 0xb, - 0x1f, 0xfb, 0x69, 0xff, 00, 0xa3, 0x1a, 0xba, 0xa, 0xe7, - 0xfc, 0x11, 0xff, 00, 0x22, 0x85, 0x8f, 0xfd, 0xb4, 0xff, - 00, 0xd1, 0x8d, 0x5d, 0x5, 00, 0x14, 0x51, 0x45, 00, - 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x73, 0x9e, - 0x23, 0xf0, 0x1f, 0x85, 0xfc, 0x59, 0x22, 0x4b, 0xad, 0xe8, - 0xf0, 0x5c, 0xcc, 0x98, 0xc4, 0xc0, 0xb4, 0x72, 0x60, 0x74, - 0x5, 0xd0, 0x86, 0x23, 0x9e, 0x84, 0xe2, 0xa6, 0xf0, 0xe7, - 0x83, 0x3c, 0x3b, 0xe1, 0x28, 0xdd, 0x34, 0x3d, 0x26, 0xb, - 0x42, 0xf9, 0xdf, 0x20, 0xcb, 0xc8, 0xc3, 0xd0, 0xbb, 0x12, - 0xc4, 0x71, 0xd3, 0x38, 0xad, 0xda, 0x28, 0x5a, 0x6c, 0xf, - 0x5d, 0xcf, 0x38, 0xf1, 0xf6, 0x87, 0x2e, 0xb3, 0xf1, 0xb, - 0xc1, 0x3b, 0xf4, 0xb9, 0x2f, 0x74, 0xe8, 0xde, 0xe4, 0x5d, - 0x93, 0x1, 0x92, 0x24, 0x56, 0x40, 0x6, 0xfe, 0x8, 00, - 0xfb, 0xd6, 0xff, 00, 0x87, 0xbe, 0x1d, 0x78, 0x4b, 0xc2, - 0xd7, 0xcd, 0x7d, 0xa3, 0x68, 0xb0, 0xdb, 0xdd, 0x30, 0xc7, - 0x9a, 0xce, 0xf2, 0xb2, 0x8e, 0x7e, 0xe9, 0x76, 0x3b, 0x7a, - 0xf3, 0x8c, 0x66, 0xba, 0x8a, 0x28, 0x8e, 0x8a, 0xc8, 0x1e, - 0xbb, 0x99, 0x1e, 0x20, 0xf0, 0xbe, 0x89, 0xe2, 0xab, 0x11, - 0x67, 0xad, 0xe9, 0xd0, 0xde, 0x42, 0xa7, 0x2b, 0xbf, 0x21, - 0x90, 0xf1, 0xf7, 0x58, 0x10, 0xcb, 0xd0, 0x67, 0x4, 0x66, - 0xaa, 0x78, 0x6f, 0xc0, 0x7e, 0x18, 0xf0, 0x94, 0x92, 0x4b, - 0xa1, 0xe9, 0x10, 0xda, 0xcd, 0x20, 0xc3, 0x4a, 0x59, 0xa4, - 0x7c, 0x7a, 0x6, 0x72, 0x48, 0x1c, 0xe, 0x1, 0xc5, 0x74, - 0x54, 0x50, 0xb4, 0xd8, 0x1e, 0xbb, 0x99, 0x96, 0x9e, 0x1f, - 0xd2, 0xec, 0x75, 0xbb, 0xfd, 0x66, 0xda, 0xd7, 0x66, 0xa1, - 0x7e, 0x11, 0x6e, 0x66, 0xf3, 0x18, 0xf9, 0x81, 0x6, 0x17, - 0x82, 0x70, 0x30, 0x3d, 00, 0xa3, 0xfe, 0x11, 0xfd, 0x2f, - 0xfe, 0x12, 0x4f, 0xf8, 0x48, 0x7e, 0xcb, 0xff, 00, 0x13, - 0x5f, 0xb3, 0xfd, 0x97, 0xcf, 0xf3, 0x1b, 0xfd, 0x56, 0x73, - 0xb7, 0x6e, 0x76, 0xf5, 0xef, 0x8c, 0xd6, 0x9d, 0x14, 0x6c, - 0x1, 0x5c, 0x6e, 0xa7, 0xf0, 0xa3, 0xc0, 0xfa, 0xc6, 0xa7, - 0x26, 0xa3, 0x7b, 0xe1, 0xf8, 0x5a, 0xea, 0x56, 0xdc, 0xed, - 0x1c, 0xb2, 0x44, 0xac, 0xde, 0xa5, 0x51, 0x82, 0x92, 0x7b, - 0x9c, 0x73, 0xde, 0xbb, 0x2a, 0x28, 0xf3, 0x2, 0x99, 0xd2, - 0x34, 0xd3, 0xa5, 0x7f, 0x65, 0x1d, 0x3e, 0xd7, 0xfb, 0x3b, - 0x67, 0x97, 0xf6, 0x4f, 0x25, 0x7c, 0xad, 0xbe, 0x9b, 0x71, - 0x8c, 0x57, 0x3b, 0xa2, 0xfc, 0x2f, 0xf0, 0x5f, 0x87, 0xb5, - 0x25, 0xd4, 0x74, 0xcd, 0xa, 0x18, 0xee, 0xd3, 0xee, 0x49, - 0x24, 0x92, 0x4b, 0xb0, 0xe7, 0x39, 0x50, 0xec, 0x42, 0x9e, - 0x3a, 0x8e, 0x6b, 0xae, 0xa2, 0x8e, 0xb7, 0xe, 0x96, 0x33, - 0x35, 0xdf, 0xf, 0x69, 0x3e, 0x26, 0xd3, 0x5b, 0x4f, 0xd6, - 0x6c, 0x62, 0xbc, 0xb5, 0x62, 0x1b, 0x63, 0xe4, 0x15, 0x3e, - 0xaa, 0xc3, 0x5, 0x4f, 0xb8, 0x20, 0xf2, 0x6b, 0x16, 0xcf, - 0xe1, 0x8f, 0x83, 0x6c, 0x2d, 0xad, 0xe0, 0xb5, 0xd0, 0xe2, - 0x89, 0x2d, 0xee, 0x92, 0xf2, 0x32, 0xb2, 0xc9, 0xbf, 0xcd, - 0x5c, 0xed, 0x25, 0xb7, 0x6e, 0x60, 0x32, 0x70, 0x9, 0x23, - 0x93, 0xc5, 0x75, 0xb4, 0x50, 0xb4, 0xd5, 0x3, 0xd7, 0x73, - 0x31, 0xbc, 0x3f, 0xa5, 0xb7, 0x88, 0xd3, 0xc4, 0x6, 0xd7, - 0x3a, 0xa2, 0x5b, 0xfd, 0x99, 0x67, 0xf3, 0x1b, 0x88, 0xf3, - 0x9d, 0xbb, 0x73, 0xb7, 0xaf, 0x7c, 0x66, 0xa4, 0xd6, 0x74, - 0x4d, 0x33, 0xc4, 0x3a, 0x6c, 0x9a, 0x76, 0xad, 0x65, 0x15, - 0xdd, 0xa4, 0x9f, 0x7a, 0x39, 0x7, 0x43, 0xea, 0xf, 0x55, - 0x3c, 0xf0, 0x46, 0x8, 0xab, 0xf4, 0x51, 0x6d, 0x2c, 0x17, - 0xd6, 0xe7, 0x3f, 0xe1, 0xbf, 0x3, 0xf8, 0x6b, 0xc2, 0x26, - 0x56, 0xd0, 0xb4, 0x98, 0xad, 0x1e, 0x5f, 0xbf, 0x26, 0xe6, - 0x91, 0xc8, 0xe3, 0x8d, 0xce, 0x49, 0x3, 0x81, 0xc6, 0x71, - 0x50, 0x78, 0x8b, 0xe1, 0xe7, 0x84, 0xfc, 0x57, 0x76, 0x97, - 0x7a, 0xd6, 0x8d, 0xd, 0xc5, 0xca, 0x8c, 0x79, 0xca, 0xef, - 0x13, 0xb0, 0xe3, 0xef, 0x14, 0x20, 0xb6, 0x31, 0xc6, 0x73, - 0x8e, 0xd5, 0xd3, 0xd1, 0x43, 0xd7, 0x70, 0x5a, 0x6c, 0x66, - 0xe8, 0x7e, 0x1f, 0xd2, 0x7c, 0x35, 0xa7, 0x2d, 0x86, 0x8d, - 0x61, 0xd, 0x9d, 0xb0, 0x39, 0x2b, 0x18, 0xe5, 0x8f, 0x4c, - 0xb1, 0x3c, 0xb1, 0xe9, 0xc9, 0x24, 0xd6, 0x95, 0x14, 0x50, - 0xdd, 0xc0, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0xf3, 0x58, 0x3f, 0xe4, 0x35, 0xaf, 0xff, 00, 0xd8, 0x49, - 0xff, 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, 0xff, 00, 0x90, - 0x54, 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd7, 0x17, 0x7, 0xfc, - 0x86, 0xb5, 0xff, 00, 0xfb, 0x9, 0x3f, 0xfe, 0x80, 0x95, - 0xda, 0x68, 0xff, 00, 0xf2, 0xa, 0x87, 0xfe, 0x5, 0xff, - 00, 0xa1, 0x1a, 00, 0xc9, 0xd2, 0xac, 0x7c, 0x55, 0xa3, - 0x69, 0xd1, 0xe9, 0xf0, 0x5b, 0xe8, 0xd3, 0x45, 0xb, 0x3e, - 0xc9, 0x1e, 0xea, 0x55, 0x66, 0x5, 0x89, 0x19, 0x2, 0x33, - 0x83, 0xcf, 0xa9, 0xaa, 0xb3, 0x78, 0x9b, 0xc4, 0xf0, 0xcf, - 0x24, 0x4d, 0xa6, 0x69, 0x4, 0xa3, 0x15, 0x24, 0x5e, 0x4b, - 0xd8, 0xff, 00, 0xd7, 0x3a, 0xed, 0xab, 0x6, 0xe3, 0xc3, - 0xcf, 0x3d, 0xcc, 0xb2, 0x8b, 0x95, 0x1b, 0xdc, 0xb6, 0x36, - 0x74, 0xc9, 0xcf, 0xad, 00, 0x62, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x72, 0xb6, 0x11, 0x5d, 0x9, - 0x6f, 0xae, 0x6f, 0x44, 0x2b, 0x3d, 0xdd, 0xcb, 0x4e, 0x52, - 0x16, 0x2c, 0xab, 0x90, 0x6, 0x32, 0x40, 0x27, 0xa7, 0xa5, - 0x76, 0xda, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, 0x7f, - 0xe8, 0x46, 0xa9, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, - 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0xb5, 0xac, 0xac, - 0x8d, 0xa5, 0xa2, 0x40, 0x5c, 0x31, 0x5c, 0xf3, 0x8c, 0x75, - 0x39, 0xa0, 0xf, 0xff, 0xd9, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, - 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, - 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, - 0x67, 0x65, 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, - 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, - 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xd, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, - 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, - 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, - 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, - 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, 0x65, - 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, - 0x20, 0x74, 0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, - 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4c, 0x45, 0x44, 0x2c, 0x20, 0x74, 0x68, - 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, - 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, - 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, - 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x39, 0x2, 0x1b, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x42, 0x71, 0x40, 0x7, 0x4a, - 0x42, 0x69, 0x9, 0xa6, 0xb3, 0x50, 0x2, 0x96, 0xc5, 0x31, - 0x9c, 0x54, 0x6e, 0xf5, 0xb, 0xcb, 0x40, 0x13, 0x34, 0x82, - 0xa3, 0x69, 0xb0, 0x3a, 0xd5, 0x49, 0x66, 0x7e, 0x91, 0xc6, - 0xf3, 0x36, 0x40, 0xda, 0x83, 0x9e, 0x4e, 0x33, 0xf4, 0xac, - 0xdb, 0xcd, 0x1b, 0xc4, 0x97, 0xd7, 0x13, 0x24, 0x77, 0xf6, - 0x3a, 0x6d, 0xa1, 0xe1, 0x1e, 0x28, 0x9a, 0x69, 0xfa, 0xf5, - 0xcb, 0x61, 0x47, 0xd3, 0x69, 0xc7, 0xa9, 0xac, 0x2a, 0xd5, - 0xf6, 0x6b, 0x48, 0xb9, 0x3e, 0xcb, 0xfe, 0xd, 0x97, 0xe2, - 0x73, 0x56, 0xad, 0xec, 0x97, 0xbb, 0x7, 0x27, 0xd9, 0x7f, - 0xc1, 0x69, 0x7e, 0x26, 0xc3, 0x4f, 0xc7, 0x5a, 0x89, 0xae, - 0x6b, 0x99, 0xbf, 0xf8, 0x61, 0xa9, 0x6a, 0x96, 0xde, 0x4d, - 0xcf, 0x8d, 0xf5, 0xc1, 0xfe, 0xd5, 0xaa, 0xc1, 0x6e, 0x7f, - 0x34, 0x8c, 0x1f, 0xd6, 0xb9, 0xe9, 0x3f, 0x67, 0xc9, 0xf7, - 0xef, 0x8b, 0xc7, 0xbe, 0x29, 0x57, 0xce, 0x72, 0xd7, 0xec, - 0x6b, 0xcc, 0xab, 0x8c, 0xc6, 0x45, 0xfe, 0xef, 0xa, 0xda, - 0xf3, 0x94, 0x53, 0xfc, 0xdf, 0xe6, 0x78, 0xf5, 0xb1, 0xf9, - 0x84, 0x5f, 0xee, 0xb0, 0x52, 0x6b, 0xce, 0x70, 0x4f, 0xee, - 0x4d, 0xfe, 0x67, 0xa2, 0x9b, 0xa1, 0xeb, 0x4d, 0xfb, 0x50, - 0xec, 0x6b, 0xce, 0x7f, 0xe1, 0x47, 0xf8, 0x86, 0xf, 0xf8, - 0xf7, 0xf8, 0x85, 0xad, 0x1f, 0xfa, 0xef, 0x26, 0xff, 00, - 0xe7, 0x4b, 0xff, 00, 0xa, 0xb3, 0xc7, 0xf6, 0xf9, 0xfb, - 0x37, 0x8f, 0xc9, 0x1d, 0xbc, 0xfb, 0x48, 0x9f, 0xf9, 0xa1, - 0xac, 0xbf, 0xb4, 0x71, 0x51, 0xf8, 0xf0, 0x73, 0xf9, 0x38, - 0x3f, 0xfd, 0xb9, 0x18, 0xac, 0xdb, 0x1b, 0x1f, 0xe2, 0x60, - 0x2a, 0x7c, 0x9d, 0x37, 0xff, 00, 0xb7, 0xa3, 0xd1, 0x7e, - 0xd5, 0xef, 0x47, 0xda, 0xbd, 0xeb, 0xcc, 0x26, 0xf8, 0x6b, - 0xf1, 0x54, 0x7f, 0xaa, 0xf1, 0xdd, 0x93, 0x7f, 0xbf, 0x65, - 0x10, 0xff, 00, 0xda, 0x55, 0x51, 0xbe, 0x1e, 0x7c, 0x64, - 0x8c, 0xe5, 0x3c, 0x67, 0xa5, 0x48, 0x3d, 0x1a, 0xdd, 0x7, - 0xfe, 0xd0, 0xac, 0xde, 0x6f, 0x56, 0x3b, 0xe0, 0xea, 0xfd, - 0xd0, 0xff, 00, 0xe4, 0xcc, 0xa5, 0x9f, 0x56, 0x8e, 0xf9, - 0x7d, 0x7f, 0xba, 0x9f, 0xff, 00, 0x2c, 0x3d, 0x6c, 0x5c, - 0x8f, 0x5a, 0x51, 0x74, 0x7, 0x7a, 0xf2, 0x54, 0xf0, 0x9f, - 0xc6, 0x7b, 0x7c, 0x7f, 0xc4, 0xdf, 0x41, 0xba, 0xc0, 0xfe, - 0x34, 0x23, 0x3f, 0x94, 0x62, 0xa5, 0x36, 0x9f, 0x19, 0x6d, - 0x94, 0xff, 00, 0xa2, 0x78, 0x6a, 0xe0, 0xfa, 0xfe, 0xf7, - 0x3f, 0xfa, 0x10, 0xa6, 0xb3, 0x9f, 0xe6, 0xc3, 0x55, 0x5f, - 0xf6, 0xe7, 0xf9, 0x36, 0x35, 0xc4, 0x1f, 0xcf, 0x83, 0xac, - 0xbf, 0xed, 0xcb, 0xfe, 0x4d, 0x9e, 0xac, 0x2e, 0x73, 0xde, - 0x94, 0x5c, 0x8f, 0x5a, 0xf1, 0xd9, 0xef, 0xbe, 0x34, 0x41, - 0xd3, 0x41, 0xd0, 0x64, 0xc7, 0xf7, 0x16, 0x53, 0xff, 00, - 0xb5, 0x2a, 0x83, 0xf8, 0xa3, 0xe3, 0x3d, 0xbb, 0x7c, 0xde, - 0x12, 0xd3, 0x65, 0x5f, 0x48, 0xe2, 0x97, 0xff, 00, 0x8e, - 0xd6, 0x32, 0xe2, 0xa, 0x10, 0xf8, 0xa8, 0xd5, 0xff, 00, - 0xc1, 0x72, 0x30, 0x97, 0x14, 0x61, 0xe1, 0xf1, 0x61, 0xeb, - 0x2f, 0xfb, 0x85, 0x23, 0xdd, 0x3e, 0xd1, 0xef, 0x4e, 0x13, - 0x8f, 0x5a, 0xf0, 0xc4, 0xf8, 0x8b, 0xf1, 0x4a, 0xd8, 0xff, - 00, 0xa4, 0xfc, 0x3e, 0x69, 0x87, 0xfd, 0x30, 0x12, 0xf, - 0xe8, 0xd5, 0x3c, 0x7f, 0x18, 0x7c, 0x67, 00, 0xc5, 0xcf, - 0xc3, 0x1d, 0x50, 0x1e, 0xed, 0x1b, 0xc8, 0x7f, 0x4f, 0x2a, - 0x9a, 0xe2, 0x3c, 0x7, 0xda, 0xe7, 0x8f, 0xad, 0x39, 0xff, - 00, 0xf2, 0x23, 0x8f, 0x16, 0x65, 0x9f, 0x6f, 0x9e, 0x3e, - 0xb4, 0xaa, 0x7f, 0xf2, 0x2c, 0xf6, 0xdf, 0x3a, 0x9c, 0x27, - 0x2, 0xbc, 0x61, 0x3e, 0x38, 0xea, 0x91, 0xff, 00, 0xc7, - 0xd7, 0x80, 0x7c, 0x43, 0xf, 0xfb, 0x96, 0xe5, 0xbf, 0x98, - 0x15, 0x2b, 0x7e, 0xd0, 0x16, 0x90, 0xa8, 0x33, 0x78, 0x53, - 0xc4, 0xf1, 0xb7, 0x71, 0xf6, 0x5, 0xc7, 0xe6, 0x5c, 0x56, - 0xcb, 0x88, 0x32, 0xce, 0xb5, 0x6d, 0xea, 0xa4, 0xbf, 0x34, - 0x6e, 0xb8, 0xa7, 0x27, 0x7a, 0xba, 0xf6, 0xf5, 0x8c, 0x97, - 0xe6, 0x91, 0xec, 0x7e, 0x78, 0xf5, 0xa5, 0xf3, 0xbd, 0xeb, - 0xc4, 0xe4, 0xfd, 0xa5, 0x74, 0x58, 0x7e, 0xff, 00, 0x87, - 0xfc, 0x46, 0x98, 0xf5, 0xb3, 0x8c, 0x7f, 0xed, 0x4a, 0x6a, - 0x7e, 0xd4, 0x7e, 0x19, 0xcf, 0xef, 0x34, 0xdd, 0x6e, 0xf, - 0xfa, 0xe9, 0x6a, 0x9f, 0xd2, 0x43, 0x53, 0xfe, 0xb1, 0xe5, - 0x3b, 0x3c, 0x44, 0x7f, 0x12, 0x3f, 0xd6, 0xcc, 0x8d, 0x3b, - 0x3c, 0x54, 0x57, 0xdf, 0xfe, 0x47, 0xb7, 0xf9, 0xd4, 0x79, - 0xb5, 0xe3, 0xf6, 0xdf, 0xb4, 0xbf, 0x82, 0xe6, 0xff, 00, - 0x59, 0x75, 0x79, 0x6d, 0xed, 0x25, 0x9b, 0x9f, 0xfd, 0x4, - 0x1a, 0xd1, 0x83, 0xf6, 0x82, 0xf0, 0x24, 0xe4, 0x1, 0xaf, - 0x5, 0x27, 0x8f, 0x9e, 0xd6, 0x65, 0xfe, 0x69, 0x5d, 0x10, - 0xcf, 0x32, 0xb9, 0xfc, 0x38, 0x98, 0x7f, 0xe0, 0x51, 0xff, - 00, 0x33, 0xae, 0x1c, 0x47, 0x93, 0x54, 0xf8, 0x71, 0x94, - 0xff, 00, 0xf0, 0x38, 0xaf, 0xcd, 0x9e, 0xa2, 0x25, 0xcd, - 0x2f, 0x98, 0x2b, 0xcf, 0xed, 0xfe, 0x33, 0xf8, 0x32, 0xe4, - 0x7c, 0xbe, 0x24, 0xb0, 0x5f, 0xfa, 0xe9, 0x26, 0xcf, 0xfd, - 0xb, 0x15, 0x79, 0x7e, 0x28, 0xf8, 0x44, 0x80, 0x4f, 0x8a, - 0x74, 0x6e, 0x7d, 0x75, 0x8, 0x87, 0xfe, 0xcd, 0x5d, 0x91, - 0xcc, 0x30, 0x73, 0xd6, 0x35, 0xa2, 0xff, 00, 0xed, 0xe5, - 0xfe, 0x67, 0x7c, 0x73, 0x4c, 0x4, 0xd5, 0xe3, 0x88, 0x83, - 0xff, 00, 0xb7, 0xa3, 0xfe, 0x67, 0x66, 0x24, 0xa5, 0x12, - 0xfb, 0xd7, 0x1b, 0xff, 00, 0xb, 0x47, 0xc2, 0x1f, 0xf4, - 0x35, 0x68, 0x9f, 0xf8, 0x31, 0x87, 0xff, 00, 0x8a, 0xab, - 0x36, 0xff, 00, 0x10, 0xbc, 0x35, 0x74, 0x3f, 0x71, 0xe2, - 0x2d, 0x2a, 0x6e, 0xff, 00, 0xbb, 0xbd, 0x89, 0xbf, 0x93, - 0x55, 0xac, 0x66, 0x1a, 0x4e, 0xca, 0xac, 0x7e, 0xf4, 0x69, - 0x1c, 0x7e, 0x12, 0x4e, 0xd1, 0xad, 0x17, 0xff, 00, 0x6f, - 0x2f, 0xf3, 0x3a, 0xaf, 0x32, 0x97, 0xcc, 0xac, 0x8b, 0x7d, - 0x6e, 0xce, 0xef, 0x1e, 0x45, 0xdc, 0x13, 0x67, 0xa7, 0x97, - 0x22, 0xb7, 0xf2, 0x35, 0x6f, 0xce, 0x1e, 0xb5, 0xd4, 0xa4, - 0xa4, 0xae, 0x99, 0xdb, 0x19, 0x46, 0x4a, 0xf1, 0x77, 0x2e, - 0x79, 0x94, 0xbb, 0xfd, 0xea, 0x9f, 0x9d, 0xef, 0x4b, 0xe7, - 0x7b, 0xd5, 0x14, 0x5b, 0xdf, 0xef, 0x46, 0xff, 00, 0x7a, - 0xac, 0x25, 0xe2, 0x97, 0xcd, 0xa0, 0xb, 0x3b, 0xe9, 0x41, - 0xaa, 0xde, 0x6d, 0x28, 0x93, 0x3d, 0xe8, 0x2, 0xc6, 0x45, - 0x2e, 0x7d, 0xea, 0xbf, 0x99, 0x4a, 0x24, 0xa0, 0x9, 0xf3, - 0xef, 0x46, 0x6a, 0x1f, 0x32, 0x8f, 0x32, 0x80, 0x26, 0xcd, - 0x2e, 0x4d, 0x43, 0xe6, 0x51, 0xba, 0x80, 0x26, 0xc9, 0xa0, - 0x1a, 0x8b, 0x7d, 0x28, 0x6a, 00, 0x97, 0x22, 0x8c, 0x8a, - 0x66, 0xe1, 0x46, 0xe1, 0x40, 0xf, 0xc8, 0xa3, 0x22, 0x99, - 0xba, 0x8d, 0xd4, 00, 0xfc, 0xd1, 0x9a, 0x66, 0x45, 0x19, - 0x14, 0x1, 0x25, 0x14, 0xcc, 0xd1, 0x9a, 00, 0x7d, 0x14, - 0xdd, 0xd4, 0x6e, 0xa0, 0x7, 0x51, 0x4d, 0xdd, 0x4b, 0xba, - 0x80, 0x16, 0x8a, 0x4d, 0xd4, 0x75, 0xa0, 0x5, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x1, 0x29, 0xa4, 0xd3, 0x89, 0xa8, 0xd8, - 0xd0, 00, 0xcd, 0x50, 0xc8, 0xfe, 0xf4, 0xae, 0xf5, 0x56, - 0x59, 0x70, 0x3a, 0xd0, 0x1, 0x24, 0x98, 0xa5, 0xb5, 0xb6, - 0x37, 0x3f, 0x33, 0x12, 0x10, 0x1f, 0xce, 0xb9, 0x8d, 0x67, - 0xc4, 0x46, 0x2d, 0x62, 0xc3, 0x49, 0xb4, 0x6, 0x6b, 0xcb, - 0x86, 0xdf, 0x28, 0x44, 0x2f, 0xe4, 0x43, 0x86, 0xf9, 0xdb, - 0x1c, 0x2e, 0x4a, 0xed, 0x5c, 0xf5, 0x39, 0xc0, 0x3b, 0x4d, - 0x76, 0xd6, 0xe8, 0x23, 0x82, 0x35, 0x3, 00, 0x28, 0x18, - 0xa8, 0x8c, 0xd4, 0x9b, 0x4b, 0xa1, 0x9c, 0x66, 0xa6, 0xda, - 0x5d, 0x7, 0x24, 0x6b, 0x18, 0xc2, 0xa8, 0x5f, 0xa0, 0xa7, - 0x51, 0x45, 0x59, 0xa0, 0x51, 0x5e, 0x57, 0xf1, 0xb3, 0xf6, - 0x96, 0xf0, 0x27, 0xc0, 0x6d, 0x16, 0x5b, 0xef, 0x12, 0xeb, - 0x56, 0xf1, 0xcc, 0xb9, 0xb, 0x69, 0x14, 0xd1, 0x99, 0x89, - 0xc7, 0x75, 0x2c, 0x8, 0x15, 0xf0, 0xf, 0x8e, 0xbf, 0xe0, - 0xb2, 0x57, 0x16, 0xd7, 0x92, 0xaf, 0x86, 0x74, 0x6b, 0x69, - 0xad, 0x83, 0x7c, 0x8d, 0x73, 0xf, 0xcc, 0x47, 0xe1, 0x25, - 00, 0x7e, 0xa9, 0x51, 0x5f, 0x29, 0xfe, 0xc5, 0x5f, 0xb5, - 0x9e, 0xbd, 0xfb, 0x45, 0x78, 0x5b, 0x58, 0xd7, 0x3c, 0x4b, - 0xa3, 0xff, 00, 0x62, 0xd8, 0xd9, 0x63, 0x6d, 0xd9, 0x84, - 0xc5, 0x9, 0xf5, 0x1b, 0x8b, 0x11, 0x5e, 0xb1, 0x61, 0xfb, - 0x4d, 0x7c, 0x3d, 0xd5, 0x75, 0x85, 0xd3, 0x2c, 0xf5, 0xd8, - 0x6e, 0xee, 0xde, 0x4f, 0x29, 0x16, 0x17, 0x47, 0xde, 0xde, - 0xd8, 0x6e, 0x68, 0x3, 0xd5, 0x28, 0xa6, 0x45, 0x2a, 0xcd, - 0x12, 0x48, 0xbf, 0x75, 0x80, 0x23, 0x3e, 0x95, 0x8d, 0xae, - 0xf8, 0xbf, 0x4f, 0xd0, 0x24, 0x58, 0xe7, 0x90, 0x19, 0xf, - 0xf0, 0x2b, 0xc, 0x8f, 0xc3, 0x35, 0x8d, 0x5a, 0xd4, 0xe8, - 0x47, 0x9e, 0xa3, 0xb2, 0x30, 0xad, 0x5e, 0x96, 0x1e, 0x1e, - 0xd2, 0xac, 0xac, 0xbc, 0xcd, 0xca, 0x2b, 0x92, 0x5f, 0x89, - 0x7a, 0x43, 0x77, 0x7f, 0xfc, 0x77, 0xfc, 0x6a, 0x65, 0xf8, - 0x89, 0xa4, 0x37, 0xf1, 0xbf, 0xfe, 0x3b, 0xfe, 0x35, 0xc8, - 0xb3, 0x1c, 0x23, 0xda, 0xa2, 0x38, 0x56, 0x6b, 0x81, 0x7b, - 0x55, 0x5f, 0x79, 0xd3, 0xd1, 0x5c, 0xe2, 0xf8, 0xf7, 0x49, - 0x6f, 0xf9, 0x68, 0xdf, 0xa7, 0xf8, 0xd4, 0xab, 0xe3, 0x6d, - 0x2d, 0xbf, 0xe5, 0xa9, 0xfd, 0x3f, 0xc6, 0xb4, 0x58, 0xdc, - 0x33, 0xda, 0xa2, 0xfb, 0xcd, 0x56, 0x61, 0x84, 0x7b, 0x55, - 0x5f, 0x79, 0xbd, 0x45, 0x62, 0xaf, 0x8b, 0xb4, 0xc6, 0xe9, - 0x3f, 0xf2, 0xff, 00, 0x1a, 0x9e, 0x2f, 0x11, 0xd8, 0x4b, - 0x8d, 0xb3, 0xa9, 0xfc, 0x6b, 0x45, 0x89, 0xa3, 0x2d, 0xa6, - 0xbe, 0xf3, 0x55, 0x8b, 0xc3, 0xcb, 0x69, 0xaf, 0xbc, 0xd2, - 0xc6, 0x69, 0xad, 0xc, 0x6f, 0xf7, 0x91, 0x5b, 0xea, 0x28, - 0x8a, 0x55, 0x99, 0x3, 0x21, 0xc8, 0x34, 0xfa, 0xe8, 0xd1, - 0xa3, 0xa7, 0x49, 0x22, 0xab, 0xe9, 0x96, 0x72, 0x7d, 0xfb, - 0x48, 0x1b, 0xfd, 0xe8, 0xd4, 0xff, 00, 0x4a, 0xaf, 0x27, - 0x86, 0xf4, 0x89, 0x7e, 0xfe, 0x97, 0x64, 0xff, 00, 0xef, - 0x5b, 0xa1, 0xfe, 0x95, 0xa5, 0x45, 0x66, 0xe9, 0x53, 0x96, - 0xf1, 0x5f, 0x71, 0x94, 0xa8, 0x52, 0x97, 0xc5, 0x4, 0xfe, - 0x48, 0xc3, 0x97, 0xc0, 0xde, 0x1b, 0x9b, 0xfd, 0x66, 0x81, - 0xa5, 0xbf, 0xfb, 0xd6, 0x71, 0x9f, 0xe9, 0x55, 0x64, 0xf8, - 0x65, 0xe1, 0x19, 0x73, 0xbb, 0xc3, 0x3a, 0x49, 0xcf, 0xfd, - 0x39, 0x47, 0xfe, 0x15, 0xd2, 0x34, 0x8a, 0x87, 0xe6, 0x60, - 0xbf, 0x53, 0x48, 0x25, 0x43, 0xfc, 0x6b, 0xf9, 0xd6, 0x12, - 0xc2, 0x61, 0x65, 0xf1, 0x53, 0x8f, 0xdc, 0x8e, 0x69, 0x60, - 0x70, 0x72, 0xf8, 0xa9, 0x45, 0xff, 00, 0xdb, 0xab, 0xfc, - 0x8e, 0x4e, 0x4f, 0x84, 0x3e, 0xa, 0x93, 0xaf, 0x85, 0xf4, - 0xbf, 0xf8, 0xd, 0xb2, 0x8f, 0xe5, 0x55, 0x64, 0xf8, 0x1f, - 0xe0, 0x49, 0x7e, 0xf7, 0x86, 0x2c, 0xbf, 0xe0, 0x21, 0x97, - 0xf9, 0x1a, 0xee, 0x37, 0xf, 0x51, 0x4b, 0x58, 0xbc, 0xb3, - 0x3, 0x2d, 0xe8, 0x41, 0xff, 00, 0xdb, 0xab, 0xfc, 0x8c, - 0x25, 0x93, 0xe5, 0xb3, 0xf8, 0xb0, 0xd0, 0x7f, 0xf6, 0xe4, - 0x7f, 0xc8, 0xf3, 0xb9, 0x3f, 0x67, 0xdf, 0x87, 0xd2, 0xf5, - 0xf0, 0xdc, 0x3, 0xfd, 0xd9, 0x65, 0x1f, 0xc9, 0xaa, 0xac, - 0x9f, 0xb3, 0x67, 0xc3, 0xc9, 0x33, 0xff, 00, 0x12, 0x1d, - 0xbf, 0xee, 0xdd, 0x4b, 0xff, 00, 0xc5, 0x57, 0xa7, 0x51, - 0x58, 0x3c, 0x97, 0x2c, 0x96, 0xf8, 0x68, 0x7f, 0xe0, 0x11, - 0xff, 00, 0x23, 0x9e, 0x5c, 0x3f, 0x93, 0xcb, 0x7c, 0x1d, - 0x3f, 0xfc, 0x2, 0x3f, 0xe4, 0x79, 0x34, 0xbf, 0xb2, 0xf7, - 0xc3, 0xf9, 0x3e, 0xee, 0x99, 0x34, 0x7f, 0xee, 0xdc, 0xc9, - 0xfd, 0x4d, 0x47, 0xff, 00, 0xc, 0xcb, 0xe1, 0x58, 0x8e, - 0x6d, 0xae, 0x35, 0x1b, 0x53, 0xd7, 0x31, 0xdd, 0x3f, 0xf8, - 0xd7, 0xae, 0xd1, 0x58, 0xbc, 0x83, 0x2a, 0xdd, 0x61, 0xa2, - 0xbd, 0x15, 0xbf, 0x23, 0x9d, 0xf0, 0xc6, 0x48, 0xf5, 0x58, - 0x48, 0x2f, 0x48, 0xa5, 0xf9, 0x1e, 0x48, 0x3f, 0x67, 0xd8, - 0xe0, 0xff, 00, 0x8f, 0x4f, 0x17, 0xf8, 0x86, 0xd3, 0xd3, - 0xcb, 0xbd, 0x93, 0x8f, 0xfc, 0x7a, 0xab, 0xcd, 0xf0, 0x7, - 0x56, 0x6f, 0xf5, 0x5f, 0x12, 0x3c, 0x4b, 0x1f, 0xd6, 0xea, - 0x53, 0xff, 00, 0xb5, 0x2b, 0xd8, 0xe8, 0xa4, 0xf2, 0x1c, - 0xb9, 0xe9, 0xec, 0xed, 0xe9, 0x29, 0x2f, 0xc9, 0x89, 0xf0, - 0xce, 0x54, 0xd5, 0xbd, 0x93, 0x5e, 0x92, 0x9a, 0xfc, 0xa4, - 0x78, 0x8c, 0x9f, 0xb3, 0xf7, 0x89, 0x1, 0xcc, 0x5f, 0x14, - 0x75, 0xf1, 0x8e, 0x9b, 0xe5, 0x94, 0xff, 00, 0xed, 0x5a, - 0x54, 0xf8, 0x25, 0xe3, 0x9b, 0x6c, 0x79, 0x1f, 0x13, 0xf5, - 0x6, 0x23, 0xa7, 0x9b, 0x13, 0x37, 0xf3, 0x90, 0xd7, 0xb6, - 0xd1, 0x59, 0xff, 00, 0xab, 0xd9, 0x7a, 0xd6, 0x2a, 0x4b, - 0xd2, 0xa4, 0xff, 00, 0xf9, 0x23, 0x2f, 0xf5, 0x57, 0x2b, - 0x4e, 0xf1, 0x8c, 0xd7, 0xa5, 0x5a, 0x8b, 0xff, 00, 0x6f, - 0x3c, 0x64, 0x7c, 0x39, 0xf8, 0xa5, 0x6a, 0xa4, 0x43, 0xf1, - 0xe, 0x29, 0x3f, 0xeb, 0xa6, 0x9d, 0x11, 0xfe, 0x60, 0xd5, - 0x59, 0xfc, 0x15, 0xf1, 0x91, 0x3f, 0xd5, 0x78, 0xda, 0xd2, - 0x4f, 0xfb, 0x71, 0x80, 0x7f, 0xed, 0x3a, 0xf7, 0xa, 0x29, - 0xbc, 0x8a, 0x8b, 0x56, 0x8d, 0x6a, 0xab, 0xd2, 0xac, 0xff, - 00, 0xcc, 0x72, 0xe1, 0xbc, 0x3b, 0x56, 0x8e, 0x22, 0xb2, - 0xf4, 0xad, 0x53, 0xf5, 0x93, 0x3e, 0x7f, 0x97, 0xc2, 0xff, - 00, 0x1d, 0x22, 0x39, 0x8f, 0xc4, 0xb6, 0x73, 0x60, 0xf4, - 0xfb, 0x3d, 0xb0, 0xcf, 0xfe, 0x43, 0xa1, 0x2d, 0xbe, 0x3c, - 0x5a, 0x63, 0x27, 0x4b, 0xbc, 0xc7, 0xf7, 0xd6, 0x11, 0x9f, - 0xc8, 0x8a, 0xfa, 0x2, 0x8a, 0xc3, 0xfb, 0x1, 0x27, 0x78, - 0xe2, 0xeb, 0x2f, 0xfb, 0x88, 0xdf, 0xe6, 0x99, 0xcd, 0xfe, - 0xab, 0xc5, 0x3b, 0xc7, 0x1d, 0x88, 0x5f, 0xf7, 0x15, 0xbf, - 0xcd, 0x33, 0xc2, 0x23, 0xd6, 0xfe, 0x38, 0xdb, 0x2, 0x24, - 0xf0, 0xce, 0x8b, 0x73, 0xef, 0xbc, 0x3, 0xfa, 0x4f, 0x53, - 0xa7, 0x8d, 0x7e, 0x2e, 0xc1, 0xfe, 0xbf, 0xc0, 0x56, 0x92, - 0x8f, 0xfa, 0x65, 0x74, 0xab, 0xff, 00, 0xb3, 0x9a, 0xf7, - 0xa, 0x2b, 0x55, 0x93, 0xd6, 0x87, 0xc1, 0x8d, 0xab, 0xf3, - 0x70, 0x7f, 0x9c, 0xd, 0xe3, 0x90, 0xe2, 0x21, 0xf0, 0x66, - 0x15, 0xbe, 0x6e, 0xf, 0xf3, 0x81, 0xe2, 0xc7, 0xe2, 0xa7, - 0x8f, 0xad, 0x97, 0xf7, 0xdf, 0xc, 0x67, 0x66, 0x1d, 0x4a, - 0x6a, 0x4a, 0x7, 0xfe, 0x8b, 0x35, 0x4a, 0x7f, 0x8e, 0x7e, - 0x30, 0xb6, 0xcf, 0x99, 0xf0, 0xca, 0xed, 0x71, 0xff, 00, - 0x51, 0xc, 0xff, 00, 0xed, 0x2a, 0xf7, 0x6a, 0x29, 0xcb, - 0x2e, 0xcc, 0x3e, 0xce, 0x3a, 0x4b, 0xfe, 0xdc, 0xa6, 0xff, - 00, 0xf6, 0xd4, 0x39, 0x65, 0x39, 0xa7, 0xd8, 0xcc, 0xa6, - 0xbd, 0x61, 0x49, 0xff, 00, 0xed, 0x88, 0xf9, 0xf1, 0xbf, - 0x69, 0x1d, 0x76, 0x2, 0x7e, 0xd1, 0xf0, 0xea, 0xfa, 0x21, - 0xea, 0xb7, 0x85, 0xbf, 0xf6, 0x90, 0xa9, 0x62, 0xfd, 0xa9, - 0x6d, 0xd3, 0xfe, 0x3e, 0xfc, 0x25, 0xac, 0x40, 0x3f, 0xd8, - 0xd8, 0xdf, 0xcf, 0x15, 0xef, 0xd4, 0x84, 0x3, 0xda, 0xb2, - 0x59, 0x76, 0x6d, 0x1d, 0xb1, 0xf7, 0xf5, 0xa7, 0xf, 0xd2, - 0xc6, 0xb, 0x2a, 0xcf, 0x23, 0xb6, 0x67, 0x7f, 0x5a, 0x50, - 0xfd, 0x2c, 0x78, 0x74, 0x5f, 0xb5, 0x5f, 0x85, 0xd8, 0x81, - 0x36, 0x97, 0xae, 0x5b, 0x9e, 0xe5, 0xed, 0xe3, 0x23, 0xf4, - 0x92, 0xb4, 0x2d, 0xbf, 0x69, 0xef, 0x3, 0xcc, 0x40, 0x92, - 0xea, 0xf6, 0xdb, 0xfe, 0xba, 0xda, 0x39, 0xc7, 0xfd, 0xf3, - 0x9a, 0xf5, 0xe6, 0x82, 0x27, 0xfb, 0xd1, 0xa3, 0x7d, 0x54, - 0x54, 0x12, 0x69, 0x36, 0x52, 0xfd, 0xfb, 0x48, 0x1f, 0xeb, - 0x18, 0x35, 0xaa, 0xc2, 0xe7, 0x10, 0xff, 00, 0x98, 0xa8, - 0x3f, 0x5a, 0x6f, 0xf4, 0x99, 0xbc, 0x70, 0x79, 0xfc, 0x36, - 0xc6, 0x53, 0x97, 0xad, 0x27, 0xfa, 0x54, 0x47, 0x9b, 0x7f, - 0xc3, 0x48, 0x7c, 0x3d, 0x1d, 0x75, 0xf6, 0x1f, 0xf6, 0xe3, - 0x73, 0xff, 00, 0xc6, 0xe9, 0x3f, 0xe1, 0xa4, 0xbe, 0x1e, - 0x7f, 0xd0, 0xc2, 0x7f, 0xf0, 0x6, 0xe7, 0xff, 00, 0x8d, - 0xd7, 0x7d, 0x37, 0x84, 0x74, 0x4b, 0x8f, 0xf5, 0x9a, 0x55, - 0xa3, 0xfd, 0x62, 0x15, 0x42, 0x7f, 0x86, 0x7e, 0x15, 0xb9, - 0xcf, 0x99, 0xa0, 0xd9, 0x37, 0xfd, 0xb3, 0xc5, 0x29, 0x43, - 0x3d, 0x5f, 0xd, 0x4a, 0x2f, 0xfe, 0xdc, 0x9a, 0xff, 00, - 0xdb, 0xd9, 0x33, 0xa7, 0xc4, 0xab, 0xe0, 0xab, 0x41, 0xfa, - 0xc2, 0xa2, 0xff, 00, 0xdc, 0x8c, 0xe5, 0xa0, 0xfd, 0xa2, - 0x7e, 0x1e, 0xdc, 0x1c, 0x2f, 0x88, 0xe3, 0x7, 0xfe, 0x9a, - 0x5b, 0x4e, 0x9f, 0xfa, 0x12, 0xa, 0xd4, 0xb6, 0xf8, 0xd1, - 0xe0, 0x7b, 0xac, 0x6c, 0xf1, 0x56, 0x98, 0xb9, 0xff, 00, - 0x9e, 0x93, 0x84, 0xff, 00, 0xd0, 0xb1, 0x53, 0x4d, 0xf0, - 0x5f, 0xc1, 0x17, 0x19, 0xdf, 0xe1, 0xcb, 0x43, 0x9e, 0xb8, - 0xdc, 0x3f, 0x91, 0xaa, 0x52, 0x7c, 00, 0xf0, 0x4, 0xbd, - 0x7c, 0x3b, 0x10, 0xff, 00, 0x76, 0x69, 0x47, 0xfe, 0xcd, - 0x59, 0xaf, 0xf5, 0x81, 0x6f, 0xec, 0x5f, 0xfe, 0x6, 0xbf, - 0xcc, 0xc9, 0x7f, 0xad, 0x31, 0xf8, 0xbe, 0xae, 0xff, 00, - 0xf0, 0x62, 0xff, 00, 0x33, 0x6e, 0xf, 0x88, 0x5e, 0x17, - 0xba, 0xff, 00, 0x53, 0xe2, 0x5d, 0x22, 0x6f, 0xfa, 0xe7, - 0x7d, 0x13, 0x7f, 0x26, 0xad, 0x4b, 0x5d, 0x6a, 0xc2, 0xf4, - 0x81, 0x6f, 0x7b, 0x6f, 0x70, 0x4f, 0x4f, 0x2a, 0x55, 0x6f, - 0xe4, 0x6b, 0x84, 0x97, 0xf6, 0x6e, 0xf8, 0x7f, 0x27, 0xfc, - 0xc1, 0x19, 0x7f, 0xdd, 0xba, 0x97, 0xff, 00, 0x8a, 0xaa, - 0xb2, 0xfe, 0xcc, 0x1e, 00, 0x93, 0xa6, 0x9d, 0x72, 0x9f, - 0xee, 0xdd, 0x3f, 0xf5, 0x35, 0xb2, 0xad, 0x9d, 0x47, 0xe2, - 0xa3, 0x4d, 0xfa, 0x4e, 0x4b, 0xf3, 0x83, 0x37, 0x8d, 0x7e, - 0x21, 0x8f, 0xc7, 0x87, 0xa5, 0x2f, 0x4a, 0x92, 0x5f, 0x9d, - 0x36, 0x7a, 0x97, 0x99, 0x4b, 0xbe, 0xbc, 0x86, 0x5f, 0xd9, - 0x4b, 0xc0, 0x92, 0x74, 0x8a, 0xfe, 0x3f, 0xf7, 0x6e, 0x7f, - 0xc4, 0x55, 0x49, 0xbf, 0x64, 0x5f, 0x5, 0x48, 0x3e, 0x4b, - 0x8d, 0x56, 0x33, 0xed, 0x3a, 0x1f, 0xe6, 0x94, 0x3c, 0x5e, - 0x6e, 0xb6, 0xc2, 0x45, 0xff, 00, 0xdc, 0x5f, 0xfe, 0xe6, - 0x12, 0xc7, 0x67, 0xab, 0x6c, 0xc, 0x1f, 0xfd, 0xc6, 0xff, - 00, 0xee, 0x47, 0xb4, 0xee, 0xa3, 0x75, 0x78, 0x3c, 0xdf, - 0xb2, 0xdb, 0x68, 0xaa, 0x65, 0xf0, 0xc7, 0x8b, 0xf5, 0x7d, - 0x2a, 0xe0, 0x1c, 0x83, 0xf6, 0x82, 0x83, 0xff, 00, 0x1c, - 0x2, 0xa0, 0x4b, 0x1f, 0x8d, 0x9e, 0xd, 0x66, 0xf2, 0xfc, - 0x45, 0xa1, 0x78, 0x8a, 0xd9, 0x13, 0x62, 0x45, 0xaa, 0xc4, - 0xc0, 0x8f, 0x7d, 0xd1, 0xa2, 0xb1, 0x3e, 0xec, 0xc6, 0x9d, - 0x3c, 0xcb, 0x19, 0x17, 0x6c, 0x4e, 0x12, 0x51, 0xf3, 0x8b, - 0x53, 0x5f, 0xa3, 0xfc, 0x7, 0x4b, 0x37, 0xc7, 0xc1, 0xdb, - 0x19, 0x81, 0x9c, 0x7c, 0xe1, 0x28, 0xcd, 0x7f, 0xed, 0xaf, - 0xf0, 0x67, 0xd0, 0x1b, 0xa9, 0x73, 0x5e, 0x9, 0x27, 0xed, - 0x49, 0x7, 0x83, 0xe3, 0x82, 0xdf, 0xc6, 0xfe, 0x19, 0xd4, - 0xf4, 0xbb, 0xb6, 0x70, 0x92, 0x5d, 0xe9, 0xa8, 0xb7, 0x36, - 0x41, 0x78, 0xf9, 0xf7, 0x12, 0xae, 0x7, 0x5c, 0xae, 0xd6, - 0x20, 0x77, 0x35, 0xed, 0x7a, 0x4e, 0xb5, 0x65, 0xaf, 0x69, - 0xb6, 0xfa, 0x86, 0x9d, 0x77, 0xd, 0xf5, 0x8d, 0xc2, 0x7, - 0x8a, 0xe2, 0xdd, 0xc3, 0xa3, 0xaf, 0xa8, 0x23, 0xad, 0x7a, - 0xd4, 0x31, 0x74, 0x71, 0x2d, 0xc6, 0x9c, 0xb5, 0x5b, 0xa7, - 0xa3, 0x5e, 0xa9, 0xea, 0x7b, 0xb8, 0x6c, 0x76, 0x1f, 0x16, - 0xdc, 0x69, 0x4b, 0xde, 0x5b, 0xa6, 0x9a, 0x6b, 0xd5, 0x3b, - 0x33, 0x47, 0x34, 0xbb, 0xaa, 0x20, 0xc2, 0x94, 0x36, 0x6b, - 0xb0, 0xef, 0x24, 0x1c, 0xd2, 0xd3, 0x33, 0xef, 0x4b, 0xba, - 0x80, 0x1d, 0x45, 0x14, 0x50, 0x1, 0x48, 0x4e, 0x29, 0x69, - 0x94, 00, 0x84, 0xe2, 0xa3, 0x76, 0xa7, 0xb9, 0xaa, 0xee, - 0xc6, 0x80, 0x23, 0x96, 0x4a, 0xc7, 0xd7, 0x35, 0x9b, 0x5d, - 0x17, 0x4c, 0xbc, 0xd4, 0x2f, 0x65, 0x10, 0x59, 0xda, 0x42, - 0xf3, 0xcd, 0x29, 0x4, 0x84, 0x45, 0x52, 0xcc, 0xd8, 0x1c, - 0xf0, 0x1, 0x3c, 0x56, 0x84, 0xf2, 0x9e, 0x79, 0xaf, 0x18, - 0xfd, 0xaa, 0x75, 0xcb, 0x9d, 0x1f, 0xe0, 0x8f, 0x88, 0x9a, - 0xce, 0xf3, 0xec, 0x77, 0x37, 0x2, 0x1b, 0x45, 0x65, 0x6c, - 0x3b, 0xac, 0x93, 0x22, 0xba, 0x28, 0xc7, 0x25, 0x90, 0xb8, - 0xf6, 0x4, 0x9c, 0x8c, 0x57, 0x36, 0x26, 0xb7, 0xd5, 0xe8, - 0x4e, 0xb7, 0xf2, 0xa6, 0xfe, 0xe4, 0x72, 0x62, 0xeb, 0xfd, - 0x57, 0xf, 0x52, 0xbf, 0xf2, 0xa6, 0xfe, 0xe5, 0x72, 0xf, - 0x81, 0x3a, 0x8d, 0xf7, 0xc4, 0x4d, 0x73, 0x5a, 0xf1, 0xdd, - 0xd0, 0x78, 0x6d, 0xf5, 0x49, 0x16, 0xd, 0x3e, 0xd5, 0xc8, - 0x6f, 0x26, 0xd6, 0x2c, 0x85, 0xc7, 0xa6, 0xe2, 0x59, 0xc8, - 0xe3, 0x92, 0x6b, 0xe8, 0x48, 0x94, 0xaa, 00, 0x79, 0x35, - 0xe5, 0x7f, 00, 0xbc, 0x2f, 0x6b, 0xe1, 0xaf, 00, 0xe8, - 0xd6, 0x96, 0xf6, 0xad, 0x6e, 0x16, 0xdd, 0x19, 0x95, 0xd3, - 0x6b, 0x6e, 0x23, 0x2c, 0x48, 0xc9, 0xe7, 0x24, 0xd7, 0xab, - 0xd6, 0x38, 0x1a, 0x72, 0xa7, 0x87, 0x87, 0x3f, 0xc4, 0xf5, - 0x7e, 0xaf, 0x57, 0xf8, 0x98, 0x65, 0xb4, 0xe5, 0x4b, 0x9, - 0x5, 0x53, 0x59, 0x35, 0x77, 0xea, 0xf5, 0x7f, 0x8b, 0xa, - 0xf3, 0x9f, 0x8f, 0xbf, 0x19, 0xf4, 0x9f, 0x80, 0xff, 00, - 0xc, 0x75, 0x8f, 0x16, 0xea, 0xce, 0xbb, 0x2c, 0xe2, 0x26, - 0x28, 0x89, 0x23, 0xcc, 0x73, 0xd0, 0x70, 0x9, 0xfd, 0x2b, - 0xd1, 0xab, 0xf2, 0xb3, 0xfe, 0xa, 0xf7, 0xf1, 0x87, 0x59, - 0x83, 0xec, 0xbe, 0xf, 0xd3, 0xf5, 0x68, 0xe1, 0xb0, 0x95, - 0xd5, 0x6e, 0x2d, 0x61, 0x94, 0x17, 0x90, 0x63, 0x95, 0x23, - 0x19, 0xeb, 0xd7, 0x9a, 0xef, 0x3d, 0x23, 0xe1, 0xcf, 0xda, - 0x23, 0xf6, 0x87, 0xf1, 0x4f, 0xed, 0x33, 0xf1, 0x1e, 0xea, - 0xfe, 0x57, 0x9a, 0x38, 0x67, 0x93, 0x64, 0x36, 0x70, 0xcf, - 0x21, 0x8f, 0xeb, 0x86, 0x3c, 0x7f, 0xf5, 0xab, 0xcb, 0x75, - 0xaf, 0x3, 0xea, 0x9e, 0x1f, 0xbe, 0xb4, 0xb4, 0xbe, 0x87, - 0xc9, 0x9a, 0xe4, 0x8f, 0x2d, 0x4f, 0x71, 0xeb, 0x5f, 0xa7, - 0x5f, 0xf0, 0x4b, 0xbf, 0xd9, 0x43, 0xc2, 0xfa, 0xdf, 0x83, - 0xf5, 0x6f, 0x1c, 0xf8, 0x9b, 0x48, 0x37, 0xb3, 0xa4, 0xa1, - 0x2d, 0xcd, 0xf4, 0x6c, 0x91, 0x60, 0x29, 0x27, 0x7, 0x76, - 0xe, 0x38, 0xcf, 0x15, 0xf3, 0x47, 0xed, 0x49, 0x79, 0x6f, - 0xe3, 0x7f, 0xdb, 0x22, 0x2d, 0x2, 0x34, 0x17, 0xba, 0x3d, - 0x9d, 0xc4, 0x70, 0xc7, 0x65, 0xa7, 0x31, 0x94, 0x27, 0x3f, - 0x38, 0xc7, 0x18, 0x27, 0x1d, 0x3d, 0xc7, 0xad, 00, 0x7d, - 0xe9, 0xfb, 0x1f, 0x78, 0x2a, 0x6f, 0x82, 0x3f, 0xb1, 0x6e, - 0xb9, 0xae, 0xde, 0xb6, 0xd9, 0xf5, 0x2b, 0x56, 0x96, 0x18, - 0xc2, 0x28, 0x23, 0xe5, 0x21, 0x4e, 0x57, 0x27, 0xbe, 0x79, - 0xf4, 0xaf, 0xcd, 0xaf, 0x82, 0x5a, 0xc7, 0x88, 0xfc, 0x4f, - 0xfb, 0x4a, 0x58, 0x59, 0x5b, 0x6a, 0x57, 0x37, 0x6b, 0xfd, - 0xa6, 0x49, 0xf, 0x29, 0x3b, 0x98, 0xb1, 0xe3, 0x92, 0x9, - 0xc1, 0x27, 0xdf, 0x8a, 0xfd, 0x64, 0xfd, 0xa4, 0xf5, 0x1d, - 0x3f, 0xe0, 0x7f, 0xec, 0x99, 0xe, 0x99, 0xa1, 0x98, 0x7c, - 0x3f, 0x6e, 0x9a, 0x78, 0x11, 0xc1, 0x70, 0xfe, 0x54, 0x80, - 0xec, 0xc9, 0xdc, 0xe, 0xe3, 0xbb, 0x27, 0x9e, 0x7a, 0xf7, - 0xaf, 0xcb, 0xef, 0xf8, 0x27, 0x37, 0x84, 0xa3, 0xf8, 0x91, - 0xfb, 0x51, 0xe8, 0xf3, 0x6a, 0xd6, 0x73, 0xea, 0xa8, 0x92, - 0xb5, 0xe4, 0xcc, 0xb1, 0x16, 0x5d, 0xc0, 0xe7, 0x73, 0x10, - 0x46, 0x6, 0x4f, 0xf9, 0xe9, 0x40, 0x1f, 0xbc, 0x7a, 0x15, - 0x9b, 0x69, 0x5a, 0x1d, 0x95, 0xb4, 0xaf, 0xbd, 0xe0, 0x81, - 0x55, 0xdb, 0x1d, 0x48, 0x1c, 0x9a, 0xf1, 0x4f, 0x89, 0x7a, - 0xaa, 0xea, 0xbe, 0x20, 0x65, 0x5f, 0xbb, 0xe, 0x7b, 0xf7, - 0x35, 0xed, 0xfa, 0x94, 0xa2, 0xd3, 0x4e, 0x95, 0xd4, 0x88, - 0xf6, 0xa7, 0x1d, 0x80, 0xaf, 0x9c, 0x35, 0x6b, 0xa7, 0xbc, - 0xd4, 0xae, 0x65, 0x77, 0xde, 0xc5, 0xcf, 0x20, 0xf6, 0xaf, - 0x86, 0xe2, 0x9a, 0xfc, 0xb4, 0x61, 0x41, 0x75, 0x77, 0xfb, - 0x8f, 0xcd, 0xb8, 0xd3, 0x12, 0xe3, 0x42, 0x9e, 0x1d, 0x7d, - 0xa7, 0x77, 0xf2, 0x2a, 0x1, 0x8e, 0x84, 0xfe, 0x74, 0x65, - 0x87, 0xf1, 0xb7, 0xe7, 0x45, 0x15, 0xf9, 0xad, 0x8f, 0xc8, - 0xac, 0x2e, 0xf7, 0x1f, 0xf2, 0xd1, 0xff, 00, 0xef, 0xa3, - 0x4e, 0x13, 0x4c, 0x3a, 0x4d, 0x20, 0xff, 00, 0x81, 0x1a, - 0x65, 0x14, 0xc7, 0xa9, 0x28, 0xbb, 0xb8, 0x1d, 0x2e, 0x24, - 0xfc, 0xea, 0x44, 0xd4, 0xef, 0x23, 0x39, 0x5b, 0x99, 0x3f, - 0x3a, 0xad, 0x45, 0x35, 0x29, 0x2d, 0x9b, 0x29, 0x4e, 0x6b, - 0x69, 0x3f, 0xbc, 0xe8, 0xf4, 0xaf, 0x1d, 0xea, 0x5a, 0x63, - 00, 0x67, 0x77, 0x5f, 0x4d, 0xc6, 0xbd, 0x73, 0xc1, 0xbe, - 0x2e, 0x5f, 0x10, 0xdb, 0xe1, 0xc0, 0x59, 0x14, 0x77, 0x3c, - 0x9a, 0xf0, 0xa, 0xd5, 0xf0, 0xd6, 0xae, 0x74, 0x4d, 0x52, - 0x29, 0xf1, 0x91, 0xb8, 0x66, 0xbe, 0x87, 0x2c, 0xce, 0x2b, - 0xe1, 0x2a, 0xc5, 0x54, 0x95, 0xe1, 0xd4, 0xfa, 0xac, 0x9f, - 0x3e, 0xc4, 0x60, 0x6b, 0x46, 0x35, 0x64, 0xe5, 0x4d, 0xe8, - 0xee, 0x7d, 0x23, 0x45, 0x55, 0xd3, 0x2f, 0x93, 0x52, 0xb1, - 0x86, 0xe6, 0x30, 0x42, 0xc8, 0xb9, 0x1, 0xba, 0xd5, 0x96, - 0x38, 0x52, 0x6b, 0xf5, 0xe8, 0xc9, 0x4a, 0x2a, 0x4b, 0x66, - 0x7e, 0xed, 0x19, 0xa9, 0xc5, 0x4e, 0x3b, 0x33, 0xca, 0xbe, - 0x28, 0x78, 0xbe, 0xe2, 0xcb, 0x58, 0x8a, 0xce, 0xd4, 0x91, - 0xe5, 0xa6, 0x5c, 0xe4, 0x8c, 0x93, 0x5c, 0x82, 0x78, 0xef, - 0x54, 0x5f, 0xe2, 0x3f, 0xf7, 0xd9, 0xa4, 0xf1, 0xdd, 0xec, - 0xb7, 0xbe, 0x25, 0xba, 0x32, 0xca, 0x25, 0xd8, 0x76, 0xa9, - 0x53, 0x90, 0x5, 0x73, 0xf5, 0xf8, 0xd6, 0x61, 0x8f, 0xaf, - 0x3c, 0x5d, 0x49, 0x42, 0x6d, 0x2b, 0xfe, 0x47, 0xe0, 0x19, - 0xa6, 0x67, 0x89, 0xa9, 0x8e, 0xab, 0x38, 0x54, 0x69, 0x5d, - 0xdb, 0xe5, 0xa1, 0xd3, 0x27, 0xc4, 0x3d, 0x51, 0x7b, 0x9f, - 0xfb, 0xec, 0xd4, 0xc9, 0xf1, 0x2f, 0x53, 0x5f, 0xef, 0x7f, - 0xdf, 0x66, 0xb9, 0x3a, 0x2b, 0x8d, 0x66, 0x18, 0xb5, 0xb5, - 0x46, 0x79, 0xeb, 0x34, 0xc7, 0x47, 0x6a, 0xcc, 0xec, 0xd3, - 0xe2, 0xa6, 0xa2, 0x3a, 0xef, 0xff, 00, 0xbe, 0xcd, 0x4e, - 0x9f, 0x16, 0x6f, 0xc7, 0x5d, 0xdf, 0x8b, 0x1a, 0xe1, 0x68, - 0xad, 0x56, 0x6b, 0x8d, 0x5f, 0xf2, 0xf5, 0x9b, 0xc7, 0x3a, - 0xcc, 0x63, 0xb5, 0x66, 0x7a, 0xa, 0x7c, 0x5d, 0xba, 0x1d, - 0x47, 0xf3, 0xa9, 0xd3, 0xe3, 0xc, 0xc3, 0xaa, 0x8f, 0xc8, - 0xd7, 0x9b, 0xd1, 0x5a, 0xac, 0xeb, 0x1e, 0xbf, 0xe5, 0xe1, - 0xba, 0xe2, 0xc, 0xce, 0x3f, 0xf2, 0xf4, 0xf4, 0xf4, 0xf8, - 0xc6, 0xc3, 0xaa, 0x27, 0xe2, 0xd, 0x75, 0x1e, 0xe, 0xf1, - 0xac, 0x9e, 0x28, 0x9a, 0x40, 0x23, 0x4f, 0x2d, 0x3a, 0xb2, - 0xfa, 0xd7, 0x84, 0x62, 0xbd, 0x87, 0xe0, 0xfd, 0x8c, 0xb, - 0xa5, 0xbd, 0xca, 0xc6, 0x44, 0xac, 0x4e, 0x5c, 0xf7, 0xe7, - 0x1e, 0xb5, 0xf4, 0x19, 0x36, 0x67, 0x8d, 0xc5, 0xe2, 0xe3, - 0x4a, 0xa4, 0xef, 0x1d, 0xd9, 0xf4, 0xf9, 0x6, 0x71, 0x98, - 0xe3, 0xf1, 0xd0, 0xa3, 0x56, 0xa5, 0xe3, 0xab, 0x67, 0xa2, - 0xd1, 0x45, 0x21, 0x20, 0xc, 0x93, 0x81, 0x5f, 0xa4, 0x9f, - 0xae, 0x8b, 0x50, 0xdc, 0x5e, 0x43, 0x6a, 0x33, 0x2c, 0x81, - 0x7, 0xbd, 0x72, 0x1e, 0x2f, 0xf8, 0x89, 0x6d, 0xa1, 0x6, - 0x86, 0x2, 0x26, 0x9b, 0xa6, 0x51, 0x81, 0xc7, 0xe1, 0x5e, - 0x59, 0xac, 0x78, 0xd3, 0x54, 0xd6, 0x64, 0x63, 0x2c, 0xe7, - 0xcb, 0x3d, 0x17, 0x18, 0xc5, 0x7c, 0xc6, 0x3f, 0x3f, 0xc3, - 0x60, 0xdb, 0xa7, 0x1f, 0x7a, 0x5e, 0x5b, 0x1f, 0x1d, 0x99, - 0xf1, 0x3e, 0x13, 0x2f, 0x93, 0xa5, 0xf, 0x7e, 0x6b, 0xa2, - 0xdb, 0xe6, 0xcf, 0x62, 0xd4, 0x7c, 0x7f, 0xa6, 0x58, 0x39, - 0x50, 0xfe, 0x6e, 0x3f, 0xbb, 0x91, 0xfd, 0x2b, 0xe, 0xe3, - 0xe3, 0x16, 0x9f, 0x1b, 0x61, 0x20, 0x63, 0xee, 0x73, 0xfe, - 0x15, 0xe3, 0x6d, 0x96, 0x6c, 0x92, 0x49, 0xfa, 0xd1, 0x5f, - 0x21, 0x57, 0x89, 0xb1, 0xb3, 0x7e, 0xe5, 0xa2, 0xbd, 0x2e, - 0x7c, 0x1d, 0x6e, 0x30, 0xcc, 0x2a, 0x3f, 0xdd, 0xa5, 0x15, - 0xe9, 0x73, 0xd8, 0x57, 0xe3, 0x1d, 0x89, 0xeb, 0x1e, 0x3f, - 0x3f, 0xf0, 0xad, 0xb, 0xf, 0x8a, 0x7a, 0x5d, 0xdb, 0x61, - 0x8e, 0xcf, 0xcf, 0xfc, 0x2b, 0xc3, 0xa9, 0x41, 0x2b, 0xd0, - 0xe0, 0xd6, 0x70, 0xe2, 0x4c, 0x7c, 0x5d, 0xe4, 0xd3, 0xf9, - 0x19, 0x53, 0xe2, 0xdc, 0xca, 0xe, 0xf2, 0x69, 0xaf, 0x43, - 0xe9, 0x6d, 0x3f, 0x5b, 0xb4, 0xd4, 0xf8, 0x82, 0x4d, 0xc6, - 0xaf, 0xd7, 0xcd, 0x1a, 0x76, 0xb5, 0x75, 0xa7, 0x4c, 0x1d, - 0x65, 0x62, 0x7, 0x61, 0x5e, 0xa5, 0xe0, 0xff, 00, 0x89, - 0x76, 0xf7, 0x61, 0x6d, 0xee, 0x63, 0x68, 0xdc, 0xf1, 0xbd, - 0x98, 0x57, 0xd5, 0xe5, 0xfc, 0x43, 0x47, 0x14, 0xd5, 0x3a, - 0xde, 0xec, 0xbf, 0x3, 0xed, 0xf2, 0xae, 0x2a, 0xa1, 0x8c, - 0x6a, 0x96, 0x21, 0x72, 0x4b, 0xf0, 0x3d, 0x16, 0x8a, 0x64, - 0x52, 0xac, 0xd1, 0xab, 0xa1, 0xc, 0xac, 0x32, 0x8, 0xa7, - 0xd7, 0xd7, 0xa7, 0x7d, 0x51, 0xf7, 0x49, 0xdf, 0x54, 0x14, - 0x51, 0x45, 0x3, 0xa, 0x28, 0xac, 0x7d, 0x6f, 0xc5, 0x36, - 0x1a, 0x1a, 0x1f, 0x3e, 0x64, 0x12, 0x63, 0x85, 0x2c, 0x2b, - 0x2a, 0x95, 0x61, 0x46, 0x3c, 0xf5, 0x1d, 0x91, 0x8d, 0x5a, - 0xd4, 0xe8, 0x41, 0xce, 0xac, 0xac, 0xbc, 0xcd, 0x8a, 0x2b, - 0xc9, 0xb5, 0xaf, 0x8b, 0xb2, 0x3a, 0x32, 0x5a, 0x44, 00, - 0x3f, 0xc4, 0xa4, 0x1f, 0xe9, 0x5c, 0xbd, 0xcf, 0xc4, 0x1d, - 0x56, 0x7f, 0xbb, 0x3b, 0xa7, 0xe5, 0xfe, 0x15, 0xf3, 0x15, - 0xf8, 0x93, 0x7, 0x49, 0xda, 0x37, 0x97, 0xa1, 0xf1, 0xd8, - 0x9e, 0x2e, 0xcb, 0xe8, 0x4b, 0x96, 0x17, 0x97, 0xa1, 0xef, - 0xc6, 0x54, 0x53, 0x82, 0xc0, 0x1a, 0x51, 0x22, 0x9e, 0x8c, - 0x3f, 0x3a, 0xf9, 0xcc, 0xf8, 0xbb, 0x57, 0x2d, 0x9f, 0xb6, - 0x31, 0xfa, 0x81, 0x52, 0x47, 0xe3, 0x5d, 0x5e, 0x33, 0x9f, - 0xb5, 0x13, 0xf8, 0xa, 0xe2, 0x5c, 0x55, 0x43, 0xad, 0x37, - 0xf8, 0x1e, 0x72, 0xe3, 0x5c, 0x33, 0x7a, 0xd2, 0x97, 0xe0, - 0x7d, 0x15, 0x45, 0x78, 0x66, 0x9f, 0xf1, 0x43, 0x53, 0xb4, - 0xc0, 0x79, 0xb, 0x28, 0xf6, 0x15, 0xd2, 0xe9, 0x3f, 0x17, - 0xa1, 0x79, 0x15, 0x6e, 0xd5, 0xb0, 0x7a, 0x90, 0x5, 0x7a, - 0x54, 0x38, 0x8b, 0x3, 0x5a, 0xc9, 0xbe, 0x5f, 0x53, 0xd7, - 0xc3, 0xf1, 0x56, 0x5d, 0x5d, 0xa5, 0x29, 0x38, 0xbf, 0x33, - 0xd3, 0xab, 0x7, 0x5b, 0x65, 0xda, 0xdd, 0x71, 0x57, 0xac, - 0xb5, 0x9b, 0x7d, 0x4a, 0xcb, 0xed, 0x10, 0x13, 0xb0, 0x8c, - 0x82, 0xd5, 0x83, 0xac, 0xdf, 0x7c, 0xad, 0xf3, 0x8f, 0xce, - 0xbe, 0x96, 0x32, 0x8c, 0xe2, 0xa5, 0x17, 0x74, 0xcf, 0xae, - 0x84, 0xe3, 0x52, 0x2a, 0x70, 0x77, 0x4c, 0xf3, 0xbf, 0x18, - 0x5a, 0xc1, 0x3c, 0x52, 0x2c, 0x8a, 0x24, 0x46, 0xea, 0xac, - 0xb9, 0x15, 0xe3, 0xda, 0x3f, 0x89, 0xa5, 0xf8, 0x1f, 0xaf, - 0x5f, 0x6a, 0xfa, 0x4, 0x26, 0x6b, 0x5b, 0xa1, 0x8b, 0xad, - 0x19, 0xe4, 0x68, 0xed, 0xe6, 0x39, 0x7, 0xcc, 0x50, 0x6, - 0x12, 0x5c, 0x2e, 0x37, 0xe0, 0xf0, 0x48, 0x20, 0xf0, 0x47, - 0xae, 0x78, 0x96, 0xfb, 0x28, 0xff, 00, 0xbc, 0x5f, 0xce, - 0xbc, 0x23, 0xe2, 0x7e, 0xaa, 0x2d, 0x34, 0xf9, 0xa4, 0x6b, - 0x98, 0x90, 0x80, 0x71, 0xb9, 0x80, 0xcf, 0xd2, 0xb2, 0xa9, - 0x4e, 0x9c, 0xbd, 0xf9, 0x2d, 0x56, 0xcf, 0xaa, 0x31, 0xad, - 0x4a, 0x94, 0xad, 0x52, 0x6b, 0x58, 0xec, 0xfa, 0xa3, 0xec, - 0x8f, 0x7, 0x78, 0xb6, 0xc3, 0xc6, 0xde, 0x1b, 0xd3, 0xf5, - 0xbd, 0x36, 0x55, 0x96, 0xd2, 0xf2, 0x25, 0x90, 0x61, 0x81, - 0x28, 0x7f, 0x89, 0x1b, 0x1d, 0x19, 0x4e, 0x54, 0x8e, 0xc4, - 0x1a, 0xdc, 0x57, 0xaf, 0xca, 0xaf, 0x81, 0xdf, 0xb5, 0x5a, - 0xfc, 0xf, 0xf8, 0xbb, 0x74, 0xd7, 0xf6, 0xd3, 0x6b, 0x5a, - 0x3e, 0xb4, 0x12, 0xce, 0x78, 0x2c, 0x1d, 0x7c, 0xd5, 0x7d, - 0xff, 00, 0xbb, 0x91, 0x54, 0x90, 0xac, 0x46, 0xe6, 0x18, - 0x24, 0x7d, 0xe3, 0xc8, 0xef, 0xfa, 0x87, 0xa4, 0xea, 0xb1, - 0x6a, 0xda, 0x6d, 0xa5, 0xf4, 0x1, 0x84, 0x37, 0x30, 0xa4, - 0xc8, 0x1c, 0x60, 0xed, 0x60, 0x8, 0xc8, 0xf5, 0xc1, 0xa9, - 0xa1, 0x5e, 0x35, 0xe3, 0x78, 0xbd, 0x88, 0xc3, 0x62, 0x61, - 0x89, 0x8b, 0x70, 0x77, 0xb6, 0xe6, 0xb2, 0xb5, 0x3b, 0x35, - 0x59, 0x1e, 0xa4, 0xdf, 0x5d, 0x27, 0x61, 0x66, 0x8a, 0x28, - 0xa0, 0x4, 0x3d, 0x29, 0x87, 0xa5, 0x39, 0xa9, 0x8e, 0x78, - 0xa0, 0x6, 0x33, 0x71, 0x55, 0xa5, 0x7e, 0x2a, 0x57, 0x35, - 0x56, 0x76, 0xe2, 0x80, 0x2a, 0x5c, 0x49, 0xc1, 0xe6, 0xbe, - 0x68, 0xfd, 0xa6, 0xb5, 0x21, 0xaf, 0x78, 0xff, 00, 0xe1, - 0xa7, 0x84, 0x22, 0x26, 0xf3, 0xed, 0x1a, 0x89, 0xbf, 0xba, - 0xb0, 0xfb, 0x81, 0xa3, 0x5c, 0x2a, 0x3b, 0x3e, 0x7a, 0xc, - 0xcb, 0xf2, 0xe0, 0xe7, 0x7, 0x91, 0x81, 0xbb, 0xe8, 0xeb, - 0xa7, 00, 0x57, 0xcb, 0x7e, 0x1e, 0x90, 0xfc, 0x45, 0xfd, - 0xaf, 0xb5, 0x6d, 0x53, 0x4a, 0x6f, 0xb3, 0xda, 0x68, 0x10, - 0xd, 0x3a, 0xe6, 0x42, 0x37, 0x19, 0xe5, 0x42, 0xca, 0xfd, - 0x41, 0xc7, 0xcc, 0x59, 0x78, 0xc7, 0x9, 0x9e, 0xa4, 0xd7, - 0x8b, 0x9a, 0xca, 0xf4, 0xa1, 0x41, 0x6f, 0x52, 0x51, 0x5f, - 0x2b, 0xdd, 0xfe, 0x8, 0xf9, 0xec, 0xee, 0x5c, 0xd4, 0x69, - 0xe1, 0x96, 0xf5, 0x67, 0x18, 0xf9, 0xda, 0xf7, 0x7f, 0x82, - 0xeb, 0xa7, 0xe4, 0x7d, 0x6b, 0xe1, 0xab, 0x41, 0x6b, 0x63, - 0x12, 0x84, 0x8, 0x2, 0xf4, 0x6, 0xb6, 0x6a, 0xbd, 0x94, - 0x66, 0x38, 0x14, 0x13, 0x9a, 0xb1, 0x5e, 0xd1, 0xf4, 0x22, - 0x31, 0xc2, 0x93, 0xe8, 0x2b, 0xf0, 0x3b, 0xfe, 0xa, 0x43, - 0xad, 0xcf, 0x2f, 0xed, 0x25, 0x7f, 0x6d, 0x71, 0x7e, 0x75, - 0x1f, 0xb2, 0x36, 0x64, 0x43, 0x1e, 0xcd, 0x8e, 0x4f, 0x2b, - 0xef, 0xda, 0xbf, 0x7c, 0xab, 0xf0, 0xa3, 0xfe, 0xa, 0x81, - 0xf0, 0xd1, 0x3c, 0x1f, 0xf1, 0xdf, 0x50, 0xbc, 0xb5, 0xd3, - 0x5a, 0xda, 0xde, 0xe9, 0xbc, 0xd6, 0x9f, 0x74, 0x8c, 0xb2, - 0xb3, 0x72, 0x70, 0x59, 0x8f, 0x4a, 00, 0xfa, 0xe7, 0xf6, - 0x51, 0xfd, 0xaf, 0xbc, 0x7, 0xe1, 0xef, 0xd9, 0x56, 0x4d, - 0x6, 0x5b, 0x81, 0xe1, 0xdd, 0x4e, 0xc6, 0xd1, 0xcb, 0x3e, - 0xc, 0xfe, 0x6c, 0x84, 0x12, 0xcd, 0x81, 0xf8, 0xe, 0xd5, - 0xf1, 0x7, 0xec, 0xa3, 0xe2, 0xd, 0x13, 0xc4, 0x7f, 0xb5, - 0xbb, 0x78, 0xa7, 0xc5, 0x53, 0xfd, 0xb7, 0x48, 0x17, 0xd2, - 0xdd, 0xc9, 0x77, 0x39, 0xf2, 0xbe, 0x40, 0xdb, 0x83, 0x14, - 0x19, 0x3f, 0x74, 0xe, 0x7, 0x3d, 0x3d, 0xeb, 0xe5, 0xf8, - 0x75, 0x6b, 0xa8, 0x2d, 0x5e, 0xd9, 0x25, 0x22, 0x17, 0x18, - 0x65, 0xf5, 0xa8, 0xed, 0xef, 0xa6, 0xb6, 0x8d, 0xd2, 0x37, - 0x21, 0x5c, 0x60, 0x81, 0xde, 0x80, 0x3e, 0xe3, 0xff, 00, - 0x82, 0x8c, 0xfe, 0xd9, 0xd6, 0xbf, 0x1d, 0x7c, 0x4b, 0x1f, - 0x87, 0xfc, 0x23, 0x7d, 0x74, 0xde, 0x1e, 0xb7, 0x4f, 0x29, - 0xe3, 0x96, 0xf, 0x28, 0x3b, 0x64, 0x72, 0xe, 0xe3, 0x90, - 0x79, 0xea, 0x7, 0x6a, 0xfa, 0x6b, 0xfe, 0x9, 0x1d, 0xfb, - 0x3f, 0x5e, 0x78, 0x37, 0x49, 0xd6, 0x3c, 0x67, 0xac, 0x69, - 0x51, 0xc3, 0x2d, 0xe4, 0x49, 0x15, 0xad, 0xc1, 0x9f, 0x73, - 0x8c, 0xf2, 0x46, 0xcc, 0x71, 0xc6, 0x79, 0xcd, 0x7e, 0x7f, - 0x7e, 0xc7, 0xdf, 0xb2, 0xef, 0x89, 0x7f, 0x68, 0x7f, 0x88, - 0xf6, 0x96, 0xd6, 0x11, 0xbd, 0x95, 0x85, 0xa3, 0x25, 0xc4, - 0xd7, 0xb3, 0x40, 0xc5, 0x36, 0xee, 0x1d, 0xe, 0x8, 0x27, - 0xeb, 0x5f, 0xd0, 0x3f, 0x81, 0xbc, 0x27, 0xf, 0x82, 0x3c, - 0x2f, 0x61, 0xa3, 0x41, 0x21, 0x95, 0x2d, 0x62, 0x54, 0x2e, - 0x54, 0x2e, 0xe2, 0x7, 0x27, 00, 0xa, 00, 0xa9, 0xf1, - 0x1f, 0x50, 0x1a, 0x7f, 0x86, 0x67, 0x61, 0x27, 0x96, 0xed, - 0xf2, 0xaf, 0x19, 0xcd, 0x78, 0x10, 0xf7, 0xeb, 0x5e, 0xb3, - 0xf1, 0x96, 0xfa, 0x2f, 0xb1, 0xdb, 0xdb, 0x6d, 0xdd, 0x29, - 0x70, 0x41, 0xcf, 0x4f, 0xd6, 0xbc, 0x9a, 0xbf, 0x26, 0xe2, - 0x4a, 0xde, 0xd3, 0x1d, 0xcb, 0xd2, 0x2a, 0xc7, 0xe1, 0xdc, - 0x5b, 0x5f, 0xdb, 0x66, 0x3c, 0x97, 0xd2, 0x29, 0x20, 0xab, - 0x16, 0x16, 0x32, 0xea, 0x37, 0x49, 0x4, 0xb, 0xbe, 0x46, - 0xe8, 0x2a, 0xbd, 0x76, 0xbf, 0xa, 0x6c, 0x24, 0xba, 0xd7, - 0xde, 0x44, 0x6d, 0xa9, 0x12, 0x8d, 0xdc, 0x67, 0x39, 0xff, - 00, 0xf5, 0x57, 0x83, 0x83, 0xa1, 0xf5, 0x9c, 0x44, 0x28, - 0xf7, 0x67, 0xcc, 0xe0, 0x30, 0xdf, 0x5c, 0xc5, 0x53, 0xc3, - 0xff, 00, 0x33, 0xb1, 0x57, 0xfe, 0x15, 0xa6, 0xb3, 0x80, - 0x7c, 0x9e, 0xbf, 0xed, 0x55, 0x3b, 0xcf, 0x3, 0xea, 0xd6, - 0x4a, 0x4b, 0x5b, 0x96, 0x1e, 0xc4, 0x57, 0xd0, 0xf4, 0xc9, - 0x23, 0x59, 0x57, 0x6b, 0x8c, 0x8f, 0x4a, 0xfd, 0xe, 0x7c, - 0x2d, 0x85, 0x6b, 0xdd, 0x9b, 0x4c, 0xfd, 0x56, 0x7c, 0x17, - 0x82, 0x6b, 0xdc, 0x9c, 0x93, 0x3e, 0x61, 0xb8, 0xb5, 0x96, - 0xd5, 0xb6, 0xcd, 0x19, 0x8c, 0xfb, 0xd4, 0x55, 0xeb, 0xbf, - 0x14, 0x7c, 0x33, 0x68, 0x9a, 0x72, 0xdd, 0xc5, 0x8, 0x59, - 0x54, 0x9c, 0xb6, 0x49, 0xc0, 0xaf, 0x22, 0xaf, 0x83, 0xcc, - 0x70, 0x32, 0xcb, 0xeb, 0xba, 0x32, 0x77, 0x3f, 0x33, 0xcd, - 0x72, 0xd9, 0xe5, 0x78, 0x97, 0x87, 0x9b, 0xbf, 0x54, 0xc2, - 0x80, 0x70, 0x41, 0xf4, 0xa2, 0x9d, 0x1a, 0x19, 0x64, 0x54, - 0x1d, 0x58, 0xe2, 0xbc, 0xc3, 0xc7, 0xdf, 0x63, 0xe8, 0xf, - 00, 0x4f, 0xe7, 0xf8, 0x6e, 0xdc, 0x94, 0x28, 0xd8, 0xe4, - 0x16, 0xcd, 0x6a, 0xeb, 0x97, 0xab, 0xa7, 0xe9, 0x57, 0x33, - 0xb3, 0xf9, 0x61, 0x10, 0x9d, 0xc4, 0x67, 0x15, 0x43, 0xc1, - 0x56, 0xd2, 0xdb, 0x78, 0x7e, 0xdc, 0x4a, 0xfb, 0x8b, 0xd, - 0xc3, 0x8c, 0x60, 0x56, 0xad, 0xfd, 0x8c, 0x5a, 0x8d, 0xab, - 0xc1, 0x32, 0xee, 0x46, 0xea, 0xd, 0x7e, 0xe3, 0x87, 0x8c, - 0xfe, 0xa5, 0x18, 0xaf, 0x8b, 0x97, 0xaf, 0xa1, 0xfd, 0x21, - 0x84, 0x8d, 0x4f, 0xec, 0xf8, 0x46, 0x3f, 0x17, 0x2f, 0x5e, - 0xf6, 0xf2, 0x3e, 0x66, 0xba, 0xb9, 0xfb, 0x4d, 0xcc, 0xb2, - 0xb3, 0x65, 0x9d, 0x89, 0x24, 0xd4, 0x79, 0x15, 0xef, 0xaf, - 0xf0, 0xf7, 0x4c, 0x7f, 0xf9, 0x62, 0xbf, 0xaf, 0xf8, 0xd4, - 0x12, 0x7c, 0x34, 0xd2, 0xdf, 0xfe, 0x59, 0x2f, 0xeb, 0x5f, - 0x9f, 0x4b, 0x86, 0x71, 0x97, 0xbf, 0x32, 0x67, 0xe5, 0x93, - 0xe0, 0xfc, 0x7d, 0xdb, 0xe6, 0x8b, 0x3c, 0x26, 0x8a, 0xf4, - 0xaf, 0x1d, 0xf8, 0x43, 0x4d, 0xf0, 0xe6, 0x98, 0x66, 0x48, - 0xc7, 0x98, 0xdc, 0x2e, 0x9, 0xeb, 0xf9, 0xd7, 0x9a, 0xd7, - 0xce, 0xe3, 0x30, 0x75, 0x30, 0x35, 0x7d, 0x8d, 0x56, 0xaf, - 0xe4, 0x7c, 0xa6, 0x3f, 0x1, 0x57, 0x2e, 0xad, 0xec, 0x2b, - 0x35, 0xcd, 0xbe, 0x81, 0x45, 0x15, 0x6f, 0x4a, 0xd3, 0xdf, - 0x54, 0xbf, 0x8e, 0xda, 0x3e, 0xaf, 0xde, 0xb8, 0xe3, 0x17, - 0x36, 0xa3, 0x1d, 0xd9, 0xc1, 0x8, 0x4a, 0x72, 0x50, 0x8a, - 0xbb, 0x65, 0x4a, 0x2b, 0xd3, 0x97, 0xe0, 0xf6, 0xe8, 0x94, - 0xf9, 0xe4, 0x31, 0x19, 0x3c, 0x1a, 0x8d, 0xfe, 0xe, 0xcb, - 0xfc, 0x37, 0x24, 0x7f, 0xc0, 0x4d, 0x7b, 0x8f, 0x23, 0xc7, - 0xaf, 0xf9, 0x77, 0xf8, 0x9f, 0x46, 0xf8, 0x73, 0x33, 0x5f, - 0xf2, 0xeb, 0xf1, 0x47, 0x9a, 0x9c, 0xf6, 0xea, 0x7a, 0x57, - 0xd0, 0x7e, 00, 0xd3, 0xd7, 0x4f, 0xf0, 0xcd, 0xa2, 0x8, - 0xcc, 0x6c, 0x57, 0x27, 0x3d, 0xeb, 0x82, 0x8b, 0xe0, 0xf5, - 0xd0, 0xb8, 0x88, 0xfd, 0xaf, 0x1, 0x58, 0x12, 0x4a, 0x57, - 0xab, 0xe9, 0xf6, 0xa6, 0xca, 0xca, 0x18, 0x19, 0xb7, 0x98, - 0xd7, 0x6e, 0xec, 0x63, 0x35, 0xf5, 0x1c, 0x3d, 0x96, 0xd7, - 0xc2, 0xd6, 0x9d, 0x5a, 0xf0, 0xb6, 0x96, 0x5b, 0x1f, 0x67, - 0xc2, 0xb9, 0x4e, 0x27, 0x7, 0x88, 0xa9, 0x5b, 0x13, 0xe, - 0x5d, 0x2c, 0xb6, 0xf9, 0x93, 0xb3, 0x4, 0x52, 0xcc, 0x70, - 0xa0, 0x64, 0x93, 0x5e, 0x69, 0xe3, 0xbf, 0x89, 0x22, 0xd, - 0xd6, 0x5a, 0x64, 0x84, 0xc9, 0xd1, 0xdf, 0x1c, 0x7e, 0x79, - 0xab, 0x9f, 0x12, 0xbc, 0x69, 0x1e, 0x9d, 0x6a, 0x6c, 0x20, - 0xf9, 0xe6, 0x93, 0x21, 0x88, 0x6e, 0x82, 0xbc, 0x6c, 0x92, - 0xc4, 0x93, 0xc9, 0x3d, 0x68, 0xcf, 0x73, 0xa9, 0x53, 0x6f, - 0xb, 0x86, 0x7a, 0xf5, 0x7d, 0xbc, 0x83, 0x89, 0x78, 0x82, - 0x54, 0x64, 0xf0, 0x58, 0x49, 0x6b, 0xf6, 0x9f, 0x6f, 0x24, - 0x3a, 0x69, 0xa4, 0xb8, 0x95, 0xa4, 0x91, 0x8b, 0xbb, 0x1c, - 0x92, 0x4d, 0x32, 0x8a, 0x2b, 0xf3, 0xa6, 0xef, 0xab, 0x3f, - 0x27, 0x6e, 0xfa, 0xb0, 0xa2, 0xb4, 0xf4, 0x9f, 0xe, 0x5f, - 0xeb, 0x4c, 0x3e, 0xcb, 0x9, 0x75, 0xee, 0x70, 0x6b, 0xa5, - 0x8f, 0xe1, 0x45, 0xfb, 0x20, 0x2c, 0x59, 0x4e, 0x3a, 0x6d, - 0x35, 0xdb, 0x47, 0x3, 0x89, 0xc4, 0x2e, 0x6a, 0x54, 0xdb, - 0x47, 0xa5, 0x87, 0xcb, 0x71, 0x98, 0xa8, 0xf3, 0x51, 0xa6, - 0xda, 0x38, 0x7a, 0x2b, 0xa5, 0xd5, 0xbc, 0x3, 0x7f, 0xa5, - 0x21, 0x7f, 0x2e, 0x49, 00, 0xf4, 0x5a, 0xe7, 0x1d, 0x1a, - 0x36, 0x2a, 0xea, 0x55, 0x87, 0x50, 0x6b, 0xa, 0xd4, 0x2a, - 0xe1, 0xe5, 0xcb, 0x56, 0x36, 0x67, 0x35, 0x7c, 0x35, 0x6c, - 0x2c, 0xb9, 0x2b, 0x45, 0xc5, 0x8d, 0xa7, 0x45, 0x23, 0x43, - 0x22, 0xba, 0x1c, 0x30, 0x39, 0x14, 0xda, 0x2b, 0x3, 0x9b, - 0xcc, 0xf6, 0x8f, 0x86, 0xde, 0x31, 0x4d, 0x52, 0xd9, 0x6c, - 0x65, 0xf, 0xe7, 0xa0, 0xe1, 0xbf, 0x84, 0xfe, 0xb5, 0xdf, - 0x57, 0xce, 0x3e, 0x14, 0xd5, 0x25, 0xd2, 0xb5, 0xbb, 0x69, - 0x22, 0x72, 0x99, 0x70, 0xf, 00, 0xff, 00, 0x3a, 0xfa, - 0x32, 0x36, 0xdf, 0x1a, 0xb0, 0x39, 0x4, 0x67, 0x35, 0xfa, - 0xd7, 0xf, 0x63, 0xa5, 0x8b, 0xc3, 0x38, 0x54, 0xf8, 0xa1, - 0xa7, 0xcb, 0xa1, 0xfb, 0x8f, 0xb, 0x66, 0x53, 0xc7, 0xe1, - 0x1c, 0x2a, 0xeb, 0x28, 0x69, 0xf2, 0xe8, 0x3a, 0x91, 0x98, - 0x22, 0x96, 0x27, 00, 0xc, 0x92, 0x69, 0x6b, 0x8a, 0xf8, - 0x8f, 0xe2, 0xe8, 0xf4, 0x4b, 0x7, 0xb3, 0x54, 0xf3, 0x26, - 0x9d, 0x8, 0x3f, 0x36, 0x30, 0x2b, 0xde, 0xc5, 0x62, 0x61, - 0x84, 0xa3, 0x2a, 0xd5, 0x1e, 0x88, 0xfa, 0x6c, 0x6e, 0x2e, - 0x9e, 0x6, 0x84, 0xab, 0xd5, 0x76, 0x48, 0xca, 0xf1, 0xaf, - 0xc4, 0xe8, 0xed, 0xbc, 0xdb, 0x3d, 0x39, 0xc9, 0x94, 0x7c, - 0xad, 0x20, 0x1d, 0xf, 0xe7, 0x5e, 0x59, 0x7b, 0xa9, 0x5d, - 0x6a, 0x32, 0x17, 0xb9, 0x99, 0xa5, 0x27, 0xfb, 0xc7, 0x35, - 0x5d, 0x98, 0xb3, 0x16, 0x3c, 0x92, 0x72, 0x4d, 0x25, 0x7e, - 0x35, 0x8e, 0xcc, 0x6b, 0xe3, 0xe7, 0xcd, 0x55, 0xe9, 0xd1, - 0x74, 0x3f, 00, 0xcc, 0xb3, 0x6c, 0x4e, 0x67, 0x51, 0xce, - 0xb4, 0xb4, 0xe8, 0x96, 0xc8, 00, 0xc7, 0x4a, 0x28, 0xa5, - 0xa, 0xc7, 0xee, 0xab, 0x37, 0xd0, 0x57, 0x98, 0x78, 0xc2, - 0x51, 0x4b, 0xb1, 0xff, 00, 0xe7, 0x9b, 0xff, 00, 0xdf, - 0x26, 0x90, 0xe4, 0x75, 0x56, 0x1f, 0x51, 0x45, 0xc0, 0x2a, - 0x4b, 0x6b, 0x73, 0x75, 0x75, 0xc, 0x2a, 0x9, 0x2e, 0xe1, - 0x70, 0x3a, 0xd4, 0x75, 0xd0, 0x78, 0x16, 0xc1, 0xef, 0xfc, - 0x47, 0x6d, 0xb1, 0xb6, 0xf9, 0x64, 0xb9, 0x38, 0xcd, 0x6d, - 0x42, 0x9f, 0xb6, 0xab, 0xa, 0x6b, 0xab, 0x48, 0xe8, 0xc3, - 0x51, 0xfa, 0xc5, 0x68, 0x52, 0x5f, 0x69, 0xa4, 0x7a, 0xe6, - 0x99, 0x64, 0x34, 0xcd, 0xe, 0x38, 0x7e, 0xe9, 0xc0, 0xeb, - 0x5c, 0xce, 0xbb, 0x36, 0x15, 0xb0, 0x71, 0xf8, 0xd7, 0x61, - 0xaa, 0x30, 0x8e, 0xdc, 0x21, 0xe7, 0x3, 0xad, 0x79, 0xff, - 00, 0x88, 0x2e, 0x14, 0x6, 0xe3, 0xf5, 0xaf, 0xde, 0x29, - 0x53, 0x54, 0xa9, 0xc6, 0xb, 0xa2, 0x3f, 0xa5, 0xe8, 0x53, - 0x54, 0x69, 0x46, 0x9c, 0x76, 0x48, 0xe0, 0x7c, 0x4b, 0x7d, - 0xb5, 0x5f, 0x26, 0xbe, 0x6c, 0xf8, 0xef, 0xae, 0x41, 0x16, - 0x8e, 0xdb, 0xc8, 0xc, 0x33, 0x83, 0x92, 0x3b, 0x7d, 0x6b, - 0xde, 0xbc, 0x59, 0x74, 0xa1, 0x5c, 0x6d, 0xfd, 0x6b, 0xe4, - 0x2f, 0xda, 0x4b, 0x5b, 0x86, 0x2b, 0x46, 0x88, 0xc5, 0xb9, - 0x89, 0x3, 0x3b, 0xfe, 0xb5, 0xc9, 0x8f, 0x9f, 0x26, 0x1e, - 0x4c, 0xe2, 0xcc, 0xea, 0x7b, 0x3c, 0x2c, 0xd9, 0xf2, 0xbf, - 0x8b, 0x2e, 0x3c, 0xe9, 0xe5, 0x95, 0x5c, 0x86, 0xdc, 0x58, - 0x30, 0x24, 0x10, 0x7b, 0x57, 0xe9, 0xff, 00, 0xfc, 0x13, - 0xab, 0xf6, 0x9a, 0x9f, 0xe3, 0x1f, 0xc3, 0xf9, 0x7c, 0x35, - 0xac, 0x49, 0x75, 0x71, 0xaf, 0x78, 0x7d, 0x16, 0x39, 0x2e, - 0xe7, 0x41, 0xe5, 0xcb, 0x18, 0xe1, 0x76, 0xbe, 0x4e, 0xe2, - 0x6, 0xd2, 0x46, 0x6, 0x32, 0x7b, 0x1, 0x5f, 0x94, 0xbe, - 0x20, 0xbc, 0xa, 0x58, 0x63, 0xaf, 0xbd, 0x7d, 0x9, 0xff, - 00, 0x4, 0xc2, 0xf1, 0x1e, 0xa9, 0x61, 0xfb, 0x49, 0x5c, - 0xe9, 0x76, 0x9a, 0x87, 0xd8, 0xf4, 0xeb, 0xbb, 0x16, 0x9a, - 0xe2, 0x3, 0xa, 0xb8, 0x94, 0xab, 0xaa, 0xaf, 0x27, 0x95, - 0x38, 0x76, 0x1c, 0x1f, 0xe2, 0xce, 0xe, 0x5, 0x78, 0xf9, - 0x45, 0xe1, 0xa3, 0xea, 0x78, 0x19, 0x17, 0x34, 0x2e, 0x9e, - 0xcc, 0xfd, 0x9d, 0x8a, 0x5e, 0x9c, 0xd5, 0x81, 0x27, 0x1d, - 0x6b, 0x2a, 0x9, 0xb3, 0xde, 0xae, 0x9, 0x38, 0x15, 0xf5, - 0x7, 0xd9, 0x9a, 0xf4, 0x51, 0x45, 00, 0x34, 0xf5, 0xa8, - 0xdc, 0xd3, 0xea, 0x27, 0x34, 0x1, 0xc, 0x86, 0xa9, 0xce, - 0xd5, 0x69, 0xcd, 0x50, 0xb8, 0x7e, 0xb4, 0x1, 0x89, 0xe2, - 0x2d, 0x5a, 0x3d, 0x17, 0x49, 0xbd, 0xd4, 0x26, 0x49, 0x64, - 0x86, 0xd2, 0x7, 0x9d, 0xd2, 0x14, 0x2e, 0xec, 0xaa, 0xa5, - 0x88, 0x55, 0x1d, 0x4f, 0x1c, 0xe, 0xf5, 0xf3, 0xb7, 0xec, - 0x77, 0xa3, 0x4b, 0xe2, 0xad, 0x53, 0xc4, 0x7e, 0x3e, 0xd4, - 0x24, 0x89, 0xaf, 0xf5, 0xab, 0xe9, 0x24, 0x31, 0xc6, 0xf9, - 0x11, 0xd, 0xdb, 0xb6, 0x80, 0x72, 0x40, 0x4, 0x80, 0x1, - 0x27, 0x85, 0x15, 0xdb, 0x7e, 0xd5, 0x1e, 0x30, 0x93, 0xc2, - 0xff, 00, 0x8, 0x35, 0x98, 0xad, 0xa5, 0x45, 0xbf, 0xd5, - 0x14, 0x69, 0xd0, 0xc7, 0xbc, 0x9, 0x18, 0x4a, 0x42, 0xc9, - 0xb1, 0x7a, 0xb1, 0x8, 0x5b, 0xee, 0xf2, 0x3a, 0xf1, 0x8c, - 0xd7, 0x45, 0xfb, 0x32, 0x78, 0x26, 0x3f, 0x8, 0xfc, 0x37, - 0xd1, 0xad, 0x84, 0x12, 0x43, 0x33, 0xc4, 0x25, 0x94, 0x4b, - 0x1b, 0x23, 0x6f, 0x6e, 0x4e, 0x43, 0x72, 0x3d, 0x3f, 0xa, - 0xf0, 0x6b, 0x7e, 0xff, 00, 0x32, 0xa7, 0x4f, 0xa5, 0x38, - 0xb9, 0x3f, 0x57, 0xa2, 0xfc, 0x2e, 0x7c, 0xd5, 0x7f, 0xf6, - 0x9c, 0xde, 0x95, 0x2e, 0x94, 0xa2, 0xe4, 0xfd, 0x65, 0xee, - 0xc7, 0xf0, 0xb9, 0xed, 0x31, 0xae, 0xc4, 0x2, 0x9d, 0x45, - 0x15, 0xef, 0x1f, 0x4a, 0x15, 0xe0, 0xdf, 0xb5, 0x87, 0xec, - 0xd5, 0x63, 0xfb, 0x41, 0xf8, 0x31, 0xec, 0xc5, 0xa5, 0xbc, - 0xda, 0xac, 0x79, 0xf2, 0x5e, 0xe3, 0x6e, 0xd5, 0xe3, 0xaf, - 0x20, 0xf3, 0x5e, 0xef, 0x24, 0x89, 0xc, 0x6c, 0xf2, 0x32, - 0xa2, 0x28, 0xc9, 0x66, 0x38, 00, 0x7b, 0x9a, 0xf2, 0x6f, - 0x89, 0x3f, 0xb5, 0x17, 0xc3, 0xdf, 0x86, 0x76, 0xec, 0xf7, - 0xde, 0x24, 0xd3, 0x2e, 0x26, 0x4f, 0xbd, 0x4, 0x37, 0xa8, - 0x5c, 0x7e, 00, 0x93, 0x40, 0x1f, 0x90, 0x3f, 0x10, 0x3f, - 0xe0, 0x98, 0xff, 00, 0x13, 0x74, 0x1d, 0x62, 0x65, 0xb7, - 0x4b, 0x16, 0x84, 0xb1, 0xda, 0x11, 0xf0, 0x7, 0x35, 0xd7, - 0xfc, 0x20, 0xff, 00, 0x82, 0x4a, 0xfc, 0x44, 0xd7, 0xf5, - 0x9b, 0x49, 0xfc, 0x4a, 0xfa, 0x75, 0xbe, 0x8c, 0x58, 0x19, - 0x5a, 0x1b, 0xb0, 0x5f, 0x1e, 0xc3, 0x6, 0xbe, 0xf8, 0xd3, - 0xbf, 0xe0, 0xa2, 0xff, 00, 0xb, 0xb5, 0xed, 0x6e, 0xd7, - 0x4b, 0xb6, 0x12, 0x5e, 0x5d, 0xce, 0xe1, 0x15, 0x22, 0x56, - 0x91, 0xb2, 0x7d, 0x82, 0x57, 0xd4, 0x76, 0xba, 0xb5, 0xab, - 0xd9, 0xdb, 0xcc, 0xce, 0xb6, 0x82, 0x64, 0xe, 0xb1, 0x4f, - 0xfb, 0xb7, 0x19, 0x19, 0xc1, 0x53, 0x82, 0xd, 00, 0x79, - 0x97, 0xec, 0xfb, 0xfb, 0x34, 0x78, 0x47, 0xf6, 0x77, 0xf0, - 0xcc, 0x5a, 0x67, 0x87, 0xac, 0xd4, 0x4d, 0xb0, 0x9, 0x6e, - 0x5d, 0x17, 0x7b, 0x9e, 0xe7, 0x21, 0x45, 0x7a, 0xe5, 0x36, - 0x39, 0x12, 0x55, 0xc, 0x8c, 0x1d, 0x4f, 0x42, 0xa7, 0x22, - 0xa2, 0xbd, 0xb8, 0x16, 0xb6, 0xb2, 0xc8, 0x48, 0x5d, 0xaa, - 0x4e, 0x58, 0xe0, 0x52, 0x6d, 0x45, 0x5d, 0x93, 0x29, 0x28, - 0xa7, 0x27, 0xd0, 0xf1, 0x8f, 0x8a, 0xda, 0xb9, 0xbe, 0xd6, - 0xd6, 0xdc, 0x6e, 0xb, 0x10, 0xce, 0xf, 0x4c, 0xd7, 0xf, - 0x57, 0xf5, 0xeb, 0xd6, 0xd4, 0x35, 0x8b, 0xa9, 0x9d, 0x83, - 0x12, 0xe4, 0x2, 0xe, 0x46, 0x2a, 0x85, 0x7e, 0x17, 0x8d, - 0xae, 0xf1, 0x38, 0x9a, 0x95, 0x5f, 0x56, 0x7f, 0x36, 0xe6, - 0x38, 0x97, 0x8b, 0xc5, 0xd4, 0xac, 0xfa, 0xb6, 0x15, 0xea, - 0x3f, 0x6, 0x34, 0xc0, 0x5a, 0xf2, 0xf4, 0x94, 0x27, 0x84, - 0x3, 0x39, 0x22, 0xbc, 0xbb, 0xaf, 0x4e, 0x4d, 0x7b, 0xbf, - 0xc3, 0x3d, 0x29, 0x74, 0xdf, 0xf, 0x46, 0x76, 0x95, 0x92, - 0x4c, 0x33, 0x6e, 0x4, 0x1a, 0xf6, 0x78, 0x76, 0x87, 0xb5, - 0xc7, 0x29, 0x35, 0xa4, 0x53, 0x67, 0xd0, 0x70, 0xa6, 0x1b, - 0xdb, 0xe6, 0x51, 0x9b, 0x5a, 0x41, 0x37, 0xfa, 0x23, 0xaf, - 0xa2, 0x93, 0xa5, 0x45, 0x3d, 0xe4, 0x16, 0xb1, 0xb4, 0x92, - 0xcc, 0x91, 0xa2, 0xf2, 0x4b, 0x30, 0x15, 0xfa, 0xdb, 0x6a, - 0x2a, 0xec, 0xfd, 0xcd, 0xc9, 0x45, 0x5d, 0xb3, 0x9a, 0xf8, - 0x95, 0xa8, 0xfd, 0x83, 0xc3, 0x53, 0x2e, 0xd2, 0x5a, 0x6f, - 0x90, 0x10, 0x33, 0x8f, 0xf0, 0xaf, 0x5, 0xeb, 0x5d, 0xcf, - 0xc4, 0xcf, 0x18, 0xae, 0xbb, 0x72, 0x96, 0x96, 0xce, 0x1a, - 0xd6, 0x26, 0x24, 0xb2, 0x90, 0x77, 0x1a, 0xe1, 0x6b, 0xf2, - 0xc, 0xfb, 0x17, 0x1c, 0x5e, 0x31, 0xfb, 0x37, 0x78, 0xc5, - 0x5b, 0xfc, 0xcf, 0xc1, 0xf8, 0x9b, 0x1d, 0xc, 0x76, 0x3d, - 0xba, 0x4e, 0xf1, 0x8a, 0xb7, 0xf9, 0x85, 0x68, 0x68, 0x36, - 0x27, 0x51, 0xd5, 0x60, 0x87, 0x21, 0x41, 0x3d, 0xce, 0x2b, - 0x3e, 0xbd, 0x17, 0xe1, 0x37, 0x86, 0x8d, 0xe5, 0xe4, 0xd7, - 0xd7, 0x11, 0xb8, 0x8e, 0x30, 0xbe, 0x59, 0x64, 0x20, 0x37, - 0x5c, 0xe0, 0xfe, 0x55, 0xe6, 0x65, 0xf8, 0x69, 0x62, 0xf1, - 0x30, 0xa2, 0x96, 0xef, 0xf0, 0x3c, 0x7c, 0xaf, 0x7, 0x2c, - 0x76, 0x32, 0x9d, 0x8, 0xad, 0xde, 0xbe, 0x8b, 0x53, 0xd6, - 0x74, 0xfb, 0x55, 0xb1, 0xb2, 0x86, 0x5, 00, 0x4, 0x50, - 0x38, 0xe9, 0x56, 0x28, 0xa2, 0xbf, 0x71, 0x8c, 0x54, 0x52, - 0x8a, 0xe8, 0x7f, 0x47, 0xc6, 0x2a, 0x11, 0x51, 0x5b, 0x20, - 0xa2, 0x8a, 0x6b, 0xb0, 0x45, 0x2c, 0x4e, 00, 0x19, 0xe6, - 0xa8, 0xa3, 0xca, 0xfe, 0x31, 0xea, 0xe4, 0xb5, 0xbd, 0x8a, - 0xee, 0x3, 0xef, 0x37, 0x60, 0x6b, 0xcb, 0xeb, 0xa4, 0xf8, - 0x83, 0xa9, 0xb6, 0xa5, 0xe2, 0x5b, 0x82, 0x5d, 0x5d, 0x23, - 0xf9, 0x57, 0x69, 0x4, 0x7e, 0x95, 0xcd, 0xd7, 0xe2, 0x79, - 0xad, 0x7f, 0xac, 0xe3, 0x6a, 0x4f, 0xa5, 0xed, 0xf7, 0x1f, - 0xce, 0xd9, 0xde, 0x27, 0xeb, 0x79, 0x85, 0x5a, 0x97, 0xd2, - 0xf6, 0x5e, 0x8b, 0x40, 0xae, 0xb3, 0xe1, 0xae, 0x96, 0x35, - 0x1d, 0x7d, 0x58, 0x95, 0x22, 0x3e, 0xcd, 0x5c, 0x9d, 0x7a, - 0xa7, 0xc1, 0xcd, 0x2c, 0x2a, 0x4d, 0x76, 0xf1, 0xb0, 0x63, - 0xd0, 0x90, 0x40, 0xaa, 0xc9, 0xe8, 0x7d, 0x63, 0x1d, 0x4e, - 0x3d, 0x16, 0xbf, 0x71, 0x79, 0xe, 0x1b, 0xeb, 0x59, 0x8d, - 0x28, 0x35, 0xa2, 0x77, 0x7f, 0x23, 0xd4, 0x40, 00, 00, - 0x3a, 0xa, 0x5a, 0x28, 0xaf, 0xda, 0x8f, 0xe8, 0x60, 0xac, - 0xdd, 0x7f, 0x58, 0x4d, 0x13, 0x4e, 0x92, 0xe5, 0xc3, 0x1c, - 0xe, 0x30, 0x33, 0xcd, 0x69, 0x57, 0x94, 0x7c, 0x5c, 0xf1, - 0x19, 0x69, 0x23, 0xd3, 0x62, 0x91, 0x48, 0x53, 0x97, 0xa, - 0xc0, 0x9f, 0xc7, 0xd2, 0xbc, 0xac, 0xcf, 0x18, 0xb0, 0x38, - 0x59, 0x55, 0xeb, 0xd3, 0xd4, 0xf1, 0x73, 0x8c, 0x7a, 0xcb, - 0xb0, 0x73, 0xaf, 0xd7, 0x65, 0xea, 0xcf, 0x3f, 0xd6, 0x75, - 0x79, 0xb5, 0xab, 0xf9, 0x6e, 0x66, 0x76, 0x6d, 0xcc, 0x48, - 0x4, 0xf4, 0x15, 0x42, 0x8a, 0x2b, 0xf1, 0x49, 0x4e, 0x55, - 0x24, 0xe7, 0x27, 0x76, 0xcf, 0xe7, 0x79, 0xce, 0x55, 0x24, - 0xe7, 0x37, 0x76, 0xf7, 0xa, 0xea, 0x7c, 0x17, 0xe0, 0xa9, - 0x7c, 0x51, 0x73, 0xb8, 0xb0, 0x8e, 0xd9, 0x79, 0x2d, 0x9e, - 0x4d, 0x62, 0xe8, 0x9a, 0x4c, 0xba, 0xd6, 0xa5, 0xd, 0xac, - 0x48, 0xcc, 0x5d, 0xb9, 0xda, 0x33, 0x81, 0x5f, 0x42, 0x78, - 0x77, 0x43, 0x87, 0x40, 0xd3, 0x21, 0xb5, 0x89, 0x70, 0x54, - 0x7c, 0xc7, 0xd4, 0xf7, 0xaf, 0xa4, 0xc8, 0xf2, 0xbf, 0xaf, - 0xd5, 0xf6, 0x95, 0x57, 0xb9, 0x1f, 0xc5, 0xf6, 0x3e, 0xbb, - 0x87, 0x32, 0x5f, 0xed, 0x3a, 0xce, 0xad, 0x65, 0xfb, 0xb8, - 0xfe, 0x2f, 0xb0, 0xed, 0x23, 0x41, 0xb3, 0xd1, 0xa0, 0x48, - 0xed, 0xe1, 0x45, 0x20, 0x60, 0xb6, 0xd1, 0x93, 0x5a, 0x34, - 0x51, 0x5f, 0xac, 0xc2, 0x11, 0xa7, 0x15, 0x18, 0x2b, 0x24, - 0x7e, 0xe1, 0x4e, 0x9c, 0x29, 0x45, 0x42, 0x9a, 0xb2, 0x44, - 0x73, 0x42, 0xb3, 0xc6, 0x51, 0xc6, 0x54, 0xf5, 0xaf, 0x15, - 0xf8, 0x95, 0xe1, 0xaf, 0xec, 0x9b, 0xd1, 0x71, 0x1c, 0x7b, - 0x62, 0x90, 0xf5, 0x3, 0xa9, 0xaf, 0x6e, 0xae, 0x3f, 0xe2, - 0x75, 0x89, 0xba, 0xf0, 0xfb, 0xb8, 0x65, 0xc, 0x87, 0x80, - 0xc7, 0x1f, 0x5a, 0xf0, 0x73, 0xcc, 0x24, 0x71, 0x38, 0x39, - 0x3b, 0x6b, 0x1d, 0x51, 0xf3, 0x5c, 0x47, 0x81, 0x86, 0x33, - 0x3, 0x36, 0xd7, 0xbd, 0x15, 0x74, 0x78, 0x4d, 0x14, 0x51, - 0x5f, 0x8e, 0x9f, 0x81, 0xf, 0x84, 0xed, 0x9e, 0x33, 0xfe, - 0xd0, 0xeb, 0x5f, 0x48, 0x78, 0x72, 0x7f, 0xb4, 0x68, 0xb6, - 0xae, 0x30, 0x41, 0x41, 0x8c, 0x57, 0xcd, 0xa3, 0xa8, 0xeb, - 0xd7, 0xb5, 0x7d, 0xb, 0xe0, 0x69, 0xc4, 0xfe, 0x1c, 0xb6, - 0x60, 0x8c, 0x80, 0xc, 00, 0xc2, 0xbe, 0xe3, 0x85, 0x67, - 0x6a, 0xf5, 0x23, 0xdd, 0x1f, 0xa3, 0xf0, 0x55, 0x4b, 0x62, - 0x6a, 0xc3, 0xba, 0x46, 0xe5, 0xc4, 0xc2, 0xde, 0x9, 0x24, - 0x39, 0x21, 0x14, 0xb1, 0xc5, 0x7c, 0xf9, 0xe3, 0x4d, 0x72, - 0x4d, 0x6f, 0x59, 0x76, 0x67, 0x63, 0x1a, 0x70, 0xaa, 0xdf, - 0xe1, 0x5e, 0xd1, 0xe3, 0x9d, 0x45, 0xb4, 0xdf, 0xd, 0x5d, - 0xc8, 0x8e, 0xa9, 0x23, 0x2e, 0xc0, 0x58, 0xfa, 0xf5, 0xaf, - 0x9e, 0xa4, 0x73, 0x24, 0x8c, 0xc4, 0xe4, 0x93, 0x5d, 0x3c, - 0x53, 0x8a, 0x77, 0x86, 0x1a, 0x2f, 0xcd, 0x9d, 0x7c, 0x69, - 0x8c, 0x69, 0xd3, 0xc2, 0x45, 0xe9, 0xbb, 0xfd, 0x6, 0xd1, - 0x45, 0x15, 0xf9, 0xf1, 0xf9, 0x71, 0xbb, 0xe1, 0x4f, 0xa, - 0xdc, 0x78, 0x9a, 0xf9, 0x63, 0x8f, 0x68, 0x88, 0x72, 0xe5, - 0x8e, 0x38, 0xaf, 0x56, 0xd3, 0xfe, 0x17, 0xe9, 0x96, 0x91, - 0x28, 0x6d, 0xcc, 0xfd, 0xfa, 0x7f, 0x85, 0x4b, 0xf0, 0xd7, - 0x4c, 0x86, 0xcb, 0xc3, 0xd0, 0x3a, 0x46, 0x56, 0x57, 0x5c, - 0xb1, 0x61, 0x83, 0x9f, 0xce, 0xba, 0xea, 0xfd, 0x53, 0x28, - 0xc9, 0xb0, 0xf4, 0xf0, 0xf1, 0xab, 0x56, 0x3c, 0xd2, 0x96, - 0xbe, 0x87, 0xed, 0x59, 0x16, 0x41, 0x85, 0xa5, 0x85, 0x85, - 0x6a, 0xf1, 0x52, 0x9c, 0x95, 0xf5, 0xe9, 0xe4, 0x73, 0x47, - 0xc0, 0x5a, 0x76, 0x30, 0x13, 0xf4, 0x15, 0x4a, 0xef, 0xe1, - 0xad, 0x8d, 0xc0, 0x3b, 0x48, 0x43, 0xf4, 0x1f, 0xe1, 0x5d, - 0x95, 0x15, 0xef, 0x4b, 0x2e, 0xc2, 0x49, 0x59, 0xd3, 0x47, - 0xd2, 0xcf, 0x2a, 0xc1, 0x4d, 0x59, 0xd2, 0x47, 0x8e, 0x6b, - 0xdf, 0xa, 0xe7, 0xb5, 0xdf, 0x24, 0xe, 0xd2, 0x1, 0xc8, - 0xa, 0x47, 0xf8, 0x55, 0xcf, 0x85, 0xfe, 0x1d, 0x92, 0xd2, - 0xee, 0xe6, 0xe2, 0xe2, 0x30, 0xac, 0x9f, 0x2a, 0x86, 0xc6, - 0xe1, 0x5e, 0xaf, 0x55, 0x25, 0x85, 0x2d, 0xd5, 0x99, 0x40, - 0x5, 0xb9, 0x35, 0xe5, 0x43, 0x21, 0xc3, 0x51, 0xc4, 0xc7, - 0x11, 0x4f, 0x4b, 0x74, 0x3c, 0x5a, 0x7c, 0x33, 0x84, 0xa1, - 0x8c, 0x86, 0x2a, 0x8e, 0x96, 0xe8, 0x61, 0x6b, 0x93, 0x61, - 0x48, 0xe7, 0x2, 0xbc, 0xdb, 0xc4, 0x77, 0x47, 0xe6, 0xeb, - 0x5d, 0xde, 0xbb, 0x31, 0xd8, 0xdf, 0x30, 0xaf, 0x32, 0xf1, - 0x1d, 0xcf, 0xf, 0xf3, 0xa, 0xfa, 0x63, 0xec, 0xf, 0x34, - 0xf1, 0x85, 0xe9, 0xa, 0xff, 00, 0x7b, 0x8e, 0x6b, 0xe2, - 0x2f, 0xda, 0x1f, 0x5f, 0x6b, 0x8b, 0x8f, 0x24, 0x79, 0x98, - 0x2e, 0x49, 0xcf, 0x4e, 0x2b, 0xec, 0xf, 0x1d, 0xea, 0x6, - 0xb, 0x4b, 0x87, 0xf3, 0x15, 0x48, 0x53, 0x82, 0x4d, 0x7c, - 0x15, 0xf1, 0x97, 0x56, 0x6b, 0xad, 0x5e, 0x45, 0x32, 0xa3, - 0x85, 0x27, 0xee, 0x9f, 0xfe, 0xb5, 0x78, 0x19, 0xbc, 0xed, - 0x49, 0x43, 0xb9, 0xf3, 0x19, 0xed, 0x4b, 0x51, 0x54, 0xd7, - 0x53, 0xc5, 0x35, 0xfb, 0x82, 0xd2, 0x11, 0xcd, 0x7d, 0x15, - 0xff, 00, 0x4, 0xd7, 0xf0, 0xc2, 0x6b, 0x7f, 0xb4, 0x31, - 0xbf, 0x93, 0xec, 0xcc, 0xb6, 0x56, 0xa0, 0x5, 0x9c, 0x8d, - 0xdb, 0x8c, 0x8a, 0xf9, 0x50, 0x7d, 0xa2, 0x65, 0xc8, 0xfe, - 0xf0, 0x1d, 0xeb, 0xe6, 0x7d, 0x62, 0x62, 0xd2, 0xb7, 0x20, - 0xd7, 0xde, 0xbf, 0xf0, 0x4a, 0xcf, 0x4, 0x61, 0xf5, 0xff, - 00, 0x13, 0x5c, 0x69, 0xb7, 0x48, 0xcd, 0x26, 0xc8, 0x2f, - 0x1d, 0xa, 0xc2, 0xea, 0xaa, 0x54, 0x6d, 0x24, 0x8c, 0xfc, - 0xcd, 0x30, 0x38, 0x7, 0x91, 0xea, 0x38, 0x58, 0x8, 0x59, - 0xa1, 0x65, 0x90, 0xb3, 0x89, 0xfa, 0x6b, 0x6b, 0x2f, 0x4a, - 0xbe, 0x24, 0xe2, 0xb1, 0xad, 0x24, 0xcd, 0x68, 0xab, 0x7c, - 0xa2, 0xbe, 0x80, 0xfa, 0x83, 0xa8, 0xa4, 0x3d, 0x29, 0x69, - 0xf, 0x4a, 00, 0x69, 0xe9, 0x50, 0xb8, 0xa9, 0x4f, 0x4a, - 0x85, 0xcd, 00, 0x57, 0x97, 0x81, 0x59, 0xb7, 0x7, 0x19, - 0xad, 0x9, 0xcf, 0x5a, 0xcb, 0xb9, 0x3c, 0x1e, 0x68, 0x3, - 0xe5, 0xef, 0xda, 0x89, 0x9b, 0xc5, 0xff, 00, 0x12, 0x7e, - 0x1e, 0xf8, 0x32, 0xdf, 0xfd, 0x6b, 0x4e, 0x75, 0x19, 0x99, - 0x53, 0xe, 0x89, 0x9d, 0x80, 0x87, 0xc9, 0xc7, 0xdd, 0x93, - 0x23, 0x6f, 0x65, 0x39, 0xe3, 0x15, 0xf5, 0x5f, 0x85, 0x2c, - 0xfe, 0xcb, 0xa7, 0xc2, 0x99, 0x63, 0xb5, 0x40, 0xf9, 0x8e, - 0x4f, 0x4a, 0xf9, 0x63, 0xc2, 0xbf, 0xf1, 0x5a, 0xfe, 0xd6, - 0x3e, 0x2a, 0xd5, 0xf4, 0xf0, 0x6e, 0xf4, 0xfd, 0x26, 0x14, - 0xd3, 0xa4, 0x9e, 0xe4, 0x17, 0x11, 0xcc, 0x8a, 0x15, 0xd2, - 0x21, 0xf2, 0x94, 0x1, 0xc3, 0x83, 0x90, 0xd9, 0x21, 0xc8, - 0x38, 0x61, 0x8f, 0xae, 0xb4, 0xd8, 0xcc, 0x76, 0xca, 0x8, - 0x3, 0x8e, 0xd5, 0xe1, 0xe5, 0xcb, 0xda, 0xd5, 0xaf, 0x89, - 0xfe, 0x69, 0x59, 0x7a, 0x47, 0x4f, 0xce, 0xe7, 0xce, 0x65, - 0x4b, 0xdb, 0x57, 0xc4, 0xe2, 0xff, 00, 0x9a, 0x7c, 0xab, - 0xd2, 0x1e, 0xee, 0x9f, 0x3b, 0x96, 0xe8, 0xa2, 0xb9, 0xbf, - 0x88, 0x9e, 0x31, 0xb2, 0xf0, 0x17, 0x83, 0xf5, 0x2d, 0x6e, - 0xfa, 0x7f, 0x22, 0xb, 0x68, 0x8b, 0x6e, 0xce, 0xe, 0x7b, - 0x1, 0xc1, 0xfe, 0x46, 0xbd, 0xc3, 0xe8, 0xcf, 0x96, 0x7f, - 0xe0, 0xa1, 0x1f, 0xb6, 0x4d, 0x8f, 0xc0, 0x6f, 0x1, 0x5f, - 0x68, 0x1a, 0x3d, 0xca, 0x3f, 0x8a, 0xef, 0x42, 0xc4, 0xa8, - 0x50, 0x48, 0x23, 0x56, 0xe4, 0xe7, 0x12, 0x29, 0x53, 0x8e, - 0xf8, 0x3f, 0x4a, 0xfc, 0x44, 0xf1, 0x4f, 0x8e, 0xf5, 0xdf, - 0x18, 0x6a, 0xb7, 0x1a, 0x8d, 0xf5, 0xe4, 0xed, 0x2c, 0xcc, - 0x59, 0x82, 0x48, 0xc1, 0x47, 0xe1, 0x9a, 0xf6, 0x8f, 0x1f, - 0x43, 0xad, 0x7e, 0xd6, 0xdf, 0xb5, 0x55, 0xe5, 0x8e, 0x83, - 0xf6, 0xdd, 0x62, 0x4d, 0x57, 0x51, 0x31, 0x45, 0xe7, 0xc9, - 0xe6, 0x61, 0x46, 0x4b, 0x11, 0xc2, 00, 00, 0x4, 0xf6, - 0xfa, 0xf3, 0x5e, 0xfb, 0xfb, 0x57, 0xfe, 0xc6, 0x1e, 0x10, - 0xfd, 0x99, 0x7e, 0x3, 0x5b, 0x6a, 0x1a, 0x8e, 0xa8, 0xe3, - 0xc4, 0xb7, 0x3b, 0x52, 0x3b, 0x38, 0x41, 0x4d, 0xce, 0x71, - 0x91, 0x92, 0xce, 0xf, 0xe9, 0x40, 0x1e, 0x21, 0xfb, 0x4, - 0xf8, 0x1e, 0xf7, 0xe2, 0x1f, 0xc7, 0xdd, 0x2, 0xd9, 0x64, - 0xb8, 0x65, 0x5b, 0x94, 0x66, 0x75, 0x9f, 0x66, 00, 0x39, - 0x27, 0x25, 0x1f, 0xf9, 0x57, 0xd8, 0xdf, 0xf0, 0x53, 0x1f, - 0xda, 0x4b, 0xc4, 0x7f, 0xb, 0x7e, 0x25, 0xe9, 0x9a, 0x3e, - 0x89, 0x75, 0x73, 0x4, 0x51, 0x42, 0x1e, 0x57, 0x89, 0x99, - 0x32, 0x4f, 0xdd, 0x19, 0xf, 0xcf, 0x1e, 0xdf, 0x8d, 0x61, - 0x7f, 0xc1, 0x1c, 0xbc, 0x11, 0xa8, 0xa7, 0x89, 0x35, 0x8f, - 0x11, 0x3d, 0x94, 0xb, 0xa7, 0x43, 0x6c, 0xca, 0x6e, 0x59, - 0xf, 0x98, 0xb, 0x74, 00, 0xee, 0xfc, 0xf8, 0x35, 0xe4, - 0x7f, 0xf0, 0x54, 0x2f, 0x12, 0xe9, 0x3a, 0xcf, 0xc7, 0x2b, - 0x78, 0x34, 0xdb, 0xab, 0x8b, 0xcb, 0xc5, 0x93, 0x7c, 0xab, - 0x2c, 0xbb, 0xd0, 00, 0x78, 0xf9, 0x76, 0x8f, 0xe7, 0x40, - 0x1f, 0xa6, 0x9f, 0xb0, 0xaf, 0x8a, 0xb5, 0x8f, 0x18, 0x7c, - 0x16, 0xd3, 0xf5, 0xd, 0x62, 0xe6, 0x6b, 0x9b, 0x86, 0x51, - 0xb9, 0xe5, 0x99, 0xa4, 0xf9, 0x8f, 0x24, 0x64, 0x8e, 0xd5, - 0xed, 0x9e, 0x3b, 0xd4, 0x16, 0xc3, 0xc3, 0xf7, 0xc, 0x71, - 0x92, 0xa4, 0x72, 0x33, 0xfd, 0x45, 0x79, 0x2f, 0xec, 0x39, - 0xa1, 0xea, 0xba, 0xf, 0xec, 0xdb, 0xe1, 0x48, 0x75, 0x8b, - 0x48, 0x2c, 0xee, 0xe5, 0x84, 0x4d, 0xe5, 0xc3, 0x1e, 0xc3, - 0xb5, 0x80, 0xc1, 0x6f, 0x99, 0xb2, 0xde, 0xfc, 0x7d, 0x2b, - 0xb0, 0xf8, 0xc5, 0x7f, 0x1a, 0xd9, 0xc7, 0x6f, 0xe6, 0x37, - 0x98, 0xc4, 0x7c, 0xa0, 0xe0, 0x7f, 0x2a, 0xf2, 0x73, 0x5a, - 0xff, 00, 0x57, 0xc1, 0xd4, 0x9f, 0x91, 0xe1, 0xe7, 0x78, - 0x9f, 0xaa, 0xe0, 0x2a, 0xd4, 0xeb, 0x6b, 0x7d, 0xe7, 0x92, - 0xe7, 0x39, 0x3e, 0xa7, 0x34, 0x51, 0x45, 0x7e, 0x24, 0x7f, - 0x3a, 0x8a, 0xa7, 0xc, 0xf, 0xa1, 0xcd, 0x76, 0x5a, 0x7f, - 0xc4, 0xdd, 0x46, 0xc2, 0x5, 0x89, 0x76, 0x95, 0x5e, 0x6, - 0x73, 0x5c, 0x65, 0x15, 0xd5, 0x43, 0x15, 0x5b, 0xa, 0xdc, - 0xa8, 0xca, 0xd7, 0x3b, 0x70, 0xd8, 0xcc, 0x46, 0xd, 0xb9, - 0x61, 0xe6, 0xe2, 0xdf, 0x63, 0xba, 0x9b, 0xe2, 0xce, 0xa5, - 0x20, 0xc6, 0xc4, 0xfc, 0x3f, 0xfd, 0x75, 0x81, 0xaa, 0xf8, - 0xba, 0xff, 00, 0x56, 0x56, 0x57, 0x91, 0x91, 0x4f, 0x50, - 0x9, 0xff, 00, 0x1a, 0xc4, 0xa2, 0xb6, 0xab, 0x98, 0x62, - 0xab, 0xae, 0x5a, 0x95, 0x1b, 0x47, 0x45, 0x7c, 0xd3, 0x1b, - 0x88, 0x8f, 0x2d, 0x5a, 0xad, 0xa1, 0x49, 0xcf, 0x5a, 0x4a, - 0x7c, 0x51, 0x34, 0xd2, 0x4, 0x5e, 0xa7, 0x8a, 0xee, 0xfc, - 0x3b, 0xf0, 0xba, 0xee, 0xfb, 0xcb, 0x9e, 0xe0, 0xa7, 0x90, - 0x7b, 0x1f, 0xfe, 0xb1, 0xac, 0xf0, 0xd8, 0x3a, 0xf8, 0xc9, - 0x72, 0x50, 0x8d, 0xcc, 0xb0, 0x78, 0xc, 0x4e, 0x3e, 0x7c, - 0x98, 0x78, 0x5f, 0xf4, 0x39, 0x7f, 0xe, 0xf8, 0x76, 0xe7, - 0xc4, 0x37, 0xc9, 0xc, 0x51, 0xb6, 0xc3, 0xd5, 0xf1, 0xc7, - 0xe7, 0x8a, 0xfa, 0x3, 0x44, 0xd2, 0x62, 0xd1, 0x74, 0xe8, - 0xad, 0xa2, 0x1c, 0x2a, 0x80, 0x79, 0xce, 0x4f, 0xe4, 0x29, - 0x34, 0x5d, 0x12, 0xdb, 0x43, 0xb4, 0x10, 0x5b, 0xc6, 0xa8, - 0x3b, 0x90, 0x31, 0x9a, 0xd1, 0xaf, 0xd5, 0x32, 0x8c, 0xa2, - 0x39, 0x74, 0x1c, 0xa4, 0xef, 0x37, 0xbf, 0x97, 0x92, 0x3f, - 0x6a, 0xc8, 0x72, 0x28, 0x65, 0x30, 0x73, 0x9b, 0xbd, 0x49, - 0x6e, 0xfb, 0x79, 0x20, 0xa2, 0x8a, 0x2b, 0xe8, 0xcf, 0xac, - 0xa, 0xa5, 0xab, 0xdc, 0xad, 0xae, 0x9d, 0x3c, 0x8c, 0x40, - 0x1, 0x4f, 0x5a, 0xbb, 0x5c, 0x9f, 0xc4, 0x9b, 0xd8, 0xad, - 0x7c, 0x37, 0x70, 0xae, 0xec, 0xa5, 0xc6, 0xd0, 0x14, 0xe3, - 0x3f, 0xa5, 0x72, 0x62, 0xea, 0xaa, 0x18, 0x79, 0xd4, 0x7d, - 0x13, 0x38, 0x71, 0xd5, 0xd6, 0x1b, 0xb, 0x52, 0xab, 0xe8, - 0x99, 0xe1, 0x97, 0xd3, 0x7d, 0xa6, 0xf6, 0x79, 0x78, 0xf9, - 0xdc, 0x9e, 0x6, 0x2a, 0xa, 0x5, 0x15, 0xf8, 0x43, 0x7c, - 0xce, 0xec, 0xfe, 0x69, 0x72, 0x72, 0x6e, 0x4f, 0xa8, 0x11, - 0x9e, 0x7, 0x53, 0xc0, 0xaf, 0x7e, 0xf8, 0x79, 0x60, 0x6c, - 0xb4, 0x8, 0xb3, 0x9f, 0x98, 0xe, 0xa7, 0x3f, 0xd0, 0x57, - 0x85, 0xe9, 0x50, 0x35, 0xce, 0xa7, 0x6d, 0x1a, 0x28, 0x66, - 0x2e, 0xe, 0xf, 0x4a, 0xfa, 0x43, 0x48, 0x85, 0xad, 0xf4, - 0xdb, 0x78, 0xd8, 0x5, 0x60, 0xa3, 0x20, 0xc, 0x57, 0xdc, - 0x70, 0xb5, 0x1e, 0x6a, 0xd5, 0x2b, 0x3e, 0x8a, 0xc7, 0xe8, - 0xdc, 0x17, 0x87, 0xe6, 0xaf, 0x52, 0xbb, 0xe8, 0xac, 0x5c, - 0xa2, 0x8a, 0x2b, 0xf4, 0xa3, 0xf5, 0xe2, 0x2b, 0x99, 0x96, - 0xda, 0xde, 0x49, 0x58, 0xe1, 0x51, 0x4b, 0x1f, 0xc2, 0xbe, - 0x71, 0xf1, 0x2e, 0xa3, 0xfd, 0xad, 0xad, 0xdd, 0x5d, 0xc, - 0x61, 0xd8, 0xe3, 0x3, 0x1f, 0xd4, 0xd7, 0xb6, 0xfc, 0x42, - 0xd4, 0x63, 0xb0, 0xf0, 0xdd, 0xce, 0xf7, 0x65, 0x2e, 0xbb, - 0x46, 0xd3, 0x82, 0x7f, 0x4a, 0xf0, 0x2, 0x72, 0x6b, 0xf3, - 0x8e, 0x29, 0xc4, 0xf3, 0x4e, 0x9e, 0x1d, 0x74, 0xd5, 0x9f, - 0x93, 0x71, 0xa6, 0x2f, 0x9a, 0xa5, 0x3c, 0x2a, 0xd9, 0x6a, - 0xff, 00, 0x41, 0x28, 0xa2, 0x9c, 0xaa, 0x5d, 0x80, 0x1c, - 0x93, 0x5f, 0x6, 0x7e, 0x66, 0x7a, 0x8f, 0xc2, 0xd, 0x8, - 0xe1, 0xb5, 0x17, 0x18, 0xce, 0x42, 0x9c, 0xff, 00, 0x4c, - 0x7f, 0x5a, 0xf5, 0x3a, 0xc6, 0xf0, 0x85, 0x83, 0x69, 0xde, - 0x1e, 0xb2, 0x8e, 0x44, 0x54, 0x93, 0xca, 0x52, 0xc1, 0x47, - 0x7c, 0x7d, 0x4d, 0x6c, 0xd7, 0xed, 0xb9, 0x5e, 0x15, 0x61, - 0x30, 0x90, 0xa7, 0xd6, 0xd7, 0x7e, 0xac, 0xfe, 0x8a, 0xc9, - 0x70, 0x6b, 0x3, 0x81, 0xa7, 0x4b, 0xad, 0xae, 0xfd, 0x58, - 0x51, 0x45, 0x15, 0xeb, 0x1e, 0xd8, 0x57, 0x3b, 0xe3, 0xe2, - 0xa3, 0xc3, 0x57, 0x39, 00, 0x92, 0x30, 0x32, 0xb9, 0xfe, - 0xa2, 0xba, 0x2a, 0xe4, 0xbe, 0x25, 0x4f, 0x14, 0x3e, 0x1e, - 0x97, 0xcc, 0x76, 0x53, 0x83, 0x8d, 0xa7, 0x19, 0x3f, 0x95, - 0x79, 0xf9, 0x84, 0x94, 0x70, 0x95, 0x1b, 0xec, 0xcf, 0x2f, - 0x34, 0x92, 0x86, 0xa, 0xb3, 0x7f, 0xca, 0xcf, 0x6, 0xfa, - 0x74, 0xa2, 0x81, 0xd2, 0x8a, 0xfc, 0x30, 0xfe, 0x6d, 0x14, - 0x75, 0x15, 0xf4, 0x37, 0x82, 0x23, 0x31, 0x78, 0x76, 0xd5, - 0xe, 0x70, 0x14, 0xe, 0x4e, 0x7f, 0xa0, 0xaf, 0x9e, 0xe0, - 0x5, 0xa7, 0x88, 0x28, 0xcb, 0x6e, 0x18, 0x6, 0xbe, 0x90, - 0xf0, 0xe4, 0x12, 0x5b, 0xe8, 0x96, 0x89, 0x2a, 0xaa, 0xbe, - 0xc0, 0x48, 0x51, 0x8a, 0xfb, 0x8e, 0x15, 0x85, 0xeb, 0xd4, - 0x97, 0x64, 0x7e, 0x8f, 0xc1, 0x50, 0x6f, 0x13, 0x56, 0x7d, - 0x92, 0x39, 0x7f, 0x8b, 0x57, 0x4b, 0x1e, 0x86, 0xb1, 0x1e, - 0xa4, 0xee, 0xe9, 0x9f, 0xea, 0x3f, 0x95, 0x78, 0xa0, 0xe9, - 0x5e, 0xc7, 0xf1, 0x82, 0xd5, 0x1b, 0x49, 0x8a, 0x4c, 0xb6, - 0xfd, 0xdd, 0x3b, 0x60, 0x57, 0x8e, 0x57, 0x9f, 0xc4, 0x6d, - 0xbc, 0x7b, 0x4f, 0xb2, 0x3c, 0xbe, 0x2d, 0x72, 0x79, 0x9b, - 0x4f, 0xb2, 0xa, 0x51, 0xc1, 0xa4, 0xa2, 0xbe, 0x5c, 0xf8, - 0xd3, 0xd7, 0xbe, 0x1a, 0xf8, 0xba, 0x37, 0xb5, 0x5b, 0x2b, - 0x89, 0x15, 0x58, 0x74, 0x2e, 0xfc, 0xd7, 0xa3, 0x23, 0xac, - 0x8a, 0x19, 0x48, 0x60, 0x7b, 0x8a, 0xf9, 0x7e, 0xde, 0xe2, - 0x4b, 0x49, 0x44, 0x90, 0xb6, 0xc7, 0x1d, 0xe, 0x2b, 0xaf, - 0xd0, 0xfe, 0x25, 0xdf, 0x69, 0xf8, 0x49, 0xe5, 0xde, 0xbf, - 0xee, 0xd7, 0xde, 0xe5, 0x7c, 0x43, 0xa, 0x34, 0xd5, 0xc, - 0x4a, 0xdb, 0x66, 0x7e, 0x9b, 0x92, 0xf1, 0x54, 0x28, 0x52, - 0x8e, 0x1f, 0x18, 0xb6, 0xd9, 0x9e, 0xe7, 0x45, 0x72, 0x9a, - 0x27, 0xc4, 0xb, 0xd, 0x51, 0x11, 0x4b, 0x85, 0x90, 0xfa, - 0x9c, 0x57, 0x51, 0x1c, 0xa9, 0x2a, 0x82, 0x8c, 0x18, 0x1f, - 0x43, 0x9a, 0xfb, 0xda, 0x18, 0x9a, 0x58, 0x98, 0xf3, 0x52, - 0x95, 0xd1, 0xfa, 0x6e, 0x1b, 0x17, 0x43, 0x17, 0x1e, 0x7a, - 0x32, 0x4d, 0xf, 0xaa, 0x7a, 0x83, 0xed, 0x43, 0x57, 0x2b, - 0x23, 0x54, 0x90, 0x5, 0x3c, 0xd7, 0x49, 0xd6, 0x72, 0x3e, - 0x20, 0x98, 0x79, 0x6d, 0xfe, 0x15, 0xe5, 0xbe, 0x25, 0xb8, - 0x1, 0x64, 0xe9, 0xf9, 0x7f, 0xf5, 0xeb, 0xd0, 0x7c, 0x47, - 0x32, 0x84, 0x6e, 0x7b, 0xd7, 0x94, 0x78, 0xa6, 0xe1, 0x15, - 0x5b, 0x93, 0x40, 0x1e, 0x31, 0xf1, 0x57, 0x52, 0x5b, 0x6d, - 0x2a, 0xe3, 0x24, 0x72, 0x8, 0xe4, 0x13, 0xfd, 0x6b, 0xe0, - 0x7f, 0x88, 0x57, 0xcb, 0x3e, 0xa5, 0x74, 0xc3, 0x1f, 0x7c, - 0x8e, 0x1, 0x1f, 0xd4, 0xd7, 0xd8, 0x1f, 0x1e, 0x35, 0x68, - 0x2d, 0xec, 0x1d, 0x5a, 0x46, 0xce, 0xd2, 0x70, 0xf, 0xff, - 00, 0x5a, 0xbe, 0x1f, 0xf1, 0x65, 0xc2, 0x33, 0x48, 0xc1, - 0x89, 0xc9, 0x3d, 0x4d, 0x7c, 0x9e, 0x67, 0x2e, 0x7c, 0x44, - 0x61, 0xd8, 0xf8, 0x7c, 0xe2, 0x7e, 0xd3, 0x15, 0xa, 0x7d, - 0x8e, 0x1f, 0x51, 0x93, 0x2e, 0xc6, 0xbf, 0x5d, 0xff, 00, - 0xe0, 0x9f, 0x9e, 0x15, 0x97, 0xc2, 0xbf, 0xb3, 0xf6, 0x8d, - 0xe7, 0x9, 0x51, 0xee, 0xd4, 0x5c, 0x6c, 0x96, 0x50, 0xf8, - 0xf, 0x99, 0x46, 0x6, 0xc0, 0x54, 0x7e, 0xf3, 0xa1, 0x27, - 0x7, 0x23, 0xb6, 0x4f, 0xe4, 0x65, 0x8e, 0x99, 0x3e, 0xbd, - 0xad, 0xd8, 0x69, 0xb6, 0x91, 0xac, 0xd7, 0x77, 0xb7, 0x31, - 0xdb, 0x43, 0x1b, 0x9c, 0x7, 0x77, 0x60, 0xaa, 0x9, 0xec, - 0x9, 0x22, 0xbf, 0x76, 0x7e, 0x16, 0x58, 0xcb, 0xa5, 0xf8, - 0x27, 0x47, 0xb7, 0x95, 0x12, 0x37, 0x58, 0x77, 0x6d, 0x8d, - 0x36, 0x80, 0x18, 0x96, 0x1c, 0x64, 0xe3, 0xad, 0x7b, 0x38, - 0x28, 0xd9, 0x36, 0x7d, 0x6, 0x5f, 0xb, 0x26, 0xcf, 0x46, - 0xb2, 0x7a, 0xd3, 0x53, 0xf2, 0x8a, 0xc8, 0xb2, 0x63, 0x5a, - 0x8a, 0xc7, 0x68, 0xaf, 0x4c, 0xf6, 0xe, 0xc6, 0x91, 0xa9, - 0x69, 0xa7, 0xad, 00, 0x35, 0x8e, 0x5, 0x40, 0xe6, 0xa5, - 0x73, 0x50, 0x48, 0x68, 0x2, 0xb5, 0xc3, 0x71, 0x5c, 0xaf, - 0x8c, 0xbc, 0x47, 0x6d, 0xe1, 0x3f, 0xd, 0x6a, 0xba, 0xd5, - 0xe0, 0x66, 0xb5, 0xd3, 0xed, 0x64, 0xba, 0x95, 0x53, 0x1b, - 0x99, 0x51, 0x4b, 0x10, 0xb9, 0x20, 0x64, 0xe3, 0x3, 0x9e, - 0xa6, 0xba, 0x5b, 0x87, 0xe0, 0xd7, 0x81, 0xfe, 0xd6, 0xbe, - 0x33, 0x9b, 0x40, 0xf8, 0x68, 0xda, 0x2d, 0x8b, 0x67, 0x54, - 0xf1, 0x24, 0xeb, 0xa5, 0xc4, 0x8a, 0x46, 0xff, 00, 0x29, - 0xb9, 0x98, 0x85, 0xc1, 0xc8, 0x29, 0xf2, 0x1e, 0x98, 0xf3, - 0x41, 0xcd, 0x72, 0x62, 0xeb, 0xac, 0x36, 0x1e, 0x75, 0x9f, - 0xd9, 0x4f, 0xfe, 0x7, 0xe2, 0x70, 0xe3, 0xb1, 0x2b, 0x7, - 0x85, 0xa9, 0x5d, 0xfd, 0x94, 0xdf, 0xcf, 0xa7, 0xde, 0xcc, - 0x9f, 0xd9, 0x13, 0xc3, 0x57, 0x37, 0x9a, 0x66, 0xad, 0xe2, - 0xeb, 0xd0, 0xb0, 0x5d, 0xf8, 0x8a, 0xf6, 0x5b, 0xe6, 0xb6, - 0xb7, 0xca, 0xc3, 0x18, 0x67, 0x63, 0x84, 0x53, 0xd0, 0x65, - 0x9b, 0x1c, 0x9e, 0x31, 0xcd, 0x7d, 0x53, 0x2, 0x6c, 0x8d, - 0x45, 0x79, 0x8f, 0xc1, 0x1f, 0x3, 0xc5, 0xe0, 0xbf, 0x5, - 0x69, 0x5a, 0x64, 0x6b, 0x83, 0xc, 0x2a, 0x18, 0xe0, 0xf2, - 0xc7, 0x96, 0x3d, 0x4f, 0x7c, 0xd7, 0xa8, 0x81, 0x81, 0x8a, - 0xcb, 0x2f, 0xa0, 0xf0, 0xf8, 0x5a, 0x74, 0xe5, 0xbd, 0xb5, - 0xf5, 0x7a, 0xbf, 0xc4, 0xc3, 0x2b, 0xc3, 0x3c, 0x2e, 0xa, - 0x95, 0x29, 0x7c, 0x56, 0xd7, 0xd5, 0xea, 0xff, 00, 0x11, - 0x6b, 0xe5, 0x6f, 0xf8, 0x28, 0x9f, 0xc5, 0x4, 0xf8, 0x7b, - 0xf0, 0x27, 0x51, 0x4f, 0x22, 0x39, 0xcd, 0xca, 0x36, 0xe1, - 0x22, 0x6e, 00, 0x1, 0xc7, 0x71, 0xc9, 0x35, 0xf5, 0x4d, - 0x7c, 0x57, 0xff, 00, 0x5, 0x54, 0xd4, 0xae, 0xed, 0xbf, - 0x67, 0xa9, 0xed, 0xad, 0x42, 0xac, 0x73, 0xbe, 0x2e, 0x25, - 0x66, 0x51, 0x84, 0x4, 0x7c, 0xbc, 0xf5, 0xcf, 0x4e, 0x39, - 0xaf, 0x40, 0xf5, 0x4f, 0x80, 0xff, 00, 0xe0, 0x97, 0x1a, - 0x5, 0xbf, 0x8a, 0x3f, 0x69, 0xad, 0x3f, 0x53, 0xb9, 0xbd, - 0x6b, 0x29, 0xad, 0x65, 0x6b, 0xb0, 0xb0, 0x49, 0xe5, 0x97, - 0x6c, 0x13, 0xb0, 0x70, 0x78, 0x3c, 0x82, 0x3b, 0x82, 0x45, - 0x7a, 0xe7, 0xfc, 0x16, 0xb, 0xe2, 0xaa, 0xeb, 0xfe, 0x2d, - 0xf0, 0xe7, 0x81, 0x2d, 0x23, 0xb6, 0x76, 0x46, 0x33, 0xca, - 0xfb, 0x41, 0x95, 0xf, 00, 0xc, 0x83, 0xc0, 0x39, 0x7, - 0xa7, 0x38, 0xaf, 0xce, 0xcf, 0x4, 0xf8, 0xd3, 0x51, 0xf0, - 0x27, 0x88, 0x6d, 0xf5, 0x5d, 0x36, 0xe5, 0xed, 0xae, 0x21, - 0x70, 0xe1, 0x93, 0x19, 0xc8, 0xe9, 0xd6, 0xb5, 0xbe, 0x23, - 0xfc, 0x58, 0xd6, 0xfe, 0x28, 0x78, 0x92, 0xdf, 0x55, 0xd7, - 0x2f, 0x24, 0xbb, 0x7b, 0x75, 0x9, 0x16, 0xfc, 0x7c, 0xa3, - 0x39, 0x3d, 00, 0xa0, 0xf, 0xd6, 0x8f, 0xd8, 0xf8, 0xe9, - 0x5f, 0xb2, 0x77, 0xec, 0x8f, 0xa9, 0xf8, 0xdf, 0x5f, 0xd4, - 0xf, 0xda, 0x35, 0x8, 0x5a, 0x48, 0x2c, 0xa6, 0x98, 0x61, - 0xc2, 0x8e, 00, 0x43, 0xb7, 0xa9, 0xf4, 0x35, 0xf9, 0xd6, - 0xf7, 0x1a, 0xaf, 0xed, 0x85, 0xfb, 0x4f, 0xd8, 0xc7, 0x67, - 0x6c, 0x96, 0xaf, 0x7f, 0x76, 0x91, 0xee, 0xb5, 0x42, 0x85, - 0x23, 0xdd, 0xcb, 0x12, 0x37, 0x73, 0xc9, 0xc5, 0x70, 0xde, - 0x2c, 0xfd, 0xa1, 0xbc, 0x5d, 0xe2, 0x6f, 0x5, 0xd8, 0xf8, - 0x43, 0xfb, 0x49, 0xd7, 0xc3, 0xf6, 0xca, 0x42, 0xda, 0x85, - 0x5c, 0x16, 0x3d, 0x79, 0xc6, 0x7f, 0x5a, 0xfb, 0x93, 0xfe, - 0x9, 0x35, 0xfb, 0x2a, 0x4d, 0xab, 0x78, 0x86, 0x6f, 0x89, - 0x7a, 0xf5, 0xa1, 0x4b, 0x4b, 0x17, 0x29, 0x62, 0xb2, 0x2, - 0x37, 0x49, 0x8e, 0x4f, 0xde, 0x1d, 0x33, 0xe8, 0x68, 0x3, - 0xf5, 0x4f, 0xc0, 0xbe, 0x18, 0x4f, 0x4, 0xf8, 0x37, 0x49, - 0xd1, 0x12, 0x69, 0x6e, 0x12, 0xc2, 0xd9, 0x21, 0xf3, 0x26, - 0x7d, 0xcc, 0x76, 0xa8, 0x1c, 0x9c, 0xa, 0xf2, 0xaf, 0x89, - 0xfa, 0xc0, 0xd4, 0x75, 0xcf, 0x25, 0x55, 0x40, 0x8b, 0x92, - 0x40, 0xe6, 0xbd, 0xa7, 0x54, 0xbb, 0x5b, 0x1b, 0x9, 0xa6, - 0x24, 0xd, 0xab, 0xde, 0xbe, 0x72, 0xd7, 0x35, 0x6, 0xd5, - 0x35, 0x5b, 0x8b, 0x86, 0x39, 0xcb, 0x60, 0x7d, 0x2b, 0xe2, - 0x38, 0xa3, 0x11, 0xc9, 0x46, 0x14, 0x13, 0xd6, 0x4f, 0xf0, - 0x47, 0xe7, 0x3c, 0x67, 0x8a, 0xe4, 0xc3, 0xc3, 0xc, 0x9e, - 0xb2, 0x77, 0x7e, 0x88, 0xa3, 0x45, 0x14, 0x60, 0x92, 00, - 0x19, 0x27, 0x80, 0x2b, 0xf3, 0x33, 0xf2, 00, 0x24, 0xe, - 0xf4, 0x9b, 0x87, 0xad, 0x7b, 0x1f, 0x84, 0x7e, 0x1f, 0x5b, - 0x1d, 0x26, 0x29, 0x2e, 0x54, 0x34, 0x8e, 0x32, 0x72, 0xf, - 0xf8, 0xd5, 0x8d, 0x7b, 0xe1, 0xcd, 0xb3, 0xd9, 0xbb, 0x5b, - 0xaa, 0xa3, 0x1, 0x9c, 0xff, 00, 0xfa, 0xcd, 0x7d, 0x3c, - 0x78, 0x7b, 0x17, 0x2a, 0x2a, 0xb6, 0x9b, 0x5e, 0xc7, 0xd8, - 0xc7, 0x85, 0x71, 0xd2, 0xa0, 0xab, 0xab, 0x6a, 0xaf, 0x6e, - 0xa7, 0x8a, 0xd1, 0x53, 0xde, 0x5b, 0x1b, 0x4b, 0xa9, 0x22, - 0x6e, 0xaa, 0x71, 0xd2, 0xa0, 0xaf, 0x99, 0x69, 0xa7, 0x66, - 0x7c, 0x7b, 0x4e, 0x2d, 0xa7, 0xba, 0x1c, 0x92, 0x34, 0x2e, - 0x1d, 0xe, 0x18, 0x74, 0xaf, 0x6a, 0xf8, 0x5d, 0xaf, 0xcb, - 0xaa, 0xe9, 0xed, 0x14, 0xc4, 0xb3, 0x27, 0x4f, 0x4c, 0x57, - 0x89, 0xd7, 0xa1, 0xfc, 0x1c, 0x87, 0x7e, 0xad, 0x70, 0xfd, - 0xc2, 0xf3, 0xec, 0x2b, 0xe8, 0x72, 0x1a, 0xf3, 0xa5, 0x8e, - 0x84, 0x63, 0xb4, 0xb4, 0x67, 0xd5, 0x70, 0xce, 0x22, 0xa5, - 0x1c, 0xca, 0x9c, 0x21, 0xb4, 0xb4, 0x68, 0xf6, 0x3a, 0x28, - 0xa2, 0xbf, 0x61, 0x3f, 0x7a, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0xf2, 0xdf, 0x8c, 0x5a, 0xc2, 0xf9, 0x70, 0xd8, 0xaa, 0x82, - 0xcc, 0x72, 0x49, 0x1c, 0x8c, 0x57, 0xa8, 0xb1, 0xda, 0x9, - 0xf4, 0xaf, 0x6, 0xf8, 0x93, 0xac, 0x1d, 0x4f, 0xc4, 0x52, - 0x46, 0xe, 0x63, 0x83, 0xe5, 0xfc, 0x6b, 0xe5, 0xb8, 0x8f, - 0x11, 0xec, 0x70, 0x4e, 0x9, 0xeb, 0x27, 0x63, 0xe2, 0xf8, - 0xb3, 0x13, 0xec, 0x32, 0xe7, 0x4, 0xf5, 0x9b, 0xb7, 0xf9, - 0x9c, 0x9d, 0x14, 0x51, 0x5f, 0x92, 0x9f, 0x87, 0x1d, 0x2f, - 0xc3, 0xfd, 0x29, 0xb5, 0x3d, 0x7e, 0x32, 0x18, 0xa8, 0x8f, - 0xb8, 0x38, 0xaf, 0x7f, 0x45, 0xd8, 0x8a, 0xb9, 0x27, 0x3, - 0x19, 0x35, 0xe4, 0xff, 00, 0x8, 0x34, 0x71, 0x2c, 0x92, - 0x5e, 0x38, 0xfa, 0x1f, 0xe5, 0x5e, 0xb5, 0x5f, 0xab, 0xf0, - 0xdd, 0xf, 0x65, 0x83, 0xe7, 0x6b, 0x59, 0x3b, 0x9f, 0xb7, - 0x70, 0x8e, 0x1b, 0xd8, 0xe0, 0x3d, 0xa3, 0x5a, 0xcd, 0xdc, - 0x28, 0xa2, 0x8a, 0xfa, 0xc3, 0xed, 0xcf, 0x31, 0xf8, 0xc7, - 0xaa, 0x5, 0xb7, 0x82, 0xc8, 0x6c, 0x25, 0xce, 0x4e, 0x7a, - 0x8c, 0x57, 0x93, 0xd7, 0x71, 0xf1, 0x5f, 0x57, 0x37, 0xba, - 0xf7, 0xd9, 0x81, 0xfd, 0xdc, 0x3, 0xb1, 0xef, 0x5c, 0x3d, - 0x7e, 0x31, 0x9d, 0x56, 0xf6, 0xd8, 0xfa, 0x8d, 0x3b, 0xa5, - 0xa7, 0xdc, 0x7f, 0x3e, 0xf1, 0xe, 0x23, 0xeb, 0x19, 0x9d, - 0x56, 0x9d, 0xd2, 0x76, 0xfb, 0x82, 0xb4, 0x74, 0xb, 0x16, - 0xd4, 0x75, 0x5b, 0x78, 0x14, 0x31, 0x2c, 0xe0, 0x7c, 0xbd, - 0x6b, 0x3a, 0xba, 0x9f, 0x87, 0x3a, 0x68, 0xd4, 0xbc, 0x4b, - 00, 0x71, 0x94, 0x8c, 0xef, 0x6a, 0xf3, 0xb0, 0x94, 0xbd, - 0xb6, 0x22, 0x9d, 0x3e, 0xed, 0x1e, 0x4e, 0x6, 0x8b, 0xc4, - 0x62, 0xa9, 0xd2, 0x4a, 0xf7, 0x68, 0xf7, 0x9b, 0x78, 0xbc, - 0x88, 0x23, 0x8c, 0x12, 0xdb, 0x14, 0x2e, 0x49, 0xc9, 0x38, - 0x15, 0x25, 0x14, 0x57, 0xee, 0xe9, 0x59, 0x59, 0x1f, 0xd2, - 0xe9, 0x24, 0xac, 0x82, 0x8a, 0x28, 0xa6, 0x30, 0xaf, 0x36, - 0xf8, 0xc3, 0xaa, 0x2c, 0x56, 0x11, 0x59, 0x80, 0x8c, 0xd2, - 0x37, 0x7e, 0x48, 0x15, 0xe9, 0x4, 0xe0, 0x64, 0xd7, 0x89, - 0x7c, 0x55, 0xd6, 0xff, 00, 0xb4, 0x35, 0x94, 0xb6, 0x46, - 0xcc, 0x70, 0x8c, 0x9c, 0x7a, 0xd7, 0xcd, 0x71, 0x5, 0x75, - 0x47, 0x3, 0x28, 0xdf, 0x59, 0x68, 0x7c, 0x8f, 0x14, 0xe2, - 0x55, 0xc, 0xb6, 0x71, 0xbd, 0x9c, 0xb4, 0x38, 0x7a, 0x28, - 0xa2, 0xbf, 0x21, 0x3f, 0x8, 0x2f, 0xe8, 0x76, 0x4f, 0xa8, - 0x6a, 0xf6, 0xb6, 0xe8, 0x48, 0x69, 0x24, 0x55, 0x4, 0x1c, - 0x63, 0x26, 0xbe, 0x93, 0x82, 0x21, 0x4, 0x11, 0xc6, 0x9, - 0x21, 0x14, 0x2e, 0x4f, 0x5e, 0x2b, 0xc1, 0xbe, 0x1d, 0xe8, - 0xff, 00, 0xda, 0xbe, 0x21, 0x83, 0x70, 0xca, 0x21, 0xdc, - 0x73, 0xed, 0x5e, 0xfb, 0x5f, 0xa5, 0xf0, 0xad, 0x17, 0x1a, - 0x15, 0x2a, 0xb5, 0xbb, 0xfc, 0x8f, 0xd7, 0xb8, 0x2a, 0x83, - 0x86, 0x1a, 0xad, 0x66, 0xbe, 0x27, 0x6f, 0xb8, 0xc6, 0xf1, - 0x66, 0x92, 0x9a, 0xbe, 0x8d, 0x3c, 0x4c, 0x8a, 0xcd, 0xb4, - 0xe0, 0x91, 0x92, 0x3e, 0x95, 0xf3, 0xc5, 0xe5, 0xb3, 0x59, - 0xdd, 0x49, 0xb, 0x82, 0xac, 0xa7, 0xa1, 0xaf, 0xa8, 0x2b, - 0xcf, 0xbe, 0x21, 0xf8, 0x30, 0x5f, 0xc3, 0x25, 0xdd, 0xb8, - 0xa, 0xe0, 0x64, 0xf1, 0xc9, 0xad, 0xb8, 0x83, 0x2b, 0x96, - 0x2a, 0xb, 0x11, 0x4b, 0xe2, 0x8f, 0xe2, 0x8e, 0x8e, 0x29, - 0xc9, 0xa5, 0x8d, 0x82, 0xc5, 0x51, 0xf8, 0xa3, 0xba, 0xee, - 0x8f, 0x1a, 0xa2, 0xa4, 0xb8, 0xb6, 0x92, 0xd6, 0x42, 0x8e, - 0xac, 0x8, 0xee, 0x45, 0x47, 0x5f, 0x97, 0xec, 0xec, 0xcf, - 0xc6, 0x5a, 0x69, 0xd9, 0xee, 0x14, 0x51, 0x45, 0x20, 0x1f, - 0x1c, 0xd2, 0x44, 0xc1, 0x92, 0x47, 0x42, 0x3f, 0xba, 0xc4, - 0x57, 0x65, 0xe0, 0xef, 0x1f, 0x5d, 0xe9, 0xd7, 0x91, 0xc5, - 0x71, 0x26, 0xf8, 0x5b, 0x82, 0x64, 0x62, 0x7f, 0xad, 0x71, - 0x54, 0x57, 0x56, 0x1b, 0x15, 0x57, 0x9, 0x51, 0x54, 0xa5, - 0x2b, 0x58, 0xed, 0xc2, 0x63, 0x2b, 0xe0, 0x6a, 0x2a, 0xb4, - 0x64, 0xd5, 0x8f, 0xa7, 0x6d, 0x6f, 0x63, 0xbd, 0xb5, 0x59, - 0xa2, 0x6c, 0xab, 0xe, 0xb5, 0x8f, 0xab, 0xce, 0x2, 0xb7, - 0x4a, 0xe0, 0xfe, 0x15, 0x6b, 0x6c, 0x5e, 0x4b, 0x59, 0x1b, - 0x3c, 0x71, 0x9a, 0xec, 0x35, 0xab, 0x8e, 0xf, 0xbd, 0x7e, - 0xcd, 0x97, 0x63, 0x56, 0x3f, 0xf, 0x1a, 0xc9, 0x58, 0xfe, - 0x80, 0xca, 0x73, 0x5, 0x99, 0xe1, 0x63, 0x88, 0x4a, 0xcd, - 0xef, 0xea, 0x70, 0xfe, 0x25, 0xb9, 0x1, 0x1b, 0xa5, 0x79, - 0x1f, 0x8b, 0x2f, 0x6, 0x1f, 0xee, 0xd7, 0xa6, 0xf8, 0x9a, - 0xf3, 0xa, 0xdc, 0xd7, 0x8d, 0xf8, 0xcf, 0x52, 0xf2, 0xa2, - 0x95, 0x89, 0xe8, 0x9, 0xaf, 0x4c, 0xf6, 0xf, 0x94, 0xbf, - 0x68, 0x5f, 0x12, 0x23, 0x19, 0xa2, 0x51, 0x19, 0x23, 0xe5, - 0xe4, 0x73, 0xfc, 0xeb, 0xe4, 0x7f, 0x13, 0xdc, 0x82, 0x48, - 0xe3, 0xad, 0x7d, 0x1, 0xf1, 0xcb, 0xc4, 0x46, 0xef, 0x50, - 0x95, 0x37, 0x13, 0x96, 0x3d, 0x85, 0x7c, 0xe3, 0xe2, 0x1b, - 0x92, 0xce, 0x46, 0x7b, 0xd7, 0xc4, 0xce, 0x5e, 0xdb, 0x16, - 0xe4, 0x7e, 0x77, 0x52, 0x5e, 0xdf, 0x1d, 0x29, 0x76, 0x3a, - 0xaf, 0xd9, 0xbb, 0xc2, 0x57, 0x3e, 0x37, 0xf8, 0xe3, 0xe1, - 0x7b, 0x1b, 0x6f, 0x3d, 0x44, 0x17, 0x1f, 0x6b, 0x92, 0x4b, - 0x73, 0x86, 0x41, 0x1f, 0x2b, 0x93, 0xcf, 0xc, 0xfb, 0x10, - 0xfa, 0xef, 0xc7, 0x7a, 0xfd, 0xb6, 0xd1, 0x2d, 0x5, 0x8d, - 0x95, 0xb5, 0xb2, 0xbb, 0xc8, 0xb0, 0xc6, 0xb1, 0x87, 0x73, - 0x96, 0x20, 0xc, 0x64, 0x9f, 0x5a, 0xfc, 0xa2, 0xff, 00, - 0x82, 0x78, 0xfc, 0x3b, 0x1e, 0x2f, 0xf8, 0xc9, 0x3e, 0xb7, - 0x70, 0x9b, 0xad, 0xb4, 0x78, 0x80, 0x4c, 0x8c, 0x7e, 0xf1, - 0xf2, 0x72, 0xf, 0xfb, 0x88, 0xea, 0x47, 0xfd, 0x34, 0x15, - 0xfa, 0xc9, 0x64, 0x99, 0xc5, 0x7d, 0x5e, 0x1a, 0x36, 0xa6, - 0x7d, 0xbe, 0x12, 0x3c, 0xb4, 0xbd, 0x4d, 0xdb, 0x10, 0x4f, - 0xad, 0x6b, 0x28, 0x3b, 0x47, 0x5a, 0xca, 0xb0, 0x8f, 0xbd, - 0x6a, 0xaa, 0x7c, 0xa2, 0xba, 0xce, 0xd3, 0xb1, 0xa6, 0x1a, - 0x71, 0xe9, 0x4d, 0x3d, 0x28, 0x2, 0x27, 0x35, 0x5e, 0x46, - 0xe2, 0xa6, 0x73, 0x55, 0xa6, 0x3c, 0x1a, 00, 0xa5, 0x70, - 0xfd, 0x79, 0xaf, 0x97, 0x7e, 0x39, 0x4e, 0xdf, 0x13, 0x3e, - 0x3a, 0xf8, 0x3f, 0xc0, 0xd0, 0x93, 0x36, 0x9f, 0xa5, 0x2f, - 0xf6, 0xa6, 0xa2, 0xa8, 0xc5, 0xd3, 0xcc, 0x6e, 0x11, 0x5d, - 0x7a, 0x6, 0x8, 0x32, 0x9, 0xed, 0x3f, 0xbd, 0x7d, 0x3b, - 0x70, 0xdc, 0x1a, 0xf9, 0x7f, 0xe1, 0x48, 0x3e, 0x2e, 0xfd, - 0xa6, 0xbe, 0x22, 0x6b, 0x8a, 0x1a, 0x1, 0x69, 0x71, 0xfd, - 0x9c, 0x51, 0x7e, 0x75, 0x73, 0x16, 0x22, 0xdd, 0xb8, 0x6c, - 0xe7, 0xf7, 0x5d, 0xa, 0xb6, 0x3a, 0x6e, 0x38, 0x4, 0xf8, - 0x99, 0xa7, 0xef, 0x15, 0x2c, 0x37, 0xf3, 0xc9, 0x27, 0xe8, - 0xbd, 0xe7, 0xf9, 0x1f, 0x3b, 0x9c, 0xfe, 0xf6, 0x34, 0x70, - 0x9f, 0xf3, 0xf2, 0x69, 0x3f, 0xf0, 0xab, 0xc9, 0xfe, 0x48, - 0xfa, 0xaf, 0xc3, 0xb6, 0x2b, 0x69, 0x6b, 0x1a, 0x5, 0xa, - 0x15, 0x47, 00, 0x62, 0xb6, 0xaa, 0xb5, 0x84, 0x7e, 0x5c, - 0x23, 0xe9, 0x56, 0x6b, 0xdb, 0x3e, 0x88, 0x2b, 0x82, 0xf8, - 0xdf, 0xe0, 0x85, 0xf8, 0x89, 0xf0, 0xdb, 0x59, 0xd1, 0x8, - 0x57, 0xf3, 0xa1, 0x6f, 0x91, 0x9f, 0x68, 0x62, 0x7, 00, - 0x9c, 0x1e, 0x3f, 0xa, 0x97, 0xe3, 0x4f, 0x8c, 0xe6, 0xf0, - 0xf, 0xc3, 0x7d, 0x67, 0x59, 0xb6, 0x20, 0x5c, 0x41, 0x9, - 0xf2, 0xcf, 0x99, 0xb0, 0x83, 0x8e, 0xa0, 0xec, 0x6f, 0xe5, - 0x5f, 0x8c, 0xff, 00, 0xf0, 0xf2, 0xf, 0x8d, 0x72, 0xfc, - 0x48, 0xb8, 0xb4, 0xb6, 0xf1, 0x95, 0xc4, 0x76, 0xd, 0x78, - 0x62, 0x4b, 0x76, 0xb7, 0x82, 0x60, 0x14, 0x36, 0x31, 0x9f, - 0x2d, 0x72, 0x3f, 0x2a, 00, 0xf0, 0x2f, 0x8e, 0x5f, 0x2, - 0x7c, 0x41, 0xf0, 0xcf, 0xc6, 0x17, 0xb6, 0x6f, 0xa6, 0xde, - 0x4f, 0x18, 0x91, 0x88, 0x96, 0x38, 0x1d, 0x93, 0xaf, 0xae, - 0xd1, 0x5e, 0x6d, 0x17, 0x86, 0xb5, 0x79, 0xe4, 0x58, 0xe3, - 0xd2, 0xef, 0x5d, 0xd8, 0xe0, 0x1, 0x6e, 0xe4, 0xff, 00, - 0x2a, 0xfe, 0x86, 0x3e, 0x19, 0xfc, 0x32, 0xd0, 0xbe, 0x37, - 0x7c, 0x23, 0xd0, 0xb5, 0x7f, 0x1d, 0x69, 0x56, 0x9a, 0xce, - 0xa1, 0x7f, 0x8, 0x9d, 0xa7, 0x6b, 0x34, 0xb6, 0x72, 0x8, - 0xc7, 0x3b, 0x18, 0xe7, 0xa1, 0xe7, 0x8f, 0xa5, 0x6d, 0xe8, - 0x7f, 0xb2, 0x37, 0xc2, 0xbf, 0xf, 0xdf, 0x2d, 0xd5, 0xaf, - 0x85, 0x2c, 0xcc, 0x80, 0xe4, 0x9, 0x41, 0x71, 0xf9, 0x13, - 0x8a, 00, 0xfc, 0x89, 0xfd, 0x94, 0x3f, 0xe0, 0x9d, 0x9e, - 0x2e, 0xf8, 0xc3, 0xad, 0xd9, 0xea, 0x1a, 0xfd, 0xa4, 0x9a, - 0x6f, 0x87, 0x78, 0x79, 0xc, 0xd0, 0xba, 0xb3, 0xc, 0xf4, - 0xf9, 0x97, 0x15, 0xfb, 0x59, 0xf0, 0xc7, 0xe1, 0x8e, 0x85, - 0xf0, 0x9b, 0xc2, 0x96, 0x9a, 0x6, 0x81, 0x69, 0x1d, 0xad, - 0xa4, 0x8, 0x17, 0x29, 0x1a, 0xa1, 0x62, 0x7, 0x53, 0xb4, - 0xf, 0xf2, 0x6b, 0xa1, 0xd3, 0x34, 0x7b, 0x1d, 0x16, 0xdc, - 0x41, 0x61, 0x67, 0xd, 0x9c, 0x23, 0xa4, 0x70, 0x46, 0x10, - 0x7e, 0x42, 0xae, 0x50, 0x7, 0x2d, 0xf1, 0xb, 0x58, 0x1a, - 0x56, 0x85, 0x2e, 0x1b, 0xe, 0xc3, 0x3, 0xe6, 0xc1, 0xaf, - 0x3, 0x2c, 0x5d, 0x8b, 0x37, 0x2c, 0x4e, 0x49, 0xaf, 0x55, - 0xf8, 0xc7, 0x7a, 0x5, 0xbc, 0x56, 0xfb, 0x46, 0x49, 0xeb, - 0x9f, 0xe9, 0x8f, 0xeb, 0x5e, 0x53, 0x5f, 0x93, 0x71, 0x1d, - 0x77, 0x57, 0x1b, 0xc9, 0x7d, 0x22, 0x8f, 0xc3, 0xb8, 0xb3, - 0x12, 0xeb, 0x66, 0xe, 0x9d, 0xf4, 0x82, 0xb0, 0x55, 0xdd, - 0x1a, 0xc1, 0xb5, 0x3d, 0x52, 0xda, 0xd9, 0x41, 0x3b, 0xdc, - 0x67, 0x3, 0x3c, 0x55, 0x2a, 0xea, 0xbe, 0x1b, 0xd9, 0x9b, - 0xaf, 0x12, 0xc6, 0x43, 0x11, 0xb1, 0x73, 0xc0, 0xcf, 0xf5, - 0x15, 0xe0, 0x61, 0x29, 0x7b, 0x7a, 0xf0, 0xa7, 0xdd, 0xa3, - 0xe5, 0xf0, 0x54, 0x7e, 0xb1, 0x89, 0xa7, 0x47, 0xbb, 0x47, - 0xb8, 0xe9, 0x76, 0x8b, 0x63, 0x61, 0xc, 0x2a, 0x2, 0x85, - 0x51, 0xd0, 0x62, 0xad, 0xd2, 0x1, 0x80, 0x5, 0x2d, 0x7e, - 0xed, 0x18, 0xa8, 0x45, 0x45, 0x74, 0x3f, 0xa5, 0xa1, 0x15, - 0x8, 0xa8, 0xad, 0x91, 0xe1, 0x7f, 0x14, 0x60, 0x10, 0xf8, - 0x89, 0xf0, 00, 0xcf, 0x27, 0x9f, 0xd2, 0xb8, 0xda, 0xf4, - 0xaf, 0x8c, 0xb6, 0xc8, 0x97, 0x76, 0xf2, 0x2c, 0x61, 0x49, - 0x19, 0x67, 0x7, 0xaf, 0xe1, 0x8a, 0xf3, 0x5a, 0xfc, 0x5b, - 0x37, 0xa7, 0xec, 0xb1, 0xd5, 0x63, 0xe6, 0x7f, 0x3d, 0xe7, - 0xb4, 0xbd, 0x8e, 0x65, 0x5a, 0x3e, 0x77, 0xfb, 0xc2, 0xbb, - 0xdf, 0x84, 0x51, 0x6f, 0xd6, 0xe4, 0x60, 0x32, 0x76, 0xf5, - 0xc7, 0x41, 0x5c, 0x15, 0x76, 0x9f, 0xa, 0xa6, 0x91, 0x3c, - 0x44, 0x11, 0x24, 0x28, 0x1c, 0x60, 0x8c, 0x64, 0x11, 0xf9, - 0xd4, 0xe5, 0x2d, 0x47, 0x1d, 0x49, 0xbe, 0xe4, 0x64, 0x92, - 0x51, 0xcc, 0xa8, 0x37, 0xdc, 0xf7, 0x2a, 0x28, 0xa2, 0xbf, - 0x6d, 0x3f, 0xa2, 0x82, 0x8a, 0x28, 0xa0, 0xa, 0xda, 0x8d, - 0xd2, 0xd9, 0x59, 0x4b, 0x33, 0x90, 0xa1, 0x54, 0x9c, 0x93, - 0x5f, 0x37, 0x6b, 0x17, 0xed, 0xaa, 0x6a, 0x77, 0x37, 0x4d, - 0xff, 00, 0x2d, 0x1c, 0x91, 0xce, 0x70, 0x2b, 0xdd, 0x3e, - 0x21, 0x5e, 0x8b, 0x2f, 0xd, 0x5d, 0x12, 0xa1, 0x8b, 0x29, - 0x18, 0x27, 0x1f, 0xd0, 0xd7, 0xcf, 0xe3, 0xa5, 0x7e, 0x6d, - 0xc5, 0x35, 0xdb, 0xab, 0x4e, 0x82, 0x7a, 0x25, 0x73, 0xf2, - 0x3e, 0x34, 0xc4, 0xb9, 0x56, 0xa5, 0x87, 0x4f, 0x44, 0xaf, - 0xf7, 0x85, 0x7, 0xa7, 0x1d, 0x4f, 0x2, 0x8a, 0x9a, 0xca, - 0x23, 0x71, 0x7b, 0x4, 0x63, 0xab, 0x38, 0xf7, 0xaf, 0x86, - 0x49, 0xb7, 0x64, 0x7e, 0x6e, 0x93, 0x93, 0x51, 0x5d, 0x4f, - 0x6d, 0xf8, 0x61, 0xa3, 0x8d, 0x3b, 0x43, 0x59, 0x19, 0x48, - 0x79, 0x3d, 0x45, 0x76, 0x75, 0x9d, 0xa0, 0x5b, 0xfd, 0x9b, - 0x48, 0xb6, 0x4c, 0xe7, 0xe5, 0xcf, 0x4c, 0x56, 0x8d, 0x7e, - 0xeb, 0x82, 0xa2, 0xb0, 0xf8, 0x68, 0x53, 0x5d, 0x12, 0x3f, - 0xa4, 0xf2, 0xec, 0x3a, 0xc2, 0xe1, 0x29, 0xd2, 0x8a, 0xd9, - 0x20, 0xa4, 0x24, 0x28, 0x24, 0xf0, 0x7, 0x34, 0xb4, 0x8c, - 0x3, 0x29, 0x7, 0xa1, 0x15, 0xda, 0x7a, 0x27, 0xcf, 0x7e, - 0x3b, 0xbc, 0x6b, 0xcf, 0x12, 0x5c, 0xbb, 0x1c, 0x9d, 0xde, - 0xb9, 0xc0, 0xf4, 0xae, 0x7a, 0xb7, 0x7c, 0x6a, 0xa0, 0x78, - 0x8e, 0xec, 0xaa, 0x8, 0xc1, 0x63, 0x80, 0xe, 0x6b, 0xa, - 0xbf, 0x8, 0xc6, 0x36, 0xf1, 0x35, 0x1b, 0xee, 0xcf, 0xe6, - 0x8c, 0x7b, 0x72, 0xc5, 0xd5, 0x72, 0x7a, 0xf3, 0x3f, 0xcc, - 0x2b, 0xb9, 0xf8, 0x4d, 0x66, 0xb3, 0x6b, 0x8d, 0x2b, 0xf, - 0x98, 0xc, 0x2f, 0x1d, 0x2b, 0x86, 0xae, 0xd7, 0xe1, 0x5d, - 0xeb, 0x5b, 0x78, 0x80, 0x26, 0xfc, 0x9, 0x3e, 0x50, 0xb8, - 0xcd, 0x74, 0xe5, 0x4e, 0x2b, 0x1d, 0x4b, 0x9b, 0x6b, 0x9d, - 0x99, 0x23, 0x8a, 0xcc, 0x68, 0xb9, 0xed, 0x73, 0xdc, 0x68, - 0xa2, 0x8a, 0xfd, 0xb8, 0xfe, 0x8b, 0xa, 0x28, 0xa2, 0x80, - 0x29, 0x6b, 0x1a, 0x82, 0x69, 0x7a, 0x74, 0xf7, 0x32, 0x30, - 0x50, 0x8b, 0xdc, 0xe3, 0x9a, 0xf9, 0xdb, 0x5e, 0xd4, 0x9b, - 0x56, 0xd5, 0xae, 0x2e, 0x18, 0x92, 0x9, 0xc2, 0xe4, 0xe7, - 0x8a, 0xf4, 0x7f, 0x8b, 0x5e, 0x26, 0xb, 0xf, 0xf6, 0x64, - 0x47, 0xe6, 0xc8, 0x2f, 0x83, 0xff, 00, 0xd6, 0xaf, 0x28, - 0xaf, 0xcb, 0xb8, 0x93, 0x1d, 0xed, 0xeb, 0xac, 0x3c, 0x1e, - 0x91, 0xdf, 0xd4, 0xfc, 0x67, 0x8b, 0xb3, 0x2f, 0xac, 0xe2, - 0x16, 0x16, 0x9b, 0xf7, 0x61, 0xbf, 0xaf, 0xfc, 00, 0xa2, - 0x8a, 0x92, 0x8, 0xd, 0xcc, 0xc9, 0x12, 0x8c, 0x96, 0x20, - 0x71, 0x5f, 0x1d, 0x66, 0xf4, 0x47, 0xc0, 0x24, 0xde, 0x88, - 0xf4, 0xef, 0x84, 0x1a, 0x21, 0x12, 0x49, 0x7d, 0x22, 0x91, - 0x81, 0x85, 0x24, 0x7a, 0xd7, 0xaa, 0x56, 0x3f, 0x85, 0xb4, - 0x95, 0xd2, 0x34, 0x78, 0x22, 0x3, 0xe6, 0x2a, 0x9, 0xe3, - 0x1d, 0xbe, 0xa6, 0xb6, 0x2b, 0xf6, 0xcc, 0xaf, 0xb, 0xf5, - 0x3c, 0x24, 0x29, 0x75, 0xdd, 0xfa, 0x9f, 0xd1, 0x59, 0x36, - 0xb, 0xea, 0x18, 0x1a, 0x74, 0x7a, 0xee, 0xfd, 0x58, 0x52, - 0x11, 0x91, 0xcd, 0x2d, 0x15, 0xeb, 0x1e, 0xd9, 0x81, 0xaf, - 0x78, 0x42, 0xcf, 0x5a, 0x89, 0xf7, 0x26, 0xc7, 0x3d, 0xd4, - 0x1, 0x5e, 0x5d, 0xe2, 0x2f, 0x86, 0xf7, 0x1a, 0x6e, 0xe7, - 0xb7, 0x8d, 0xdd, 0x7f, 0x1f, 0xf0, 0xaf, 0x70, 0xa6, 0x49, - 0x12, 0x4c, 0x85, 0x5d, 0x43, 0x29, 0xec, 0x6b, 0xc2, 0xc7, - 0x64, 0xf8, 0x6c, 0x6a, 0xbc, 0x95, 0xa5, 0xdc, 0xf9, 0xac, - 0xcb, 0x21, 0xc2, 0x66, 0x29, 0xb9, 0x46, 0xd2, 0xee, 0x8f, - 0x98, 0x6e, 0x2d, 0xa5, 0xb5, 0x72, 0xb2, 0xae, 0xc6, 0xf4, - 0xa8, 0xab, 0xde, 0xbc, 0x53, 0xe0, 0x4d, 0x37, 0x53, 0xb1, - 0x99, 0xe3, 0xb5, 0x44, 0xb8, 0x3, 0x21, 0xc1, 0x20, 0xd7, - 0x86, 0x5f, 0x5a, 0xb5, 0x95, 0xd4, 0x90, 0xb0, 0x39, 0x46, - 0x23, 0x9a, 0xfc, 0xcf, 0x32, 0xca, 0xea, 0xe5, 0xb3, 0x4a, - 0x6e, 0xf1, 0x7b, 0x33, 0xf1, 0xfc, 0xdf, 0x26, 0xad, 0x94, - 0x54, 0x4a, 0x6e, 0xf1, 0x7b, 0x32, 0xa, 0x28, 0xa0, 0xf4, - 0xaf, 0x14, 0xf9, 0xe6, 0x69, 0xf8, 0x56, 0x63, 0x1e, 0xbf, - 0x6, 0x9, 0x4, 0x9c, 0x1c, 0x7a, 0x57, 0xab, 0xea, 0xb7, - 0x20, 0xc4, 0x8, 0x3c, 0x1, 0x5e, 0x35, 0xa2, 0x99, 0x3f, - 0xb6, 0x21, 0xf2, 0xdb, 0x6b, 0x6e, 0x3, 0x35, 0xea, 0x7a, - 0xa4, 0x9e, 0x5d, 0xb0, 0xd, 0xc9, 0xb, 0xc9, 0xaf, 0xd2, - 0x78, 0x51, 0xbf, 0x63, 0x51, 0x79, 0x9f, 0xae, 0xf0, 0x4b, - 0x7f, 0x57, 0xaa, 0xbc, 0xce, 0x1f, 0xc4, 0xf7, 0x78, 0x46, - 0xe4, 0x57, 0x86, 0x7c, 0x46, 0xd5, 0xc5, 0xad, 0x85, 0xcb, - 0xee, 0x3, 0xa, 0x7a, 0x9a, 0xf5, 0xff, 00, 0x15, 0x5c, - 0x1, 0x1b, 0x71, 0xfa, 0xd7, 0xce, 0x5f, 0x19, 0x75, 0x34, - 0xb6, 0xd1, 0xa6, 0xca, 0xe7, 0x71, 0x38, 0xe6, 0xbe, 0xd2, - 0xb4, 0xb9, 0x29, 0xca, 0x47, 0xe8, 0x55, 0xe7, 0xec, 0xe9, - 0x4a, 0x5d, 0x91, 0xf1, 0xdf, 0xc5, 0x7d, 0x68, 0xde, 0xea, - 0xd3, 0x7c, 0xc0, 0x85, 0x27, 0xa5, 0x78, 0x9e, 0xb5, 0x3e, - 0xf9, 0x1b, 0x9a, 0xf4, 0x3f, 0x1a, 0xde, 0x2c, 0xd7, 0xb7, - 0x2e, 0x6, 0x1, 0x63, 0xde, 0xbc, 0xbf, 0x54, 0x90, 0x12, - 0xe6, 0xbe, 0x37, 0x8, 0xb9, 0xe6, 0xe6, 0xcf, 0xcf, 0xf0, - 0x2b, 0xda, 0x54, 0x94, 0xdf, 0x56, 0x7d, 0xfd, 0xff, 00, - 0x4, 0xc6, 0xf8, 0x7f, 0xe4, 0x68, 0xba, 0xdf, 0x8a, 0xa6, - 0x88, 0x87, 0xbc, 0x9b, 0xcb, 0x8d, 0xc9, 0x38, 0x28, 0x99, - 0x45, 0xc0, 0x23, 0xfb, 0xcd, 0x38, 0x24, 0x1e, 0xc3, 0xd2, - 0xbf, 0x41, 0x2c, 0x93, 0x81, 0x5f, 0x3a, 0x7e, 0xc4, 0xde, - 0xf, 0xb8, 0xf0, 0x7f, 0xc0, 0x6f, 0xe, 0xdb, 0x5c, 0x30, - 0xf3, 0x25, 0x85, 0x66, 0x2a, 0x23, 0x55, 0xda, 0x5f, 0xe7, - 0x20, 0xed, 0xeb, 0x82, 0xe5, 0x73, 0xdf, 0x6e, 0x79, 0x24, - 0xd7, 0xd2, 0x16, 0x6b, 0xd2, 0xbe, 0xd2, 0x9a, 0xe5, 0x82, - 0x47, 0xe8, 0x54, 0xa3, 0xcb, 0x4, 0x8d, 0xab, 0x24, 0xad, - 0x54, 0x41, 0xb4, 0x56, 0x75, 0x9a, 0x91, 0x8a, 0xd5, 0x55, - 0xc2, 0x8a, 0xd0, 0xd4, 0xea, 0x1a, 0x9a, 0xdd, 0x29, 0xc7, - 0xad, 0x46, 0xe6, 0x80, 0x21, 0x73, 0x55, 0x27, 0x3c, 0x55, - 0x97, 0x35, 0x4a, 0xe1, 0xa8, 0x3, 0x9e, 0xf1, 0x7e, 0xab, - 0x6f, 0xa3, 0x78, 0x73, 0x54, 0xbe, 0xba, 0xbb, 0x7b, 0x1b, - 0x7b, 0x7b, 0x69, 0x25, 0x7b, 0x98, 0xca, 0x6, 0x88, 0x5, - 0x27, 0x72, 0xef, 0x5, 0x72, 0x3b, 0x6e, 0xc8, 0xcf, 0x5a, - 0xf1, 0x3f, 0xd8, 0xb3, 0xc3, 0x77, 0x5a, 0x67, 0xc3, 0xa8, - 0xae, 0x6e, 0x6d, 0xa3, 0x85, 0xaf, 0x26, 0x69, 0xd4, 0x80, - 0xe1, 0x99, 0x4f, 00, 0x9c, 0xf1, 0xdb, 0xb7, 0x6c, 0x56, - 0xdf, 0xed, 0x5f, 0xe2, 0x58, 0xb4, 0xaf, 0x85, 0x37, 0x7a, - 0x50, 0x53, 0x2d, 0xfe, 0xbf, 0x3c, 0x7a, 0x65, 0xa4, 0x41, - 0x8a, 0xe6, 0x47, 0x60, 0x49, 0xc8, 0xe3, 00, 0x29, 0x38, - 0x24, 0x3, 0xd3, 0xbd, 0x7a, 0x3f, 0xc1, 0xef, 0xd, 0xcb, - 0xe1, 0xdf, 0x8, 0x69, 0x36, 0x12, 0xb8, 0x77, 0xb7, 0xb7, - 0x48, 0xd9, 0x82, 0x5, 0x4, 0x80, 0x3b, 0xa, 0xf1, 0xa4, - 0x95, 0x6c, 0xc6, 0x3f, 0xf4, 0xee, 0x2f, 0xef, 0x93, 0xff, - 00, 0x24, 0x78, 0x12, 0x4a, 0xbe, 0x6d, 0x1e, 0xd4, 0xa0, - 0xfe, 0xf9, 0xbf, 0xf2, 0x89, 0xe8, 0x88, 0x36, 0xa0, 0x1e, - 0xd4, 0xea, 0x28, 0xaf, 0x64, 0xf7, 0xcf, 0x16, 0xfd, 0xae, - 0xfc, 0x29, 0x17, 0x8a, 0xfe, 0x6, 0xf8, 0x8a, 0x9, 0x67, - 0xb9, 0x88, 0xc7, 0x6e, 0xed, 0x18, 0xb6, 0x29, 0xb8, 0xb6, - 0x38, 0xfb, 0xca, 0x41, 0xff, 00, 0xf5, 0xd7, 0xf3, 0xe9, - 0xe1, 0xaf, 0xb4, 0x78, 0x37, 0xe2, 0x55, 0xba, 0x34, 0x69, - 0x24, 0xd6, 0xd7, 0x61, 0x3f, 0xd2, 0x55, 0x82, 0x9c, 0x37, - 0x39, 0xc1, 0x7, 0x1c, 0x57, 0xed, 0x27, 0xfc, 0x14, 0xb, - 0xf6, 0xc7, 0x83, 0xe0, 0x16, 0x8f, 0x63, 0xa0, 0xd9, 0x41, - 0x6f, 0x79, 0xa8, 0xea, 0x85, 0x95, 0xe3, 0x9c, 0x64, 0x2c, - 0x60, 0x72, 0x70, 0x50, 0x8e, 0xf8, 0xeb, 0x5f, 0x8a, 0xdf, - 0x11, 0xbc, 0x66, 0xbe, 0x2d, 0xf1, 0x75, 0xce, 0xb1, 0x6b, - 0xa, 0xd9, 0xb4, 0xaf, 0xbc, 0x8, 0x8f, 0x43, 0xed, 0x40, - 0x1f, 0xd1, 0xcf, 0xc0, 0xbf, 0x16, 0xdb, 0xf8, 0xbf, 0xe1, - 0x77, 0x87, 0xaf, 0x21, 0x11, 0x46, 0x3e, 0xc9, 0x1a, 0x6c, - 0x8b, 0x80, 0x36, 0xa8, 0x1c, 0x2, 0x49, 0x3, 0xeb, 0x5e, - 0x81, 0x5f, 0xcf, 0xb7, 0xc0, 0xef, 0xdb, 0xcf, 0xc7, 0x3f, - 0x7, 0x2c, 0xe3, 0xb4, 0x5b, 0xdb, 0xbd, 0x42, 0xd9, 0x6, - 0x16, 0x37, 0x98, 0x60, 0xf, 0x4e, 0x54, 0xd7, 0xbd, 0x58, - 0x7f, 0xc1, 0x5e, 0x3c, 0x40, 0x98, 0xf3, 0xf4, 0xb9, 0xfd, - 0xff, 00, 0x7e, 0x3f, 0xf8, 0x9a, 00, 0xfd, 0x8f, 0xa4, - 0x27, 00, 0x93, 0xc0, 0xaf, 0x87, 0x3f, 0x63, 0xf, 0xdb, - 0x57, 0x5c, 0xfd, 0xa5, 0x3c, 0x57, 0xfd, 0x9e, 0xba, 0x74, - 0xb0, 0xdb, 0x20, 0x2f, 0x24, 0x92, 0x49, 0xb8, 0x2a, 0x8e, - 0xa7, 0x90, 0x2b, 0xed, 0xad, 0x4a, 0xe5, 0x6d, 0x2c, 0x66, - 0x91, 0xf8, 0x50, 0xa6, 0xa6, 0x52, 0x51, 0x4e, 0x4c, 0x89, - 0xc9, 0x42, 0x2e, 0x4f, 0xa1, 0xe2, 0x3f, 0x13, 0x6f, 0x92, - 0xf3, 0xc4, 0x25, 0x52, 0x46, 0x7d, 0x83, 0x9c, 0xe3, 0x3, - 0xf2, 0xae, 0x46, 0xaf, 0x6b, 0x77, 0x6b, 0x7d, 0xab, 0x5d, - 0x4c, 0xa3, 0xa, 0xce, 0x71, 0xce, 0x6a, 0x8d, 0x7e, 0x15, - 0x8b, 0xab, 0xed, 0xf1, 0x13, 0xa9, 0xdd, 0xb3, 0xf9, 0xaf, - 0x1d, 0x5f, 0xeb, 0x38, 0xaa, 0x95, 0xbb, 0xb6, 0x15, 0xea, - 0x3f, 0x6, 0xec, 0x24, 0x2, 0xe2, 0xe4, 0xc6, 0xa1, 0x9, - 0xe1, 0xce, 0x72, 0x7f, 0xa5, 0x79, 0x76, 0x33, 0xc0, 0xea, - 0x6b, 0xde, 0xbe, 0x1c, 0x69, 0x92, 0x69, 0xbe, 0x1f, 0x84, - 0x48, 0x79, 0x61, 0x9c, 0x60, 0x57, 0xb9, 0xc3, 0xb4, 0x3d, - 0xae, 0x35, 0x4f, 0xa4, 0x55, 0xcf, 0xa4, 0xe1, 0x4c, 0x33, - 0xaf, 0x98, 0xa9, 0xf4, 0x82, 0x6c, 0xeb, 0x28, 0xa2, 0x8a, - 0xfd, 0x6c, 0xfd, 0xcc, 0xf2, 0x8f, 0x8c, 0xd1, 0x47, 0xe7, - 0x5a, 0xb0, 0x76, 0xf3, 0x3a, 0x95, 0xc8, 0xc7, 0xb7, 0xbd, - 0x79, 0x85, 0x7a, 0x87, 0xc6, 0x51, 0x18, 0x7b, 0x7e, 0x3f, - 0x7a, 0x79, 0x27, 0x27, 0x81, 0x5e, 0x5f, 0x5f, 0x8d, 0xe7, - 0xbf, 0xf2, 0x30, 0xa8, 0x7e, 0x3, 0xc4, 0xba, 0x66, 0x95, - 0x7e, 0x5f, 0x90, 0x57, 0x59, 0xf0, 0xd2, 0x79, 0xa2, 0xf1, - 0x2c, 0x4b, 0x8, 0x53, 0xbf, 0x83, 0xbb, 0xb0, 0xae, 0x4e, - 0xba, 0x6f, 0x87, 0x9e, 0x6f, 0xfc, 0x24, 0x90, 0x79, 0x4d, - 0xb5, 0x8f, 0xcb, 0xd2, 0xbc, 0xfc, 0xbd, 0xb8, 0xe2, 0xe9, - 0x35, 0xdd, 0x1e, 0x66, 0x56, 0xdc, 0x71, 0xd4, 0x5a, 0xfe, - 0x64, 0x7d, 0x1, 0x45, 0x25, 0x2d, 0x7e, 0xe8, 0x7f, 0x48, - 0x85, 0x14, 0x51, 0x40, 0x1e, 0x65, 0xf1, 0x9a, 0xf2, 0x35, - 0xb5, 0xb6, 0xb6, 0xf3, 0x1b, 0xcc, 0x63, 0xbb, 0x60, 0xc6, - 0x31, 0xef, 0xde, 0xbc, 0x9a, 0xbb, 0x7f, 0x8b, 0x57, 0xd1, - 0xdd, 0x78, 0x89, 0x23, 0x40, 0x73, 0x14, 0x7f, 0x31, 0x2c, - 0x48, 0xe4, 0xf4, 0xc7, 0x6a, 0xe2, 0x2b, 0xf1, 0x8c, 0xea, - 0xb7, 0xb6, 0xc7, 0xd4, 0x7d, 0xb4, 0xfb, 0x8f, 0xe7, 0xde, - 0x21, 0xaf, 0xf5, 0x8c, 0xce, 0xac, 0x96, 0xc9, 0xdb, 0xee, - 0xa, 0xe8, 0x3c, 0xd, 0x66, 0xf7, 0x7e, 0x21, 0x87, 0x64, - 0x61, 0xc2, 0xf5, 0xce, 0x78, 0xfc, 0xab, 0x9f, 0xaf, 0x45, - 0xf8, 0x3f, 0xa7, 0xc9, 0x2d, 0xec, 0xb7, 0x3c, 0x4, 0x53, - 0x8e, 0x80, 0xf4, 0xae, 0x7c, 0xb2, 0x8f, 0xb7, 0xc6, 0x53, - 0x87, 0x9f, 0xe4, 0x72, 0x64, 0xf8, 0x77, 0x89, 0xc7, 0xd2, - 0xa7, 0xe7, 0xf9, 0x1e, 0xbf, 0x1a, 0xed, 0x45, 0x5f, 0x40, - 0x7, 0x14, 0xea, 0x28, 0xaf, 0xdb, 0xcf, 0xe8, 0xdd, 0x82, - 0x91, 0x86, 0xe5, 0x23, 0xa6, 0x46, 0x29, 0x68, 0xa0, 0xf, - 0x9f, 0xbe, 0x20, 0xda, 0x25, 0xaf, 0x89, 0x27, 0xd8, 0xcc, - 0xc0, 0xff, 00, 0x7b, 0x1f, 0xa5, 0x73, 0x55, 0xe8, 0x5f, - 0x17, 0x74, 0xe8, 0xe0, 0xd5, 0x23, 0x9d, 0x13, 0x69, 0x61, - 0xc9, 0xdd, 0x9f, 0xc7, 0xda, 0xbc, 0xf6, 0xbf, 0x10, 0xcc, - 0xe9, 0x7b, 0x1c, 0x65, 0x58, 0x79, 0x9f, 0xce, 0x59, 0xc5, - 0x17, 0x87, 0xcc, 0x2b, 0x41, 0xf7, 0xfc, 0xc2, 0xb5, 0xbc, - 0x2f, 0xaa, 0x3e, 0x8f, 0xac, 0xc1, 0x70, 0x9b, 0x73, 0x9c, - 0x12, 0xde, 0x9d, 0xeb, 0x26, 0x94, 0x12, 0xe, 0x41, 0xc1, - 0x15, 0xe7, 0xd3, 0x9b, 0xa5, 0x35, 0x52, 0x3b, 0xad, 0x4f, - 0x2e, 0x95, 0x49, 0x51, 0xa9, 0x1a, 0xb0, 0xdd, 0x3b, 0x9f, - 0x4f, 0x59, 0x5c, 0xad, 0xe5, 0xa4, 0x33, 0xaf, 0x49, 0x14, - 0x37, 0xe6, 0x2a, 0x7a, 0xf1, 0xaf, 0x8, 0x7c, 0x47, 0xb8, - 0xb0, 0x8d, 0x2d, 0xae, 0x8, 0x68, 0xd4, 0x60, 0x16, 0xc7, - 0x1f, 0xa5, 0x7a, 0xc, 0x3e, 0x3a, 0xd3, 0x5e, 0x20, 0xc6, - 0x65, 0x7, 0x1d, 0x39, 0xff, 00, 0xa, 0xfd, 0x8b, 0x7, - 0x9b, 0xe1, 0x71, 0x54, 0xd4, 0xb9, 0xac, 0xfa, 0xdc, 0xfd, - 0xf7, 0x2f, 0xcf, 0x70, 0x78, 0xda, 0x4a, 0x5c, 0xf6, 0x7d, - 0x6f, 0xa1, 0xd2, 0x57, 0x3f, 0xe2, 0xdf, 0x14, 0xda, 0xf8, - 0x7a, 0xc2, 0x52, 0xf2, 0x8f, 0x3c, 0xa9, 0xda, 0x8a, 0x46, - 0x7f, 0x23, 0x58, 0x1a, 0xcf, 0xc5, 0x6b, 0x4b, 0x34, 0x75, - 0x86, 0x3f, 0x31, 0x8f, 0x1, 0x83, 0x1f, 0xf0, 0xaf, 0x28, - 0xd6, 0xb5, 0xab, 0x8d, 0x6e, 0xf1, 0xe7, 0x9e, 0x46, 0x6c, - 0x93, 0xb5, 0x59, 0xb3, 0x81, 0xe9, 0x5e, 0x5e, 0x69, 0x9f, - 0xd1, 0xa1, 0x4d, 0xd3, 0xc3, 0x3e, 0x69, 0xbf, 0xc0, 0xf1, - 0x73, 0x9e, 0x27, 0xa1, 0x86, 0xa4, 0xe9, 0xe1, 0x25, 0xcd, - 0x37, 0xf7, 0x22, 0xbe, 0xa1, 0x7b, 0x26, 0xa3, 0x79, 0x2d, - 0xc4, 0x84, 0x96, 0x73, 0x9e, 0x6a, 0xbd, 0x14, 0x57, 0xe5, - 0xed, 0xb9, 0x37, 0x27, 0xbb, 0x3f, 0x19, 0x94, 0x9c, 0x9b, - 0x94, 0x9e, 0xac, 0x2b, 0xb9, 0xf8, 0x5d, 0xe1, 0xd7, 0xd4, - 0xb5, 0x36, 0xba, 0x78, 0xf3, 0xc, 0x44, 0x10, 0xcd, 0xeb, - 0x5c, 0x8e, 0x99, 0xa6, 0x4f, 0xab, 0xde, 0x25, 0xb5, 0xba, - 0x96, 0x76, 0x3f, 0x95, 0x7d, 0x5, 0xe1, 0x6d, 0x8, 0x68, - 0x3a, 0x54, 0x70, 0x7c, 0xbe, 0x61, 00, 0xb1, 0xa, 0x7, - 0x3f, 0x85, 0x7d, 0x3e, 0x41, 0x97, 0xbc, 0x5e, 0x21, 0x55, - 0x9a, 0xf7, 0x23, 0xf8, 0xb3, 0xec, 0xb8, 0x63, 0x2b, 0x78, - 0xdc, 0x52, 0xaf, 0x35, 0xee, 0x43, 0x5f, 0x57, 0xd8, 0xd9, - 0xa2, 0x8a, 0xf3, 0x1f, 0x1d, 0xf8, 0xee, 0x5d, 0x23, 0x5d, - 0x8e, 0x1b, 0x59, 0x1f, 0x9, 0xc3, 0x80, 0x78, 0xfc, 0xab, - 0xf4, 0xbc, 0x6e, 0x36, 0x96, 0x2, 0x97, 0xb5, 0xab, 0xb5, - 0xec, 0x7e, 0xbd, 0x98, 0xe6, 0x14, 0x72, 0xda, 0x3e, 0xda, - 0xb6, 0xd7, 0xb1, 0xe9, 0xd4, 0x57, 0x25, 0xe1, 0xdf, 0x1e, - 0xdb, 0xea, 0xc8, 0x8b, 0x2e, 0x23, 0x7c, 0x72, 0x49, 0xae, - 0xa2, 0x3b, 0xa8, 0xa6, 0x1f, 0x24, 0x8a, 0xdf, 0x43, 0x5a, - 0xd0, 0xc5, 0x51, 0xc4, 0xc7, 0x9e, 0x94, 0xae, 0x8d, 0xf0, - 0xd8, 0xca, 0x18, 0xb8, 0x29, 0xd1, 0x95, 0xd1, 0x2d, 0x14, - 0x51, 0x5d, 0x47, 0x68, 0xc9, 0x71, 0xe5, 0x3e, 0x4e, 0x6, - 0xe, 0x4d, 0x7c, 0xe9, 0xe2, 0xef, 0x27, 0xfe, 0x12, 0x1b, - 0xbf, 0x21, 0x8b, 0x20, 0x6c, 0x64, 0xfa, 0xd7, 0xb7, 0xf8, - 0xbf, 0xc4, 0x96, 0xba, 0x16, 0x97, 0x39, 0x95, 0xf3, 0x2b, - 0x2e, 0x11, 0x1, 0xc1, 0xc9, 0xfa, 0x57, 0xcf, 0x97, 0x13, - 0x1b, 0x9b, 0x89, 0x65, 0x6c, 0xe5, 0xd8, 0xb7, 0x27, 0x35, - 0xf9, 0xe7, 0x14, 0xe2, 0x60, 0xfd, 0x9d, 0x8, 0xbb, 0xb5, - 0xab, 0xf2, 0x3f, 0x2a, 0xe3, 0x4c, 0x5d, 0x39, 0x7b, 0x2c, - 0x34, 0x5a, 0x72, 0x5a, 0xbf, 0x22, 0x3a, 0x46, 0x38, 0x53, - 0x4b, 0x51, 0xcc, 0x70, 0x86, 0xbf, 0x3d, 0x6c, 0xfc, 0xb1, - 0xbd, 0xd, 0x5f, 0x5, 0x42, 0xf2, 0xeb, 0xb1, 0xb2, 0x28, - 0x21, 0x79, 0x24, 0xf6, 0xae, 0xeb, 0x5e, 0x90, 0x4, 0x3c, - 0x9a, 0xc5, 0xf8, 0x77, 0xa7, 0x34, 0x51, 0xcd, 0x72, 0xe0, - 00, 0x46, 0x6, 0x54, 0x7f, 0x3a, 0xb7, 0xe2, 0x29, 0xd7, - 0x2c, 0x7, 0xf3, 0xaf, 0xd7, 0x78, 0x76, 0x83, 0xa3, 0x82, - 0x52, 0x7f, 0x69, 0xdc, 0xfd, 0xdb, 0x85, 0x30, 0xcf, 0xf, - 0x97, 0xa9, 0x4b, 0x79, 0x3b, 0x9e, 0x75, 0xe2, 0xf9, 0x94, - 0x44, 0xdf, 0x31, 0xaf, 0x93, 0xff, 00, 0x68, 0x2d, 0x4a, - 0x15, 0xb5, 0x64, 0x32, 0xb6, 0x42, 0x9e, 0x38, 0xc5, 0x7d, - 0x37, 0xe3, 0x3b, 0x94, 0x11, 0xb0, 0xf7, 0xfe, 0xf1, 0xaf, - 0x8a, 0xff, 00, 0x68, 0x6d, 0x62, 0x7, 0x9a, 0x58, 0xd7, - 0x3b, 0x98, 0xe0, 0x7e, 0xf0, 0xd7, 0xa9, 0x99, 0x54, 0xe4, - 0xc3, 0xbf, 0x33, 0xd9, 0xcd, 0xaa, 0x7b, 0x3c, 0x2c, 0xbc, - 0xcf, 0x9a, 0x3c, 0x4d, 0x32, 0x92, 0xff, 00, 0x31, 0xe6, - 0xb9, 0x8d, 0x3, 0x49, 0x9f, 0xc4, 0x1e, 0x2a, 0xd2, 0x34, - 0xcb, 0x58, 0x92, 0xe2, 0xe2, 0xee, 0xf2, 0x28, 0x52, 0x29, - 0x54, 0xb4, 0x6c, 0x4b, 0x81, 0xf3, 0x85, 0xe7, 0x6f, 0xae, - 0x3b, 0x66, 0xb5, 0xbc, 0x47, 0x3a, 0x96, 0x20, 0x75, 0xfa, - 0xd7, 0x75, 0xfb, 0x23, 0xf8, 0x46, 0xeb, 0xc5, 0xdf, 0x1e, - 0x34, 0x2f, 0xb3, 0xa9, 0x29, 0x62, 0x5a, 0xe6, 0x47, 0x30, - 0xf9, 0xaa, 0x38, 0xd8, 0xb9, 0x7, 0x81, 0xcb, 0x83, 0xf8, - 0x57, 0x8b, 0x97, 0xd3, 0xd1, 0x23, 0xe7, 0xf2, 0xba, 0x7a, - 0x45, 0x77, 0x3f, 0x5d, 0xfc, 0x5, 0x6c, 0xf6, 0xbe, 0x18, - 0xd3, 0x22, 0x74, 0x11, 0xb0, 0x81, 0x49, 0x50, 0x31, 0x8c, - 0xf3, 0xcf, 0xbf, 0x3c, 0xd7, 0x6d, 0x67, 0x9c, 0x8a, 0xc4, - 0xb0, 0x8f, 0x6a, 0xaa, 0xe7, 0x38, 00, 0x67, 0x15, 0xd0, - 0x59, 0xaf, 0x41, 0x5f, 0x5c, 0x7d, 0xc9, 0xb3, 0x67, 0xda, - 0xb5, 0x17, 0xee, 0x8a, 0xcf, 0xb2, 0x5c, 0x63, 0xfc, 0x2b, - 0x4d, 0x57, 0xe5, 0x1c, 0x50, 0x7, 0x43, 0x51, 0x39, 0xa9, - 0xf, 0x4a, 0x85, 0xcd, 00, 0x43, 0x21, 0xeb, 0x54, 0x2e, - 0x1b, 0xad, 0x5d, 0x91, 0xb0, 0xd, 0x67, 0xdc, 0x37, 0x5a, - 00, 0xf9, 0x5f, 0xe3, 0xfd, 0xe4, 0x9e, 0x39, 0xf8, 0xff, - 00, 0xe0, 0x2f, 0x8, 0xe9, 0xfb, 0xe3, 0x9f, 0x4b, 0x61, - 0xa8, 0xcf, 0x39, 0x24, 0xaa, 0xee, 0x60, 0x54, 0x5, 0xc9, - 0x52, 0x40, 0x8c, 0x9f, 0x99, 0x33, 0xf3, 0xe, 0x70, 0x4d, - 0x7d, 0x6d, 0xa1, 0x5b, 0x18, 0x2d, 0x54, 0x67, 0xa0, 0xaf, - 0x90, 0xbc, 0x1b, 0x13, 0x7c, 0x52, 0xfd, 0xaa, 0x7c, 0x49, - 0xaf, 0x3c, 0x46, 0x7b, 0x1d, 0xb, 0x1a, 0x6d, 0xbc, 0x91, - 0x8d, 0x81, 0x19, 0x32, 0xa5, 0x5d, 0x64, 0xc3, 0x86, 0xc, - 0x65, 0xce, 0x17, 0x19, 0x7, 0xb7, 0x27, 0xeb, 0xf9, 0xae, - 0xa2, 0xd1, 0x74, 0x79, 0xee, 0xe6, 0x3b, 0x22, 0x82, 0x33, - 0x23, 0x12, 0x9, 0xe0, 0xf, 0x60, 0x4f, 0xe4, 0x2b, 0xc2, - 0xcb, 0x2f, 0x56, 0x75, 0xf1, 0xf, 0xed, 0x49, 0xa5, 0xe9, - 0x1d, 0x17, 0xea, 0x7c, 0xde, 0x4f, 0x7a, 0xd5, 0x31, 0x38, - 0xa7, 0xf6, 0xe6, 0xd2, 0xf3, 0x51, 0x5c, 0xab, 0xf5, 0xd7, - 0xa9, 0xa0, 0x5d, 0x57, 0xab, 0x1, 0xf5, 0x34, 0xd9, 0x66, - 0x58, 0xe1, 0x79, 0x33, 0x95, 0x50, 0x4f, 0x15, 0xf8, 0xef, - 0xf1, 0xfb, 0xfe, 0xa, 0x3f, 0xe2, 0xeb, 0x9f, 0x8c, 0xd7, - 0xfa, 0x26, 0x82, 0x86, 0x4b, 0x1b, 0x6b, 0x9f, 0xb2, 0xc4, - 0x21, 0x9e, 0x48, 0x43, 0x36, 0x71, 0xd1, 0xf6, 0xe3, 0xf1, - 0xc5, 0x7e, 0x98, 0xfe, 0xcc, 0x5a, 0xb6, 0xb1, 0xe2, 0xf, - 0x84, 0x5a, 0x56, 0xb1, 0xae, 0xc7, 0x2c, 0x57, 0x77, 0xa9, - 0xe6, 0x6c, 0x96, 0x55, 0x93, 0xe5, 0xec, 0x72, 0xa4, 0x8e, - 0x6b, 0xdd, 0x3e, 0x90, 0xfc, 0x85, 0xff, 00, 0x82, 0x92, - 0xea, 0x7a, 0x8f, 0xc4, 0xef, 0xda, 0xe, 0xf7, 0xec, 0x16, - 0x32, 0xb, 0x5d, 0x2e, 0x31, 0x6d, 0xe6, 0x31, 0x73, 0xbd, - 0xba, 0xb6, 0x3e, 0x66, 0x18, 0xfa, 0x62, 0xbe, 0x4a, 0x7f, - 0x3, 0xeb, 0x9, 0x9c, 0xda, 0x3f, 0xfd, 0xf2, 0x7f, 0xc2, - 0xbf, 0xa4, 0x5d, 0x6b, 0xe0, 0xff, 00, 0xc3, 0xbf, 0x17, - 0x6a, 0x32, 0xdd, 0x5f, 0xe8, 0x1a, 0x75, 0xe5, 0xec, 0xc7, - 0x2f, 0x2c, 0x90, 0x29, 0x66, 0x3f, 0x52, 0x2b, 0xa, 0xf3, - 0xf6, 0x48, 0xf8, 0x59, 0x7a, 0x49, 0x7f, 0xa, 0xd9, 0xc, - 0xff, 00, 0x76, 0x18, 0xff, 00, 0xaa, 0xd0, 0x7, 0xf3, - 0x9e, 0xfe, 0x14, 0xd5, 0x63, 0xeb, 0x67, 0x27, 0xe0, 0xa6, - 0xa0, 0x6d, 0x3, 0x51, 0x4e, 0xb6, 0x73, 0x7f, 0xdf, 0x26, - 0xbf, 0xa1, 0xdb, 0xbf, 0xd8, 0x77, 0xe1, 0x15, 0xde, 0x77, - 0x78, 0x6e, 0x25, 0xff, 00, 0x72, 0x38, 0xbf, 0xf8, 0x8a, - 0xc4, 0xbc, 0xff, 00, 0x82, 0x7b, 0x7c, 0x20, 0xbb, 0xce, - 0x34, 0x89, 0x22, 0xcf, 0xf7, 0x44, 0x5f, 0xfc, 0x45, 00, - 0x78, 0x87, 0xfc, 0x12, 0x53, 0xe1, 0x45, 0xf7, 0x85, 0xfe, - 0x1e, 0x5f, 0x78, 0x82, 0xf8, 0x79, 0x5f, 0x68, 0x51, 0x14, - 0x71, 0x98, 0xc0, 0x27, 0x3f, 0x31, 0x39, 0x29, 0x9f, 0xc8, - 0xd7, 0xdb, 0xdf, 0x11, 0x75, 0x24, 0xd3, 0xbc, 0x37, 0x39, - 0x65, 0x2c, 0x5f, 0xe5, 00, 0x7a, 0xfe, 0x75, 0x7, 0xc3, - 0x2f, 0x85, 0xba, 0xf, 0xc2, 0x5f, 0xf, 0xae, 0x8f, 0xe1, - 0xfb, 0x7f, 0x22, 0xd0, 0x10, 0x4e, 0x42, 0x82, 0x71, 0xd3, - 0x38, 0x2, 0xb7, 0xb5, 0xcd, 0x1a, 0x2d, 0x76, 0xc5, 0xad, - 0x66, 0x62, 0xa8, 0xdd, 0x71, 0x5c, 0x98, 0xba, 0x73, 0xab, - 0x87, 0x9c, 0x29, 0x7c, 0x4d, 0x3b, 0x1c, 0x38, 0xea, 0x55, - 0x2b, 0x61, 0x6a, 0x53, 0xa3, 0xf1, 0x34, 0xd2, 0x3e, 0x6a, - 0x19, 0xc7, 0x20, 0xfe, 0x54, 0x66, 0xbd, 0xb5, 0xbe, 0x13, - 0xe9, 0xc7, 0xa4, 0xee, 0x3f, 0xe0, 0x22, 0xa0, 0x7f, 0x84, - 0x56, 0x67, 0xa5, 0xd3, 0x7e, 0x28, 0x2b, 0xf3, 0x7, 0xc3, - 0x78, 0xf5, 0xb2, 0x5f, 0x7a, 0x3f, 0x1b, 0x7c, 0x25, 0x99, - 0x2d, 0x92, 0xfb, 0xd1, 0xe4, 0xba, 0x2d, 0xa9, 0xbf, 0xd5, - 0x6d, 0x60, 0x4e, 0xac, 0xe2, 0xbe, 0x91, 0xd3, 0xa0, 0xfb, - 0x35, 0x94, 0x51, 0xe7, 0x3b, 0x54, 0x57, 0x1b, 0xa5, 0xfc, - 0x2c, 0xb5, 0xd3, 0xf5, 0x8, 0xae, 0x4c, 0xe5, 0xc4, 0x67, - 0x21, 0x76, 0x8e, 0xb5, 0xdd, 0x2a, 0x85, 0x50, 0x7, 0x41, - 0xc5, 0x7d, 0x76, 0x43, 0x96, 0xd5, 0xc0, 0x46, 0x6e, 0xba, - 0xb3, 0x67, 0xdd, 0x70, 0xce, 0x51, 0x5f, 0x2c, 0x85, 0x47, - 0x88, 0x56, 0x94, 0x9f, 0x7e, 0x82, 0xd1, 0x45, 0x15, 0xf5, - 0x87, 0xdc, 0x1e, 0x4f, 0xf1, 0x97, 0x60, 0x96, 0xdc, 0x63, - 0xf7, 0x8d, 0xce, 0x72, 0x78, 0x1f, 0x9d, 0x79, 0x8d, 0x7b, - 0x8f, 0xc4, 0x2f, 0xa, 0xdd, 0xf8, 0x91, 0x23, 0x10, 0xd, - 0xc1, 0x78, 0xc5, 0x70, 0x4f, 0xf0, 0xb3, 0x53, 0x4f, 0xf9, - 0x66, 0xdf, 0x98, 0xaf, 0xca, 0xf3, 0x9c, 0xbf, 0x15, 0x57, - 0x1b, 0x3a, 0x94, 0xe9, 0xb6, 0x9f, 0x91, 0xf8, 0xaf, 0x10, - 0x65, 0x58, 0xca, 0xd9, 0x85, 0x4a, 0xb4, 0xa9, 0x37, 0x17, - 0x6d, 0x52, 0x38, 0xba, 0xe8, 0xbc, 0x4, 0xd2, 0x2f, 0x88, - 0xed, 0xfc, 0xb7, 0x8, 0xc4, 0xe3, 0xa0, 0x35, 0x66, 0x4f, - 0x87, 0x1a, 0x9a, 0x7f, 0xcb, 0x27, 0xfc, 0xc5, 0x5b, 0xf0, - 0xe7, 0x82, 0x35, 0xb, 0x6d, 0x6e, 0xde, 0x47, 0x86, 0x4d, - 0xa8, 0x73, 0xd4, 0x57, 0x93, 0x86, 0xc1, 0x62, 0xa9, 0x62, - 0x21, 0x27, 0x4d, 0xe8, 0xd1, 0xe1, 0xe0, 0xf2, 0xec, 0x6d, - 0x1c, 0x55, 0x39, 0x4a, 0x93, 0xd1, 0xa3, 0xdb, 0xd7, 0x85, - 0x19, 0x39, 0x3e, 0xb4, 0xb4, 0xd8, 0xd7, 0x64, 0x6a, 0xbe, - 0x83, 0x14, 0xea, 0xfd, 0xa5, 0x1f, 0xd0, 0xab, 0x60, 0xa8, - 0xae, 0xa5, 0x10, 0x5b, 0xc8, 0xed, 0xd0, 0x2, 0x6a, 0x5a, - 0xcc, 0xf1, 0x1d, 0xd9, 0xb2, 0xd2, 0x2e, 0x24, 0x5c, 0x6e, - 0xa, 0x71, 0x90, 0x4f, 0xf2, 0xac, 0xea, 0xcf, 0xd9, 0xd3, - 0x94, 0xdf, 0x44, 0x65, 0x5a, 0x6a, 0x95, 0x39, 0x4d, 0xf4, - 0x47, 0x80, 0xf8, 0xa2, 0xfd, 0x75, 0x2d, 0x76, 0xee, 0x65, - 0x18, 0x52, 0xe4, 0xe, 0x49, 0xe9, 0xf8, 0xd6, 0x55, 0x5c, - 0xb8, 0xb4, 0xba, 0x9e, 0x69, 0x25, 0x75, 0xcb, 0x3b, 0x16, - 0x35, 0x9, 0xb3, 0x9c, 0x7f, 0xcb, 0x3f, 0xd6, 0xbf, 0x8, - 0xaa, 0xe7, 0x52, 0x72, 0x9b, 0x5b, 0xb3, 0xf9, 0xa2, 0xb3, - 0x9d, 0x5a, 0x92, 0xa9, 0x24, 0xf5, 0x6d, 0xec, 0x42, 0x4e, - 0x5, 0x7b, 0x67, 0xc2, 0x5d, 0x39, 0xed, 0x3c, 0x3f, 0xe6, - 0xb9, 0x1f, 0xbc, 0x6e, 00, 0x3, 0xfc, 0x2b, 0xc6, 0x5, - 0xa4, 0xee, 0xea, 0x82, 0x33, 0x96, 0x38, 0xea, 0x2b, 0xe8, - 0x2f, 0x3, 0xe9, 0xbf, 0xd9, 0x9e, 0x1f, 0x82, 0x3d, 0xa5, - 0x49, 0xf9, 0x88, 0x24, 0x7f, 0x4a, 0xfa, 0x9e, 0x19, 0xa2, - 0xe5, 0x8b, 0x75, 0x1a, 0xd9, 0x7e, 0x67, 0xda, 0xf0, 0x75, - 0x7, 0x3c, 0x74, 0xaa, 0xb5, 0xa4, 0x57, 0xe6, 0x6f, 0xd1, - 0x45, 0x15, 0xfa, 0x99, 0xfb, 0x40, 0x51, 0x45, 0x14, 0x1, - 0xcc, 0xf8, 0xeb, 0xc3, 0xd0, 0xeb, 0x5a, 0x44, 0x85, 0xa3, - 0x2f, 0x32, 0xc, 0xa9, 0x4, 0x8a, 0xf0, 0x39, 0xe0, 0x6b, - 0x69, 0xde, 0x27, 0x18, 0x65, 0x38, 0x35, 0xf5, 0x9, 00, - 0x8c, 0x11, 0x91, 0x5e, 0x59, 0xf1, 0x23, 0xc1, 0x25, 0xe5, - 0x6b, 0xdb, 0x50, 0x59, 0x9b, 0x92, 0x8a, 0xb8, 0x2, 0xbe, - 0x1b, 0x88, 0xb2, 0xc7, 0x59, 0x2c, 0x55, 0x15, 0xaa, 0xdc, - 0xfc, 0xdf, 0x8a, 0xf2, 0x79, 0x62, 0x22, 0xb1, 0xb4, 0x17, - 0xbc, 0xb7, 0x5d, 0xd7, 0x73, 0xcb, 0x68, 0xa7, 0xc9, 0x14, - 0x90, 0x31, 0x59, 0x17, 0x63, 0xe, 0xc6, 0x99, 0x5f, 0x9a, - 0xf9, 0x33, 0xf2, 0x2d, 0xb4, 0x60, 0x54, 0x1a, 0x30, 0x31, - 0x45, 0x14, 0x58, 0x56, 0x40, 0x6, 0x28, 0xa2, 0x82, 0x71, - 0x46, 0xc1, 0xb0, 0x54, 0x96, 0xf6, 0xf2, 0x5d, 0x4c, 0x91, - 0x44, 0xa5, 0x9d, 0x8e, 00, 0x15, 0x6b, 0x4b, 0xd1, 0xee, - 0xf5, 0x89, 0x96, 0x3b, 0x58, 0x8c, 0x84, 0x9e, 0xc4, 0x57, - 0xac, 0xf8, 0x33, 0xe1, 0x9c, 0x1a, 0x50, 0x4b, 0xab, 0xd2, - 0x65, 0x9c, 0x8c, 0x88, 0xd8, 0x2, 0x14, 0xd7, 0xaf, 0x97, - 0xe5, 0x95, 0xf3, 0x9, 0xa5, 0x5, 0xee, 0xf5, 0x7d, 0xf, - 0x7b, 0x2b, 0xc9, 0xf1, 0x39, 0xa5, 0x44, 0xa9, 0xc6, 0xd1, - 0xea, 0xfa, 0x17, 0x3c, 0x3, 0xe0, 0x84, 0xf0, 0xfd, 0xaa, - 0xdc, 0x4e, 0x33, 0x74, 0xeb, 0xc8, 0xf4, 0xae, 0xce, 0x90, - 00, 0xa0, 00, 0x30, 0x7, 0x6a, 0x5a, 0xfd, 0x8b, 0xb, - 0x86, 0xa7, 0x84, 0xa4, 0xa9, 0x52, 0x56, 0x48, 0xfd, 0xef, - 0x7, 0x84, 0xa5, 0x81, 0xa3, 0x1a, 0x14, 0x55, 0x92, 0x23, - 0xb8, 0x99, 0x6d, 0xe0, 0x92, 0x56, 0xfb, 0xa8, 0xa5, 0x8f, - 0xe0, 0x2b, 0xe7, 0xf, 0x12, 0x5f, 0x8d, 0x4f, 0x58, 0xb8, - 0x9c, 0xc, 0x2, 0xe7, 0x1c, 0xe7, 0xfa, 0xd7, 0xbd, 0xf8, - 0xab, 0x57, 0x1a, 0x36, 0x8f, 0x3c, 0xf9, 0x1, 0xc2, 0x9d, - 0xb9, 0x4, 0xf3, 0x8f, 0x6a, 0xf9, 0xcd, 0xdc, 0xca, 0xe5, - 0xd8, 0xe5, 0x98, 0xe4, 0xd7, 0xc2, 0xf1, 0x55, 0x74, 0xdd, - 0x3a, 0x9, 0xf7, 0x6c, 0xfc, 0xdf, 0x8d, 0x71, 0x29, 0xba, - 0x58, 0x74, 0xfb, 0xb7, 0xfa, 0x4, 0x52, 0x3c, 0x2d, 0xba, - 0x36, 0x2a, 0x7e, 0xb5, 0xa7, 0x67, 0xe2, 0xbd, 0x52, 0xc0, - 0x83, 0xc, 0xe0, 0x63, 0xd5, 0x41, 0xac, 0xaa, 0x2b, 0xe0, - 0xe1, 0x56, 0xa5, 0x27, 0x7a, 0x72, 0x6b, 0xd0, 0xfc, 0xce, - 0x9d, 0x6a, 0xb4, 0x5d, 0xe9, 0x49, 0xaf, 0x46, 0x75, 0xb1, - 0xfc, 0x50, 0xd7, 0x50, 0x73, 0x24, 0x47, 0xfe, 00, 0x2a, - 0x3b, 0x9f, 0x89, 0x5a, 0xcd, 0xd2, 0x6d, 0x67, 0x45, 0xf7, - 0xb, 0x5c, 0xb5, 0x15, 0xd8, 0xf3, 0x1c, 0x63, 0x56, 0x75, - 0x65, 0xf7, 0x9d, 0xef, 0x36, 0xcc, 0x1a, 0xe5, 0x75, 0xe5, - 0x6f, 0x52, 0xd5, 0xf6, 0xa9, 0x75, 0xa9, 0x3e, 0xeb, 0x89, - 0x4c, 0x9e, 0xc6, 0xaa, 0xd1, 0x45, 0x70, 0x4a, 0x52, 0x9b, - 0xe6, 0x93, 0xbb, 0x3c, 0xc9, 0x4e, 0x53, 0x7c, 0xd3, 0x77, - 0x61, 0x53, 0xe9, 0xba, 0x74, 0x9a, 0xbe, 0xa1, 0x15, 0xac, - 0x63, 0x25, 0x8f, 0x27, 0xd0, 0x53, 0x20, 0x82, 0x4b, 0x99, - 0x56, 0x38, 0x94, 0xbb, 0xb1, 0xc0, 0x2, 0xbd, 0x47, 0xc1, - 0x5e, 0x3, 0xfe, 0xcb, 0x44, 0xd4, 0x2e, 0xd4, 0xf9, 0xdb, - 0x49, 0x50, 0x40, 0xc0, 0xaf, 0x53, 0x2d, 0xc0, 0x54, 0xc7, - 0xd7, 0x8c, 0x62, 0xbd, 0xd4, 0xf5, 0x7e, 0x47, 0xb3, 0x94, - 0x65, 0x95, 0x73, 0x3c, 0x4c, 0x61, 0x18, 0xfb, 0xa9, 0xea, - 0xfc, 0x8b, 0xa2, 0xca, 0x3d, 0x26, 0xc8, 0x42, 0x9d, 0x15, - 0x46, 0x7f, 0x2a, 0xe2, 0x3c, 0x41, 0x3a, 0xe5, 0xeb, 0xbb, - 0xd6, 0x67, 0x21, 0x1f, 0xfc, 0x2b, 0xcd, 0xbc, 0x43, 0x74, - 0x40, 0x73, 0x5f, 0xb6, 0x42, 0xa, 0x9c, 0x54, 0x23, 0xb2, - 0x3f, 0xa2, 0x29, 0xd3, 0x8d, 0x28, 0x28, 0x45, 0x59, 0x23, - 0xca, 0x7c, 0x75, 0x7c, 0x91, 0xc1, 0x33, 0xb0, 0x38, 0x50, - 0x6b, 0xe0, 0xbf, 0x8d, 0x3a, 0xb4, 0x77, 0x7a, 0xcc, 0xa1, - 0x41, 0xf9, 0x58, 0xf5, 0x3f, 0xfd, 0x7a, 0xfb, 0x5f, 0xe2, - 0x66, 0xb3, 0xf6, 0x2d, 0x2a, 0xea, 0x42, 0x7b, 0x60, 0x70, - 0x6b, 0xe0, 0x4f, 0x89, 0x5a, 0xc1, 0xbd, 0xd5, 0xee, 0x18, - 0x90, 0x70, 0x4f, 0xaf, 0x5a, 0xf9, 0xec, 0xe2, 0x7e, 0xec, - 0x60, 0x7c, 0xb6, 0x7f, 0x3f, 0x76, 0x14, 0xfb, 0x9e, 0x4d, - 0xae, 0xcc, 0x1a, 0x63, 0x5f, 0x51, 0x7f, 0xc1, 0x35, 0x7c, - 0x3d, 0x7d, 0xa8, 0xfc, 0x55, 0xd7, 0x35, 0x48, 0xa5, 0x44, - 0xd3, 0xec, 0xec, 0xd5, 0x26, 0x8d, 0xbe, 0xf3, 0xbb, 0x31, - 0x2a, 0x47, 0x1d, 0x82, 0xb0, 0x3c, 0x8f, 0xbc, 0x3a, 0xf6, - 0xf9, 0x4f, 0x57, 0x9c, 0xbc, 0xac, 0x6b, 0xef, 0x4f, 0xf8, - 0x26, 0x5f, 0x80, 0x5e, 0xd3, 0x44, 0xd7, 0x3c, 0x55, 0x34, - 0x12, 0x21, 0xbe, 0x93, 0xca, 0x86, 0x46, 0xdb, 0xb5, 0xe3, - 0x42, 0x54, 0x6d, 0xe4, 0xb7, 0xde, 0xf3, 0x41, 0xce, 0x3e, - 0xe8, 0xfc, 0x75, 0xc0, 0x43, 0x54, 0x6f, 0x96, 0xc3, 0x55, - 0xe4, 0x7d, 0xf1, 0x62, 0xa7, 0x22, 0xb7, 0xac, 0x94, 0xe4, - 0x56, 0x25, 0x8a, 0xf4, 0xe2, 0xb7, 0xac, 0x93, 0x24, 0x57, - 0xbe, 0x7d, 0x31, 0xb5, 0x68, 0xa7, 0x22, 0xb4, 0x80, 0xe2, - 0xb3, 0xed, 0x17, 0x9a, 0xd1, 0x55, 0xe0, 0x50, 0x6, 0xe9, - 0xe9, 0x50, 0xb9, 0xa9, 0x5a, 0xa0, 0x73, 0x40, 0x15, 0xa6, - 0x3d, 0x6b, 0x96, 0xf1, 0xbf, 0x88, 0x20, 0xf0, 0xb7, 0x85, - 0x75, 0x8d, 0x62, 0xe6, 0x53, 0xc, 0x16, 0x16, 0x92, 0xdc, - 0xbb, 0xaa, 0x86, 0x20, 0x22, 0x16, 0xe1, 0x49, 00, 0x9e, - 0x38, 0x4, 0x8c, 0x9e, 0x32, 0x2b, 0xa5, 0xb8, 0x3c, 0x1a, - 0xf9, 0xeb, 0xf6, 0xce, 0xd6, 0xda, 0xc3, 0xe1, 0x1, 0xd3, - 0x12, 0x16, 0x76, 0xd6, 0xb5, 0x1b, 0x7b, 0x13, 0x36, 0xe2, - 0xab, 00, 0xdc, 0x65, 0x2e, 0xc4, 0x60, 0x7f, 0xcb, 0x20, - 0xb8, 0x27, 0xf8, 0xbb, 0xe0, 0xd7, 0x1e, 0x32, 0xbf, 0xd5, - 0xb0, 0xf5, 0x2b, 0x7f, 0x2a, 0x6c, 0xe0, 0xc7, 0xe2, 0x3e, - 0xa9, 0x85, 0xab, 0x5f, 0xf9, 0x53, 0x7f, 0x3b, 0x69, 0xf8, - 0x94, 0xff, 00, 0x62, 0xbd, 0x2, 0x7b, 0x7f, 0x87, 0xeb, - 0xaa, 0x5e, 0x44, 0xad, 0x79, 0xa9, 0xdc, 0xbd, 0xd4, 0x93, - 0x92, 0x4b, 0xcb, 0x93, 0xd5, 0xb8, 0x1c, 0xe7, 0x3e, 0xbd, - 0x6b, 0xd2, 0xff, 00, 0x6a, 0x9f, 0x18, 0x45, 0xe0, 0x8f, - 0x81, 0xfe, 0x22, 0xbe, 0x92, 0xed, 0xec, 0x8f, 0xd9, 0xd9, - 0x44, 0x91, 0x80, 0x4f, 0x42, 0x4f, 0x52, 0x2b, 0x63, 0xe1, - 0x6, 0x82, 0x34, 0xf, 0x8, 0x69, 0x36, 0x42, 0x75, 0x9b, - 0xc8, 0xb7, 0x8e, 0x3d, 0xea, 0xaa, 0x3, 0x60, 0xe, 0x70, - 0x38, 0xaf, 0x99, 0x3f, 0xe0, 0xac, 0x7a, 0xdc, 0xba, 0x47, - 0xec, 0xf8, 0xea, 0x96, 0x13, 0x5d, 0x2d, 0xc4, 0x9e, 0x47, - 0x9b, 0x1b, 0x38, 0x58, 0xcb, 0x77, 0x6d, 0xbc, 0x76, 0xef, - 0xd6, 0xa3, 0x1, 0x43, 0xea, 0xd8, 0x5a, 0x74, 0x9e, 0xe9, - 0x2f, 0xbf, 0xa9, 0x9e, 0x59, 0x87, 0xfa, 0xa6, 0xe, 0x95, - 0x17, 0xba, 0x4a, 0xfe, 0xbd, 0x7f, 0x13, 0xf2, 0x5b, 0xe0, - 0x4e, 0x97, 0x27, 0xc4, 0xf, 0x8f, 0x7a, 0x79, 0x90, 0xb, - 0xe6, 0x9e, 0xf4, 0xca, 0x5a, 0x76, 0x2b, 0xbc, 0x96, 0xe3, - 0x38, 0xd, 0xcf, 0x35, 0xfb, 0x73, 0xfb, 0x57, 0xf8, 0xde, - 0xe3, 0xe0, 0x5f, 0xec, 0x91, 0xac, 0x5f, 0x69, 0x57, 0x7f, - 0xd8, 0xba, 0x85, 0x8e, 0x9a, 0x89, 0x6e, 0xd0, 0x46, 0xb2, - 0x62, 0x4f, 0x94, 0x6d, 0x1, 0x8a, 0xf5, 0x27, 0x19, 0xec, - 0x9, 0x38, 0x38, 0xc5, 0x7e, 0xc, 0x7c, 0x2a, 0xf8, 0x97, - 0xab, 0x7c, 0x28, 0xf1, 0x8d, 0x8f, 0x88, 0x34, 0x7b, 0x9f, - 0xb2, 0xdd, 0xda, 0xc8, 0x24, 0xf, 0xe5, 0x87, 0xe4, 0x7b, - 0x1a, 0xf7, 0x4f, 0xda, 0x3f, 0xf6, 0xe9, 0xf1, 0x5f, 0xed, - 0xb, 0xe0, 0x38, 0x7c, 0x33, 0xad, 0x4c, 0x2e, 0x6d, 0xc4, - 0x89, 0x23, 0xb7, 0x29, 0xf3, 0x29, 0xc8, 0x38, 0x18, 0x7, - 0x9a, 0xef, 0x3d, 0x33, 0xde, 0x3f, 0x60, 0x9f, 0xda, 0x7b, - 0xe2, 0xa7, 0xc5, 0x9f, 0x8c, 0xd6, 0xfa, 0x55, 0xfd, 0xf8, - 0xd4, 0x6c, 0x63, 0x40, 0xd2, 0xef, 0xf9, 0x31, 0x93, 0xfe, - 0xca, 0x1c, 0xfe, 0x35, 0xfb, 0x16, 0xb9, 0xda, 0x33, 0xd7, - 0x1c, 0xd7, 0xf3, 0xc5, 0xfb, 0x23, 0xfe, 0xd4, 0x17, 0x1f, - 0xb3, 0x56, 0xad, 0x75, 0xa8, 0x59, 0xbc, 0x3e, 0x64, 0xec, - 0x19, 0x96, 0x48, 0x37, 0xe7, 0x3, 00, 0x67, 0x6, 0xbe, - 0xc6, 0xb2, 0xff, 00, 0x82, 0xc0, 0x5f, 0xb6, 0x3c, 0xe8, - 0xac, 0x4f, 0xd6, 0x16, 0x1f, 0xfb, 0x2d, 00, 0x7e, 0xac, - 0x51, 0x5f, 0x98, 0xd6, 0x1f, 0xf0, 0x57, 0x84, 0x90, 0xaf, - 0x9b, 0x6b, 0xa7, 0x9f, 0x5e, 0x1c, 0x7f, 0x4a, 0xfa, 0x47, - 0xf6, 0x5a, 0xfd, 0xb4, 0xad, 0xff, 00, 0x68, 0xcd, 0x75, - 0xf4, 0xe8, 0x92, 0xc6, 0xdd, 0x95, 0x59, 0xb6, 0xc7, 0xb8, - 0xb3, 0x63, 0xd3, 0x38, 0xa0, 0xf, 0xaa, 0x28, 0xaa, 0x7a, - 0xbe, 0xa7, 0x1e, 0x8f, 0xa6, 0x5c, 0x5e, 0xca, 0x9, 0x8e, - 0x4, 0x2e, 0xc0, 0x75, 0xaf, 0x92, 0x35, 0x9f, 0xf8, 0x28, - 0xef, 0x84, 0xf4, 0x6f, 0x10, 0x5e, 0xe9, 0xb2, 0xd9, 0x2a, - 0xfd, 0x9a, 0x43, 0x19, 0x2e, 0xee, 0x18, 0xe3, 0xdb, 0x6d, - 00, 0x7d, 0x87, 0x45, 0x7c, 0x91, 0x67, 0xff, 00, 0x5, - 0x18, 0xf0, 0x3d, 0xc6, 0x37, 0xc2, 0x17, 0x3e, 0x92, 0x37, - 0xff, 00, 0x11, 0x5b, 0x76, 0x7f, 0xb7, 0xdf, 0xc3, 0xeb, - 0x91, 0xf3, 0x31, 0x4f, 0xf8, 0x1b, 0x1f, 0xfd, 0x92, 0x80, - 0x3e, 0x9c, 0xa2, 0xbe, 0x7e, 0xb2, 0xfd, 0xb6, 0xbe, 0x1d, - 0xdd, 0xe3, 0x37, 0x86, 0x3f, 0xfb, 0xe8, 0xff, 00, 0xec, - 0xb5, 0xb5, 0x69, 0xfb, 0x5b, 0xfc, 0x3a, 0xba, 0xc7, 0xfc, - 0x4d, 0xc2, 0x13, 0xea, 0x8d, 0xfe, 0x14, 0x1, 0xec, 0xf4, - 0x57, 0x97, 0xdb, 0x7e, 0xd2, 0x9f, 0xf, 0xae, 0xb1, 0x8d, - 0x76, 0x35, 0xcf, 0xaa, 0x37, 0xf8, 0x56, 0xa5, 0xbf, 0xc7, - 0x3f, 0x3, 0xdc, 0xe3, 0x66, 0xbf, 0x7, 0x3e, 0xaa, 0xc3, - 0xfa, 0x50, 0x7, 0x79, 0x45, 0x72, 0x71, 0x7c, 0x55, 0xf0, - 0x9c, 0xc0, 0x14, 0xd6, 0xed, 0xce, 0x7f, 0xde, 0xff, 00, - 0xa, 0xbb, 0xf, 0x8f, 0x3c, 0x3f, 0x71, 0xfe, 0xaf, 0x56, - 0xb6, 0x6f, 0xf8, 0x15, 00, 0x6f, 0xd1, 0x59, 0xb0, 0xf8, - 0x93, 0x4a, 0x9f, 0xfd, 0x5e, 0xa1, 0x6e, 0xdf, 0xf6, 0xd0, - 0x55, 0xa4, 0xd4, 0x2d, 0x64, 0xfb, 0x97, 0x11, 0x37, 0xd1, - 0xc5, 00, 0x58, 0xa2, 0x98, 0x25, 0x46, 0xe8, 0xea, 0x7e, - 0x86, 0x9f, 0x40, 0x5, 0x32, 0x68, 0x52, 0x78, 0xca, 0x48, - 0xa1, 0x94, 0xf5, 0x6, 0x9f, 0x45, 0x26, 0xaf, 0xa3, 0x13, - 0x49, 0xab, 0x33, 0x3d, 0xb4, 0x1d, 0x3d, 0xfa, 0xdb, 0x27, - 0xeb, 0x51, 0x37, 0x85, 0xf4, 0xc7, 0xeb, 0x6a, 0xbf, 0x99, - 0xad, 0x5a, 0x2b, 0x17, 0x87, 0xa2, 0xf7, 0x82, 0xfb, 0x91, - 0xce, 0xf0, 0xd4, 0x25, 0xbc, 0x17, 0xdc, 0x8c, 0x51, 0xe0, - 0xfd, 0x28, 0x48, 0xaf, 0xf6, 0x61, 0x95, 0x39, 0x1c, 0x9a, - 0xd8, 0x44, 0x58, 0xd0, 0x2a, 0x8c, 0x28, 0xe0, 0x1, 0x4e, - 0xa2, 0x9d, 0x3a, 0x34, 0xe9, 0x5f, 0x92, 0x29, 0x7a, 0x15, - 0x4a, 0x85, 0x2a, 0x37, 0xf6, 0x71, 0x4a, 0xfd, 0x90, 0x51, - 0x45, 0x15, 0xb1, 0xb8, 0x51, 0x45, 0x14, 00, 0x53, 0x25, - 0x89, 0x66, 0x8c, 0xa3, 0x8c, 0xa9, 0xeb, 0x4f, 0xa2, 0x86, - 0xaf, 0xa3, 0x13, 0x49, 0xe8, 0xce, 0x2b, 0xc4, 0x1f, 0xd, - 0x6c, 0xb5, 0x3d, 0xd2, 0x42, 0xa1, 0x25, 0x3e, 0xb9, 0xae, - 0x12, 0xff, 00, 0xe1, 0x66, 0xa5, 0x6a, 0xc7, 0xcb, 0xd8, - 0xc3, 0xb6, 0x1, 0xaf, 0x70, 0xa4, 0x2a, 0x1b, 0xa8, 0x7, - 0xeb, 0x5f, 0x3d, 0x8a, 0xc8, 0xb0, 0x78, 0xa7, 0xcc, 0xe3, - 0x67, 0xe4, 0x7c, 0xb6, 0x37, 0x86, 0xb0, 0x18, 0xc9, 0x73, - 0xb8, 0xf2, 0xbf, 0x2d, 0xf, 0x9d, 0x2e, 0x3c, 0x1f, 0xaa, - 0x5b, 0xb1, 0x53, 0x16, 0x48, 0xf4, 0x7, 0xfc, 0x29, 0x91, - 0xf8, 0x4f, 0x55, 0x93, 0xee, 0xdb, 0x93, 0xf8, 0x1f, 0xf0, - 0xaf, 0xa2, 0x1a, 0xc6, 0xdd, 0xfe, 0xf4, 0x28, 0x7f, 0xe0, - 0x34, 0x25, 0x94, 0x11, 0xfd, 0xd8, 0x91, 0x7e, 0x82, 0xbc, - 0x5f, 0xf5, 0x56, 0x95, 0xff, 00, 0x88, 0xec, 0x7c, 0xf3, - 0xe0, 0xaa, 0x3c, 0xdf, 0xc4, 0x76, 0x3c, 0xe, 0xdf, 0xc0, - 0x7a, 0xbc, 0xed, 0x83, 0x6c, 0xea, 0x3d, 0x70, 0x7f, 0xc2, - 0xba, 0xfd, 0x17, 0xe1, 0xb, 0x26, 0xc9, 0x6e, 0xa6, 0x52, - 0x3a, 0x94, 0x39, 0xaf, 0x53, 0x55, 0xa, 0x30, 00, 0x3, - 0xda, 0x96, 0xbd, 0xc, 0x3f, 0xd, 0xe0, 0xe8, 0xbe, 0x69, - 0xde, 0x5e, 0xa7, 0xa9, 0x85, 0xe1, 0x2c, 0x6, 0x1e, 0x5c, - 0xd5, 0x2f, 0x37, 0xe6, 0x66, 0x69, 0x3e, 0x1f, 0xb2, 0xd1, - 0xd1, 0x45, 0xbc, 0xa, 0x8c, 0x7, 0x2c, 0x32, 0x6b, 0x4e, - 0x8a, 0x2b, 0xe9, 0xe1, 0x4e, 0x14, 0xa3, 0xcb, 0x5, 0x64, - 0x7d, 0x95, 0x3a, 0x50, 0xa3, 0x15, 0xa, 0x6a, 0xcb, 0xc8, - 0x28, 0xa2, 0x8a, 0xd0, 0xd4, 0xe4, 0x3e, 0x22, 0xe8, 0x97, - 0x9a, 0xd6, 0x97, 0xe5, 0xda, 0x96, 0x27, 0xfb, 0xa1, 0x6b, - 0xc6, 0x6f, 0xbc, 0x3f, 0x7d, 0xa7, 0x1c, 0x4d, 0x9, 0x5c, - 0x7d, 0x6b, 0xe9, 0x42, 0x32, 0x30, 0x6a, 0x8d, 0xde, 0x83, - 0xa7, 0xdf, 0x83, 0xe7, 0xda, 0xc7, 0x26, 0x7d, 0x45, 0x7c, - 0xae, 0x69, 0x91, 0x47, 0x1f, 0x53, 0xdb, 0x46, 0x56, 0x97, - 0xe0, 0x7c, 0x56, 0x73, 0xc3, 0x70, 0xcc, 0xea, 0x7b, 0x78, - 0x4e, 0xd3, 0xfc, 0xf, 0x9a, 0x48, 0x23, 0xa8, 0xc5, 0x26, - 0x47, 0xad, 0x7b, 0xf5, 0xcf, 0xc3, 0x8d, 0xe, 0x7c, 0xff, - 00, 0xa2, 0x2a, 0xfd, 0x2b, 0x26, 0xe7, 0xe1, 0x2e, 0x99, - 0x21, 0xfd, 0xda, 0x6d, 0x15, 0xf2, 0x75, 0x38, 0x67, 0x1b, - 0xf, 0x85, 0xa6, 0x7c, 0x3d, 0x5e, 0xf, 0xcc, 0x21, 0xf0, - 0x38, 0xbf, 0x9f, 0xfc, 0x3, 0xc5, 0xf2, 0x3d, 0x68, 0xaf, - 0x5f, 0x5f, 0x83, 0xf6, 0x3b, 0xbe, 0x62, 0xd8, 0xf6, 0x35, - 0x6a, 0x3f, 0x84, 0x1a, 0x48, 0x3f, 0x33, 0x4b, 0xff, 00, - 0x7d, 0x56, 0x31, 0xe1, 0xcc, 0x7b, 0xe8, 0xbe, 0xf3, 0x8, - 0xf0, 0x9e, 0x67, 0x2f, 0xb2, 0x97, 0xcc, 0xf1, 0x70, 0xac, - 0xc7, 0x1, 0x58, 0xfd, 0x5, 0x6d, 0x68, 0xde, 0x10, 0xd4, - 0x75, 0x99, 0x14, 0x43, 0x9, 0x28, 0x7a, 0x92, 0x8, 0xfe, - 0x95, 0xec, 0xda, 0x6f, 0xc3, 0xfd, 0x27, 0x4e, 0x20, 0xac, - 0x3e, 0x69, 0x1f, 0xf3, 0xd3, 0x9a, 0xdf, 0xb7, 0xb3, 0x82, - 0xd4, 0x62, 0x18, 0x92, 0x31, 0xfe, 0xc8, 0xc5, 0x7a, 0xf8, - 0x5e, 0x16, 0x95, 0xd3, 0xc4, 0xcf, 0x4e, 0xc8, 0xf7, 0x70, - 0x7c, 0x19, 0x36, 0xd4, 0xb1, 0x75, 0x34, 0xec, 0xbf, 0xcc, - 0xe5, 0x3c, 0x21, 0xf0, 0xfe, 0xdb, 0x42, 0x8c, 0x4b, 0x32, - 0x2b, 0xce, 0x79, 0xea, 0x4e, 0x2b, 0xa1, 0xd4, 0xc8, 0x48, - 0x76, 0x8e, 00, 0x1d, 0x2b, 0x42, 0xb1, 0x75, 0xa9, 0x48, - 0x8d, 0xb8, 0xfd, 0x6b, 0xee, 0xf0, 0xd8, 0x6a, 0x58, 0x4a, - 0x6a, 0x9d, 0x28, 0xd9, 0x1f, 0xa5, 0x61, 0x30, 0x74, 0x30, - 0x54, 0xd5, 0x2a, 0x11, 0xb2, 0x47, 0x1d, 0xae, 0xcb, 0x84, - 0x6f, 0x9a, 0xbc, 0xbf, 0xc4, 0xf3, 0x61, 0x1f, 0xe6, 0xfd, - 0x2b, 0xbf, 0xf1, 0xc, 0xc4, 0x23, 0x70, 0x7f, 0x3a, 0xf2, - 0xaf, 0x16, 0x5c, 0x90, 0x8d, 0xf2, 0x9f, 0xce, 0xba, 0x8e, - 0xd3, 0xc1, 0xfe, 0x38, 0x5e, 0x88, 0x3c, 0x3f, 0x39, 0x33, - 0x15, 0xe7, 0x38, 0xa, 0xe, 0x7f, 0x5a, 0xf8, 0x33, 0xc5, - 0x97, 0x5, 0xe7, 0x9d, 0x8b, 0x96, 0xcb, 0x13, 0x92, 0x2b, - 0xeb, 0x6f, 0xda, 0x47, 0x58, 0x78, 0xb4, 0xe3, 0x17, 0x94, - 0xc4, 0x3, 0xd7, 0x78, 0xc7, 0xf2, 0xaf, 0x8c, 0x7c, 0x49, - 0x70, 0x48, 0x7e, 0xf, 0xe7, 0x5f, 0x1f, 0x98, 0xcb, 0xda, - 0x62, 0xd4, 0x57, 0x43, 0xe0, 0xb3, 0x59, 0xfb, 0x5c, 0x72, - 0x82, 0xe8, 0x71, 0xda, 0x83, 0xe5, 0x98, 0xe6, 0xbf, 0x5e, - 0x7f, 0x63, 0x6d, 0x10, 0x68, 0xbf, 0x3, 0x3c, 0x37, 0x1f, - 0xd8, 0x56, 0xc9, 0x9a, 0xd2, 0x27, 0x65, 0x13, 0x34, 0x84, - 0x92, 0x81, 0x89, 0x39, 0x3, 0x4, 0x96, 0x24, 0x81, 0xc0, - 0x24, 0x81, 0xc0, 0x15, 0xf9, 0x25, 0xa1, 0x69, 0x27, 0xc4, - 0x7e, 0x28, 0xd2, 0x74, 0xa1, 0x32, 0xdb, 0x1b, 0xeb, 0xc8, - 0x6d, 0xbc, 0xe9, 00, 0x2b, 0x1e, 0xf7, 0xb, 0xb8, 0x83, - 0x80, 0x71, 0x9c, 0xe3, 0xbd, 0x7e, 0xe3, 0x78, 0x1b, 0x4c, - 0x5d, 0x2f, 0xc3, 0x7a, 0x6d, 0xb2, 0xb8, 0x70, 0xb0, 0x83, - 0xb8, 0x26, 0xdc, 0xe7, 0xe6, 0xe9, 0xf8, 0xff, 00, 0xfa, - 0xab, 0xde, 0xc1, 0x46, 0xc9, 0xb3, 0xe9, 0xb2, 0xf8, 0x5a, - 0x2d, 0x9d, 0x7d, 0x8a, 0xf0, 0x38, 0xad, 0xeb, 0x15, 0xe9, - 0xc5, 0x64, 0x59, 0xaf, 0x3, 0x9a, 0xdd, 0xb3, 0x4c, 0x28, - 0xe6, 0xbd, 0x23, 0xd7, 0x35, 0x2c, 0xc7, 0x1d, 0x2a, 0xf8, - 0x1c, 0x55, 0x5b, 0x55, 0xe0, 0x55, 0xf5, 0x5f, 0x94, 0x50, - 0x6, 0x93, 0x9a, 0x81, 0xcd, 0x4a, 0xe6, 0xa0, 0x91, 0xb8, - 0xa0, 0xa, 0x77, 0x7, 0xad, 0x7c, 0xb3, 0xf1, 0xe6, 0x56, - 0xf1, 0xb7, 0xed, 0x13, 0xe0, 0x3f, 0x8, 0x39, 0x30, 0xd9, - 0xe9, 0xf6, 0xed, 0xaa, 0xcc, 0xb7, 0x7, 0x7c, 0x37, 0x2c, - 0xcc, 0x55, 0x71, 0x1b, 0x7c, 0xa4, 0xa8, 0x89, 0xc6, 0xec, - 0x67, 0xf7, 0x8c, 0x3b, 0x57, 0xd4, 0x57, 0xd, 0xd6, 0xbe, - 0x5b, 0xf8, 0x3c, 0xbf, 0xf0, 0xb4, 0xfe, 0x3e, 0x78, 0xdf, - 0xc6, 0x97, 0x40, 0xc9, 0x5, 0x95, 0xcf, 0xf6, 0x56, 0x9e, - 0xaf, 0x82, 0x23, 0x8a, 0x3f, 0x97, 0x2b, 0x9c, 0xe3, 0x3b, - 0x4b, 0x1c, 0x1e, 0xb2, 0x35, 0x78, 0xb9, 0x9f, 0xef, 0x55, - 0x2c, 0x32, 0xfb, 0x72, 0x5f, 0x72, 0xf7, 0x9f, 0xe4, 0x7c, - 0xf6, 0x71, 0xfb, 0xe5, 0x47, 0x8, 0xbf, 0xe5, 0xe4, 0xd5, - 0xff, 00, 0xc3, 0x1f, 0x79, 0xfe, 0x56, 0xf9, 0x9f, 0x55, - 0x78, 0x7a, 0xd1, 0x6d, 0xed, 0x23, 0x55, 0xa, 00, 0x5f, - 0xe1, 00, 0x57, 0xca, 0x7f, 0xf0, 0x53, 0x3f, 0x85, 0x1a, - 0xc7, 0xc4, 0xef, 0x82, 0xa0, 0x69, 0x11, 0x5d, 0x5c, 0x4b, - 0x68, 0xc5, 0x8c, 0x50, 0xcd, 0x2e, 0xc0, 0x3a, 0x96, 0x31, - 0xa7, 0xe, 0x78, 0xc0, 0xc8, 0xef, 0xd6, 0xbe, 0xbb, 0xd3, - 0xe2, 0x11, 0x40, 00, 0xa9, 0x2e, 0xec, 0xe0, 0xbf, 0x81, - 0xa0, 0xb9, 0x86, 0x3b, 0x88, 0x5b, 0x86, 0x8e, 0x45, 0xc, - 0xa7, 0xf0, 0x35, 0xed, 0x1f, 0x42, 0x7f, 0x2e, 0xda, 0xa7, - 0x83, 0xf5, 0xad, 0x22, 0xea, 0x48, 0x6e, 0x34, 0xbb, 0xd8, - 0xca, 0x1c, 0x12, 0xd6, 0xce, 0xbf, 0xcc, 0x56, 0x44, 0x91, - 0x3c, 0x2f, 0xb6, 0x44, 0x64, 0x6f, 0xee, 0xb0, 0xc1, 0xaf, - 0xe8, 0x57, 0xe3, 0x97, 0xec, 0xc5, 0xe0, 0x5d, 0x47, 0x43, - 0xd5, 0xb5, 0xcb, 0xcb, 0x4b, 0x5b, 0x34, 0x86, 0x26, 0x94, - 0xf9, 0x76, 0xea, 00, 0xc0, 0xc9, 0xe8, 0x2b, 0xf0, 0xde, - 0xcf, 0xc3, 0xb, 0xf1, 0x57, 0xe3, 0xda, 0x68, 0x3a, 0x72, - 0x84, 0xb6, 0xbd, 0xd4, 0xcd, 0xbc, 0x7b, 0x70, 0xa1, 0x63, - 0x56, 0x39, 0x3c, 0xfb, 0x2, 0x68, 0x3, 0xcc, 0x76, 0x36, - 0x33, 0xb4, 0xe3, 0xe9, 0x49, 0x8a, 0xfd, 0xa2, 0xf0, 0xdf, - 0xfc, 0x12, 0xdb, 0x40, 0x7f, 0xc, 0xd8, 0xb4, 0x97, 0x16, - 0xcd, 0x3c, 0x91, 0x7, 0x6d, 0xe0, 0x75, 0x23, 0xfe, 0xb9, - 0xd5, 0x6b, 0xef, 0xf8, 0x25, 0x2e, 0x93, 0x28, 0x6f, 0x2e, - 0x4b, 0x16, 0x3d, 0xba, 0x7f, 0xf1, 0xba, 00, 0xfc, 0x66, - 0xaf, 0xd9, 0xcf, 0xf8, 0x24, 0x97, 0xc2, 0xeb, 0x3d, 0xf, - 0xc0, 0x9a, 0x8f, 0x88, 0xf7, 0xda, 0x4f, 0x75, 0x2a, 0xac, - 0x20, 0xa4, 0x4a, 0x64, 0x5c, 0xf2, 0x4e, 0xee, 0xa3, 0xb5, - 0x73, 0x97, 0x3f, 0xf0, 0x49, 0x68, 0x1e, 0x65, 0x2a, 0x2c, - 0x4a, 0x67, 0x9c, 0x32, 0x8e, 0x3f, 0xef, 0x8a, 0xfb, 0x9f, - 0xe0, 0x27, 0xc1, 0x7d, 0x2b, 0xe0, 0x6f, 0x80, 0xad, 0x7c, - 0x3f, 0xa6, 0x41, 0x1c, 0x6c, 0xbf, 0x34, 0xce, 0x8a, 0xb9, - 0x76, 0xfa, 0x80, 0x33, 0x40, 0x1c, 0x67, 0xed, 0xab, 0xe3, - 0xa7, 0xf0, 0x2f, 0xc0, 0xed, 0x6e, 0xe6, 0x38, 0xae, 0x64, - 0x67, 0x85, 0x86, 0x6d, 0x64, 0x68, 0xd8, 0x60, 0x7f, 0x79, - 0x79, 0xaf, 0xe7, 0x7b, 0x54, 0xd5, 0x27, 0xd5, 0x75, 0x3b, - 0xab, 0xe9, 0xa4, 0x91, 0xa6, 0xb8, 0x95, 0xa4, 0x66, 0x79, - 0xb, 0xb6, 0x49, 0xcf, 0x2c, 0x79, 0x3f, 0x5a, 0xfe, 0x84, - 0x7f, 0x6c, 0xef, 0x83, 0x5e, 0x29, 0xf8, 0xdd, 0xe0, 0x23, - 0xa0, 0x78, 0x7f, 0x84, 0x98, 0x6c, 0x97, 0x13, 0x79, 0x67, - 0x69, 0xeb, 0xfa, 0x57, 0xe7, 0x4e, 0xa3, 0xff, 00, 0x4, - 0x9f, 0xf1, 0xa4, 0x20, 0x94, 0xb1, 0x6e, 0x3f, 0xbb, 0x72, - 0xbf, 0xe1, 0x40, 0x1f, 0x9f, 0xcb, 0x7b, 0x70, 0x9f, 0x76, - 0x69, 0x7, 0xd1, 0x8d, 0x58, 0x8f, 0x5d, 0xd4, 0x22, 0xfb, - 0xb7, 0x92, 0x8f, 0xf8, 0x15, 0x7d, 0xab, 0x7f, 0xff, 00, - 0x4, 0xbc, 0xf1, 0xd5, 0xb1, 0x21, 0x6c, 0xa6, 0xff, 00, - 0xbf, 0xcb, 0xfe, 0x15, 0xcf, 0x5f, 0x7f, 0xc1, 0x37, 0x7c, - 0x7d, 0x67, 0x9f, 0xf4, 0x29, 0xf8, 0xf5, 0x91, 0x3f, 0xc2, - 0x80, 0x3e, 0x55, 0x8b, 0xc6, 0x1a, 0xcc, 0x3f, 0x73, 0x50, - 0x98, 0x7e, 0x20, 0xd5, 0xb8, 0xbe, 0x22, 0xf8, 0x8a, 0x1f, - 0xbb, 0xaa, 0x4a, 0x3f, 0x5, 0xff, 00, 0xa, 0xf7, 0xfb, - 0xef, 0xd8, 0xb, 0xc7, 0xf6, 0x79, 0xff, 00, 0x42, 0x93, - 0x8f, 0x56, 0x5a, 0xc1, 0xbb, 0xfd, 0x89, 0xbe, 0x20, 0x5a, - 0xff, 00, 0xcb, 0x97, 0xeb, 0x9a, 00, 0xf2, 0x98, 0x7e, - 0x2c, 0xf8, 0xaa, 0x3, 0x95, 0xd5, 0x5f, 0xf1, 0x45, 0xff, - 00, 0xa, 0xd0, 0xb7, 0xf8, 0xe5, 0xe2, 0xfb, 0x72, 0x31, - 0xa9, 0x93, 0xf5, 0x45, 0xff, 00, 0xa, 0xeb, 0x6e, 0xbf, - 0x64, 0x7f, 0x1e, 0xdb, 0x1e, 0x6c, 0x94, 0xfe, 0x26, 0xb2, - 0x2e, 0x7f, 0x66, 0x8f, 0x1c, 0xdb, 0x7d, 0xed, 0x3d, 0x3f, - 0xef, 0xbf, 0xfe, 0xb5, 00, 0x32, 0x1f, 0xda, 0x37, 0xc6, - 0x50, 0xe3, 0xfd, 0x3b, 0x3f, 0x80, 0xff, 00, 0xa, 0xd4, - 0xb6, 0xfd, 0xaa, 0x7c, 0x69, 0x6f, 0x8f, 0xf4, 0xa2, 0xdf, - 0x88, 0x1f, 0xfb, 0x2d, 0x73, 0xb3, 0x7c, 0x5, 0xf1, 0x94, - 0x19, 0xdd, 0xa7, 0x2f, 0x1e, 0x92, 0xa, 0xa3, 0x37, 0xc1, - 0xcf, 0x15, 0xc1, 0xf7, 0xb4, 0xd2, 0x7e, 0x8e, 0x28, 0x3, - 0xd1, 0xec, 0xff, 00, 0x6c, 0xaf, 0x1b, 0x5a, 0xf4, 0x9d, - 0xcf, 0xfd, 0xb4, 0x1f, 0xfc, 0x4d, 0x6d, 0xd9, 0x7e, 0xdd, - 0x7e, 0x35, 0xb5, 0xc7, 0xef, 0x25, 0xfc, 0x24, 0x5f, 0xfe, - 0x26, 0xbc, 0x3e, 0x6f, 0x86, 0x7e, 0x25, 0x83, 0xef, 0x69, - 0x72, 0x7e, 0xc, 0xbf, 0xe3, 0x55, 0x64, 0xf0, 0x36, 0xbb, - 0x17, 0xde, 0xd3, 0x65, 0x1f, 0x97, 0xf8, 0xd0, 0x7, 0xd2, - 0xd6, 0x7f, 0xf0, 0x50, 0xbf, 0x19, 0x5b, 0x10, 0x4b, 0xdc, - 0x7e, 0xc, 0x9f, 0xfc, 0x4d, 0x6f, 0xd8, 0xff, 00, 0xc1, - 0x4b, 0x3c, 0x5f, 0x6b, 0xd5, 0xee, 0xff, 00, 0xf, 0x2f, - 0xfc, 0x2b, 0xe4, 0x19, 0x3c, 0x31, 0xaa, 0xc5, 0xf7, 0xac, - 0x65, 0x1f, 0x85, 0x55, 0x7d, 0x26, 0xf2, 0x3f, 0xbd, 0x6b, - 0x28, 0xff, 00, 0x80, 0x9a, 00, 0xfb, 0xaa, 0xc3, 0xfe, - 0xa, 0x99, 0xe2, 0xa8, 0x31, 0xb9, 0xef, 0x7, 0xd4, 0x47, - 0xfe, 0x15, 0xd1, 0xd8, 0xff, 00, 0xc1, 0x59, 0x3c, 0x43, - 0x10, 0x1, 0xe4, 0xb9, 0xfc, 0x55, 0x3f, 0xc2, 0xbf, 0x3b, - 0x1a, 0xda, 0x54, 0xfb, 0xd1, 0x38, 0xfa, 0xa9, 0xa6, 0x15, - 0x23, 0xa8, 0x22, 0x80, 0x3f, 0x4f, 0x34, 0xff, 00, 0xf8, - 0x2b, 0x8e, 0xa6, 0x88, 0x4, 0xac, 0xe7, 0xfd, 0xe5, 0x8f, - 0xff, 00, 0x89, 0xae, 0x86, 0xcb, 0xfe, 0xa, 0xe6, 0xd8, - 0x1e, 0x6a, 0xa1, 0xfa, 0x98, 0x87, 0xf4, 0xaf, 0xca, 0x1a, - 0x28, 0x3, 0xf5, 0xf6, 0xc7, 0xfe, 0xa, 0xdb, 0xa7, 0xb6, - 0x3c, 0xe8, 0x61, 0x3f, 0xf6, 0xd6, 0x31, 0xfd, 0x2b, 0xa3, - 0xd3, 0xbf, 0xe0, 0xab, 0xfe, 0x1d, 0x9b, 0x6, 0x5b, 0x48, - 0x4f, 0xfd, 0xbc, 0x25, 0x7e, 0x2f, 0xd0, 0x9, 0x1d, 0x28, - 0x3, 0xf7, 0xa, 0xc7, 0xfe, 0xa, 0x97, 0xe0, 0xe9, 0xf1, - 0xe6, 0x58, 0xa7, 0xe1, 0x74, 0x9f, 0xe3, 0x5b, 0xb6, 0x5f, - 0xf0, 0x53, 0x4f, 0x1, 0xdc, 0x63, 0x7d, 0x99, 0x5f, 0xa5, - 0xd4, 0x75, 0xf8, 0x44, 0x25, 0x75, 0x39, 0xe, 0xc3, 0xe8, - 0x6a, 0x45, 0xbd, 0xb8, 0x4f, 0xbb, 0x3c, 0xa3, 0xe8, 0xe6, - 0x80, 0x3f, 0x7d, 0x6d, 0x3f, 0xe0, 0xa2, 0xdf, 0xe, 0xee, - 0x71, 0x98, 0xe4, 0x42, 0x7f, 0xe9, 0xe2, 0x33, 0xfd, 0x6b, - 0x66, 0xd7, 0xf6, 0xf6, 0xf8, 0x6f, 0x73, 0x8c, 0xce, 0xe9, - 0x9f, 0xfa, 0x6b, 0x1f, 0xf8, 0xd7, 0xf3, 0xee, 0xba, 0xcd, - 0xfa, 0x7d, 0xdb, 0xdb, 0x81, 0xf4, 0x95, 0xbf, 0xc6, 0xa6, - 0x4f, 0x12, 0xea, 0xd1, 0xfd, 0xdd, 0x4e, 0xec, 0x7f, 0xdb, - 0x66, 0xff, 00, 0x1a, 00, 0xfe, 0x86, 0xed, 0xbf, 0x6d, - 0x5f, 0x86, 0xd7, 0x3, 0xfe, 0x42, 0x25, 0x7e, 0xaf, 0x1f, - 0xff, 00, 0x15, 0x5b, 0x36, 0xdf, 0xb5, 0x8f, 0xc3, 0x8b, - 0xa0, 0x8, 0xd6, 0x91, 0x73, 0xea, 0xf1, 0xff, 00, 0xf1, - 0x55, 0xfc, 0xea, 0x47, 0xe3, 0x7d, 0x7a, 0x2f, 0xbb, 0xab, - 0x5d, 0x8f, 0xfb, 0x6a, 0x6a, 0xec, 0x1f, 0x13, 0xbc, 0x4d, - 0x6e, 0x30, 0xba, 0xbd, 0xcf, 0xe3, 0x21, 0xff, 00, 0x1a, - 00, 0xfe, 0x8c, 0xad, 0xbf, 0x69, 0x1f, 0x87, 0xf7, 0x58, - 0xdb, 0xaf, 0xdb, 0x8f, 0xf7, 0xa4, 0x4f, 0xfe, 0x2a, 0xb5, - 0x2d, 0xfe, 0x37, 0xf8, 0x22, 0xe7, 0xee, 0x78, 0x86, 0xcb, - 0xf1, 0x99, 0x7f, 0xc6, 0xbf, 0x9c, 0x88, 0x3e, 0x33, 0xf8, - 0xb6, 0xdc, 0xfc, 0xba, 0xac, 0xc7, 0xea, 0xed, 0xfe, 0x35, - 0x7e, 0xf, 0xda, 0x3, 0xc6, 0x76, 0xfd, 0x35, 0x37, 0x3f, - 0x57, 0x7f, 0xfe, 0x2a, 0x80, 0x3f, 0xa3, 0xa8, 0x3e, 0x27, - 0xf8, 0x4e, 0xe7, 0xee, 0x78, 0x83, 0x4f, 0x3f, 0xf6, 0xf0, - 0xbf, 0xe3, 0x57, 0x63, 0xf1, 0xb7, 0x87, 0xe5, 0xfb, 0x9a, - 0xde, 0x9e, 0xdf, 0x4b, 0x94, 0xff, 00, 0x1a, 0xfe, 0x73, - 0x2d, 0xbf, 0x69, 0xef, 0x1c, 0xdb, 0x63, 0x1a, 0x8b, 0x1c, - 0x7f, 0xd3, 0x47, 0xff, 00, 0xe2, 0xab, 0x5e, 0xdb, 0xf6, - 0xbd, 0xf1, 0xdd, 0xbe, 0x3f, 0xd3, 0xe4, 0x20, 0x7a, 0x4d, - 0x27, 0xff, 00, 0x15, 0x40, 0x1f, 0xd1, 0x2a, 0x78, 0x93, - 0x49, 0x93, 0xee, 0xea, 0x96, 0x6d, 0xf4, 0xb8, 0x4f, 0xf1, - 0xab, 0x9, 0xaa, 0x59, 0xc9, 0xf7, 0x6e, 0xe0, 0x6f, 0xa4, - 0x8a, 0x7f, 0xad, 0x7f, 0x3d, 0x76, 0xbf, 0xb6, 0xdf, 0x8e, - 0x6d, 0xf1, 0x9b, 0xdb, 0x8e, 0x3d, 0x27, 0x7f, 0xfe, 0x2a, - 0xb7, 0xac, 0xff, 00, 0x6f, 0xcf, 0x1a, 0xdb, 0x1, 0x9b, - 0xcb, 0xcf, 0xc2, 0x66, 0xff, 00, 0xe2, 0xe8, 0x3, 0xf7, - 0xf1, 0x6e, 0x22, 0x7f, 0xbb, 0x22, 0x37, 0xd1, 0x85, 0x3c, - 0x10, 0x7a, 0x1c, 0xd7, 0xe0, 0xf5, 0x97, 0xfc, 0x14, 0x73, - 0xc6, 0x56, 0xd8, 0xcd, 0xe5, 0xf7, 0xfd, 0xfc, 0x6f, 0xfe, - 0x2e, 0xba, 0xb, 0xf, 0xf8, 0x29, 0xc7, 0x8b, 0x2d, 0xf1, - 0xbe, 0xf6, 0xfb, 0xf1, 0x66, 0x3f, 0xfb, 0x3d, 00, 0x7e, - 0xe1, 0x51, 0x5f, 0x8c, 0x16, 0x3f, 0xf0, 0x55, 0x3f, 0x11, - 0xc3, 0x8d, 0xf7, 0xd7, 0x7f, 0x88, 0x90, 0xff, 00, 0xec, - 0xf5, 0xd0, 0xd8, 0xff, 00, 0xc1, 0x59, 0xb5, 0x58, 0xf1, - 0xe6, 0xdd, 0x4c, 0xdf, 0xef, 0x47, 0x21, 0xff, 00, 0xd9, - 0xa8, 0x3, 0xf5, 0xfa, 0x8a, 0xfc, 0xa3, 0xd3, 0xff, 00, - 0xe0, 0xad, 0xf2, 0xd, 0xbe, 0x64, 0xa0, 0xfa, 0xee, 0x85, - 0xff, 00, 0xf8, 0xaa, 0xe9, 0xb4, 0xff, 00, 0xf8, 0x2b, - 0x75, 0x9b, 0x63, 0xcc, 0xf2, 0x1b, 0xeb, 0x1, 0xff, 00, - 0xe2, 0xa8, 0x3, 0xf4, 0xda, 0x8a, 0xfc, 0xef, 0xb0, 0xff, - 00, 0x82, 0xb1, 0x68, 0x72, 0xf1, 0x24, 0x30, 0x13, 0xff, - 00, 0x5c, 0x5b, 0xff, 00, 0x8a, 0xae, 0x86, 0xc3, 0xfe, - 0xa, 0x99, 0xe1, 0x59, 0xf1, 0xe6, 0xdb, 0xa7, 0x3f, 0xdd, - 0x8d, 0xbf, 0xf8, 0xaa, 00, 0xfb, 0xbe, 0x8a, 0xf8, 0xca, - 0xcb, 0xfe, 0xa, 0x63, 0xe0, 0x79, 0xf1, 0xe6, 0xc2, 0xe3, - 0x3f, 0xdd, 0x8c, 0xff, 00, 0x8d, 0x6e, 0x59, 0xff, 00, - 0xc1, 0x45, 0xfe, 0x1e, 0x4f, 0x8d, 0xfe, 0x7a, 0xfd, 0x13, - 0xff, 00, 0xaf, 0x40, 0x1f, 0x58, 0xd1, 0x5f, 0x35, 0x5a, - 0x7e, 0xdf, 0x5f, 0xd, 0x2e, 0x48, 0xcc, 0xf7, 0x2b, 0xff, - 00, 0x6c, 0xf3, 0x5b, 0x36, 0xbf, 0xb6, 0xd7, 0xc3, 0x1b, - 0xa2, 00, 0xd4, 0x2e, 0x57, 0x3e, 0xb0, 0xff, 00, 0xf5, - 0xe8, 0x3, 0xde, 0x9c, 0xe1, 0x49, 0xae, 0x67, 0x5d, 0x9c, - 0x80, 0x47, 0x35, 0xc4, 0x5a, 0x7e, 0xd4, 0xff, 00, 0xf, - 0x35, 0x3d, 0xa9, 0x6, 0xae, 0xc1, 0x9b, 0xa6, 0xe8, 0x88, - 0xae, 0x8a, 0xeb, 0x5a, 0xb7, 0xd5, 0xac, 0x92, 0xee, 0xda, - 0x4f, 0x36, 0xde, 0x55, 0xdc, 0x8e, 0x1, 0x19, 0x14, 0x1, - 0xc7, 0x78, 0x8e, 0xe4, 0x8d, 0xc3, 0x9a, 0xf2, 0x3f, 0x17, - 0xde, 0x30, 0xde, 0x30, 0x6b, 0xd2, 0xfc, 0x47, 0x79, 0xf3, - 0x3f, 0x35, 0xe3, 0x5e, 0x38, 0xd5, 0x44, 0x10, 0xcf, 0x21, - 0x6c, 0x5, 0x7, 0xb5, 0x26, 0xec, 0xae, 0x26, 0xec, 0xae, - 0x7c, 0x7f, 0xfb, 0x45, 0x6b, 0xb2, 0xdc, 0x5d, 0x98, 0xb6, - 0xba, 0xa9, 0x73, 0x9e, 0x4e, 0x38, 0xed, 0x8a, 0xf9, 0x77, - 0xc4, 0x37, 0xc, 0xcc, 0x46, 0xd, 0x7b, 0x8f, 0xc6, 0xcf, - 0x10, 0x7f, 0x68, 0x6a, 0xd2, 0x2e, 0xec, 0x85, 0x62, 0x7a, - 0x1a, 0xf0, 0xd, 0x6a, 0xe3, 0x7c, 0xcd, 0x5f, 0x12, 0x9f, - 0xb5, 0xc4, 0xca, 0x67, 0xe7, 0x51, 0x7e, 0xdb, 0x19, 0x39, - 0xee, 0x7a, 0x6f, 0xec, 0x83, 0xe1, 0x8, 0x3c, 0x6d, 0xfb, - 0x41, 0xf8, 0x76, 0xd6, 0xe9, 0xed, 0xd6, 0x1b, 0x52, 0xf7, - 0x45, 0x2e, 0x63, 0x59, 0x4, 0x85, 0x46, 0xd5, 00, 0x37, - 0xf1, 0x2, 0xc1, 0x81, 0xea, 0x36, 0xe4, 0x60, 0x8c, 0x8f, - 0xd9, 0xd, 0x3e, 0x15, 0x40, 0xaa, 0xa0, 0x2a, 0x81, 0x80, - 00, 0xc0, 0x2, 0xbf, 0x36, 0x3f, 0xe0, 0x9a, 0xde, 0x1, - 0x87, 0x58, 0xf1, 0x66, 0xb9, 0xe2, 0x79, 0xa2, 0x2e, 0xf6, - 0x45, 0x6d, 0xa2, 0x7f, 0x97, 0xb, 0xc6, 0xe6, 0xea, 0x33, - 0x9c, 0xf9, 0x7d, 0xf, 0x4c, 0xd7, 0xe9, 0x75, 0x84, 0x79, - 0x22, 0xbe, 0xbb, 0xf, 0x1e, 0x5a, 0x68, 0xfb, 0xac, 0x24, - 0x79, 0x69, 0x2f, 0x33, 0x66, 0xcd, 0x6, 0x40, 0xad, 0xeb, - 0x54, 0xe0, 0x56, 0x3d, 0x94, 0x7c, 0x8a, 0xdd, 0xb5, 0x4e, - 0x45, 0x74, 0x9d, 0x86, 0x95, 0xba, 0x8a, 0xbc, 0x17, 0x81, - 0x55, 0x2d, 0xd3, 0x9a, 0xbc, 0x7, 0x14, 0x1, 0x61, 0xcd, - 0x57, 0x93, 0x80, 0x6a, 0xc3, 0x9a, 0xad, 0x31, 0xe0, 0xd0, - 0x7, 0x17, 0xf1, 0x47, 0xc5, 0x9f, 0xf0, 0x83, 0xf8, 0x3, - 0xc4, 0x3a, 0xff, 00, 0x97, 0x24, 0x8d, 0xa7, 0xd9, 0x4b, - 0x3a, 0xac, 0x40, 0x16, 0xdc, 0x14, 0xed, 0xeb, 0xc6, 0x33, - 0x8c, 0x93, 0xd0, 0x66, 0xbc, 0x2b, 0xf6, 0x4a, 0xb3, 0x4b, - 0xf, 0x3, 0xd, 0x56, 0x79, 0x62, 0x9b, 0x50, 0xd5, 0xee, - 0x24, 0xbc, 0xb9, 0x99, 0x1b, 0x96, 0x62, 0xc7, 0xaf, 0x60, - 0x7a, 0xf0, 0x3d, 0x6b, 0x6f, 0xf6, 0xe5, 0xd7, 0x6f, 0x74, - 0x7f, 0x80, 0xd7, 0xd1, 0x59, 0xc7, 0x71, 0xb6, 0xfe, 0xf6, - 0xde, 0xd2, 0xe2, 0x78, 0x37, 0x1, 0xc, 0x45, 0x8b, 0x12, - 0xe4, 0x74, 0x46, 0x28, 0xb1, 0x9c, 0xe0, 0x1f, 0x30, 0xe, - 0xf8, 0x3c, 0xf7, 0xc1, 0x2b, 0xab, 0x7d, 0x27, 0xc0, 0x9a, - 0x2d, 0xbc, 0x12, 0xc6, 0xc8, 0xb0, 0x29, 0xcc, 0x78, 0xc1, - 0x27, 0x93, 0xd3, 0xeb, 0x5e, 0x24, 0xbf, 0x7b, 0x99, 0xa4, - 0xf6, 0x84, 0x2f, 0xf3, 0x93, 0xff, 00, 0x24, 0x7c, 0xec, - 0xbf, 0x7d, 0x9c, 0x45, 0x3d, 0xa9, 0xc1, 0xbf, 0x9c, 0x9d, - 0xbf, 0x24, 0x7d, 0x3d, 0xa6, 0xea, 0x8a, 0x14, 0x7c, 0xe3, - 0xf3, 0xad, 0x88, 0xf5, 0x8, 0xd8, 0x72, 0x45, 0x79, 0x5d, - 0x8e, 0xbc, 0xa0, 0xf, 0x9c, 0x7e, 0x75, 0xac, 0x9e, 0x21, - 0x18, 0xfb, 0xff, 00, 0xad, 0x7b, 0x67, 0xd1, 0x1d, 0x37, - 0x8c, 0xac, 0x8f, 0x88, 0xbc, 0x3d, 0x79, 0xa7, 0x43, 0x30, - 0x89, 0xae, 0x23, 0x68, 0xf7, 0xfa, 0x64, 0x62, 0xbe, 0x4a, - 0xf0, 0x7f, 0xfc, 0x13, 0xdb, 0xc2, 0xfa, 0xf, 0x8e, 0xec, - 0x7c, 0x41, 0x75, 0xd, 0x9d, 0xd3, 0x5b, 0xdc, 0x7d, 0xa4, - 0xee, 0x88, 0x64, 0xbe, 0x72, 0xf, 0xde, 0xeb, 0x9e, 0x6b, - 0xe9, 0x7, 0xf1, 0xe, 0xf, 0xde, 0xfd, 0x69, 0x57, 0xc4, - 0x7f, 0xed, 0xfe, 0xb4, 0x1, 0xde, 0x5a, 0xb5, 0xbd, 0xa5, - 0xb4, 0x50, 0x45, 0x84, 0x8e, 0x35, 0xa, 0xaa, 0x3a, 00, - 0x2a, 0x6f, 0xb4, 0xc6, 0x7f, 0x88, 0x57, 0x4, 0xbe, 0x23, - 0xff, 00, 0x6f, 0xf5, 0xa9, 0x17, 0xc4, 0x7f, 0xed, 0x7e, - 0xb4, 0x1, 0xdd, 0x79, 0xf1, 0xff, 00, 0x7c, 0x52, 0xf9, - 0xa9, 0xfd, 0xe1, 0x5c, 0x42, 0xf8, 0x88, 0x7f, 0x7b, 0xf5, - 0xa9, 0x17, 0xc4, 0x23, 0xfb, 0xdf, 0xad, 00, 0x76, 0x9e, - 0x62, 0xff, 00, 0x78, 0x51, 0xbd, 0x7d, 0x47, 0xe7, 0x5c, - 0x7a, 0xf8, 0x84, 0x7f, 0x7b, 0xf5, 0xa9, 0x17, 0xc4, 0x3, - 0xfb, 0xdf, 0xad, 00, 0x75, 0xbb, 0x87, 0xa8, 0xa3, 0x22, - 0xb9, 0x65, 0xd7, 0xd7, 0xfb, 0xdf, 0xad, 0x48, 0xba, 0xf2, - 0xff, 00, 0x7b, 0xf5, 0xa0, 0xe, 0x91, 0x91, 0x5f, 0xaa, - 0x83, 0xf5, 0x15, 0x13, 0xd8, 0x5b, 0x4b, 0xf7, 0xed, 0xe2, - 0x7f, 0xf7, 0x90, 0x1a, 0xc4, 0x5d, 0x79, 0x7f, 0xbf, 0xfa, - 0xd4, 0x8b, 0xae, 0xaf, 0xf7, 0xff, 00, 0x5a, 00, 0xd0, - 0x7d, 0xb, 0x4d, 0x94, 0x61, 0xf4, 0xfb, 0x57, 0x1f, 0xed, - 0x40, 0xa7, 0xfa, 0x55, 0x69, 0x7c, 0x1f, 0xa1, 0x4c, 0x30, - 0xfa, 0x2e, 0x9e, 0xc3, 0xde, 0xd9, 0x3f, 0xc2, 0xa3, 0x1a, - 0xe2, 0xff, 00, 0x7f, 0xf5, 0xa7, 0x8d, 0x69, 0x7f, 0xbc, - 0x28, 0x2, 0x94, 0xdf, 0xd, 0x7c, 0x29, 0x38, 0x21, 0xfc, - 0x3b, 0xa6, 0x9f, 0xfb, 0x76, 0x51, 0xfd, 0x2a, 0x8c, 0xdf, - 0x6, 0xbc, 0xf, 0x71, 0xfe, 0xb3, 0xc2, 0xfa, 0x69, 0xff, - 00, 0xb6, 00, 0x56, 0xf8, 0xd6, 0x17, 0xfb, 0xc2, 0x9c, - 0x35, 0x74, 0x3d, 0xc5, 00, 0x71, 0xb7, 0x1f, 0xb3, 0xd7, - 0xc3, 0x9b, 0xaf, 0xf5, 0x9e, 0x12, 0xd3, 0x8f, 0xd1, 0xf, - 0xf8, 0xd6, 0x5d, 0xcf, 0xec, 0xb1, 0xf0, 0xbe, 0xe7, 0x25, - 0xbc, 0x27, 0x66, 0xf, 0xa8, 0x6, 0xbd, 0x24, 0x6a, 0xa8, - 0x7b, 0x8a, 0x70, 0xd4, 0x90, 0xfa, 0x50, 0x7, 0x8f, 0x5d, - 0x7e, 0xc6, 0xff, 00, 0xa, 0xee, 0x81, 0xff, 00, 0x8a, - 0x6e, 0x4, 0xcf, 0xa6, 0x6b, 0x16, 0xf3, 0xf6, 0x14, 0xf8, - 0x5d, 0x77, 0x9c, 0x68, 0xf1, 0xc7, 0x9f, 0xf6, 0x49, 0xfe, - 0xb5, 0xef, 0xa3, 0x50, 0x8c, 0xf7, 0xa7, 0xb, 0xe8, 0xcf, - 0x7a, 00, 0xf9, 0x92, 0xeb, 0xfe, 0x9, 0xe3, 0xf0, 0xce, - 0xe0, 0x9d, 0xb6, 0xaa, 0x83, 0xd3, 0xca, 0x27, 0xff, 00, - 0x66, 0xac, 0x4b, 0xdf, 0xf8, 0x26, 0xa7, 0xc3, 0xbb, 0x8c, - 0xf9, 0x66, 0x34, 0xcf, 0xad, 0xb9, 0x3f, 0xfb, 0x3d, 0x7d, - 0x70, 0x2f, 0x23, 0x3d, 0xe9, 0x7e, 0xd5, 0x19, 0xef, 0x40, - 0x1f, 0x13, 0x6a, 0x1f, 0xf0, 0x4b, 0xaf, 0x5, 0x4e, 0x49, - 0x86, 0x6b, 0x75, 0xfa, 0xdb, 0x9f, 0xfe, 0x2a, 0xb9, 0xbd, - 0x43, 0xfe, 0x9, 0x4b, 0xe1, 0xb9, 0x73, 0xe5, 0x4d, 0x68, - 0x7f, 0xed, 0x87, 0xf8, 0xb5, 0x7d, 0xfc, 0x2e, 0x23, 0x3f, - 0xc5, 0x4a, 0x26, 0x43, 0xfc, 0x42, 0x80, 0x3f, 0x37, 0x6f, - 0xff, 00, 0xe0, 0x93, 0x1a, 0x73, 0x83, 0xe4, 0xfd, 0x8d, - 0xbf, 0xed, 0x98, 0x1f, 0xfb, 0x3d, 0x73, 0xd7, 0xdf, 0xf0, - 0x49, 0x29, 0x30, 0x4c, 0x50, 0xda, 0xb1, 0xed, 0x8d, 0xa3, - 0xff, 00, 0x6a, 0x57, 0xea, 0x2f, 0x98, 0xbf, 0xde, 0x14, - 0x6f, 0x5f, 0x51, 0xf9, 0xd0, 0x7, 0xe4, 0xc5, 0xef, 0xfc, - 0x12, 0x5b, 0x56, 0x19, 0x31, 0xd9, 0x46, 0x7d, 0x36, 0xba, - 0xff, 00, 0xf1, 0xca, 0xe7, 0x6f, 0xbf, 0xe0, 0x94, 0x1e, - 0x26, 0x42, 0x7c, 0xad, 0x2e, 0x46, 0x1e, 0xaa, 0xff, 00, - 0xfd, 0x9d, 0x7e, 0xc5, 0x6e, 0x1e, 0xa2, 0x8c, 0x8f, 0x5a, - 00, 0xfc, 0x53, 0xbf, 0xff, 00, 0x82, 0x58, 0x78, 0xda, - 0x2c, 0xf9, 0x5a, 0x2d, 0xe3, 0xf, 0xf6, 0x46, 0x7f, 0xf6, - 0x6a, 0xe7, 0xef, 0xff, 00, 0xe0, 0x99, 0x1e, 0x3f, 0x83, - 0x3b, 0x74, 0x3d, 0x47, 0x8f, 0x48, 0xb3, 0xff, 00, 0xb3, - 0x57, 0xee, 0x6d, 0x14, 0x1, 0xf8, 0x23, 0x7b, 0xff, 00, - 0x4, 0xe5, 0xf8, 0x89, 0x6c, 0xe, 0x34, 0x7d, 0x4b, 0x8f, - 0xfa, 0x77, 0xcf, 0xf5, 0xac, 0xb, 0xdf, 0xd8, 0x1f, 0xe2, - 0x2d, 0xae, 0x7f, 0xe2, 0x53, 0xa8, 0x71, 0xd8, 0xda, 0xff, - 00, 0xf5, 0xeb, 0xfa, 0xb, 0x28, 0xad, 0xd4, 0x3, 0xf5, - 0x15, 0x13, 0xd8, 0xdb, 0x49, 0xf7, 0xed, 0xe2, 0x7f, 0xf7, - 0x90, 0x1a, 00, 0xfe, 0x77, 0xae, 0xff, 00, 0x62, 0x9f, - 0x88, 0x76, 0xa4, 0xe7, 0x4a, 0xbd, 0xe3, 0xd6, 0xd4, 0xff, - 00, 0x8d, 0x64, 0xdd, 0x7e, 0xc9, 0x3f, 0x10, 0x2d, 0x73, - 0xbb, 0x47, 0xbb, 0xe3, 0xd6, 0xdc, 0x8f, 0xeb, 0x5f, 0xd1, - 0x83, 0xe8, 0x5a, 0x6c, 0xbf, 0x7f, 0x4f, 0xb5, 0x7f, 0xf7, - 0xa0, 0x53, 0xfd, 0x2a, 0xb4, 0xbe, 0x10, 0xd0, 0xa6, 0xfb, - 0xfa, 0x35, 0x83, 0x7d, 0x6d, 0x93, 0xfc, 0x28, 0x3, 0xf9, - 0xc1, 0xb9, 0xfd, 0x9a, 0x7c, 0x79, 0x6d, 0x9d, 0xda, 0x25, - 0xcf, 0xe3, 0x19, 0x15, 0x99, 0x3f, 0xc0, 0x7f, 0x1b, 0xc1, - 0xd7, 0x43, 0xb8, 0x3f, 0xf0, 0x1a, 0xfe, 0x90, 0xe7, 0xf8, - 0x6b, 0xe1, 0x5b, 0x8f, 0xf5, 0x9e, 0x1e, 0xd3, 0x89, 0xf5, - 0xfb, 0x32, 0x8f, 0xe9, 0x59, 0xd7, 0x1f, 0x5, 0xbc, 0x13, - 0x73, 0x9d, 0xfe, 0x1b, 0xd3, 0xf9, 0xf4, 0x81, 0x7f, 0xc2, - 0x80, 0x3f, 0x9b, 0xe9, 0x7e, 0x10, 0x78, 0xc2, 0x1f, 0xbd, - 0xa1, 0xdc, 0x9f, 0xa0, 0xaa, 0x72, 0x7c, 0x35, 0xf1, 0x44, - 0x5f, 0x7b, 0x44, 0xbb, 0x1f, 0xf0, 0xc, 0xd7, 0xf4, 0x71, - 0x73, 0xfb, 0x39, 0xfc, 0x3f, 0xbb, 0x27, 0x7f, 0x87, 0xad, - 0x46, 0x7d, 0x22, 0x4f, 0xf0, 0xac, 0x8b, 0xaf, 0xd9, 0x33, - 0xe1, 0xad, 0xd1, 0x25, 0xb4, 0x38, 0xd7, 0xfd, 0xd4, 0x8f, - 0xff, 00, 0x89, 0xa0, 0xf, 0xe7, 0x56, 0x4f, 0x3, 0xf8, - 0x82, 0x2f, 0xbf, 0xa4, 0x5d, 0x8f, 0xfb, 0x66, 0x6a, 0xb3, - 0xf8, 0x5f, 0x58, 0x8b, 0xef, 0x69, 0x97, 0x63, 0xfe, 0xd8, - 0xb7, 0xf8, 0x57, 0xf4, 0x37, 0x77, 0xfb, 0x14, 0xfc, 0x32, - 0xba, 0xcf, 0xfc, 0x4b, 0x19, 0x3e, 0x8b, 0x1f, 0xff, 00, - 0x11, 0x58, 0xb7, 0xbf, 0xb0, 0x4f, 0xc3, 0x6b, 0xac, 0xed, - 0xb7, 0x91, 0x33, 0xe9, 0x1c, 0x7f, 0xfc, 0x4d, 00, 0x7f, - 0x3e, 0xed, 0xa2, 0xea, 0x9, 0xf7, 0xac, 0x6e, 0x57, 0xeb, - 0x13, 0x7f, 0x85, 0x44, 0xda, 0x7d, 0xd2, 0x7d, 0xeb, 0x69, - 0x87, 0xd6, 0x33, 0x5f, 0xbd, 0xb7, 0xff, 00, 0xf0, 0x4e, - 0x8f, 00, 0xdc, 0x67, 0xca, 0x66, 0x4f, 0xaa, 0x27, 0xff, - 00, 0x13, 0x58, 0x17, 0xbf, 0xf0, 0x4c, 0xdf, 0x7, 0xce, - 0xf, 0x97, 0x70, 0xaa, 0x7f, 0xda, 0x45, 0xff, 00, 0xe2, - 0x28, 0x3, 0xf0, 0xb4, 0xc1, 0x22, 0xf5, 0x8d, 0x87, 0xd5, - 0x4d, 0x33, 0x7, 0xd2, 0xbf, 0x6d, 0xaf, 0x7f, 0xe0, 0x96, - 0xbe, 0x1e, 0x94, 0x37, 0x97, 0x77, 0x6d, 0xcf, 0xf7, 0x94, - 0x7f, 0xf1, 0xba, 0xe7, 0x2f, 0xbf, 0xe0, 0x94, 0x7a, 0x7c, - 0x99, 0xf2, 0xe7, 0xb1, 0x6f, 0x4c, 0xe3, 0xff, 00, 0x8d, - 0xd0, 0x7, 0xe3, 0x65, 0x15, 0xfa, 0xdd, 0xa8, 0x7f, 0xc1, - 0x26, 0x89, 0xc9, 0x8f, 0xec, 0x2c, 0x3d, 0x88, 0xff, 00, - 0xe2, 0x2b, 0x9a, 0xd4, 0x7f, 0xe0, 0x93, 0xba, 0x8a, 0xe7, - 0xca, 0x82, 0xdd, 0xbd, 0x36, 0xff, 00, 0xf5, 0x92, 0x80, - 0x3f, 0x2d, 0xc3, 0xb0, 0xe8, 0xc4, 0x7e, 0x35, 0x22, 0xdd, - 0xce, 0xbd, 0x26, 0x90, 0x7d, 0x1c, 0xd7, 0xe8, 0xf6, 0xa1, - 0xff, 00, 0x4, 0xa7, 0xf1, 0xa, 0x13, 0xe5, 0xd8, 0xb3, - 0x7f, 0xb8, 0x1b, 0xfa, 0x25, 0x73, 0x9a, 0x87, 0xfc, 0x12, - 0xcf, 0xc5, 0x90, 0xe7, 0x6e, 0x9b, 0x75, 0xff, 00, 0x1, - 0x57, 0xff, 00, 0xe2, 0x28, 0x3, 0xe0, 0x95, 0xd5, 0xaf, - 0x93, 0xee, 0xde, 0x5c, 0xf, 0xa4, 0xad, 0xfe, 0x35, 0x3a, - 0x78, 0x8f, 0x55, 0x8b, 0x1b, 0x75, 0x2b, 0xa5, 0xfa, 0x4c, - 0xdf, 0xe3, 0x5f, 0x66, 0x6a, 0x1f, 0xf0, 0x4c, 0xdf, 0x19, - 0x5b, 0x3, 0x8d, 0x3a, 0xfc, 0x7f, 0xdb, 0x37, 0xff, 00, - 0xe2, 0x2b, 0x92, 0xd6, 0xbf, 0xe0, 0x9f, 0x7e, 0x35, 0xd2, - 0xd7, 0x3f, 0xd9, 0xfa, 0x87, 0xe3, 0xb, 0x1f, 0xfd, 0x92, - 0x80, 0x3c, 0xf, 0xc1, 0xfe, 0x28, 0xf1, 0x26, 0xa9, 0xe2, - 0xd, 0x3e, 0xc6, 0x1d, 0x6e, 0x78, 0x4c, 0xd3, 0x24, 0x61, - 0xa5, 0x9b, 0xa, 0x32, 0x40, 0xe4, 0x9e, 0xd5, 0xfb, 0xe5, - 0xf0, 0x8f, 0x44, 0xff, 00, 0x84, 0x5b, 0xe1, 0x56, 0x83, - 0x61, 0xe7, 0xb, 0x96, 0x8a, 0xce, 0x3d, 0xd2, 0xa8, 0xc6, - 0xf2, 0x40, 0x24, 0xf5, 0x3f, 0xce, 0xbf, 0x24, 0x3e, 0xc, - 0x7e, 0xc7, 0x1e, 0x27, 0x83, 0xe2, 0xe7, 0x87, 0x53, 0x52, - 0xb4, 0x78, 0xac, 0x52, 0xed, 0x1e, 0x53, 0x72, 0xad, 0x10, - 0xc0, 0x39, 0xfb, 0xc4, 0x1, 0x5f, 0xb2, 0x92, 0x5a, 0xa6, - 0x93, 0xa2, 0xc3, 0x6b, 0xa, 0x6c, 0x8e, 0x24, 0x8, 0xaa, - 0x3b, 00, 0x30, 0x28, 0x3, 0x8b, 0xf1, 0x1d, 0xd3, 0x7c, - 0xe7, 0x9a, 0xf0, 0x8f, 0x89, 0xfa, 0xb4, 0x96, 0xba, 0x5d, - 0xcb, 0xa8, 0x7c, 0x91, 0x8e, 0x33, 0x5e, 0xc9, 0xe2, 0x7b, - 0xa6, 0x54, 0x93, 0xaf, 0xe5, 0x5f, 0x37, 0xfc, 0x6d, 0xd6, - 0x25, 0xb4, 0xd1, 0xe5, 0xa, 0x1f, 0x9c, 0xe7, 0xa, 0x6b, - 0x9f, 0x11, 0x3e, 0x4a, 0x52, 0x91, 0xcb, 0x8a, 0x9f, 0xb3, - 0xa3, 0x29, 0x79, 0x1f, 0x1a, 0xfc, 0x4b, 0xd5, 0x64, 0xbc, - 0xd5, 0x2e, 0x59, 0xb7, 0x70, 0xc4, 0x72, 0x6b, 0xc7, 0xb5, - 0x49, 0x8b, 0x48, 0xc7, 0x9a, 0xf4, 0x2f, 0x19, 0x5e, 0xbc, - 0xb3, 0x4e, 0xe7, 0x71, 0x25, 0x8f, 0x51, 0x5e, 0x6b, 0x7a, - 0x5a, 0x47, 0xda, 0x8, 0x5, 0x8e, 0x32, 0x4e, 0x7, 0xe6, - 0x6b, 0xe4, 0x30, 0x4b, 0x99, 0xb9, 0x77, 0x3e, 0x13, 0x2f, - 0x5c, 0xcd, 0xcd, 0xf5, 0x67, 0xe9, 0x67, 0xfc, 0x13, 0x9b, - 0xc0, 0x50, 0x68, 0x5f, 0xa, 0x9f, 0x5c, 0x61, 0x13, 0x5e, - 0x6a, 0x92, 0xb4, 0xa5, 0x95, 0xb7, 0x10, 0xb9, 0x2a, 0xa0, - 0xfa, 0x10, 0x17, 0xa0, 0xf5, 0x3e, 0xf5, 0xf6, 0x7d, 0x82, - 0xf3, 0x5e, 0x2d, 0xfb, 0x31, 0x78, 0x4e, 0xd3, 0xc2, 0x1f, - 0x8, 0xb4, 0xb, 0x1b, 0x51, 0xe, 0xd5, 0xb7, 0x4d, 0xcd, - 0xc, 0xde, 0x6a, 0xb1, 0xda, 0x32, 0x43, 0x64, 0xe7, 0x24, - 0xb1, 0xff, 00, 0x81, 0x57, 0xb7, 0x58, 0x20, 0xe2, 0xbe, - 0xd2, 0xb, 0x96, 0x29, 0x1f, 0xa1, 0x42, 0x3c, 0xb1, 0x48, - 0xdb, 0xb1, 0x5e, 0x7b, 0x56, 0xdd, 0xa0, 0x19, 0x15, 0x91, - 0x64, 0xa0, 0xe, 0xd5, 0xb5, 0x68, 0xbc, 0x55, 0x96, 0x69, - 0xdb, 0xad, 0x5c, 0xb, 0xc5, 0x54, 0xb7, 0x2, 0xae, 0xe, - 0x94, 0x1, 0x23, 0xd5, 0x69, 0x8f, 0x5a, 0xb4, 0xfc, 0x8a, - 0xad, 0x28, 0xcd, 00, 0x7c, 0xcb, 0xfb, 0x7b, 0xdf, 0xdb, - 0xda, 0x7c, 0x1, 0xba, 0x8a, 0x56, 0x61, 0x35, 0xd6, 0xa3, - 0x6b, 0xc, 0xa, 0xaf, 0x8d, 0xce, 0x18, 0xbe, 0x8, 0xc8, - 0xdd, 0xf2, 0xa3, 0x9c, 0x73, 0xc8, 0x7, 0x1c, 0x64, 0x79, - 0x3f, 0xc3, 0x4d, 0x61, 0xf4, 0xef, 0xb, 0xe9, 0xb0, 0xcc, - 0xe8, 0xaf, 0x1c, 0x8, 0x1b, 00, 0x1, 0x9c, 0xf, 0x6a, - 0xf7, 0x8f, 0xdb, 0x1b, 0xc0, 0xd7, 0x3e, 0x3a, 0xf8, 0x1d, - 0xab, 0xdb, 0x59, 0xc7, 0xb, 0xdd, 0x59, 0xcb, 0x1d, 0xf4, - 0x66, 0x55, 0x25, 0x81, 0x42, 0x73, 0xb0, 0x80, 0x70, 0xc4, - 0x12, 0x33, 0xe8, 0x48, 0xef, 0x5f, 0x8, 0xc1, 0xf1, 0x11, - 0xec, 0xbc, 0x37, 0x66, 0xd1, 0xce, 0xf9, 0x48, 0x95, 0x5b, - 0xcc, 0x7f, 0x98, 0x9c, 0x77, 0xe6, 0xbc, 0x2a, 0xb5, 0x63, - 0x85, 0xc6, 0x4a, 0xad, 0x4d, 0x9c, 0x55, 0xbe, 0x4d, 0xdf, - 0xf3, 0x3e, 0x6a, 0xbd, 0x68, 0xe0, 0xf1, 0xf3, 0xad, 0x57, - 0x67, 0x5, 0x6f, 0x93, 0x77, 0xfc, 0xd1, 0xf5, 0xad, 0xb7, - 0xc4, 0xb, 0x4b, 0x75, 0xf9, 0xee, 0x53, 0x8e, 0xd9, 0xa9, - 0xff, 00, 0xe1, 0x6a, 0xe9, 0xe9, 0xff, 00, 0x2d, 0xd4, - 0xff, 00, 0xc0, 0xbf, 0xfa, 0xd5, 0xf0, 0x7e, 0xa9, 0xf1, - 0x6f, 0x50, 0x9e, 0x46, 0xf2, 0x67, 0x75, 0x1f, 0xef, 0x11, - 0xfd, 0x6b, 0x25, 0xfe, 0x24, 0x6b, 0xc, 0x7f, 0xe3, 0xee, - 0x4c, 0x7b, 0x3b, 0x7f, 0x8d, 0x79, 0x55, 0x78, 0x81, 0x27, - 0x68, 0x44, 0xf1, 0x2b, 0x71, 0x42, 0x8b, 0xb5, 0x38, 0xdc, - 0xfd, 0x5, 0x6f, 0x8b, 0x36, 0xd, 0xff, 00, 0x2d, 0xd7, - 0xfe, 0xfa, 0xff, 00, 0xeb, 0x54, 0xb1, 0x7c, 0x52, 0xb0, - 0x6f, 0xf9, 0x78, 0x51, 0xf8, 0xd7, 0xe7, 0x8f, 0xfc, 0x2c, - 0x7d, 0x59, 0x4f, 0xfc, 0x7e, 0x49, 0xff, 00, 0x7d, 0xb7, - 0xf8, 0xd4, 0xf1, 0xfc, 0x50, 0xd5, 0xd0, 0xff, 00, 0xc7, - 0xe4, 0x9f, 0xf7, 0xdb, 0x7f, 0x8d, 0x62, 0xb8, 0x86, 0x5d, - 0x60, 0x60, 0xb8, 0xa6, 0x7d, 0x60, 0x7e, 0x88, 0xc7, 0xf1, - 0x2e, 0xc1, 0xbf, 0xe5, 0xe5, 0x47, 0xe3, 0x56, 0xa3, 0xf8, - 0x8b, 0x62, 0xdd, 0x2e, 0x93, 0xf3, 0xaf, 0xce, 0xe8, 0xfe, - 0x2d, 0x6a, 0xe9, 0xff, 00, 0x2f, 0x4e, 0x7f, 0xed, 0xa3, - 0x7f, 0x8d, 0x5b, 0x8b, 0xe3, 0x16, 0xaa, 0x9d, 0x6e, 0x24, - 0xff, 00, 0xbf, 0x87, 0xfc, 0x6b, 0x55, 0xc4, 0x2b, 0xac, - 0x4d, 0xd7, 0x15, 0x47, 0xac, 0xf, 0xd0, 0xe8, 0xfc, 0x7f, - 0x66, 0xdd, 0x2e, 0xd3, 0xf3, 0xab, 0x9, 0xe3, 0xab, 0x43, - 0xd2, 0xea, 0x3f, 0xfb, 0xea, 0xbf, 0x3d, 0x22, 0xf8, 0xd7, - 0xa9, 0xaf, 0x59, 0xe5, 0xff, 00, 0xbe, 0xcf, 0xf8, 0xd5, - 0xc8, 0xbe, 0x39, 0xea, 0xb, 0xd6, 0x69, 0x7f, 0xef, 0xa3, - 0xfe, 0x35, 0xaa, 0xe2, 0xa, 0x7d, 0x62, 0x6c, 0xb8, 0xa6, - 0x97, 0x58, 0x9f, 0xa0, 0xc9, 0xe3, 0x5b, 0x63, 0xd2, 0xe2, - 0x3f, 0xfb, 0xe8, 0x54, 0xe9, 0xe3, 0x8, 0x1b, 0xa4, 0xe9, - 0xff, 00, 0x7d, 0xa, 0xfc, 0xff, 00, 0x8b, 0xe3, 0xd5, - 0xe8, 0xeb, 0x34, 0xbf, 0xf7, 0xd1, 0xff, 00, 0x1a, 0xbd, - 0x7, 0xed, 0x1, 0x74, 0xf, 0x33, 0x49, 0xf8, 0xb1, 0xff, - 00, 0x1a, 0xd5, 0x67, 0xf4, 0x1e, 0xe8, 0xda, 0x3c, 0x4f, - 0x86, 0x7b, 0xa3, 0xef, 0x94, 0xf1, 0x6c, 0x47, 0xa4, 0xca, - 0x7f, 0xe0, 0x55, 0x32, 0xf8, 0xa6, 0x3f, 0xf9, 0xe8, 0xbf, - 0x9d, 0x7c, 0x1d, 0xf, 0xed, 0x7, 0x30, 0xeb, 0x71, 0x27, - 0xfd, 0xf4, 0x7f, 0xc6, 0xaf, 0x43, 0xfb, 0x43, 0x49, 0xc6, - 0x6e, 0x9c, 0x7f, 0xc0, 0xcf, 0xff, 00, 0x15, 0x5b, 0x2c, - 0xf3, 0xe, 0xcd, 0xd7, 0x12, 0x61, 0x19, 0xf7, 0x42, 0xf8, - 0x9d, 0x4f, 0xfc, 0xb4, 0x1f, 0x9d, 0x4c, 0xbe, 0x26, 0x5f, - 0xef, 0x8f, 0xce, 0xbe, 0x22, 0x83, 0xf6, 0x87, 0x6f, 0xf9, - 0xfb, 0x7f, 0xfb, 0xf9, 0xff, 00, 0xd7, 0xab, 0xf0, 0x7e, - 0xd0, 0xbe, 0xb7, 0xad, 0xff, 00, 0x7f, 0x3f, 0xfa, 0xf5, - 0xaa, 0xce, 0x70, 0xcf, 0xa9, 0xbc, 0x78, 0x83, 0x7, 0x2e, - 0xa7, 0xda, 0x4b, 0xe2, 0x65, 0xff, 00, 0x9e, 0x82, 0xa5, - 0x5f, 0x12, 0xaf, 0xfc, 0xf4, 0x15, 0xf1, 0xbc, 0x3f, 0xb4, - 0x18, 0x3f, 0xf2, 0xf8, 0xdf, 0x8c, 0x9f, 0xfd, 0x7a, 0xbf, - 0xf, 0xc7, 0xf4, 0x3d, 0x6f, 0xf, 0xfd, 0xf7, 0xff, 00, - 0xd7, 0xad, 0x96, 0x6b, 0x86, 0x7d, 0x4d, 0xd6, 0x77, 0x84, - 0x7f, 0x68, 0xfa, 0xf9, 0x7c, 0x48, 0xbf, 0xdf, 0x1f, 0x9d, - 0x48, 0xbe, 0x24, 0x1f, 0xdf, 0x1f, 0x9d, 0x7c, 0x9b, 0x7, - 0xc7, 0xa8, 0xdb, 0x1f, 0xe9, 0x5f, 0x9b, 0x7f, 0xf5, 0xea, - 0xf4, 0x3f, 0x1d, 0xe2, 0x38, 0xff, 00, 0x49, 0x53, 0xff, - 00, 0x2, 0xff, 00, 0xeb, 0xd6, 0xab, 0x31, 0xc3, 0xbf, - 0xb4, 0x6e, 0xb3, 0x6c, 0x2b, 0xfb, 0x47, 0xd5, 0x2b, 0xe2, - 0x41, 0xfd, 0xf1, 0xf9, 0xd4, 0x8b, 0xe2, 0x41, 0xfd, 0xf1, - 0xf9, 0xd7, 0xcc, 0x30, 0x7c, 0x71, 0x84, 0xf5, 0xb8, 0x4f, - 0xfb, 0xeb, 0xff, 00, 0xaf, 0x57, 0x62, 0xf8, 0xd7, 0x3, - 0x7f, 0xcb, 0x74, 0x3f, 0xf0, 0x2f, 0xfe, 0xbd, 0x6a, 0xb1, - 0xb4, 0x1f, 0xda, 0x36, 0x59, 0x8e, 0x19, 0xfd, 0xa3, 0xe9, - 0x65, 0xf1, 0x20, 0xfe, 0xf8, 0xfc, 0xea, 0x45, 0xf1, 0x18, - 0xfe, 0xf8, 0xfc, 0xeb, 0xe7, 0x18, 0xbe, 0x33, 0x5b, 0x37, - 0xfc, 0xb6, 0x5f, 0xfb, 0xef, 0xff, 00, 0xaf, 0x57, 0x21, - 0xf8, 0xbd, 0x6a, 0xdd, 0x65, 0x1f, 0x83, 0xff, 00, 0xf5, - 0xeb, 0x45, 0x8a, 0xa2, 0xfe, 0xd1, 0xaa, 0xc6, 0xe1, 0xdf, - 0xda, 0x3e, 0x87, 0x5f, 0x11, 0x8f, 0xef, 0x8a, 0x91, 0x7c, - 0x46, 0x3f, 0xbe, 0x2b, 0xe7, 0xf8, 0xbe, 0x2c, 0x5a, 0x37, - 0xfc, 0xb6, 0x3f, 0xf7, 0xd0, 0xff, 00, 0x1a, 0xb5, 0x1f, - 0xc5, 0x1b, 0x46, 0xc7, 0xef, 0xcf, 0xfd, 0xf4, 0x3f, 0xc6, - 0xad, 0x57, 0xa4, 0xfe, 0xd1, 0xa2, 0xc4, 0xd1, 0x7b, 0x49, - 0x1e, 0xf4, 0xbe, 0x23, 0x1f, 0xdf, 0x1f, 0x9d, 0x4a, 0xbe, - 0x23, 0x1f, 0xdf, 0x15, 0xe1, 0x51, 0xfc, 0x4b, 0xb4, 0x6f, - 0xf9, 0x78, 0x3f, 0xf7, 0xd0, 0xff, 00, 0x1a, 0xb3, 0x1f, - 0xc4, 0x4b, 0x53, 0xff, 00, 0x2f, 0x3f, 0xf8, 0xf7, 0xff, - 00, 0x5e, 0xa9, 0x55, 0x83, 0xea, 0x5a, 0xad, 0x4d, 0xfd, - 0xa4, 0x7b, 0x82, 0xf8, 0x88, 0x7f, 0x7c, 0x53, 0xd7, 0xc4, - 0x2b, 0xfd, 0xf1, 0x5e, 0x28, 0x9e, 0x3e, 0xb6, 0x38, 0xff, - 00, 0x49, 0x1f, 0xf7, 0xd7, 0xff, 00, 0x5e, 0xac, 0xc7, - 0xe3, 0x88, 0x1b, 0xfe, 0x5e, 0x57, 0xfe, 0xfa, 0xff, 00, - 0xeb, 0xd5, 0x73, 0xc5, 0xf5, 0x2f, 0x9e, 0x2f, 0xa9, 0xec, - 0xeb, 0xe2, 0x15, 0xfe, 0xf0, 0xfc, 0xe9, 0xeb, 0xe2, 0x5, - 0xfe, 0xf0, 0xfc, 0xeb, 0xc7, 0x13, 0xc6, 0x91, 0x1f, 0xf9, - 0x79, 0x5f, 0xfb, 0xef, 0xff, 00, 0xaf, 0x53, 0xa7, 0x8c, - 0x23, 0x3f, 0xf2, 0xdd, 0x7f, 0xef, 0xbf, 0xfe, 0xbd, 0x55, - 0xd1, 0x57, 0x5d, 0xcf, 0x60, 0x5d, 0x7d, 0x7f, 0xbc, 0x3f, - 0x3a, 0x91, 0x75, 0xf4, 0xfe, 0xf8, 0xaf, 0x21, 0x4f, 0x16, - 0x29, 0xe9, 0x30, 0xff, 00, 0xbe, 0xbf, 0xfa, 0xf5, 0x32, - 0xf8, 0xa4, 0x1f, 0xf9, 0x6b, 0xff, 00, 0x8f, 0x53, 0x19, - 0xeb, 0x8b, 0xaf, 0x27, 0xf7, 0xc5, 0x48, 0xba, 0xea, 0x7f, - 0x7c, 0x57, 0x92, 0xaf, 0x89, 0xff, 00, 0xe9, 0xa1, 0xfc, - 0xea, 0x55, 0xf1, 0x3f, 0xfd, 0x34, 0x3f, 0x9d, 00, 0x7a, - 0xc0, 0xd6, 0xd3, 0xfb, 0xe2, 0x9e, 0x35, 0xa4, 0x3f, 0xc4, - 0x2b, 0xca, 0x17, 0xc4, 0xff, 00, 0xf4, 0xd0, 0xfe, 0x75, - 0x2a, 0xf8, 0x9b, 0xfe, 0x9a, 0x1f, 0xce, 0x80, 0x3d, 0x54, - 0x6b, 0x8, 0x7f, 0x88, 0x53, 0x86, 0xad, 0x19, 0xee, 0x3f, - 0x3a, 0xf2, 0xd5, 0xf1, 0x2f, 0xfd, 0x34, 0x3f, 0x9d, 0x48, - 0xbe, 0x25, 0x3f, 0xf3, 0xd3, 0xf5, 0xa0, 0xf, 0x51, 0x1a, - 0xa4, 0x67, 0xb8, 0xfc, 0xe9, 0xc3, 0x52, 0x8c, 0xf7, 0x1f, - 0x9d, 0x79, 0x82, 0xf8, 0x94, 0xff, 00, 0xcf, 0x4f, 0xd6, - 0xa5, 0x5f, 0x12, 0x1f, 0xf9, 0xe8, 0x7f, 0x3a, 00, 0xf4, - 0xc1, 0x7f, 0x11, 0xef, 0xfa, 0xd2, 0x8b, 0xd8, 0x8f, 0x7a, - 0xf3, 0x65, 0xf1, 0x21, 0xff, 00, 0x9e, 0x87, 0xf3, 0xa9, - 0x57, 0xc4, 0x87, 0xfe, 0x7a, 0x1f, 0xce, 0x80, 0x3d, 0x18, - 0x5d, 0xc6, 0x7f, 0x8a, 0x94, 0x5c, 0xc6, 0x7f, 0x88, 0x57, - 0x9e, 0x2f, 0x89, 0xf, 0xf7, 0xcf, 0xe7, 0x52, 0x2f, 0x89, - 0xf, 0xfc, 0xf4, 0x3f, 0x9d, 00, 0x7a, 0x7, 0x9f, 0x19, - 0xfe, 0x21, 0x4b, 0xe6, 0xa7, 0xf7, 0x85, 0x70, 0x4b, 0xe2, - 0x33, 0xfd, 0xff, 00, 0xd6, 0xa5, 0x5f, 0x11, 0xff, 00, - 0xb7, 0xfa, 0xd0, 0x7, 0x73, 0xe6, 0x2f, 0xf7, 0x85, 0x2e, - 0xe5, 0xf5, 0x1f, 0x9d, 0x71, 0x2b, 0xe2, 0x3f, 0xf6, 0xff, - 00, 0x5a, 0x91, 0x7c, 0x45, 0xfe, 0xdf, 0xeb, 0x40, 0x1d, - 0x96, 0xe1, 0xea, 0x28, 0xcd, 0x72, 0x2b, 0xe2, 0x2f, 0xf6, - 0xff, 00, 0x5a, 0x90, 0x78, 0x84, 0x7f, 0x7f, 0xf5, 0xa0, - 0xe, 0xa8, 0x9c, 0x55, 0x7b, 0x8b, 0xb8, 0xe3, 0x52, 0x9, - 0xd, 0xec, 0x6b, 0x9c, 0x97, 0xc4, 0x3c, 0x7d, 0xff, 00, - 0xd6, 0xb1, 0xef, 0xfc, 0x40, 0x48, 0x38, 0x7f, 0xd6, 0x80, - 0x2f, 0x6b, 0x26, 0xc2, 0x49, 0x44, 0x8d, 0x4, 0x46, 0x44, - 0xe4, 0x36, 0xd1, 0x91, 0x5c, 0x77, 0x88, 0x35, 0x65, 0x11, - 0xb0, 0xcf, 0xeb, 0x55, 0xf5, 0x4d, 0x78, 0xe0, 0xfc, 0xff, - 00, 0xad, 0x70, 0xba, 0xf6, 0xba, 0x4a, 0xb7, 0xcf, 0xfa, - 0xd0, 0x6, 0x77, 0x8a, 0x75, 0x25, 0x28, 0xe0, 0x37, 0x3f, - 0x5a, 0xf9, 0x3b, 0xf6, 0x84, 0xf1, 0x1f, 0x95, 0x6f, 0x2c, - 0x21, 0x8f, 0x3, 0x18, 0xd, 0x5e, 0xe9, 0xe2, 0x5d, 0x70, - 0x90, 0xdf, 0x38, 0xfc, 0xeb, 0xe4, 0x5f, 0x8e, 0xda, 0xab, - 0xcd, 0x73, 0x36, 0xe9, 0x15, 0xbe, 0x6f, 0x5a, 0xf2, 0x73, - 0x39, 0xb8, 0xe1, 0xdd, 0xba, 0x9e, 0x1e, 0x71, 0x52, 0x50, - 0xc2, 0xbe, 0x5e, 0xa7, 0xcf, 0xbe, 0x28, 0xbb, 0x24, 0x3e, - 0x4f, 0x53, 0xeb, 0x58, 0xfe, 0x4, 0xf0, 0xe4, 0x9e, 0x34, - 0xf1, 0xf6, 0x85, 0xa2, 0x46, 0x14, 0xfd, 0xb2, 0xed, 0x11, - 0xf7, 0xe4, 0xae, 0xc0, 0x72, 0xf9, 0xc7, 0xfb, 0x20, 0xd4, - 0xfe, 0x22, 0x90, 0xbe, 0x79, 0xef, 0x5d, 0xff, 00, 0xec, - 0x79, 0x61, 0x16, 0xa3, 0xfb, 0x40, 0x68, 0x82, 0x68, 0x9e, - 0x61, 0x14, 0x53, 0x3a, 0x84, 0x50, 0xd8, 0x25, 0x76, 0xe4, - 0xe7, 0xa7, 0xc, 0x47, 0xd4, 0x8a, 0xf2, 0xb2, 0xfa, 0x6a, - 0xc9, 0x1e, 0x26, 0x57, 0x49, 0x5a, 0x28, 0xfd, 0x6f, 0xf0, - 0x6e, 0x8e, 0x9a, 0x2e, 0x81, 0x61, 0x65, 0x1a, 0x2a, 0x8, - 0xa2, 0x51, 0xb5, 0x54, 0x28, 0x4, 0xf2, 0x78, 0x15, 0xd9, - 0x58, 0xc7, 0x80, 0x2b, 0x1a, 0xcc, 0xe, 0x2b, 0x7e, 0xc0, - 0xe, 0x2b, 0xea, 0xcf, 0xb7, 0x36, 0xac, 0xa3, 0xc0, 0x15, - 0xb3, 0x6a, 0x9c, 0x56, 0x55, 0x98, 0xe9, 0xd6, 0xb6, 0x6d, - 0xba, 0x50, 0x5, 0xfb, 0x75, 0xab, 0x61, 0x78, 0xaa, 0xd0, - 0x74, 0xab, 00, 0xf1, 0x40, 0x13, 0x38, 0xaa, 0xd2, 0x8e, - 0x2a, 0xd3, 0xa, 0xae, 0xeb, 0x40, 0x1c, 0xe7, 0x8a, 0xb4, - 0x58, 0xfc, 0x41, 0xa0, 0xea, 0x1a, 0x6c, 0xa9, 0x13, 0xa5, - 0xd4, 0x2f, 0x11, 0x13, 0x21, 0x75, 0xe4, 0x70, 0x48, 0x4, - 0x13, 0x83, 0xcf, 0x4, 0x7d, 0x45, 0x7e, 0x3f, 0xfc, 0x47, - 0xf0, 0xcd, 0xc7, 0x86, 0xfc, 0x4b, 0xa8, 0xe8, 0xf2, 0x5, - 0xd, 0x69, 0x70, 0xca, 0xc8, 0xa8, 0x54, 0x2e, 0x79, 0xda, - 0x1, 0x27, 00, 0x67, 0x18, 0xe7, 0xa5, 0x7e, 0xcc, 0x4f, - 0x1e, 0x73, 0x5f, 0x2b, 0x7e, 0xd6, 0x7f, 0xb3, 0xb4, 0xde, - 0x38, 0x6f, 0xf8, 0x4a, 0x34, 0x58, 0x62, 0x37, 0x90, 0x45, - 0xb6, 0xe6, 0x25, 0x7, 0x74, 0x83, 0x3f, 0x7b, 0x1, 0x4e, - 0x70, 0x3a, 0xfa, 0x63, 0xdc, 0xe3, 0xe7, 0x73, 0xcc, 0x1d, - 0x4c, 0x56, 0x1f, 0x9a, 0x82, 0xbc, 0xe3, 0xad, 0xbb, 0xae, - 0xab, 0xfa, 0xec, 0x7c, 0xa7, 0x11, 0xe5, 0xf5, 0x71, 0xb8, - 0x4e, 0x6c, 0x3a, 0xbc, 0xe1, 0xad, 0xbb, 0xae, 0xab, 0xf5, - 0xf9, 0x5b, 0xa9, 0xf9, 0xb3, 0x75, 0x60, 0xfb, 0x89, 0x51, - 0x8a, 0xaa, 0x55, 0xd7, 0x86, 0x15, 0xe9, 0xba, 0x97, 0x86, - 0x25, 0xb4, 0x99, 0xe2, 0x9a, 0x16, 0x8e, 0x45, 0xe1, 0x95, - 0x86, 0x8, 0xaa, 0xb1, 0x78, 0x1e, 0x7b, 0xb1, 0x91, 0x19, - 0x19, 0xf6, 0xff, 00, 0xeb, 0x57, 0xe5, 0x94, 0xf1, 0x3c, - 0xcf, 0x91, 0xad, 0x51, 0xf8, 0xb5, 0x2c, 0x67, 0x34, 0xbd, - 0x9b, 0x5a, 0xaf, 0xbd, 0x1e, 0x6c, 0xfd, 0x69, 0xb5, 0xe9, - 0x72, 0xfc, 0x36, 0xb8, 0x3f, 0xc2, 0x7f, 0x2f, 0xfe, 0xb5, - 0x55, 0x97, 0xe1, 0xcd, 0xca, 0xf4, 0x43, 0xf9, 0x1f, 0xf0, - 0xae, 0xf5, 0x27, 0x6d, 0x8f, 0x4d, 0x4d, 0xdb, 0xe1, 0x3c, - 0xfa, 0x8a, 0xee, 0x1f, 0xe1, 0xed, 0xd8, 0xff, 00, 0x96, - 0x67, 0xfe, 0xf9, 0xaa, 0xf2, 0x78, 0xe, 0xed, 0x7f, 0xe5, - 0x91, 0xff, 00, 0xbe, 0x4f, 0xf8, 0x51, 0xcd, 0xe4, 0x3e, - 0x7f, 0x23, 0x8f, 0xcd, 0x2e, 0xe3, 0xeb, 0x5d, 0x3b, 0xf8, - 0x2a, 0xed, 0x7f, 0xe5, 0x89, 0xfc, 0x8f, 0xf8, 0x54, 0x2f, - 0xe1, 0xb, 0xa5, 0xff, 00, 0x96, 0x4d, 0xf9, 0x1f, 0xf0, - 0xa3, 0x9d, 0x7, 0xb4, 0x5d, 0x8e, 0x7b, 0x7b, 0x7a, 0xd2, - 0xf9, 0x8d, 0xeb, 0x5b, 0x4d, 0xe1, 0x7b, 0x95, 0xff, 00, - 0x96, 0x4f, 0xf9, 0x1a, 0x89, 0xbc, 0x3b, 0x72, 0x3f, 0xe5, - 0x93, 0xfe, 0x54, 0x73, 0xc4, 0x3d, 0xa4, 0xc, 0xbf, 0x39, - 0xfd, 0x69, 0x45, 0xc3, 0x8f, 0xe2, 0xab, 0xcd, 0xa1, 0xce, - 0xbd, 0x51, 0xc7, 0xe0, 0x69, 0x87, 0x48, 0x9c, 0x7f, 0x3, - 0x7e, 0x54, 0x73, 0x44, 0x39, 0xe0, 0x55, 0x17, 0x2e, 0x3b, - 0xd3, 0x85, 0xdb, 0xd4, 0xad, 0xa6, 0x4c, 0xbf, 0xc2, 0x7f, - 0x23, 0x51, 0x9b, 0x19, 0x47, 0x6a, 0x2f, 0x10, 0xbd, 0x36, - 0x2, 0xf9, 0xc5, 0x3d, 0x75, 0x19, 0x17, 0xa1, 0x3f, 0x9d, - 0x47, 0xf6, 0x39, 0x47, 0xf0, 0xd3, 0x4d, 0xb4, 0x83, 0xf8, - 0x68, 0xb4, 0x42, 0xd4, 0xcb, 0x4b, 0xab, 0x4c, 0x3f, 0x8d, - 0x87, 0xe3, 0x52, 0xae, 0xbd, 0x70, 0xbd, 0x24, 0x61, 0xf8, - 0xd6, 0x7f, 0x91, 0x27, 0xf7, 0x4d, 0x21, 0x89, 0xc7, 0xf0, - 0x9a, 0x39, 0x62, 0x1c, 0xb1, 0xe8, 0x6b, 0x27, 0x89, 0x6e, - 0x93, 0xa4, 0xcd, 0x53, 0xa7, 0x8b, 0x6f, 0x57, 0xa5, 0xc3, - 0x56, 0xe, 0xc6, 0x1f, 0xc2, 0x7f, 0x2a, 0x4d, 0xa7, 0xd0, - 0xfe, 0x54, 0xed, 0xe6, 0x57, 0x2a, 0xe8, 0xce, 0x9a, 0x3f, - 0x1b, 0x5f, 0x2f, 0x4b, 0x83, 0xf9, 0x55, 0x98, 0xfc, 0x7f, - 0xa8, 0x27, 0xfc, 0xb7, 0x26, 0xb9, 0xc, 0x1f, 0x4a, 0x4a, - 0xad, 0x57, 0x56, 0x35, 0xcc, 0xb6, 0x93, 0x3b, 0xa8, 0xfe, - 0x24, 0xea, 0x29, 0x8f, 0xde, 0xff, 00, 0x9f, 0xca, 0xac, - 0xc7, 0xf1, 0x4b, 0x50, 0x4c, 0x7c, 0xe4, 0xfe, 0x3f, 0xfd, - 0x6a, 0xf3, 0xca, 0x2a, 0xb9, 0xaa, 0x2d, 0xa4, 0xcb, 0x52, - 0xa8, 0xb6, 0x9b, 0x3d, 0x3e, 0x1f, 0x8b, 0xba, 0x82, 0xf5, - 0x63, 0xf9, 0x8f, 0xf0, 0xab, 0x90, 0xfc, 0x66, 0xbe, 0x4e, - 0xa5, 0xbf, 0x31, 0xfe, 0x15, 0xe4, 0x99, 0xa5, 0xdc, 0x7d, - 0x4d, 0x52, 0xab, 0x59, 0x6d, 0x36, 0x5a, 0xad, 0x5d, 0x6d, - 0x36, 0x7b, 0x34, 0x3f, 0x1b, 0x6e, 0xd7, 0xab, 0x37, 0xe9, - 0xfe, 0x15, 0x76, 0x1f, 0x8e, 0x77, 0x3, 0xab, 0x91, 0xfe, - 0x7e, 0x95, 0xe1, 0x9b, 0x8f, 0xa9, 0xa5, 0xf3, 0x1b, 0xfb, - 0xc6, 0xb4, 0x58, 0x9a, 0xeb, 0xed, 0x9a, 0x2c, 0x56, 0x25, - 0x6d, 0x33, 0xe8, 0x8, 0x7e, 0x3c, 0xc8, 0x3a, 0xb9, 0xff, - 00, 0x3f, 0x85, 0x5e, 0x87, 0xe3, 0xe1, 0x18, 0xcc, 0x9f, - 0xe7, 0xf2, 0xaf, 0x9c, 0xbc, 0xd7, 0x1d, 0xcd, 0x28, 0x9d, - 0xc7, 0xf1, 0x1a, 0xb5, 0x8c, 0xc4, 0xaf, 0xb4, 0x6a, 0xb1, - 0xf8, 0xc5, 0xb4, 0xcf, 0xa7, 0x20, 0xf8, 0xfa, 0xbc, 0x7e, - 0xf7, 0xf5, 0xff, 00, 0xeb, 0x56, 0x84, 0x1f, 0x1f, 0x13, - 0x8c, 0xcd, 0xfa, 0xff, 00, 0xf5, 0xab, 0xe5, 0x4f, 0xb4, - 0xc8, 0x3b, 0xd2, 0xfd, 0xae, 0x41, 0xde, 0xb5, 0x59, 0x8e, - 0x29, 0x7d, 0xa3, 0x65, 0x9a, 0xe3, 0x63, 0xf6, 0x8f, 0xae, - 0x60, 0xf8, 0xf6, 0x87, 0x1f, 0xbe, 0x3f, 0x9f, 0xff, 00, - 0x5a, 0xb4, 0xa0, 0xf8, 0xf5, 0x1f, 0x1f, 0xe9, 0x7, 0xfc, - 0xfe, 0x15, 0xf1, 0xb0, 0xbd, 0x93, 0xd6, 0x9e, 0x35, 0x19, - 0x57, 0xa3, 0x1f, 0xce, 0xb5, 0x59, 0xae, 0x29, 0x75, 0x36, - 0x8e, 0x75, 0x8d, 0x8f, 0x53, 0xed, 0x58, 0x3e, 0x3b, 0xc6, - 0x7f, 0xe5, 0xe3, 0xfc, 0xfe, 0x55, 0x7e, 0x1f, 0x8e, 0x91, - 0x9c, 0x7f, 0xa4, 0xf, 0xf3, 0xf8, 0x57, 0xc3, 0xc3, 0x55, - 0x98, 0x74, 0x77, 0x1f, 0x89, 0xa9, 0x17, 0x5b, 0xb8, 0x1d, - 0x25, 0x90, 0x7f, 0xc0, 0x8d, 0x6a, 0xb3, 0x9c, 0x52, 0x37, - 0x59, 0xfe, 0x31, 0x1f, 0x75, 0xc3, 0xf1, 0xbe, 0x23, 0x8f, - 0xdf, 0x2f, 0xf9, 0xfc, 0x2a, 0xf4, 0x3f, 0x1a, 0xa1, 0x6c, - 0x7e, 0xf5, 0x4f, 0xf9, 0xfa, 0x57, 0xc1, 0x69, 0xe2, 0x2b, - 0xa4, 0xe9, 0x3c, 0x9f, 0xf7, 0xd1, 0xa9, 0x93, 0xc5, 0x37, - 0x89, 0xff, 00, 0x2f, 0x12, 0x7f, 0xdf, 0x46, 0xb6, 0x59, - 0xe6, 0x21, 0x6e, 0x8d, 0x97, 0x11, 0xe2, 0x96, 0xe8, 0xfb, - 0xea, 0x2f, 0x8c, 0x96, 0xed, 0xfc, 0x6b, 0xf9, 0xff, 00, - 0xf5, 0xaa, 0xf4, 0x3f, 0x17, 0x6d, 0x9b, 0xab, 0xf, 0xcf, - 0xff, 00, 0xad, 0x5f, 0x9f, 0xc9, 0xe3, 0x2b, 0xe5, 0xe9, - 0x72, 0xff, 00, 0x99, 0xff, 00, 0x1a, 0x9d, 0x3c, 0x79, - 0xa8, 0x27, 0xfc, 0xbc, 0x37, 0xe6, 0x7f, 0xc6, 0xb5, 0x59, - 0xf5, 0x55, 0xbc, 0x4d, 0xd7, 0x13, 0x57, 0x5b, 0xc4, 0xfd, - 0x5, 0x8b, 0xe2, 0xbd, 0xab, 0x7f, 0x17, 0xeb, 0xff, 00, - 0xd6, 0xab, 0x51, 0xfc, 0x51, 0xb4, 0x6f, 0xe3, 0xc7, 0xe3, - 0xff, 00, 0xd6, 0xaf, 0xcf, 0x98, 0xfe, 0x22, 0xea, 0x49, - 0xff, 00, 0x2d, 0xcf, 0xfd, 0xf4, 0x7f, 0xc6, 0xac, 0xc7, - 0xf1, 0x3f, 0x52, 0x4f, 0xf9, 0x6c, 0x7f, 0xef, 0xa3, 0xfe, - 0x35, 0xaa, 0xe2, 0x9, 0x75, 0x89, 0xb2, 0xe2, 0x89, 0xf5, - 0x81, 0xfa, 0x11, 0x1f, 0xc4, 0xab, 0x46, 0xc7, 0xef, 0x71, - 0xfe, 0x7e, 0x95, 0x66, 0x3f, 0x88, 0x96, 0x8d, 0xff, 00, - 0x2d, 0xab, 0xf3, 0xea, 0x2f, 0x8b, 0x3a, 0x8a, 0xf5, 0x95, - 0xbf, 0xef, 0xa3, 0xfe, 0x35, 0x6e, 0x3f, 0x8c, 0x5a, 0x82, - 0x75, 0x91, 0xbf, 0xef, 0xa3, 0xfe, 0x35, 0xb2, 0xe2, 0x15, - 0xd6, 0x26, 0xf1, 0xe2, 0x95, 0xd6, 0x27, 0xe8, 0x1c, 0x7e, - 0x3e, 0xb5, 0x6f, 0xf9, 0x6f, 0xfa, 0x7f, 0xf5, 0xaa, 0xc4, - 0x7e, 0x38, 0xb6, 0x3f, 0xf2, 0xdc, 0x7f, 0x9f, 0xc2, 0xbf, - 0x3f, 0xe2, 0xf8, 0xd5, 0x7a, 0x84, 0x65, 0xdc, 0xfe, 0x3f, - 0xfd, 0x7a, 0xbd, 0xf, 0xc7, 0x2b, 0xa1, 0x8c, 0xb3, 0xfe, - 0x7f, 0xfd, 0x7a, 0xd5, 0x71, 0x5, 0x3e, 0xa8, 0xde, 0x3c, - 0x51, 0x4b, 0xac, 0x4f, 0xbe, 0x93, 0xc6, 0x70, 0x1e, 0x93, - 0x2d, 0x4e, 0x9e, 0x2e, 0x88, 0xff, 00, 0xcb, 0x51, 0xf9, - 0xd7, 0xc1, 0x70, 0xfc, 0x78, 0x9c, 0x63, 0x2e, 0xdf, 0xe7, - 0xf1, 0xab, 0xd0, 0xfc, 0x7b, 0x90, 0x63, 0x74, 0x84, 0x7e, - 0x3f, 0xfd, 0x7a, 0xd9, 0x67, 0xd4, 0x1e, 0xe8, 0xde, 0x3c, - 0x4d, 0x86, 0x7b, 0xa3, 0xee, 0xe4, 0xf1, 0x4a, 0x1e, 0x92, - 0xf, 0xce, 0xa6, 0x5f, 0x13, 0xa9, 0xfe, 0x31, 0xf9, 0xd7, - 0xc3, 0x51, 0x7c, 0x7e, 0xf5, 0x98, 0x8f, 0xf8, 0x17, 0xff, - 00, 0x5e, 0xaf, 0x43, 0xf1, 0xfd, 0x78, 0xcd, 0xc1, 0xff, - 00, 0xbe, 0xbf, 0xfa, 0xf5, 0xb2, 0xce, 0xf0, 0xec, 0xe8, - 0x8f, 0x11, 0xe1, 0x19, 0xf6, 0xb4, 0xde, 0x25, 0x1, 0x7e, - 0xf5, 0x62, 0xdf, 0xf8, 0x9f, 0xae, 0x1a, 0xbe, 0x4f, 0x5f, - 0x8f, 0x88, 0xdf, 0xf2, 0xf1, 0x8f, 0xf8, 0x1f, 0xff, 00, - 0x5e, 0xa5, 0x5f, 0x8e, 0x9, 0x28, 0xff, 00, 0x8f, 0x9f, - 0xcd, 0xbf, 0xfa, 0xf5, 0xd5, 0x4f, 0x34, 0xc3, 0xd4, 0xd9, - 0x9d, 0xb4, 0xb3, 0xac, 0x2d, 0x5d, 0x99, 0xf4, 0x6, 0xad, - 0xe2, 0x6f, 0xbd, 0xf3, 0x57, 0x9, 0xaf, 0x78, 0xa3, 0xe5, - 0x60, 0x1a, 0xbc, 0xd6, 0x7f, 0x8a, 0xf1, 0x5d, 0x2, 0xc, - 0xaa, 0x7e, 0x8d, 0xff, 00, 0xd7, 0xac, 0x8b, 0x9f, 0x14, - 0x2e, 0xa0, 0x49, 0x12, 0x60, 0x7a, 0x13, 0x5e, 0x94, 0x2b, - 0x42, 0xa7, 0xc2, 0xcf, 0x5e, 0x9d, 0x7a, 0x75, 0x3e, 0x16, - 0x6b, 0xf8, 0x93, 0xc4, 0x44, 0xc5, 0x21, 0xdd, 0xd8, 0xd7, - 0xc9, 0x9f, 0x13, 0xf5, 0xb7, 0xbc, 0xd5, 0x1d, 0x49, 0x1d, - 0x4f, 0x6a, 0xf7, 0x9f, 0x10, 0x5d, 0x3c, 0xd6, 0xf2, 0x2a, - 0x37, 0x50, 0x7b, 0xd7, 0xce, 0x5e, 0x37, 0xb6, 0x74, 0xbf, - 0x25, 0x8e, 0x79, 0x3d, 0xeb, 0xcb, 0xcc, 0xff, 00, 0x86, - 0x91, 0xe2, 0xe7, 0x2f, 0xf7, 0x49, 0x1e, 0x7f, 0xab, 0x16, - 0x7c, 0xe4, 0xe6, 0xbe, 0xba, 0xff, 00, 0x82, 0x6a, 0x78, - 0x3a, 0x3b, 0xbf, 0x10, 0x78, 0x87, 0xc4, 0x32, 0x9, 0x3c, - 0xc8, 0x8a, 0xda, 0xc4, 0x55, 0xf0, 0xb8, 0x50, 0x19, 0xb2, - 0x31, 0xcf, 0xdf, 0x4f, 0xf3, 0x9a, 0xf9, 0x2f, 0x52, 0x8f, - 0x28, 0xd5, 0xfa, 0x91, 0xfb, 0x16, 0x78, 0x1a, 0xdf, 0xc1, - 0x9f, 0x6, 0x34, 0x70, 0x96, 0xf2, 0xc5, 0x73, 0x75, 0x12, - 0xcf, 0x3b, 0x4c, 0xaa, 0x1c, 0xbb, 0x81, 0x23, 0x74, 0xf4, - 0x2e, 0x54, 0x77, 0xc2, 0xa8, 0x3c, 0x8a, 0xcb, 0x2e, 0x5c, - 0xce, 0xfd, 0x8c, 0x72, 0xa5, 0xcc, 0xef, 0xd8, 0xfa, 0x2a, - 0xcd, 0x3a, 0x56, 0xfd, 0x92, 0x74, 0xac, 0x7b, 0x20, 0x32, - 0x2b, 0x7e, 0xc8, 0xc, 0x8e, 0x2b, 0xdf, 0x3e, 0x9c, 0xd8, - 0xb4, 0x4e, 0x5, 0x6b, 0xdb, 0xae, 00, 0xac, 0xeb, 0x50, - 0x38, 0xad, 0x58, 0x7, 0x4a, 00, 0xbb, 0x10, 0xe2, 0xa7, - 0x3, 0x8a, 0x8a, 0x2e, 0x95, 0x35, 00, 0x4c, 0xc2, 0xa2, - 0x71, 0x53, 0x9a, 0x8d, 0xc7, 0x14, 0x1, 0x4e, 0x55, 0xaa, - 0x73, 0x47, 0x91, 0xd2, 0xb4, 0x99, 0x38, 0xaa, 0xf2, 0xc7, - 0x91, 0x40, 0x1e, 0x17, 0xf1, 0x67, 0xf6, 0x75, 0xd0, 0x3c, - 0x6f, 0x6d, 0x35, 0xe5, 0x8d, 0x94, 0x56, 0x3a, 0xc2, 0xe6, - 0x40, 0xd1, 0x8d, 0xa9, 0x31, 0xc1, 0xc2, 0x91, 0x90, 0x17, - 0x27, 0xb8, 0xe3, 0x24, 0xe4, 0x1a, 0xf0, 0x35, 0xf0, 0x11, - 0xf0, 0xad, 0xe8, 0xb0, 0xd7, 0x2d, 0x4d, 0x8d, 0xcf, 0x18, - 0xf3, 0x93, 0xe5, 0x7f, 0x70, 0xc3, 0x20, 0x8f, 0x7c, 0xd7, - 0xdc, 0xb2, 0xc5, 0x9c, 0xd6, 0x75, 0xe5, 0x84, 0x57, 0x51, - 0x3c, 0x53, 0x44, 0xb3, 0x44, 0xe3, 0xc, 0x92, 0x28, 0x65, - 0x61, 0xe8, 0x41, 0xeb, 0x5e, 0x36, 0x2f, 0x29, 0xc2, 0xe2, - 0xe5, 0xed, 0x25, 0x1b, 0x4b, 0xba, 0xd1, 0xfc, 0xfb, 0xfc, - 0xfe, 0x47, 0x81, 0x8e, 0xc8, 0xf0, 0x58, 0xe9, 0xfb, 0x59, - 0xc7, 0x96, 0x7f, 0xcc, 0xb4, 0x6f, 0xd7, 0xbf, 0xcf, 0xe5, - 0x63, 0xe4, 0x9, 0x3c, 0x19, 0x6b, 0x34, 0x61, 0xe3, 0x8a, - 0x39, 0x14, 0xf4, 0x65, 0xc1, 0x6, 0xa9, 0xb7, 0x82, 0xa0, - 0xe7, 0xfd, 0x1d, 0x3f, 0x2a, 0xfa, 0x83, 0x50, 0xf8, 0x63, - 0xe1, 0x9b, 0xb4, 0xda, 0xfa, 0x15, 0x8a, 0xf, 0xfa, 0x63, - 00, 0x88, 0xfe, 0x6b, 0x83, 0x5c, 0xf5, 0xc7, 0xc1, 0x3d, - 00, 0xe7, 0xc8, 0xfb, 0x6d, 0xa7, 0xfd, 0x71, 0xba, 0x7e, - 0x3f, 0x3c, 0xd7, 0x9a, 0xf2, 0x36, 0xbe, 0x1a, 0x9f, 0x87, - 0xfc, 0x13, 0xc7, 0x7c, 0x37, 0x25, 0xf0, 0xd5, 0xfc, 0x3f, - 0xe0, 0x9f, 0x3d, 0x3f, 0x82, 0x60, 0xff, 00, 0x9e, 0xb, - 0xf9, 0x55, 0x69, 0x3c, 0x7, 0x6c, 0xdd, 0x60, 0x1f, 0x95, - 0x7b, 0xf4, 0x9f, 0x4, 0x74, 0xec, 0x9c, 0x6b, 0x1a, 0xd0, - 0xf6, 0xfb, 0x52, 0xff, 00, 0xf1, 0x15, 0x13, 0x7c, 0x15, - 0xb0, 0x50, 0x71, 0xab, 0xeb, 0x19, 0xff, 00, 0x6a, 0xe1, - 0x4f, 0xfe, 0xc9, 0x59, 0xff, 00, 0x62, 0x55, 0xfe, 0x75, - 0xf7, 0x19, 0x7f, 0xab, 0xb5, 0xbf, 0xe7, 0xe2, 0xfb, 0x99, - 0xf3, 0xf3, 0xfc, 0x3f, 0xb5, 0xff, 00, 0x9e, 0xb, 0xf9, - 0x54, 0xf, 0xf0, 0xfa, 0xd8, 0xff, 00, 0xcb, 0x5, 0x1f, - 0x87, 0xff, 00, 0x5e, 0xbd, 0xfa, 0x6f, 0x83, 0xb2, 0x27, - 0xfc, 0x7b, 0xeb, 0xb7, 0x49, 0xe9, 0xe7, 0x44, 0x92, 0x7f, - 0x85, 0x53, 0x93, 0xe1, 0x46, 0xb1, 0x18, 0x3e, 0x5e, 0xb5, - 0x6f, 0x31, 0xf4, 0x92, 0xcf, 0x6f, 0xf2, 0x63, 0x58, 0xcb, - 0x25, 0xc4, 0x2d, 0x9c, 0x5f, 0xdf, 0xfe, 0x46, 0x12, 0xe1, - 0xec, 0x52, 0xf8, 0x5c, 0x5f, 0xdf, 0xfe, 0x47, 0x82, 0x4b, - 0xf0, 0xe2, 0xd9, 0xba, 0xc4, 0x3f, 0x2a, 0xa9, 0x27, 0xc3, - 0x3b, 0x53, 0xc8, 0x89, 0x7f, 0x11, 0x5e, 0xf7, 0x2f, 0xc3, - 0x6f, 0x13, 0x2f, 0xdc, 0x97, 0x47, 0x71, 0xea, 0xe2, 0x55, - 0x3f, 0xa0, 0x35, 0x9, 0xf8, 0x6f, 0xe2, 0x7e, 0xe7, 0x46, - 0x3f, 0x46, 0x97, 0xff, 00, 0x89, 0xac, 0x7f, 0xb1, 0xf1, - 0x3f, 0xca, 0xbe, 0xf3, 0x9f, 0xfb, 0x7, 0x17, 0xfc, 0xab, - 0xef, 0x3c, 0xa, 0x4f, 0x86, 0x50, 0x1f, 0xf9, 0x62, 0x9f, - 0xf7, 0xcf, 0xff, 00, 0x5e, 0xaa, 0xc9, 0xf0, 0xb6, 0xd9, - 0xba, 0xc2, 0xbf, 0x82, 0x8f, 0xf1, 0xaf, 0xa0, 0x64, 0xf0, - 0x7, 0x88, 0xe1, 0xeb, 0x69, 0xa7, 0xcf, 0xff, 00, 0x5c, - 0xa6, 0x65, 0xff, 00, 0xd0, 0x96, 0xaa, 0xcd, 0xe1, 0x2d, - 0x7a, 0x2f, 0xbd, 0xa0, 0x6f, 0x1e, 0xb1, 0xdd, 0x46, 0x7f, - 0x43, 0x8a, 0xca, 0x59, 0x4e, 0x25, 0x7f, 0xcb, 0xbb, 0xfc, - 0xd7, 0xf9, 0x98, 0xcb, 0x23, 0xc6, 0x2f, 0xf9, 0x75, 0x7f, - 0x9a, 0xff, 00, 0x33, 0xe7, 0xe9, 0x7e, 0x14, 0x5b, 0x9e, - 0x90, 0xaf, 0xe2, 0x2a, 0x9c, 0xbf, 0x9, 0xe2, 0x3f, 0xf2, - 0xc2, 0x33, 0xf8, 0x7f, 0xf5, 0xeb, 0xe8, 0x19, 0xb4, 0x8b, - 0xe8, 0x7, 0xef, 0x7c, 0x3f, 0xa8, 0x8f, 0xfa, 0xe5, 0x8, - 0x93, 0xf9, 0x1a, 0xae, 0xd6, 0x13, 0x9f, 0xf9, 0x80, 0x6b, - 0x1f, 0xf8, 0x4, 0x6b, 0x7, 0x96, 0x57, 0xeb, 0x49, 0x9c, - 0xcf, 0x27, 0xc4, 0xf5, 0xa2, 0xcf, 0x9f, 0x24, 0xf8, 0x4b, - 0xf, 0xfc, 0xfb, 0x8f, 0xc0, 0x7f, 0xf5, 0xea, 0xa4, 0xbf, - 0x9, 0x22, 0x3f, 0xf2, 0xc0, 0x7e, 0x20, 0x7f, 0x8d, 0x7d, - 0x14, 0xfa, 0x7b, 0xa8, 0xcc, 0x9a, 0x36, 0xa9, 0x10, 0xf5, - 0x7b, 0x36, 0x2, 0xab, 0x4b, 0xfd, 0x9d, 0x11, 0xc4, 0xc5, - 0xed, 0xdb, 0xd2, 0x58, 0x59, 0x7f, 0xa5, 0x65, 0x2c, 0xba, - 0xac, 0x77, 0xa4, 0xfe, 0xe3, 0x19, 0x65, 0x35, 0xe3, 0xbd, - 0x19, 0x7d, 0xd7, 0xfc, 0x8f, 0x9c, 0xa5, 0xf8, 0x44, 0x9d, - 0xa0, 0x4f, 0xf3, 0xf8, 0xd5, 0x59, 0x3e, 0x12, 0x28, 0xff, - 00, 0x96, 0x7, 0xf0, 0x1f, 0xfd, 0x7a, 0xfa, 0x55, 0x62, - 0xd2, 0xe4, 0xe9, 0x77, 0xf, 0xfc, 0x8, 0xe3, 0xf9, 0xd0, - 0xfa, 0x7e, 0x9c, 0x7f, 0xe5, 0xee, 0xd4, 0xff, 00, 0xdb, - 0x55, 0xae, 0x77, 0x83, 0x6b, 0x78, 0x3f, 0xb8, 0xe4, 0x96, - 0x1, 0xa7, 0x67, 0x4d, 0xaf, 0x93, 0x3e, 0x5f, 0x97, 0xe1, - 0x38, 0xff, 00, 0x9e, 0x58, 0xfa, 0x8f, 0xfe, 0xbd, 0x54, - 0x93, 0xe1, 0x41, 0x1d, 0x14, 0x7f, 0x9f, 0xc6, 0xbe, 0xa7, - 0x6d, 0x2b, 0x4f, 0x73, 0xc5, 0xcd, 0xb3, 0x1f, 0x69, 0x16, - 0x95, 0x7c, 0x37, 0x4, 0xbf, 0x73, 0xcb, 0x7f, 0xf7, 0x70, - 0x6b, 0x37, 0x85, 0x4b, 0x74, 0xd1, 0x94, 0xb0, 0x51, 0x8f, - 0xc4, 0x9a, 0xf9, 0x1f, 0x27, 0x49, 0xf0, 0xb1, 0xc7, 0x48, - 0xc9, 0xfc, 0x3f, 0xfa, 0xf5, 0x52, 0x4f, 0x86, 0x33, 0xf, - 0xe0, 0xc7, 0xd4, 0x7f, 0xf5, 0xeb, 0xeb, 0xa7, 0xf0, 0x92, - 0x9f, 0xf9, 0x64, 0x3f, 0x2f, 0xfe, 0xb5, 0x57, 0x93, 0xc1, - 0xb1, 0xb7, 0x58, 0x41, 0xff, 00, 0x80, 0xd6, 0x5e, 0xc2, - 0x1d, 0x19, 0x8f, 0xd5, 0xa9, 0xf4, 0x67, 0xc8, 0x8f, 0xf0, - 0xd6, 0x61, 0xd0, 0x67, 0xf2, 0xff, 00, 0x1a, 0xad, 0x27, - 0xc3, 0xab, 0x91, 0xd2, 0x3c, 0xfe, 0x1f, 0xfd, 0x7a, 0xfa, - 0xf5, 0xfc, 0x15, 0x17, 0xfc, 0xf1, 0x1f, 0xf7, 0xcf, 0xff, - 00, 0x5a, 0xa0, 0x7f, 0x5, 0x44, 0x7f, 0xe5, 0x88, 0xff, - 00, 0xbe, 0x7f, 0xfa, 0xd4, 0xbe, 0xaf, 0x1e, 0xe2, 0xfa, - 0xac, 0x7a, 0x48, 0xf9, 0x5, 0xfe, 0x1f, 0xdc, 0xaf, 0xfc, - 0xb3, 0xfd, 0x2a, 0xbb, 0xf8, 0x1e, 0xe5, 0x73, 0xfb, 0xbc, - 0xff, 00, 0x9f, 0xad, 0x7d, 0x7d, 0x2f, 0x81, 0x20, 0x6e, - 0xb0, 0x83, 0xf8, 0x7f, 0xf5, 0xaa, 0xb4, 0x9f, 0xf, 0xad, - 0xcf, 0x48, 0x40, 0xff, 00, 0x80, 0xd1, 0xf5, 0x77, 0xd2, - 0x42, 0xfa, 0xab, 0xe9, 0x23, 0xe4, 0x37, 0xf0, 0x6d, 0xca, - 0xff, 00, 0xcb, 0x23, 0x50, 0x3f, 0x85, 0x2e, 0x57, 0xfe, - 0x59, 0x9f, 0xce, 0xbe, 0xbb, 0x7f, 0x87, 0xb0, 0x9f, 0xf9, - 0x67, 0xff, 00, 0x8e, 0x8f, 0xf0, 0xaa, 0xd2, 0xfc, 0x3a, - 0x81, 0xba, 0xc5, 0x9f, 0xc3, 0xff, 00, 0xad, 0x4b, 0xea, - 0xf2, 0xfe, 0x60, 0xfa, 0xb4, 0xfa, 0x48, 0xf9, 0x1d, 0xbc, - 0x35, 0x70, 0x3f, 0xe5, 0x93, 0x54, 0x6d, 0xe1, 0xf9, 0xd7, - 0xf8, 0x8, 0xaf, 0xac, 0xa4, 0xf8, 0x67, 0x1, 0xe9, 0x18, - 0x1f, 0x87, 0xff, 00, 0x5a, 0xab, 0x49, 0xf0, 0xc2, 0x33, - 0xd1, 0x7, 0xfd, 0xf2, 0x3f, 0xc2, 0x97, 0xb0, 0xa9, 0xdc, - 0x5f, 0x57, 0xab, 0xfc, 0xc7, 0xca, 0x2d, 0xa2, 0xcc, 0x3f, - 0x84, 0xfe, 0x55, 0x19, 0xd2, 0xa6, 0x1d, 0x8f, 0xe5, 0x5f, - 0x53, 0xcb, 0xf0, 0xba, 0x33, 0xff, 00, 0x2c, 0x54, 0xfe, - 0x3, 0xfc, 0x2a, 0xb4, 0x9f, 0xb, 0x23, 0x3d, 0x21, 0x3, - 0xf0, 0xff, 00, 0xeb, 0x51, 0xec, 0x6a, 0x77, 0x17, 0xb0, - 0xad, 0xdc, 0xf9, 0x78, 0xe9, 0xd2, 0x8e, 0xd4, 0xd3, 0x63, - 0x20, 0xed, 0x5f, 0x4c, 0x4b, 0xf0, 0xa1, 0x4f, 0x48, 0xc7, - 0xfd, 0xf1, 0xff, 00, 0xd6, 0xaa, 0x72, 0xfc, 0x26, 0x3, - 0xa4, 0x3, 0xf2, 0xc7, 0xf4, 0xa9, 0xf6, 0x75, 0x50, 0xbd, - 0x95, 0x64, 0x7c, 0xe2, 0x6d, 0x24, 0x1d, 0xa9, 0x3e, 0xcf, - 0x27, 0xf7, 0x6b, 0xe8, 0x49, 0x7e, 0x14, 0xf, 0xf9, 0xe3, - 0x8f, 0xc3, 0x3f, 0xd2, 0xaa, 0x49, 0xf0, 0x94, 0x1f, 0xf9, - 0x65, 0xff, 00, 0x8e, 0x7f, 0xf5, 0xa9, 0x72, 0x54, 0xec, - 0x4f, 0x25, 0x55, 0xd0, 0xf0, 0x4f, 0x25, 0xc7, 0xf0, 0xd2, - 0x79, 0x4c, 0x3f, 0x86, 0xbd, 0xc6, 0x5f, 0x84, 0xcc, 0x33, - 0x88, 0x4f, 0xe5, 0xff, 00, 0xd6, 0xaa, 0x72, 0xfc, 0x29, - 0x71, 0xff, 00, 0x2c, 0xc8, 0xfc, 0x3f, 0xfa, 0xd4, 0xad, - 0x35, 0xd0, 0x56, 0xaa, 0xbe, 0xc9, 0xe3, 0x5b, 0x1b, 0xd0, - 0xd2, 0x60, 0xfa, 0x57, 0xae, 0x49, 0xf0, 0xb5, 0xc7, 0x45, - 0x3f, 0x91, 0xff, 00, 0xa, 0xab, 0x27, 0xc2, 0xd9, 0xc7, - 0x44, 0x6f, 0xcb, 0xff, 00, 0xad, 0x4b, 0xde, 0xec, 0x2b, - 0xcf, 0xf9, 0x4f, 0x2c, 0xa2, 0xbd, 0x2a, 0x4f, 0x86, 0x77, - 0xb, 0xd5, 0x4f, 0xe5, 0xff, 00, 0xd6, 0xaa, 0xd2, 0x7c, - 0x3a, 0xb8, 0x5e, 0x89, 0x93, 0xf4, 0xff, 00, 0xeb, 0x51, - 0x77, 0xd5, 0xb, 0x9e, 0x4b, 0x78, 0x9e, 0x7d, 0x46, 0x6b, - 0xb9, 0x7f, 0x87, 0xb7, 0x63, 0xfe, 0x59, 0x9f, 0xfb, 0xe6, - 0xab, 0xc9, 0xe0, 0x3b, 0xb5, 0xff, 00, 0x96, 0x47, 0xfe, - 0xf9, 0x3f, 0xe1, 0x4b, 0x9b, 0xc8, 0x3d, 0xa7, 0x74, 0x71, - 0xf9, 0x3e, 0xb4, 0x6e, 0x3e, 0xa6, 0xba, 0x87, 0xf0, 0x5d, - 0xda, 0xe7, 0xf7, 0x47, 0xf2, 0x3f, 0xe1, 0x50, 0xbf, 0x84, - 0x2e, 0x97, 0xac, 0x4d, 0xf9, 0x1f, 0xf0, 0xa3, 0x9d, 0xb, - 0xda, 0x2e, 0xc7, 0x3d, 0xbd, 0xbd, 0x4d, 0x1e, 0x63, 0x7f, - 0x78, 0xd6, 0xdb, 0xf8, 0x5e, 0xe5, 0x4f, 0xfa, 0xa6, 0xfc, - 0x8d, 0x42, 0xde, 0x1c, 0xb9, 0x1f, 0xf2, 0xc9, 0xff, 00, - 0x2a, 0x39, 0xe2, 0x1e, 0xd2, 0x6, 0x5f, 0x9c, 0xff, 00, - 0xde, 0x34, 0xbf, 0x68, 0x93, 0xfb, 0xc6, 0xaf, 0x36, 0x87, - 0x3a, 0xf5, 0x47, 0xfc, 0xa9, 0x87, 0x47, 0x98, 0x7f, 0x3, - 0x7e, 0x54, 0x73, 0x44, 0x39, 0xe0, 0x52, 0x92, 0xe2, 0x4d, - 0xbf, 0x7a, 0xa0, 0xf3, 0xa5, 0xed, 0x23, 0xf, 0xa1, 0xc5, - 0x5f, 0x93, 0x4b, 0x95, 0x47, 0x2a, 0x47, 0xe1, 0x51, 0x1d, - 0x3d, 0x80, 0xce, 0x2b, 0x48, 0xce, 0x2b, 0x63, 0x48, 0xce, - 0xb, 0x62, 0x28, 0x75, 0x2b, 0xbb, 0x63, 0x94, 0x99, 0xbf, - 0x13, 0x5b, 0x5a, 0x77, 0x8d, 0x6e, 0x61, 0x75, 0x59, 0x5c, - 0xe3, 0xd7, 0x35, 0x8d, 0x25, 0xa9, 0x51, 0xd2, 0xaa, 0xbd, - 0xbb, 0x36, 0x70, 0x2b, 0xb6, 0x8e, 0x26, 0x74, 0xdd, 0xe3, - 0x23, 0xd1, 0xa1, 0x8c, 0xa9, 0x49, 0xde, 0x32, 0x3d, 0x32, - 0xf, 0x14, 0x24, 0xf6, 0xff, 00, 0x33, 0x64, 0x11, 0x82, - 0xd, 0x79, 0x5f, 0x8c, 0xe4, 0x8a, 0xe2, 0xed, 0x99, 0x7, - 0xf1, 0x54, 0xf1, 0xcb, 0x35, 0xa9, 0xe0, 0xb6, 0x3d, 0x33, - 0x57, 0xfc, 0x39, 0xe0, 0x3d, 0x63, 0xc7, 0xda, 0xec, 0x5a, - 0x7e, 0x9b, 0x6c, 0xf3, 0x3c, 0xae, 0xaa, 0xd3, 0x8, 0xd8, - 0xc7, 0x8, 0x3d, 0xdc, 0x80, 0x71, 0xd0, 0xfd, 0x7a, 0xa, - 0xf6, 0xde, 0x32, 0x58, 0xb8, 0xaa, 0x7b, 0xb3, 0xe8, 0xe5, - 0x8f, 0x9e, 0x36, 0x11, 0xa7, 0xbb, 0x2e, 0x7e, 0xce, 0x7f, - 0xa, 0xee, 0x3e, 0x28, 0x7c, 0x51, 0xd3, 0xa1, 0x5b, 0x7f, - 0x3a, 0xc3, 0x4f, 0x91, 0x6e, 0xae, 0x49, 0xa, 0x57, 0x23, - 0x25, 0x15, 0x81, 0x3c, 0x82, 0x57, 0x91, 0xce, 0x40, 0x35, - 0xfa, 0xb1, 0xa0, 0xe9, 0xab, 0xa6, 0xd8, 0x5b, 0xda, 0xc6, - 0x72, 0x90, 0xa0, 0x40, 0x71, 0x8c, 0xe3, 0xbf, 0xe3, 0x5e, - 0x67, 0xf0, 0x2b, 0xe0, 0xfe, 0x99, 0xf0, 0xab, 0xc3, 0x51, - 0x5a, 0xd9, 0x41, 0x24, 0x73, 0x4a, 0x37, 0xc8, 0xd2, 0x39, - 0x2e, 0xc4, 0x85, 0xc9, 0x61, 0xd0, 0x31, 0xda, 0xb9, 00, - 0x60, 0x63, 0x3, 0x15, 0xeb, 0xf6, 0x71, 0x70, 0x38, 0x35, - 0xf5, 0xb8, 0x4a, 0x1f, 0x57, 0xa7, 0xca, 0xf7, 0xea, 0x7d, - 0xce, 0x7, 0xd, 0xf5, 0x5a, 0x2a, 0x2f, 0x7e, 0xa6, 0x9d, - 0x94, 0x67, 0x22, 0xb7, 0xec, 0x50, 0xe4, 0x56, 0x55, 0x94, - 0x5e, 0xc6, 0xb7, 0xac, 0x63, 0xc1, 0xe9, 0x5d, 0xa7, 0xa0, - 0x69, 0xda, 0xa9, 0xc8, 0xad, 0x48, 0x7, 0x4a, 0xa5, 0x6c, - 0xbd, 0x38, 0xad, 0x18, 0x5, 00, 0x59, 0x8c, 0x74, 0xa9, - 0xc7, 0x4a, 0x8d, 0x16, 0xa5, 0xa0, 0x9, 0x88, 0xa6, 0x11, - 0x52, 0x1a, 0x69, 0x18, 0xa0, 0x8, 0x99, 0x73, 0x51, 0x3a, - 0x66, 0xac, 0x91, 0x4c, 0x2b, 0x40, 0x14, 0x9e, 0x20, 0x6a, - 0xbb, 0xc1, 0x5a, 0x4c, 0x95, 0x1b, 0x47, 0x40, 0x19, 0x12, - 0x5b, 0x83, 0xda, 0xab, 0xbd, 0xae, 0x6b, 0x69, 0xa1, 0xcd, - 0x46, 0xd0, 0xa, 00, 0xc2, 0x7b, 0x40, 0x7b, 0x54, 0x2f, - 0x66, 0x3d, 0x2b, 0x78, 0xdb, 0xd4, 0x66, 0xdc, 0x1a, 00, - 0xc0, 0x6b, 0x21, 0x8e, 0x95, 0x19, 0xb1, 0x1f, 0xdd, 0xae, - 0x85, 0xad, 0x85, 0x30, 0xda, 0xd0, 0x7, 0x3a, 0x6c, 0x87, - 0xa6, 0x6a, 0x36, 0xb1, 0x1e, 0x95, 0xd1, 0xb5, 0xae, 0x2a, - 0x33, 0x66, 0x3d, 0x28, 0x3, 0x9b, 0x6b, 0x1e, 0x7a, 0x54, - 0x6d, 0x63, 0x5d, 0x21, 0xb3, 0xf6, 0xa6, 0x35, 0x9f, 0xb5, - 00, 0x73, 0x6d, 0x63, 0xed, 0x51, 0x9b, 0x1, 0xe9, 0x5d, - 0x29, 0xb2, 0xf6, 0xa6, 0x35, 0x9f, 0x3d, 0x28, 0x3, 0x9a, - 0x6b, 0xe, 0x3a, 0xa, 0x8d, 0xb4, 0xf0, 0x41, 0xf9, 0x41, - 0xcd, 0x74, 0xc6, 0xcb, 0xda, 0x90, 0xd9, 0x7b, 0x50, 0x7, - 0x1d, 0x71, 0xe1, 0xdb, 0x2b, 0x8c, 0xf9, 0xd6, 0x70, 0x4a, - 0x7f, 0xdb, 0x8d, 0x4d, 0x52, 0x6f, 0x4, 0x68, 0xc4, 0x92, - 0x74, 0x7b, 0x2, 0x7d, 0x4d, 0xb2, 0x7f, 0x85, 0x77, 0x46, - 0xcb, 0xda, 0xa3, 0x6b, 0x2f, 0x6a, 00, 0xe0, 0xdb, 0xc0, - 0xfa, 0x29, 0x1f, 0xf2, 0x7, 0xb1, 0xfc, 0x2d, 0x93, 0xfc, - 0x2a, 0x8c, 0xdf, 0xd, 0xb4, 0x9, 0xbe, 0xf6, 0x97, 0x8, - 0xff, 00, 0x73, 0x2b, 0xfc, 0x88, 0xaf, 0x46, 0x7b, 0x1f, - 0x6a, 0x8c, 0xd8, 0xfb, 0x50, 0x7, 0x9a, 0xaf, 0xc3, 0x1d, - 0x6, 0x33, 0xf2, 0x59, 0x3a, 0xfd, 0x2e, 0x65, 0x1f, 0xfb, - 0x35, 0x39, 0xbe, 0x1f, 0x69, 0x60, 0x6d, 0x54, 0xb9, 0x4f, - 0xf7, 0x6e, 0xe6, 0xff, 00, 0xe2, 0xab, 0xd1, 0xd, 0x88, - 0xf4, 0xa6, 0x1b, 0xf, 0x6a, 0xcd, 0xd3, 0x84, 0xb7, 0x48, - 0xca, 0x54, 0xa9, 0xcb, 0xe2, 0x8a, 0x7f, 0x23, 0xcc, 0x66, - 0xf8, 0x67, 0x65, 0x2f, 0xdd, 0xbc, 0xd4, 0x62, 0xff, 00, - 0x72, 0xe4, 0x9f, 0xe7, 0x9a, 0xa9, 0x27, 0xc3, 0x2d, 0xbf, - 0xea, 0x75, 0x8b, 0xd0, 0x7f, 0xe9, 0xa6, 0xd7, 0xfe, 0x82, - 0xbd, 0x58, 0xd8, 0x8c, 0x70, 0xd, 0x46, 0x6c, 0x3d, 0x8d, - 0x43, 0xa1, 0x49, 0xef, 0x5, 0xf7, 0x23, 0x37, 0x86, 0xa1, - 0x2d, 0x1c, 0x17, 0xdc, 0x8f, 0x25, 0x7f, 0x86, 0xfa, 0x96, - 0x7e, 0x5d, 0x7b, 0x3, 0xfd, 0xab, 0x24, 0x27, 0xf9, 0xd4, - 0x67, 0xe1, 0xc6, 0xa6, 0xf, 0xfc, 0x87, 0x54, 0xff, 00, - 0xdb, 0x8a, 0x7f, 0xf1, 0x55, 0xeb, 0x86, 0xc3, 0xda, 0xa2, - 0x36, 00, 0xf6, 0xac, 0xfe, 0xa7, 0x86, 0xff, 00, 0x9f, - 0x71, 0xfb, 0x91, 0x97, 0xd4, 0x30, 0x9f, 0xf3, 0xea, 0x3f, - 0xf8, 0xa, 0xff, 00, 0x23, 0xc8, 0xa4, 0xf0, 0x16, 0xb1, - 0x1f, 0xdc, 0xbf, 0xb4, 0x9b, 0xfe, 0xba, 0x40, 0x57, 0xf9, - 0x1a, 0x85, 0xfc, 0x1d, 0xaf, 0x47, 0x92, 0x62, 0xd3, 0x26, - 0x1f, 0xec, 0xbb, 0xa9, 0x3f, 0x98, 0xaf, 0x5f, 0x6b, 0xe, - 0x7a, 0x54, 0x6d, 0xa7, 0xf3, 0xd2, 0xb2, 0x96, 0x5f, 0x85, - 0x96, 0xf4, 0xd1, 0x8c, 0xb2, 0xbc, 0x14, 0xb7, 0xa4, 0xbf, - 0x2f, 0xc8, 0xf1, 0xb9, 0x3c, 0x3f, 0xad, 0x46, 0xf, 0xfc, - 0x49, 0x22, 0x9b, 0xfe, 0xb9, 0xdd, 0x28, 0xfe, 0x62, 0xa1, - 0x3a, 0x1e, 0xb3, 0xff, 00, 0x42, 0xf0, 0xff, 00, 0xc0, - 0xb8, 0xeb, 0xd9, 0x5a, 0xc3, 0x27, 0xa5, 0x46, 0xd6, 0x18, - 0xed, 0x59, 0x7f, 0x65, 0x60, 0xff, 00, 0x93, 0xf1, 0x7f, - 0xe6, 0x61, 0xfd, 0x8b, 0x80, 0xff, 00, 0x9f, 0x7f, 0x8c, - 0xbf, 0xcc, 0xf1, 0xa6, 0xd1, 0x35, 0x35, 0xff, 00, 0x5b, - 0xa0, 0xc8, 0xbf, 0xf5, 0xce, 0x64, 0x7f, 0xeb, 0x50, 0x3d, - 0x9b, 0x27, 0xfa, 0xcd, 0x1b, 0x50, 0x5f, 0x75, 0xb7, 0xdc, - 0x3f, 0x30, 0x6b, 0xda, 0x4d, 0x87, 0xb1, 0xa6, 0x3d, 0x87, - 0x1d, 0x2b, 0x37, 0x94, 0xe1, 0x5e, 0xc9, 0xaf, 0x9b, 0x32, - 0x96, 0x45, 0x82, 0x96, 0xd1, 0x6b, 0xe6, 0xff, 00, 0x53, - 0xc4, 0x5c, 0x58, 0xa7, 0xfa, 0xd8, 0x2e, 0x20, 0xff, 00, - 0xae, 0x96, 0xec, 0x2a, 0x6, 0xb8, 0xd1, 0x73, 0xff, 00, - 0x1f, 0x3, 0xfe, 0xfd, 0x3f, 0xf8, 0x57, 0xb8, 0x9b, 0xf, - 0x6a, 0x63, 0x58, 0xe3, 0x8c, 0x56, 0x2f, 0x25, 0xc3, 0xbf, - 0xb5, 0x2f, 0xbd, 0x7f, 0x91, 0x83, 0xe1, 0xec, 0x2b, 0xda, - 0x52, 0xfb, 0xd7, 0xf9, 0x1e, 0x1d, 0xbf, 0x47, 0x73, 0x81, - 0x72, 0xbf, 0x8a, 0x30, 0xfe, 0x94, 0xa2, 0xcf, 0x4b, 0x97, - 0xa5, 0xcd, 0xbf, 0xfc, 0x9, 0x80, 0xfe, 0x75, 0xed, 0xa6, - 0xc7, 0x8e, 0x95, 0x19, 0xb1, 0xf6, 0xa8, 0x79, 0x2d, 0x1e, - 0x93, 0x7f, 0x87, 0xf9, 0x19, 0xcb, 0x87, 0x68, 0x7d, 0x99, - 0xcb, 0xf0, 0xff, 00, 0x23, 0xc6, 0x46, 0x81, 0x67, 0x29, - 0xf9, 0x1e, 0x7, 0xff, 00, 0x75, 0x81, 0xfe, 0xb4, 0xa7, - 0xc2, 0x71, 0x91, 0x91, 0x1a, 0x91, 0xec, 0x2b, 0xd7, 0x27, - 0xd1, 0xe1, 0x9f, 0xfd, 0x64, 0x9, 0x27, 0xfb, 0xca, 0xd, - 0x50, 0x9b, 0xc2, 0x3a, 0x5c, 0xbf, 0x7b, 0x4d, 0xb6, 0x27, - 0xd7, 0xca, 0x51, 0xfd, 0x2b, 0x17, 0x91, 0xf6, 0xab, 0xf8, - 0x7f, 0xc1, 0x39, 0xdf, 0xe, 0x7f, 0x2d, 0x6f, 0xc3, 0xfe, - 0x9, 0xe5, 0x8f, 0xe0, 0xf8, 0xdb, 0xac, 0x2a, 0x7f, 0xa, - 0xae, 0xde, 0xb, 0x80, 0x9f, 0xf5, 0x9, 0xf9, 0x57, 0xa7, - 0x4b, 0xe0, 0xd, 0x16, 0x5f, 0xbd, 0xa7, 0xa0, 0xff, 00, - 0x75, 0x99, 0x7f, 0x91, 0xaa, 0xe7, 0xe1, 0xce, 0x89, 0xff, - 00, 0x3e, 0x3f, 0xf9, 0x16, 0x4f, 0xfe, 0x2a, 0xa7, 0xfb, - 0xd, 0xff, 00, 0xcf, 0xdf, 0xfc, 0x97, 0xfe, 0x9, 0x3f, - 0xea, 0xe3, 0xff, 00, 0x9f, 0xdf, 0xf9, 0x2f, 0xff, 00, - 0x6c, 0x79, 0x9b, 0x78, 0x2a, 0xf, 0xf9, 0xe0, 0x9f, 0x95, - 0x41, 0x27, 0x81, 0xe0, 0x6e, 0xb0, 0x2f, 0xe5, 0x5e, 0xa4, - 0x7e, 0x1e, 0xe9, 00, 0x7e, 0xee, 0xde, 0x48, 0xbd, 0xd2, - 0x67, 0xff, 00, 0x1a, 0x89, 0xbc, 0x5, 0x6e, 0xa7, 0xf7, - 0x77, 0xba, 0x84, 0x3e, 0xc9, 0x3f, 0xf8, 0x83, 0x52, 0xf2, - 0x49, 0xfd, 0x9a, 0x8b, 0xee, 0xff, 00, 0x82, 0x44, 0xb8, - 0x72, 0x7f, 0x66, 0xaa, 0x7f, 0x2f, 0xf8, 0x2c, 0xf2, 0x89, - 0x3c, 0x1, 0x6c, 0x4f, 0xfa, 0x85, 0xfc, 0xaa, 0x6, 0xf8, - 0x7f, 0x6c, 0x3f, 0xe5, 0x82, 0x7e, 0x5f, 0xfd, 0x7a, 0xf6, - 0x5, 0xf0, 0x68, 0x4e, 0x9a, 0x8d, 0xf1, 0xff, 00, 0x79, - 0x90, 0xff, 00, 0x34, 0xa6, 0xcb, 0xe1, 0x49, 0x4f, 0xdc, - 0xd4, 0xae, 0x7, 0xfb, 0xd1, 0xc6, 0x7f, 0xf6, 0x51, 0x5c, - 0xef, 0x25, 0xaf, 0xd1, 0xc7, 0xf1, 0xff, 00, 0x23, 0x95, - 0xf0, 0xee, 0x27, 0xa4, 0xa3, 0xf8, 0xff, 00, 0x91, 0xe3, - 0x52, 0x7c, 0x3c, 0xb6, 0x6f, 0xf9, 0x64, 0xbf, 0x95, 0x54, - 0x93, 0xe1, 0xad, 0xab, 0x7f, 0xcb, 0x21, 0xf9, 0x57, 0xb2, - 0x4b, 0xe1, 0x1d, 0x47, 0xaa, 0x6a, 0xff, 00, 0x83, 0xda, - 0xaf, 0xf4, 0xa8, 0x5b, 0xc3, 0x7a, 0xca, 0x1f, 0x92, 0xe2, - 0xce, 0x5f, 0xfa, 0xe9, 0x1b, 0x2f, 0xf2, 0xa8, 0x96, 0x4b, - 0x88, 0x5f, 0xca, 0xfe, 0x7f, 0xf0, 0xc, 0xe5, 0xc3, 0xf8, - 0xa5, 0xfc, 0xaf, 0xe6, 0xff, 00, 0xc8, 0xf1, 0x87, 0xf8, - 0x67, 0x6f, 0xda, 0x24, 0xff, 00, 0xbe, 0x7f, 0xfa, 0xf5, - 0x5e, 0x4f, 0x86, 0x10, 0x37, 0x58, 0x53, 0xfe, 0xf9, 0xff, - 00, 0xeb, 0xd7, 0xb5, 0x36, 0x83, 0xae, 0xff, 00, 0x77, - 0x4c, 0xfc, 0xe4, 0xa6, 0x1d, 0x3, 0x5b, 0x1c, 0xb4, 0x7a, - 0x73, 0xfb, 0x2b, 0x48, 0x3f, 0x98, 0xac, 0xbf, 0xb1, 0xf1, - 0x1f, 0xca, 0xbe, 0xf3, 0x1f, 0xec, 0xc, 0x5f, 0xf2, 0x2f, - 0xbc, 0xf0, 0xd9, 0x3e, 0x15, 0x5b, 0x9e, 0x91, 0x2f, 0xe4, - 0x2a, 0xac, 0xbf, 0xa, 0x62, 0xed, 0xa, 0x7e, 0x22, 0xbd, - 0xe1, 0xb4, 0xbd, 0x51, 0x3a, 0xe9, 0x51, 0xcb, 0xff, 00, - 0x5c, 0xee, 00, 0xfe, 0x62, 0xa2, 0x6b, 0x4b, 0xb4, 0xff, - 00, 0x5b, 0xa2, 0xdc, 0x1, 0xff, 00, 0x4c, 0xe4, 0x57, - 0xfe, 0x55, 0x8c, 0xb2, 0x9c, 0x42, 0xff, 00, 0x97, 0x7f, - 0x8a, 0xff, 00, 0x33, 0x9e, 0x59, 0x1e, 0x2e, 0x3f, 0xf2, - 0xe7, 0xf1, 0x5f, 0xe6, 0x7c, 0xfb, 0x79, 0xf0, 0x9a, 0x32, - 0x87, 0x10, 0x26, 0x7d, 0x87, 0xff, 00, 0x5e, 0xb9, 0x6d, - 0x5b, 0xe1, 0x4b, 0x46, 0x9, 0x58, 0x94, 0x7d, 0x5, 0x7d, - 0x4b, 0x22, 0x2, 0x30, 0x74, 0x8d, 0x48, 0x1f, 0x68, 0x32, - 0x3f, 0x9d, 0x54, 0x97, 0x4d, 0x6b, 0xaf, 0x91, 0x34, 0x9b, - 0xf2, 0xc7, 0xfe, 0x7a, 0x43, 0xb0, 0x7e, 0x66, 0xb9, 0xde, - 0x53, 0x5e, 0x5a, 0x7b, 0x36, 0x72, 0xcb, 0x24, 0xc4, 0xcf, - 0x4f, 0x62, 0xd1, 0xf1, 0xa6, 0xa7, 0xe0, 0x79, 0xec, 0x89, - 0xca, 0x2, 0x2b, 0x16, 0x4d, 0xb, 0x1f, 0xc3, 0x5f, 0x69, - 0xdd, 0x7c, 0x21, 0xb8, 0xd6, 0x41, 0x32, 0xc3, 0x15, 0xa0, - 0x27, 0xee, 0x3c, 0xb9, 0x3f, 0xa0, 0x35, 0xbd, 0xe1, 0x9f, - 0x82, 0x3e, 0x1f, 0xd0, 0x65, 0x13, 0x8b, 0x63, 0x25, 0xcb, - 0xf, 0x9c, 0xee, 0x38, 0xe9, 0xd8, 0xf5, 0x3, 0xe8, 0x79, - 0xa5, 0x4f, 0x87, 0x71, 0xb3, 0x9a, 0xe6, 0x92, 0x8c, 0x7e, - 0xf7, 0xf7, 0x2f, 0xf3, 0x42, 0xa5, 0xc2, 0x99, 0x85, 0x4a, - 0x8b, 0x9a, 0x6a, 0x11, 0xfb, 0xdf, 0xc9, 0x2d, 0x3f, 0x14, - 0x7c, 0x87, 0xe0, 0xf, 0x80, 0xba, 0xa7, 0x8d, 0xef, 0x62, - 0xdf, 0x4, 0x96, 0xd6, 0x6e, 0x37, 0x89, 0x36, 0xae, 0xe9, - 00, 0x23, 0x20, 0x2, 0xc3, 00, 0x8f, 0xe2, 0x3c, 0x7d, - 0x6b, 0xec, 0xbf, 0x87, 0x3f, 0x9, 0xb4, 0x1f, 00, 0x69, - 0xf1, 0x47, 0xa7, 0xe9, 0xf1, 0x45, 0x3f, 0x56, 0x93, 0x6f, - 0xcd, 0x9f, 0x72, 0x49, 0xc9, 0x1e, 0xa4, 0x93, 0xf8, 0x71, - 0x5d, 0xa5, 0xa6, 0x9e, 0x96, 0xf1, 0xac, 0x71, 0xc6, 0x23, - 0x8d, 0x46, 0x15, 0x54, 0x60, 0xa, 0xd2, 0x82, 0xd7, 0xa7, - 0x15, 0xf6, 0xd8, 0x1c, 0xba, 0x8e, 0x6, 0x36, 0x8e, 0xb2, - 0xea, 0xdf, 0xf5, 0xa2, 0x3f, 0x44, 0xcb, 0x72, 0x9a, 0x19, - 0x6c, 0x2d, 0xf, 0x7a, 0x5d, 0x64, 0xf7, 0xf9, 0x76, 0x5f, - 0xd3, 0xb8, 0xb6, 0x90, 0xf2, 0x38, 0xad, 0xcb, 0x48, 0x78, - 0x1c, 0x54, 0x16, 0x96, 0xdd, 0x38, 0xad, 0xab, 0x4b, 0x7e, - 0x9c, 0x57, 0xaa, 0x7b, 0x65, 0x8b, 0x38, 0xb0, 0x7, 0x6, - 0xb7, 0x2c, 0xa3, 0x1e, 0x86, 0xa9, 0xda, 0xc1, 0xd3, 0x8a, - 0xd9, 0xb4, 0x88, 0xc, 0x71, 0x40, 0x16, 0x6d, 0xd4, 0x56, - 0x84, 0x2a, 0x2a, 0x8, 0x53, 0xa5, 0x5c, 0x8d, 0x68, 0x2, - 0x48, 0xea, 0x5d, 0xb9, 0xa6, 0xa8, 0xc5, 0x49, 0x40, 0xf, - 0xa4, 0xa5, 0xa2, 0x80, 0x1a, 0x46, 0x29, 0x31, 0x4f, 0xa4, - 0x23, 0x34, 0x1, 0x19, 0x5a, 0x69, 0x5c, 0xd4, 0xa4, 0x62, - 0x92, 0x80, 0x21, 0x29, 0x9a, 0x69, 0x8e, 0xa7, 0xc5, 0x26, - 0xda, 00, 0xac, 0xd1, 0xe6, 0x93, 0xca, 0xab, 0x5b, 0x29, - 0x36, 0x7b, 0x50, 0x5, 0x46, 0x84, 0x53, 0x4c, 0x23, 0xd2, - 0xae, 0x94, 0xa6, 0x94, 0xf6, 0xa0, 0xa, 0x46, 0x1f, 0x6a, - 0x69, 0xb7, 0xab, 0xbe, 0x5d, 0x1e, 0x5d, 00, 0x67, 0xb5, - 0xb8, 0xf4, 0xa6, 0x9b, 0x7c, 0xf6, 0xad, 0xf, 0x2a, 0x93, - 0xca, 0xa0, 0xc, 0xf3, 0x6d, 0x4c, 0x6b, 0x70, 0x3b, 0x56, - 0x97, 0x95, 0x48, 0x61, 0xa0, 0xc, 0xc3, 0x6c, 0xd, 0x27, - 0xd9, 0x6b, 0x4f, 0xc9, 0xa6, 0x98, 0x7d, 0xa8, 0x3, 0x2c, - 0xda, 0xf, 0x4a, 0x61, 0xb4, 0x6, 0xb5, 0x8c, 0x3e, 0xd4, - 0xd3, 0x6, 0x4d, 00, 0x64, 0x35, 0x9f, 0xb5, 0x30, 0xd9, - 0xfb, 0x56, 0xc1, 0xb7, 0xf6, 0xa6, 0x1b, 0x7f, 0x6a, 00, - 0xc6, 0x36, 0x74, 0xc6, 0xb3, 0xe3, 0xa5, 0x6d, 0x9b, 0x6f, - 0x6a, 0x69, 0xb6, 0xf6, 0xa0, 0xc, 0x33, 0x65, 0x4d, 0x36, - 0x5e, 0xd5, 0xb7, 0xf6, 0x6f, 0xf3, 0x8a, 0x43, 0x6d, 0xed, - 0x40, 0x18, 0x4d, 0x65, 0xcf, 0x4a, 0x8d, 0xac, 0xb8, 0xad, - 0xf3, 0x6b, 0x9a, 0x8c, 0xda, 0xfb, 0x62, 0x80, 0x30, 0xd, - 0x97, 0xb5, 0x46, 0x6c, 0x87, 0xa6, 0x6b, 0xa1, 0x36, 0x75, - 0x19, 0xb3, 0xa0, 0xe, 0x79, 0xac, 0x46, 0x7a, 0x53, 0x1a, - 0xc7, 0x3d, 0xab, 0xa1, 0x6b, 0x3e, 0x7a, 0x53, 0xd, 0x9d, - 00, 0x73, 0xc6, 0xc4, 0xa, 0x63, 0x58, 0x7b, 0x57, 0x42, - 0x6c, 0x8e, 0x7a, 0x53, 0x4d, 0x91, 0xf4, 0xa0, 0xe, 0x74, - 0xd8, 0x7b, 0x1a, 0x8d, 0xac, 0x7d, 0xab, 0xa4, 0x36, 0x47, - 0x1d, 0x2a, 0x33, 0x64, 0x7d, 0x28, 0x3, 0x9b, 0x6b, 0x1, - 0x8e, 0x95, 0x19, 0xb0, 0xae, 0x91, 0xac, 0x4e, 0x7a, 0x53, - 0x1a, 0xc8, 0xfa, 0x50, 0x7, 0x34, 0x6c, 0x3d, 0xaa, 0x23, - 0x61, 0x9e, 0xd5, 0xd3, 0x1b, 0x1c, 0x8e, 0x95, 0x19, 0xb1, - 0xf6, 0xa0, 0xe, 0x64, 0xd8, 0x73, 0xd2, 0x9a, 0x6c, 0x3d, - 0xab, 0xa4, 0x3a, 0x7f, 0xb5, 0x31, 0xac, 0x7d, 0xa8, 0x3, - 0x9a, 0x36, 0x39, 0xed, 0x4c, 0x36, 0x1e, 0xdf, 0xa5, 0x74, - 0xa6, 0xc0, 0xfa, 0x53, 0xd, 0x87, 0xb1, 0xa0, 0xe, 0x64, - 0xd8, 0xf3, 0x51, 0xb5, 0x8f, 0x3f, 0xfd, 0x6a, 0xe9, 0x8d, - 0x81, 0xf4, 0xfd, 0x2a, 0x33, 0x60, 0x7d, 0x3f, 0x4a, 00, - 0xe6, 0x9a, 0xc7, 0xdb, 0x35, 0x13, 0x58, 0xd7, 0x4c, 0xd6, - 0x7, 0x3d, 0x3f, 0x4a, 0x89, 0xac, 0xe, 0x7a, 0x50, 0x7, - 0x36, 0x6c, 0x7d, 0xaa, 0x36, 0xb2, 0xcf, 0x6a, 0xe9, 0x1a, - 0xc0, 0xfa, 0x53, 0xe, 0x9e, 0x7d, 0x28, 0x3, 0x9c, 0x36, - 0x47, 0xd2, 0x9a, 0x6c, 0xcf, 0xa5, 0x74, 0x67, 0x4f, 0x3e, - 0x94, 0xd3, 0xa7, 0x9f, 0x43, 0x40, 0x1c, 0xef, 0xd9, 0x39, - 0xa5, 0x16, 0x5e, 0xd5, 0xd0, 0x7f, 0x67, 0x9f, 0x4f, 0xd2, - 0x94, 0x69, 0xe7, 0x3d, 0x3f, 0x4a, 00, 0xc1, 0x5b, 0x2c, - 0xf6, 0xa9, 0xa3, 0xb2, 0xe7, 0xa5, 0x6d, 0x2e, 0x9e, 0x7d, - 0x3f, 0x4a, 0x95, 0x2c, 0x8, 0x3d, 0x28, 0x3, 0x2e, 0x1b, - 0x2f, 0x6a, 0xbf, 0x5, 0x9f, 0x3d, 0x2a, 0xfc, 0x56, 0x24, - 0x1e, 0x95, 0x7a, 0xb, 0x2c, 0xf6, 0xa0, 0xa, 0xd6, 0xb6, - 0x7c, 0x8e, 0x2b, 0x5e, 0xda, 0xd7, 0x15, 0x25, 0xb5, 0x9e, - 0x3b, 0x56, 0x94, 0x16, 0xf8, 0xa0, 0x6, 0xdb, 0xdb, 0xf4, - 0xe2, 0xb5, 0x2d, 0xe1, 0xc6, 0x29, 0xb0, 0xc1, 0x8c, 0x55, - 0xd8, 0xa2, 0xc5, 00, 0x3e, 0x38, 0xfa, 0x55, 0x94, 0x4a, - 0x6a, 0x28, 0xa9, 0x80, 0xc5, 00, 0x2a, 0x8a, 0x75, 0x1d, - 0x29, 0xc2, 0x80, 0x16, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x4, 0x23, 0x34, 0x9b, 0x69, - 0xd4, 0x50, 0x3, 0x76, 0xd1, 0xb6, 0x9d, 0x45, 00, 0x37, - 0x6, 0x93, 0x14, 0xfa, 0x4c, 0xa, 00, 0x66, 0xd1, 0x46, - 0xda, 0x7e, 0xda, 0x36, 0xd0, 0x3, 0x36, 0xd1, 0xb6, 0x9d, - 0xb6, 0x8d, 0xb4, 00, 0xcd, 0xb4, 0x14, 0xcd, 0x3f, 0x6d, - 0x1b, 0x68, 0x2, 0x3f, 0x2e, 0x90, 0xa0, 0x15, 0x2e, 0xd, - 0x21, 0x1e, 0xb4, 0x1, 0xe, 0xca, 0x3c, 0xbf, 0x6a, 0x97, - 0x2, 0x8c, 0xa, 00, 0x84, 0xc7, 0x9a, 0x4f, 0x2e, 0xa7, - 0xda, 0x28, 0xdb, 0x40, 0x15, 0xfc, 0xba, 0x4f, 0x2a, 0xac, - 0xed, 0xa3, 0x6d, 00, 0x55, 0xf2, 0x85, 0x21, 0x88, 0x7a, - 0x55, 0xad, 0x94, 0x85, 0x28, 0x2, 0xa7, 0x95, 0x4d, 0x30, - 0x83, 0x56, 0xf6, 0x51, 0xb3, 0xda, 0x80, 0x29, 0x98, 0x5, - 0x30, 0xc1, 0x9e, 0xd5, 0x78, 0xa5, 0x37, 0xcb, 0xf6, 0xa0, - 0xa, 0x5f, 0x67, 0x1e, 0x94, 0x86, 0xdc, 0x55, 0xef, 0x2a, - 0x93, 0xca, 0xa0, 0xc, 0xf3, 0x6c, 0x33, 0x4d, 0x36, 0xc2, - 0xb4, 0x4c, 0x5e, 0xd4, 0x9e, 0x58, 0xa0, 0xc, 0xe3, 0x6d, - 0x4c, 0x36, 0xa3, 0xd2, 0xb4, 0x8c, 0x54, 0x9e, 0x55, 00, - 0x65, 0x9b, 0x40, 0x69, 0xad, 0x68, 0x3d, 0x2b, 0x54, 0xc3, - 0x4d, 0x30, 0xe3, 0xb5, 00, 0x64, 0x1b, 0x41, 0xf5, 0xa6, - 0x1b, 0x31, 0x5a, 0xfe, 0x45, 0x27, 0xd9, 0xe8, 0x3, 0x1c, - 0xd9, 0x8c, 0x74, 0xa8, 0xcd, 0x97, 0xb5, 0x6d, 0x9b, 0x7f, - 0x6a, 0x61, 0x82, 0x80, 0x31, 0x8d, 0x9f, 0xb5, 0x46, 0xd6, - 0x43, 0x3d, 0x2b, 0x6f, 0xec, 0xc3, 0xd2, 0x90, 0xdb, 0x7b, - 0x50, 0x6, 0x13, 0x59, 0xf1, 0xd2, 0xa3, 0x36, 0x5c, 0x74, - 0xad, 0xe6, 0xb6, 0xfc, 0x29, 0x86, 0xdb, 0x8e, 0x94, 0x1, - 0x80, 0x6c, 0xea, 0x36, 0xb3, 0xe7, 0xa5, 0x74, 0x6, 0xd3, - 0xda, 0x98, 0xd6, 0x63, 0xd2, 0x80, 0x39, 0xf3, 0x62, 0xf, - 0x6a, 0x63, 0x58, 0x81, 0xda, 0xba, 0x3, 0x68, 0x3d, 0x29, - 0xd, 0x9f, 0xe1, 0x40, 0x1c, 0xf1, 0xb2, 0x1e, 0x94, 0xd3, - 0x62, 0xf, 0x6a, 0xe8, 0xd, 0x88, 0xa4, 0x36, 0x34, 0x1, - 0x81, 0xf6, 00, 0xf, 0x4a, 0x5, 0x8f, 0xb5, 0x6f, 0x1b, - 0x2f, 0x6a, 0x5, 0x97, 0xb5, 00, 0x61, 0x8b, 0x1c, 0x54, - 0xa9, 0x65, 0xed, 0x5b, 0x22, 0xce, 0xa4, 0x4b, 0x3a, 00, - 0xca, 0x4b, 0x2a, 0xb7, 0x15, 0x9e, 0x3b, 0x56, 0x82, 0xda, - 0xe0, 0x54, 0xf1, 0xdb, 0xe3, 0xb5, 00, 0x54, 0x8a, 0xdb, - 0x7, 0xa5, 0x5c, 0x8a, 0xa, 0x99, 0x21, 0xc5, 0x58, 0x48, - 0xb1, 0x40, 0x11, 0xc7, 0x16, 0x2a, 0xca, 0x25, 0x2a, 0xa6, - 0x2a, 0x55, 0x5c, 0x50, 00, 0xab, 0x8a, 0x78, 0x18, 0xa0, - 0xc, 0x52, 0x81, 0x9a, 00, 0x50, 0x29, 0xd4, 0x9d, 0x29, - 0x68, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa4, 0xc6, - 0x69, 0x68, 0xa0, 0x4, 0xc0, 0xa3, 0x2, 0x96, 0x8a, 00, - 0x4d, 0xb4, 0x9b, 0x69, 0xd4, 0x50, 0x3, 0x76, 0xd1, 0xb6, - 0x9d, 0x45, 00, 0x37, 0x6d, 0x21, 0x14, 0xfa, 0x43, 0xd2, - 0x80, 0x1b, 0x8a, 0x30, 0x28, 0xa2, 0x80, 0x13, 0x2, 0x8d, - 0xb4, 0xb4, 0x50, 0x2, 0x6d, 0xa3, 0x6d, 0x2d, 0x14, 00, - 0xdd, 0x82, 0x8d, 0x94, 0xea, 0x28, 0x2, 0x32, 0x94, 0x9b, - 0x2a, 0x5a, 0xf, 0x4a, 00, 0x8b, 0x67, 0xb5, 0x21, 0x8f, - 0x34, 0xfa, 0x28, 0x2, 0x3f, 0x2b, 0xda, 0x93, 0xca, 0xa9, - 0x68, 0xa0, 0x8, 0xbc, 0xaf, 0x6a, 0x69, 0x8b, 0xda, 0xa7, - 0xa6, 0xd0, 0x4, 0x26, 0x2e, 0x3a, 0x53, 0x7c, 0xaa, 0xb1, - 0x45, 00, 0x56, 0x30, 0xd2, 0x18, 0x2a, 0x7a, 0xf, 0x4a, - 00, 0xa8, 0x61, 0xcf, 0x6a, 0x4f, 0x22, 0xac, 0xd1, 0x40, - 0x15, 0xbe, 0xcf, 0x4d, 0x36, 0xde, 0xd5, 0x6c, 0xf4, 0xa6, - 0xd0, 0x5, 0x5f, 0xb3, 0x7b, 0x52, 0x7d, 0x9b, 0xd8, 0x55, - 0xba, 0x28, 0x2, 0x9f, 0xd9, 0x7d, 0xa8, 0xfb, 0x3f, 0xb5, - 0x5c, 0xa4, 0x3d, 0x28, 0x2, 0xaf, 0xd9, 0xfd, 0xa9, 0xe2, - 0xe, 0x6a, 0xc5, 0x2a, 0xf5, 0xa0, 0x8, 0x44, 0x19, 0x15, - 0x22, 0xc5, 0xed, 0x52, 0xaf, 0x4a, 0x51, 0xd6, 0x80, 0x1a, - 0x23, 0xa9, 0x42, 0x62, 0x9c, 0x3a, 0x53, 0x97, 0xa5, 00, - 0x34, 0x2d, 0x3c, 0xc, 0x51, 0x45, 00, 0x28, 0x19, 0xa5, - 0xa0, 0x74, 0xa5, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0xff, - 0xd9, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, - 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, - 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, 0x65, - 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, - 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, - 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, - 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, - 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, - 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, - 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, - 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, - 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, - 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, - 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, - 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, - 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, - 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, - 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, - 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, 0x65, - 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, - 0xa, 0x25, 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_image_html[] = {{file_404_html, data_image_html, data_image_html + 12, sizeof(data_image_html) - 12}}; - -const struct httpd_fsdata_file file_image_jpg[] = {{file_image_html, data_image_jpg, data_image_jpg + 11, sizeof(data_image_jpg) - 11}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_image_jpg, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_logo_jpg, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 9 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h deleted file mode 100644 index 73a9994da..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const unsigned char *name; - const unsigned char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c deleted file mode 100644 index 3fcf378c9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h deleted file mode 100644 index 26b279341..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h +++ /dev/null @@ -1,43 +0,0 @@ -/*! - * \file mii.h - * \brief Media Independent Interface (MII) driver - * \version $Revision: 1.3 $ - * \author Michael Norman - * - * \warning This driver assumes that FEC0 is used for all MII management - * communications. For dual PHYs, etc., insure that FEC0_MDC and - * FEC0_MDIO are connected to the PHY's MDC and MDIO. - */ - -#ifndef _MII_H_ -#define _MII_H_ - -/*******************************************************************/ - -int -mii_write(int, int, uint16); - -int -mii_read(int, int, uint16*); - -void -mii_init(int); - -/* MII Speed Settings */ -typedef enum { - MII_10BASE_T, /*!< 10Base-T operation */ - MII_100BASE_TX /*!< 100Base-TX operation */ -} MII_SPEED; - -/* MII Duplex Settings */ -typedef enum { - MII_HDX, /*!< half-duplex */ - MII_FDX /*!< full-duplex */ -} MII_DUPLEX; - -#define MII_TIMEOUT 0x10000 -#define MII_LINK_TIMEOUT 0x10000 - -/*******************************************************************/ - -#endif /* _MII_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c deleted file mode 100644 index 3109e61c0..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* Task that controls the uIP TCP/IP stack. */ - - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "FEC.h" -#include "partest.h" - - -/*-----------------------------------------------------------*/ - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/*-----------------------------------------------------------*/ - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); -extern void timer_set(struct timer *t, clock_time_t interval); -extern int timer_expired(struct timer *t); -extern void timer_reset(struct timer *t); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern xSemaphoreHandle xFECSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -/* Define clock functions here to avoid header file name clash between uIP -and the Luminary Micro driver library. */ -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; - - /* To prevent compiler warnings. */ - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - - /* Initialise the WEB server. */ - httpd_init(); - - /* Initialise the Ethernet controller peripheral. */ - vFECInit(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = usFECGetRxedData(); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECSendData(); - } - else - { - /* If we are not sending data then let the FEC driver know - the buffer is no longer required. */ - vFECRxProcessingCompleted(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vFECSendData(); - } - else - { - /* If we are not sending data then let the FEC driver know - the buffer is no longer required. */ - vFECRxProcessingCompleted(); - } - } - else - { - /* If we are not sending data then let the FEC driver know - the buffer is no longer required. */ - vFECRxProcessingCompleted(); - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECSendData(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xFECSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 2a93ff326..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,162 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 30 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 5 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1500 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - - -#define FRAME_MULTIPLE 1 - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include deleted file mode 100644 index 43ba24744..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include +++ /dev/null @@ -1,47 +0,0 @@ - - -ifdef APPS - APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP)) - -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP)) - CFLAGS += $(addprefix -I../apps/,$(APPS)) -endif - -ifndef CCDEP - CCDEP = $(CC) -endif -ifndef CCDEPCFLAGS - CCDEPCFLAGS = $(CFLAGS) -endif -ifndef OBJECTDIR - OBJECTDIR = obj -endif - -ifeq (${wildcard $(OBJECTDIR)},) - DUMMY := ${shell mkdir $(OBJECTDIR)} -endif - - -vpath %.c . ../uip ../lib $(APPDIRS) - -$(OBJECTDIR)/%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ - -$(OBJECTDIR)/%.d: %.c - @set -e; rm -f $@; \ - $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ - -UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c - - -ifneq ($(MAKECMDGOALS),clean) --include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \ - $(APP_SOURCES:.c=.d)) -endif - -uip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ - -apps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h deleted file mode 100644 index dae68745f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \defgroup clock Clock interface - * - * The clock interface is the interface between the \ref timer "timer library" - * and the platform specific clock functionality. The clock - * interface must be implemented for each platform that uses the \ref - * timer "timer library". - * - * The clock interface does only one this: it measures time. The clock - * interface provides a macro, CLOCK_SECOND, which corresponds to one - * second of system time. - * - * \sa \ref timer "Timer library" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "clock-arch.h" - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init(void); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -clock_time_t clock_time(void); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND (clock_time_t)32 -#endif - -#endif /* __CLOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h deleted file mode 100644 index 9dff03d09..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on the "Labels as - * values" feature of gcc - * \author - * Adam Dunkels - * - * This implementation of local continuations is based on a special - * feature of the GCC C compiler called "labels as values". This - * feature allows assigning pointers with the address of the code - * corresponding to a particular C label. - * - * For more information, see the GCC documentation: - * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html - * - * Thanks to dividuum for finding the nice local scope label - * implementation. - */ - -#ifndef __LC_ADDRLABELS_H__ -#define __LC_ADDRLABELS_H__ - -/** \hideinitializer */ -typedef void * lc_t; - -#define LC_INIT(s) s = NULL - - -#define LC_RESUME(s) \ - do { \ - if(s != NULL) { \ - goto *s; \ - } \ - } while(0) - -#define LC_SET(s) \ - do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0) - -#define LC_END(s) - -#endif /* __LC_ADDRLABELS_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c deleted file mode 100644 index d29ef0172..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.1 2007/01/04 11:06:40 adamdunkels Exp $ - */ -#include -#include - -#include "uipopt.h" -#include "psock.h" -#include "uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void buf_setup( struct psock_buf *buf, u8_t *bufptr, u16_t bufsize ) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} - -/*---------------------------------------------------------------------------*/ -static u8_t buf_bufdata( struct psock_buf *buf, u16_t len, u8_t **dataptr, u16_t *datalen ) -{ - ( void ) len; - - if( *datalen < buf->left ) - { - memcpy( buf->ptr, *dataptr, *datalen ); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } - else if( *datalen == buf->left ) - { - memcpy( buf->ptr, *dataptr, *datalen ); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } - else - { - memcpy( buf->ptr, *dataptr, buf->left ); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} - -/*---------------------------------------------------------------------------*/ -static u8_t buf_bufto( register struct psock_buf *buf, u8_t endmarker, register u8_t **dataptr, register u16_t *datalen ) -{ - u8_t c; - while( buf->left > 0 && *datalen > 0 ) - { - c = *buf->ptr = **dataptr; - ++ *dataptr; - ++buf->ptr; - -- *datalen; - --buf->left; - - if( c == endmarker ) - { - return BUF_FOUND; - } - } - - if( *datalen == 0 ) - { - return BUF_NOT_FOUND; - } - - while( *datalen > 0 ) - { - c = **dataptr; - -- *datalen; - ++ *dataptr; - - if( c == endmarker ) - { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} - -/*---------------------------------------------------------------------------*/ -static char send_data( register struct psock *s ) -{ - if( s->state != STATE_DATA_SENT || uip_rexmit() ) - { - if( s->sendlen > uip_mss() ) - { - uip_send( s->sendptr, uip_mss() ); - } - else - { - uip_send( s->sendptr, s->sendlen ); - } - - s->state = STATE_DATA_SENT; - return 1; - } - - return 0; -} - -/*---------------------------------------------------------------------------*/ -static char data_acked( register struct psock *s ) -{ - if( s->state == STATE_DATA_SENT && uip_acked() ) - { - if( s->sendlen > uip_mss() ) - { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } - else - { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - - s->state = STATE_ACKED; - return 1; - } - - return 0; -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_send ( register struct psock *s, const char *buf, unsigned int len ) ) -{ - PT_BEGIN( &s->psockpt ); - - /* If there is no data to send, we exit immediately. */ - if( len == 0 ) - { - PT_EXIT( &s->psockpt ); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = ( u8_t * ) buf; - s->sendlen = len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while( s->sendlen > 0 ) - { - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL( &s->psockpt, data_acked(s) & send_data(s) ); - } - - s->state = STATE_NONE; - - PT_END( &s->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_generator_send ( register struct psock *s, unsigned short ( *generate ) ( void * ), void *arg ) ) -{ - PT_BEGIN( &s->psockpt ); - - /* Ensure that there is a generator function to call. */ - if( generate == NULL ) - { - PT_EXIT( &s->psockpt ); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate( arg ); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do - { - /* Call the generator function again if we are called to perform a - retransmission. */ - if( uip_rexmit() ) - { - generate( arg ); - } - - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL( &s->psockpt, data_acked(s) & send_data(s) ); - } while( s->sendlen > 0 ); - - s->state = STATE_NONE; - - PT_END( &s->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -u16_t psock_datalen( struct psock *psock ) -{ - return psock->bufsize - psock->buf.left; -} - -/*---------------------------------------------------------------------------*/ -char psock_newdata( struct psock *s ) -{ - if( s->readlen > 0 ) - { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } - else if( s->state == STATE_READ ) - { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } - else if( uip_newdata() ) - { - /* There is new data that has not been consumed. */ - return 1; - } - else - { - /* There is no new data. */ - return 0; - } -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_readto ( register struct psock *psock, unsigned char c ) ) -{ - PT_BEGIN( &psock->psockpt ); - - buf_setup( &psock->buf, ( u8_t * ) psock->bufptr, psock->bufsize ); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - do - { - if( psock->readlen == 0 ) - { - PT_WAIT_UNTIL( &psock->psockpt, psock_newdata(psock) ); - psock->state = STATE_READ; - psock->readptr = ( u8_t * ) uip_appdata; - psock->readlen = uip_datalen(); - } - } while( (buf_bufto(&psock->buf, c, &psock->readptr, &psock->readlen) & BUF_FOUND) == 0 ); - - if( psock_datalen(psock) == 0 ) - { - psock->state = STATE_NONE; - PT_RESTART( &psock->psockpt ); - } - - PT_END( &psock->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_readbuf ( register struct psock *psock ) ) -{ - PT_BEGIN( &psock->psockpt ); - - buf_setup( &psock->buf, ( u8_t * ) psock->bufptr, psock->bufsize ); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - do - { - if( psock->readlen == 0 ) - { - PT_WAIT_UNTIL( &psock->psockpt, psock_newdata(psock) ); - printf( "Waited for newdata\n" ); - psock->state = STATE_READ; - psock->readptr = ( u8_t * ) uip_appdata; - psock->readlen = uip_datalen(); - } - } while( buf_bufdata(&psock->buf, psock->bufsize, &psock->readptr, &psock->readlen) != BUF_FULL ); - - if( psock_datalen(psock) == 0 ) - { - psock->state = STATE_NONE; - PT_RESTART( &psock->psockpt ); - } - - PT_END( &psock->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -void psock_init( register struct psock *psock, char *buffer, unsigned int buffersize ) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup( &psock->buf, ( u8_t * ) buffer, buffersize ); - PT_INIT( &psock->pt ); - PT_INIT( &psock->psockpt ); -} - -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c deleted file mode 100644 index 9a6365313..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c +++ /dev/null @@ -1,130 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#include "clock.h" -#include "uip_timer.h" - -/*---------------------------------------------------------------------------*/ - -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void timer_set( struct timer *t, clock_time_t interval ) -{ - t->interval = interval; - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_rester() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void timer_reset( struct timer *t ) -{ - t->start += t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void timer_restart( struct timer *t ) -{ - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int timer_expired( struct timer *t ) -{ - return( clock_time_t ) ( clock_time() - t->start ) >= ( clock_time_t ) t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h deleted file mode 100644 index e854ecefe..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h +++ /dev/null @@ -1,176 +0,0 @@ -/** - * \addtogroup uipfw - * @{ - */ - -/** - * \file - * uIP packet forwarding header file. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-fw.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#ifndef __UIP_FW_H__ -#define __UIP_FW_H__ - -#include "uip.h" - -/** - * Representation of a uIP network interface. - */ -struct uip_fw_netif { - struct uip_fw_netif *next; /**< Pointer to the next interface when - linked in a list. */ - u16_t ipaddr[2]; /**< The IP address of this interface. */ - u16_t netmask[2]; /**< The netmask of the interface. */ - u8_t (* output)(void); - /**< A pointer to the function that - sends a packet. */ -}; - -/** - * Intantiating macro for a uIP network interface. - * - * Example: - \code - struct uip_fw_netif slipnetif = - {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)}; - \endcode - * \param ip1,ip2,ip3,ip4 The IP address of the network interface. - * - * \param nm1,nm2,nm3,nm4 The netmask of the network interface. - * - * \param outputfunc A pointer to the output function of the network interface. - * - * \hideinitializer - */ -#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \ - NULL, \ - {HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \ - {HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \ - outputfunc - -/** - * Set the IP address of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address. - * - * \hideinitializer - */ -#define uip_fw_setipaddr(netif, addr) \ - do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \ - (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0) -/** - * Set the netmask of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address representing the netmask. - * - * \hideinitializer - */ -#define uip_fw_setnetmask(netif, addr) \ - do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \ - (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0) - -void uip_fw_init(void); -u8_t uip_fw_forward(void); -u8_t uip_fw_output(void); -void uip_fw_register(struct uip_fw_netif *netif); -void uip_fw_default(struct uip_fw_netif *netif); -void uip_fw_periodic(void); - - -/** - * A non-error message that indicates that a packet should be - * processed locally. - * - * \hideinitializer - */ -#define UIP_FW_LOCAL 0 - -/** - * A non-error message that indicates that something went OK. - * - * \hideinitializer - */ -#define UIP_FW_OK 0 - -/** - * A non-error message that indicates that a packet was forwarded. - * - * \hideinitializer - */ -#define UIP_FW_FORWARDED 1 - -/** - * A non-error message that indicates that a zero-length packet - * transmission was attempted, and that no packet was sent. - * - * \hideinitializer - */ -#define UIP_FW_ZEROLEN 2 - -/** - * An error message that indicates that a packet that was too large - * for the outbound network interface was detected. - * - * \hideinitializer - */ -#define UIP_FW_TOOLARGE 3 - -/** - * An error message that indicates that no suitable interface could be - * found for an outbound packet. - * - * \hideinitializer - */ -#define UIP_FW_NOROUTE 4 - -/** - * An error message that indicates that a packet that should be - * forwarded or output was dropped. - * - * \hideinitializer - */ -#define UIP_FW_DROPPED 5 - - -#endif /* __UIP_FW_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h deleted file mode 100644 index aca096f2c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \file - * Header file for database of link-local neighbors, used by - * IPv6 code and to be used by future ARP code. - * \author - * Adam Dunkels - */ - -#ifndef __UIP_NEIGHBOR_H__ -#define __UIP_NEIGHBOR_H__ - -#include "uip.h" - -struct uip_neighbor_addr { -#if UIP_NEIGHBOR_CONF_ADDRTYPE - UIP_NEIGHBOR_CONF_ADDRTYPE addr; -#else - struct uip_eth_addr addr; -#endif -}; - -void uip_neighbor_init(void); -void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr); -void uip_neighbor_update(uip_ipaddr_t ipaddr); -struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr); -void uip_neighbor_periodic(void); - -#endif /* __UIP-NEIGHBOR_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c deleted file mode 100644 index 6828f3c74..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#include - -#include "uip-split.h" -#include "uip.h" -#include "uip-fw.h" -#include "uip_arch.h" - -#define BUF ( ( struct uip_tcpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) - -/*-----------------------------------------------------------------------------*/ -void uip_split_output( void ) -{ - u16_t tcplen, len1, len2; - - /* We only try to split maximum sized TCP segments. */ - if( BUF->proto == UIP_PROTO_TCP && uip_len == UIP_BUFSIZE - UIP_LLH_LEN ) - { - tcplen = uip_len - UIP_TCPIP_HLEN; - - /* Split the segment in two. If the original packet length was - odd, we make the second packet one byte larger. */ - len1 = len2 = tcplen / 2; - if( len1 + len2 < tcplen ) - { - ++len2; - } - - /* Create the first packet. This is done by altering the length - field of the IP header and updating the checksums. */ - uip_len = len1 + UIP_TCPIP_HLEN; - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; - #endif /* UIP_CONF_IPV6 */ - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - #if !UIP_CONF_IPV6 - - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - /* Transmit the first packet. */ - - /* uip_fw_output();*/ - - // tcpip_output(); - - /* Now, create the second packet. To do this, it is not enough to - just alter the length field, but we must also update the TCP - sequence number and point the uip_appdata to a new place in - memory. This place is detemined by the length of the first - packet (len1). */ - uip_len = len2 + UIP_TCPIP_HLEN; - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; - #endif /* UIP_CONF_IPV6 */ - - /* uip_appdata += len1;*/ - memcpy( uip_appdata, ( u8_t * ) uip_appdata + len1, len2 ); - - uip_add32( BUF->seqno, len1 ); - BUF->seqno[0] = uip_acc32[0]; - BUF->seqno[1] = uip_acc32[1]; - BUF->seqno[2] = uip_acc32[2]; - BUF->seqno[3] = uip_acc32[3]; - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - #if !UIP_CONF_IPV6 - - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - /* Transmit the second packet. */ - - /* uip_fw_output();*/ - - // tcpip_output(); - } - else - { - /* uip_fw_output();*/ - - // tcpip_output(); - } -} - -/*-----------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h deleted file mode 100644 index 446e19200..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipsplit uIP TCP throughput booster hack - * @{ - * - * The basic uIP TCP implementation only allows each TCP connection to - * have a single TCP segment in flight at any given time. Because of - * the delayed ACK algorithm employed by most TCP receivers, uIP's - * limit on the amount of in-flight TCP segments seriously reduces the - * maximum achievable throughput for sending data from uIP. - * - * The uip-split module is a hack which tries to remedy this - * situation. By splitting maximum sized outgoing TCP segments into - * two, the delayed ACK algorithm is not invoked at TCP - * receivers. This improves the throughput when sending data from uIP - * by orders of magnitude. - * - * The uip-split module uses the uip-fw module (uIP IP packet - * forwarding) for sending packets. Therefore, the uip-fw module must - * be set up with the appropriate network interfaces for this module - * to work. - */ - - -/** - * \file - * Module for splitting outbound TCP segments in two to avoid the - * delayed ACK throughput degradation. - * \author - * Adam Dunkels - * - */ - -#ifndef __UIP_SPLIT_H__ -#define __UIP_SPLIT_H__ - -/** - * Handle outgoing packets. - * - * This function inspects an outgoing packet in the uip_buf buffer and - * sends it out using the uip_fw_output() function. If the packet is a - * full-sized TCP segment it will be split into two segments and - * transmitted separately. This function should be called instead of - * the actual device driver output function, or the uip_fw_output() - * function. - * - * The headers of the outgoing packet is assumed to be in the uip_buf - * buffer and the payload is assumed to be wherever uip_appdata - * points. The length of the outgoing packet is assumed to be in the - * uip_len variable. - * - */ -void uip_split_output(void); - -#endif /* __UIP_SPLIT_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c deleted file mode 100644 index 1c07f35ad..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c +++ /dev/null @@ -1,2233 +0,0 @@ -#define DEBUG_PRINTF( ... ) /*printf(__VA_ARGS__)*/ - -/** - * \defgroup uip The uIP TCP/IP stack - * @{ - * - * uIP is an implementation of the TCP/IP protocol stack intended for - * small 8-bit and 16-bit microcontrollers. - * - * uIP provides the necessary protocols for Internet communication, - * with a very small code footprint and RAM requirements - the uIP - * code size is on the order of a few kilobytes and RAM usage is on - * the order of a few hundred bytes. - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ -#include "uip.h" -#include "uipopt.h" -#include "uip_arch.h" -#include "uip_arp.h" -#include "FreeRTOS.h" - -#if UIP_CONF_IPV6 - #include "uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ - -/* Variable definitions. */ - -/* The IP address of this host. If it is defined to be fixed (by - setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set - here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 -const uip_ipaddr_t uip_hostaddr = { HTONS( (UIP_IPADDR0 << 8) | UIP_IPADDR1 ), HTONS( (UIP_IPADDR2 << 8) | UIP_IPADDR3 ) }; -const uip_ipaddr_t uip_draddr = { HTONS( (UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1 ), HTONS( (UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3 ) }; -const uip_ipaddr_t uip_netmask = { HTONS( (UIP_NETMASK0 << 8) | UIP_NETMASK1 ), HTONS( (UIP_NETMASK2 << 8) | UIP_NETMASK3 ) }; -#else -uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -static const uip_ipaddr_t all_ones_addr = -#if UIP_CONF_IPV6 -{ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; -#else /* UIP_CONF_IPV6 */ -{ - 0xffff, 0xffff -}; -#endif /* UIP_CONF_IPV6 */ -static const uip_ipaddr_t all_zeroes_addr = -#if UIP_CONF_IPV6 -{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -#else /* UIP_CONF_IPV6 */ -{ - 0x0000, 0x0000 -}; -#endif /* UIP_CONF_IPV6 */ - -#if UIP_FIXEDETHADDR -const struct uip_eth_addr uip_ethaddr = { { UIP_ETHADDR0, UIP_ETHADDR1, UIP_ETHADDR2, UIP_ETHADDR3, UIP_ETHADDR4, UIP_ETHADDR5 } }; -#else -struct uip_eth_addr uip_ethaddr = { { 0, 0, 0, 0, 0, 0 } }; -#endif -#ifndef UIP_CONF_EXTERNAL_BUFFER - #ifdef __ICCARM__ - #pragma data_alignment = 4 -u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains incoming packets. */ - #else -u8_t uip_buf[UIP_BUFSIZE + 2] ALIGN_STRUCT_END; /* The packet buffer that contains incoming packets. */ - #endif -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -void *uip_appdata; /* The uip_appdata pointer points to - application data. */ -void *uip_sappdata; /* The uip_appdata pointer points to - the application data which is to - be sent. */ -#if UIP_URGDATA > 0 -void *uip_urgdata; /* The uip_urgdata pointer points to - urgent data (out-of-band data), if - present. */ -u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -u16_t uip_len, uip_slen; - -/* The uip_len is either 8 or 16 bits, - depending on the maximum packet - size. */ -u8_t uip_flags; /* The uip_flags variable is used for - communication between the TCP/IP stack - and the application program. */ -struct uip_conn *uip_conn; /* uip_conn always points to the current - connection. */ - -struct uip_conn uip_conns[UIP_CONNS]; - -/* The uip_conns array holds all TCP - connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - -/* The uip_listenports list all currently - listning ports. */ -#if UIP_UDP -struct uip_udp_conn *uip_udp_conn; -struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -static u16_t ipid; /* Ths ipid variable is an increasing - number that is used for the IP ID - field. */ - -void uip_setipid( u16_t id ) -{ - ipid = id; -} - -static u8_t iss[4]; /* The iss variable is used for the TCP - initial sequence number. */ - -#if UIP_ACTIVE_OPEN -static u16_t lastport; /* Keeps track of the last port used for - a new connection. */ -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[4]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S ( 1 << 6 ) -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - -/* Macros. */ -#define BUF ( ( struct uip_tcpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define FBUF ( ( struct uip_tcpip_hdr * ) &uip_reassbuf[0] ) -#define ICMPBUF ( ( struct uip_icmpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define UDPBUF ( ( struct uip_udpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#if UIP_STATISTICS == 1 -struct uip_stats uip_stat; - #define UIP_STAT( s ) s -#else - #define UIP_STAT( s ) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 - #include -void uip_log( char *msg ); - #define UIP_LOG( m ) uip_log( m ) -#else - #define UIP_LOG( m ) -#endif /* UIP_LOGGING == 1 */ - -#if !UIP_ARCH_ADD32 -void uip_add32( u8_t *op32, u16_t op16 ) -{ - uip_acc32[3] = op32[3] + ( op16 & 0xff ); - uip_acc32[2] = op32[2] + ( op16 >> 8 ); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if( uip_acc32[2] < (op16 >> 8) ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - - if( uip_acc32[3] < (op16 & 0xff) ) - { - ++uip_acc32[2]; - if( uip_acc32[2] == 0 ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - } -} - -#endif /* UIP_ARCH_ADD32 */ - -#if !UIP_ARCH_CHKSUM - -/*---------------------------------------------------------------------------*/ -static u16_t chksum( u16_t sum, const u8_t *data, u16_t len ) -{ - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while( dataptr < last_byte ) - { /* At least two more bytes */ - t = ( dataptr[0] << 8 ) + dataptr[1]; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - - dataptr += 2; - } - - if( dataptr == last_byte ) - { - t = ( dataptr[0] << 8 ) + 0; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; -} - -/*---------------------------------------------------------------------------*/ -u16_t uip_chksum( u16_t *data, u16_t len ) -{ - return htons( chksum(0, ( u8_t * ) data, len) ); -} - -/*---------------------------------------------------------------------------*/ - #ifndef UIP_ARCH_IPCHKSUM -u16_t uip_ipchksum( void ) -{ - u16_t sum; - - sum = chksum( 0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN ); - DEBUG_PRINTF( "uip_ipchksum: sum 0x%04x\n", sum ); - return( sum == 0 ) ? 0xffff : htons( sum ); -} - - #endif - -/*---------------------------------------------------------------------------*/ -static u16_t upper_layer_chksum( u8_t proto ) -{ - u16_t upper_layer_len; - u16_t sum; - - #if UIP_CONF_IPV6 - upper_layer_len = ( ((u16_t) (BUF->len[0]) << 8) + BUF->len[1] ); - #else /* UIP_CONF_IPV6 */ - upper_layer_len = ( ((u16_t) (BUF->len[0]) << 8) + BUF->len[1] ) - UIP_IPH_LEN; - #endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - - /* Sum IP source and destination addresses. */ - sum = chksum( sum, ( u8_t * ) &BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t) ); - - /* Sum TCP header and data. */ - sum = chksum( sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], upper_layer_len ); - - return( sum == 0 ) ? 0xffff : htons( sum ); -} - -/*---------------------------------------------------------------------------*/ - #if UIP_CONF_IPV6 -u16_t uip_icmp6chksum( void ) -{ - return upper_layer_chksum( UIP_PROTO_ICMP6 ); -} - - #endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -u16_t uip_tcpchksum( void ) -{ - return upper_layer_chksum( UIP_PROTO_TCP ); -} - -/*---------------------------------------------------------------------------*/ - #if UIP_UDP_CHECKSUMS -u16_t uip_udpchksum( void ) -{ - return upper_layer_chksum( UIP_PROTO_UDP ); -} - - #endif /* UIP_UDP_CHECKSUMS */ -#endif /* UIP_ARCH_CHKSUM */ - -/*---------------------------------------------------------------------------*/ -void uip_init( void ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - uip_listenports[c] = 0; - } - - for( c = 0; c < UIP_CONNS; ++c ) - { - uip_conns[c].tcpstateflags = UIP_CLOSED; - } - - #if UIP_ACTIVE_OPEN - lastport = 1024; - #endif /* UIP_ACTIVE_OPEN */ - - #if UIP_UDP - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - uip_udp_conns[c].lport = 0; - } - - #endif /* UIP_UDP */ - - /* IPv4 initialization. */ - #if UIP_FIXEDADDR == 0 - - /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ - #endif /* UIP_FIXEDADDR */ -} - -/*---------------------------------------------------------------------------*/ -#if UIP_ACTIVE_OPEN -struct uip_conn *uip_connect( uip_ipaddr_t *ripaddr, u16_t rport ) -{ - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ -again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for( c = 0; c < UIP_CONNS; ++c ) - { - conn = &uip_conns[c]; - if( conn->tcpstateflags != UIP_CLOSED && conn->lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - cconn = &uip_conns[c]; - if( cconn->tcpstateflags == UIP_CLOSED ) - { - conn = cconn; - break; - } - - if( cconn->tcpstateflags == UIP_TIME_WAIT ) - { - if( conn == 0 || cconn->timer > conn->timer ) - { - conn = cconn; - } - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = iss[0]; - conn->snd_nxt[1] = iss[1]; - conn->snd_nxt[2] = iss[2]; - conn->snd_nxt[3] = iss[3]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons( lastport ); - conn->rport = rport; - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - - return conn; -} - -#endif /* UIP_ACTIVE_OPEN */ - -/*---------------------------------------------------------------------------*/ -#if UIP_UDP -struct uip_udp_conn *uip_udp_new( uip_ipaddr_t *ripaddr, u16_t rport ) -{ - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ -again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[c].lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[c].lport == 0 ) - { - conn = &uip_udp_conns[c]; - break; - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->lport = HTONS( lastport ); - conn->rport = rport; - if( ripaddr == NULL ) - { - memset( conn->ripaddr, 0, sizeof(uip_ipaddr_t) ); - } - else - { - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - } - - conn->ttl = UIP_TTL; - - return conn; -} - -#endif /* UIP_UDP */ - -/*---------------------------------------------------------------------------*/ -void uip_unlisten( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[c] == port ) - { - uip_listenports[c] = 0; - return; - } - } -} - -/*---------------------------------------------------------------------------*/ -void uip_listen( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[c] == 0 ) - { - uip_listenports[c] = port; - return; - } - } -} - -/*---------------------------------------------------------------------------*/ - -/* XXX: IP fragment reassembly: not well-tested. */ -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 - #define UIP_REASS_BUFSIZE ( UIP_BUFSIZE - UIP_LLH_LEN ) -static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / ( 8 * 8 )]; -static const u8_t bitmap_bits[8] = { 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; -static u16_t uip_reasslen; -static u8_t uip_reassflags; - #define UIP_REASS_FLAG_LASTFRAG 0x01 -static u8_t uip_reasstmr; - - #define IP_MF 0x20 - -static u8_t uip_reass( void ) -{ - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if( uip_reasstmr == 0 ) - { - memcpy( uip_reassbuf, &BUF->vhl, UIP_IPH_LEN ); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - - /* Clear the bitmap. */ - memset( uip_reassbitmap, 0, sizeof(uip_reassbitmap) ); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if - ( - BUF->srcipaddr[0] == FBUF->srcipaddr[0] && - BUF->srcipaddr[1] == FBUF->srcipaddr[1] && - BUF->destipaddr[0] == FBUF->destipaddr[0] && - BUF->destipaddr[1] == FBUF->destipaddr[1] && - BUF->ipid[0] == FBUF->ipid[0] && - BUF->ipid[1] == FBUF->ipid[1] - ) - { - len = ( BUF->len[0] << 8 ) + BUF->len[1] - ( BUF->vhl & 0x0f ) * 4; - offset = ( ((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1] ) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if( offset > UIP_REASS_BUFSIZE || offset + len > UIP_REASS_BUFSIZE ) - { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy( &uip_reassbuf[UIP_IPH_LEN + offset], ( char * ) BUF + ( int ) ((BUF->vhl & 0x0f) * 4), len ); - - /* Update the bitmap. */ - if( offset / (8 * 8) == (offset + len) / (8 * 8) ) - { - /* If the two endpoints are in the same byte, we only update - that byte. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7] &~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - else - { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7]; - for( i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i ) - { - uip_reassbitmap[i] = 0xff; - } - - uip_reassbitmap[( offset + len ) / ( 8 * 8 )] |= ~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - if( (BUF->ipoffset[0] & IP_MF) == 0 ) - { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if( uip_reassflags & UIP_REASS_FLAG_LASTFRAG ) - { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for( i = 0; i < uip_reasslen / (8 * 8) - 1; ++i ) - { - if( uip_reassbitmap[i] != 0xff ) - { - goto nullreturn; - } - } - - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if( uip_reassbitmap[uip_reasslen / (8 * 8)] != (u8_t)~bitmap_bits[uip_reasslen / 8 & 7] ) - { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy( BUF, FBUF, uip_reasslen ); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - BUF->len[0] = uip_reasslen >> 8; - BUF->len[1] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - return uip_reasslen; - } - } - -nullreturn: - return 0; -} - -#endif /* UIP_REASSEMBLY */ - -/*---------------------------------------------------------------------------*/ -static void uip_add_rcv_nxt( u16_t n ) -{ - uip_add32( uip_conn->rcv_nxt, n ); - uip_conn->rcv_nxt[0] = uip_acc32[0]; - uip_conn->rcv_nxt[1] = uip_acc32[1]; - uip_conn->rcv_nxt[2] = uip_acc32[2]; - uip_conn->rcv_nxt[3] = uip_acc32[3]; -} - -/*---------------------------------------------------------------------------*/ -void uip_process( u8_t flag ) -{ - register struct uip_conn *uip_connr = uip_conn; - - #if UIP_UDP - if( flag == UIP_UDP_SEND_CONN ) - { - goto udp_send; - } - - #endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if( flag == UIP_POLL_REQUEST ) - { - if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && !uip_outstanding(uip_connr) ) - { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } - else if( flag == UIP_TIMER ) - { - #if UIP_REASSEMBLY - if( uip_reasstmr != 0 ) - { - --uip_reasstmr; - } - - #endif /* UIP_REASSEMBLY */ - - /* Increase the initial sequence number. */ - if( ++iss[3] == 0 ) - { - if( ++iss[2] == 0 ) - { - if( ++iss[1] == 0 ) - { - ++iss[0]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if( uip_connr->tcpstateflags == UIP_TIME_WAIT || uip_connr->tcpstateflags == UIP_FIN_WAIT_2 ) - { - ++( uip_connr->timer ); - if( uip_connr->timer == UIP_TIME_WAIT_TIMEOUT ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } - else if( uip_connr->tcpstateflags != UIP_CLOSED ) - { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if( uip_outstanding(uip_connr) ) - { - uip_connr->timer = uip_connr->timer - 1; - if( uip_connr->timer == 0 ) - { - if - ( - uip_connr->nrtx == UIP_MAXRTX || - ( - (uip_connr->tcpstateflags == UIP_SYN_SENT || uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX - ) - ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << ( uip_connr->nrtx > 4 ? 4 : uip_connr->nrtx ); - ++( uip_connr->nrtx ); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT( ++uip_stat.tcp.rexmit ); - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - - #if UIP_ACTIVE_OPEN - - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - } - } - } - else if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED ) - { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - - goto drop; - } - - #if UIP_UDP - if( flag == UIP_UDP_TIMER ) - { - if( uip_udp_conn->lport != 0 ) - { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } - else - { - goto drop; - } - } - - #endif - - /* This is where the input processing starts. */ - UIP_STAT( ++uip_stat.ip.recv ); - - /* Start of IP input header processing code. */ - #if UIP_CONF_IPV6 - - /* Check validity of the IP header. */ - if( (BUF->vtc & 0xf0) != 0x60 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ipv6: invalid version." ); - goto drop; - } - - #else /* UIP_CONF_IPV6 */ - - /* Check validity of the IP header. */ - if( BUF->vhl != 0x45 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ip: invalid version or header length." ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - if( (BUF->len[0] << 8) + BUF->len[1] <= uip_len ) - { - uip_len = ( BUF->len[0] << 8 ) + BUF->len[1]; - #if UIP_CONF_IPV6 - uip_len += 40; /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ - #endif /* UIP_CONF_IPV6 */ - } - else - { - UIP_LOG( "ip: packet shorter than reported in IP header." ); - goto drop; - } - - #if !UIP_CONF_IPV6 - - /* Check the fragment flag. */ - if( (BUF->ipoffset[0] & 0x3f) != 0 || BUF->ipoffset[1] != 0 ) - { - #if UIP_REASSEMBLY - uip_len = uip_reass(); - if( uip_len == 0 ) - { - goto drop; - } - - #else /* UIP_REASSEMBLY */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.fragerr ); - UIP_LOG( "ip: fragment dropped." ); - goto drop; - #endif /* UIP_REASSEMBLY */ - } - - #endif /* UIP_CONF_IPV6 */ - - if( uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr) ) - { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ - #if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if( BUF->proto == UIP_PROTO_ICMP ) - { - UIP_LOG( "ip: possible ping config packet received." ); - goto icmp_input; - } - else - { - UIP_LOG( "ip: packet dropped since no address assigned." ); - goto drop; - } - - #endif /* UIP_PINGADDRCONF */ - } - else - { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ - #if UIP_BROADCAST - DEBUG_PRINTF( "UDP IP checksum 0x%04x\n", uip_ipchksum() ); - if( BUF->proto == UIP_PROTO_UDP && uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) /*&& - uip_ipchksum() == 0xffff*/ ) - { - goto udp_input; - } - - #endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ - #if !UIP_CONF_IPV6 - if( !uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - - #else /* UIP_CONF_IPV6 */ - - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if( !uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && BUF->destipaddr[0] != HTONS(0xff02) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - } - - #if !UIP_CONF_IPV6 - if( uip_ipchksum() != 0xffff ) - { /* Compute and check the IP header - checksum. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.chkerr ); - UIP_LOG( "ip: bad checksum." ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - - if( BUF->proto == UIP_PROTO_TCP ) - { /* Check for TCP packet. If so, - proceed with TCP input - processing. */ - goto tcp_input; - } - - #if UIP_UDP - if( BUF->proto == UIP_PROTO_UDP ) - { - goto udp_input; - } - - #endif /* UIP_UDP */ - - #if !UIP_CONF_IPV6 - - /* ICMPv4 processing code follows. */ - if( BUF->proto != UIP_PROTO_ICMP ) - { /* We only allow ICMP packets from - here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp." ); - goto drop; - } - - #if UIP_PINGADDRCONF - icmp_input : - #endif /* UIP_PINGADDRCONF */ - UIP_STAT( ++uip_stat.icmp.recv ); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if( ICMPBUF->type != ICMP_ECHO ) - { - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: not icmp echo." ); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ - #if UIP_PINGADDRCONF - if( (uip_hostaddr[0] | uip_hostaddr[1]) == 0 ) - { - uip_hostaddr[0] = BUF->destipaddr[0]; - uip_hostaddr[1] = BUF->destipaddr[1]; - } - - #endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if( ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8)) ) - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ) + 1; - } - else - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy( BUF->destipaddr, BUF->srcipaddr ); - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - - UIP_STAT( ++uip_stat.icmp.sent ); - goto send; - - /* End of IPv4 input header processing code. */ - #else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - DEBUG_PRINTF( "icmp6_input: length %d\n", uip_len ); - - if( BUF->proto != UIP_PROTO_ICMP6 ) - { /* We only allow ICMPv6 packets from - here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp6." ); - goto drop; - } - - UIP_STAT( ++uip_stat.icmp.recv ); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if( ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION ) - { - if( uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr) ) - { - if( ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS ) - { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add( ICMPBUF->srcipaddr, &(ICMPBUF->options[2]) ); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy( ICMPBUF->destipaddr, ICMPBUF->srcipaddr ); - uip_ipaddr_copy( ICMPBUF->srcipaddr, uip_hostaddr ); - ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ - memcpy( &(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr) ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - goto send; - } - - goto drop; - } - else if( ICMPBUF->type == ICMP6_ECHO ) - { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy( BUF->destipaddr, BUF->srcipaddr ); - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT( ++uip_stat.icmp.sent ); - goto send; - } - else - { - DEBUG_PRINTF( "Unknown icmp6 message type %d\n", ICMPBUF->type ); - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: unknown ICMP message." ); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - #endif /* !UIP_CONF_IPV6 */ - - #if UIP_UDP - - /* UDP input processing. */ - udp_input : - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ - #if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - if( UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff ) - { - UIP_STAT( ++uip_stat.udp.drop ); - UIP_STAT( ++uip_stat.udp.chkerr ); - UIP_LOG( "udp: bad checksum." ); - goto drop; - } - - #else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; - #endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for( uip_udp_conn = &uip_udp_conns[0]; uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; ++uip_udp_conn ) - { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if - ( - uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || UDPBUF->srcport == uip_udp_conn->rport) && - ( - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || - uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr) - ) - ) - { - goto udp_found; - } - } - - UIP_LOG( "udp: no matching connection found" ); - goto drop; - -udp_found: - UIP_STAT( ++uip_stat.udp.recv ); - uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); -udp_send: - if( uip_slen == 0 ) - { - goto drop; - } - - uip_len = uip_slen + UIP_IPUDPH_LEN; - - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = ( uip_len >> 8 ); - BUF->len[1] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS( uip_slen + UIP_UDPH_LEN ); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - uip_ipaddr_copy( BUF->destipaddr, uip_udp_conn->ripaddr ); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - - #if UIP_UDP_CHECKSUMS - - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~( uip_udpchksum() ); - if( UDPBUF->udpchksum == 0 ) - { - UDPBUF->udpchksum = 0xffff; - } - - #endif /* UIP_UDP_CHECKSUMS */ - UIP_STAT( ++uip_stat.udp.sent ); - goto ip_send_nolen; - #endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input : UIP_STAT( ++uip_stat.tcp.recv ); - - /* Start of TCP input header processing code. */ - if( uip_tcpchksum() != 0xffff ) - { /* Compute and check the TCP - checksum. */ - UIP_STAT( ++uip_stat.tcp.drop ); - UIP_STAT( ++uip_stat.tcp.chkerr ); - UIP_LOG( "tcp: bad checksum." ); - goto drop; - } - - /* Demultiplex this segment. */ - - /* First check any active connections. */ - for( uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; ++uip_connr ) - { - if - ( - uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr) - ) - { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if( (BUF->flags & TCP_CTL) != TCP_SYN ) - { - goto reset; - } - - tmp16 = BUF->destport; - - /* Next, check listening connections. */ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( tmp16 == uip_listenports[c] ) - { - goto found_listen; - } - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT( ++uip_stat.tcp.synrst ); -reset: - /* We do not send resets in response to resets. */ - if( BUF->flags & TCP_RST ) - { - goto drop; - } - - UIP_STAT( ++uip_stat.tcp.rst ); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[3]; - BUF->seqno[3] = BUF->ackno[3]; - BUF->ackno[3] = c; - - c = BUF->seqno[2]; - BUF->seqno[2] = BUF->ackno[2]; - BUF->ackno[2] = c; - - c = BUF->seqno[1]; - BUF->seqno[1] = BUF->ackno[1]; - BUF->ackno[1] = c; - - c = BUF->seqno[0]; - BUF->seqno[0] = BUF->ackno[0]; - BUF->ackno[0] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if( ++BUF->ackno[3] == 0 ) - { - if( ++BUF->ackno[2] == 0 ) - { - if( ++BUF->ackno[1] == 0 ) - { - ++BUF->ackno[0]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy( BUF->destipaddr, BUF->srcipaddr ); - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ -found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - if( uip_conns[c].tcpstateflags == UIP_CLOSED ) - { - uip_connr = &uip_conns[c]; - break; - } - - if( uip_conns[c].tcpstateflags == UIP_TIME_WAIT ) - { - if( uip_connr == 0 || uip_conns[c].timer > uip_connr->timer ) - { - uip_connr = &uip_conns[c]; - } - } - } - - if( uip_connr == 0 ) - { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT( ++uip_stat.tcp.syndrop ); - UIP_LOG( "tcp: found no unused connections." ); - goto drop; - } - - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy( uip_connr->ripaddr, BUF->srcipaddr ); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[0] = iss[0]; - uip_connr->snd_nxt[1] = iss[1]; - uip_connr->snd_nxt[2] = iss[2]; - uip_connr->snd_nxt[3] = iss[3]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_add_rcv_nxt( 1 ); - - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( (u16_t) uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | ( u16_t ) uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ - #if UIP_ACTIVE_OPEN - tcp_send_synack : BUF->flags = TCP_ACK; - -tcp_send_syn: - BUF->flags |= TCP_SYN; - #else /* UIP_ACTIVE_OPEN */ - tcp_send_synack : BUF->flags = TCP_SYN | TCP_ACK; - #endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[0] = TCP_OPT_MSS; - BUF->optdata[1] = TCP_OPT_MSS_LEN; - BUF->optdata[2] = ( UIP_TCP_MSS ) / 256; - BUF->optdata[3] = ( UIP_TCP_MSS ) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ( (UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4 ) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ -found: - uip_conn = uip_connr; - uip_flags = 0; - - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if( BUF->flags & TCP_RST ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG( "tcp: got reset, aborting connection." ); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - - /* Calculated the length of the data, if the application has sent - any data to us. */ - c = ( BUF->tcpoffset >> 4 ) << 2; - - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if( !(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK))) ) - { - if - ( - (uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - ( - BUF->seqno[0] != uip_connr->rcv_nxt[0] || - BUF->seqno[1] != uip_connr->rcv_nxt[1] || - BUF->seqno[2] != uip_connr->rcv_nxt[2] || - BUF->seqno[3] != uip_connr->rcv_nxt[3] - ) - ) - { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if( (BUF->flags & TCP_ACK) && uip_outstanding(uip_connr) ) - { - uip_add32( uip_connr->snd_nxt, uip_connr->len ); - - if - ( - BUF->ackno[0] == uip_acc32[0] && - BUF->ackno[1] == uip_acc32[1] && - BUF->ackno[2] == uip_acc32[2] && - BUF->ackno[3] == uip_acc32[3] - ) - { - /* Update sequence number. */ - uip_connr->snd_nxt[0] = uip_acc32[0]; - uip_connr->snd_nxt[1] = uip_acc32[1]; - uip_connr->snd_nxt[2] = uip_acc32[2]; - uip_connr->snd_nxt[3] = uip_acc32[3]; - - /* Do RTT estimation, unless we have done retransmissions. */ - if( uip_connr->nrtx == 0 ) - { - signed char m; - m = uip_connr->rto - uip_connr->timer; - - /* This is taken directly from VJs original code in his paper */ - m = m - ( uip_connr->sa >> 3 ); - uip_connr->sa += m; - if( m < 0 ) - { - m = -m; - } - - m = m - ( uip_connr->sv >> 2 ); - uip_connr->sv += m; - uip_connr->rto = ( uip_connr->sa >> 3 ) + uip_connr->sv; - } - - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - } - - /* Do different things depending on in what state the connection is. */ - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - #if UIP_ACTIVE_OPEN - - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if( (uip_flags & UIP_ACKDATA) && (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK) ) - { - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - if( BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - if( uip_outstanding(uip_connr) ) - { - goto drop; - } - - uip_add_rcv_nxt( 1 + uip_len ); - uip_flags |= UIP_CLOSE; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - } - - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if( (BUF->flags & TCP_URG) != 0 ) - { - #if UIP_URGDATA > 0 - uip_urglen = ( BUF->urgp[0] << 8 ) | BUF->urgp[1]; - if( uip_urglen > uip_len ) - { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - - uip_add_rcv_nxt( uip_urglen ); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } - else - { - uip_urglen = 0; - #else /* UIP_URGDATA > 0 */ - uip_appdata = ( ( char * ) uip_appdata ) + ( (BUF->urgp[0] << 8) | BUF->urgp[1] ); - uip_len -= ( BUF->urgp[0] << 8 ) | BUF->urgp[1]; - #endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if( uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ( (u16_t) BUF->wnd[0] << 8 ) + ( u16_t ) BUF->wnd[1]; - if( tmp16 > (uip_connr->initialmss * FRAME_MULTIPLE) || tmp16 == 0 ) - { - tmp16 = uip_connr->initialmss * FRAME_MULTIPLE; - } - - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if( uip_flags & (UIP_NEWDATA | UIP_ACKDATA) ) - { - uip_slen = 0; - UIP_APPCALL(); - - appsend: - if( uip_flags & UIP_ABORT ) - { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if( uip_flags & UIP_CLOSE ) - { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if( uip_slen > 0 ) - { - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if( (uip_flags & UIP_ACKDATA) != 0 ) - { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if( uip_connr->len == 0 ) - { - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if( uip_slen > uip_connr->mss ) - { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } - else - { - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - - uip_connr->nrtx = 0; - apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if( uip_slen > 0 && uip_connr->len > 0 ) - { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - - /* Send the packet. */ - goto tcp_send_noopts; - } - - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if( uip_flags & UIP_NEWDATA ) - { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - - goto drop; - - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } - else - { - uip_connr->tcpstateflags = UIP_CLOSING; - } - - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - else if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_FIN_WAIT_2: - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - - goto drop; - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ -tcp_send_ack: - BUF->flags = TCP_ACK; -tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; -tcp_send_noopts: - BUF->tcpoffset = ( UIP_TCPH_LEN / 4 ) << 4; -tcp_send: - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ - BUF->ackno[0] = uip_connr->rcv_nxt[0]; - BUF->ackno[1] = uip_connr->rcv_nxt[1]; - BUF->ackno[2] = uip_connr->rcv_nxt[2]; - BUF->ackno[3] = uip_connr->rcv_nxt[3]; - - BUF->seqno[0] = uip_connr->snd_nxt[0]; - BUF->seqno[1] = uip_connr->snd_nxt[1]; - BUF->seqno[2] = uip_connr->snd_nxt[2]; - BUF->seqno[3] = uip_connr->snd_nxt[3]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - uip_ipaddr_copy( BUF->destipaddr, uip_connr->ripaddr ); - - if( uip_connr->tcpstateflags & UIP_STOPPED ) - { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[0] = BUF->wnd[1] = 0; - } - else - { - BUF->wnd[0] = ( (UIP_RECEIVE_WINDOW) >> 8 ); - BUF->wnd[1] = ( (UIP_RECEIVE_WINDOW) & 0xff ); - } - -tcp_send_noconn: - BUF->ttl = UIP_TTL; - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = ( uip_len >> 8 ); - BUF->len[1] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->urgp[0] = BUF->urgp[1] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - #if UIP_UDP - ip_send_nolen : - #endif - #if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; - #else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - ++ipid; - BUF->ipid[0] = ipid >> 8; - BUF->ipid[1] = ipid & 0xff; - - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - DEBUG_PRINTF( "uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - UIP_STAT( ++uip_stat.tcp.sent ); -send: - DEBUG_PRINTF( "Sending packet with length %d (%d)\n", uip_len, (BUF->len[0] << 8) | BUF->len[1] ); - - UIP_STAT( ++uip_stat.ip.sent ); - - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; -drop: - uip_len = 0; - uip_flags = 0; - return; -} - -/*---------------------------------------------------------------------------*/ -u16_t htons( u16_t val ) -{ - return HTONS( val ); -} - -/*---------------------------------------------------------------------------*/ -void uip_send( const void *data, int len ) -{ - if( len > 0 ) - { - uip_slen = len; - if( data != uip_sappdata ) - { - memcpy( uip_sappdata, (data), uip_slen ); - } - } -} - -/*---------------------------------------------------------------------------*/ -int uip_fast_send( int xARP ) -{ - ( void ) xARP; - #if NOT_YET_COMPLETE - - u16_t tcplen, len1 = 0, uiAccumulatedLen = 0, len_previous = 0, split_len; - int iSplitNo = 0; - extern int uip_low_level_output( unsigned char *pcBuf, int ilen ); - - if( xARP == pdTRUE ) - { - if( BUF->proto == UIP_PROTO_TCP && uip_slen > 1 ) - { - tcplen = uip_len - UIP_TCPIP_HLEN; - - if( tcplen > UIP_TCP_MSS ) - { - split_len = UIP_TCP_MSS; - } - else - { - split_len = tcplen / 2; - } - - while( tcplen > 0 ) - { - uiAccumulatedLen += len1; - - if( tcplen > split_len ) - { - len1 = split_len; - tcplen -= split_len; - } - else - { - len1 = tcplen; - tcplen = 0; - } - - uip_len = len1 + UIP_TCPIP_HLEN; - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; - if( iSplitNo == 0 ) - { - iSplitNo++; - - /* Create the first packet. This is done by altering the length - field of the IP header and updating the checksums. */ - } - else - { - /* Now, create the second packet. To do this, it is not enough to - just alter the length field, but we must also update the TCP - sequence number and point the uip_appdata to a new place in - memory. This place is determined by the length of the first - packet (len1). */ - - /* uip_appdata += len1;*/ - memcpy( uip_appdata, ( u8_t * ) uip_appdata + uiAccumulatedLen, len1 ); - uip_add32( BUF->seqno, len_previous ); - BUF->seqno[0] = uip_acc32[0]; - BUF->seqno[1] = uip_acc32[1]; - BUF->seqno[2] = uip_acc32[2]; - BUF->seqno[3] = uip_acc32[3]; - } - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - /* Transmit the packet. */ - uip_arp_out(); - uip_low_level_output( uip_buf, uip_len ); - - len_previous = len1; - } - } - else - { - uip_arp_out(); - uip_low_level_output( uip_buf, uip_len ); - } - } - else - { - uip_low_level_output( uip_buf, uip_len ); - } - - #endif - return 1; -} - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h deleted file mode 100644 index e432d903b..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h +++ /dev/null @@ -1,1642 +0,0 @@ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ - * - */ - -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "uipopt.h" - -/** - * Repressentation of an IP address. - * - */ -typedef u16_t uip_ip4addr_t[2]; -typedef u16_t uip_ip6addr_t[8]; -#if UIP_CONF_IPV6 -typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ -typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -/* First, the functions that should be called from the - * system. Initialization, the periodic timer and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) - - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init(void); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid(u16_t id); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process(UIP_DATA) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The ususal way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ - uip_process(UIP_TIMER); } while (0) - -/** - * - * - */ -#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_TIMER); } while (0) - -/** - * Reuqest that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_POLL_REQUEST); } while (0) - - -#if UIP_UDP -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process(UIP_UDP_TIMER); } while (0) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ - uip_process(UIP_UDP_TIMER); } while (0) - - -#endif /* UIP_UDP */ - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode - */ -#ifndef UIP_CONF_EXTERNAL_BUFFER - extern u8_t uip_buf[UIP_BUFSIZE+2]; -#else - extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. -*/ -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen(u16_t port); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten(u16_t port); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specied host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is avaliable only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote hot. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); - - - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding(conn) ((conn)->len) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * funcion is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -void uip_send(const void *data, int len); - -/** - * The length of any incoming data that is currently avaliable (if avaliable) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() (uip_flags = UIP_CLOSE) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occured that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() (uip_flags = UIP_ABORT) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while(0) - - -/* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() (uip_conn == NULL) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * avaliable through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() (uip_flags & UIP_NEWDATA) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() (uip_flags & UIP_ACKDATA) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() (uip_flags & UIP_CONNECTED) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() (uip_flags & UIP_CLOSE) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() (uip_flags & UIP_ABORT) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() (uip_flags & UIP_TIMEDOUT) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() (uip_flags & UIP_REXMIT) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() (uip_flags & UIP_POLL) - -/** - * Get the initial maxium segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() (uip_conn->initialmss) - -/** - * Get the current maxium segment size that can be sent on the current - * connection. - * - * The current maxiumum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() (uip_conn->mss) - -/** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ -struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove(conn) (conn)->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind(conn, port) (conn)->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send(len) uip_send((char *)uip_appdata, len) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ - ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ - ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ - } while(0) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ - ((u16_t *)(addr))[0] = HTONS((addr0)); \ - ((u16_t *)(addr))[1] = HTONS((addr1)); \ - ((u16_t *)(addr))[2] = HTONS((addr2)); \ - ((u16_t *)(addr))[3] = HTONS((addr3)); \ - ((u16_t *)(addr))[4] = HTONS((addr4)); \ - ((u16_t *)(addr))[5] = HTONS((addr5)); \ - ((u16_t *)(addr))[6] = HTONS((addr6)); \ - ((u16_t *)(addr))[7] = HTONS((addr7)); \ - } while(0) - -/** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_copy(dest, src) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ - } while(0) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ - ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ - (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ - (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ - ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ - (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) - - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask(dest, src, mask) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ - } while(0) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons -u16_t htons(u16_t val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -extern void *uip_appdata; - -#if UIP_URGDATA > 0 -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -extern u16_t uip_len; - -/** @} */ - -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whos purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -extern struct uip_conn *uip_conn; -/* The array containing all uIP connections. */ -extern struct uip_conn uip_conns[UIP_CONNS]; -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ - - -#if UIP_UDP -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats { - struct { - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - } icmp; /**< ICMP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#if UIP_UDP - struct { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -}; - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -extern struct uip_stats uip_stat; - - -/*---------------------------------------------------------------------------*/ -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ -/*---------------------------------------------------------------------------*/ -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * infomation. - */ -extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutualy exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ - -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process(u8_t flag); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macrose defined in this file. */ - -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#if UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_tcpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/* The ICMP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_icmpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#else /* !UIP_CONF_IPV6 */ - u8_t flags, reserved1, reserved2, reserved3; - u8_t icmp6data[16]; - u8_t options[1]; -#endif /* !UIP_CONF_IPV6 */ -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - -/* The UDP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_udpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, - destport; - u16_t udplen; - u16_t udpchksum; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -/* Header sizes. */ -#if UIP_CONF_IPV6 -#define UIP_IPH_LEN 40 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + - UDP - header */ -#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + - TCP - header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN - - -#if UIP_FIXEDADDR -extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ - - - -/** - * Representation of a 48-bit Ethernet address. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_addr { - u8_t addr[6]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum(void); - -/** - * Work out the fasted way of sending the data to the low level driver. - */ -int uip_fast_send( int xARP ); - -#endif /* __UIP_H__ */ - - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h deleted file mode 100644 index 5ea45787c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c deleted file mode 100644 index d10522661..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c +++ /dev/null @@ -1,466 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ - * - */ -#include "uip_arp.h" - -#include - -#ifdef __ICCARM__ - #pragma pack( 1 ) -#endif -struct arp_hdr -{ - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - u16_t sipaddr[2]; - struct uip_eth_addr dhwaddr; - u16_t dipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif -#ifdef __ICCARM__ - #pragma pack( 1 ) -#endif -struct ethip_hdr -{ - struct uip_eth_hdr ethhdr; - - /* IP header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - u16_t srcipaddr[2], destipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry -{ - u16_t ipaddr[2]; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; -static const u16_t broadcast_ipaddr[2] = { 0xffff, 0xffff }; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static u16_t ipaddr[2]; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ( ( struct arp_hdr * ) &uip_buf[0] ) -#define IPBUF ( ( struct ethip_hdr * ) &uip_buf[0] ) - -/*-----------------------------------------------------------------------------------*/ - -/** - * Initialize the ARP module. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_init( void ) -{ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - memset( arp_table[i].ipaddr, 0, 4 ); - } -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_timer( void ) -{ - struct arp_entry *tabptr; - - ++arptime; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( (tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && arptime - tabptr->time >= UIP_ARP_MAXAGE ) - { - memset( tabptr->ipaddr, 0, 4 ); - } - } -} - -/*-----------------------------------------------------------------------------------*/ -static void uip_arp_update( u16_t *ipaddr, struct uip_eth_addr *ethaddr ) -{ - register struct arp_entry *tabptr; - - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - - /* Only check those entries that are actually in use. */ - if( tabptr->ipaddr[0] != 0 && tabptr->ipaddr[1] != 0 ) - { - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if( ipaddr[0] == tabptr->ipaddr[0] && ipaddr[1] == tabptr->ipaddr[1] ) - { - /* An old entry found, update this and return. */ - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( tabptr->ipaddr[0] == 0 && tabptr->ipaddr[1] == 0 ) - { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if( i == UIP_ARPTAB_SIZE ) - { - tmpage = 0; - c = 0; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( arptime - tabptr->time > tmpage ) - { - tmpage = arptime - tabptr->time; - c = i; - } - } - - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - memcpy( tabptr->ipaddr, ipaddr, 4 ); - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -#if 1 -void uip_arp_ipin( void ) -{ - uip_len -= sizeof( struct uip_eth_hdr ); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if( (IPBUF->srcipaddr[0] & uip_netmask[0]) != (uip_hostaddr[0] & uip_netmask[0]) ) - { - return; - } - - if( (IPBUF->srcipaddr[1] & uip_netmask[1]) != (uip_hostaddr[1] & uip_netmask[1]) ) - { - return; - } - - uip_arp_update( IPBUF->srcipaddr, &(IPBUF->ethhdr.src) ); - - return; -} - -#endif /* 0 */ - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_arpin( void ) -{ - if( uip_len < sizeof(struct arp_hdr) ) - { - uip_len = 0; - return; - } - - uip_len = 0; - - switch( BUF->opcode ) - { - case HTONS( ARP_REQUEST ): - /* ARP request. If it asked for our address, we send out a - reply. */ - if( uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr) ) - { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update( BUF->sipaddr, &BUF->shwaddr ); - - /* The reply opcode is 2. */ - BUF->opcode = HTONS( 2 ); - - memcpy( BUF->dhwaddr.addr, BUF->shwaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6 ); - - BUF->dipaddr[0] = BUF->sipaddr[0]; - BUF->dipaddr[1] = BUF->sipaddr[1]; - BUF->sipaddr[0] = uip_hostaddr[0]; - BUF->sipaddr[1] = uip_hostaddr[1]; - - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - uip_len = sizeof( struct arp_hdr ); - } - - break; - - case HTONS( ARP_REPLY ): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if( uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr) ) - { - uip_arp_update( BUF->sipaddr, &BUF->shwaddr ); - } - - break; - } - - return; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_out( void ) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if( uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr) ) - { - memcpy( IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6 ); - } - else - { - /* Check if the destination address is on the local network. */ - if( !uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask) ) - { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy( ipaddr, uip_draddr ); - } - else - { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy( ipaddr, IPBUF->destipaddr ); - } - - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(ipaddr, tabptr->ipaddr) ) - { - break; - } - } - - if( i == UIP_ARPTAB_SIZE ) - { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - memset( BUF->ethhdr.dest.addr, 0xff, 6 ); - memset( BUF->dhwaddr.addr, 0x00, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - - uip_ipaddr_copy( BUF->dipaddr, ipaddr ); - uip_ipaddr_copy( BUF->sipaddr, uip_hostaddr ); - BUF->opcode = HTONS( ARP_REQUEST ); /* ARP request. */ - BUF->hwtype = HTONS( ARP_HWTYPE_ETH ); - BUF->protocol = HTONS( UIP_ETHTYPE_IP ); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof( struct arp_hdr ); - return; - } - - /* Build an ethernet header. */ - memcpy( IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6 ); - } - - memcpy( IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - - IPBUF->ethhdr.type = HTONS( UIP_ETHTYPE_IP ); - - uip_len += sizeof( struct uip_eth_hdr ); -} - -/*-----------------------------------------------------------------------------------*/ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h deleted file mode 100644 index b6b2b66b4..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ - * - */ - -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "uip.h" - - -extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_hdr { - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -}PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IP6 0x86dd - - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init(void); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ -void uip_arp_ipin(void); -//#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin(void); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out(void); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer(void); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1];\ - uip_ethaddr.addr[2] = eaddr.addr[2];\ - uip_ethaddr.addr[3] = eaddr.addr[3];\ - uip_ethaddr.addr[4] = eaddr.addr[4];\ - uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) - -/** @} */ -/** @} */ - -#endif /* __UIP_ARP_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c deleted file mode 100644 index afedc0d42..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of - * Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $ - * - */ -#include "uip.h" -#include "uiplib.h" - -/*-----------------------------------------------------------------------------------*/ -unsigned char uiplib_ipaddrconv( char *addrstr, unsigned char *ipaddr ) -{ - unsigned char tmp; - char c; - unsigned char i, j; - - tmp = 0; - - for( i = 0; i < 4; ++i ) - { - j = 0; - do - { - c = *addrstr; - ++j; - if( j > 4 ) - { - return 0; - } - - if( c == '.' || c == 0 ) - { - *ipaddr = tmp; - ++ipaddr; - tmp = 0; - } - else if( c >= '0' && c <= '9' ) - { - tmp = ( tmp * 10 ) + ( c - '0' ); - } - else - { - return 0; - } - - ++addrstr; - } while( c != '.' && c != 0 ); - } - - return 1; -} - -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h deleted file mode 100644 index 6eb0c66f5..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * \file - * Various uIP library functions. - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.h,v 1.1 2006/06/07 09:15:19 adam Exp $ - * - */ -#ifndef __UIPLIB_H__ -#define __UIPLIB_H__ - -/** - * \addtogroup uipconvfunc - * @{ - */ - -/** - * Convert a textual representation of an IP address to a numerical representation. - * - * This function takes a textual representation of an IP address in - * the form a.b.c.d and converts it into a 4-byte array that can be - * used by other uIP functions. - * - * \param addrstr A pointer to a string containing the IP address in - * textual form. - * - * \param addr A pointer to a 4-byte array that will be filled in with - * the numerical representation of the address. - * - * \retval 0 If the IP address could not be parsed. - * \retval Non-zero If the IP address was parsed. - */ -unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr); - -/** @} */ - -#endif /* __UIPLIB_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h deleted file mode 100644 index cc010016f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h +++ /dev/null @@ -1,535 +0,0 @@ -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * uipopt.h. This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Most of the configuration options in the uipopt.h should not - * be changed, but rather the per-project uip-conf.h file. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ - * - */ - -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \name Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are appliciable only - * if uIP should be run over Ethernet. - * - * All of these should be changed to suit your project. -*/ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#define UIP_FIXEDADDR 0 - -/** - * Ping IP address asignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name IP configuration options - * @{ - * - */ -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additonal amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#define UIP_REASSEMBLY 0 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 40 - -/** @} */ - -/*------------------------------------------------------------------------------*/ -/** - * \name UDP configuration options - * @{ - */ - -/** - * Toggles wether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name TCP configuration options - * @{ - */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#define UIP_ACTIVE_OPEN 1 - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximatly 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) is the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configiration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maxium age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \name General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1500 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE 1500 -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log(char *msg); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_CONF_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either BIG_ENDIAN (Motorola byte order) or - * LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER - -/** @} */ -/*------------------------------------------------------------------------------*/ - -/** - * \name Appication specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - -void httpd_appcall(void); -#define UIP_APPCALL httpd_appcall - -struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; -}; -typedef struct httpd_state uip_tcp_appstate_t - \endcode - */ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ -/** @} */ -/** @} */ - -#endif /* __UIPOPT_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c deleted file mode 100644 index a3771dd20..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c +++ /dev/null @@ -1,486 +0,0 @@ -const char http_http[8] = /* "http://" */ { 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = /* "200 " */ { 0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = /* "301 " */ { 0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = /* "302 " */ { 0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = /* "GET " */ { 0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = /* "HTTP/1.0" */ { 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = /* "HTTP/1.1" */ { 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = - -/* "content-type: " */ -{ 0x63, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, -}; -const char http_texthtml[10] = /* "text/html" */ { 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = /* "location: " */ { 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = /* "host: " */ { 0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = /* "\r\n" */ { 0xd, 0xa, }; -const char http_index_html[12] = /* "/index.html" */ { 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = /* "/404.html" */ { 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = /* "Referer:" */ { 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = - -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{ 0x48, - 0x54, - 0x54, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x32, - 0x30, - 0x30, - 0x20, - 0x4f, - 0x4b, - 0xd, - 0xa, - 0x53, - 0x65, - 0x72, - 0x76, - 0x65, - 0x72, - 0x3a, - 0x20, - 0x75, - 0x49, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x68, - 0x74, - 0x74, - 0x70, - 0x3a, - 0x2f, - 0x2f, - 0x77, - 0x77, - 0x77, - 0x2e, - 0x73, - 0x69, - 0x63, - 0x73, - 0x2e, - 0x73, - 0x65, - 0x2f, - 0x7e, - 0x61, - 0x64, - 0x61, - 0x6d, - 0x2f, - 0x75, - 0x69, - 0x70, - 0x2f, - 0xd, - 0xa, - 0x43, - 0x6f, - 0x6e, - 0x6e, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3a, - 0x20, - 0x63, - 0x6c, - 0x6f, - 0x73, - 0x65, - 0xd, - 0xa, -}; -const char http_header_404[91] = - -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{ 0x48, - 0x54, - 0x54, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x34, - 0x30, - 0x34, - 0x20, - 0x4e, - 0x6f, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0xd, - 0xa, - 0x53, - 0x65, - 0x72, - 0x76, - 0x65, - 0x72, - 0x3a, - 0x20, - 0x75, - 0x49, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x68, - 0x74, - 0x74, - 0x70, - 0x3a, - 0x2f, - 0x2f, - 0x77, - 0x77, - 0x77, - 0x2e, - 0x73, - 0x69, - 0x63, - 0x73, - 0x2e, - 0x73, - 0x65, - 0x2f, - 0x7e, - 0x61, - 0x64, - 0x61, - 0x6d, - 0x2f, - 0x75, - 0x69, - 0x70, - 0x2f, - 0xd, - 0xa, - 0x43, - 0x6f, - 0x6e, - 0x6e, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3a, - 0x20, - 0x63, - 0x6c, - 0x6f, - 0x73, - 0x65, - 0xd, - 0xa, -}; -const char http_content_type_plain[29] = - -/* "Content-type: text/plain\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x70, - 0x6c, - 0x61, - 0x69, - 0x6e, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_html[28] = - -/* "Content-type: text/html\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x68, - 0x74, - 0x6d, - 0x6c, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_css[27] = - -/* "Content-type: text/css\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x63, - 0x73, - 0x73, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_text[28] = - -/* "Content-type: text/text\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x74, - 0x65, - 0x78, - 0x74, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_png[28] = - -/* "Content-type: image/png\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2f, - 0x70, - 0x6e, - 0x67, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_gif[28] = - -/* "Content-type: image/gif\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2f, - 0x67, - 0x69, - 0x66, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_jpg[29] = - -/* "Content-type: image/jpeg\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2f, - 0x6a, - 0x70, - 0x65, - 0x67, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_binary[43] = - -/* "Content-type: application/octet-stream\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x61, - 0x70, - 0x70, - 0x6c, - 0x69, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2f, - 0x6f, - 0x63, - 0x74, - 0x65, - 0x74, - 0x2d, - 0x73, - 0x74, - 0x72, - 0x65, - 0x61, - 0x6d, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_html[6] = /* ".html" */ { 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = /* ".shtml" */ { 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = /* ".htm" */ { 0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = /* ".css" */ { 0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = /* ".png" */ { 0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = /* ".gif" */ { 0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = /* ".jpg" */ { 0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = /* ".txt" */ { 0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = /* ".txt" */ { 0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h deleted file mode 100644 index 19ad23d6e..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css[27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png[28]; -extern const char http_content_type_gif[28]; -extern const char http_content_type_jpg[29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c deleted file mode 100644 index 23851d3e1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c +++ /dev/null @@ -1,169 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return snprintf( ( char * ) uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return snprintf( ( char * ) uip_appdata, UIP_APPDATA_SIZE, - "\r\n", htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, htons(conn->ripaddr[0]) & 0xff, htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return snprintf( ( char * ) uip_appdata, UIP_APPDATA_SIZE, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h deleted file mode 100644 index 99b61feec..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "net/psock.h" -#include "httpd.h" - -typedef PT_THREAD( (*httpd_cgifunction) ( struct httpd_state *, char * ) ); - -httpd_cgifunction httpd_cgi( char *name ); - -struct httpd_cgi_call -{ - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL( name, str, function ) \ - static PT_THREAD( function ( struct httpd_state *, char * ) ); \ - static const struct httpd_cgi_call name = \ - { \ - str, function \ - } - -void httpd_cgi_init( void ); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c deleted file mode 100644 index 12084ce67..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t httpd_fs_strcmp( const char *str1, const char *str2 ) -{ - u8_t i; - i = 0; -loop: - if( str2[i] == 0 || str1[i] == '\r' || str1[i] == '\n' ) - { - return 0; - } - - if( str1[i] != str2[i] ) - { - return 1; - } - - ++i; - goto loop; -} - -/*-----------------------------------------------------------------------------------*/ -int httpd_fs_open( const char *name, struct httpd_fs_file *file ) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for( f = ( struct httpd_fsdata_file_noconst * ) HTTPD_FS_ROOT; f != NULL; f = ( struct httpd_fsdata_file_noconst * ) f->next ) - { - if( httpd_fs_strcmp(name, f->name) == 0 ) - { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } - -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - } - - return 0; -} - -/*-----------------------------------------------------------------------------------*/ -void httpd_fs_init( void ) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for( i = 0; i < HTTPD_FS_NUMFILES; i++ ) - { - count[i] = 0; - } - -#endif /* HTTPD_FS_STATISTICS */ -} - -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count( char *name ) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for( f = ( struct httpd_fsdata_file_noconst * ) HTTPD_FS_ROOT; f != NULL; f = ( struct httpd_fsdata_file_noconst * ) f->next ) - { - if( httpd_fs_strcmp(name, f->name) == 0 ) - { - return count[i]; - } - - ++i; - } - - return 0; -} - -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h deleted file mode 100644 index afc6bbc56..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file -{ - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open( const char *name, struct httpd_fs_file *file ); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count( char *name ); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init( void ); -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h deleted file mode 100644 index 6fe210cc7..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/17 22:41:14 adamdunkels Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c deleted file mode 100644 index 99564a93c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c +++ /dev/null @@ -1,400 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ -#include "net/uip.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-fs.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_part_of_file( void *state ) -{ - struct httpd_state *s = ( struct httpd_state * ) state; - - if( s->file.len > uip_mss() ) - { - s->len = uip_mss(); - } - else - { - s->len = s->file.len; - } - - memcpy( uip_appdata, s->file.data, s->len ); - - return s->len; -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( send_file ( struct httpd_state *s ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - do - { - PSOCK_GENERATOR_SEND( &s->sout, generate_part_of_file, s ); - s->file.len -= s->len; - s->file.data += s->len; - } while( s->file.len > 0 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( send_part_of_file ( struct httpd_state *s ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) PT_YIELD_FLAG; - - PSOCK_SEND( &s->sout, s->file.data, s->len ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static void next_scriptstate( struct httpd_state *s ) -{ - char *p; - p = strchr( s->scriptptr, ISO_nl ) + 1; - s->scriptlen -= ( unsigned short ) ( p - s->scriptptr ); - s->scriptptr = p; -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( handle_script ( struct httpd_state *s ) ) -{ - char *ptr; - - PT_BEGIN( &s->scriptpt ); - ( void ) PT_YIELD_FLAG; - while( s->file.len > 0 ) - { - /* Check if we should start executing a script. */ - if( *s->file.data == ISO_percent && *(s->file.data + 1) == ISO_bang ) - { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if( *(s->scriptptr - 1) == ISO_colon ) - { - httpd_fs_open( s->scriptptr + 1, &s->file ); - PT_WAIT_THREAD( &s->scriptpt, send_file(s) ); - } - else - { - PT_WAIT_THREAD( &s->scriptpt, httpd_cgi(s->scriptptr) (s, s->scriptptr) ); - } - - next_scriptstate( s ); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } - else - { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - if( s->file.len > uip_mss() ) - { - s->len = uip_mss(); - } - else - { - s->len = s->file.len; - } - - if( *s->file.data == ISO_percent ) - { - ptr = strchr( s->file.data + 1, ISO_percent ); - } - else - { - ptr = strchr( s->file.data, ISO_percent ); - } - - if( ptr != NULL && ptr != s->file.data ) - { - s->len = ( int ) ( ptr - s->file.data ); - if( s->len >= uip_mss() ) - { - s->len = uip_mss(); - } - } - - PT_WAIT_THREAD( &s->scriptpt, send_part_of_file(s) ); - s->file.data += s->len; - s->file.len -= s->len; - } - } - - PT_END( &s->scriptpt ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( send_headers ( struct httpd_state *s, const char *statushdr ) ) -{ - char *ptr; - - PSOCK_BEGIN( &s->sout ); - ( void ) PT_YIELD_FLAG; - PSOCK_SEND_STR( &s->sout, statushdr ); - - ptr = strrchr( s->filename, ISO_period ); - if( ptr == NULL ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_binary ); - } - else if( strncmp(http_html, ptr, 5) == 0 || strncmp(http_shtml, ptr, 6) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_html ); - } - else if( strncmp(http_css, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_css ); - } - else if( strncmp(http_png, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_png ); - } - else if( strncmp(http_gif, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_gif ); - } - else if( strncmp(http_jpg, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_jpg ); - } - else - { - PSOCK_SEND_STR( &s->sout, http_content_type_plain ); - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( handle_output ( struct httpd_state *s ) ) -{ - char *ptr; - - PT_BEGIN( &s->outputpt ); - ( void ) PT_YIELD_FLAG; - if( !httpd_fs_open(s->filename, &s->file) ) - { - httpd_fs_open( http_404_html, &s->file ); - strcpy( s->filename, http_404_html ); - PT_WAIT_THREAD( &s->outputpt, send_headers(s, http_header_404) ); - PT_WAIT_THREAD( &s->outputpt, send_file(s) ); - } - else - { - PT_WAIT_THREAD( &s->outputpt, send_headers(s, http_header_200) ); - ptr = strchr( s->filename, ISO_period ); - if( ptr != NULL && strncmp(ptr, http_shtml, 6) == 0 ) - { - PT_INIT( &s->scriptpt ); - PT_WAIT_THREAD( &s->outputpt, handle_script(s) ); - } - else - { - PT_WAIT_THREAD( &s->outputpt, send_file(s) ); - } - } - - PSOCK_CLOSE( &s->sout ); - PT_END( &s->outputpt ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( handle_input ( struct httpd_state *s ) ) -{ - PSOCK_BEGIN( &s->sin ); - ( void ) PT_YIELD_FLAG; - PSOCK_READTO( &s->sin, ISO_space ); - - if( strncmp(s->inputbuf, http_get, 4) != 0 ) - { - PSOCK_CLOSE_EXIT( &s->sin ); - } - - PSOCK_READTO( &s->sin, ISO_space ); - - if( s->inputbuf[0] != ISO_slash ) - { - PSOCK_CLOSE_EXIT( &s->sin ); - } - - if( s->inputbuf[1] == ISO_space ) - { - strncpy( s->filename, http_index_html, sizeof(s->filename) ); - } - else - { - s->inputbuf[PSOCK_DATALEN( &s->sin ) - 1] = 0; - - /* Process any form input being sent to the server. */ - #if UIP_CONF_PROCESS_HTTPD_FORMS == 1 - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - #endif - - strncpy( s->filename, &s->inputbuf[0], sizeof(s->filename) ); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - s->state = STATE_OUTPUT; - - while( 1 ) - { - PSOCK_READTO( &s->sin, ISO_nl ); - - if( strncmp(s->inputbuf, http_referer, 8) == 0 ) - { - s->inputbuf[PSOCK_DATALEN( &s->sin ) - 2] = 0; - - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END( &s->sin ); -} - -/*---------------------------------------------------------------------------*/ -static void handle_connection( struct httpd_state *s ) -{ - handle_input( s ); - if( s->state == STATE_OUTPUT ) - { - handle_output( s ); - } -} - -/*---------------------------------------------------------------------------*/ -void httpd_appcall( void ) -{ - struct httpd_state *s = ( struct httpd_state * ) &( uip_conn->appstate ); - - if( uip_closed() || uip_aborted() || uip_timedout() ) - { - } - else if( uip_connected() ) - { - PSOCK_INIT( &s->sin, s->inputbuf, sizeof(s->inputbuf) - 1 ); - PSOCK_INIT( &s->sout, s->inputbuf, sizeof(s->inputbuf) - 1 ); - PT_INIT( &s->outputpt ); - s->state = STATE_WAITING; - - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection( s ); - } - else if( s != NULL ) - { - if( uip_poll() ) - { - ++s->timer; - if( s->timer >= 20 ) - { - uip_abort(); - } - } - else - { - s->timer = 0; - } - - handle_connection( s ); - } - else - { - uip_abort(); - } -} - -/*---------------------------------------------------------------------------*/ - -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void httpd_init( void ) -{ - uip_listen( HTONS(80) ); -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h deleted file mode 100644 index cd2b891e2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "net/psock.h" -#include "httpd-fs.h" - -struct httpd_state -{ - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init( void ); -void httpd_appcall( void ); - -void httpd_log( char *msg ); -void httpd_log_file( u16_t *requester, char *file ); -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata deleted file mode 100644 index b2109abdb..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h deleted file mode 100644 index 293e0262e..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef TickType_t clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h deleted file mode 100644 index a23febe4d..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifdef __GNUC__ - __attribute__( (packed) ); -#endif - -#ifdef _SH - #ifdef __RENESAS__ - ; - #pragma unpack - #endif -#endif - -#ifdef __RX - #ifdef __RENESAS__ - ; - /* Nothing to do. */ - #endif -#endif - - -#ifdef __ICCRX__ - ; - #pragma pack() -#endif - -#ifdef __ICCARM__ - ; - #pragma pack() -#endif - - -#ifdef __CC_ARM - ; -#endif diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h deleted file mode 100644 index 49a4dc9f6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifdef __GNUC__ - -/* Nothing to do here. */ -; -#endif - -/* Used by SH2A port. */ -#ifdef _SH - #ifdef __RENESAS__ - #pragma pack 1 - #endif -#endif - - -#ifdef __RX - #ifdef __RENESAS__ - /* Nothing to do. */ - #endif -#endif - - -#ifdef __ICCRX__ - #pragma pack(1) -#endif - - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -#ifdef __CC_ARM - __packed -#endif - diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h deleted file mode 100644 index 3a0ed1989..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h +++ /dev/null @@ -1,2184 +0,0 @@ - - /** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * \author Julien Abeille (IPv6 related code) - * \author Mathilde Durvy (IPv6 related code) - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.24 2009/04/06 13:18:50 nvt-se Exp $ - * - */ -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "net/uipopt.h" -#include "uip-conf.h" - -/** - * Representation of an IP address. - * - */ -#if UIP_CONF_IPV6 != 0 - typedef union uip_ip6addr_t - { - u8_t u8[16]; /* Initializer, must come first!!! */ - u16_t u16[8]; - } uip_ip6addr_t; - - typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ - #ifdef __CC_ARM - __packed /* The ARM compiler insists on this being packed, but with other compilers packing it generates a warning as it will be packed anyway. */ - #endif - - typedef union uip_ip4addr_t - { - u8_t u8[4]; /* Initializer, must come first!!! */ - u16_t u16[2]; - } uip_ip4addr_t; - typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ - -/** \brief 16 bit 802.15.4 address */ -struct uip_802154_shortaddr -{ - u8_t addr[2]; -}; - -/** \brief 64 bit 802.15.4 address */ -struct uip_802154_longaddr -{ - u8_t addr[8]; -}; - -/** \brief 802.11 address */ -struct uip_80211_addr -{ - u8_t addr[6]; -}; - -/** \brief 802.3 address */ -#include "net/pack_struct_start.h" -struct uip_eth_addr -{ - u8_t addr[6]; -} -#include "net/pack_struct_end.h" - -#ifdef UIP_CONF_LL_802154 - - /** \brief 802.15.4 address */ - typedef struct uip_802154_longaddr uip_lladdr_t; - #define UIP_802154_SHORTADDR_LEN 2 - #define UIP_802154_LONGADDR_LEN 8 - #define UIP_LLADDR_LEN UIP_802154_LONGADDR_LEN -#else /*UIP_CONF_LL_802154*/ - #ifdef UIP_CONF_LL_80211 - /** \brief 802.11 address */ - typedef struct uip_80211_addr uip_lladdr_t; - #define UIP_LLADDR_LEN 6 - #else /*UIP_CONF_LL_80211*/ - - /** \brief Ethernet address */ - typedef struct uip_eth_addr uip_lladdr_t; - - #define UIP_LLADDR_LEN 6 - #endif /*UIP_CONF_LL_80211*/ -#endif /*UIP_CONF_LL_802154*/ - -//_RB_#include "net/tcpip.h" - -/*---------------------------------------------------------------------------*/ - -/* First, the functions that should be called from the - * system. Initialization, the periodic timer, and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr( addr ) uip_ipaddr_copy( &uip_hostaddr, (addr) ) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr( addr ) uip_ipaddr_copy( (addr), &uip_hostaddr ) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr( addr ) uip_ipaddr_copy( &uip_draddr, (addr) ) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask( addr ) uip_ipaddr_copy( &uip_netmask, (addr) ) - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr( addr ) uip_ipaddr_copy( (addr), &uip_draddr ) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask( addr ) uip_ipaddr_copy( (addr), &uip_netmask ) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init( void ); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid( u16_t id ); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process( UIP_DATA ) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The usual way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#ifdef UIP_TCP -#define uip_periodic( conn ) \ - do \ - { \ - uip_conn = &uip_conns[conn]; \ - uip_process( UIP_TIMER ); \ - } while( 0 ) - -/** - * - * - */ -#define uip_conn_active( conn ) ( uip_conns[conn].tcpstateflags != UIP_CLOSED ) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn( conn ) \ - do \ - { \ - uip_conn = conn; \ - uip_process( UIP_TIMER ); \ - } while( 0 ) - -/** - * Request that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn( conn ) \ - do \ - { \ - uip_conn = conn; \ - uip_process( UIP_POLL_REQUEST ); \ - } while( 0 ) -#endif /* UIP_TCP */ - -#ifdef UIP_UDP - -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic( conn ) \ - do \ - { \ - uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process( UIP_UDP_TIMER ); \ - } while( 0 ) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn( conn ) \ - do \ - { \ - uip_udp_conn = conn; \ - uip_process( UIP_UDP_TIMER ); \ - } while( 0 ) -#endif /* UIP_UDP */ - - /** \brief Abandon the reassembly of the current packet */ - void uip_reass_over( void ); - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode -*/ -#ifndef UIP_CONF_EXTERNAL_BUFFER -CCIF extern u8_t uip_buf[UIP_BUFSIZE + 2]; -#else -CCIF extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ - -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. - */ - -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen( u16_t port ); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten( u16_t port ); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specified host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is available only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote host. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect( uip_ipaddr_t *ripaddr, u16_t port ); - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding( conn ) ( (conn)->len ) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * function is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -CCIF void uip_send( const void *data, int len ); - -/** - * The length of any incoming data that is currently available (if available) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ - -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() ( uip_flags = UIP_CLOSE ) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occurred that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() ( uip_flags = UIP_ABORT ) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() ( uip_conn->tcpstateflags |= UIP_STOPPED ) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped( conn ) ( (conn)->tcpstateflags & UIP_STOPPED ) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() \ - do \ - { \ - uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while( 0 ) - - /* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() ( uip_conn == NULL ) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * available through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() ( uip_flags & UIP_NEWDATA ) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() ( uip_flags & UIP_ACKDATA ) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() ( uip_flags & UIP_CONNECTED ) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() ( uip_flags & UIP_CLOSE ) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() ( uip_flags & UIP_ABORT ) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() ( uip_flags & UIP_TIMEDOUT ) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() ( uip_flags & UIP_REXMIT ) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() ( uip_flags & UIP_POLL ) - -/** - * Get the initial maximum segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() ( uip_conn->initialmss ) - -/** - * Get the current maximum segment size that can be sent on the current - * connection. - * - * The current maximum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() ( uip_conn->mss ) - /** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ - struct uip_udp_conn *uip_udp_new( const uip_ipaddr_t *ripaddr, u16_t rport ); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove( conn ) ( conn )->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind( conn, port ) ( conn )->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send( len ) uip_send( ( char * ) uip_appdata, len ) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Convert an IP address to four bytes separated by commas. - * - * Example: - \code - uip_ipaddr_t ipaddr; - printf("ipaddr=%d.%d.%d.%d\n", uip_ipaddr_to_quad(&ipaddr)); - \endcode - * - * \param a A pointer to a uip_ipaddr_t. - * \hideinitializer - */ -#define uip_ipaddr_to_quad( a ) ( a )->u8[0], ( a )->u8[1], ( a )->u8[2], ( a )->u8[3] - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr( addr, addr0, addr1, addr2, addr3 ) \ - do \ - { \ - ( addr )->u8[0] = addr0; \ - ( addr )->u8[1] = addr1; \ - ( addr )->u8[2] = addr2; \ - ( addr )->u8[3] = addr3; \ - } while( 0 ) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr( addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7 ) \ - do \ - { \ - ( addr )->u16[0] = HTONS( addr0 ); \ - ( addr )->u16[1] = HTONS( addr1 ); \ - ( addr )->u16[2] = HTONS( addr2 ); \ - ( addr )->u16[3] = HTONS( addr3 ); \ - ( addr )->u16[4] = HTONS( addr4 ); \ - ( addr )->u16[5] = HTONS( addr5 ); \ - ( addr )->u16[6] = HTONS( addr6 ); \ - ( addr )->u16[7] = HTONS( addr7 ); \ - } while( 0 ) /** - * Construct an IPv6 address from eight 8-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr_u8 ( addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7, addr8, addr9, addr10, addr11, addr12, addr13, addr14, \ - addr15 ) do \ - {\ - ( addr )->u8[0] = addr0; \ - ( addr )->u8[1] = addr1; \ - ( addr )->u8[2] = addr2; \ - ( addr )->u8[3] = addr3; \ - ( addr )->u8[4] = addr4; \ - ( addr )->u8[5] = addr5; \ - ( addr )->u8[6] = addr6; \ - ( addr )->u8[7] = addr7; \ - ( addr )->u8[8] = addr8; \ - ( addr )->u8[9] = addr9; \ - ( addr )->u8[10] = addr10; \ - ( addr )->u8[11] = addr11; \ - ( addr )->u8[12] = addr12; \ - ( addr )->u8[13] = addr13; \ - ( addr )->u8[14] = addr14; \ - ( addr )->u8[15] = addr15; \ - } while( 0 ) - /** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#ifndef uip_ipaddr_copy - #define uip_ipaddr_copy( dest, src ) \ - do \ - { \ - (dest)->u8[0] = (src)->u8[0]; \ - (dest)->u8[1] = (src)->u8[1]; \ - (dest)->u8[2] = (src)->u8[2]; \ - (dest)->u8[3] = (src)->u8[3]; \ - } while( 0 ) -#endif - - /** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp( addr1, addr2 ) ( (addr1)->u16[0] == (addr2)->u16[0] && (addr1)->u16[1] == (addr2)->u16[1] ) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp( addr1, addr2 ) ( memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0 ) -#endif /* !UIP_CONF_IPV6 */ - - /** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_maskcmp( addr1, addr2, mask ) \ - ( \ - (((( u16_t * ) addr1)[0] & (( u16_t * ) mask)[0]) == ((( u16_t * ) addr2)[0] & (( u16_t * ) mask)[0])) && \ - (((( u16_t * ) addr1)[1] & (( u16_t * ) mask)[1]) == ((( u16_t * ) addr2)[1] & (( u16_t * ) mask)[1])) \ - ) -#else -#define uip_ipaddr_prefixcmp( addr1, addr2, length ) ( memcmp(addr1, addr2, length >> 3) == 0 ) -#endif - - /** - * Check if an address is a broadcast address for a network. - * - * Checks if an address is the broadcast address for a network. The - * network is defined by an IP address that is on the network and the - * network's netmask. - * - * \param addr The IP address. - * \param netaddr The network's IP address. - * \param netmask The network's netmask. - * - * \hideinitializer - */ - - /*#define uip_ipaddr_isbroadcast(addr, netaddr, netmask) - ((uip_ipaddr_t *)(addr)).u16 & ((uip_ipaddr_t *)(addr)).u16*/ - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask( dest, src, mask ) \ - do \ - { \ - ( ( u16_t * ) dest )[0] = ( ( u16_t * ) src )[0] & ( ( u16_t * ) mask )[0]; \ - ( ( u16_t * ) dest )[1] = ( ( u16_t * ) src )[1] & ( ( u16_t * ) mask )[1]; \ - } while( 0 ) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1( addr ) ( (addr)->u8[0] ) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2( addr ) ( (addr)->u8[1] ) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3( addr ) ( (addr)->u8[2] ) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4( addr ) ( (addr)->u8[3] ) - /** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -#if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -#define HTONS( n ) ( n ) -#define HTONL( n ) ( n ) -#else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#define HTONS( n ) ( u16_t ) ( (((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8) ) -#define HTONL( n ) ( ((u32_t) HTONS(n) << 16) | HTONS((u32_t) (n) >> 16) ) -#endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - - /** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons - CCIF u16_t htons( u16_t val ); -#endif /* htons */ - -#ifndef ntohs - #define ntohs htons -#endif - -#ifndef htonl - CCIF u32_t htonl( u32_t val ); -#endif /* htonl */ - -#ifndef ntohl - #define ntohl htonl -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -CCIF extern void *uip_appdata; - -#if UIP_URGDATA > 0 - -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -CCIF extern u16_t uip_len; - -/** - * The length of the extension headers - */ -extern u8_t uip_ext_len; - -/** @} */ -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whose purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn -{ - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -CCIF extern struct uip_conn *uip_conn; -#ifdef UIP_TCP - -/* The array containing all uIP connections. */ -CCIF extern struct uip_conn uip_conns[UIP_CONNS]; -#endif - -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ -#if UIP_UDP == 1 -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn -{ - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -struct uip_router -{ - int ( *activate ) ( void ); - int ( *deactivate ) ( void ); - uip_ipaddr_t * ( *lookup ) ( uip_ipaddr_t *destipaddr, uip_ipaddr_t *nexthop ); -}; - -#ifdef UIP_CONF_ROUTER -extern const struct uip_router *uip_router; - -/** - * uIP routing driver registration function. - */ -void uip_router_register( const struct uip_router *router ); -#endif /*UIP_CONF_ROUTER*/ - -#ifdef UIP_CONF_ICMP6 -struct uip_icmp6_conn -{ - uip_icmp6_appstate_t appstate; -}; -extern struct uip_icmp6_conn uip_icmp6_conns; -#endif /*UIP_CONF_ICMP6*/ - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -#if UIP_STATISTICS == 1 -extern struct uip_stats uip_stat; -#define UIP_STAT( s ) s -#else -#define UIP_STAT( s ) -#endif /* UIP_STATISTICS == 1 */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats -{ - struct - { - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t forwarded; /**< Number of forwarded packets at the IP - layer. */ - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct - { - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - uip_stats_t chkerr; /**< Number of ICMP packets with a bad - checksum. */ - } icmp; /**< ICMP statistics. */ -#ifdef UIP_TCP - struct - { - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#endif -#ifdef UIP_UDP - struct - { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -#if UIP_CONF_IPV6 != 0 - struct - { - uip_stats_t drop; /**< Number of dropped ND6 packets. */ - uip_stats_t recv; /**< Number of recived ND6 packets */ - uip_stats_t sent; /**< Number of sent ND6 packets */ - } nd6; -#endif /*UIP_CONF_IPV6*/ -}; - -/*---------------------------------------------------------------------------*/ - -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ - -/*---------------------------------------------------------------------------*/ - -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * information. - */ -CCIF extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutually exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/** - * \brief process the options within a hop by hop or destination option header - * \retval 0: nothing to send, - * \retval 1: drop pkt - * \retval 2: ICMP error message to send -*/ - -/*static u8_t -uip_ext_hdr_options_process(); */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process( u8_t flag ); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macros defined in this file. */ -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#ifdef UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ -#include "net/pack_struct_start.h" -struct uip_tcpip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPv6 header. */ - u8_t vtc, tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, destport; - u8_t seqno[4], ackno[4], tcpoffset, flags, wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} -#include "net/pack_struct_end.h" - -/* The ICMP and IP headers. */ -#include "net/pack_struct_start.h" -struct uip_icmpip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPv6 header. */ - u8_t vtc, tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; - u8_t payload[1]; -#endif /* !UIP_CONF_IPV6 */ -} - -#include "net/pack_struct_end.h" - -/* The UDP and IP headers. */ -#include "net/pack_struct_start.h" -struct uip_udpip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPv6 header. */ - u8_t vtc, tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, destport; - u16_t udplen; - u16_t udpchksum; -} - -#include "net/pack_struct_end.h" - -/* - * In IPv6 the length of the L3 headers before the transport header is - * not fixed, due to the possibility to include extension option headers - * after the IP header. hence we split here L3 and L4 headers - */ - -/* The IP header */ -struct uip_ip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPV6 header */ - u8_t vtc; - u8_t tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPV4 header */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ -}; - -/* - * IPv6 extension option headers: we are able to process - * the 4 extension headers defined in RFC2460 (IPv6): - * - Hop by hop option header, destination option header: - * These two are not used by any core IPv6 protocol, hence - * we just read them and go to the next. They convey options, - * the options defined in RFC2460 are Pad1 and PadN, which do - * some padding, and that we do not need to read (the length - * field in the header is enough) - * - Routing header: this one is most notably used by MIPv6, - * which we do not implement, hence we just read it and go - * to the next - * - Fragmentation header: we read this header and are able to - * reassemble packets - * - * We do not offer any means to send packets with extension headers - * - * We do not implement Authentication and ESP headers, which are - * used in IPSec and defined in RFC4302,4303,4305,4385 - */ - -/* common header part */ -struct uip_ext_hdr -{ - u8_t next; - u8_t len; -}; - -/* Hop by Hop option header */ -struct uip_hbho_hdr -{ - u8_t next; - u8_t len; -}; - -/* destination option header */ -struct uip_desto_hdr -{ - u8_t next; - u8_t len; -}; - -/* We do not define structures for PAD1 and PADN options */ - -/* - * routing header - * the routing header as 4 common bytes, then routing header type - * specific data there are several types of routing header. Type 0 was - * deprecated as per RFC5095 most notable other type is 2, used in - * RFC3775 (MIPv6) here we do not implement MIPv6, so we just need to - * parse the 4 first bytes - */ -struct uip_routing_hdr -{ - u8_t next; - u8_t len; - u8_t routing_type; - u8_t seg_left; -}; - -/* fragmentation header */ -struct uip_frag_hdr -{ - u8_t next; - u8_t res; - u16_t offsetresmore; - u32_t id; -}; - -/* - * an option within the destination or hop by hop option headers - * it contains type an length, which is true for all options but PAD1 - */ -struct uip_ext_hdr_opt -{ - u8_t type; - u8_t len; -}; - -/* PADN option */ -struct uip_ext_hdr_opt_padn -{ - u8_t opt_type; - u8_t opt_len; -}; - -/* TCP header */ -struct uip_tcp_hdr -{ - u16_t srcport; - u16_t destport; - u8_t seqno[4]; - u8_t ackno[4]; - u8_t tcpoffset; - u8_t flags; - u8_t wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -}; - -/* The ICMP headers. */ -struct uip_icmp_hdr -{ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#endif /* !UIP_CONF_IPV6 */ -}; - -/* The UDP headers. */ -struct uip_udp_hdr -{ - u16_t srcport; - u16_t destport; - u16_t udplen; - u16_t udpchksum; -}; - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE ( UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN ) -#define UIP_APPDATA_PTR ( void * ) &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN] - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -#if UIP_CONF_IPV6 != 0 - -/** @{ */ - -/** \brief extension headers types */ -#define UIP_PROTO_HBHO 0 -#define UIP_PROTO_DESTO 60 -#define UIP_PROTO_ROUTING 43 -#define UIP_PROTO_FRAG 44 -#define UIP_PROTO_NONE 59 - -/** @} */ - -/** @{ */ - -/** \brief Destination and Hop By Hop extension headers option types */ -#define UIP_EXT_HDR_OPT_PAD1 0 -#define UIP_EXT_HDR_OPT_PADN 1 - -/** @} */ - -/** @{ */ - -/** - * \brief Bitmaps for extension header processing - * - * When processing extension headers, we should record somehow which one we - * see, because you cannot have twice the same header, except for destination - * We store all this in one u8_t bitmap one bit for each header expected. The - * order in the bitmap is the order recommended in RFC2460 - */ -#define UIP_EXT_HDR_BITMAP_HBHO 0x01 -#define UIP_EXT_HDR_BITMAP_DESTO1 0x02 -#define UIP_EXT_HDR_BITMAP_ROUTING 0x04 -#define UIP_EXT_HDR_BITMAP_FRAG 0x08 -#define UIP_EXT_HDR_BITMAP_AH 0x10 -#define UIP_EXT_HDR_BITMAP_ESP 0x20 -#define UIP_EXT_HDR_BITMAP_DESTO2 0x40 - -/** @} */ -#endif /* UIP_CONF_IPV6 */ - -/* Header sizes. */ -#if UIP_CONF_IPV6 != 0 -#define UIP_IPH_LEN 40 -#define UIP_FRAGH_LEN 8 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ - -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#ifdef UIP_IPH_LEN -#define UIP_ICMPH_LEN 4 /* Size of ICMP header */ -#endif -#define UIP_IPUDPH_LEN ( UIP_UDPH_LEN + UIP_IPH_LEN ) /* Size of IP + - * UDP - * header */ -#define UIP_IPTCPH_LEN ( UIP_TCPH_LEN + UIP_IPH_LEN ) /* Size of IP + - * TCP - * header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN -#define UIP_IPICMPH_LEN ( UIP_IPH_LEN + UIP_ICMPH_LEN ) /* size of ICMP - + IP header */ -#define UIP_LLIPH_LEN ( UIP_LLH_LEN + UIP_IPH_LEN ) /* size of L2 - + IP header */ -#if UIP_CONF_IPV6 != 0 - -/** - * The sums below are quite used in ND. When used for uip_buf, we - * include link layer length when used for uip_len, we do not, hence - * we need values with and without LLH_LEN we do not use capital - * letters as these values are variable - */ -#define uip_l2_l3_hdr_len ( UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len ) -#define uip_l2_l3_icmp_hdr_len ( UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN ) -#define uip_l3_hdr_len ( UIP_IPH_LEN + uip_ext_len ) -#define uip_l3_icmp_hdr_len ( UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN ) -#endif /*UIP_CONF_IPV6*/ - -#ifdef UIP_FIXEDADDR -CCIF extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -CCIF extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ -CCIF extern const uip_ipaddr_t uip_broadcast_addr; -CCIF extern const uip_ipaddr_t uip_all_zeroes_addr; - -#ifdef UIP_FIXEDETHADDR -CCIF extern const uip_lladdr_t uip_lladdr; -#else -CCIF extern uip_lladdr_t uip_lladdr; -#endif -#if UIP_CONF_IPV6 != 0 - -/** - * \brief Is IPv6 address a the unspecified address - * a is of type uip_ipaddr_t - */ -#define uip_is_addr_unspecified( a ) \ - ( \ - (((a)->u16[0]) == 0) && \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u16[7]) == 0) \ - ) - -/** \brief Is IPv6 address a the link local all-nodes multicast address */ -#define uip_is_addr_linklocal_allnodes_mcast( a ) \ - ( \ - (((a)->u8[0]) == 0xff) && \ - (((a)->u8[1]) == 0x02) && \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u8[14]) == 0) && \ - (((a)->u8[15]) == 0x01) \ - ) - -/** \brief set IP address a to unspecified */ -#define uip_create_unspecified( a ) uip_ip6addr( a, 0, 0, 0, 0, 0, 0, 0, 0 ) - -/** \brief set IP address a to the link local all-nodes multicast address */ -#define uip_create_linklocal_allnodes_mcast( a ) uip_ip6addr( a, 0xff02, 0, 0, 0, 0, 0, 0, 0x0001 ) - -/** \brief set IP address a to the link local all-routers multicast address */ -#define uip_create_linklocal_allrouters_mcast( a ) uip_ip6addr( a, 0xff02, 0, 0, 0, 0, 0, 0, 0x0002 ) - -/** - * \brief is addr (a) a solicited node multicast address, see RFC3513 - * a is of type uip_ipaddr_t* - */ -#define uip_is_addr_solicited_node( a ) \ - ( \ - (((a)->u8[0]) == 0xFF) && \ - (((a)->u8[1]) == 0x02) && \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 1) && \ - (((a)->u8[12]) == 0xFF) \ - ) - -/** - * \briefput in b the solicited node address corresponding to address a - * both a and b are of type uip_ipaddr_t* - * */ -#define uip_create_solicited_node( a, b ) \ - ( ((b)->u8[0]) = 0xFF ); \ - ( ((b)->u8[1]) = 0x02 ); \ - ( ((b)->u16[1]) = 0 ); \ - ( ((b)->u16[2]) = 0 ); \ - ( ((b)->u16[3]) = 0 ); \ - ( ((b)->u16[4]) = 0 ); \ - ( ((b)->u8[10]) = 0 ); \ - ( ((b)->u8[11]) = 0x01 ); \ - ( ((b)->u8[12]) = 0xFF ); \ - ( ((b)->u8[13]) = ((a)->u8[13]) ); \ - ( ((b)->u16[7]) = ((a)->u16[7]) ) - -/** - * \brief is addr (a) a link local unicast address, see RFC3513 - * i.e. is (a) on prefix FE80::/10 - * a is of type uip_ipaddr_t* - */ -#define uip_is_addr_link_local( a ) ( (((a)->u8[0]) == 0xFE) && (((a)->u8[1]) == 0x80) ) - -/** - * \brief was addr (a) forged based on the mac address m - * a type is uip_ipaddr_t - * m type is uiplladdr_t - */ -#ifdef UIP_CONF_LL_802154 -#define uip_is_addr_mac_addr_based( a, m ) \ - ( \ - (((a)->u8[8]) == (((m)->addr[0]) ^ 0x02)) && \ - (((a)->u8[9]) == (m)->addr[1]) && \ - (((a)->u8[10]) == (m)->addr[2]) && \ - (((a)->u8[11]) == (m)->addr[3]) && \ - (((a)->u8[12]) == (m)->addr[4]) && \ - (((a)->u8[13]) == (m)->addr[5]) && \ - (((a)->u8[14]) == (m)->addr[6]) && \ - (((a)->u8[15]) == (m)->addr[7]) \ - ) -#else -#define uip_is_addr_mac_addr_based( a, m ) \ - ( \ - (((a)->u8[8]) == (((m)->addr[0]) | 0x02)) && \ - (((a)->u8[9]) == (m)->addr[1]) && \ - (((a)->u8[10]) == (m)->addr[2]) && \ - (((a)->u8[11]) == 0xff) && \ - (((a)->u8[12]) == 0xfe) && \ - (((a)->u8[13]) == (m)->addr[3]) && \ - (((a)->u8[14]) == (m)->addr[4]) && \ - (((a)->u8[15]) == (m)->addr[5]) \ - ) -#endif /*UIP_CONF_LL_802154*/ - -/** - * \brief is address a multicast address, see RFC 3513 - * a is of type uip_ipaddr_t* - * */ -#define uip_is_addr_mcast( a ) ( ((a)->u8[0]) == 0xFF ) - -/** - * \brief is group-id of multicast address a - * the all nodes group-id - */ -#define uip_is_mcast_group_id_all_nodes( a ) \ - ( \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u8[14]) == 0) && \ - (((a)->u8[15]) == 1) \ - ) - -/** - * \brief is group-id of multicast address a - * the all routers group-id - */ -#define uip_is_mcast_group_id_all_routers( a ) \ - ( \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u8[14]) == 0) && \ - (((a)->u8[15]) == 2) \ - ) -#endif /*UIP_CONF_IPV6*/ - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum( u16_t *buf, u16_t len ); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum( void ); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum( void ); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum( void ); - -/** - * Calculate the ICMP checksum of the packet in uip_buf. - * - * \return The ICMP checksum of the ICMP packet in uip_buf - */ -u16_t uip_icmp6chksum( void ); - -/* Events that can get posted to the uIP event queue. These are events -originating from the Ethernet interface or from a timer. */ -#define uipETHERNET_RX_EVENT 0x01UL -#define uipETHERNET_TX_EVENT 0x02UL -#define uipARP_TIMER_EVENT 0x04UL -#define uipPERIODIC_TIMER_EVENT 0x08UL -#define uipAPPLICATION_SEND_EVENT 0x10UL - - -#endif /* __UIP_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h deleted file mode 100644 index 9ee37578c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.1 2006/06/17 22:41:19 adamdunkels Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "net/uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h deleted file mode 100644 index e04d35305..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h +++ /dev/null @@ -1,149 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.2 2006/08/26 23:58:45 oliverschmidt Exp $ - * - */ -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "net/uip.h" - -CCIF extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#include "net/pack_struct_start.h" -struct uip_eth_hdr -{ - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -} - -#include "net/pack_struct_end.h" - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IPV6 0x86dd - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init( void ); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ - -/*void uip_arp_ipin(void);*/ -#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin( void ); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out( void ); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer( void ); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr( eaddr ) \ - do \ - { \ - uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1]; \ - uip_ethaddr.addr[2] = eaddr.addr[2]; \ - uip_ethaddr.addr[3] = eaddr.addr[3]; \ - uip_ethaddr.addr[4] = eaddr.addr[4]; \ - uip_ethaddr.addr[5] = eaddr.addr[5]; \ - } while( 0 ) - - /** @} */ -#endif /* __UIP_ARP_H__ */ - - /** @} */ - diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h deleted file mode 100644 index ddf6a245a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h +++ /dev/null @@ -1,695 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * "uipopt.h". This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Contiki does not use the uipopt.h file to configure uIP, but - * uses a per-port uip-conf.h file that should be edited instead. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.11 2009/04/10 00:37:48 adamdunkels Exp $ - * - */ -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" -//_RB_#include "contiki-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptstaticconf Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are applicable only - * if uIP should be run over Ethernet. - * - * This options are meaningful only for the IPv4 code. - * - * All of these should be changed to suit your project. - */ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#ifdef UIP_CONF_FIXEDADDR -#define UIP_FIXED_ADDR UIP_CONF_FIXEDADDR -#define UIP_FIXEDADDR 1 -#endif - -/** - * Ping IP address assignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptip IP configuration options - * @{ - * - */ - -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 60 /*60s*/ - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additional amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#ifdef UIP_CONF_REASSEMBLY -#define UIP_REASSEMBLY UIP_CONF_REASSEMBLY -#else /* UIP_CONF_REASSEMBLY */ -#define UIP_REASSEMBLY 0 -#endif /* UIP_CONF_REASSEMBLY */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptipv6 IPv6 configuration options - * @{ - * - */ - -/** The maximum transmission unit at the IP Layer*/ -#define UIP_LINK_MTU 1280 - -#ifndef UIP_CONF_IPV6 - -/** Do we use IPv6 or not (default: no) */ -#define UIP_CONF_IPV6 0 -#endif -#ifndef UIP_CONF_IPV6_QUEUE_PKT - -/** Do we do per %neighbor queuing during address resolution (default: no) */ -#define UIP_CONF_IPV6_QUEUE_PKT 0 -#endif -#ifndef UIP_CONF_IPV6_CHECKS - -/** Do we do IPv6 consistency checks (highly recommended, default: yes) */ -#define UIP_CONF_IPV6_CHECKS 1 -#endif -#ifndef UIP_CONF_IPV6_REASSEMBLY - -/** Do we do IPv6 fragmentation (default: no) */ -#define UIP_CONF_IPV6_REASSEMBLY 0 -#endif -#ifndef UIP_CONF_NETIF_MAX_ADDRESSES - -/** Default number of IPv6 addresses associated to the node's interface */ -#define UIP_CONF_NETIF_MAX_ADDRESSES 3 -#endif -#ifndef UIP_CONF_ND6_MAX_PREFIXES - -/** Default number of IPv6 prefixes associated to the node's interface */ -#define UIP_CONF_ND6_MAX_PREFIXES 3 -#endif -#ifndef UIP_CONF_ND6_MAX_NEIGHBORS - -/** Default number of neighbors that can be stored in the %neighbor cache */ -#define UIP_CONF_ND6_MAX_NEIGHBORS 4 -#endif -#ifndef UIP_CONF_ND6_MAX_DEFROUTERS - -/** Minimum number of default routers */ -#define UIP_CONF_ND6_MAX_DEFROUTERS 2 -#endif - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptudp UDP configuration options - * @{ - * - * \note The UDP support in uIP is still not entirely complete; there - * is no support for sending or receiving broadcast or multicast - * packets, but it works well enough to support a number of vital - * applications such as DNS queries, though - */ - -/** - * Toggles whether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipopttcp TCP configuration options - * @{ - */ - -/** - * Toggles whether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_TCP -#define UIP_TCP UIP_CONF_TCP -#else /* UIP_CONF_UDP */ -#define UIP_TCP 1 -#endif /* UIP_CONF_UDP */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configuration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#ifndef UIP_CONF_ACTIVE_OPEN -#define UIP_ACTIVE_OPEN 1 -#else /* UIP_CONF_ACTIVE_OPEN */ -#define UIP_ACTIVE_OPEN UIP_CONF_ACTIVE_OPEN -#endif /* UIP_CONF_ACTIVE_OPEN */ - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximately 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#ifdef UIP_CONF_TCP_MSS -#define UIP_TCP_MSS UIP_CONF_TCP_MSS -#else -#define UIP_TCP_MSS ( UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN ) -#endif - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) if the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configuration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptarp ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maximum age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptmac layer 2 options (for ipv6) - * @{ - */ -#define UIP_DEFAULT_PREFIX_LEN 64 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptsics 6lowpan options (for ipv6) - * @{ - */ - -/** - * Timeout for packet reassembly at the 6lowpan layer - * (should be < 60s) - */ -#ifdef SICSLOWPAN_CONF_MAXAGE -#define SICSLOWPAN_REASS_MAXAGE SICSLOWPAN_CONF_MAXAGE -#else -#define SICSLOWPAN_REASS_MAXAGE 20 -#endif - -/** - * Do we compress the IP header or not (default: no) - */ -#ifndef SICSLOWPAN_CONF_COMPRESSION -#define SICSLOWPAN_CONF_COMPRESSION 0 -#endif - -/** - * If we use IPHC compression, how many address contexts do we support - */ -#ifndef SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS -#define SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS 1 -#endif - -/** - * Do we support 6lowpan fragmentation - */ -#ifndef SICSLOWPAN_CONF_FRAG -#define SICSLOWPAN_CONF_FRAG 0 -#endif - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptgeneral General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1514 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE UIP_LINK_MTU + UIP_LLH_LEN -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log( char *msg ); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \note we probably won't use this constant for other link layers than - * ethernet as they have variable header length (this is due to variable - * number and type of address fields and to optional security features) - * E.g.: 802.15.4 -> 2 + (1/2*4/8) + 0/5/6/10/14 - * 802.11 -> 4 + (6*3/4) + 2 - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptcpu CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either UIP_BIG_ENDIAN (Motorola byte order) or - * UIP_LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#ifdef UIP_CONF_BYTE_ORDER -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -#else /* UIP_CONF_BYTE_ORDER */ -#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -#endif /* UIP_CONF_BYTE_ORDER */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptapp Application specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - - void httpd_appcall(void); - #define UIP_APPCALL httpd_appcall - - struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; - }; - typedef struct httpd_state uip_tcp_appstate_t - \endcode -*/ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** @} */ -#endif /* __UIPOPT_H__ */ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c deleted file mode 100644 index 1f224b6e1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c +++ /dev/null @@ -1,338 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include -#include - -#include "net/uipopt.h" -#include "net/psock.h" -#include "net/uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void -buf_setup(struct psock_buf *buf, - u8_t *bufptr, u16_t bufsize) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufdata(struct psock_buf *buf, u16_t len, - u8_t **dataptr, u16_t *datalen) -{ - ( void ) len; - if(*datalen < buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } else if(*datalen == buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } else { - memcpy(buf->ptr, *dataptr, buf->left); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufto(register struct psock_buf *buf, u8_t endmarker, - register u8_t **dataptr, register u16_t *datalen) -{ - u8_t c; - while(buf->left > 0 && *datalen > 0) { - c = *buf->ptr = **dataptr; - ++*dataptr; - ++buf->ptr; - --*datalen; - --buf->left; - - if(c == endmarker) { - return BUF_FOUND; - } - } - - if(*datalen == 0) { - return BUF_NOT_FOUND; - } - - while(*datalen > 0) { - c = **dataptr; - --*datalen; - ++*dataptr; - - if(c == endmarker) { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} -/*---------------------------------------------------------------------------*/ -static char -send_data(register struct psock *s) -{ - if(s->state != STATE_DATA_SENT || uip_rexmit()) { - if(s->sendlen > uip_mss()) { - uip_send(s->sendptr, uip_mss()); - } else { - uip_send(s->sendptr, s->sendlen); - } - s->state = STATE_DATA_SENT; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static char -data_acked(register struct psock *s) -{ - if(s->state == STATE_DATA_SENT && uip_acked()) { - if(s->sendlen > uip_mss()) { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } else { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - s->state = STATE_ACKED; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_send(register struct psock *s, const char *buf, - unsigned int len)) -{ - PT_BEGIN(&s->psockpt); - ( void ) PT_YIELD_FLAG; - /* If there is no data to send, we exit immediately. */ - if(len == 0) { - PT_EXIT(&s->psockpt); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = (unsigned char*)buf; - s->sendlen = (unsigned short)len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while(s->sendlen > 0) { - - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_generator_send(register struct psock *s, - unsigned short (*generate)(void *), void *arg)) -{ - PT_BEGIN(&s->psockpt); - ( void ) PT_YIELD_FLAG; - /* Ensure that there is a generator function to call. */ - if(generate == NULL) { - PT_EXIT(&s->psockpt); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate(arg); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do { - /* Call the generator function again if we are called to perform a - retransmission. */ - if(uip_rexmit()) { - generate(arg); - } - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } while(s->sendlen > 0); - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -u16_t -psock_datalen(struct psock *psock) -{ - return psock->bufsize - psock->buf.left; -} -/*---------------------------------------------------------------------------*/ -char -psock_newdata(struct psock *s) -{ - if(s->readlen > 0) { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } else if(s->state == STATE_READ) { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } else if(uip_newdata()) { - /* There is new data that has not been consumed. */ - return 1; - } else { - /* There is no new data. */ - return 0; - } -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) -{ - PT_BEGIN(&psock->psockpt); - ( void ) PT_YIELD_FLAG; - buf_setup(&psock->buf, (unsigned char*)psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while((buf_bufto(&psock->buf, c, - &psock->readptr, - &psock->readlen) & BUF_FOUND) == 0); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readbuf(register struct psock *psock)) -{ - PT_BEGIN(&psock->psockpt); - ( void ) PT_YIELD_FLAG; - buf_setup(&psock->buf, (unsigned char * ) psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while(buf_bufdata(&psock->buf, psock->bufsize, - &psock->readptr, - &psock->readlen) != BUF_FULL); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -void -psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup(&psock->buf, (unsigned char*) buffer, buffersize); - PT_INIT(&psock->pt); - PT_INIT(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h deleted file mode 100644 index 9f9358368..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h +++ /dev/null @@ -1,115 +0,0 @@ -/** \addtogroup sys - * @{ - */ - -/** - * \defgroup clock Clock library - * - * The clock library is the interface between Contiki and the platform - * specific clock functionality. The clock library performs a single - * function: measuring time. Additionally, the clock library provides - * a macro, CLOCK_SECOND, which corresponds to one second of system - * time. - * - * \note The clock library need in many cases not be used - * directly. Rather, the \ref timer "timer library" or the \ref etimer - * "event timers" should be used. - * - * \sa \ref timer "Timer library" - * \sa \ref etimer "Event timers" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.11 2009/01/24 15:20:11 adamdunkels Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "net/clock-arch.h" - -//_RB_#include "contiki-conf.h" -#if 0 /* XXX problems with signedness and use in timer_expired(). #if:ed it out for now. */ - -/** - * Check if a clock time value is less than another clock time value. - * - * This macro checks if a clock time value is less than another clock - * time value. This macro is needed to correctly handle wrap-around of - * clock time values. - * - */ -#define CLOCK_LT( a, b ) ( (clock_time_t) ((a) - (b)) < ((clock_time_t) (~((clock_time_t) 0)) >> 1) ) -#endif /* 0 */ - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init( void ); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -CCIF clock_time_t clock_time( void ); - -void clock_delay( unsigned int ); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND ( clock_time_t ) 32 -#endif -int clock_fine_max( void ); -unsigned short clock_fine( void ); - -CCIF unsigned long clock_seconds( void ); -#endif /* __CLOCK_H__ */ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h deleted file mode 100644 index b0b9408c9..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.3 2008/10/14 12:46:39 nvt-se Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ -#ifndef __PT_H__ -#define __PT_H__ - -#include "sys/lc.h" - -struct pt -{ - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_YIELDED 1 -#define PT_EXITED 2 -#define PT_ENDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT( pt ) LC_INIT( (pt)->lc ) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD( name_args ) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN( pt ) \ - { \ - char PT_YIELD_FLAG = 1; \ - LC_RESUME( (pt)->lc ) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END( pt ) \ - LC_END( (pt)->lc ); \ - PT_YIELD_FLAG = 0; \ - PT_INIT( pt ); \ - return PT_ENDED; \ -} - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL( pt, condition ) \ - do \ - { \ - LC_SET( (pt)->lc ); \ - if( !(condition) ) \ - { \ - return PT_WAITING; \ - } \ - } while( 0 ) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE( pt, cond ) PT_WAIT_UNTIL( (pt), !(cond) ) - /** @} */ - - /** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD( pt, thread ) PT_WAIT_WHILE( (pt), PT_SCHEDULE(thread) ) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN( pt, child, thread ) \ - do \ - { \ - PT_INIT( (child) ); \ - PT_WAIT_THREAD( (pt), (thread) ); \ - } while( 0 ) - - /** @} */ - - /** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART( pt ) \ - do \ - { \ - PT_INIT( pt ); \ - return PT_WAITING; \ - } while( 0 ) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT( pt ) \ - do \ - { \ - PT_INIT( pt ); \ - return PT_EXITED; \ - } while( 0 ) - /** @} */ - - /** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function schedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE( f ) ( (f) < PT_EXITED ) - /** @} */ - - /** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD( pt ) \ - do \ - { \ - PT_YIELD_FLAG = 0; \ - LC_SET( (pt)->lc ); \ - if( PT_YIELD_FLAG == 0 ) \ - { \ - return PT_YIELDED; \ - } \ - } while( 0 ) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL( pt, cond ) \ - do \ - { \ - PT_YIELD_FLAG = 0; \ - LC_SET( (pt)->lc ); \ - if( (PT_YIELD_FLAG == 0) || !(cond) ) \ - { \ - return PT_YIELDED; \ - } \ - } while( 0 ) - /** @} */ -#endif /* __PT_H__ */ - - /** @} */ - \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h deleted file mode 100644 index 1d87e7efd..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h +++ /dev/null @@ -1,101 +0,0 @@ -/** \addtogroup sys - * @{ */ - -/** - * \defgroup timer Timer library - * - * The Contiki kernel does not provide support for timed - * events. Rather, an application that wants to use timers needs to - * explicitly use the timer library. - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library is not able to post events when a timer - * expires. The \ref etimer "Event timers" should be used for this - * purpose. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * \sa \ref etimer "Event timers" - * - * @{ - */ - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.2 2008/09/21 08:58:05 adamdunkels Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "sys/clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer -{ - clock_time_t start; - clock_time_t interval; -}; - -void timer_set( struct timer *t, clock_time_t interval ); -void timer_reset( struct timer *t ); -void timer_restart( struct timer *t ); -int timer_expired( struct timer *t ); -clock_time_t timer_remaining( struct timer *t ); -#endif /* __TIMER_H__ */ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c deleted file mode 100644 index e520391d6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c +++ /dev/null @@ -1,151 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.5 2009/01/24 15:20:11 adamdunkels Exp $ - */ - -//_RB_#include "contiki-conf.h" -#include "uip-conf.h" -#include "net/clock-arch.h" -#include "sys/clock.h" -#include "sys/timer.h" - -/*---------------------------------------------------------------------------*/ - -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void timer_set( struct timer *t, clock_time_t interval ) -{ - t->interval = interval; - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_restart() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void timer_reset( struct timer *t ) -{ - t->start += t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void timer_restart( struct timer *t ) -{ - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int timer_expired( struct timer *t ) -{ - return( clock_time_t ) ( clock_time() - t->start ) >= ( clock_time_t ) t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** - * The time until the timer expires - * - * This function returns the time until the timer expires. - * - * \param t A pointer to the timer - * - * \return The time until the timer expires - * - */ -clock_time_t timer_remaining( struct timer *t ) -{ - return t->start + t->interval - clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c deleted file mode 100644 index 78c67134c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c +++ /dev/null @@ -1,2143 +0,0 @@ -//#define DEBUG_PRINTF( ... ) /*printf(__VA_ARGS__)*/ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.15 2008/10/15 08:08:32 adamdunkels Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ -#include "net/uip.h" -#include "net/uipopt.h" -#include "net/uip_arp.h" -#include "net/uip_arch.h" - -/* If UIP_CONF_IPV6 is defined, we compile the uip6.c file instead of this one. -Therefore this #ifndef removes the entire compilation output of the uip.c file */ -#if !UIP_CONF_IPV6 - -#if UIP_CONF_IPV6 - #include "net/uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ - -/* Variable definitions. */ - -/* The IP address of this host. If it is defined to be fixed (by setting -UIP_FIXEDADDR to 1 in uipopt.h), the address is set here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 - const uip_ipaddr_t uip_hostaddr = { UIP_IPADDR0, UIP_IPADDR1, UIP_IPADDR2, UIP_IPADDR3 }; - const uip_ipaddr_t uip_draddr = { UIP_DRIPADDR0, UIP_DRIPADDR1, UIP_DRIPADDR2, UIP_DRIPADDR3 }; - const uip_ipaddr_t uip_netmask = { UIP_NETMASK0, UIP_NETMASK1, UIP_NETMASK2, UIP_NETMASK3 }; -#else - uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -const uip_ipaddr_t uip_broadcast_addr = -#if UIP_CONF_IPV6 - { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; -#else /* UIP_CONF_IPV6 */ - { { 0xff, 0xff, 0xff, 0xff } }; -#endif /* UIP_CONF_IPV6 */ - -const uip_ipaddr_t uip_all_zeroes_addr = { { 0x0, /* rest is 0 */ } }; - -#if UIP_FIXEDETHADDR - const struct uip_eth_addr uip_ethaddr = { { UIP_ETHADDR0, UIP_ETHADDR1, UIP_ETHADDR2, UIP_ETHADDR3, UIP_ETHADDR4, UIP_ETHADDR5 } }; -#else - struct uip_eth_addr uip_ethaddr = { { 0, 0, 0, 0, 0, 0 } }; -#endif - -#ifndef UIP_CONF_EXTERNAL_BUFFER - /* The packet buffer that contains incoming packets. */ - u8_t uip_buf[ UIP_BUFSIZE + 2 ]; -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -/* The uip_appdata pointer points to application data. */ -void *uip_appdata; - -/* The uip_appdata pointer points to the application data which is to be sent. */ -void *uip_sappdata; - -#if UIP_URGDATA > 0 - /* The uip_urgdata pointer points to urgent data (out-of-band data), if - present. */ - void *uip_urgdata; - u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -/* The uip_len is either 8 or 16 bits, depending on the maximum packet size. */ -u16_t uip_len, uip_slen; - -/* The uip_flags variable is used for communication between the TCP/IP stack -and the application program. */ -u8_t uip_flags; - -/* uip_conn always points to the current connection. */ -struct uip_conn *uip_conn; -struct uip_conn uip_conns[ UIP_CONNS ]; - -/* The uip_conns array holds all TCP connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - -/* The uip_listenports list all currently listning ports. */ -#if UIP_UDP - struct uip_udp_conn *uip_udp_conn; - struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/* Ths ipid variable is an increasing number that is used for the IP ID field. */ -static u16_t ipid; - -void uip_setipid( u16_t id ) -{ - ipid = id; -} - -/* The iss variable is used for the TCP initial sequence number. */ -static u8_t iss[ 4 ]; - -#if UIP_ACTIVE_OPEN - /* Keeps track of the last port used for a new connection. */ - static u16_t lastport; -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[ 4 ]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP_DEST_UNREACHABLE 3 -#define ICMP_PORT_UNREACHABLE 3 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S ( 1 << 6 ) -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - -/* Macros. */ -#define BUF ( ( struct uip_tcpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define FBUF ( ( struct uip_tcpip_hdr * ) &uip_reassbuf[0] ) -#define ICMPBUF ( ( struct uip_icmpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define UDPBUF ( ( struct uip_udpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) - -#if UIP_STATISTICS == 1 - struct uip_stats uip_stat; - #define UIP_STAT( s ) s -#else - #define UIP_STAT( s ) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 - #include - void uip_log( char *msg ); - #define UIP_LOG( m ) uip_log( m ) -#else - #define UIP_LOG( m ) -#endif /* UIP_LOGGING == 1 */ - -#if !UIP_ARCH_ADD32 - void uip_add32( u8_t *op32, u16_t op16 ) - { - uip_acc32[3] = op32[3] + ( op16 & 0xff ); - uip_acc32[2] = op32[2] + ( op16 >> 8 ); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if( uip_acc32[2] < (op16 >> 8) ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - - if( uip_acc32[3] < (op16 & 0xff) ) - { - ++uip_acc32[2]; - if( uip_acc32[2] == 0 ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - } - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_ARCH_ADD32 */ - -#if !UIP_ARCH_CHKSUM - - static u16_t chksum( u16_t sum, const u8_t *data, u16_t len ) - { - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while( dataptr < last_byte ) - { - /* At least two more bytes */ - t = ( dataptr[ 0 ] << 8 ) + dataptr[ 1 ]; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - - dataptr += 2; - } - - if( dataptr == last_byte ) - { - t = ( dataptr[ 0 ] << 8 ) + 0; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; - } - /*---------------------------------------------------------------------------*/ - - u16_t uip_chksum( u16_t *data, u16_t len ) - { - return htons( chksum( 0, ( u8_t * ) data, len ) ); - } - /*---------------------------------------------------------------------------*/ - - #ifndef UIP_ARCH_IPCHKSUM - u16_t uip_ipchksum( void ) - { - u16_t sum; - - sum = chksum( 0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN ); - - //DEBUG_PRINTF( "uip_ipchksum: sum 0x%04x\n", sum ); - return( sum == 0 ) ? 0xffff : htons( sum ); - } - #endif - /*---------------------------------------------------------------------------*/ - - static u16_t upper_layer_chksum( u8_t proto ) - { - u16_t upper_layer_len; - u16_t sum; - - #if UIP_CONF_IPV6 - upper_layer_len = ( ((u16_t) (BUF->len[ 0 ]) << 8) + BUF->len[ 1 ] ); - #else /* UIP_CONF_IPV6 */ - upper_layer_len = ( ((u16_t) (BUF->len[ 0 ]) << 8) + BUF->len[ 1 ] ) - UIP_IPH_LEN; - #endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - - /* Sum IP source and destination addresses. */ - sum = chksum( sum, ( u8_t * ) &BUF->srcipaddr, 2 * sizeof(uip_ipaddr_t) ); - - /* Sum TCP header and data. */ - sum = chksum( sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], upper_layer_len ); - - return( sum == 0 ) ? 0xffff : htons( sum ); - } - /*---------------------------------------------------------------------------*/ - - #if UIP_CONF_IPV6 - u16_t uip_icmp6chksum( void ) - { - return upper_layer_chksum( UIP_PROTO_ICMP6 ); - } - #endif /* UIP_CONF_IPV6 */ - /*---------------------------------------------------------------------------*/ - - u16_t uip_tcpchksum( void ) - { - return upper_layer_chksum( UIP_PROTO_TCP ); - } - /*---------------------------------------------------------------------------*/ - - #if UIP_UDP_CHECKSUMS - u16_t uip_udpchksum( void ) - { - return upper_layer_chksum( UIP_PROTO_UDP ); - } - #endif /* UIP_UDP_CHECKSUMS */ - -#endif /* UIP_ARCH_CHKSUM */ -/*---------------------------------------------------------------------------*/ - -void uip_init( void ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - uip_listenports[ c ] = 0; - } - - for( c = 0; c < UIP_CONNS; ++c ) - { - uip_conns[ c ].tcpstateflags = UIP_CLOSED; - } - - #if UIP_ACTIVE_OPEN - lastport = 1024; - #endif /* UIP_ACTIVE_OPEN */ - - #if UIP_UDP - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - uip_udp_conns[ c ].lport = 0; - } - #endif /* UIP_UDP */ - - /* IPv4 initialization. */ - #if UIP_FIXEDADDR == 0 - /* uip_hostaddr[ 0 ] = uip_hostaddr[ 1 ] = 0;*/ - #endif /* UIP_FIXEDADDR */ -} -/*---------------------------------------------------------------------------*/ - -#if UIP_ACTIVE_OPEN - struct uip_conn *uip_connect( uip_ipaddr_t *ripaddr, u16_t rport ) - { - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ - again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for( c = 0; c < UIP_CONNS; ++c ) - { - conn = &uip_conns[ c ]; - if( conn->tcpstateflags != UIP_CLOSED && conn->lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - cconn = &uip_conns[ c ]; - if( cconn->tcpstateflags == UIP_CLOSED ) - { - conn = cconn; - break; - } - - if( cconn->tcpstateflags == UIP_TIME_WAIT ) - { - if( conn == 0 || cconn->timer > conn->timer ) - { - conn = cconn; - } - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[ 0 ] = iss[ 0 ]; - conn->snd_nxt[ 1 ] = iss[ 1 ]; - conn->snd_nxt[ 2 ] = iss[ 2 ]; - conn->snd_nxt[ 3 ] = iss[ 3 ]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons( lastport ); - conn->rport = rport; - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - - return conn; - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_ACTIVE_OPEN */ - -#if UIP_UDP - struct uip_udp_conn *uip_udp_new( const uip_ipaddr_t *ripaddr, u16_t rport ) - { - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ - again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[ c ].lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[ c ].lport == 0 ) - { - conn = &uip_udp_conns[ c ]; - break; - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->lport = HTONS( lastport ); - conn->rport = rport; - if( ripaddr == NULL ) - { - memset( &conn->ripaddr, 0, sizeof(uip_ipaddr_t) ); - } - else - { - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - } - - conn->ttl = UIP_TTL; - - return conn; - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_UDP */ - -void uip_unlisten( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[ c ] == port ) - { - uip_listenports[ c ] = 0; - return; - } - } -} -/*---------------------------------------------------------------------------*/ - -void uip_listen( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[ c ] == 0 ) - { - uip_listenports[ c ] = port; - return; - } - } -} -/*---------------------------------------------------------------------------*/ - -/* XXX: IP fragment reassembly: not well-tested. */ -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 - #define UIP_REASS_BUFSIZE ( UIP_BUFSIZE - UIP_LLH_LEN ) - static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; - static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / ( 8 * 8 )]; - static const u8_t bitmap_bits[8] = { 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; - static u16_t uip_reasslen; - static u8_t uip_reassflags; - #define UIP_REASS_FLAG_LASTFRAG 0x01 - static u8_t uip_reasstmr; - - #define IP_MF 0x20 - - static u8_t uip_reass( void ) - { - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if( uip_reasstmr == 0 ) - { - memcpy( uip_reassbuf, &BUF->vhl, UIP_IPH_LEN ); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - - /* Clear the bitmap. */ - memset( uip_reassbitmap, 0, sizeof(uip_reassbitmap) ); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if - ( - BUF->srcipaddr[ 0 ] == FBUF->srcipaddr[ 0 ] && - BUF->srcipaddr[ 1 ] == FBUF->srcipaddr[ 1 ] && - BUF->destipaddr[ 0 ] == FBUF->destipaddr[ 0 ] && - BUF->destipaddr[ 1 ] == FBUF->destipaddr[ 1 ] && - BUF->ipid[ 0 ] == FBUF->ipid[ 0 ] && - BUF->ipid[ 1 ] == FBUF->ipid[ 1 ] - ) - { - len = ( BUF->len[ 0 ] << 8 ) + BUF->len[ 1 ] - ( BUF->vhl & 0x0f ) * 4; - offset = ( ((BUF->ipoffset[ 0 ] & 0x3f) << 8) + BUF->ipoffset[ 1 ] ) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if( offset > UIP_REASS_BUFSIZE || offset + len > UIP_REASS_BUFSIZE ) - { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy( &uip_reassbuf[UIP_IPH_LEN + offset], ( char * ) BUF + ( int ) ((BUF->vhl & 0x0f) * 4), len ); - - /* Update the bitmap. */ - if( offset / (8 * 8) == (offset + len) / (8 * 8) ) - { - /* If the two endpoints are in the same byte, we only update - that byte. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7] &~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - else - { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7]; - for( i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i ) - { - uip_reassbitmap[i] = 0xff; - } - - uip_reassbitmap[( offset + len ) / ( 8 * 8 )] |= ~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - if( (BUF->ipoffset[ 0 ] & IP_MF) == 0 ) - { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if( uip_reassflags & UIP_REASS_FLAG_LASTFRAG ) - { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for( i = 0; i < uip_reasslen / (8 * 8) - 1; ++i ) - { - if( uip_reassbitmap[i] != 0xff ) - { - goto nullreturn; - } - } - - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if( uip_reassbitmap[uip_reasslen / (8 * 8)] != (u8_t)~bitmap_bits[uip_reasslen / 8 & 7] ) - { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy( BUF, FBUF, uip_reasslen ); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[ 0 ] = BUF->ipoffset[ 1 ] = 0; - BUF->len[ 0 ] = uip_reasslen >> 8; - BUF->len[ 1 ] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - return uip_reasslen; - } - } - - nullreturn: - - return 0; - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_REASSEMBLY */ - - -static void uip_add_rcv_nxt( u16_t n ) -{ - uip_add32( uip_conn->rcv_nxt, n ); - uip_conn->rcv_nxt[ 0 ] = uip_acc32[ 0 ]; - uip_conn->rcv_nxt[ 1 ] = uip_acc32[ 1 ]; - uip_conn->rcv_nxt[ 2 ] = uip_acc32[ 2 ]; - uip_conn->rcv_nxt[ 3 ] = uip_acc32[ 3 ]; -} -/*---------------------------------------------------------------------------*/ - -void uip_process( u8_t flag ) -{ - register struct uip_conn *uip_connr = uip_conn; - - #if UIP_UDP - if( flag == UIP_UDP_SEND_CONN ) - { - goto udp_send; - } - #endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if( flag == UIP_POLL_REQUEST ) - { - if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && !uip_outstanding(uip_connr) ) - { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } - else if( flag == UIP_TIMER ) - { - #if UIP_REASSEMBLY - if( uip_reasstmr != 0 ) - { - --uip_reasstmr; - } - #endif /* UIP_REASSEMBLY */ - - /* Increase the initial sequence number. */ - if( ++iss[ 3 ] == 0 ) - { - if( ++iss[ 2 ] == 0 ) - { - if( ++iss[ 1 ] == 0 ) - { - ++iss[ 0 ]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if( uip_connr->tcpstateflags == UIP_TIME_WAIT || uip_connr->tcpstateflags == UIP_FIN_WAIT_2 ) - { - ++( uip_connr->timer ); - if( uip_connr->timer == UIP_TIME_WAIT_TIMEOUT ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } - else if( uip_connr->tcpstateflags != UIP_CLOSED ) - { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if( uip_outstanding(uip_connr) ) - { - if( uip_connr->timer-- == 0 ) - { - if - ( - uip_connr->nrtx == UIP_MAXRTX || - ( - (uip_connr->tcpstateflags == UIP_SYN_SENT || uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX - ) - ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << ( uip_connr->nrtx > 4 ? 4 : uip_connr->nrtx ); - ++( uip_connr->nrtx ); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT( ++uip_stat.tcp.rexmit ); - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - - #if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - } - } - } - else if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED ) - { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - - goto drop; - } - - #if UIP_UDP - if( flag == UIP_UDP_TIMER ) - { - if( uip_udp_conn->lport != 0 ) - { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } - else - { - goto drop; - } - } - #endif - - /* This is where the input processing starts. */ - UIP_STAT( ++uip_stat.ip.recv ); - - /* Start of IP input header processing code. */ - #if UIP_CONF_IPV6 - /* Check validity of the IP header. */ - if( (BUF->vtc & 0xf0) != 0x60 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ipv6: invalid version." ); - goto drop; - } - - #else /* UIP_CONF_IPV6 */ - /* Check validity of the IP header. */ - if( BUF->vhl != 0x45 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ip: invalid version or header length." ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - if( (BUF->len[ 0 ] << 8) + BUF->len[ 1 ] <= uip_len ) - { - uip_len = ( BUF->len[ 0 ] << 8 ) + BUF->len[ 1 ]; - #if UIP_CONF_IPV6 - /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ - uip_len += 40; - #endif /* UIP_CONF_IPV6 */ - } - else - { - UIP_LOG( "ip: packet shorter than reported in IP header." ); - goto drop; - } - - #if !UIP_CONF_IPV6 - /* Check the fragment flag. */ - if( (BUF->ipoffset[ 0 ] & 0x3f) != 0 || BUF->ipoffset[ 1 ] != 0 ) - { - #if UIP_REASSEMBLY - uip_len = uip_reass(); - if( uip_len == 0 ) - { - goto drop; - } - #else /* UIP_REASSEMBLY */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.fragerr ); - UIP_LOG( "ip: fragment dropped." ); - goto drop; - #endif /* UIP_REASSEMBLY */ - } - #endif /* UIP_CONF_IPV6 */ - - if( uip_ipaddr_cmp(&uip_hostaddr, &uip_all_zeroes_addr) ) - { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ - #if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if( BUF->proto == UIP_PROTO_ICMP ) - { - UIP_LOG( "ip: possible ping config packet received." ); - goto icmp_input; - } - else - { - UIP_LOG( "ip: packet dropped since no address assigned." ); - goto drop; - } - #endif /* UIP_PINGADDRCONF */ - } - else - { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ - #if UIP_BROADCAST - //DEBUG_PRINTF( "UDP IP checksum 0x%04x\n", uip_ipchksum() ); - if( BUF->proto == UIP_PROTO_UDP && uip_ipaddr_cmp(&BUF->destipaddr, &uip_broadcast_addr) /*&& uip_ipchksum() == 0xffff*/ ) - { - goto udp_input; - } - #endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ - #if !UIP_CONF_IPV6 - if( !uip_ipaddr_cmp(&BUF->destipaddr, &uip_hostaddr) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - #else /* UIP_CONF_IPV6 */ - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if( !uip_ipaddr_cmp(&BUF->destipaddr, &uip_hostaddr) && BUF->destipaddr.u16[ 0 ] != HTONS(0xff02) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - #endif /* UIP_CONF_IPV6 */ - } - - #if !UIP_CONF_IPV6 - if( uip_ipchksum() != 0xffff ) - { - /* Compute and check the IP header checksum. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.chkerr ); - UIP_LOG( "ip: bad checksum." ); - goto drop; - } - #endif /* UIP_CONF_IPV6 */ - - if( BUF->proto == UIP_PROTO_TCP ) - { - /* Check for TCP packet. If so, proceed with TCP input processing. */ - goto tcp_input; - } - - #if UIP_UDP - if( BUF->proto == UIP_PROTO_UDP ) - { - goto udp_input; - } - #endif /* UIP_UDP */ - - #if !UIP_CONF_IPV6 - /* ICMPv4 processing code follows. */ - if( BUF->proto != UIP_PROTO_ICMP ) - { - /* We only allow ICMP packets from here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp." ); - goto drop; - } - - #if UIP_PINGADDRCONF - icmp_input : - #endif /* UIP_PINGADDRCONF */ - - UIP_STAT( ++uip_stat.icmp.recv ); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if( ICMPBUF->type != ICMP_ECHO ) - { - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: not icmp echo." ); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ - #if UIP_PINGADDRCONF - if( uip_ipaddr_cmp(&uip_hostaddr, &uip_all_zeroes_addr) ) - { - uip_hostaddr = BUF->destipaddr; - } - #endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if( ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8)) ) - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ) + 1; - } - else - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - - UIP_STAT( ++uip_stat.icmp.sent ); - BUF->ttl = UIP_TTL; - goto ip_send_nolen; - - /* End of IPv4 input header processing code. */ - - #else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - - //DEBUG_PRINTF( "icmp6_input: length %d\n", uip_len ); - if( BUF->proto != UIP_PROTO_ICMP6 ) - { - /* We only allow ICMPv6 packets from here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp6." ); - goto drop; - } - - UIP_STAT( ++uip_stat.icmp.recv ); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if( ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION ) - { - if( uip_ipaddr_cmp(&ICMPBUF->icmp6data, &uip_hostaddr) ) - { - if( ICMPBUF->options[ 0 ] == ICMP6_OPTION_SOURCE_LINK_ADDRESS ) - { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add( &ICMPBUF->srcipaddr, &(ICMPBUF->options[ 2 ]) ); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy( &ICMPBUF->destipaddr, &ICMPBUF->srcipaddr ); - uip_ipaddr_copy( &ICMPBUF->srcipaddr, &uip_hostaddr ); - ICMPBUF->options[ 0 ] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[ 1 ] = 1; /* Options length, 1 = 8 bytes. */ - memcpy( &(ICMPBUF->options[ 2 ]), &uip_ethaddr, sizeof(uip_ethaddr) ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - goto send; - } - - goto drop; - } - else if( ICMPBUF->type == ICMP6_ECHO ) - { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT( ++uip_stat.icmp.sent ); - goto send; - } - else - { - //DEBUG_PRINTF( "Unknown icmp6 message type %d\n", ICMPBUF->type ); - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: unknown ICMP message." ); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - #endif /* !UIP_CONF_IPV6 */ - - #if UIP_UDP - /* UDP input processing. */ - udp_input : - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ - #if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[ UIP_LLH_LEN + UIP_IPUDPH_LEN ]; - if( UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff ) - { - UIP_STAT( ++uip_stat.udp.drop ); - UIP_STAT( ++uip_stat.udp.chkerr ); - UIP_LOG( "udp: bad checksum." ); - goto drop; - } - - #else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; - #endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for( uip_udp_conn = &uip_udp_conns[ 0 ]; uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; ++uip_udp_conn ) - { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if - ( - uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || UDPBUF->srcport == uip_udp_conn->rport) && - ( - uip_ipaddr_cmp(&uip_udp_conn->ripaddr, &uip_all_zeroes_addr) || - uip_ipaddr_cmp(&uip_udp_conn->ripaddr, &uip_broadcast_addr) || - uip_ipaddr_cmp(&BUF->srcipaddr, &uip_udp_conn->ripaddr) - ) - ) - { - goto udp_found; - } - } - - UIP_LOG( "udp: no matching connection found" ); - - #if UIP_CONF_ICMP_DEST_UNREACH && !UIP_CONF_IPV6 - - /* Copy fields from packet header into payload of this ICMP packet. */ - memcpy( &(ICMPBUF->payload[ 0 ]), ICMPBUF, UIP_IPH_LEN + 8 ); - - /* Set the ICMP type and code. */ - ICMPBUF->type = ICMP_DEST_UNREACHABLE; - ICMPBUF->icode = ICMP_PORT_UNREACHABLE; - - /* Calculate the ICMP checksum. */ - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_chksum( ( u16_t * ) &(ICMPBUF->type), 36 ); - - /* Set the IP destination address to be the source address of the - original packet. */ - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - - /* Set our IP address as the source address. */ - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - - /* The size of the ICMP destination unreachable packet is 36 + the - size of the IP header (20) = 56. */ - uip_len = 36 + UIP_IPH_LEN; - ICMPBUF->len[ 0 ] = 0; - ICMPBUF->len[ 1 ] = ( u8_t ) uip_len; - ICMPBUF->ttl = UIP_TTL; - ICMPBUF->proto = UIP_PROTO_ICMP; - - goto ip_send_nolen; - #else /* UIP_CONF_ICMP_DEST_UNREACH */ - goto drop; - #endif /* UIP_CONF_ICMP_DEST_UNREACH */ - - udp_found : uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); - -udp_send: - if( uip_slen == 0 ) - { - goto drop; - } - - uip_len = uip_slen + UIP_IPUDPH_LEN; - - #if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[ 0 ] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[ 1 ] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[ 0 ] = ( uip_len >> 8 ); - BUF->len[ 1 ] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS( uip_slen + UIP_UDPH_LEN ); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - uip_ipaddr_copy( &BUF->destipaddr, &uip_udp_conn->ripaddr ); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - - #if UIP_UDP_CHECKSUMS - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~( uip_udpchksum() ); - if( UDPBUF->udpchksum == 0 ) - { - UDPBUF->udpchksum = 0xffff; - } - #endif /* UIP_UDP_CHECKSUMS */ - goto ip_send_nolen; - #endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input : UIP_STAT( ++uip_stat.tcp.recv ); - - /* Start of TCP input header processing code. */ - if( uip_tcpchksum() != 0xffff ) - { - /* Compute and check the TCP checksum. */ - UIP_STAT( ++uip_stat.tcp.drop ); - UIP_STAT( ++uip_stat.tcp.chkerr ); - UIP_LOG( "tcp: bad checksum." ); - goto drop; - } - - /* Demultiplex this segment. */ - - /* First check any active connections. */ - for( uip_connr = &uip_conns[ 0 ]; uip_connr <= &uip_conns[UIP_CONNS - 1]; ++uip_connr ) - { - if - ( - uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(&BUF->srcipaddr, &uip_connr->ripaddr) - ) - { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if( (BUF->flags & TCP_CTL) != TCP_SYN ) - { - goto reset; - } - - tmp16 = BUF->destport; - - /* Next, check listening connections. */ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( tmp16 == uip_listenports[ c ] ) - { - goto found_listen; - } - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT( ++uip_stat.tcp.synrst ); - -reset: - /* We do not send resets in response to resets. */ - if( BUF->flags & TCP_RST ) - { - goto drop; - } - - UIP_STAT( ++uip_stat.tcp.rst ); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[ 3 ]; - BUF->seqno[ 3 ] = BUF->ackno[ 3 ]; - BUF->ackno[ 3 ] = c; - - c = BUF->seqno[ 2 ]; - BUF->seqno[ 2 ] = BUF->ackno[ 2 ]; - BUF->ackno[ 2 ] = c; - - c = BUF->seqno[ 1 ]; - BUF->seqno[ 1 ] = BUF->ackno[ 1 ]; - BUF->ackno[ 1 ] = c; - - c = BUF->seqno[ 0 ]; - BUF->seqno[ 0 ] = BUF->ackno[ 0 ]; - BUF->ackno[ 0 ] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if( ++BUF->ackno[ 3 ] == 0 ) - { - if( ++BUF->ackno[ 2 ] == 0 ) - { - if( ++BUF->ackno[ 1 ] == 0 ) - { - ++BUF->ackno[ 0 ]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ -found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - if( uip_conns[ c ].tcpstateflags == UIP_CLOSED ) - { - uip_connr = &uip_conns[ c ]; - break; - } - - if( uip_conns[ c ].tcpstateflags == UIP_TIME_WAIT ) - { - if( uip_connr == 0 || uip_conns[ c ].timer > uip_connr->timer ) - { - uip_connr = &uip_conns[ c ]; - } - } - } - - if( uip_connr == 0 ) - { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT( ++uip_stat.tcp.syndrop ); - UIP_LOG( "tcp: found no unused connections." ); - goto drop; - } - - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy( &uip_connr->ripaddr, &BUF->srcipaddr ); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[ 0 ] = iss[ 0 ]; - uip_connr->snd_nxt[ 1 ] = iss[ 1 ]; - uip_connr->snd_nxt[ 2 ] = iss[ 2 ]; - uip_connr->snd_nxt[ 3 ] = iss[ 3 ]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[ 3 ] = BUF->seqno[ 3 ]; - uip_connr->rcv_nxt[ 2 ] = BUF->seqno[ 2 ]; - uip_connr->rcv_nxt[ 1 ] = BUF->seqno[ 1 ]; - uip_connr->rcv_nxt[ 0 ] = BUF->seqno[ 0 ]; - uip_add_rcv_nxt( 1 ); - - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( (u16_t) uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | ( u16_t ) uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ - #if UIP_ACTIVE_OPEN - tcp_send_synack : BUF->flags = TCP_ACK; -tcp_send_syn: - BUF->flags |= TCP_SYN; - #else /* UIP_ACTIVE_OPEN */ - tcp_send_synack : BUF->flags = TCP_SYN | TCP_ACK; - #endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[ 0 ] = TCP_OPT_MSS; - BUF->optdata[ 1 ] = TCP_OPT_MSS_LEN; - BUF->optdata[ 2 ] = ( UIP_TCP_MSS ) / 256; - BUF->optdata[ 3 ] = ( UIP_TCP_MSS ) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ( (UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4 ) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ -found: - uip_conn = uip_connr; - uip_flags = 0; - - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if( BUF->flags & TCP_RST ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG( "tcp: got reset, aborting connection." ); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - - /* Calculate the length of the data, if the application has sent - any data to us. */ - c = ( BUF->tcpoffset >> 4 ) << 2; - - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if( !(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK))) ) - { - if - ( - (uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - ( - BUF->seqno[ 0 ] != uip_connr->rcv_nxt[ 0 ] || - BUF->seqno[ 1 ] != uip_connr->rcv_nxt[ 1 ] || - BUF->seqno[ 2 ] != uip_connr->rcv_nxt[ 2 ] || - BUF->seqno[ 3 ] != uip_connr->rcv_nxt[ 3 ] - ) - ) - { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if( (BUF->flags & TCP_ACK) && uip_outstanding(uip_connr) ) - { - uip_add32( uip_connr->snd_nxt, uip_connr->len ); - - if - ( - BUF->ackno[ 0 ] == uip_acc32[ 0 ] && - BUF->ackno[ 1 ] == uip_acc32[ 1 ] && - BUF->ackno[ 2 ] == uip_acc32[ 2 ] && - BUF->ackno[ 3 ] == uip_acc32[ 3 ] - ) - { - /* Update sequence number. */ - uip_connr->snd_nxt[ 0 ] = uip_acc32[ 0 ]; - uip_connr->snd_nxt[ 1 ] = uip_acc32[ 1 ]; - uip_connr->snd_nxt[ 2 ] = uip_acc32[ 2 ]; - uip_connr->snd_nxt[ 3 ] = uip_acc32[ 3 ]; - - /* Do RTT estimation, unless we have done retransmissions. */ - if( uip_connr->nrtx == 0 ) - { - signed char m; - m = uip_connr->rto - uip_connr->timer; - - /* This is taken directly from VJs original code in his paper */ - m = m - ( uip_connr->sa >> 3 ); - uip_connr->sa += m; - if( m < 0 ) - { - m = -m; - } - - m = m - ( uip_connr->sv >> 2 ); - uip_connr->sv += m; - uip_connr->rto = ( uip_connr->sa >> 3 ) + uip_connr->sv; - } - - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - } - - /* Do different things depending on in what state the connection is. */ - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - - #if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if( (uip_flags & UIP_ACKDATA) && (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK) ) - { - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[ 0 ] = BUF->seqno[ 0 ]; - uip_connr->rcv_nxt[ 1 ] = BUF->seqno[ 1 ]; - uip_connr->rcv_nxt[ 2 ] = BUF->seqno[ 2 ]; - uip_connr->rcv_nxt[ 3 ] = BUF->seqno[ 3 ]; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - if( BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - if( uip_outstanding(uip_connr) ) - { - goto drop; - } - - uip_add_rcv_nxt( 1 + uip_len ); - uip_flags |= UIP_CLOSE; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - } - - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if( (BUF->flags & TCP_URG) != 0 ) - { - #if UIP_URGDATA > 0 - uip_urglen = ( BUF->urgp[ 0 ] << 8 ) | BUF->urgp[ 1 ]; - if( uip_urglen > uip_len ) - { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - - uip_add_rcv_nxt( uip_urglen ); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } - else - { - uip_urglen = 0; - #else /* UIP_URGDATA > 0 */ - uip_appdata = ( ( char * ) uip_appdata ) + ( (BUF->urgp[ 0 ] << 8) | BUF->urgp[ 1 ] ); - uip_len -= ( BUF->urgp[ 0 ] << 8 ) | BUF->urgp[ 1 ]; - #endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if( uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ( (u16_t) BUF->wnd[ 0 ] << 8 ) + ( u16_t ) BUF->wnd[ 1 ]; - if( tmp16 > uip_connr->initialmss || tmp16 == 0 ) - { - tmp16 = uip_connr->initialmss; - } - - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if( uip_flags & (UIP_NEWDATA | UIP_ACKDATA) ) - { - uip_slen = 0; - UIP_APPCALL(); - -appsend: - if( uip_flags & UIP_ABORT ) - { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if( uip_flags & UIP_CLOSE ) - { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if( uip_slen > 0 ) - { - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if( (uip_flags & UIP_ACKDATA) != 0 ) - { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if( uip_connr->len == 0 ) - { - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if( uip_slen > uip_connr->mss ) - { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } - else - { - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - - uip_connr->nrtx = 0; -apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if( uip_slen > 0 && uip_connr->len > 0 ) - { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - - /* Send the packet. */ - goto tcp_send_noopts; - } - - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if( uip_flags & UIP_NEWDATA ) - { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - - goto drop; - - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } - else - { - uip_connr->tcpstateflags = UIP_CLOSING; - } - - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - else if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_FIN_WAIT_2: - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - - goto drop; - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ -tcp_send_ack: - BUF->flags = TCP_ACK; - -tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; - -tcp_send_noopts: - BUF->tcpoffset = ( UIP_TCPH_LEN / 4 ) << 4; - - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ -tcp_send: - BUF->ackno[ 0 ] = uip_connr->rcv_nxt[ 0 ]; - BUF->ackno[ 1 ] = uip_connr->rcv_nxt[ 1 ]; - BUF->ackno[ 2 ] = uip_connr->rcv_nxt[ 2 ]; - BUF->ackno[ 3 ] = uip_connr->rcv_nxt[ 3 ]; - - BUF->seqno[ 0 ] = uip_connr->snd_nxt[ 0 ]; - BUF->seqno[ 1 ] = uip_connr->snd_nxt[ 1 ]; - BUF->seqno[ 2 ] = uip_connr->snd_nxt[ 2 ]; - BUF->seqno[ 3 ] = uip_connr->snd_nxt[ 3 ]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - uip_ipaddr_copy( &BUF->destipaddr, &uip_connr->ripaddr ); - - if( uip_connr->tcpstateflags & UIP_STOPPED ) - { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[ 0 ] = BUF->wnd[ 1 ] = 0; - } - else - { - BUF->wnd[ 0 ] = ( (UIP_RECEIVE_WINDOW) >> 8 ); - BUF->wnd[ 1 ] = ( (UIP_RECEIVE_WINDOW) & 0xff ); - } - -tcp_send_noconn: - - BUF->ttl = UIP_TTL; - - #if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[ 0 ] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[ 1 ] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[ 0 ] = ( uip_len >> 8 ); - BUF->len[ 1 ] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->urgp[ 0 ] = BUF->urgp[ 1 ] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - -ip_send_nolen: - #if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; - #else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[ 0 ] = BUF->ipoffset[ 1 ] = 0; - ++ipid; - BUF->ipid[ 0 ] = ipid >> 8; - BUF->ipid[ 1 ] = ipid & 0xff; - - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - //DEBUG_PRINTF( "uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - UIP_STAT( ++uip_stat.tcp.sent ); - - #if UIP_CONF_IPV6 -send : - #endif /* UIP_CONF_IPV6 */ - - //DEBUG_PRINTF( "Sending packet with length %d (%d)\n", uip_len, (BUF->len[ 0 ] << 8) | BUF->len[ 1 ] ); - UIP_STAT( ++uip_stat.ip.sent ); - - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; - -drop: - uip_len = 0; - uip_flags = 0; - return; -} -/*---------------------------------------------------------------------------*/ - -u16_t htons( u16_t val ) -{ - return HTONS( val ); -} - -u32_t htonl( u32_t val ) -{ - return HTONL( val ); -} -/*---------------------------------------------------------------------------*/ - -void uip_send( const void *data, int len ) -{ - int copylen; - - #define MIN( a, b ) ( (a) < (b) ? (a) : (b) ) - - copylen = MIN( len, UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN - ( int ) - (( char * ) uip_sappdata - ( char * ) &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]) ); - if( copylen > 0 ) - { - uip_slen = copylen; - if( data != uip_sappdata ) - { - memcpy( uip_sappdata, (data), uip_slen ); - } - } -} -/*---------------------------------------------------------------------------*/ - -/** @} */ -#endif /* UIP_CONF_IPV6 */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c deleted file mode 100644 index ab84419c6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c +++ /dev/null @@ -1,475 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.5 2008/02/07 01:35:00 adamdunkels Exp $ - * - */ -#include "net/uip_arp.h" - -#include - -#include "net/pack_struct_start.h" -struct arp_hdr -{ - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - uip_ipaddr_t sipaddr; - struct uip_eth_addr dhwaddr; - uip_ipaddr_t dipaddr; -} - -#include "net/pack_struct_end.h" - -#include "net/pack_struct_start.h" - -struct ethip_hdr -{ - struct uip_eth_hdr ethhdr; - - /* IP header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -} - -#include "net/pack_struct_end.h" - -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry -{ - uip_ipaddr_t ipaddr; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static uip_ipaddr_t ipaddr; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ( ( struct arp_hdr * ) &uip_buf[0] ) -#define IPBUF ( ( struct ethip_hdr * ) &uip_buf[0] ) - -#ifdef DEBUG - #undef DEBUG -#endif -#define DEBUG 0 -#if DEBUG -#include -#define PRINTF( ... ) printf( __VA_ARGS__ ) -#else - -//#define PRINTF( ... ) -#endif - -/*-----------------------------------------------------------------------------------*/ - -/** - * Initialize the ARP module. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_init( void ) -{ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - memset( &arp_table[i].ipaddr, 0, 4 ); - } -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_timer( void ) -{ - struct arp_entry *tabptr; - - ++arptime; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(&tabptr->ipaddr, &uip_all_zeroes_addr) && arptime - tabptr->time >= UIP_ARP_MAXAGE ) - { - memset( &tabptr->ipaddr, 0, 4 ); - } - } -} - -/*-----------------------------------------------------------------------------------*/ -static void uip_arp_update( uip_ipaddr_t *ipaddr, struct uip_eth_addr *ethaddr ) -{ - register struct arp_entry *tabptr; - - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - - /* Only check those entries that are actually in use. */ - if( !uip_ipaddr_cmp(&tabptr->ipaddr, &uip_all_zeroes_addr) ) - { - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if( uip_ipaddr_cmp(ipaddr, &tabptr->ipaddr) ) - { - /* An old entry found, update this and return. */ - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(&tabptr->ipaddr, &uip_all_zeroes_addr) ) - { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if( i == UIP_ARPTAB_SIZE ) - { - tmpage = 0; - c = 0; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( arptime - tabptr->time > tmpage ) - { - tmpage = arptime - tabptr->time; - c = i; - } - } - - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - uip_ipaddr_copy( &tabptr->ipaddr, ipaddr ); - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -#if 0 -void uip_arp_ipin( void ) -{ - uip_len -= sizeof( struct uip_eth_hdr ); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if( (IPBUF->srcipaddr[0] & uip_netmask[0]) != (uip_hostaddr[0] & uip_netmask[0]) ) - { - return; - } - - if( (IPBUF->srcipaddr[1] & uip_netmask[1]) != (uip_hostaddr[1] & uip_netmask[1]) ) - { - return; - } - - uip_arp_update( IPBUF->srcipaddr, &(IPBUF->ethhdr.src) ); - - return; -} - -#endif /* 0 */ - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_arpin( void ) -{ - if( uip_len < sizeof(struct arp_hdr) ) - { - uip_len = 0; - return; - } - - uip_len = 0; - - switch( BUF->opcode ) - { - case HTONS( ARP_REQUEST ): - /* ARP request. If it asked for our address, we send out a - reply. */ - - /* if(BUF->dipaddr[0] == uip_hostaddr[0] && - BUF->dipaddr[1] == uip_hostaddr[1]) {*/ - - //PRINTF( "uip_arp_arpin: request for %d.%d.%d.%d (we are %d.%d.%d.%d)\n", BUF->dipaddr.u8[0], BUF->dipaddr.u8[1], BUF->dipaddr.u8[2], - //BUF->dipaddr.u8[3], uip_hostaddr.u8[0], uip_hostaddr.u8[1], uip_hostaddr.u8[2], uip_hostaddr.u8[3] ); - if( uip_ipaddr_cmp(&BUF->dipaddr, &uip_hostaddr) ) - { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update( &BUF->sipaddr, &BUF->shwaddr ); - - BUF->opcode = HTONS( ARP_REPLY ); - - memcpy( BUF->dhwaddr.addr, BUF->shwaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6 ); - - uip_ipaddr_copy( &BUF->dipaddr, &BUF->sipaddr ); - uip_ipaddr_copy( &BUF->sipaddr, &uip_hostaddr ); - - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - uip_len = sizeof( struct arp_hdr ); - } - - break; - - case HTONS( ARP_REPLY ): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if( uip_ipaddr_cmp(&BUF->dipaddr, &uip_hostaddr) ) - { - uip_arp_update( &BUF->sipaddr, &BUF->shwaddr ); - } - - break; - } - - return; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_out( void ) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if( uip_ipaddr_cmp(&IPBUF->destipaddr, &uip_broadcast_addr) ) - { - memcpy( IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6 ); - } - else - { - /* Check if the destination address is on the local network. */ - if( !uip_ipaddr_maskcmp(&IPBUF->destipaddr, &uip_hostaddr, &uip_netmask) ) - { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy( &ipaddr, &uip_draddr ); - } - else - { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy( &ipaddr, &IPBUF->destipaddr ); - } - - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(&ipaddr, &tabptr->ipaddr) ) - { - break; - } - } - - if( i == UIP_ARPTAB_SIZE ) - { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - memset( BUF->ethhdr.dest.addr, 0xff, 6 ); - memset( BUF->dhwaddr.addr, 0x00, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - - uip_ipaddr_copy( &BUF->dipaddr, &ipaddr ); - uip_ipaddr_copy( &BUF->sipaddr, &uip_hostaddr ); - BUF->opcode = HTONS( ARP_REQUEST ); /* ARP request. */ - BUF->hwtype = HTONS( ARP_HWTYPE_ETH ); - BUF->protocol = HTONS( UIP_ETHTYPE_IP ); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof( struct arp_hdr ); - return; - } - - /* Build an ethernet header. */ - memcpy( IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6 ); - } - - memcpy( IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - - IPBUF->ethhdr.type = HTONS( UIP_ETHTYPE_IP ); - - uip_len += sizeof( struct uip_eth_hdr ); -} - -/*-----------------------------------------------------------------------------------*/ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README deleted file mode 100644 index 909f6520f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README +++ /dev/null @@ -1,13 +0,0 @@ -uIP is a very small implementation of the TCP/IP stack that is written -by Adam Dunkels . More information can be obtained -at the uIP homepage at http://www.sics.se/~adam/uip/. - -This is version $Name: uip-1-0 $. - -The directory structure look as follows: - -apps/ - Example applications -doc/ - Documentation -lib/ - Library code used by some applications -uip/ - uIP TCP/IP stack code -unix/ - uIP as a user space process under FreeBSD or Linux diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README deleted file mode 100644 index f88920952..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README +++ /dev/null @@ -1,2 +0,0 @@ -This directory contains a few example applications. They are not all -heavily tested, however. diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c deleted file mode 100644 index f845c7aa8..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c +++ /dev/null @@ -1,203 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -
-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/fade.png b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/fade.png deleted file mode 100644 index a9e69f75deda76937ede6e5d6d3bc94b8d43375e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b~!2~2_W@bbJDb50q$YKTtZeb8+WSBKa0w~B{ z;_2(kevOSoMA~wF^nu4fA=whwh!W@g+}zZ>5(ej@)Wnk16ovB4k_?5Aj8p}8Pv3y| zDXMuug;t&}jv*Y^OM4837z6~4=$X%RNd5c2`3sj!Z^-PEXJ*+>C@xH&c%{T_Whmnh n&4?5GJ&rV%a4+Vsxy|yzf%X2v&wqfbP0l+XkKD_%S1 diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml deleted file mode 100644 index 361cc1dc1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml +++ /dev/null @@ -1,35 +0,0 @@ -%!: /header.html -

File statistics

-
-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
%d%u.%u.%u.%u:%u%s%u%u%c %c
- - - - - - - - - - - - - - -
/index.html%! file-stats /index.html -
/files.shtml%! file-stats /files.shtml -
/tcp.shtml%! file-stats /tcp.shtml -
/stats.shtml%! file-stats /stats.shtml -
/style.css%! file-stats /style.css -
/404.html%! file-stats /404.html -
/fade.png%! file-stats /fade.png -
- -%!: /footer.html diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html deleted file mode 100644 index 290832ddc..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html deleted file mode 100644 index 0c3c4efa9..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Welcome to the uIP web server! - - - - -

- -
diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html deleted file mode 100644 index 7af64c8df..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - Welcome to the uIP web server! - - - - - - -
-

- These web pages are served by a small web server running on top of - the uIP embedded TCP/IP - stack. -

-

- Click on the links above for web server statistics. -

- - - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml deleted file mode 100644 index be857f9eb..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml +++ /dev/null @@ -1,5 +0,0 @@ -%!: /header.html -

System processes


- -%! processes -%!: /footer.html \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml deleted file mode 100644 index 7eb381af9..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,31 +0,0 @@ -%!: /header.html -

Network statistics

-
-
IDNamePriorityPoll handlerEvent handlerProcstate
-
-IP           Packets received
-             Packets sent
-	     Packets dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- -%!: /footer.html diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css deleted file mode 100644 index 089fe84f2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css +++ /dev/null @@ -1,92 +0,0 @@ -h1 -{ - text-align: center; - font-size:14pt; - font-family:arial,helvetica; - font-weight:bold; - padding:10px; -} - -body -{ - - background-color: #fffeec; - color:black; - - font-size:8pt; - font-family:arial,helvetica; -} - -.menu -{ - margin: 4px; - width:60%; - - padding:2px; - - border: solid 1px; - background-color: #fffcd2; - text-align:left; - - font-size:9pt; - font-family:arial,helvetica; -} - -div.menubox -{ - width: 25%; - border: 0; - float: left; -text-align: center; -} - -.contentblock -{ - margin: 4px; - width:60%; - - padding:2px; - - border: 1px dotted; - background-color: white; - - font-size:8pt; - font-family:arial,helvetica; - -} - -p.intro -{ - margin-left:20px; - margin-right:20px; - - font-size:10pt; -/* font-weight:bold; */ - font-family:arial,helvetica; -} - -p.clink -{ - font-size:12pt; - font-family:courier,monospace; - text-align:center; -} - -p.clink9 -{ - font-size:9pt; - font-family:courier,monospace; - text-align:center; -} - - -p -{ - padding-left:10px; -} - -p.right -{ - text-align:right; -} - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 2404aedf0..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,5 +0,0 @@ -%!: /header.html -

Current connections


- -%! tcp-connections -%!: /footer.html \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c deleted file mode 100644 index 29e5a1b96..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c +++ /dev/null @@ -1,607 +0,0 @@ -static const unsigned char data_processes_shtml[] = { - /* /processes.shtml */ - 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68, - 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, - 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x44, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4e, 0x61, 0x6d, 0x65, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, 0x6f, 0x6c, 0x6c, - 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, - 0x72, 0x6f, 0x63, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x73, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0}; - -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_files_shtml[] = { - /* /files.shtml */ - 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x31, - 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x3e, - 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, - 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, - 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, - 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, - 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, - 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, - 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, 0x21, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, - 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, - 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, - 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, - 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, - 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, - 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x30, - 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, 0x21, 0x20, - 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x20, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, - 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, - 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, - 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, - 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, - 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, - 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, - 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, - 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, - 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, - 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, - 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x2f, 0x73, - 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x3c, 0x2f, - 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, - 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3c, 0x2f, 0x74, - 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, - 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, - 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, - 0x74, 0x68, 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, - 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, - 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3e, 0x20, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, - 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x34, - 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, - 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, - 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, - 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, - 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, - 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, - 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, - 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, - 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, - 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x3e, 0x2f, 0x66, 0x61, - 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, - 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, - 0x70, 0x6e, 0x67, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, - 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, - 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, - 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, - 0x70, 0x6e, 0x67, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, - 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, - 0x6d, 0x6c, 0xa, 0}; - -static const unsigned char data_footer_html[] = { - /* /footer.html */ - 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_header_html[] = { - /* /header.html */ - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x49, 0x50, 0x20, 0x77, - 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, - 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, - 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, - 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, - 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, - 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, - 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, - 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, - 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, - 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, - 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, - 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, - 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, - 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, - 0x65, 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0xa, 0x20, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0xa, 0x20, - 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x49, 0x50, 0x20, 0x77, - 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, - 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, - 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, - 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, - 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, - 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, - 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, - 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, - 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, - 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, - 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, - 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, - 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, - 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, - 0x65, 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0xa, 0x20, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, - 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, - 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70, - 0x3e, 0xa, 0x20, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, - 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 0x67, 0x65, 0x73, 0x20, - 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x73, 0x6d, 0x61, 0x6c, - 0x6c, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, - 0xa, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, - 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, - 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, - 0x2f, 0x75, 0x69, 0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, - 0x20, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, - 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0xa, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0xa, - 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x70, 0x3e, 0xa, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, - 0x6e, 0x6b, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0xa, 0x20, 0x20, 0x3c, - 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0}; - -static const unsigned char data_style_css[] = { - /* /style.css */ - 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0, - 0x68, 0x31, 0x20, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x20, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, - 0x31, 0x34, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, - 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, - 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x70, - 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x31, 0x30, 0x70, - 0x78, 0x3b, 0x20, 0xa, 0x7d, 0xa, 0xa, 0x62, 0x6f, 0x64, - 0x79, 0xa, 0x7b, 0xa, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, - 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, 0x65, - 0x65, 0x63, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xa, 0xa, - 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, - 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, - 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, - 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa, 0x7d, 0xa, - 0xa, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0xa, 0x7b, 0xa, 0x20, - 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x34, - 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3a, 0x36, 0x30, 0x25, 0x3b, 0xa, 0xa, 0x20, 0x20, - 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x32, 0x70, - 0x78, 0x3b, 0xa, 0x9, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, - 0x20, 0x31, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, - 0x63, 0x64, 0x32, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, - 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65, - 0x66, 0x74, 0x3b, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x39, - 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, - 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, - 0x69, 0x63, 0x61, 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa, - 0x64, 0x69, 0x76, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, - 0x78, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3a, 0x20, 0x32, 0x35, 0x25, 0x3b, 0xa, 0x20, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x30, 0x3b, - 0xa, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x20, - 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xa, 0x74, 0x65, 0x78, 0x74, - 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0xa, 0x7b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x34, 0x70, 0x78, - 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, - 0x36, 0x30, 0x25, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x70, 0x61, - 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x32, 0x70, 0x78, 0x3b, - 0xa, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x3a, 0x20, 0x31, 0x70, 0x78, 0x20, 0x64, 0x6f, 0x74, 0x74, - 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, - 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3a, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x3b, - 0xa, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, - 0x69, 0x7a, 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20, - 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, - 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, - 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0x20, - 0x20, 0xa, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x69, 0x6e, - 0x74, 0x72, 0x6f, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, - 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0xa, 0x20, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, - 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x2f, 0x2a, 0x20, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x20, 0x2a, 0x2f, - 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, - 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, - 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x63, - 0x6c, 0x69, 0x6e, 0x6b, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, - 0x32, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, - 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x2c, 0x6d, 0x6f, 0x6e, - 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3b, 0x20, 0x20, 0xa, - 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, - 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, - 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x63, 0x6c, 0x69, 0x6e, - 0x6b, 0x39, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, - 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x39, 0x70, 0x74, - 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, - 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x2c, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x3b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x74, - 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, - 0xa, 0xa, 0x70, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x70, 0x61, - 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, - 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x7d, 0xa, 0xa, - 0x70, 0x2e, 0x72, 0x69, 0x67, 0x68, 0x74, 0xa, 0x7b, 0xa, - 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, - 0x67, 0x6e, 0x3a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x20, - 0xa, 0x7d, 0xa, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, - 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, 0x6d, 0x65, 0x72, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, - 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x74, 0x63, - 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, - 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, -0}; - -static const unsigned char data_fade_png[] = { - /* /fade.png */ - 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0, - 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00, - 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x4, - 00, 00, 00, 0xa, 0x8, 0x2, 00, 00, 00, 0x1c, - 0x99, 0x68, 0x59, 00, 00, 00, 0x9, 0x70, 0x48, 0x59, - 0x73, 00, 00, 0xb, 0x13, 00, 00, 0xb, 0x13, 0x1, - 00, 0x9a, 0x9c, 0x18, 00, 00, 00, 0x7, 0x74, 0x49, - 0x4d, 0x45, 0x7, 0xd6, 0x6, 0x8, 0x14, 0x1b, 0x39, 0xaf, - 0x5b, 0xc0, 0xe3, 00, 00, 00, 0x1d, 0x74, 0x45, 0x58, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 00, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4d, 0x50, - 0xef, 0x64, 0x25, 0x6e, 00, 00, 00, 0x3a, 0x49, 0x44, - 0x41, 0x54, 0x8, 0xd7, 0x75, 0x8c, 0x31, 0x12, 00, 0x10, - 0x10, 0xc4, 0x2e, 0x37, 0x9e, 0x40, 0x65, 0xfd, 0xff, 0x83, - 0xf4, 0xa, 0x1c, 0x8d, 0x54, 0x9b, 0xc9, 0xcc, 0x9a, 0x3d, - 0x90, 0x73, 0x71, 0x67, 0x91, 0xd4, 0x74, 0x36, 0xa9, 0x55, - 0x1, 0xf8, 0x29, 0x58, 0xc8, 0xbf, 0x48, 0xc4, 0x81, 0x74, - 0xb, 0xa3, 0xf, 0x7c, 0xdb, 0x4, 0xe8, 0x40, 0x5, 0xdf, - 0xa1, 0xf3, 0xfc, 0x73, 00, 00, 00, 00, 0x49, 0x45, - 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, - 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, - 0x30, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, - 0x22, 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, - 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, - 0x73, 0x65, 0x6e, 0x74, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, - 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, - 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, - 0xa, 0}; - -const struct httpd_fsdata_file file_processes_shtml[] = {{NULL, data_processes_shtml, data_processes_shtml + 17, sizeof(data_processes_shtml) - 17}}; - -const struct httpd_fsdata_file file_404_html[] = {{file_processes_shtml, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_files_shtml[] = {{file_404_html, data_files_shtml, data_files_shtml + 13, sizeof(data_files_shtml) - 13}}; - -const struct httpd_fsdata_file file_footer_html[] = {{file_files_shtml, data_footer_html, data_footer_html + 13, sizeof(data_footer_html) - 13}}; - -const struct httpd_fsdata_file file_header_html[] = {{file_footer_html, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_style_css[] = {{file_index_html, data_style_css, data_style_css + 11, sizeof(data_style_css) - 11}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_style_css, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -const struct httpd_fsdata_file file_fade_png[] = {{file_tcp_shtml, data_fade_png, data_fade_png + 10, sizeof(data_fade_png) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_fade_png, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -#define HTTPD_FS_ROOT file_stats_shtml - -#define HTTPD_FS_NUMFILES 10 diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c deleted file mode 100644 index e808688d2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c +++ /dev/null @@ -1,338 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt deleted file mode 100644 index 7a97704ea..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt +++ /dev/null @@ -1,98 +0,0 @@ -* A new API: protosockets that are similar to BSD sockets but does not - require any underlying multithreading system. - -* Very rudimentary IPv6 support - -* New application: DHCP client. Web server rewritten with protosockets. - -* Removed uIP zero-copy functionality in order to simplify uIP device - driver coding: outbound packets are now *always* stored in full in - the uip_buf buffer. - -* Checksum computation is now part of uip.c, but it still is possible - to implement them in assembly code by specifying a configuration - option. Checksum code now runs on architectures with 2-byte alignment. - -* Added TCP persistent timer. - -* Made all IP address representations use the new uip_ipaddr_ip - datatype for clarity. - -* Updated window behavior so that sending to a host with a small open - window works better now. - -* UDP API change: uip_udp_new() now takes port numbers in network byte - order like TCP functions. - -* Allow reception of packets when no IP address is configured to make - DHCP work. - -* Moved Ethernet address into main uIP module from ARP module. - -* Made constants explicit #defines and moved them out of the code - (header sizes, TCP options, TCP header length field). - -* If uip_len is less than that reported by the IP header, the packet - is discarded. If uip_len is greater than the length reported by the - IP header, uip_len is adjusted. - -* Moved header size definitions into header file. - -* Added uIP call for polling an application without triggering any - timer events. Removed redundant assignments of uip_len and uip_slen. - -* Removed compiler warning about icmp_input label being defined when - UIP_PINGADDRCONF was not used. - -* Added UIP_APPDATA_SIZE macro that holds the available buffer size - for user data. - -* Added uip_udp_bind() call. - -* Moved checksum code into main uIP module. - -* Switched the TCP, UDP and IP header structures to be structs rather - than typedefs. - -* Prefixed TCP state names with UIP_ to avoid name space - contamination. - -* Changed declarations of uip_appdatap and friends to void * to avoid - explicit typecasts. - -* Bugfixes - - o TCP: Fixed bug with high byte of peer window size. - - o TCP: Fixed bug that in some cases prevented concurrent reception and - transmission of TCP data. - - o TCP: uip_connect() didn't correctly calculate age of TIME_WAIT - connections. - - o TCP: Array index for uip_conns[] array was out of bounds in - comparison. Comparison changed to make index within bounds. - - o TCP: if the remote host crashes and tries to reestablish an old - connection, uIP should respond with an ACK with the correct - sequence and acknowledgment numbers, to which the remote host - should respond with an ACK. uIP did not respond with the correct - ACK. - - o TCP: Fixed check for SYNACK segment: now checks only relevant TCP - control flags and discards flags reserved for future expansion. - - o TCP: Fixed bug where uIP did not inform application that a connection - had been aborted during an active open. - - o TCP: FIN segment was accepted even though application had stopped - incoming data with uip_stop(). - - o TCP: A FINACK segment would not always correctly acknowledge data. - - o UDP: checksums are now calculated after all fields have been - filled in. - - o UDP: network byte order on lastport in uip_udp_new(). - - o IP: memset() bugs in IP fragment reassembly code fixed. diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include deleted file mode 100644 index 43ba24744..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include +++ /dev/null @@ -1,47 +0,0 @@ - - -ifdef APPS - APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP)) - -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP)) - CFLAGS += $(addprefix -I../apps/,$(APPS)) -endif - -ifndef CCDEP - CCDEP = $(CC) -endif -ifndef CCDEPCFLAGS - CCDEPCFLAGS = $(CFLAGS) -endif -ifndef OBJECTDIR - OBJECTDIR = obj -endif - -ifeq (${wildcard $(OBJECTDIR)},) - DUMMY := ${shell mkdir $(OBJECTDIR)} -endif - - -vpath %.c . ../uip ../lib $(APPDIRS) - -$(OBJECTDIR)/%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ - -$(OBJECTDIR)/%.d: %.c - @set -e; rm -f $@; \ - $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ - -UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c - - -ifneq ($(MAKECMDGOALS),clean) --include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \ - $(APP_SOURCES:.c=.d)) -endif - -uip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ - -apps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h deleted file mode 100644 index dae68745f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \defgroup clock Clock interface - * - * The clock interface is the interface between the \ref timer "timer library" - * and the platform specific clock functionality. The clock - * interface must be implemented for each platform that uses the \ref - * timer "timer library". - * - * The clock interface does only one this: it measures time. The clock - * interface provides a macro, CLOCK_SECOND, which corresponds to one - * second of system time. - * - * \sa \ref timer "Timer library" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "clock-arch.h" - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init(void); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -clock_time_t clock_time(void); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND (clock_time_t)32 -#endif - -#endif /* __CLOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h deleted file mode 100644 index 9dff03d09..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on the "Labels as - * values" feature of gcc - * \author - * Adam Dunkels - * - * This implementation of local continuations is based on a special - * feature of the GCC C compiler called "labels as values". This - * feature allows assigning pointers with the address of the code - * corresponding to a particular C label. - * - * For more information, see the GCC documentation: - * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html - * - * Thanks to dividuum for finding the nice local scope label - * implementation. - */ - -#ifndef __LC_ADDRLABELS_H__ -#define __LC_ADDRLABELS_H__ - -/** \hideinitializer */ -typedef void * lc_t; - -#define LC_INIT(s) s = NULL - - -#define LC_RESUME(s) \ - do { \ - if(s != NULL) { \ - goto *s; \ - } \ - } while(0) - -#define LC_SET(s) \ - do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0) - -#define LC_END(s) - -#endif /* __LC_ADDRLABELS_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c deleted file mode 100644 index 0c390d0a8..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include -#include - -#include "uipopt.h" -#include "psock.h" -#include "uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void -buf_setup(struct psock_buf *buf, - u8_t *bufptr, u16_t bufsize) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufdata(struct psock_buf *buf, u16_t len, - u8_t **dataptr, u16_t *datalen) -{ - ( void ) len; - if(*datalen < buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } else if(*datalen == buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } else { - memcpy(buf->ptr, *dataptr, buf->left); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufto(register struct psock_buf *buf, u8_t endmarker, - register u8_t **dataptr, register u16_t *datalen) -{ - u8_t c; - while(buf->left > 0 && *datalen > 0) { - c = *buf->ptr = **dataptr; - ++*dataptr; - ++buf->ptr; - --*datalen; - --buf->left; - - if(c == endmarker) { - return BUF_FOUND; - } - } - - if(*datalen == 0) { - return BUF_NOT_FOUND; - } - - while(*datalen > 0) { - c = **dataptr; - --*datalen; - ++*dataptr; - - if(c == endmarker) { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} -/*---------------------------------------------------------------------------*/ -static char -send_data(register struct psock *s) -{ - if(s->state != STATE_DATA_SENT || uip_rexmit()) { - if(s->sendlen > uip_mss()) { - uip_send(s->sendptr, uip_mss()); - } else { - uip_send(s->sendptr, s->sendlen); - } - s->state = STATE_DATA_SENT; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static char -data_acked(register struct psock *s) -{ - if(s->state == STATE_DATA_SENT && uip_acked()) { - if(s->sendlen > uip_mss()) { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } else { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - s->state = STATE_ACKED; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_send(register struct psock *s, const char *buf, - unsigned int len)) -{ - PT_BEGIN(&s->psockpt); - - /* If there is no data to send, we exit immediately. */ - if(len == 0) { - PT_EXIT(&s->psockpt); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = (unsigned char*)buf; - s->sendlen = len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while(s->sendlen > 0) { - - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_generator_send(register struct psock *s, - unsigned short (*generate)(void *), void *arg)) -{ - PT_BEGIN(&s->psockpt); - - /* Ensure that there is a generator function to call. */ - if(generate == NULL) { - PT_EXIT(&s->psockpt); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate(arg); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do { - /* Call the generator function again if we are called to perform a - retransmission. */ - if(uip_rexmit()) { - generate(arg); - } - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } while(s->sendlen > 0); - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -u16_t -psock_datalen(struct psock *psock) -{ - return psock->bufsize - psock->buf.left; -} -/*---------------------------------------------------------------------------*/ -char -psock_newdata(struct psock *s) -{ - if(s->readlen > 0) { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } else if(s->state == STATE_READ) { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } else if(uip_newdata()) { - /* There is new data that has not been consumed. */ - return 1; - } else { - /* There is no new data. */ - return 0; - } -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char*)psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while((buf_bufto(&psock->buf, c, - &psock->readptr, - &psock->readlen) & BUF_FOUND) == 0); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readbuf(register struct psock *psock)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char * ) psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - printf("Waited for newdata\n"); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while(buf_bufdata(&psock->buf, psock->bufsize, - &psock->readptr, - &psock->readlen) != BUF_FULL); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -void -psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup(&psock->buf, (unsigned char*) buffer, buffersize); - PT_INIT(&psock->pt); - PT_INIT(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c deleted file mode 100644 index 8c270b233..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c +++ /dev/null @@ -1,127 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include "clock.h" -#include "timer.h" - -/*---------------------------------------------------------------------------*/ -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void -timer_set(struct timer *t, clock_time_t interval) -{ - t->interval = interval; - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_rester() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void -timer_reset(struct timer *t) -{ - t->start += t->interval; -} -/*---------------------------------------------------------------------------*/ -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void -timer_restart(struct timer *t) -{ - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int -timer_expired(struct timer *t) -{ - return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval; -} -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c deleted file mode 100644 index 2a85a6d9a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-fw.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipfw uIP packet forwarding - * @{ - * - */ - -/** - * \file - * uIP packet forwarding. - * \author Adam Dunkels - * - * This file implements a number of simple functions which do packet - * forwarding over multiple network interfaces with uIP. - * - */ - -#include "uip.h" -#include "uip_arch.h" -#include "uip-fw.h" - -#include /* for memcpy() */ - -/* - * The list of registered network interfaces. - */ -static struct uip_fw_netif *netifs = NULL; - -/* - * A pointer to the default network interface. - */ -static struct uip_fw_netif *defaultnetif = NULL; - -struct tcpip_hdr { - /* IP header. */ - u8_t vhl, - tos; - u16_t len, - ipid, - ipoffset; - u8_t ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -struct icmpip_hdr { - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; - u16_t id, seqno; - u8_t payload[1]; -} PACK_STRUCT_END; - -/* ICMP ECHO. */ -#define ICMP_ECHO 8 - -/* ICMP TIME-EXCEEDED. */ -#define ICMP_TE 11 - -/* - * Pointer to the TCP/IP headers of the packet in the uip_buf buffer. - */ -#define BUF ((struct tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) - -/* - * Pointer to the ICMP/IP headers of the packet in the uip_buf buffer. - */ -#define ICMPBUF ((struct icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) - -/* - * Certain fields of an IP packet that are used for identifying - * duplicate packets. - */ -struct fwcache_entry { - u16_t timer; - - u16_t srcipaddr[2]; - u16_t destipaddr[2]; - u16_t ipid; - u8_t proto; - u8_t unused; - -#if notdef - u16_t payload[2]; -#endif - -#if UIP_REASSEMBLY > 0 - u16_t len, offset; -#endif -}; - -/* - * The number of packets to remember when looking for duplicates. - */ -#ifdef UIP_CONF_FWCACHE_SIZE -#define FWCACHE_SIZE UIP_CONF_FWCACHE_SIZE -#else -#define FWCACHE_SIZE 2 -#endif - - -/* - * A cache of packet header fields which are used for - * identifying duplicate packets. - */ -static struct fwcache_entry fwcache[FWCACHE_SIZE]; - -/** - * \internal - * The time that a packet cache is active. - */ -#define FW_TIME 20 - -/*------------------------------------------------------------------------------*/ -/** - * Initialize the uIP packet forwarding module. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_init(void) -{ - struct uip_fw_netif *t; - defaultnetif = NULL; - while(netifs != NULL) { - t = netifs; - netifs = netifs->next; - t->next = NULL; - } -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Check if an IP address is within the network defined by an IP - * address and a netmask. - * - * \param ipaddr The IP address to be checked. - * \param netipaddr The IP address of the network. - * \param netmask The netmask of the network. - * - * \return Non-zero if IP address is in network, zero otherwise. - */ -/*------------------------------------------------------------------------------*/ -static unsigned char -ipaddr_maskcmp(u16_t *ipaddr, u16_t *netipaddr, u16_t *netmask) -{ - return (ipaddr[0] & netmask [0]) == (netipaddr[0] & netmask[0]) && - (ipaddr[1] & netmask[1]) == (netipaddr[1] & netmask[1]); -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Send out an ICMP TIME-EXCEEDED message. - * - * This function replaces the packet in the uip_buf buffer with the - * ICMP packet. - */ -/*------------------------------------------------------------------------------*/ -static void -time_exceeded(void) -{ - u16_t tmp16; - - /* We don't send out ICMP errors for ICMP messages. */ - if(ICMPBUF->proto == UIP_PROTO_ICMP) { - uip_len = 0; - return; - } - /* Copy fields from packet header into payload of this ICMP packet. */ - memcpy(&(ICMPBUF->payload[0]), ICMPBUF, 28); - - /* Set the ICMP type and code. */ - ICMPBUF->type = ICMP_TE; - ICMPBUF->icode = 0; - - /* Calculate the ICMP checksum. */ - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_chksum((u16_t *)&(ICMPBUF->type), 36); - - /* Set the IP destination address to be the source address of the - original packet. */ - tmp16= BUF->destipaddr[0]; - BUF->destipaddr[0] = BUF->srcipaddr[0]; - BUF->srcipaddr[0] = tmp16; - tmp16 = BUF->destipaddr[1]; - BUF->destipaddr[1] = BUF->srcipaddr[1]; - BUF->srcipaddr[1] = tmp16; - - /* Set our IP address as the source address. */ - BUF->srcipaddr[0] = uip_hostaddr[0]; - BUF->srcipaddr[1] = uip_hostaddr[1]; - - /* The size of the ICMP time exceeded packet is 36 + the size of the - IP header (20) = 56. */ - uip_len = 56; - ICMPBUF->len[0] = 0; - ICMPBUF->len[1] = uip_len; - - /* Fill in the other fields in the IP header. */ - ICMPBUF->vhl = 0x45; - ICMPBUF->tos = 0; - ICMPBUF->ipoffset[0] = ICMPBUF->ipoffset[1] = 0; - ICMPBUF->ttl = UIP_TTL; - ICMPBUF->proto = UIP_PROTO_ICMP; - - /* Calculate IP checksum. */ - ICMPBUF->ipchksum = 0; - ICMPBUF->ipchksum = ~(uip_ipchksum()); - - -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Register a packet in the forwarding cache so that it won't be - * forwarded again. - */ -/*------------------------------------------------------------------------------*/ -static void -fwcache_register(void) -{ - struct fwcache_entry *fw; - int i, oldest; - - oldest = FW_TIME; - fw = NULL; - - /* Find the oldest entry in the cache. */ - for(i = 0; i < FWCACHE_SIZE; ++i) { - if(fwcache[i].timer == 0) { - fw = &fwcache[i]; - break; - } else if(fwcache[i].timer <= oldest) { - fw = &fwcache[i]; - oldest = fwcache[i].timer; - } - } - - fw->timer = FW_TIME; - fw->ipid = BUF->ipid; - fw->srcipaddr[0] = BUF->srcipaddr[0]; - fw->srcipaddr[1] = BUF->srcipaddr[1]; - fw->destipaddr[0] = BUF->destipaddr[0]; - fw->destipaddr[1] = BUF->destipaddr[1]; - fw->proto = BUF->proto; -#if notdef - fw->payload[0] = BUF->srcport; - fw->payload[1] = BUF->destport; -#endif -#if UIP_REASSEMBLY > 0 - fw->len = BUF->len; - fw->offset = BUF->ipoffset; -#endif -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Find a network interface for the IP packet in uip_buf. - */ -/*------------------------------------------------------------------------------*/ -static struct uip_fw_netif * -find_netif(void) -{ - struct uip_fw_netif *netif; - - /* Walk through every network interface to check for a match. */ - for(netif = netifs; netif != NULL; netif = netif->next) { - if(ipaddr_maskcmp(BUF->destipaddr, netif->ipaddr, - netif->netmask)) { - /* If there was a match, we break the loop. */ - return netif; - } - } - - /* If no matching netif was found, we use default netif. */ - return defaultnetif; -} -/*------------------------------------------------------------------------------*/ -/** - * Output an IP packet on the correct network interface. - * - * The IP packet should be present in the uip_buf buffer and its - * length in the global uip_len variable. - * - * \retval UIP_FW_ZEROLEN Indicates that a zero-length packet - * transmission was attempted and that no packet was sent. - * - * \retval UIP_FW_NOROUTE No suitable network interface could be found - * for the outbound packet, and the packet was not sent. - * - * \return The return value from the actual network interface output - * function is passed unmodified as a return value. - */ -/*------------------------------------------------------------------------------*/ -u8_t -uip_fw_output(void) -{ - struct uip_fw_netif *netif; - - if(uip_len == 0) { - return UIP_FW_ZEROLEN; - } - - fwcache_register(); - -#if UIP_BROADCAST - /* Link local broadcasts go out on all interfaces. */ - if(/*BUF->proto == UIP_PROTO_UDP &&*/ - BUF->destipaddr[0] == 0xffff && - BUF->destipaddr[1] == 0xffff) { - if(defaultnetif != NULL) { - defaultnetif->output(); - } - for(netif = netifs; netif != NULL; netif = netif->next) { - netif->output(); - } - return UIP_FW_OK; - } -#endif /* UIP_BROADCAST */ - - netif = find_netif(); - /* printf("uip_fw_output: netif %p ->output %p len %d\n", netif, - netif->output, - uip_len);*/ - - if(netif == NULL) { - return UIP_FW_NOROUTE; - } - /* If we now have found a suitable network interface, we call its - output function to send out the packet. */ - return netif->output(); -} -/*------------------------------------------------------------------------------*/ -/** - * Forward an IP packet in the uip_buf buffer. - * - * - * - * \return UIP_FW_FORWARDED if the packet was forwarded, UIP_FW_LOCAL if - * the packet should be processed locally. - */ -/*------------------------------------------------------------------------------*/ -u8_t -uip_fw_forward(void) -{ - struct fwcache_entry *fw; - - /* First check if the packet is destined for ourselves and return 0 - to indicate that the packet should be processed locally. */ - if(BUF->destipaddr[0] == uip_hostaddr[0] && - BUF->destipaddr[1] == uip_hostaddr[1]) { - return UIP_FW_LOCAL; - } - - /* If we use ping IP address configuration, and our IP address is - not yet configured, we should intercept all ICMP echo packets. */ -#if UIP_PINGADDRCONF - if((uip_hostaddr[0] | uip_hostaddr[1]) == 0 && - BUF->proto == UIP_PROTO_ICMP && - ICMPBUF->type == ICMP_ECHO) { - return UIP_FW_LOCAL; - } -#endif /* UIP_PINGADDRCONF */ - - /* Check if the packet is in the forwarding cache already, and if so - we drop it. */ - - for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) { - if(fw->timer != 0 && -#if UIP_REASSEMBLY > 0 - fw->len == BUF->len && - fw->offset == BUF->ipoffset && -#endif - fw->ipid == BUF->ipid && - fw->srcipaddr[0] == BUF->srcipaddr[0] && - fw->srcipaddr[1] == BUF->srcipaddr[1] && - fw->destipaddr[0] == BUF->destipaddr[0] && - fw->destipaddr[1] == BUF->destipaddr[1] && -#if notdef - fw->payload[0] == BUF->srcport && - fw->payload[1] == BUF->destport && -#endif - fw->proto == BUF->proto) { - /* Drop packet. */ - return UIP_FW_FORWARDED; - } - } - - /* If the TTL reaches zero we produce an ICMP time exceeded message - in the uip_buf buffer and forward that packet back to the sender - of the packet. */ - if(BUF->ttl <= 1) { - /* No time exceeded for broadcasts and multicasts! */ - if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) { - return UIP_FW_LOCAL; - } - time_exceeded(); - } - - /* Decrement the TTL (time-to-live) value in the IP header */ - BUF->ttl = BUF->ttl - 1; - - /* Update the IP checksum. */ - if(BUF->ipchksum >= HTONS(0xffff - 0x0100)) { - BUF->ipchksum = BUF->ipchksum + HTONS(0x0100) + 1; - } else { - BUF->ipchksum = BUF->ipchksum + HTONS(0x0100); - } - - if(uip_len > 0) { - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]; - uip_fw_output(); - } - -#if UIP_BROADCAST - if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) { - return UIP_FW_LOCAL; - } -#endif /* UIP_BROADCAST */ - - /* Return non-zero to indicate that the packet was forwarded and that no - other processing should be made. */ - return UIP_FW_FORWARDED; -} -/*------------------------------------------------------------------------------*/ -/** - * Register a network interface with the forwarding module. - * - * \param netif A pointer to the network interface that is to be - * registered. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_register(struct uip_fw_netif *netif) -{ - netif->next = netifs; - netifs = netif; -} -/*------------------------------------------------------------------------------*/ -/** - * Register a default network interface. - * - * All packets that don't go out on any of the other interfaces will - * be routed to the default interface. - * - * \param netif A pointer to the network interface that is to be - * registered. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_default(struct uip_fw_netif *netif) -{ - defaultnetif = netif; -} -/*------------------------------------------------------------------------------*/ -/** - * Perform periodic processing. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_periodic(void) -{ - struct fwcache_entry *fw; - for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) { - if(fw->timer > 0) { - --fw->timer; - } - } -} -/*------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h deleted file mode 100644 index e854ecefe..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h +++ /dev/null @@ -1,176 +0,0 @@ -/** - * \addtogroup uipfw - * @{ - */ - -/** - * \file - * uIP packet forwarding header file. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-fw.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#ifndef __UIP_FW_H__ -#define __UIP_FW_H__ - -#include "uip.h" - -/** - * Representation of a uIP network interface. - */ -struct uip_fw_netif { - struct uip_fw_netif *next; /**< Pointer to the next interface when - linked in a list. */ - u16_t ipaddr[2]; /**< The IP address of this interface. */ - u16_t netmask[2]; /**< The netmask of the interface. */ - u8_t (* output)(void); - /**< A pointer to the function that - sends a packet. */ -}; - -/** - * Intantiating macro for a uIP network interface. - * - * Example: - \code - struct uip_fw_netif slipnetif = - {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)}; - \endcode - * \param ip1,ip2,ip3,ip4 The IP address of the network interface. - * - * \param nm1,nm2,nm3,nm4 The netmask of the network interface. - * - * \param outputfunc A pointer to the output function of the network interface. - * - * \hideinitializer - */ -#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \ - NULL, \ - {HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \ - {HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \ - outputfunc - -/** - * Set the IP address of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address. - * - * \hideinitializer - */ -#define uip_fw_setipaddr(netif, addr) \ - do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \ - (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0) -/** - * Set the netmask of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address representing the netmask. - * - * \hideinitializer - */ -#define uip_fw_setnetmask(netif, addr) \ - do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \ - (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0) - -void uip_fw_init(void); -u8_t uip_fw_forward(void); -u8_t uip_fw_output(void); -void uip_fw_register(struct uip_fw_netif *netif); -void uip_fw_default(struct uip_fw_netif *netif); -void uip_fw_periodic(void); - - -/** - * A non-error message that indicates that a packet should be - * processed locally. - * - * \hideinitializer - */ -#define UIP_FW_LOCAL 0 - -/** - * A non-error message that indicates that something went OK. - * - * \hideinitializer - */ -#define UIP_FW_OK 0 - -/** - * A non-error message that indicates that a packet was forwarded. - * - * \hideinitializer - */ -#define UIP_FW_FORWARDED 1 - -/** - * A non-error message that indicates that a zero-length packet - * transmission was attempted, and that no packet was sent. - * - * \hideinitializer - */ -#define UIP_FW_ZEROLEN 2 - -/** - * An error message that indicates that a packet that was too large - * for the outbound network interface was detected. - * - * \hideinitializer - */ -#define UIP_FW_TOOLARGE 3 - -/** - * An error message that indicates that no suitable interface could be - * found for an outbound packet. - * - * \hideinitializer - */ -#define UIP_FW_NOROUTE 4 - -/** - * An error message that indicates that a packet that should be - * forwarded or output was dropped. - * - * \hideinitializer - */ -#define UIP_FW_DROPPED 5 - - -#endif /* __UIP_FW_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c deleted file mode 100644 index 6920960f6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \file - * Database of link-local neighbors, used by IPv6 code and - * to be used by a future ARP code rewrite. - * \author - * Adam Dunkels - */ - -#include "uip-neighbor.h" - -#include -#include - -#define MAX_TIME 128 - -#ifdef UIP_NEIGHBOR_CONF_ENTRIES -#define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES -#else /* UIP_NEIGHBOR_CONF_ENTRIES */ -#define ENTRIES 8 -#endif /* UIP_NEIGHBOR_CONF_ENTRIES */ - -struct neighbor_entry { - uip_ipaddr_t ipaddr; - struct uip_neighbor_addr addr; - u8_t time; -}; -static struct neighbor_entry entries[ENTRIES]; - -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_init(void) -{ - int i; - - for(i = 0; i < ENTRIES; ++i) { - entries[i].time = MAX_TIME; - } -} -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_periodic(void) -{ - int i; - - for(i = 0; i < ENTRIES; ++i) { - if(entries[i].time < MAX_TIME) { - entries[i].time++; - } - } -} -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr) -{ - int i, oldest; - u8_t oldest_time; - - printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", - addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3], - addr->addr.addr[4], addr->addr.addr[5]); - - /* Find the first unused entry or the oldest used entry. */ - oldest_time = 0; - oldest = 0; - for(i = 0; i < ENTRIES; ++i) { - if(entries[i].time == MAX_TIME) { - oldest = i; - break; - } - if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) { - oldest = i; - break; - } - if(entries[i].time > oldest_time) { - oldest = i; - oldest_time = entries[i].time; - } - } - - /* Use the oldest or first free entry (either pointed to by the - "oldest" variable). */ - entries[oldest].time = 0; - uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr); - memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr)); -} -/*---------------------------------------------------------------------------*/ -static struct neighbor_entry * -find_entry(uip_ipaddr_t ipaddr) -{ - int i; - - for(i = 0; i < ENTRIES; ++i) { - if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) { - return &entries[i]; - } - } - return NULL; -} -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_update(uip_ipaddr_t ipaddr) -{ - struct neighbor_entry *e; - - e = find_entry(ipaddr); - if(e != NULL) { - e->time = 0; - } -} -/*---------------------------------------------------------------------------*/ -struct uip_neighbor_addr * -uip_neighbor_lookup(uip_ipaddr_t ipaddr) -{ - struct neighbor_entry *e; - - e = find_entry(ipaddr); - if(e != NULL) { - /* printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", - e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3], - e->addr.addr.addr[4], e->addr.addr.addr[5]);*/ - - return &e->addr; - } - return NULL; -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h deleted file mode 100644 index aca096f2c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \file - * Header file for database of link-local neighbors, used by - * IPv6 code and to be used by future ARP code. - * \author - * Adam Dunkels - */ - -#ifndef __UIP_NEIGHBOR_H__ -#define __UIP_NEIGHBOR_H__ - -#include "uip.h" - -struct uip_neighbor_addr { -#if UIP_NEIGHBOR_CONF_ADDRTYPE - UIP_NEIGHBOR_CONF_ADDRTYPE addr; -#else - struct uip_eth_addr addr; -#endif -}; - -void uip_neighbor_init(void); -void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr); -void uip_neighbor_update(uip_ipaddr_t ipaddr); -struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr); -void uip_neighbor_periodic(void); - -#endif /* __UIP-NEIGHBOR_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c deleted file mode 100644 index 639b9fcd5..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include - -#include "uip-split.h" -#include "uip.h" -#include "uip-fw.h" -#include "uip_arch.h" - - - -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) - -/*-----------------------------------------------------------------------------*/ -void -uip_split_output(void) -{ - u16_t tcplen, len1, len2; - - /* We only try to split maximum sized TCP segments. */ - if(BUF->proto == UIP_PROTO_TCP && - uip_len == UIP_BUFSIZE - UIP_LLH_LEN) { - - tcplen = uip_len - UIP_TCPIP_HLEN; - /* Split the segment in two. If the original packet length was - odd, we make the second packet one byte larger. */ - len1 = len2 = tcplen / 2; - if(len1 + len2 < tcplen) { - ++len2; - } - - /* Create the first packet. This is done by altering the length - field of the IP header and updating the checksums. */ - uip_len = len1 + UIP_TCPIP_HLEN; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; -#endif /* UIP_CONF_IPV6 */ - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if !UIP_CONF_IPV6 - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - /* Transmit the first packet. */ - /* uip_fw_output();*/ - tcpip_output(); - - /* Now, create the second packet. To do this, it is not enough to - just alter the length field, but we must also update the TCP - sequence number and point the uip_appdata to a new place in - memory. This place is detemined by the length of the first - packet (len1). */ - uip_len = len2 + UIP_TCPIP_HLEN; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; -#endif /* UIP_CONF_IPV6 */ - - /* uip_appdata += len1;*/ - memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2); - - uip_add32(BUF->seqno, len1); - BUF->seqno[0] = uip_acc32[0]; - BUF->seqno[1] = uip_acc32[1]; - BUF->seqno[2] = uip_acc32[2]; - BUF->seqno[3] = uip_acc32[3]; - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if !UIP_CONF_IPV6 - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - /* Transmit the second packet. */ - /* uip_fw_output();*/ - tcpip_output(); - } else { - /* uip_fw_output();*/ - tcpip_output(); - } - -} -/*-----------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h deleted file mode 100644 index 446e19200..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipsplit uIP TCP throughput booster hack - * @{ - * - * The basic uIP TCP implementation only allows each TCP connection to - * have a single TCP segment in flight at any given time. Because of - * the delayed ACK algorithm employed by most TCP receivers, uIP's - * limit on the amount of in-flight TCP segments seriously reduces the - * maximum achievable throughput for sending data from uIP. - * - * The uip-split module is a hack which tries to remedy this - * situation. By splitting maximum sized outgoing TCP segments into - * two, the delayed ACK algorithm is not invoked at TCP - * receivers. This improves the throughput when sending data from uIP - * by orders of magnitude. - * - * The uip-split module uses the uip-fw module (uIP IP packet - * forwarding) for sending packets. Therefore, the uip-fw module must - * be set up with the appropriate network interfaces for this module - * to work. - */ - - -/** - * \file - * Module for splitting outbound TCP segments in two to avoid the - * delayed ACK throughput degradation. - * \author - * Adam Dunkels - * - */ - -#ifndef __UIP_SPLIT_H__ -#define __UIP_SPLIT_H__ - -/** - * Handle outgoing packets. - * - * This function inspects an outgoing packet in the uip_buf buffer and - * sends it out using the uip_fw_output() function. If the packet is a - * full-sized TCP segment it will be split into two segments and - * transmitted separately. This function should be called instead of - * the actual device driver output function, or the uip_fw_output() - * function. - * - * The headers of the outgoing packet is assumed to be in the uip_buf - * buffer and the payload is assumed to be wherever uip_appdata - * points. The length of the outgoing packet is assumed to be in the - * uip_len variable. - * - */ -void uip_split_output(void); - -#endif /* __UIP_SPLIT_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c deleted file mode 100644 index bac2527c1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c +++ /dev/null @@ -1,1908 +0,0 @@ -#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/ - -/** - * \defgroup uip The uIP TCP/IP stack - * @{ - * - * uIP is an implementation of the TCP/IP protocol stack intended for - * small 8-bit and 16-bit microcontrollers. - * - * uIP provides the necessary protocols for Internet communication, - * with a very small code footprint and RAM requirements - the uIP - * code size is on the order of a few kilobytes and RAM usage is on - * the order of a few hundred bytes. - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ - -#include "uip.h" -#include "uipopt.h" -#include "uip_arch.h" - -#if UIP_CONF_IPV6 -#include "uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ -/* Variable definitions. */ - - -/* The IP address of this host. If it is defined to be fixed (by - setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set - here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 -const uip_ipaddr_t uip_hostaddr = - {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), - HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; -const uip_ipaddr_t uip_draddr = - {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), - HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; -const uip_ipaddr_t uip_netmask = - {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), - HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; -#else -uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -static const uip_ipaddr_t all_ones_addr = -#if UIP_CONF_IPV6 - {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; -#else /* UIP_CONF_IPV6 */ - {0xffff,0xffff}; -#endif /* UIP_CONF_IPV6 */ -static const uip_ipaddr_t all_zeroes_addr = -#if UIP_CONF_IPV6 - {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; -#else /* UIP_CONF_IPV6 */ - {0x0000,0x0000}; -#endif /* UIP_CONF_IPV6 */ - -#if UIP_FIXEDETHADDR -const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, - UIP_ETHADDR1, - UIP_ETHADDR2, - UIP_ETHADDR3, - UIP_ETHADDR4, - UIP_ETHADDR5}}; -#else -struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}; -#endif - -#ifndef UIP_CONF_EXTERNAL_BUFFER - -#ifdef __ICCARM__ - #pragma data_alignment=4 - u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains incoming packets. */ -#else - u8_t uip_buf[UIP_BUFSIZE + 2] ALIGN_STRUCT_END; /* The packet buffer that contains incoming packets. */ -#endif - -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -void *uip_appdata; /* The uip_appdata pointer points to - application data. */ -void *uip_sappdata; /* The uip_appdata pointer points to - the application data which is to - be sent. */ -#if UIP_URGDATA > 0 -void *uip_urgdata; /* The uip_urgdata pointer points to - urgent data (out-of-band data), if - present. */ -u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -u16_t uip_len, uip_slen; - /* The uip_len is either 8 or 16 bits, - depending on the maximum packet - size. */ - -u8_t uip_flags; /* The uip_flags variable is used for - communication between the TCP/IP stack - and the application program. */ -struct uip_conn *uip_conn; /* uip_conn always points to the current - connection. */ - -struct uip_conn uip_conns[UIP_CONNS]; - /* The uip_conns array holds all TCP - connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - /* The uip_listenports list all currently - listning ports. */ -#if UIP_UDP -struct uip_udp_conn *uip_udp_conn; -struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -static u16_t ipid; /* Ths ipid variable is an increasing - number that is used for the IP ID - field. */ - -void uip_setipid(u16_t id) { ipid = id; } - -static u8_t iss[4]; /* The iss variable is used for the TCP - initial sequence number. */ - -#if UIP_ACTIVE_OPEN -static u16_t lastport; /* Keeps track of the last port used for - a new connection. */ -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[4]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S (1 << 6) - -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - - -/* Macros. */ -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0]) -#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) - - -#if UIP_STATISTICS == 1 -struct uip_stats uip_stat; -#define UIP_STAT(s) s -#else -#define UIP_STAT(s) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 -#include -void uip_log(char *msg); -#define UIP_LOG(m) uip_log(m) -#else -#define UIP_LOG(m) -#endif /* UIP_LOGGING == 1 */ - -#if ! UIP_ARCH_ADD32 -void -uip_add32(u8_t *op32, u16_t op16) -{ - uip_acc32[3] = op32[3] + (op16 & 0xff); - uip_acc32[2] = op32[2] + (op16 >> 8); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if(uip_acc32[2] < (op16 >> 8)) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - - - if(uip_acc32[3] < (op16 & 0xff)) { - ++uip_acc32[2]; - if(uip_acc32[2] == 0) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - } -} - -#endif /* UIP_ARCH_ADD32 */ - -#if ! UIP_ARCH_CHKSUM -/*---------------------------------------------------------------------------*/ -static u16_t -chksum(u16_t sum, const u8_t *data, u16_t len) -{ - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while(dataptr < last_byte) { /* At least two more bytes */ - t = (dataptr[0] << 8) + dataptr[1]; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - dataptr += 2; - } - - if(dataptr == last_byte) { - t = (dataptr[0] << 8) + 0; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; -} -/*---------------------------------------------------------------------------*/ -u16_t -uip_chksum(u16_t *data, u16_t len) -{ - return htons(chksum(0, (u8_t *)data, len)); -} -/*---------------------------------------------------------------------------*/ -#ifndef UIP_ARCH_IPCHKSUM -u16_t -uip_ipchksum(void) -{ - u16_t sum; - - sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN); - DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum); - return (sum == 0) ? 0xffff : htons(sum); -} -#endif -/*---------------------------------------------------------------------------*/ -static u16_t -upper_layer_chksum(u8_t proto) -{ - u16_t upper_layer_len; - u16_t sum; - -#if UIP_CONF_IPV6 - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]); -#else /* UIP_CONF_IPV6 */ - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN; -#endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - /* Sum IP source and destination addresses. */ - sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t)); - - /* Sum TCP header and data. */ - sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], - upper_layer_len); - - return (sum == 0) ? 0xffff : htons(sum); -} -/*---------------------------------------------------------------------------*/ -#if UIP_CONF_IPV6 -u16_t -uip_icmp6chksum(void) -{ - return upper_layer_chksum(UIP_PROTO_ICMP6); - -} -#endif /* UIP_CONF_IPV6 */ -/*---------------------------------------------------------------------------*/ -u16_t -uip_tcpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_TCP); -} -/*---------------------------------------------------------------------------*/ -#if UIP_UDP_CHECKSUMS -u16_t -uip_udpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_UDP); -} -#endif /* UIP_UDP_CHECKSUMS */ -#endif /* UIP_ARCH_CHKSUM */ -/*---------------------------------------------------------------------------*/ -void -uip_init(void) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - uip_listenports[c] = 0; - } - for(c = 0; c < UIP_CONNS; ++c) { - uip_conns[c].tcpstateflags = UIP_CLOSED; - } -#if UIP_ACTIVE_OPEN - lastport = 1024; -#endif /* UIP_ACTIVE_OPEN */ - -#if UIP_UDP - for(c = 0; c < UIP_UDP_CONNS; ++c) { - uip_udp_conns[c].lport = 0; - } -#endif /* UIP_UDP */ - - - /* IPv4 initialization. */ -#if UIP_FIXEDADDR == 0 - /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ -#endif /* UIP_FIXEDADDR */ - -} -/*---------------------------------------------------------------------------*/ -#if UIP_ACTIVE_OPEN -struct uip_conn * -uip_connect(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for(c = 0; c < UIP_CONNS; ++c) { - conn = &uip_conns[c]; - if(conn->tcpstateflags != UIP_CLOSED && - conn->lport == htons(lastport)) { - goto again; - } - } - - conn = 0; - for(c = 0; c < UIP_CONNS; ++c) { - cconn = &uip_conns[c]; - if(cconn->tcpstateflags == UIP_CLOSED) { - conn = cconn; - break; - } - if(cconn->tcpstateflags == UIP_TIME_WAIT) { - if(conn == 0 || - cconn->timer > conn->timer) { - conn = cconn; - } - } - } - - if(conn == 0) { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = iss[0]; - conn->snd_nxt[1] = iss[1]; - conn->snd_nxt[2] = iss[2]; - conn->snd_nxt[3] = iss[3]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons(lastport); - conn->rport = rport; - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - - return conn; -} -#endif /* UIP_ACTIVE_OPEN */ -/*---------------------------------------------------------------------------*/ -#if UIP_UDP -struct uip_udp_conn * -uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == htons(lastport)) { - goto again; - } - } - - - conn = 0; - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == 0) { - conn = &uip_udp_conns[c]; - break; - } - } - - if(conn == 0) { - return 0; - } - - conn->lport = HTONS(lastport); - conn->rport = rport; - if(ripaddr == NULL) { - memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t)); - } else { - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - } - conn->ttl = UIP_TTL; - - return conn; -} -#endif /* UIP_UDP */ -/*---------------------------------------------------------------------------*/ -void -uip_unlisten(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == port) { - uip_listenports[c] = 0; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -void -uip_listen(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == 0) { - uip_listenports[c] = port; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -/* XXX: IP fragment reassembly: not well-tested. */ - -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 -#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) -static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; -static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, - 0x0f, 0x07, 0x03, 0x01}; -static u16_t uip_reasslen; -static u8_t uip_reassflags; -#define UIP_REASS_FLAG_LASTFRAG 0x01 -static u8_t uip_reasstmr; - -#define IP_MF 0x20 - -static u8_t -uip_reass(void) -{ - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if(uip_reasstmr == 0) { - memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - /* Clear the bitmap. */ - memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap)); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && - BUF->srcipaddr[1] == FBUF->srcipaddr[1] && - BUF->destipaddr[0] == FBUF->destipaddr[0] && - BUF->destipaddr[1] == FBUF->destipaddr[1] && - BUF->ipid[0] == FBUF->ipid[0] && - BUF->ipid[1] == FBUF->ipid[1]) { - - len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; - offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if(offset > UIP_REASS_BUFSIZE || - offset + len > UIP_REASS_BUFSIZE) { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy(&uip_reassbuf[UIP_IPH_LEN + offset], - (char *)BUF + (int)((BUF->vhl & 0x0f) * 4), - len); - - /* Update the bitmap. */ - if(offset / (8 * 8) == (offset + len) / (8 * 8)) { - /* If the two endpoints are in the same byte, we only update - that byte. */ - - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7] & - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } else { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7]; - for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { - uip_reassbitmap[i] = 0xff; - } - uip_reassbitmap[(offset + len) / (8 * 8)] |= - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - - if((BUF->ipoffset[0] & IP_MF) == 0) { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { - if(uip_reassbitmap[i] != 0xff) { - goto nullreturn; - } - } - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if(uip_reassbitmap[uip_reasslen / (8 * 8)] != - (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy(BUF, FBUF, uip_reasslen); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - BUF->len[0] = uip_reasslen >> 8; - BUF->len[1] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - - return uip_reasslen; - } - } - - nullreturn: - return 0; -} -#endif /* UIP_REASSEMBLY */ -/*---------------------------------------------------------------------------*/ -static void -uip_add_rcv_nxt(u16_t n) -{ - uip_add32(uip_conn->rcv_nxt, n); - uip_conn->rcv_nxt[0] = uip_acc32[0]; - uip_conn->rcv_nxt[1] = uip_acc32[1]; - uip_conn->rcv_nxt[2] = uip_acc32[2]; - uip_conn->rcv_nxt[3] = uip_acc32[3]; -} -/*---------------------------------------------------------------------------*/ -void -uip_process(u8_t flag) -{ - register struct uip_conn *uip_connr = uip_conn; - - ( void ) all_ones_addr; - -#if UIP_UDP - if(flag == UIP_UDP_SEND_CONN) { - goto udp_send; - } -#endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if(flag == UIP_POLL_REQUEST) { - if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && - !uip_outstanding(uip_connr)) { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } else if(flag == UIP_TIMER) { -#if UIP_REASSEMBLY - if(uip_reasstmr != 0) { - --uip_reasstmr; - } -#endif /* UIP_REASSEMBLY */ - /* Increase the initial sequence number. */ - if(++iss[3] == 0) { - if(++iss[2] == 0) { - if(++iss[1] == 0) { - ++iss[0]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if(uip_connr->tcpstateflags == UIP_TIME_WAIT || - uip_connr->tcpstateflags == UIP_FIN_WAIT_2) { - ++(uip_connr->timer); - if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } else if(uip_connr->tcpstateflags != UIP_CLOSED) { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if(uip_outstanding(uip_connr)) { - uip_connr->timer = uip_connr->timer - 1; - if(uip_connr->timer == 0) { - if(uip_connr->nrtx == UIP_MAXRTX || - ((uip_connr->tcpstateflags == UIP_SYN_SENT || - uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX)) { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? - 4: - uip_connr->nrtx); - ++(uip_connr->nrtx); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT(++uip_stat.tcp.rexmit); - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - - } - } - } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - goto drop; - } -#if UIP_UDP - if(flag == UIP_UDP_TIMER) { - if(uip_udp_conn->lport != 0) { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } else { - goto drop; - } - } -#endif - - /* This is where the input processing starts. */ - UIP_STAT(++uip_stat.ip.recv); - - /* Start of IP input header processing code. */ - -#if UIP_CONF_IPV6 - /* Check validity of the IP header. */ - if((BUF->vtc & 0xf0) != 0x60) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ipv6: invalid version."); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* Check validity of the IP header. */ - if(BUF->vhl != 0x45) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ip: invalid version or header length."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - - if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) { - uip_len = (BUF->len[0] << 8) + BUF->len[1]; -#if UIP_CONF_IPV6 - uip_len += 40; /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ -#endif /* UIP_CONF_IPV6 */ - } else { - UIP_LOG("ip: packet shorter than reported in IP header."); - goto drop; - } - -#if !UIP_CONF_IPV6 - /* Check the fragment flag. */ - if((BUF->ipoffset[0] & 0x3f) != 0 || - BUF->ipoffset[1] != 0) { -#if UIP_REASSEMBLY - uip_len = uip_reass(); - if(uip_len == 0) { - goto drop; - } -#else /* UIP_REASSEMBLY */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.fragerr); - UIP_LOG("ip: fragment dropped."); - goto drop; -#endif /* UIP_REASSEMBLY */ - } -#endif /* UIP_CONF_IPV6 */ - - if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ -#if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if(BUF->proto == UIP_PROTO_ICMP) { - UIP_LOG("ip: possible ping config packet received."); - goto icmp_input; - } else { - UIP_LOG("ip: packet dropped since no address assigned."); - goto drop; - } -#endif /* UIP_PINGADDRCONF */ - - } else { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ -#if UIP_BROADCAST - DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum()); - if(BUF->proto == UIP_PROTO_UDP && - uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) - /*&& - uip_ipchksum() == 0xffff*/) { - goto udp_input; - } -#endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ -#if !UIP_CONF_IPV6 - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && - BUF->destipaddr[0] != HTONS(0xff02)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - } - -#if !UIP_CONF_IPV6 - if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header - checksum. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.chkerr); - UIP_LOG("ip: bad checksum."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so, - proceed with TCP input - processing. */ - goto tcp_input; - } - -#if UIP_UDP - if(BUF->proto == UIP_PROTO_UDP) { - goto udp_input; - } -#endif /* UIP_UDP */ - -#if !UIP_CONF_IPV6 - /* ICMPv4 processing code follows. */ - if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp."); - goto drop; - } - -#if UIP_PINGADDRCONF - icmp_input: -#endif /* UIP_PINGADDRCONF */ - UIP_STAT(++uip_stat.icmp.recv); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if(ICMPBUF->type != ICMP_ECHO) { - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: not icmp echo."); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ -#if UIP_PINGADDRCONF - if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { - uip_hostaddr[0] = BUF->destipaddr[0]; - uip_hostaddr[1] = BUF->destipaddr[1]; - } -#endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; - } else { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - - /* End of IPv4 input header processing code. */ -#else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - DEBUG_PRINTF("icmp6_input: length %d\n", uip_len); - - if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp6."); - goto drop; - } - - UIP_STAT(++uip_stat.icmp.recv); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) { - if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) { - - if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2])); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr); - uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr); - ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ - memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr)); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - goto send; - - } - goto drop; - } else if(ICMPBUF->type == ICMP6_ECHO) { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - } else { - DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type); - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: unknown ICMP message."); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - -#endif /* !UIP_CONF_IPV6 */ - -#if UIP_UDP - /* UDP input processing. */ - udp_input: - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ -#if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) { - UIP_STAT(++uip_stat.udp.drop); - UIP_STAT(++uip_stat.udp.chkerr); - UIP_LOG("udp: bad checksum."); - goto drop; - } -#else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; -#endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for(uip_udp_conn = &uip_udp_conns[0]; - uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; - ++uip_udp_conn) { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if(uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || - UDPBUF->srcport == uip_udp_conn->rport) && - (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || - uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) { - goto udp_found; - } - } - UIP_LOG("udp: no matching connection found"); - goto drop; - - udp_found: - UIP_STAT(++uip_stat.udp.recv); - uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); - udp_send: - if(uip_slen == 0) { - goto drop; - } - uip_len = uip_slen + UIP_IPUDPH_LEN; - -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - -#if UIP_UDP_CHECKSUMS - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~(uip_udpchksum()); - if(UDPBUF->udpchksum == 0) { - UDPBUF->udpchksum = 0xffff; - } -#endif /* UIP_UDP_CHECKSUMS */ - UIP_STAT(++uip_stat.udp.sent); - goto ip_send_nolen; -#endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input: - UIP_STAT(++uip_stat.tcp.recv); - - /* Start of TCP input header processing code. */ - - if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP - checksum. */ - UIP_STAT(++uip_stat.tcp.drop); - UIP_STAT(++uip_stat.tcp.chkerr); - UIP_LOG("tcp: bad checksum."); - goto drop; - } - - - /* Demultiplex this segment. */ - /* First check any active connections. */ - for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; - ++uip_connr) { - if(uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if((BUF->flags & TCP_CTL) != TCP_SYN) { - goto reset; - } - - tmp16 = BUF->destport; - /* Next, check listening connections. */ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(tmp16 == uip_listenports[c]) - goto found_listen; - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT(++uip_stat.tcp.synrst); - reset: - - /* We do not send resets in response to resets. */ - if(BUF->flags & TCP_RST) { - goto drop; - } - - UIP_STAT(++uip_stat.tcp.rst); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[3]; - BUF->seqno[3] = BUF->ackno[3]; - BUF->ackno[3] = c; - - c = BUF->seqno[2]; - BUF->seqno[2] = BUF->ackno[2]; - BUF->ackno[2] = c; - - c = BUF->seqno[1]; - BUF->seqno[1] = BUF->ackno[1]; - BUF->ackno[1] = c; - - c = BUF->seqno[0]; - BUF->seqno[0] = BUF->ackno[0]; - BUF->ackno[0] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if(++BUF->ackno[3] == 0) { - if(++BUF->ackno[2] == 0) { - if(++BUF->ackno[1] == 0) { - ++BUF->ackno[0]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ - found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for(c = 0; c < UIP_CONNS; ++c) { - if(uip_conns[c].tcpstateflags == UIP_CLOSED) { - uip_connr = &uip_conns[c]; - break; - } - if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) { - if(uip_connr == 0 || - uip_conns[c].timer > uip_connr->timer) { - uip_connr = &uip_conns[c]; - } - } - } - - if(uip_connr == 0) { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT(++uip_stat.tcp.syndrop); - UIP_LOG("tcp: found no unused connections."); - goto drop; - } - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[0] = iss[0]; - uip_connr->snd_nxt[1] = iss[1]; - uip_connr->snd_nxt[2] = iss[2]; - uip_connr->snd_nxt[3] = iss[3]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_add_rcv_nxt(1); - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = - tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ -#if UIP_ACTIVE_OPEN - tcp_send_synack: - BUF->flags = TCP_ACK; - - tcp_send_syn: - BUF->flags |= TCP_SYN; -#else /* UIP_ACTIVE_OPEN */ - tcp_send_synack: - BUF->flags = TCP_SYN | TCP_ACK; -#endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[0] = TCP_OPT_MSS; - BUF->optdata[1] = TCP_OPT_MSS_LEN; - BUF->optdata[2] = (UIP_TCP_MSS) / 256; - BUF->optdata[3] = (UIP_TCP_MSS) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ - found: - uip_conn = uip_connr; - uip_flags = 0; - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if(BUF->flags & TCP_RST) { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG("tcp: got reset, aborting connection."); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - /* Calculated the length of the data, if the application has sent - any data to us. */ - c = (BUF->tcpoffset >> 4) << 2; - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && - ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { - if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - (BUF->seqno[0] != uip_connr->rcv_nxt[0] || - BUF->seqno[1] != uip_connr->rcv_nxt[1] || - BUF->seqno[2] != uip_connr->rcv_nxt[2] || - BUF->seqno[3] != uip_connr->rcv_nxt[3])) { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { - uip_add32(uip_connr->snd_nxt, uip_connr->len); - - if(BUF->ackno[0] == uip_acc32[0] && - BUF->ackno[1] == uip_acc32[1] && - BUF->ackno[2] == uip_acc32[2] && - BUF->ackno[3] == uip_acc32[3]) { - /* Update sequence number. */ - uip_connr->snd_nxt[0] = uip_acc32[0]; - uip_connr->snd_nxt[1] = uip_acc32[1]; - uip_connr->snd_nxt[2] = uip_acc32[2]; - uip_connr->snd_nxt[3] = uip_acc32[3]; - - - /* Do RTT estimation, unless we have done retransmissions. */ - if(uip_connr->nrtx == 0) { - signed char m; - m = uip_connr->rto - uip_connr->timer; - /* This is taken directly from VJs original code in his paper */ - m = m - (uip_connr->sa >> 3); - uip_connr->sa += m; - if(m < 0) { - m = -m; - } - m = m - (uip_connr->sv >> 2); - uip_connr->sv += m; - uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; - - } - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - - } - - /* Do different things depending on in what state the connection is. */ - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - goto drop; -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if((uip_flags & UIP_ACKDATA) && - (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) { - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = - uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_add_rcv_nxt(1); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - - if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - if(uip_outstanding(uip_connr)) { - goto drop; - } - uip_add_rcv_nxt(1 + uip_len); - uip_flags |= UIP_CLOSE; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - } - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if((BUF->flags & TCP_URG) != 0) { -#if UIP_URGDATA > 0 - uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; - if(uip_urglen > uip_len) { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - uip_add_rcv_nxt(uip_urglen); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } else { - uip_urglen = 0; -#else /* UIP_URGDATA > 0 */ - uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]); - uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; -#endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1]; - if(tmp16 > uip_connr->initialmss || - tmp16 == 0) { - tmp16 = uip_connr->initialmss; - } - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { - uip_slen = 0; - UIP_APPCALL(); - - appsend: - - if(uip_flags & UIP_ABORT) { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if(uip_flags & UIP_CLOSE) { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if(uip_slen > 0) { - - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if((uip_flags & UIP_ACKDATA) != 0) { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if(uip_connr->len == 0) { - - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if(uip_slen > uip_connr->mss) { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } else { - - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - uip_connr->nrtx = 0; - apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if(uip_slen > 0 && uip_connr->len > 0) { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - /* Send the packet. */ - goto tcp_send_noopts; - } - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if(uip_flags & UIP_NEWDATA) { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - goto drop; - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } else { - uip_connr->tcpstateflags = UIP_CLOSING; - } - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } else if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_FIN_WAIT_2: - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - goto drop; - - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ - tcp_send_ack: - BUF->flags = TCP_ACK; - tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; - tcp_send_noopts: - BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4; - tcp_send: - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ - BUF->ackno[0] = uip_connr->rcv_nxt[0]; - BUF->ackno[1] = uip_connr->rcv_nxt[1]; - BUF->ackno[2] = uip_connr->rcv_nxt[2]; - BUF->ackno[3] = uip_connr->rcv_nxt[3]; - - BUF->seqno[0] = uip_connr->snd_nxt[0]; - BUF->seqno[1] = uip_connr->snd_nxt[1]; - BUF->seqno[2] = uip_connr->snd_nxt[2]; - BUF->seqno[3] = uip_connr->snd_nxt[3]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr); - - if(uip_connr->tcpstateflags & UIP_STOPPED) { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[0] = BUF->wnd[1] = 0; - } else { - BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); - BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); - } - - tcp_send_noconn: - BUF->ttl = UIP_TTL; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->urgp[0] = BUF->urgp[1] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if UIP_UDP - ip_send_nolen: -#endif /* UIP_UDP */ - -#if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; -#else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - ++ipid; - BUF->ipid[0] = ipid >> 8; - BUF->ipid[1] = ipid & 0xff; - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - UIP_STAT(++uip_stat.tcp.sent); - send: - DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len, - (BUF->len[0] << 8) | BUF->len[1]); - - UIP_STAT(++uip_stat.ip.sent); - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; - drop: - uip_len = 0; - uip_flags = 0; - return; -} -/*---------------------------------------------------------------------------*/ -u16_t -htons(u16_t val) -{ - return HTONS(val); -} -/*---------------------------------------------------------------------------*/ -void -uip_send(const void *data, int len) -{ - if(len > 0) { - uip_slen = len; - if(data != uip_sappdata) { - memcpy(uip_sappdata, (data), uip_slen); - } - } -} -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h deleted file mode 100644 index 82da6fbd2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h +++ /dev/null @@ -1,1638 +0,0 @@ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ - * - */ - -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "uipopt.h" - -/** - * Repressentation of an IP address. - * - */ -typedef u16_t uip_ip4addr_t[2]; -typedef u16_t uip_ip6addr_t[8]; -#if UIP_CONF_IPV6 -typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ -typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -/* First, the functions that should be called from the - * system. Initialization, the periodic timer and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) - - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init(void); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid(u16_t id); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process(UIP_DATA) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The ususal way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ - uip_process(UIP_TIMER); } while (0) - -/** - * - * - */ -#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_TIMER); } while (0) - -/** - * Reuqest that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_POLL_REQUEST); } while (0) - - -#if UIP_UDP -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process(UIP_UDP_TIMER); } while (0) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ - uip_process(UIP_UDP_TIMER); } while (0) - - -#endif /* UIP_UDP */ - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode - */ -#ifndef UIP_CONF_EXTERNAL_BUFFER - extern u8_t uip_buf[UIP_BUFSIZE+2]; -#else - extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. -*/ -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen(u16_t port); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten(u16_t port); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specied host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is avaliable only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote hot. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); - - - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding(conn) ((conn)->len) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * funcion is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -void uip_send(const void *data, int len); - -/** - * The length of any incoming data that is currently avaliable (if avaliable) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() (uip_flags = UIP_CLOSE) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occured that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() (uip_flags = UIP_ABORT) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while(0) - - -/* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() (uip_conn == NULL) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * avaliable through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() (uip_flags & UIP_NEWDATA) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() (uip_flags & UIP_ACKDATA) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() (uip_flags & UIP_CONNECTED) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() (uip_flags & UIP_CLOSE) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() (uip_flags & UIP_ABORT) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() (uip_flags & UIP_TIMEDOUT) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() (uip_flags & UIP_REXMIT) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() (uip_flags & UIP_POLL) - -/** - * Get the initial maxium segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() (uip_conn->initialmss) - -/** - * Get the current maxium segment size that can be sent on the current - * connection. - * - * The current maxiumum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() (uip_conn->mss) - -/** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ -struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove(conn) (conn)->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind(conn, port) (conn)->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send(len) uip_send((char *)uip_appdata, len) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ - ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ - ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ - } while(0) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ - ((u16_t *)(addr))[0] = HTONS((addr0)); \ - ((u16_t *)(addr))[1] = HTONS((addr1)); \ - ((u16_t *)(addr))[2] = HTONS((addr2)); \ - ((u16_t *)(addr))[3] = HTONS((addr3)); \ - ((u16_t *)(addr))[4] = HTONS((addr4)); \ - ((u16_t *)(addr))[5] = HTONS((addr5)); \ - ((u16_t *)(addr))[6] = HTONS((addr6)); \ - ((u16_t *)(addr))[7] = HTONS((addr7)); \ - } while(0) - -/** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_copy(dest, src) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ - } while(0) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ - ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ - (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ - (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ - ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ - (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) - - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask(dest, src, mask) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ - } while(0) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons -u16_t htons(u16_t val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -extern void *uip_appdata; - -#if UIP_URGDATA > 0 -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -extern u16_t uip_len; - -/** @} */ - -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whos purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -extern struct uip_conn *uip_conn; -/* The array containing all uIP connections. */ -extern struct uip_conn uip_conns[UIP_CONNS]; -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ - - -#if UIP_UDP -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats { - struct { - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - } icmp; /**< ICMP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#if UIP_UDP - struct { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -}; - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -extern struct uip_stats uip_stat; - - -/*---------------------------------------------------------------------------*/ -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ -/*---------------------------------------------------------------------------*/ -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * infomation. - */ -extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutualy exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ - -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process(u8_t flag); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macrose defined in this file. */ - -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#if UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_tcpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/* The ICMP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_icmpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#else /* !UIP_CONF_IPV6 */ - u8_t flags, reserved1, reserved2, reserved3; - u8_t icmp6data[16]; - u8_t options[1]; -#endif /* !UIP_CONF_IPV6 */ -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - -/* The UDP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_udpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, - destport; - u16_t udplen; - u16_t udpchksum; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -/* Header sizes. */ -#if UIP_CONF_IPV6 -#define UIP_IPH_LEN 40 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + - UDP - header */ -#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + - TCP - header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN - - -#if UIP_FIXEDADDR -extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ - - - -/** - * Representation of a 48-bit Ethernet address. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_addr { - u8_t addr[6]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum(void); - - -#endif /* __UIP_H__ */ - - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h deleted file mode 100644 index 5ea45787c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c deleted file mode 100644 index 44c7975fc..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c +++ /dev/null @@ -1,439 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ - * - */ - - -#include "uip_arp.h" - -#include - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct arp_hdr { - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - u16_t sipaddr[2]; - struct uip_eth_addr dhwaddr; - u16_t dipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct ethip_hdr { - struct uip_eth_hdr ethhdr; - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry { - u16_t ipaddr[2]; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = - {{0xff,0xff,0xff,0xff,0xff,0xff}}; -static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff}; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static u16_t ipaddr[2]; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ((struct arp_hdr *)&uip_buf[0]) -#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) -/*-----------------------------------------------------------------------------------*/ -/** - * Initialize the ARP module. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_init(void) -{ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - memset(arp_table[i].ipaddr, 0, 4); - } -} -/*-----------------------------------------------------------------------------------*/ -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_timer(void) -{ - struct arp_entry *tabptr; - - ++arptime; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && - arptime - tabptr->time >= UIP_ARP_MAXAGE) { - memset(tabptr->ipaddr, 0, 4); - } - } - -} -/*-----------------------------------------------------------------------------------*/ -static void -uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) -{ - register struct arp_entry *tabptr; - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - - tabptr = &arp_table[i]; - /* Only check those entries that are actually in use. */ - if(tabptr->ipaddr[0] != 0 && - tabptr->ipaddr[1] != 0) { - - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if(ipaddr[0] == tabptr->ipaddr[0] && - ipaddr[1] == tabptr->ipaddr[1]) { - - /* An old entry found, update this and return. */ - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(tabptr->ipaddr[0] == 0 && - tabptr->ipaddr[1] == 0) { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if(i == UIP_ARPTAB_SIZE) { - tmpage = 0; - c = 0; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(arptime - tabptr->time > tmpage) { - tmpage = arptime - tabptr->time; - c = i; - } - } - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - memcpy(tabptr->ipaddr, ipaddr, 4); - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; -} -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -#if 1 -void -uip_arp_ipin(void) -{ - uip_len -= sizeof(struct uip_eth_hdr); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if((IPBUF->srcipaddr[0] & uip_netmask[0]) != - (uip_hostaddr[0] & uip_netmask[0])) { - return; - } - if((IPBUF->srcipaddr[1] & uip_netmask[1]) != - (uip_hostaddr[1] & uip_netmask[1])) { - return; - } - uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); - - return; -} -#endif /* 0 */ -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_arpin(void) -{ - - if(uip_len < sizeof(struct arp_hdr)) { - uip_len = 0; - return; - } - uip_len = 0; - - switch(BUF->opcode) { - case HTONS(ARP_REQUEST): - /* ARP request. If it asked for our address, we send out a - reply. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - - /* The reply opcode is 2. */ - BUF->opcode = HTONS(2); - - memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); - - BUF->dipaddr[0] = BUF->sipaddr[0]; - BUF->dipaddr[1] = BUF->sipaddr[1]; - BUF->sipaddr[0] = uip_hostaddr[0]; - BUF->sipaddr[1] = uip_hostaddr[1]; - - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - uip_len = sizeof(struct arp_hdr); - } - break; - case HTONS(ARP_REPLY): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - } - break; - } - - return; -} -/*-----------------------------------------------------------------------------------*/ -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_out(void) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) { - memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6); - } else { - /* Check if the destination address is on the local network. */ - if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy(ipaddr, uip_draddr); - } else { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy(ipaddr, IPBUF->destipaddr); - } - - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) { - break; - } - } - - if(i == UIP_ARPTAB_SIZE) { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - - memset(BUF->ethhdr.dest.addr, 0xff, 6); - memset(BUF->dhwaddr.addr, 0x00, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - - uip_ipaddr_copy(BUF->dipaddr, ipaddr); - uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr); - BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ - BUF->hwtype = HTONS(ARP_HWTYPE_ETH); - BUF->protocol = HTONS(UIP_ETHTYPE_IP); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof(struct arp_hdr); - return; - } - - /* Build an ethernet header. */ - memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); - } - memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - - IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); - - uip_len += sizeof(struct uip_eth_hdr); -} -/*-----------------------------------------------------------------------------------*/ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h deleted file mode 100644 index b6b2b66b4..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ - * - */ - -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "uip.h" - - -extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_hdr { - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -}PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IP6 0x86dd - - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init(void); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ -void uip_arp_ipin(void); -//#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin(void); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out(void); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer(void); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1];\ - uip_ethaddr.addr[2] = eaddr.addr[2];\ - uip_ethaddr.addr[3] = eaddr.addr[3];\ - uip_ethaddr.addr[4] = eaddr.addr[4];\ - uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) - -/** @} */ -/** @} */ - -#endif /* __UIP_ARP_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c deleted file mode 100644 index 647b0b270..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of - * Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $ - * - */ - - -#include "uip.h" -#include "uiplib.h" - - -/*-----------------------------------------------------------------------------------*/ -unsigned char -uiplib_ipaddrconv(char *addrstr, unsigned char *ipaddr) -{ - unsigned char tmp; - char c; - unsigned char i, j; - - tmp = 0; - - for(i = 0; i < 4; ++i) { - j = 0; - do { - c = *addrstr; - ++j; - if(j > 4) { - return 0; - } - if(c == '.' || c == 0) { - *ipaddr = tmp; - ++ipaddr; - tmp = 0; - } else if(c >= '0' && c <= '9') { - tmp = (tmp * 10) + (c - '0'); - } else { - return 0; - } - ++addrstr; - } while(c != '.' && c != 0); - } - return 1; -} - -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h deleted file mode 100644 index 6eb0c66f5..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * \file - * Various uIP library functions. - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.h,v 1.1 2006/06/07 09:15:19 adam Exp $ - * - */ -#ifndef __UIPLIB_H__ -#define __UIPLIB_H__ - -/** - * \addtogroup uipconvfunc - * @{ - */ - -/** - * Convert a textual representation of an IP address to a numerical representation. - * - * This function takes a textual representation of an IP address in - * the form a.b.c.d and converts it into a 4-byte array that can be - * used by other uIP functions. - * - * \param addrstr A pointer to a string containing the IP address in - * textual form. - * - * \param addr A pointer to a 4-byte array that will be filled in with - * the numerical representation of the address. - * - * \retval 0 If the IP address could not be parsed. - * \retval Non-zero If the IP address was parsed. - */ -unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr); - -/** @} */ - -#endif /* __UIPLIB_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h deleted file mode 100644 index f7c3e0f80..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h +++ /dev/null @@ -1,539 +0,0 @@ -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * uipopt.h. This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Most of the configuration options in the uipopt.h should not - * be changed, but rather the per-project uip-conf.h file. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ - * - */ - -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \name Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are appliciable only - * if uIP should be run over Ethernet. - * - * All of these should be changed to suit your project. -*/ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#define UIP_FIXEDADDR 0 - -/** - * Ping IP address asignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name IP configuration options - * @{ - * - */ -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additonal amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#define UIP_REASSEMBLY 0 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 40 - -/** @} */ - -/*------------------------------------------------------------------------------*/ -/** - * \name UDP configuration options - * @{ - */ - -/** - * Toggles wether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name TCP configuration options - * @{ - */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#define UIP_ACTIVE_OPEN 1 - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximatly 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) is the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configiration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maxium age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \name General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1500 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE 1500 -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log(char *msg); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_CONF_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either BIG_ENDIAN (Motorola byte order) or - * LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#ifdef UIP_CONF_BYTE_ORDER -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -#else /* UIP_CONF_BYTE_ORDER */ -#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -#endif /* UIP_CONF_BYTE_ORDER */ - -/** @} */ -/*------------------------------------------------------------------------------*/ - -/** - * \name Appication specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - -void httpd_appcall(void); -#define UIP_APPCALL httpd_appcall - -struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; -}; -typedef struct httpd_state uip_tcp_appstate_t - \endcode - */ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ -/** @} */ -/** @} */ - -#endif /* __UIPOPT_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 6de54b590..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,965 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|fff83a05|103c|1710|14cc" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT01" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT02" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT03" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT04" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT05" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT06" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT07" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT08" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT09" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT10" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_FILE" "" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_SELETCT" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_MODIFIED" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_NOREAD_OSOBJECT" "0" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_SAMPLING_PERIOD" "100" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "103c" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "5904" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSession" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "5324" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSessionViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000106C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000001AE0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000063656843" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "000000000000006B" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000002" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000FF9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000004020001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF80178" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF868F0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000001000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000001064" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSession" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSessionViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "255" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "ulRegTest2CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "ulRegTest1CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "ulIdleLoopCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "xEnd, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "pxNewBlockLink, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "3" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoDefaultSession" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "C:\temp" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "GCC io.txt" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp124" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp125" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp126" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp127" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp128" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp129" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp130" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp131" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp132" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp133" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp134" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp135" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp136" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp137" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp138" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp139" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp140" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp141" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp142" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp143" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp144" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp145" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp146" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp147" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp148" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp149" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp150" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp151" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp152" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp153" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp154" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp155" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp156" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp157" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp158" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp159" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp160" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp161" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp162" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp163" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp164" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp165" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp166" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp167" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp168" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp169" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp170" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp171" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp172" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp173" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp174" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp175" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp176" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp177" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp178" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp179" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp180" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp181" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp182" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp183" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp184" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp185" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp186" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp187" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp188" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp189" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp190" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp191" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp192" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp193" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp194" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp195" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp196" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp197" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp198" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp199" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp200" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp201" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp202" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp203" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp204" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp205" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp206" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp207" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp208" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp209" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp210" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp211" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp212" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp213" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp214" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp215" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp216" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp217" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp218" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp219" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp220" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp221" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp222" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp223" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp224" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp225" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp226" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp227" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp228" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp229" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp230" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp231" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp232" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp233" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp234" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp235" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp236" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp237" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp238" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp239" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp240" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp241" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp242" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp243" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp244" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp245" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp246" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp247" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp248" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp249" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp250" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp251" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp252" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp253" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp254" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp255" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp256" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp257" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp258" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp259" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp260" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp261" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp262" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp263" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp264" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp265" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp266" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp267" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp268" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp269" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp270" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp271" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp272" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp273" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp274" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp275" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp276" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp277" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp278" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp279" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp280" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp281" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp282" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp283" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp284" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp285" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp286" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp287" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp288" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp289" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp290" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp291" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp292" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp293" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp294" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp295" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp296" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp297" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp298" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp299" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp300" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp301" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp302" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp303" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp304" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp305" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp306" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp307" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp308" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp309" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp310" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp311" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp312" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp313" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp314" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp315" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp316" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp317" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp318" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp319" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp320" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp321" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp322" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp323" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp324" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp325" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp326" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp327" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp328" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp329" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp330" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp331" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp332" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp333" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp334" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp335" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp336" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp337" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp338" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp339" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp340" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp341" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp342" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp343" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp344" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp345" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp346" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp347" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp348" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp349" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp350" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp351" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp352" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp353" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp354" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp355" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp356" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp357" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp358" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp359" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp360" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp361" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp362" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp363" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp364" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp365" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp366" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp367" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp368" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp369" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp370" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp371" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp372" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp373" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp374" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp375" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp376" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp377" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp378" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp379" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp380" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp381" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp382" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp383" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp384" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp385" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp386" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp387" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp388" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp389" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp390" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp391" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp392" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp393" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp394" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp395" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp396" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp397" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp398" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp399" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp400" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp401" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp402" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp403" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp404" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp405" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp406" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp407" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp408" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp409" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp410" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp411" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp412" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp413" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp414" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp415" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp416" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp417" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp418" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp419" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp420" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp421" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp422" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp423" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp424" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp425" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp426" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp427" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp428" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp429" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp430" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp431" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp432" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp433" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp434" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp435" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp436" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp437" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp438" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp439" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp440" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp441" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp442" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp443" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp444" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp445" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp446" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp447" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp448" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp449" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp450" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp451" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp452" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp453" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp454" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp455" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp456" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp457" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp458" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp459" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp460" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp461" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp462" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp463" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp464" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp465" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp466" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp467" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp468" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp469" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp470" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp471" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp472" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp473" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp474" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp475" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp476" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp477" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp478" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp479" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp480" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp481" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp482" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp483" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp484" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp485" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp486" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp487" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp488" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp489" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp490" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp491" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp492" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp493" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp494" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp495" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp496" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp497" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp498" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp499" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp500" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp501" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp502" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp503" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp504" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp505" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp506" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp507" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp508" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp509" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp510" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp511" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp512" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp513" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp514" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp515" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp516" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp517" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp518" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp519" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp520" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp521" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp522" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp523" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp524" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp525" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp526" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp527" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp528" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp529" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp530" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp531" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp532" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp533" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp534" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp535" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp536" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp537" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp538" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp539" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp540" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp541" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp542" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp543" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp544" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp545" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp546" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp547" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp548" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp549" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp550" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp551" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp552" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp553" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp554" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp555" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp556" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp557" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp558" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp559" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp560" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp561" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp562" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp563" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp564" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp565" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp566" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp567" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp568" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp569" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp570" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp571" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp572" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp573" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp574" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp575" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp576" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp577" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp578" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp579" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp580" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp581" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp582" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp583" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp584" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp585" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp586" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp587" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp588" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp589" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp590" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp591" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp592" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp593" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp594" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp595" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp596" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp597" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp598" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp599" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp600" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp601" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "532" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.07" 306 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 44 44 816 406 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoDefaultSession" "WINDOW" 59422 0 3 "0.49" 306 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoDefaultSession" "WINDOW" 59422 0 0 "0.21" 251 0 0 350 200 17 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "0.57" 306 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoDefaultSession" "WINDOW" 59421 0 0 "1.00" 307 0 0 350 200 18 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoDefaultSession" "WINDOW" 59422 0 1 "0.43" 306 0 0 853 610 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 11 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port_asm.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\GNU-Files\start.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\RegTest.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\portmacro.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\FreeRTOSConfig.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 298 -510103 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 581 33414224 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 144 -524093 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 222 -523943 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\source\portable\gcc\rx600\port.c" 255 -511337 1 "{00000000-0000-0000-C000-000000000046}" "" -"" -1 -523932 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -"" -1 -509967 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini deleted file mode 100644 index 5e7c5edd5..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini +++ /dev/null @@ -1,30 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=0 -HideNext=0 -ConnectionDlgAutoClose=1 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=0x17000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 506a5be85..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "yrdkrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c deleted file mode 100644 index b6660aaa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c +++ /dev/null @@ -1,55 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :hwinit.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Hardware Setup file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#include "iodefine.h" -#ifdef __cplusplus -extern "C" { -#endif -extern void hw_initialise(void); -#ifdef __cplusplus -} -#endif - -void hw_initialise(void) -{ -/* - SCI.SMR.BYTE = 0; - SCI.SMR.BIT.CA = 1; - SCI.SMR.BIT.CHR = 1; - SCI.SMR.BIT.OE = 1; - SCI.SMR.BIT.STOP = 1; - SCI.SMR.BIT.MP = 1; - SCI.SMR.BIT.CKS = 3; - SCI.BRR = 0; - SCI.SCR.BYTE = 0; - SCI.SCR.BIT.TIE = 1; - SCI.SCR.BIT.RIE = 1; - SCI.SCR.BIT.TE = 1; - SCI.SCR.BIT.RE = 1; - SCI.SCR.BIT.MPIE = 1; - SCI.SCR.BIT.TEIE = 1; - SCI.SCR.BIT.CKE = 3; - SCI.TDR = 0; - SCI.SSR.BYTE = 0; - SCI.SSR.BIT.TDRE = 1; - SCI.SSR.BIT.RDRF = 1; - SCI.SSR.BIT.ORER = 1; - SCI.SSR.BIT.FER = 1; - SCI.SSR.BIT.PER = 1; - SCI.SSR.BIT.TEND = 1; - SCI.SSR.BIT.MPB = 1; - SCI.SSR.BIT.MPBT = 1; - SCI.RDR = 0; - -*/ -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c deleted file mode 100644 index 7334d3e9c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c +++ /dev/null @@ -1,431 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void){ __asm volatile ("brk"); } - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void INT_NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void INT_Excep_BRK(void){ /*wait(); */} - -// BUSERR -void INT_Excep_BUSERR(void){ } - -// FCU_FCUERR -void INT_Excep_FCU_FCUERR(void){ } - -// FCU_FRDYI -void INT_Excep_FCU_FRDYI(void){ } - -// CMTU0_CMT0 - (RB) NOTE This has been replaced in the vector table with vTickISR(). -void INT_Excep_CMTU0_CMT0(void){ } - -// CMTU0_CMT1 -void INT_Excep_CMTU0_CMT1(void){ } - -// CMTU1_CMT2 -void INT_Excep_CMTU1_CMT2(void){ } - -// CMTU1_CMT3 -void INT_Excep_CMTU1_CMT3(void){ } - -// IRQ0 -void INT_Excep_IRQ0(void){ } - -// IRQ1 -void INT_Excep_IRQ1(void){ } - -// IRQ2 -void INT_Excep_IRQ2(void){ } - -// IRQ3 -void INT_Excep_IRQ3(void){ } - -// IRQ4 -void INT_Excep_IRQ4(void){ } - -// IRQ5 -void INT_Excep_IRQ5(void){ } - -// IRQ6 -void INT_Excep_IRQ6(void){ } - -// IRQ7 -void INT_Excep_IRQ7(void){ } - -// IRQ8 -void INT_Excep_IRQ8(void){ } - -// IRQ9 -void INT_Excep_IRQ9(void){ } - -// IRQ10 -void INT_Excep_IRQ10(void){ } - -// IRQ11 -void INT_Excep_IRQ11(void){ } - -// IRQ12 -void INT_Excep_IRQ12(void){ } - -// IRQ13 -void INT_Excep_IRQ13(void){ } - -// IRQ14 -void INT_Excep_IRQ14(void){ } - -// IRQ15 -void INT_Excep_IRQ15(void){ } - -// WDT_WOVI -void INT_Excep_WDT_WOVI(void){ } - -// AD0_ADI0 -void INT_Excep_AD0_ADI0(void){ } - -// AD1_ADI1 -void INT_Excep_AD1_ADI1(void){ } - -// AD2_ADI2 -void INT_Excep_AD2_ADI2(void){ } - -// AD3_ADI3 -void INT_Excep_AD3_ADI3(void){ } - -// TPU0_TGI0A -void INT_Excep_TPU0_TGI0A(void){ } - -// TPU0_TGI0B -void INT_Excep_TPU0_TGI0B(void){ } - -// TPU0_TGI0C -void INT_Excep_TPU0_TGI0C(void){ } - -// TPU0_TGI0D -void INT_Excep_TPU0_TGI0D(void){ } - -// TPU0_TCI0V -void INT_Excep_TPU0_TCI0V(void){ } - -// TPU1_TGI1A -void INT_Excep_TPU1_TGI1A(void){ } - -// TPU1_TGI1B -void INT_Excep_TPU1_TGI1B(void){ } - -// TPU1_TCI1V -void INT_Excep_TPU1_TCI1V(void){ } - -// TPU1_TCI1U -void INT_Excep_TPU1_TCI1U(void){ } - -// TPU2_TGI2A -void INT_Excep_TPU2_TGI2A(void){ } - -// TPU2_TGI2B -void INT_Excep_TPU2_TGI2B(void){ } - -// TPU2_TCI2V -void INT_Excep_TPU2_TCI2V(void){ } - -// TPU2_TCI2U -void INT_Excep_TPU2_TCI2U(void){ } - -// TPU3_TGI3A -void INT_Excep_TPU3_TGI3A(void){ } - -// TPU3_TGI3B -void INT_Excep_TPU3_TGI3B(void){ } - -// TPU3_TGI3C -void INT_Excep_TPU3_TGI3C(void){ } - -// TPU3_TGI3D -void INT_Excep_TPU3_TGI3D(void){ } - -// TPU3_TCI3V -void INT_Excep_TPU3_TCI3V(void){ } - -// TPU4_TGI4A -void INT_Excep_TPU4_TGI4A(void){ } - -// TPU4_TGI4B -void INT_Excep_TPU4_TGI4B(void){ } - -// TPU4_TCI4V -void INT_Excep_TPU4_TCI4V(void){ } - -// TPU4_TCI4U -void INT_Excep_TPU4_TCI4U(void){ } - -// TPU5_TGI5A -void INT_Excep_TPU5_TGI5A(void){ } - -// TPU5_TGI5B -void INT_Excep_TPU5_TGI5B(void){ } - -// TPU5_TCI5V -void INT_Excep_TPU5_TCI5V(void){ } - -// TPU5_TCI5U -void INT_Excep_TPU5_TCI5U(void){ } - -// TPU6_TGI6A -void INT_Excep_TPU6_TGI6A(void){ } - -// TPU6_TGI6B -void INT_Excep_TPU6_TGI6B(void){ } - -// TPU6_TGI6C -void INT_Excep_TPU6_TGI6C(void){ } - -// TPU6_TGI6D -void INT_Excep_TPU6_TGI6D(void){ } - -// TPU6_TCI6V -void INT_Excep_TPU6_TCI6V(void){ } - -// TPU7_TGI7A -void INT_Excep_TPU7_TGI7A(void){ } - -// TPU7_TGI7B -void INT_Excep_TPU7_TGI7B(void){ } - -// TPU7_TCI7V -void INT_Excep_TPU7_TCI7V(void){ } - -// TPU7_TCI7U -void INT_Excep_TPU7_TCI7U(void){ } - -// TPU8_TGI8A -void INT_Excep_TPU8_TGI8A(void){ } - -// TPU8_TGI8B -void INT_Excep_TPU8_TGI8B(void){ } - -// TPU8_TCI8V -void INT_Excep_TPU8_TCI8V(void){ } - -// TPU8_TCI8U -void INT_Excep_TPU8_TCI8U(void){ } - -// TPU9_TGI9A -void INT_Excep_TPU9_TGI9A(void){ } - -// TPU9_TGI9B -void INT_Excep_TPU9_TGI9B(void){ } - -// TPU9_TGI9C -void INT_Excep_TPU9_TGI9C(void){ } - -// TPU9_TGI9D -void INT_Excep_TPU9_TGI9D(void){ } - -// TPU9_TCI9V -void INT_Excep_TPU9_TCI9V(void){ } - -// TPU10_TGI10A -void INT_Excep_TPU10_TGI10A(void){ } - -// TPU10_TGI10B -void INT_Excep_TPU10_TGI10B(void){ } - -// TPU10_TCI10V -void INT_Excep_TPU10_TCI10V(void){ } - -// TPU10_TCI10U -void INT_Excep_TPU10_TCI10U(void){ } - -// TPU11_TGI11A -void INT_Excep_TPU11_TGI11A(void){ } - -// TPU11_TGI11B -void INT_Excep_TPU11_TGI11B(void){ } - -// TPU11_TCI11V -void INT_Excep_TPU11_TCI11V(void){ } - -// TPU11_TCI11U -void INT_Excep_TPU11_TCI11U(void){ } - -// TMR0_CMI0A -void INT_Excep_TMR0_CMI0A(void){ } - -// TMR0_CMI0B -void INT_Excep_TMR0_CMI0B(void){ } - -// TMR0_OV0I -void INT_Excep_TMR0_OV0I(void){ } - -// TMR1_CMI1A -void INT_Excep_TMR1_CMI1A(void){ } - -// TMR1_CMI1B -void INT_Excep_TMR1_CMI1B(void){ } - -// TMR1_OV1I -void INT_Excep_TMR1_OV1I(void){ } - -// TMR2_CMI2A -void INT_Excep_TMR2_CMI2A(void){ } - -// TMR2_CMI2B -void INT_Excep_TMR2_CMI2B(void){ } - -// TMR2_OV2I -void INT_Excep_TMR2_OV2I(void){ } - -// TMR3_CMI3A -void INT_Excep_TMR3_CMI3A(void){ } - -// TMR3_CMI3B -void INT_Excep_TMR3_CMI3B(void){ } - -// TMR3_OV3I -void INT_Excep_TMR3_OV3I(void){ } - -// DMAC_DMTEND0 -void INT_Excep_DMAC_DMTEND0(void){ } - -// DMAC_DMTEND1 -void INT_Excep_DMAC_DMTEND1(void){ } - -// DMAC_DMTEND2 -void INT_Excep_DMAC_DMTEND2(void){ } - -// DMAC_DMTEND3 -void INT_Excep_DMAC_DMTEND3(void){ } - -// SCI0_ERI0 -void INT_Excep_SCI0_ERI0(void){ } - -// SCI0_RXI0 -void INT_Excep_SCI0_RXI0(void){ } - -// SCI0_TXI0 -void INT_Excep_SCI0_TXI0(void){ } - -// SCI0_TEI0 -void INT_Excep_SCI0_TEI0(void){ } - -// SCI1_ERI1 -void INT_Excep_SCI1_ERI1(void){ } - -// SCI1_RXI1 -void INT_Excep_SCI1_RXI1(void){ } - -// SCI1_TXI1 -void INT_Excep_SCI1_TXI1(void){ } - -// SCI1_TEI1 -void INT_Excep_SCI1_TEI1(void){ } - -// SCI2_ERI2 -void INT_Excep_SCI2_ERI2(void){ } - -// SCI2_RXI2 -void INT_Excep_SCI2_RXI2(void){ } - -// SCI2_TXI2 -void INT_Excep_SCI2_TXI2(void){ } - -// SCI2_TEI2 -void INT_Excep_SCI2_TEI2(void){ } - -// SCI3_ERI3 -void INT_Excep_SCI3_ERI3(void){ } - -// SCI3_RXI3 -void INT_Excep_SCI3_RXI3(void){ } - -// SCI3_TXI3 -void INT_Excep_SCI3_TXI3(void){ } - -// SCI3_TEI3 -void INT_Excep_SCI3_TEI3(void){ } - -// SCI4_ERI4 -void INT_Excep_SCI4_ERI4(void){ } - -// SCI4_RXI4 -void INT_Excep_SCI4_RXI4(void){ } - -// SCI4_TXI4 -void INT_Excep_SCI4_TXI4(void){ } - -// SCI4_TEI4 -void INT_Excep_SCI4_TEI4(void){ } - -// SCI5_ERI5 -void INT_Excep_SCI5_ERI5(void){ } - -// SCI5_RXI5 -void INT_Excep_SCI5_RXI5(void){ } - -// SCI5_TXI5 -void INT_Excep_SCI5_TXI5(void){ } - -// SCI5_TEI5 -void INT_Excep_SCI5_TEI5(void){ } - -// SCI6_ERI6 -void INT_Excep_SCI6_ERI6(void){ } - -// SCI6_RXI6 -void INT_Excep_SCI6_RXI6(void){ } - -// SCI6_TXI6 -void INT_Excep_SCI6_TXI6(void){ } - -// SCI6_TEI6 -void INT_Excep_SCI6_TEI6(void){ } - -// RIIC0_EEI0 -void INT_Excep_RIIC0_EEI0(void){ } - -// RIIC0_RXI0 -void INT_Excep_RIIC0_RXI0(void){ } - -// RIIC0_TXI0 -void INT_Excep_RIIC0_TXI0(void){ } - -// RIIC0_TEI0 -void INT_Excep_RIIC0_TEI0(void){ } - -// RIIC1_EEI1 -void INT_Excep_RIIC1_EEI1(void){ } - -// RIIC1_RXI1 -void INT_Excep_RIIC1_RXI1(void){ } - -// RIIC1_TXI1 -void INT_Excep_RIIC1_TXI1(void){ } - -// RIIC1_TEI1 -void INT_Excep_RIIC1_TEI1(void){ } - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm deleted file mode 100644 index 677b81f41..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm +++ /dev/null @@ -1,94 +0,0 @@ -/*------------------------------------------------------------------------ - | - FILE : start.asm | - DATE : Wed, Aug 25, 2010 | - DESCRIPTION : Reset Program | - CPU TYPE : Other | - | - This file is generated by KPIT GNU Project Generator (Ver.4.5). | - | -------------------------------------------------------------------------*/ - - - - /*Start.asm*/ - - .list - .section .text - .global _start /*global Start routine */ - -#ifdef CPPAPP -___dso_handle: - .global ___dso_handle -#endif - - .extern _hw_initialise /*external Sub-routine to initialise Hardware*/ - .extern _data - .extern _mdata - .extern _ebss - .extern _bss - .extern _edata - .extern _main - .extern _ustack - .extern _istack - .extern _rvectors -#if DEBUG - .extern _exit -#endif - - -_start: -/* initialise user stack pointer */ - mvtc #_ustack,USP - -/* initialise interrupt stack pointer */ - mvtc #_istack,ISP - -/* setup intb */ - mvtc #_rvectors_start, intb /* INTERRUPT VECTOR ADDRESS definition */ - -/* setup FPSW */ - mvtc #100h, fpsw - -/* load data section from ROM to RAM */ - - mov #_mdata,r2 /* src ROM address of data section in R2 */ - mov #_data,r1 /* dest start RAM address of data section in R1 */ - mov #_edata,r3 /* end RAM address of data section in R3 */ - sub r1,r3 /* size of data section in R3 (R3=R3-R1) */ - smovf /* block copy R3 bytes from R2 to R1 */ - -/* bss initialisation : zero out bss */ - - mov #00h,r2 /* load R2 reg with zero */ - mov #_ebss, r3 /* store the end address of bss in R3 */ - mov #_bss, r1 /* store the start address of bss in R1 */ - sub r1,r3 /* size of bss section in R3 (R3=R3-R1) */ - sstr.b - -/* call the hardware initialiser */ - bsr.a _hw_initialise - nop - -/* setup PSW */ -// mvtc #10000h, psw /* Set Ubit & Ibit for PSW */ - -/* change PSW PM to user-mode */ -// MVFC PSW,R1 -// OR #00100000h,R1 -// PUSH.L R1 -// MVFC PC,R1 -// ADD #10,R1 -// PUSH.L R1 -// RTE -// NOP -// NOP - -/* start user program */ - bsr.a _main - -/* call to exit*/ -_exit: - bsr.a _exit - - .end diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index af3cf2511..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void vTimer2_ISR_Handler( void ) __attribute__((interrupt)); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -void vTimer2_ISR_Handler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* This is the highest priority interrupt in the system, so there is no - advantage to re-enabling interrupts here. - - We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index ea02e3dbf..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. See the documentation page -for this port on http://www.FreeRTOS.org for more information on writing -interrupt handlers. */ -void vT0_1_ISR_Handler( void ) __attribute((interrupt)); -void vT2_3_ISR_Handler( void ) __attribute((interrupt)); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -void vT0_1_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT2_3_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} -/*-----------------------------------------------------------*/ - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c deleted file mode 100644 index 0e3e60c61..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include - -#define partestNUM_LEDS ( 12 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - case 4: LED8 = LED_ON; - break; - case 5: LED9 = LED_ON; - break; - case 6: LED10 = LED_ON; - break; - case 7: LED11 = LED_ON; - break; - case 8: LED12 = LED_ON; - break; - case 9: LED13 = LED_ON; - break; - case 10:LED14 = LED_ON; - break; - case 11:LED15 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - case 4: LED8 = LED_OFF; - break; - case 5: LED9 = LED_OFF; - break; - case 6: LED10 = LED_OFF; - break; - case 7: LED11 = LED_OFF; - break; - case 8: LED12 = LED_OFF; - break; - case 9: LED13 = LED_OFF; - break; - case 10:LED14 = LED_OFF; - break; - case 11:LED15 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 1 : if( LED5 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 2 : if( LED6 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 3 : if( LED7 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 4 : if( LED8 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 5 : if( LED9 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 6 : if( LED10 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 7 : if( LED11 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 8 : if( LED12 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 9 : if( LED13 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 10 : if( LED14 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 11 : if( LED15 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 2b4754b94..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,479 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\RTOSDemo.hwp" "RX" "KPIT GNURX [ELF]" "C Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"KPIT GNURX [ELF] Toolchain" "v10.03" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Debug_with_optimisation" -[BUILD_PHASES] -"GNU Assembler" 1 -"GNU Compiler" 1 -"GNU Library Generator" 1 -"GNU Linker" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Archive File" "A" -"Assembly include file" "INC" -"Assembly list file" "LIS" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C list file" "LST" -"C source file" "C" -"C++ header file" "HPP" -"C++ list file" "LPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Debug information file" "DBG" -"Expanded assembly source file" "EXP" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocess Assembly file" "ASM" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Profile file" "PRO" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Archive File" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C list file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ list file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Debug information file" "BIN" "NONE" "" -"Expanded assembly source file" "TEXT" "EDITOR" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocess Assembly file" "TEXT" "EDITOR" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Profile file" "BIN" "NONE" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"GNU Assembler" -"GNU Compiler" -"GNU Library Generator" -"GNU Linker" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"GNU Library Generator" 1 -"GNU Compiler" 1 -"GNU Assembler" 1 -"GNU Linker" 1 -[BUILD_PHASE_DETAILS] -"GNU Assembler" "Assembly source file" 1 -"GNU Compiler" "C source file|C++ source file|Preprocess Assembly file" 1 -"GNU Library Generator" "" 0 -"GNU Linker" "Object file|Library file|Relocatable file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"GNU Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_Preprocess Assembly file] -"GNU Compiler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "GNU Assembler" "GNU Compiler" -"Object file" "GNU Linker" "GNU Assembler" -"Object file" "GNU Linker" "GNU Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "User" "Preprocess Assembly file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "User" "C source file|FreeRTOS Source" 2 -[FOLDER] -"C header file" "C header file" -"C source file" "C source file" -"C source file|FreeRTOS Source" "" -"C source file|FreeRTOS Source|Portable Layer" "" -"C source file|FreeTCPIP (based on uIP)" "" -"C source file|FreeTCPIP (based on uIP)|webserver" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Common" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" "" -"C source file|GNU Files" "" -"C source file|Renesas Files" "" -"C source file|Standard Demo Files" "" -"Preprocess Assembly file" "Preprocess Assembly file" -[GENERAL_DATA_PROJECT] -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[OPTIONS_Blinky_GNU Assembler] -"Assembly source file" "099d5a320aa5bc10" 3 -[OPTIONS_Blinky_GNU Compiler] -"C source file" "0af6c431a4b1fc10" 2 -"C++ source file" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0af6c431a4b1fc10" 2 -"Preprocess Assembly file" "0af6c431a4b1fc10" 2 -[OPTIONS_Blinky_GNU Library Generator] -"Single Shot" "099d5a320aa5bc10" 1 -[OPTIONS_Blinky_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|LINCSYM|1] [B|LOMITDD|1] [B|LOMITFP|1] [B|OPTIMIZE|0] [I|OPTLV|1] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_GNU Assembler] -"Assembly source file" "097f0a320aa5bc10" 3 -[OPTIONS_Debug_GNU Compiler] -"C source file" "0fed7fd684b1fc10" 2 -"C++ source file" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0fed7fd684b1fc10" 2 -"Preprocess Assembly file" "0fed7fd684b1fc10" 2 -[OPTIONS_Debug_GNU Library Generator] -"Single Shot" "0adae9320aa5bc10" 1 -[OPTIONS_Debug_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [B|WONCEU|1] [B|OUTTRAD|1] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|MODE|BUILD/CHANGED] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|0] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] -" 1 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Assembler] -"Assembly source file" "08328a320aa5bc10" 3 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Compiler] -"C source file" "0af6c431a4b1fc10" 2 -"C++ source file" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0af6c431a4b1fc10" 2 -"Preprocess Assembly file" "0af6c431a4b1fc10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Library Generator] -"Single Shot" "08328a320aa5bc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|APPTXT|^"-e _start^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [B|SUBCOMMAND|0] [S|PROJECTTYPE|CAPPPROJECT] [S|ENDIAN|LITTLE] [S|CPUTYPE|RX600] [S|CPU|Other] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] [S|ARCHIVE|libRTOSDemo.a*libgcc.a] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFFF8000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00001808|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x00001708|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001001|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_GNU Assembler] -"Assembly source file" "09863a320aa5bc10" 3 -[OPTIONS_Debug_with_optimisation_GNU Compiler] -"C source file" "0af6c431a4b1fc10" 2 -"C++ source file" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0af6c431a4b1fc10" 2 -"Preprocess Assembly file" "0af6c431a4b1fc10" 2 -[OPTIONS_Debug_with_optimisation_GNU Library Generator] -"Single Shot" "097f0a320aa5bc10" 1 -[OPTIONS_Debug_with_optimisation_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 01cd0501904765a4d6ec64de979fdb1ac9e95538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179301 zcmc${2Yg&vbw3Vx?RD>7d)Mr)w$FGC%zJM-3(II`B)zpX($0)rb_uguX>1G2l6Exm z+CV5F3895hl0ZTN1PHy8&_W=P5C|j?NFfbELJH}Pk{?Otm0~ z`<`>pJ>T2!x%X|d9$Pwo^&=j!tvXWco?Tq-t~~-@kD?EJJyL#?pI3J}wRW|hx^(mr zkJyAieGyMXfL)!=`MFEo&eF>AImf;Y5Q6>8AXq+o3kTa5&_){b*&8_MmQKg5H&RzP z!=P$$xo_n={mz2O37&1Ze+ItSe=3@G}@J2~Vv0@*n`w-&PZO$qQp zqu-GLAGG{^9R84RPr&@waqz+BLV)?$l4uq%Nlqa)v!|i zbIpN?&;RfRHZuMHtM?8 z)nG-a<=7&9_FPWGHZKF)Id5%|&U!YdVpFBszFP_ZK{WT9Dz(h3c*&aeGu*?2l}4vh zJ6UhG-Bx|74py7>@mp0oe;Q3^FVJAU(rCHU4MN_|A&&w%={8PuW-85gqu%UPM%_ub zeTIZ|%WA0KU1`pACQh}_%+x#e_QZoq`F&9{wh^vbpP4-K00-G2A@|PKTkQ@9x@NS} za;u%G=~}&0oo=+7)01T1h{7B89SY!E?Mi#LMev(A`0ml_ftj*@OOa z6uN1&Rec^;(Kn6Gj(uJwvJ{ovhKHT8>DfkYTtUX7kgWnTJ309z4zY_6jp?>jRN`Pe zJs6Y~In>oak?ZbK0Hevfs#32?U!+CufoI3%ekj} z=xK-Qe5*c5J)cU$sLrIudIhJ3p4vY-=&AEl+|y0fMs1qQ+Ro~9r#U^_Mo-q6c!EOR zgYV$l|2i_ivV3;&T%~r;Y^zrz*`Fx`L^hO52qk)|W7sh|SJzO8E2)sD_{18k%NNO-Jjnx87+@*6TB` z;>53);^TF6j+J)3L#?2YrjDg`ffG9{#YAFg-)1LkoilEIvi6TEkA~OtN}y4loJBWR znVFfSmX`W&MFBOYC*8^VI5IId+o;mB)`vI)b}M}|7&g?JnKyI34dbl0B*WQnO@?#c z#^G+1_MNCV8}&)_EA4u-IXlz#dW=3Nct8qHx@cohPEW!`ll5mQ@H?Yrd5;8RTqxb} zT25;OXuU2W(Ef#lKH1iyZn^ z?cCFy)|pln1D_ZkuW-_;hEQ6fr*2fxy<-^i4JBaI5Y^yKxeW}4CRIB_4W1sg81054 zwNY=ac_(K}1Zcf0A<%wzLZI^=4tT9};!M5i&P`N-HsdCdbARmMhy^+ z7s#5f)>|#NF`jx0*B~5KQo6+p3cZmNx=9MjF=De`t-B}Dc+$X1kL=E>(1}z;MYj_Y^&bElGCW$M!!@&(b6Mh zBj<_`!dE8I+&0j3g3Zc|`!$t>QRNgNLL|^32`98G(97UR8K%+qMx0Zo<1?lrJ*PxFj^0cI67k$^c)yBLFzeN`QPXJ zcxtv?KV5JAK4;B!KD1FkHR+CG&WU+?v(jjPlv96)FEc}Ppy?SD8BFk1!I#5Rbn|Dq zL{)=Lxtc+8Q;^4ulJh|Tt?O93^$yNB)nJfr)co0Ii%N^~!tZhhsXl>(!~ltggj1Ea zpwt_*{2G^JfKgGIiJOyLZd3z{mCr20nIP z$UWYK-I*724>yago6GFuIvM_F+~XtNi*xf>Q5ZwtOzS}%v>eo^wRE%oVATDFgs3>3 zi)(sW!I0QPY0&zROsAz6-VES18rVFIDOjtD0U8#*T6$P!;P-2M`?S`rSLqDwLBc{W zjd8rW&r?-dh(|+f2(5?ZEIQ;s-GdB9Yv(=4S+bdWv@?25!YH)2b$h+4nC#N}lIUi| zoEa;tZWF!QRDEi?c}Dk7uZ)tp58{n!Iq1VeAEw%R`DYXcg{s|NKxG3b*4^qgT|x|{ zyFDb8q%*q08Ms{@ZVU@vy7(9{U!9oG>)y%0?drDY)-H^9`>p<5zpJf#b2Q5mCNRMM zp=uh9f!Izgvv;OkSFC~SQf0VbqG**IBL_VWG*G)pS5qsypKE}&09J2SzrxkkE%nn> zmw$qLezkm_`SBqD>m?lEsxeg2FDUzrwa`b6)vKKCo5vp^G15s)e}X%4`PS}Y!cRM0bR@uft{2F+6htf^+eA=?Il!jf~Om919{E) z?%b+aR-j%%EJg;qd}AGTw;S3o(z|fR^6^%I!+z0C%3B6vyIY-_$#?42iRn)%j8V?_ z`WTGEv6rT2T?TTeM51tG`t)0zzDG+`qYnN@v0fY6Rs1w3bu=Q?nx?@smOwGz_)Sh| zL<-TY2FsYO>DeZR#$vaT)+8}r|7;jlKe?MMQf%Iq2p6T3rGZsuEqbBev8PIbz)zC8?P6U_e3FqlIy=RY~v zUUDz>xE1l4aaXupM39!dnhBaK{*GKpt1*(pmK+jpz_xwK@|=sK^2cA zL6xrMP+rMsokFeoCRZ3m*`8|8W;*Svdopt;r!IgScPp7Y65&QOsYJMHCY=aZ%N$FD zt7ncU!i{Af!{J1m2ftX-F;?dOBuKc%%A87u9JMm1lOd~C=1ekV&C1+26lrzZZwysfJ3@YJ`rxzDI~&Gonj(f%_$ATWko)+cPGFhAKAwz!i{F{ zN`$LspO6Sw%RX@!E+;Be?n#MoCv%lVxKp{&VYs~TUw%9R4*ttm6X8blwM4jTzMcqI z%a0|()$;15S~xKbR}}UY?@fd|S)56LgMGzD zBHUYN?$FS1ZkOI5A9|nXY%H>#o&Fg0de-f^z1P zpt28gC^4RBx^6YoajW&Zn|W~}Wb?F}`SC=^Hgx_(G9+}qWGK>-c3Lk@goK^e%Mu}B zr}c_tNa%byhulN6y=H61&2(Bb$oeA_0bMt9RU%;1%{(d*u`IN+h;APYtAbpF zF=f_=!>FEI8V;jMaybDE+8!PTv&c5<%5WIfji(KVQN?&h0vNPCeHhFp+w3144ufs> zGl#=qoBiwrFlc+$FqlKOInNmmgKf?a4Tr%t=Z6!(pzXQCU^%ia_ann$ur2qa!(p&3 z_hSiQ(DuAxFf8jg-Td>1!(dzf1;b&mE&rkfFlc)r2NScf_EZzm?^9S6m`{Wo%`9*@ z(L4x!(MQI-3YLYMtY7I#~;0=B{;~gXv_&`fJ5rOoSV?pUUBMvNk1a zU*KRmS+Sm5ah4L{MxBcsPABV7vd%IG6C;+{)@Y_v%V6PiI`ds_4Jm-M1oFQ)q{xcU zi4QmP-yBYBv{c&G|0F<)w5{)PNS(ITp|q_>aQPPQ0fb=9%t#`bbrS~@UysS zlj*mKx#fkW?)50o6#QVAdP7vy1=^Q;50|7N*P1`yU07f0_C%D-wOo4Fh0;TDTff*< z?))Z~*6qH`;>B(c?rhWd+FbYI%Cc|kFLCk#TS;yPq>rsH&-WKsmaB71OaINup*cV31OE7{qOi4uTX#LLcKGTai$a(%Cr#;Wl&#t>HQ}@;D<|X%SPMJ^HLfIJfak4!29^S2*teBrvye9|zk*+9vCs`$m!h-Nuc>fzpAw zWI(r(9S)Q(oK6OG8x0O9%7VzXaH0-QjxSpp=Qeb#vw_=3UX(#h@-T@v)}VF+|NJj< zIL-z(qaka*9tCd49VO=wbB2Q5QVmp*$Jjbra{$KC;f(_@Ssf{9U=ENyxUE1Q&%~Vt zr|M086f_=;=-p9dbb3tYRR@Y0;N7IzkKsPU<#s1rH&JQeU}&>5u}7hPFY1#WK%pHF z4bRu`ka|6XFlq$}g#XVUig6n+7=)Q=H%X7~y<*c67`O2)Wwe1I=RP#%HW3a*2ZC(fB_d4P2&`| zILsn~s~_Sl+DjG%!xf*-ArBH#Ua{bF`ZNx`N1(+G3&H>$2yPg=kANay;_xPWhk#K*&MW}6dXF5}3jtY1-V&Cu>p>gZVg8QN+^(wk1=9!%C zO}HgyoqM>|ZB2I`oLfFuSITLefq(wjHbTs=;4&zegKQzl@=}$1zJs2xb}`>s?vHVx z?FzKGvY@YXh__{JX>RTO1gA!ryS6$v-_>(WL(5ezrnIkQJu+FXb!wG%Mc+v91|${o z$WD#uAa1j%3^7n!2vu)1xaZsDbJC&1>*IAaTT=sdG+U%YNAepwu0mjU=59{IR(eYE zn*UgN>q(saX2@Ha6Y8-M(z{JOCjC0z*nkKPmOk2GJQfl3sfyR&kcRsQYRKv$6R#ml8g%z;K!goBO{4Kx>g^zTdG7u!6)44OAQu@L}dLU;Y zNItJ~XFMhOJb73T@(cvY7j*87rzBq>c|8C$5F}sJ&8YE|`0DUk_R z8~|!p=$4(%DYuOa>{5DaYe?)T>jcjb6X)4d|H|b=XxCU=n$dPE_^n<`)wo;)B!~jK zYK_clrk*fRf==VgbbR9Uy)Q-%L>gfUNt|ATG$amQoLgL$$8zrVCJn!+a!so(_~(D^ zBDB1X2o>;s9PF?U3tj2(dQRY4A%FuVI0Gu?A)YC3;zWeum~ug&dZwyw9n#q}3>Oy3 zmL_D;n>qE@kVW1hHP4*4bNHi#7pKI;jc=huG+l;OBHJ``)GG^KI&bCD5gEbptZ2?Z z$O-Hv!-7+v2Nm+JD7iwlM9xg(x*0u%q;8k$rD49vvlI~biFlX%;UY*qsxVSHLiXUo zKzW$XqN@>cHw`Awui=sjOW3}|YdMKSlm_m&kZI_Aype(*4m)lz`m?_HEDuR0Fqls)iduaf17?D%n4cYPt%u@6_~G$(u3# z+dYMQ!RSU&+=~-9e);C8mRmwNwVIFXvFHi|Tx^09Ad_`H`dEz$Zx$D*{xCZ&qQ`WI z>IuUT))P6zHlc$KMXd~h;LuTJD8w2a3bCt0Ax@2hY?bCVtLHex)dEqg+|2>DO8}iy zdOU}b$>64dyEuf@A}$M9<}f=%O7a9znFC1z=)lCpP>AJn5NVD$UeFqjvFMa8HAlvx zh-Zy`&rpbSVkjg#ITVtc8Vboz4}}zFhC+(>4uzDOLm`#%p^(wWV93nOc&0uSVvP-k zpvBLu4ux0`aS&NzL;≥TUUi2!;YDmxg1ki-R#DlJ7|zMwZSN!uakV3bB4*D8%jz zg*bCVA-VaXkbIYeNETXC$kLOCW2~nP$Jh@H$2boT$K)1QIPvfrA{m*ss#vqm^;2y3-+WHN{Q; zwpwX^ZFCfH6?G23%;}@2)(5z!n?;xKiGh!;PjZh*xBbCEPn{19dYb+4pr^Ty40@XX z)j>}S9~<(lNHt<30U$9xoc9Rb(+*x;zlPU1dNx|dB|SD@GN4CT9LLN`L(rtCCUqqYhhZiKj* zLu^@HpnK``vg#|N)?H1{CtG#B{%ioCV5ZV)>6KmM`Hs~EF)yfM3+L~+I9b< z1JvqY=a5LQ-JGrK#cU(Ftuqs6g!}XYn=ujCClHMePHtM6Oa}`_73CZQx<^6j;@?S3 z$O;^AmjcQggP+8~jw)E_0(=-ji+njw=t!IpT^W=gEHR7C!bW|38p|+k+=fAuqbG6_ zn<rD&yQjF^oWjHMYwh4R-r&-X2MUL7r4zZik#@!uQ^Pwy} zfx~SfT&tbto^PY)r*J!c{Z0o3axaS9o*R{C`hGW$t8z2 z8p)l;U6VfeRUBC4b?o=Jylx|1Sdp)^^?qc$x5j^;(=b9BXd}!kY9b&BS&^G0=@%)} zULB=sFG=d&Yiy=a8nV_IRqc)D=@3cHOp8J)?kN{d<=qNyRM%?-oZ1I!RbVp)q~bE^)MGgj(SBjA zU%thGuI&C1t_2a=#&Y&eWDt$ZylN(zW52;m-^>{%n1-loRc#I@ zd@o+tqjv}l--~i62Pfmr=~L|qJ>W8sGEwoi5bBfe=Lo-EzI;A(342c`aC?SDM(OMl*>FL^XQGQbC z_YAg*E~=*+|EIA9-_pZJBMsq75jrSB52jjw#cACstXZ7D(7v+T{W6Ebc(B)>rMCoh zg4-rK{?gc7*+F=5%V{dDBk>F)Mf)j0enHdmlLlBc%@Qnkx@nW<`JBC1(NgZKxu%ky zT0h4<-GtJj=g5D6;*5X(*VU+ljrLgT2UU?X!VC9!l~e}Cy-)!S7aa%ybus%94!j*@ z>K?2s1U9sc`SLZZy-Ssa1v-1uUTJpc7OqTU$3N9kHPWc`hYh?q7?gUH61W}4gz`=a zRL^(kFNgzHU6ImSD!re>9|WGx#Z*V>FpWI(le)l}vkT}6+@|R+FZNSu?Frfh3>k40 zFn4*ai?Qa?%KQa)xxX^j>vly}pP}4035k#p>7E2yX7H~SY&iZKXffGM2hS($&DO3x?)2ZN}}(&D-0?n3ItT$$drdO2`n>pYi< zU5Iq3*H1*QbNyU28~Yzx?RGDOBDQtI{FEs6kcXv(GL&2KYB=5M8t{Dr9*n-$BR~Us zP(UNsz3Q=mf!-z1`ubKqN-WPub0|F;q zfrulKh+c0nlpYL##k(PCzNyiM>JbC&Ht3as-itqUzi3F_9F-Jfu!rXCt; zY;V?1G*9R4MrUH5!u))+$vE2U&R<*?)ssrA7(VKTcufgCIVyC65TaN-y!I3;)e*Ue zIJtvDZcMzeiN>3vWz?Okk;-m?rrDRMOb>HfcL|(c`FuJDyH3DpiPkV!mkGm!y+S6? zjO#AfKpqgt_9?t7z{{Dg@sz`G^BbwMkv{czqW<2}9HVxzuCitjy;*GPzlR%mipSP_ zxyM)GZ8&3kA<)phso5Nx;1b^6Y(-0$5pKR&T(R^%E_LzPdO!DgQ?p(DGWYPRW_xl> z$5I)V<7sQ`9^Q2C0{eM|IT`i)W)Yn5>umBAm+*!`Ppvl&dTRgTpr_8820hKadC=4R zTezn?{3hKyxB2mCzW4f|@D}D5qR5f8?#0naCmDK$*_86Fk;Z;VMurB{9QFoaeUntz zPl3I%D{63Z*Fz5bre5pjo#+%RSGrqjL^DOEiS1Ur?}%QTgz#G38ync0B({O=GbS0` zqZy)mlqeR3sM+;ifoK5tN}#{JqQ~e4awn~|&}-Ld{Ou^W7;QevfJ9*^o#jBg1c;X1 zNtfPwG<3-n2?k|)yU{@HZsBDT*khccS7ujEzYZRcodbn%ZsWBaZY#YEfi%%9Dpu2G z5n=OIt{RBP*4qX?w%D#!lv8f$u0HEHvYk+!j>P(+;G^C;4A@!r2hHb4=D9rT!#}WtGf_J*2+5b_l z>TGIPYPvHph67t9IXeIJ9sKxTNBUUcGPkBu>8}Dq72y3*IuDbCu`QHJe}fY^C;gtIg7l2=pp1R9ysE)&7~w*C9&97s2jT z19kjgIJh9whqq>NCupNqul*AzaGTJNoMYXecbr~xG8}ia6sMQHiyk((0w&s#RC*WZ z4dHa`fVHa=at?*2olZMp=k)|9vxCx8E9W2L@^qsIqD_Bu^1Q4BjS_ctyNYuO)f2y@ z0LJMF0jRboKQIu01N^#?H8kv?B=FuIIwhzxz=Nh*t&ea??a`V5q9No*Ip9tWY)ntj ze3(Ottj)A0-ain4>n`-kFT-k~p>?M5-hmoso8!OC0dD9o;<6`id`pYXm@hW)ZX?lP z=!Ly3N(cV=Ux$R8xcwrq0;^X*4fqiO_c!yrvrD?wWh5H(#?{G5tas4+?mErWskA=0 zbUtd5Od}%EhQxDK<_(F%!YWUK0^dXuZ`+6frSMWtV5y8Be7@!YSAv zR3P>vQm^5#*BMw(|LZxK?LvlfpPu9}(rI-u07l#f0zq(KxzeQdjaKRe$I)$4bF7qC zh*Q&?_z_cF_&=qu1!7nVnJF2QFLO_&3(3=x?PKbGPC~jmn3h_~X{B16%q>Qaw2beL zQ=G8L0fs4f?H=vIq#n;n#h6J_MEBjC%uR-wG%FWmtK_PjsH~PjulS;r<~S!POCepF zn|d6Fk$Dj-m2yARTf0xai7UA>FL5%uX1t9Py;isZr-o66)LZ0b)lZ$~M2-p(u`NE0 zd+Njs=R2c_ENi6FKfnpebRt5cK0e5a>=fzHIBvR{x|8#lBx4Hu6*ajWLT^nL;bQ2b z+V#}SIrX;+^)%_~P}qv-_*0kl-KFgny2vzL$b9j-TU-Sdb&p|9^~2;&8xigw!^Dk`oA$Dh0F;^!2w) z?F;q+$(_(Hpop4jyOXK(cR7KuZUpY8 zzRf`cmWz&pjzoxU=hOkN(B0tsMepu+u-54|5b)r(Q&+g8WZxpP;mK*Chd7}?-aR3V zIZ~TA>jHVl91I7eQad=PE>DPWmQb%1O6}ofWD6=Xp_cVhS992a?Q($)-57PGO)j%? zz$lfA6*&lCXCjrRWs2A;AsZ_-;)o9gHcW{QObPz#>GXzRXG#@u|5-QtLLJndN zb6Dlp0M@GwM>!eUs>^&}<;iX09;aJ4@Fs+c=v63VX?{c?XDl-k zQ1*dh^`ZGK4!9RUw}$(TbOC&qLcSlY;Gh4sUn9|yAtZ%178e!PNd5@0>W~V;FY;t;nHT@C^Oli z6HDMdTv~JVG}f>vjdg4((A6 zBNVB7;PsdzUXi?8Tc4{kFhY^K=AD)pc#Gtf+WM|BLy@pr-s1jioStozGjWl&UY$48 z>>&uMkG`c{Hv|KKGKYOGQD39X!LvEwZZBzJB1I|1dSkD^iOas_P4fB#hhbv?DUHl0 z&?&8);gB*r`l|8D=>r^aCz&Y%z;J{AUvMbFKcVpdWdlL#_UiAbvTbB`>nyIQ!tKea zuW+S*A0cRJ*21gj$EeC4Q!SoRQ4af1T%k7JnM8pY!zB$67p zAVc`)f9(RwkMPy2aR!W((a|e$B3f@k8K`|g$>m!FW{7n4TAcyC4$$^=8)pZRi77;d zU`~gwNVHnYTZYW;^`$m;o$AXAZCW_fW)y)B5_!@>3l zZKEx$FJX7P+59OExLW|}3Nr-IwleQXfNP!}%e*rYZYuNc1h_Wzy(K zUiqB)d=enu`JDM|GT>-RZJ!@!f)?+9trT>!zh@?y3N(LM)eLESjTKY~hV6F6@98iukaW!0L8gF3V#PwStn0-|u zn6o(%EW3q+$u3wN5JdQW9dECI{ck(pD>%3<_JVd@?9( zwTcO$&|2W2d&M+ToNeqNRNT$Hkt-cxr0ZthoDA7?GryP&*>*E;8jiGtoz`2DAzjyc zdopCxwceTx*>_M-8d9ylYRD0 z32?B_zBvI7_Sv^4!9m|GLvaq-=iHV62m74c6X0Na>o+j zU|;Td5*+m1ITV*C`|^)TfP;Pc$0oqRzI-ML4*DL);p8lk;^}Esw34|x8E`bSl>^F} zE;LS`bTivHoR_j#x2;&)lL1Gq9URb0*}@w!U27+Y^HLTo!4-Q~GT^Aan*(|&+my1s zhr@X(i?!v7vo{%V)Y-=Yy_6kF+1bzGTy!^y!a-qG1P z1+V`m2iqp@qoSL#p3ZGf?eie|Dyo-qQ6h%~ly2%;oWpCyy5cIXHGL0EKo4J{ z9m5LUBL>B|e2*Nsvb;9U8NXc!h%4H3Adf-F9v?Hi++SR}ms7Sw1L55n4s=j}uyfj6 zUvA@k8|`YY>C-Sq+S>%0?rYOWg$&4E0h#G7uJjiBS6aA2j!RnF*X*vXU+n4=T!y;q zggU6HtgbFC!j14BIki1^P9O9!WTc0X6I|6ud*WKTu_wM$Dqmk)MclK#J&aQ)Q6N)q zu^YfcmrfziU6E#cWpw@Q*={eD)^QF-aM89?6eL6u6>nFC(+HN(5VxTNISt4rG#@|B zHP>5DQJ4%;prEPPC>4cp8z15jdoNd4nk(zr)9=b_0RNI}S+2f}I{+8DJ-zR4#42pQ zOhxA(IQebjv5UR+zvm#kE>CqYuJo?Riu6?ucJMOY;D=I8jV4`8*jjvA_ZeJ4+${qb zL=%USc8S9sR=6c-Uhei5=MkdNMS#KzCvY$-&_X%W=X;Ifqs>_A&){~y)H^pz%HC@< zK%Q2We(D_@)Hi@qMwvvkL+b4u`jDqsqH*)%azFJp4!%>uWve--d|=eET|rdpEed92 z>iQr|M0+5H#A})L)i8$7_65bn4U0OY#DMMzLP2w%W9@(hDvo9LbPSN8Re3mEAXYim z`$MYH^mY4d99CsbX(mSWT~~$?N0eHWMd1T4bVlF8XGkdSWQG1?t{Ux?dZ#aSdk<5~ zmiiCXNEq~~s^KB&(oi}V@S3ZbLcBw&7A5`dDt$w%ash#q!poeuROQh%;+X1^4V8-A zCR&k8T~dmYpl?0nyd-!^{T^2jl*$%{G4p6}gvxc!PL*$>Go`QSF^p8jgh1Mn-{2gn zd?ahEsNYi@NvfFmP_2A|Qyws+jjLLzIry&1nPK#`l2NH$V72;3a_Uu;1O>7n{wY@w zRm%h*ntud%N%)^}aFx;a+=WPe&{r`UOz*$!wKWwq@2E(r%}Tp5staQ&k<@~6xq&_6 z>kW-A)A|wzL*m+~gl-H|cd*0EsEB9;{M)FFG)AHVUW1_||CY;pz&iA<0zI*^gg!r2 zS6y zO+an*4<#^~@V?QrToKxRS_XuwGub1`665lpM~m=83YLrvl_yqKF3c$@qu}q9Qex(l z8do+LA@`8b#`UjZ=sM zglXgSdY@2V;ZO$zs#iTfw|uTUgR%3*)>JEF$n26bYDRvo zvcrH$YgPa87o4>UCHsB-rU65j%9B88`#!_jr&Nkbsdp5NQz=kdrJf5JU=$;AQ>(wS zn$nG`0YXjGAgxf3jSTFL>WDrHOrz3ApxYK-aFhRa^wP@W!boTJ{FTnd#l?;o7j`l! z`fK{v(H>xw^oSO|4;Qke5LJ&@p(B1ut7xAtKDgAC65m4-u@ct$@|w7aePj*mIelp* zL>E$#2Utq#%q=YR(tpCK5-Di~=Q=S;j*TqL_2<%eapo6%^C>wD^*Jk!k1VY$pBq_O zrNs?#C4X%0A|}ZZc_d@PBpQvxYB=PZ)Sts^_oO>toecgo1%DO?e}b<));8_*<0ElK z)48fxqtC2~ivdU0i=F<+gX?EI_)pnPp&MGC?~kmm;pG7I$7A#q%5mDJKeE(a#*Yv= zCV5)z_tYc#JD#U0BA=3^H&=y<>%%cg_E%EK0G2Phy%8>DvXJI!bG-{)B#M8>DBI)=KhyNv8rDG4C%7aYuk$S2H-G*DmgQ2?m-y-U z$UN39`_iML;0GL?-lB@cg{UL1pQracboyw5;2QrIS@3>L+2TgUGRl_u^K(6sSO@DC z7;kuf3leZ_WG($VE?0Yn$7<^rFJ6&p-k^}BXqtAnwbbpdPOU76HPH375iv@rt}LHj z>|KmJle+HOF6ml{>N+k&TXaA~YQeBW{Fd?u9`J|giqo$^mqDZ(TC$pvaHDpP)}Elb zb9Qm5+ab)FFz49FT<=_(7DY+h-BFwDA=(yKgf7{{N?pIp>2ikXTJH7@!+wraRve;? z-pkrqIV-ZOGD;HN^rX^QiDq?}<9hv-HN(CSa`qL5*w@3!Br4wo3o`KyPT?@`_2*X& zWzXc4>AZ?^j?oncw;fc~Wh_OYGtn)?`F?+OK`8A~b)h?rsgM|+lU?q_TyNpwxn393 zZ8S2ZIqjnDjiw}Ni3t7rY-QqGK%5{HX@UiZlfiw z#OdUu44q4km5E_TW#{eFjaq0Cn6tbzDTHBDE&myhN$NDrj zJ)cC{3*3O5$03DoB$bmP(UL;Ck0iOA&mgTBCYSRGJhL%5kH3=}kdq$YiC1p$e)tyZcNTgk1m)@YNrgzmiarsAvxqv^#nA}OP(I`r{w5CuHD zN#(Ls|5W!w*Z(A!L;jT9!yA%A{*>GgZcNTg?`a#5lOgMpzh`eq4*64k>~l9Hhx{oy zJ?}Gm&6sux=PbSSeslxr$&h!MKiY9j%3q%9pBfOnWJ7YupOX8@jmdfGy^NE)B{FVp zt*>@_Cl}XNdU!EzUuJTD(m{fbx6f3h;6X0c=;*=|9F>BHIl(B6Djq-MO1bMextIjy zy(-Gm>o+W@EFIwlV=SfkeM?z-3nv$2sl3@mS$g}11(l^~PB6w&iubpbrN=qB7)#~d zGRo4&ZCFrQYIA}ymeTnEM_HQVDzCdYC<=ouRaLfrAEGL+J2=sp0wL{HIsFOF zzpS9j=ZiNch-|7{K5xTHBW-MljOQyUgkrhaC_f~t^zZo`7Akbiyyg5oBUf+_%Xq9u@oVwy!z!02#T9biYkwPw_!n*$G_Q_;J8~_sv?RCA#h)k^L(fc%Sd5!Q^wa7*tQIlA z(6PRzF4>iK&}kfUv|)#(L`hDGHxTj=6MfWP!D-swmGm!ck*bU!q=Pb&lEOXx-F`X& zNeLTqo^pqczz9%7fMMqBx{lY-Q#V6KZprvE=jWEr%KSZ-OXeouC`xB;9nmD+b1OK| z3^$YW)34w}HASn44;3#Ip!eXkam##awRcH}h94hUz2wJIr@yp~agGjMidE(vD50Vk z(fBLMJX)R)m7pi8unkk=C2>w0d$8j8Gs4p7*erq!Lze2=e(L+xJJVZPSf4laeo5K8 z5xv!wi>ru5hsCJkQ*-_ER2n1pUQ&7sQG0bXVvHZ8UZ~YN5xx>~f)3i4{@*CIBTC<{ zEd5_8bs|dt`u~N}Y((j8$Tn3@!%`h87UxrO{(}fwi)hm^fYqoob9_lfTROHhw-!e@ z9l9jr9v4-27q4z+WofCqFsRt;@iFa^g{o6BtxTcUQ%ghZfULLH7v~oj=ERlk5l`wl zmEp;n%DU(^&*d8l~XtemA-Zd)5b>a zAC!V9*-Ag6Ykln(RCwWS$U~@r%q#ob)lnD(=i^L_xU2zxs4OqE=z4f%_&NpwA~t$` zP5immUG1MgJ|cdW89Jtdq*vE3i@%PF8vxP;E^BjZ=+hVHNAThhB*Ș>A1PC1q@ zC~2RWsiRDUll~Dd-;Y&E>oQk8-<`jJG1W<22_o1+=0%N@-RZw7{uiUA>v2ktXQUWT z!H+^=^YYl@*%kN#BNwUYGpd*xBemmk262VGthAT|A5M#YD?z*4yNLTeL~N`WDEu26 z!yQ#cf#B!Xd);~;RkI5J)G6dlW{X}?MfJnTR>RP;dZmWL3v?Do`d55XyuOV4T$QJ2 zkB^Xb-XAZiqI5|O(=JANm>QbSW%2$oPoqvorYaL#)yXX4J3Vo@HpF{&m5@fQG2C7x1?N9IS!=$DGDgL0C0d&AR5|plknhG+HXrJJ3ee z(_NEc3~7Kti#=(IU-bOSK~6X|w^qNn+P{+is;b;Z<2SC%40Ss)!;v&Xg-mLT!;2fUPE>C+^g<8OHPQ11zR99m%6}o{)HyM7OJUw!aA~;-2fAMNryo@IOwJJ{mZ=xN+ zN?aGK6lgCI98$qimP=jHnv1{q{zQL65S_ZN_!G+Vu-66{e_6Z&OLTJ5>QL)xSR8)pSsVUy(9*Y~_E8l!8q-p|kJrSQMKp$L zpzjT0)bJtwJ#HMLI{;OzOdpua<+w|p{YP&r(n^1T8*Av6F;Xt1TAB`WCf}|~nlVru zQ(hQiazJ;i#lOQ@933H2fu$De)MEeq;&KbiHcPS)%i0&Jkb{RL0qDqlOUx-gHl_!&Cd9*c$G$AY;^ecmscZiokH3UKxroW>^q*Pn`1tQ`=C|I>6s>VYIap zg|RYE1!i*PT)o#@>G_*y;T~@tlgH(5TE})8ZHnG|(YX?;6*t16^Z>1IaPQ@fYD7*a z^1zq>rSAv`DHE5E5j8QIew@<;MnXetShUhxz)IM9x1*O{<@mrG+ePy&z=2tF^m%J# zy*J-Y?^G4V@JzJC#hD(H1o`$&(UR)DCyu3WE4BAWS&DX0$XGxv zHGDm+?qgKIX?`=OSugEt{==GS&tQO7+J2y3#jsbeJosAA(e|C?UR+)3Uc^mPfu%#b zAdZw6tB`t8G^&Kljv6>j4oSqR7zAQmGWDCJxNp(HEM^~PIYm=!o!Pwx?C*%pDG=r zAJEIXp?2O#Db(6{Gb=M0eVD;$^P_`3YDTd_z1+ttH(e=7RUocO)%$Mqus_r|-yC5L zgB(zet(zXY5lPi!RGy91lIT)Pi|%nATf~UoE3xUXsaE0MXu?KLgo{PLDg2QNdGhik zI$C;|zCqOa}rfZB`W>PO57k&&k(&e4vNzUXnd(z1hM9V6SXU3cR$C~d+XNq^Eik#npr)iL4DPXr)`;Psp##Q9fI_WxG8qDo1YEnik+E0%*{;IZ6or!D7rujS3qG^&A&qm z&Z4WN(%(^qs~#;}ZJ8l)-;@Z3VeTUmYA|3Hca1zKHUR@;1BxY*e-sxoO(-uKsof$M zy+vxv-G_}UuPAuve>hWblctKR{-;3V%6y7aqfOUSbBMTFpbN3nFID2k3bL)lMIoRF zA{zR-HE+a=-(*?PySTkH-6}^7zfrdCWOT(9sb_N4@TpX9{f$n{&}Z-me-TvF6j8Z- zkZ1{4R;SO3huDo@5CK2c=~^A~Rb2F>ciBQC&Q;}1Bc2YzEd%gjh$an#DjE- zYwB(nrmZio($$2Hof5ak;Z{Hgu}JdPq?J`GpZ>Zsg^t{Y%4cYNrqpzL^OriymvQx= z2whlCzfaXLLt0)(_*mod@9ZvVWvMe^7P zej;4@U0l|c|4Ax%wVu5CPt!|x65gruX7F>js#-z?F8CVJKVV}uVk$yT$r`P;M{Q^N zC7j};vS^UHMO+S*SM~`i$zN2B3~LT}4)b|m<-kV*DXa$7>w|}edU@*+nY4t#GWuz$ zL1g48SAu<^Rk^?=YS75prMYwIkFr8*a`G>3m!t#{38#msIZj9vDnS6X!m3v!k7z!r zeI+(esP$8bfU1k>TT%`SoR!-`$+oZ}8@6Dky-SbU-`p&P+;4ns<|-Mvs4#8h3HO-TG2g=piL!^wKv+&7_{cj(s$G6^%^r z4M>d=ybb@6TmMT>_!ZNuI2+zsn!AEe4qS%8$9Q-+#1BcB4m3Gu} zSz@No(ywai;lGrTx1scfN?t1LZC=AGRZ%k{mmVLhK~yA)YB_~*MQ;k%1IHZ2NPm!< z{UjA6kYz7!E(FC=DHd9nMT08#8e~86s$H@PH7t|o2`>d+1VNE^ z^dbl;_*vC?QO_5u0e6UTT~JW29*m)mb{BjFAK?_p`BhMX+Ji$x;zf6P6=QhSzs!r@ zT6mYl@;UDobvJ6zF~cCNC9bcw#ezim=$PImH!?M0>Y#-+dRfugrIm+8u1tpX0?z8Z zC~0(M>?gTg&ulCOu{MBGirIv`u3o#uOX&kDrEO7v$W7c!>SZ!|^_%2WM9MoC5CQ)m?wIAJb(x{d}dh8rAw}sg;Ie9lY?VBdcLg7PFgR02*#{GeBM< zdr2JT6EBt`Eops{*BHSal!?%CPyOQDyj1>fWs-qbMTXEaL{AhJls|V_&CT_4cKXRm zhZW71(jf*ho*pr#3ATXr*t=2P7{|zU3K4VS+mZ?e+NSHufIIL##FkuviwM*Bi5*yZ zSAQFZ$Q8IaUBVdBN+puMr}fc3!=Q1=f%FK)rNw$f2Fj48pr0DuhxKqUeMRNiu(D(% z5OS3YQP#!=Rq7&d*nCe^C5GYOr`cyYvsJb7{X%IZwfq64)v!E3nHo9m0pD1+pd^huSraoSboNQt4j#d$8jiSWEQwXklPmD`nu zHKoCrv4$d;E}{9xyC|;6h!ymhR1B!A@H`MWy>L^9x1d>=50jYd=l@aY@4`E4e^P~2(HPv{aoUE_XbP;c_eQ3SA zJTIcR)tG8g)l*uQ50!P*X0=w%_UYvf80^S<73ejbWMz6g*X%q=WrB86bfk|UMGh;6 zj}D)sY%-3A-yP7bUSzr<#d`Z_KAPDl1{70H&(XA69x+ccoV}n7HqM>j8qq6mrU;l! zkG<#vBZ%tp0qNi&=p-hcQzktwnpOE8sY{rD_q=2DNfhdWG96VI^j+X=byBkRjd7ZZ0ke^r$qz&YgH8{JaRufzx+oYSTWYu>lJ)Og5EG)|C0B2APDO1}BaL>Z zW0~`se^OjMo|CdWjwz+j2N_aNk;R5GtB)W1?~0FEk!Y{rEk%eQMqevl$~5?xP5L*u zlQd5rm~L=JEPjqAJMbV(`mk!JZ-cMm+9}Fyb*VeIJiCg%K*UF?aNV%P=0DfVozGCSuJjUIVlgiZAjOx^OV6 zduefH9jnb3*uZ9YdA=t?4AVc&C3$~rl79XNB`AxEkCo@+{Y3QxpBJ_V4a#+Nhgk-n) znw^qhLoArs<;8wj>b;!QV|{mFJu!GD*IW1s9K1~*n@yG>@KMtzgKT# zn49%|H?xFYx9MfEdMa}unoKo8mz84mviBHKLhM-ZQ(U{GMxK;UBRNVlxD*mdDXvEP zBhUL)`)L%*4xhQepjs;bezN%;E}MaFDw@qe!rym>KhI^jZ)A9O83FnTpk461>8hWf`nD&{+D7d{D2h3q}oAW743#Zc<~9bH)x(I@Hpqsak7TS_|;3Jd2r7*rh^y zbdrok5pSXTU${PhI$nFgTr7c-m#|T#7hR|=2yW{J6M8hae-r30Q7v#uS4<9Q?T#L$ z536?1sO6>>(^5~%-*L8_^fL`t2DXDJqwTqKF{WYWO=TEcMWJZL;2+YTxteKsTf@=| zW^FDmA?dAcJ-(9Jg2T0a!yE{h=o<}(Dv)M)_6j>+o&-&1T@n0FtQ-}6I|g6dXD5| zXiB7emS-RWwLvXG%D;>FVV!_sm=!dvi`_c!7A5*oU-Y8d+k4h8uBLZ#MJh0!Qm;Xe zDYWes^(_4gwGd}is2DxL!l*}}TF;MhRZ2!~i2;eiV$LQ+avQ&xEo=q21@(V;3NOrpi{z|ycj zIcIFn+TjNBa;4V|tskwmFeRdEV?=B)m5KCi%6?<1D9`AkN}$)RWAuGh=`+^Sa;83G z1gS!8xST{#yU_;sR%CznYsJ4GRs&RDww&8Ss^kNK2Iq$R*Pbc z3oja(y7W00V~yzch;j0e5>-Iiv#1r@mn5amU6Y&h@rCK{l)sHF_?z^}ju{MBFz3Xo zahGliq9$6lF#2@|#%|ReksOc)xsXQZ($<#{YA0%~j%zmdn{M?_xzXKO@zNhrmK*zB zouITRBVvPzMt$Np{D8GB1pIkJYPo(t-Sap*KBAEk3}n-vQ!T5pt@CU%;U%~ZNAMTt zQNFskX(e{&L?0MYBYSmU8oOC>d?c98J?pq93HKvWyvtKm_hMM~64eVwh>^}QY>eN| zAj-T^gl8jZ)V*(LlS9sV{c-N)prNl)g*OcjLk-6BgISB1N9P9_|4Gk}uI4*6GO@Y7f9xf0n#B{Q| ze2y-mWM?eoS}|1nFI5K(9_6{bNac}Lm=PltqD#b&8mDD@V}QKD}RCo&BM4ZF*Vh zH1c>Wn@6cqG_(|mM4hT((HPUrNv5d9l!Z0SjaVNMlCq?vf0b(y&luIY+Dy_C>N_LZ zHZc8aHL^Dx(j8De{lr6F^LA`y1L7ynR>br%xHHzHT|UP;&^fLY=q|ud+t));RMnLx z4l3auj8iKYa029Z&f!;*Xz7Y9Bj4h@^8BG*(S~i-{dPve@}V_Z}F+@RY+4p7b&eTiOQ>@9tG&C!@a^^+zI}@7DCVJkl|S$7Wb06?sX2Qw=#x z4+MP{%y+`ZMmj!H+u3oWNmFPnHqMPnesVZZ|33^Jzr+m?-ZaRmx|tBpHrSIM3Ky$T zbMCA5rWKdNm&ntURWxS0zWO2~=n@0Blzp2Ut-m*!zjapP>&DQm#3e#~B%7V^xI3Je zBV6stN@q$NF(nV|)I{e+-rzd@F0MH%1)VAD3nr*Sr?(gqRV$vRf16WzS0r1U)`*v- zR{e5mqtSShVW=Cp0aG(4If^Ta>4RKPcuyQ}YJ9+_5wTt*nf@f#`QOc1Pd9HRF#hqJ z@$PWr%_L%N|6|Vf3Bz_;Y0yT;`C5--B^!D)oBmnV(Ho8SWg`VOJ=l06!Tw@sgOaYX z77cJ~#I`tR#yh}^G7eP`Y9YKPF8w!LwZ~;i{x$Z(=`uv0Ttrhe@hAN7zgpD#M{Y*Z z9jLyA0G)ZP4Tdd=^aZdjG?9~qBNP$4Z=0M?83kl2dGetmgEUPm(l>C)Gz}lO5mc3+ zF$`ral%-AF5MVY`2vlBwi4H`sG{~9$k%4&p1gZoOzA$i$NOX> zN9si-YHxJFMr@F8zm=h3qK@&npvst$zlFH`MG_vkWg8|xKJ}LBE^dpitbXs%BjZ~( za&vfU6~59)&>*fglJ!<;k>@2;JFo6-_twYs-2hnipGPpHc%_ZO4_*r834~n}yz@Q4 zv{-cz@041Qg^Q#@H#3FaQ=$c9ifL)24oE|LzTd1uU9 zf5L-huOP!w;RQGymx96=sB(URkW*ykB*B5)9QP2hei{<+`_IZzM!BvCBf_B_f;9|L zBh5s7a7g;=s?Zv$pJ;?}3{V^>De7?gDXsyy)4;;kz$>O?D<*fTCRKel3dr%G^JR*> zmhW-L@YAtc^g9EChJ07$#_-ayaP849^5QmRa0wNz^i#OZ++mh=Kky@g#~a!jk@m%92qm?&90~sB)t^q(7}jqXtv8 zXfFN1s2?{eTRAppGyQ+KF~AgWGoKC@kD5Nhb%tm8OfXTPv~odlS%FAU`jhTsf~AN4 zE|0BR+)yArD4P_*=SBZKpDVC8npp@5?%|55QPO14pf2NP3G)I1r#8z$x>?d<8lbS& zU;)!XQ94+W%i$*iV^q0siy>=h^*7wX3b=fMj4XdaQpCd|!JlVXH-mm$w-!{dQuK$e_a|!M^yBslJ<|Y)be9^wC~oqnnV3RXJHS^bFbz3@is8FtwzXUn;A zzFa65%cZiFDO*>Ev&N<~A49b;r`EssM&K1kKQaPU~=dE(yF6W(cK3mSi-h4S zlnYk5V3!L{xsWXva^(WDQz#dTLjc+i3iE%?xa6D@erf*URP(Sjo_c+!F^E%?%cGc9=2f;%nv z(}F`Sc+`SRE%?-eQ!RMaf?F;4)q-O!c-DezE%?@gb1it+f_p9a*MfsBc-VrAE%?}i zlP!4Jf}1V)*@B}jc-n%iE%@4kvn_brg1asF+k(R_c-(@^E%@Am(=B-2g4-?l-GbvS zc;15RE%@Go^DTJag8MD_-vR*^7_dNr1r98bV1We-G+5xl0udINut0?cE-a8?fej0E zSm473A2#@~!G{e#Z17=&4;y^g;KK$VHu$i?hmCSGXNi1@R0={S@4ksA6f8`1s_@Pkp&-F@R0={S@4ks zA6f8`1s_@Pkp&-F@R0={S@4ksA6f8`1s_@Pkp&-F@R0={S@4ksA6f8`1s_@Pkp&-F z@R0={S@4ksA6f8`1s_@Pkp&-F@R0={S@4ksA6f8`1s_@Pkp&-F@R0={Iq;DKA35-m z10Ol?kpmw&@R0)_Iq;DKA35-m10Ol?kpmw&@R0)_Iq;DKA35-m10Ol?kpmw&@R0)_ zIq;DKA35-m10Ol?kpmw&@R0)_Iq;DKA35-m10Ol?kpmw&@R0)_Iq;DKA35-m10Olm zj~w{OfsY*c$bpX>_{f2e9QeqAj~w{OfsY*c$bpX>_{f2e9QeqAj~w{OfsY*c$bpX> z_{f2e9QeqAj~w{OfsY*c$bpX>_{f2e9QeqAj~w{OfsY*c$bpX>_{f2e9QeqAj~w{O zfsY*c$bpX>_{f2e9QeqAj~w{OfsY*c$bpX>_{f2e9QeqCk39IugO5D;$b*kO_{f8g zJow0ik39IugO5D;$b*kO_{f8gJow0ik39IugO5D;$b*kO_{f8gJow0ik39IugO5D; z$b*kO_{f8gJow0ik39IugO5D;$b*kO_{f8gJow0ik39IugO5D;$b*kO_{f8gJow0i zk39IugO5D;$b*kO_{f8gJow0ik39IugO5D;$b*kO_{f8gJow0ik39IugO5D;$b*kO z_{f8gJow0ik39IugO5D;$b*kO_{f8gJow0ik39IugO5D;$b*kO_{f8gJow0ik39Iu zgO5D;$b*kO_{f8gJow0ik39IugO5D;D1eUw_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn z0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^j{^88fR6(B zD1eUw_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^ zj{^88fR6(BD1eUw_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^j{^88fR6(BD1eUw z_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^j{^88fR6(BD1eUw_$Yvn0{AF^j{^88 zfR6(BD1eUw_$Yvn0{AF`k0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#p zBKRnRk0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!Bj zD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#pBKRnR zk0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7 z_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#pBKRnRk0SUef{!BjD1wh7_$Y#pBKRnRk0SUe zf{!BjD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo z68I>Aj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdS zD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68I>A zj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdSD1na> z_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68I>Aj}rJOfsYdSD1na>_$Yyo68OM;5EGRQ z7{LdoDj9Hs4@_1vU;@Iew_3o}!a0AKhZ2{48ak^pD;APKOB50U_Hn8%U?n8OE2 zfIEDU1lYp|Nq|3mkOUaStd}IfAwEa~EaHPCz#~3L0!-qAB)}!+$Rq(a@j(*c6CWf2 zM)5%s;1nMu0ah`iCJFG050U`0_#g>ziw}|jyZ9gp@Qe93Nq}K|kOVl!2T6cse2@fq z#s^7&Y0TD10$k&RB)~R4NCJH0gCxK>K1hN%2aogt33!`6AOWAy2P9xQeLw>G>4PMQ zbA0{Z;;sbDuA)l6#sNh!g6klH=-m#F=|9qz#Sxl1E`3~KoZTkjJSXz!#Iwjqo^nJ?yc(a`#fKO zod4FVQ}>*|{#q^#Js9(vB*2*0L;=RUCJQj;Mi?;4fRP4_Hekd7qYfB(z~}=;ATSDn zkqC@NU_=6=5*V4l=mbV6FiL@u3XE1@!~&xh7`edc1x7G1ih+>~jAmd&1EU%k*}&)q zMmR9afsqc3c3{KJ2c6ITZ)QjvkCTMF$vq@I9yQ07DPP zoYDgfJ@}qeeSo0{-*XBOF!bPiP7MNv9(>O!L%`63?>UtS7<%wMrx*c455DKrBQS*M z!S|e!1Pnd+o>P^8p$Fe{3KKB&;CoJO0)`%Z&nZv9(1Y(e6$%)7@I9wU0YeYI=hP`+ z=)w1#QUwe>_?}a(z(}SC-*XBUF!bPiPR#;_9(>O!TfoqR?>UtV7<%wMr+5KF55DKr zFJS1w_nZ<23_bXsQ^kOx2j6oF88GzVdrmC_FBCkWW}Hqdt6|_mMFR#d)HGn=LRABX zE(|(_4H!Ix(gqAY7<8%|F!W&1DRAIjr3ZsfjRS@r3_4{F7pi=~ap$CIb z9R!9R3_7I{7p=9Fz<=)ss%xq+bvV@~k~m6#rkIrSSDdNAgcaA4@cm{Y}pp$B75AqR#Y zj5)O&7Q{91~2V+iw2ZkPu zIW-;_dNAgcd0^c<1Rj)r zVBkUV2L>LLe_-H20SE>jlz>2D=)ss%1%jamV@@Fmh8~PLwICRJFy@qlVCcb^QxSrp z2V+iA2!Db z!I)EZf}savPT>iL9*jA)Cm4D#=9Hgc=)ss%fr6n2V@?qYY?vO5Idv!)dNAgcqG0I3 zm{W~{p$B75K?;T*j5#$a7B8T2V+j53WgqxIkhSndNAgct6=ECm{YNWp$B75(F%qhj5&2H7 z2V+iI3x*zyIh8FKdNAe`w_xbOm{Z?^p$B75i3^4vj5$=U)A@CHyRQj5Ak6=Mfpg$2AB6O8=svz zyUM?7{`1KA!07DYP;~}ZAPf#I#qsy~!>eT%fWNUk_{yOr_}~b>)>EAvUIpA_=Qz0X zBH*49vc34e?hG!5WSe)2hb=DzcEBKF%lmNuI6fF<8opyhaN*rbCztPW9e&s|sDm$g zK{RN2KA=wv*y{0_6|+OL_z)=eL~*P0p2#pRTvaae*Oa zPhcL_J?fgpYb+qO;b3UeCK}YcoBN9S>vbmV690*rOKJfZ+?6lq`qa)+XSFvUMq+UFDIRNkj zIr}V+THYzG?LRlqk^S(T1wOy0WnP8Uz%OpH=lN-aFi^5Dpd4A(Ym7|d%O?2BEL+JB zNymW}o&_HA=}X6JJB;tX;%7n-#&=&0m((A@FTT#nlSJ^OYQW!w@sbj_5f5H-9rFRQ z7akBoIY{au}>+LCjX|BBDuBLGO!>kl$EG&a^hzN|WoFRJtj zTQWZYNOBw!)S=z`q`BC&l;EYK6BOxW5pc@X-|3+-tuMz0gOY`SIx6R{tG_BX^lcrU z@Uu0+(Bx>KITrbwd)`s7u@=`igZCWKNREn!Ek^>oOi7!Z7#&@~M)HGAA%J87fE=~4 zxhFg8wv*En1EvQL505E_mHfejL-?Q;dyb!8D${ccB!>XVYrfLC=USCyw(|{9;pO#! zk3UmQ1bOy^?nxvM*=U(6CNWTDFQ7VJh1_ke)5PS}z}&z4@2}@hR8vgx(AO39Ob&*p z-b39hq282UeMiv0@U}xHF~m%ZMR>q+0UVO$`l< z&En&wY!tt)Sf-~^Sn_6IIkJ6buV*X*lacjLnKkTFW1z}npgOW+W?OY%f*B!(i}5q4 zL6GERAUSr$HMhw@YjtriIVlpbya~V|MWBY@&27RMo^Oo&067s4C^|7|E|+ZX2_ezs zc%TKCU?#^QmpZDhsd#mUs+CQ}SLD-0KsdI0KFw1z6%jpkY-mJzJrE05jN}de-cu82 zVz;beC5M#pP7a0lN#%Q2;|AU~T;IKaSS;k^a3DK!Rh|){`ONO%l?9Q2lOq7^$6|~q zhtYpzQP1Qkc>0Y=P;T?-L9&>m%XlZp!27`NqpF3qP4fc+hV`34y|5%e!mEoN8*eoJ z)p}D%9F5w_Z*Y40s=k@+?o~h|PA!Wdi;MjXo4L@4Q%Xa~ z$;BY-Y#XgOsWgPV2@nP1p$krE#2d>Z$caEG@MhF>c(mYza{h9Bv0tE58MNR$-$a&w zC4hU%kv-Pn39;51@B_|`3NNbxA7`z>78P_-^42+djGTkVI3_;LRHJjWc`5}$*Tm!u z+rKIju$&FxkeiNduh-7dV2lp-&-AmTubitV$ys=k<5;>+6l!ai2*PX}T$ur`<4C4Y zdq)R2Vx}X2$`nB3oU`Hy88cGQ^c8dQ6q&?RJST!W0Zk@Q7d!}`>cYCIW4KsZsx20v zgO-)^m!J|ZYF*Yw1BOZh$Y8NwP&@F41`L$*mnHBoKzS|cM-%!>L&zC`@EArd z^M+&u?!MO)Wb9q+bU;wfjEkQv2mU1H9k`ifW@2J=x>|1u_F}E9*8a`%$&s0X*)>TO zTdJqd?!_O@O7@z+mtgZ)@6hPd>gdRl`d%{gk9*JGr`P<=zWQI&E}Nbi1W6}d8vTEG zXflR}o>K0Y)_-vO4;qh$oxCerCbs8l5t7UClt4>^b=JfJcv%coxfG~g(noiOHwjU- z4@Zn=2WI;4p&_>Wow1)F@4yqh&Tr=b4N!@(ofE&}lK9V%f59_O@2*?q^@VatWU_F}EM z<;wIuEf>tiQ{;R+B~bop8}mj_NX|n&@gRrFZS9^1SpxtM;Ya~gIKou%+_DI=8VDZz zPTOE5G&JI^r6J@TKzPVk+6ucVXjM6XIlGv@-ATN%oWGm}{{m64aw?)QTN*-U08wB( zs<4bkOqWHFsbW9FO6+LFiqa4=2?&q*hK|Sjv^DuKa?c?-^MA|gvDO8odRYgUft)aT z*5i~Cw_a2Bp}BdEe9$)~JIagpmEHD`d?5A{WG$XhY=ZJ?or-mupd{~)hb`9tyWo(V zY;4g<-WLQ$-U}GVtxFnQ-P52OQ(I0%>Gta6>fn%aRf!*4KfguB_MRXxawTAji2!!w zbr%6%UDX6(MS$ep{|^t9EAUV+8rpf<)k57;lj-Dg*Jc?a+v%MW=X(A;hifJ@@w%D({DA%wS7b5QlkVRMt|+l%|k z#qce_j`h;FHa>#J`UEabC5a`bg;Wmb^-M$hCkr6J_gfN<>PwXH}mz+~(n ztP7py90YROr(z+?CxPq;uYa3sn$IVqLCcMR&UDtYAtY{yPgDW2ki#x!BQ*7@?S2EF;Z#Tx`5DE`IVJ;5**EHddC={#I5dSH;0it_H3zkI!gtM;)5ZpQ!T8W`E1sfjbe32ARxINKzYfYc^~R!Ut6RZ25tJ+U{LbK zl0VOGV!ka9klYHOB8O_UpX|&N9rcB9Sh5~i1t(|qy9AP3N<+x!0da87Wr>z4gWjW% z+*}?*ZURP-NpJEwq%_BSk$xRAW|=k342A5orJ?K%K%WT)C7%Y=k=;Y)_<^ab1U?lI zOs)l3;A)b51elJ^<$0>TRvf#$B-cd(PCg1?-`i9&YO3ZR{3k4($$0HEMDnqi=*h={ z9$>zsZEv18U={TGxcJEpz<202c}9zEf8#1gxiK1a@(DmYX7FCEZm@B5`6nZSC!3MB z9m!VTyrx@aw1ai~3)=ZDK$WS}b{7lk^f$v{$tGZxVSaZ1`o=&&vY{l9Jwkb3ARxIH zKxJa5d4dG_-@;+ZJ-{05UMic1r(=_X4qI)nU0wUe96djrmfQubvQyFID@dSu^oGu|YRkg)AP$Dfmvg4&+^BXr94lmBiU=-u z0^G47Hcz!`oS92~PxOv>*m66t18AX*cGth#`mb?t<%_@#z#|*&O@A>Vxh*ET+zRvn zti928y&~ZYk$`1AfP;??yo$HP!IjSg*Fj6nTi7{&U>3*|sy7D$lA8eJC{2zQ>BKwv z3G#McHK0Y6Xuh#0c`y``JOCue(u5b6XpHT89{F+P2gr}`0I#iBIoVM2mmPmN7f+EN z;3)+wyBTG?L?F380Em1aAZG;Rn2m9fs*C?I2M>|&;UO``2RNs$4x!V(I~Pxp@8Bt3 zr@eBH_4Kzvza9S>^6z+tBdIoLofeh9F~LqYBR}W)vQy`Z!R;5iok6|@I7dG8qk%Pg z(zrU|n~@(NoA7`y+F>h=;`d& z`ZXZ`78XzL0bZUDLp$52`_R4-7*M_rK*yH)Jnt5DezR5tn)kKfka9O5^N{?`{n$1( zYafjLY9wH}3&6pr^2twunn%9P-4Avu4_WjlIl-IiSNlfO2CGP)-h413xI6&xJcGD% zx3ry?{c&(e`4J$?t)|tB014#}1A@s90G4N1IU=u`Wiv~^KO(q%AK(r-&{4G5r?oTP z{}B#Lz6Y$Jii&-!82s8oyMOLy;jrYP&_6mw zE0eziJkQW-A{T>g=a*VG(QW~19?IuHP0w4N3=S!O1ElvRm-gS@X;Xjl*SPrd7vOtu z-)?VzhwatUN@>#%t855NmhRT@27|038^;^4|wzzzDA zHElrYiHR;1pa$09+2`qp3#)=D;Y*P$OZ@RKK zuibj{xdzO!yQ{fnj<+ez<*zyQ$P3xnkoRCUDt>C28C2_~hrVysnp?ir6P9YuJM*!h zz3B0cJ>IWzH$}ew8b9>llk3);y0OP`C@8I*Y6R^WCH(LQ#_s*h)=w0IvD+}QKk?eW zn|{3$erfTW(`5aY%MFBYwad7eCtdC2s@o5`?6@N~_V~_$GH^SL9$B~h$khuE-`L|_ z0NdlNZ;L&7l00<8X}5kKfzDH_I?E;XWrzA2X=U=44^4h@LrVAHHMIJYo*0gD7=~c;hgB(e@voG{0!i?t2I8 z+gt0K7U6f(HizE5D++Uf{MpD8Iyc*}X}8~AhWweQG&zW$okms0Coj7G%^SlqF;OPw z-3{#(y1g4tKKQm*+>Klrf#yjVnkP#0eEDq#2}((+kG$aF#d6TbT=hN`|Go@VQZ~N1 zm8%C{HG5cr@V5sl)zBpq&$#pkM97iK+N)(dYMNUn`z5z*VdMi0D@}Kn_(=rfCvk|M zC`-#ThwjXB+A=xRwaV&qp7q41LsClH*!^>*QYCg8A4-1jIAGt6OsbAU2lZs^y1sVr z1$#Y}vqbMf)K2BJk&QtVpW=#AT#x(1wNv#KMV~JE{)tavFL>N`sVFLMBtKtxl)(tF zT&LL0i!x|u^^`leW;+Au?Wt#^cDz?sU$o&%i=70x6U^na~_F5=MkOr#Q9QalNi5g`!jwx?x1RT9 zlt*v2)a@bl39aZ%&Vz)gY+{#1wp#J9(XoS0wIuvhOLVH$n~MjVE1vOUp1kr|UnRZp zE&myFJ}s50r5G~)7&Ac88DO3nN>iq4A2uzSYViZ_JpTUhb4$^=rT0FU_7>ZYZd_25 zJbKGchGu%x#CG_`%bF69A6vDZ5s>qAxYv|WbV?ZKpj+j$$4>q6h7CQ1XNMAWb|^YK zEH%550JAHZgV~kn?85DrrGf@g4gLT}s zUO8gpU*3jg8gH)e(Pc6h6AIA@MV^#fC>+WtN=zz5Cl!u0)7Axytd*7yn^-LG_L>ez z?CF4=r8tsV>o4!kxFfZhxQh~Z@72q825eU^=dC$)XKvQ<<}dA-mS8kUyF@1KqNLqX ziPC!}GE^_KfyaE|TGxf5P<7E4%a5w-ats%8uKb@Nvyc+%M;kZQEV4%m3cde=asBJCbuVgX&yF zx%;<&ikw)KX&&X*G<~^SJ{3xqz4nT04gV@~Kaz@k`hEgVmoesqJj$GrM^WKxrGCCre}>eo8OUyoNEThXWxFA4 z3lGTtMA=`Sz~vl!&D!{tC+uj(ULbx}a4U=^S&UVQ!Js4vgOU;q3cYT>SMrDH;{y;e zQ6d(bDTy*A#~9H!qG<_R8BCf%DvK$yr&#gqt@a95rg2TdsUK(xK-cWysPc48l&*1c zWpL=MnTd(f>1tg|sSXdVtk(X`^2w2zf!Q@l6?1ZY8XkW*E7@!QUiPEi9X}Uex$Rvm zj>RVVqQp&`BAbgK;+r!QJ$3OK`XCpL@R9GE%gGV?$$O z{o~6J$^OYcA-TNxcV9K+a$i5Xs*9?h-SfPF+|=%3iNN7RIb6UR*Tk>zJ;2EPN|axf zpg*GY$9G4th`5GJ3-b| zU%QA5@7X=~U46-ipsxiSeN7BYlwk#Eyyf)O`jy?kc>4jT@yKSL#^>hsgT3`TaJhBj zsK@_dn;SRyoC&p~qrrGY8BYNLOOq@bqlBkSsZa3`Tb@JkkRV|8!#IISjcr^c_8`h0 z3KE?Z{ZFoa+S#UXITDE`i5l6=$sa|K2P7n=;8kDBRejN_pXU^AQ=hdb%JjMU ztIl}!Gr2>~vv%}mB=?NcWM}1`@HtD9g%6N`TdRj?^$397n%pIJau-eRrLwY}hL*{q zn)qy@DtO5S-p$G3DJov~B)2R)>FJw$%4a0ejN}-eUKvS`sepj!zT~j)tmr$NhZ>|( zLD!cmy)nr$K1Vgqv9edYx=>g4_U%65X*s20MU{)6xYaDYc~Ed=DppIlaley{FypuU zH!w9ZJ2Nsq#9?>hx*bg`%8p;r@mr))>F?4(hIT2TcuV)r^%}$amn~0EbWOoAl+{sB z+H3i5Sz;OMN6)fTKeqgv=3Oq5VRW6P_FZSZZd?8OY%^1j^ETTZK(SssTg|)|3)HFW3$`_8^a2{qYfij2Hob&W~?pcss-C&Q@cknt2 zWlL%ro1E=iIfX@&p(*pVpLx$-WO75fyG-~E6nl$y<;QELxwW`h&J@j=1$G43^HS)Z z-TDtIs%P7KF#z-W&mCi6N@Q>;oxw#jc$ma%35}zRTT`N@aQ)KyIgj6FQeZ(CqY9#n zmC8gd19oXSY#9(O10fsVNKkqM#bb9IZRVdLij8Qoar8u+DweT3JUt)##kCjS&s#FQ zYe4%nuh9Wb=kZ=R@liA5bMTmY#_LePDPymeiz+aquaN%!WC#qs!)o;yrz3gTIfh)ZoKz`M~Y6BbfRuASMU}- zy3x?Os$IEn-2gZBI4;BJR5M$?!1dJ$46VD&>2t}_5e`bvZ>QH z2UBitd!6EH8&f04P6Nx}rQV5T?ZAYYOgRR$ZC}fftg{r18!ff68BOMr99dl;3^}sWN*OYf zB1b{+QshXK9F=4>qO2xw#M8B`jVRcoypCj0iYSN@g(90MwaI4EgsPy&BFYFdwfo!v zrh-h!$w0>wt*_kXgN7~z$R(}3MwHh$mND|=^o%8WT#{J3bs&#g(6k27O<{tBrQd)_ zzP#-&_i+s%1}_ukWxgGs!ED+(URjfeO06T>u0d^CvCo!Uw%XL=CYHXTK78HHnuau*YVvv@Zl%Flz^f-(qP*&GN^m!1Nyu6-*g=> z@(D0MP&Uvae(Kg%@1N04hH0U8R-1GT*X~S1c}tn%uUoI6$S!*Mj8Pr}R2aLtIYfoA zlK)&(7|{w7@(gQMInW!)<5U}a<~LTg5v?|k2&WTnh6;fCWoG@~-tFr3CvNORI}CX=Ss!YC*B~`1zmAF}?yYT5Q?NkMAiDaq1nh z2#6K|-(j6mXf!{k_r%|G-O1N(gBs%tpHXA7Udp{MSb86?_4UsE?HsLR36tn0%%0BJ zzk9WBsVwMRy0h0BI$ z*>I$tTzTG#eMLk%4RU=oFI6=hEBv-;tt%<}&pzkLXO{eARho>c23JIC)#Q;%Wr=>Z zDq6LYibu6d=cf!Ezh!Z2-C@_86-Cc$Dzdi6Hdq}xTR+%<UbIkFBx*t6(*kT&1qru~ZCVUK?3 znon)BsV7Ro6fKwmN=`?~ta9atZ@(R*(tF^y&o?>^{5>`dJdXoEz|YX6s%cCsr@iqm zROOVIl~cl3PSMKg$N{#v7!Kjck&W#O^*vm=0u-bk+UlBjhSxG#Y~6{k+n|dc4ol5F zU$E5|)?W6U&AuO()IARpxKdj!(;=mK1=ke7rL&`>oUG|_wLnzBe!w#1Xl#DxQ;iPv z5f-c6>78;8+&phkQztK6^K$D%cjHb+Wy-hx7_s@l?$1vDBBi2@`Td412NXT(W|iejf4RV5IMSF`rEjHi zb|a5tC#8KzYnP9V)ek>Dw(}Ert-;ppGGa?@a)?2z+u|J+rcoVUYz-px02Y0%_wW<$ g$@fw3?zpvyf#DTWDZ?wI6t9pFyg~x-3Q=D1f7Qo3#Q*>R diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index fa3691409..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,48 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" -[CURRENT_CONFIGURATION] -"Blinky" -[CURRENT_SESSION] -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Blinky] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug_RX600_E1_E20_SYSTEM] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_with_optimisation] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c deleted file mode 100644 index f6e9bdc9a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,149 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "yrdkrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - unsigned long sckcr = 0; - - /* Configure system clocks based on header */ - sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24); - sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16); - sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8); - SYSTEM.SCKCR.LONG = sckcr; - - /* Module standby clear - EtherC, EDMAC */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - - PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi) - PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later) - PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals - PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35) - PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47) - PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51) - - PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start - PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7) - - PORTB.DR.BYTE = 0x00 ; - PORTB.DDR.BYTE = 0x70 ; // Port B: Ether - - PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY) - PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3) - - // Ethernet settings - IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA - PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA - PORTA.ICR.BIT.B3 = 1; // ET_MDIO - PORTB.ICR.BIT.B0 = 1; // RMII_RXD1 - PORTB.ICR.BIT.B1 = 1; // RMII_RXD0 - PORTB.ICR.BIT.B2 = 1; // REF50CLK - PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER - PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV - - - /* Configure LEDs */ - LED4 = LED_OFF; - LED5 = LED_OFF; - LED6 = LED_OFF; - LED7 = LED_OFF; - LED8 = LED_OFF; - LED9 = LED_OFF; - LED10 = LED_OFF; - LED11 = LED_OFF; - LED12 = LED_OFF; - LED13 = LED_OFF; - LED14 = LED_OFF; - LED15 = LED_OFF; - - LED4_DDR = 1; - LED5_DDR = 1; - LED6_DDR = 1; - LED7_DDR = 1; - LED8_DDR = 1; - LED9_DDR = 1; - LED10_DDR = 1; - LED11_DDR = 1; - LED12_DDR = 1; - LED13_DDR = 1; - LED14_DDR = 1; - LED15_DDR = 1; - - /* Configure push button switches */ - SW1_DDR = 0; - SW2_DDR = 0; - SW3_DDR = 0; - SW1_ICR = 1; - SW2_ICR = 1; - SW3_ICR = 1; -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 390406d83..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,328 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "00000000|FFFFFFFF|FFFFFFFC|FFF80000" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT01" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT02" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT03" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT04" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT05" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT06" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT07" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT08" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT09" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT10" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_FILE" "" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_SELETCT" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_MODIFIED" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_NOREAD_OSOBJECT" "0" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_SAMPLING_PERIOD" "100" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "-164" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "-4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000BBB0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000C9BC" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000041180000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000BBB0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017FA0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8B898" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8E908" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "000000000000BBB0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,48" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckAfter" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckBefore" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpAfter" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpBefore" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}T_SESSION_IS_SAVED" "YES" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "247" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 216 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.27" 252 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 216 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 441 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 Segger J-Link" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index ee7dfebda..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h deleted file mode 100644 index bdff17965..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,14211 +0,0 @@ -/********************************************************************************/ -/* */ -/* Summary : Definition of I/O Register. */ -/* Version : V1.1 (2010-04-21) [Hardware Manual Revision : 0.50] */ -/* File Name : iodefine.h for KPIT GNURX */ -/* Device : RX/RX600/RX62N */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* CPU TYPE : RX62N */ -/* DESCRIPTION : Definition of ICU Register */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* for example : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* for example : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* for example : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/********************************************************************************/ - -#ifndef IODEFINE_H -#define IODEFINE_H - -#ifdef __RX_LITTLE_ENDIAN__ /*Little endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short MD0:1; - unsigned short MD1:1; - unsigned short :5; - unsigned short MDE:1; - unsigned short :8; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short IROM:1; - unsigned short EXB:1; - unsigned short BSW:2; - unsigned short BOTS:1; - unsigned short :1; - unsigned short UBTS:1; - unsigned short :9; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short ROME:1; - unsigned short EXBE:1; - unsigned short :6; - unsigned short KEY:8; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short RAME:1; - unsigned short :15; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short STS:5; - unsigned short :1; - unsigned short OPE:1; - unsigned short SSBY:1; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPA4:1; - unsigned long MSTPA5:1; - unsigned long :2; - unsigned long MSTPA8:1; - unsigned long MSTPA9:1; - unsigned long MSTPA10:1; - unsigned long MSTPA11:1; - unsigned long :2; - unsigned long MSTPA14:1; - unsigned long MSTPA15:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA19:1; - unsigned long :2; - unsigned long MSTPA22:1; - unsigned long MSTPA23:1; - unsigned long :4; - unsigned long MSTPA28:1; - unsigned long MSTPA29:1; - unsigned long :1; - unsigned long ACSE:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB0:1; - unsigned long :14; - unsigned long MSTPB15:1; - unsigned long MSTPB16:1; - unsigned long MSTPB17:1; - unsigned long MSTPB18:1; - unsigned long MSTPB19:1; - unsigned long MSTPB20:1; - unsigned long MSTPB21:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB25:1; - unsigned long MSTPB26:1; - unsigned long :1; - unsigned long MSTPB28:1; - unsigned long MSTPB29:1; - unsigned long MSTPB30:1; - unsigned long MSTPB31:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long MSTPC0:1; - unsigned long MSTPC1:1; - unsigned long :30; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :8; - unsigned long PCK:4; - unsigned long :4; - unsigned long BCK:4; - unsigned long :2; - unsigned long PSTOP0:1; - unsigned long PSTOP1:1; - unsigned long ICK:4; - unsigned long :4; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char BCLKDIV:1; - unsigned char :7; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OSTDF:1; - unsigned short OSTDE:1; - unsigned short KEY:8; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char RAMCUT0:1; - unsigned char :3; - unsigned char RAMCUT1:1; - unsigned char RAMCUT2:1; - unsigned char IOKEEP:1; - unsigned char DPSBY:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char WTSTS:6; - unsigned char :2; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ3E:1; - unsigned char DLVDE:1; - unsigned char DRTCE:1; - unsigned char DUSBE:1; - unsigned char DNMIE:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ3F:1; - unsigned char DLVDF:1; - unsigned char DRTCFF:1; - unsigned char DUSBF:1; - unsigned char DNMIF:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ3EG:1; - unsigned char :3; - unsigned char DNMIEG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char PORF:1; - unsigned char LVD1F:1; - unsigned char LVD2F:1; - unsigned char :4; - unsigned char DPSRSTF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char SUBSTOP:1; - unsigned char :7; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD1RI:1; - unsigned char LVD1E:1; - unsigned char :2; - unsigned char LVD2RI:1; - unsigned char LVD2E:1; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char STSCLR:1; - unsigned char :7; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char IGAEN:1; - unsigned char TOEN:1; - unsigned char :6; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char IA:1; - unsigned char TO:1; - unsigned char :2; - unsigned char MST:3; - unsigned char :1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short ADDR:13; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char EXENB:1; - unsigned char :3; - unsigned char BSIZE:2; - unsigned char :2; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char EMODE:1; - unsigned char :7; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char BE:1; - unsigned char :7; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char SFEN:1; - unsigned char :7; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short RFC:12; - unsigned short REFW:4; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEN:1; - unsigned char :7; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char INIRQ:1; - unsigned char :7; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short ARFI:4; - unsigned short ARFC:4; - unsigned short PRC:3; - unsigned short :5; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char MXC:2; - unsigned char :6; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long CL:3; - unsigned long :5; - unsigned long WR:1; - unsigned long RP:3; - unsigned long RCD:2; - unsigned long :2; - unsigned long RAS:3; - unsigned long :13; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short MR:15; - unsigned short :1; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char MRSST:1; - unsigned char :2; - unsigned char INIST:1; - unsigned char SRFST:1; - unsigned char :3; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RRS:1; - unsigned char :3; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char SHORT:1; - unsigned char :7; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char DTCST:1; - unsigned char :7; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short VECN:8; - unsigned short :7; - unsigned short ACT:1; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DACKW:1; - unsigned char DACKE:1; - unsigned char DACKS:1; - unsigned char :4; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long DARA:5; - unsigned long :1; - unsigned long DM:2; - unsigned long SARA:5; - unsigned long :1; - unsigned long SM:2; - unsigned long DIR:1; - unsigned long AMS:1; - unsigned long :14; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DREQS:2; - unsigned char :6; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char EREQ:1; - unsigned char :7; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char PREQ:1; - unsigned char :7; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char IR:1; - unsigned char :7; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char DTCE:1; - unsigned char :7; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN0:1; - unsigned char IEN1:1; - unsigned char IEN2:1; - unsigned char IEN3:1; - unsigned char IEN4:1; - unsigned char IEN5:1; - unsigned char IEN6:1; - unsigned char IEN7:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char SWINT:1; - unsigned char :7; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FVCT:8; - unsigned short :7; - unsigned short FIEN:1; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char IPR:4; - unsigned char :4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IRQMD:2; - unsigned char :4; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char NMIST:1; - unsigned char LVDST:1; - unsigned char OSTST:1; - unsigned char :5; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char NMIEN:1; - unsigned char LVDEN:1; - unsigned char OSTEN:1; - unsigned char :5; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char NMICLR:1; - unsigned char :1; - unsigned char OSTCLR:1; - unsigned char :5; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char NMIMD:1; - unsigned char :4; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short STR0:1; - unsigned short STR1:1; - unsigned short :14; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short STR2:1; - unsigned short STR3:1; - unsigned short :14; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short CKS:2; - unsigned short :4; - unsigned short CMIE:1; - unsigned short :9; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char :2; - unsigned char TME:1; - unsigned char TMS:1; - unsigned char :1; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char RSTE:1; - unsigned char WOVF:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short TOPS:2; - unsigned short :2; - unsigned short CKS:4; - unsigned short :8; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short CNTVAL:14; - unsigned short UNDFF:1; - unsigned short :1; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char CH:4; - unsigned char :1; - unsigned char ADST:1; - unsigned char ADIE:1; - unsigned char :1; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char MODE:2; - unsigned char CKS:2; - unsigned char :1; - unsigned char TRGS:3; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char DIAG:2; - unsigned char :6; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAE:1; - unsigned char DAOE0:1; - unsigned char DAOE1:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER8:1; - unsigned char NDER9:1; - unsigned char NDER10:1; - unsigned char NDER11:1; - unsigned char NDER12:1; - unsigned char NDER13:1; - unsigned char NDER14:1; - unsigned char NDER15:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER0:1; - unsigned char NDER1:1; - unsigned char NDER2:1; - unsigned char NDER3:1; - unsigned char NDER4:1; - unsigned char NDER5:1; - unsigned char NDER6:1; - unsigned char NDER7:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD8:1; - unsigned char POD9:1; - unsigned char POD10:1; - unsigned char POD11:1; - unsigned char POD12:1; - unsigned char POD13:1; - unsigned char POD14:1; - unsigned char POD15:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD0:1; - unsigned char POD1:1; - unsigned char POD2:1; - unsigned char POD3:1; - unsigned char POD4:1; - unsigned char POD5:1; - unsigned char POD6:1; - unsigned char POD7:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char NDR12:1; - unsigned char NDR13:1; - unsigned char NDR14:1; - unsigned char NDR15:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char NDR4:1; - unsigned char NDR5:1; - unsigned char NDR6:1; - unsigned char NDR7:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char PTRSL:1; - unsigned char :7; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER24:1; - unsigned char NDER25:1; - unsigned char NDER26:1; - unsigned char NDER27:1; - unsigned char NDER28:1; - unsigned char NDER29:1; - unsigned char NDER30:1; - unsigned char NDER31:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER16:1; - unsigned char NDER17:1; - unsigned char NDER18:1; - unsigned char NDER19:1; - unsigned char NDER20:1; - unsigned char NDER21:1; - unsigned char NDER22:1; - unsigned char NDER23:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD24:1; - unsigned char POD25:1; - unsigned char POD26:1; - unsigned char POD27:1; - unsigned char POD28:1; - unsigned char POD29:1; - unsigned char POD30:1; - unsigned char POD31:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD16:1; - unsigned char POD17:1; - unsigned char POD18:1; - unsigned char POD19:1; - unsigned char POD20:1; - unsigned char POD21:1; - unsigned char POD22:1; - unsigned char POD23:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char NDR28:1; - unsigned char NDR29:1; - unsigned char NDR30:1; - unsigned char NDR31:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char NDR20:1; - unsigned char NDR21:1; - unsigned char NDR22:1; - unsigned char NDR23:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char ADTE:1; - unsigned char :3; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char :4; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char MP:1; - unsigned char STOP:1; - unsigned char PM:1; - unsigned char PE:1; - unsigned char CHR:1; - unsigned char CM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char MPIE:1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char MPBT:1; - unsigned char MPB:1; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char FER:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :4; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char ACS0:1; - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char BCP:2; - unsigned char PM:1; - unsigned char PE:1; - unsigned char BLK:1; - unsigned char GM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char :1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char ERS:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :3; - unsigned char BCP2:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char GPS:2; - unsigned char LMS:1; - unsigned char :4; - unsigned char DORCLR:1; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char SDAI:1; - unsigned char SCLI:1; - unsigned char SDAO:1; - unsigned char SCLO:1; - unsigned char SOWP:1; - unsigned char CLO:1; - unsigned char IICRST:1; - unsigned char ICE:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ST:1; - unsigned char RS:1; - unsigned char SP:1; - unsigned char :1; - unsigned char TRS:1; - unsigned char MST:1; - unsigned char BBSY:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char BC:3; - unsigned char BCWP:1; - unsigned char CKS:3; - unsigned char MTWP:1; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOS:1; - unsigned char TMOL:1; - unsigned char TMOH:1; - unsigned char :1; - unsigned char SDDL:3; - unsigned char DLCS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char NF:2; - unsigned char ACKBR:1; - unsigned char ACKBT:1; - unsigned char ACKWP:1; - unsigned char RDRFS:1; - unsigned char WAIT:1; - unsigned char SMBS:1; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char TMOE:1; - unsigned char MALE:1; - unsigned char NALE:1; - unsigned char SALE:1; - unsigned char NACKE:1; - unsigned char NFE:1; - unsigned char SCLE:1; - unsigned char FMPE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char SAR0E:1; - unsigned char SAR1E:1; - unsigned char SAR2E:1; - unsigned char GCAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char HOAE:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TMOIE:1; - unsigned char ALIE:1; - unsigned char STIE:1; - unsigned char SPIE:1; - unsigned char NAKIE:1; - unsigned char RIE:1; - unsigned char TEIE:1; - unsigned char TIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char AAS0:1; - unsigned char AAS1:1; - unsigned char AAS2:1; - unsigned char GCA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char HOA:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOF:1; - unsigned char AL:1; - unsigned char START:1; - unsigned char STOP:1; - unsigned char NACKF:1; - unsigned char RDRF:1; - unsigned char TEND:1; - unsigned char TDRE:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char BRL:5; - unsigned char :3; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char BRH:5; - unsigned char :3; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPMS:1; - unsigned char TXMD:1; - unsigned char MODFEN:1; - unsigned char MSTR:1; - unsigned char SPEIE:1; - unsigned char SPTIE:1; - unsigned char SPE:1; - unsigned char SPRIE:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char SSLP0:1; - unsigned char SSLP1:1; - unsigned char SSLP2:1; - unsigned char SSLP3:1; - unsigned char :4; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char SPLP:1; - unsigned char SPLP2:1; - unsigned char SPOM:1; - unsigned char :1; - unsigned char MOIFV:1; - unsigned char MOIFE:1; - unsigned char :2; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char OVRF:1; - unsigned char IDLNF:1; - unsigned char MODF:1; - unsigned char PERF:1; - unsigned char :4; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char SPSLN:3; - unsigned char :5; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char SPCP:3; - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR0:1; - unsigned char SPR1:1; - unsigned char SPR2:1; - unsigned char SPR3:1; - unsigned char SPR4:1; - unsigned char SPR5:1; - unsigned char SPR6:1; - unsigned char SPR7:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char SPFC:2; - unsigned char SLSEL:2; - unsigned char SPRDTD:1; - unsigned char SPLW:1; - unsigned char :2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char SCKDL:3; - unsigned char :5; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char SLNDL:3; - unsigned char :5; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char SPNDL:3; - unsigned char :5; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char SPPE:1; - unsigned char SPOE:1; - unsigned char SPIIE:1; - unsigned char PTE:1; - unsigned char :4; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char OE3B:1; - unsigned char OE4A:1; - unsigned char OE4B:1; - unsigned char OE3D:1; - unsigned char OE4C:1; - unsigned char OE4D:1; - unsigned char :2; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char UF:1; - unsigned char VF:1; - unsigned char WF:1; - unsigned char FB:1; - unsigned char P:1; - unsigned char N:1; - unsigned char BCD:1; - unsigned char :1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char OLSP:1; - unsigned char OLSN:1; - unsigned char TOCS:1; - unsigned char TOCL:1; - unsigned char :2; - unsigned char PSYE:1; - unsigned char :1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char BF:2; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T4VCOR:3; - unsigned char T4VEN:1; - unsigned char T3ACOR:3; - unsigned char T3AEN:1; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char T4VCNT:3; - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char BTE:2; - unsigned char :6; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char :7; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char :2; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char WRE:1; - unsigned char :6; - unsigned char CCE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST0:1; - unsigned char CST1:1; - unsigned char CST2:1; - unsigned char :3; - unsigned char CST3:1; - unsigned char CST4:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC0:1; - unsigned char SYNC1:1; - unsigned char SYNC2:1; - unsigned char :3; - unsigned char SYNC3:1; - unsigned char SYNC4:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char RWE:1; - unsigned char :7; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char TGIEE:1; - unsigned char TGIEF:1; - unsigned char :6; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char I1AE:1; - unsigned char I1BE:1; - unsigned char I2AE:1; - unsigned char I2BE:1; - unsigned char :4; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short ITB4VE:1; - unsigned short ITB3AE:1; - unsigned short ITA4VE:1; - unsigned short ITA3AE:1; - unsigned short DT4BE:1; - unsigned short UT4BE:1; - unsigned short DT4AE:1; - unsigned short UT4AE:1; - unsigned short :6; - unsigned short BF:2; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char TGIE5W:1; - unsigned char TGIE5V:1; - unsigned char TGIE5U:1; - unsigned char :5; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char CSTW5:1; - unsigned char CSTV5:1; - unsigned char CSTU5:1; - unsigned char :5; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char CMPCLR5W:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5U:1; - unsigned char :5; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE0M:2; - unsigned short POE1M:2; - unsigned short POE2M:2; - unsigned short POE3M:2; - unsigned short PIE1:1; - unsigned short :3; - unsigned short POE0F:1; - unsigned short POE1F:1; - unsigned short POE2F:1; - unsigned short POE3F:1; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE1:1; - unsigned short OCE1:1; - unsigned short :5; - unsigned short OSF1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE4M:2; - unsigned short POE5M:2; - unsigned short POE6M:2; - unsigned short POE7M:2; - unsigned short PIE2:1; - unsigned short :3; - unsigned short POE4F:1; - unsigned short POE5F:1; - unsigned short POE6F:1; - unsigned short POE7F:1; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE2:1; - unsigned short OCE2:1; - unsigned short :5; - unsigned short OSF2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short POE8M:2; - unsigned short :6; - unsigned short PIE3:1; - unsigned short POE8E:1; - unsigned short :2; - unsigned short POE8F:1; - unsigned short :3; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char CH34HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH6HIZ:1; - unsigned char :4; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE0ZE:1; - unsigned char PE1ZE:1; - unsigned char PE2ZE:1; - unsigned char PE3ZE:1; - unsigned char PE4ZE:1; - unsigned char PE5ZE:1; - unsigned char PE6ZE:1; - unsigned char PE7ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short P6CZE:1; - unsigned short P5CZE:1; - unsigned short P4CZE:1; - unsigned short :1; - unsigned short P3CZEB:1; - unsigned short P2CZEB:1; - unsigned short P1CZEB:1; - unsigned short :1; - unsigned short P3CZEA:1; - unsigned short P2CZEA:1; - unsigned short P1CZEA:1; - unsigned short :1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short POE9M:2; - unsigned short :6; - unsigned short PIE4:1; - unsigned short POE9E:1; - unsigned short :2; - unsigned short POE9F:1; - unsigned short :3; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char EXTRG:1; - unsigned char TRGE:1; - unsigned char CKS:2; - unsigned char ADIE:1; - unsigned char :1; - unsigned char ADCS:1; - unsigned char ADST:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS:8; - unsigned short :8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short ADS:8; - unsigned short :8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char ADC:2; - unsigned char :6; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short ACE:1; - unsigned short :9; - unsigned short ADRFMT:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char ADSTRS:4; - unsigned char :4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS0E:1; - unsigned char CS1E:1; - unsigned char CS2E:1; - unsigned char CS3E:1; - unsigned char CS4E:1; - unsigned char CS5E:1; - unsigned char CS6E:1; - unsigned char CS7E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS4S:2; - unsigned char CS5S:2; - unsigned char CS6S:2; - unsigned char CS7S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS0S:1; - unsigned char :1; - unsigned char CS1S:2; - unsigned char CS2S:2; - unsigned char CS3S:2; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A16E:1; - unsigned char A17E:1; - unsigned char A18E:1; - unsigned char A19E:1; - unsigned char A20E:1; - unsigned char A21E:1; - unsigned char A22E:1; - unsigned char A23E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char ADRLE:2; - unsigned char A10E:1; - unsigned char A11E:1; - unsigned char A12E:1; - unsigned char A13E:1; - unsigned char A14E:1; - unsigned char A15E:1; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADRHMS:1; - unsigned char :2; - unsigned char DHE:1; - unsigned char DH32E:1; - unsigned char WR1BC1E:1; - unsigned char WR32BC32E:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char WAITS:2; - unsigned char :2; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char DQM1E:1; - unsigned char SDCLKE:1; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char EDMA0S:2; - unsigned char EDMA1S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS8:1; - unsigned char ITS9:1; - unsigned char ITS10:1; - unsigned char ITS11:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS15:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS0:1; - unsigned char ITS1:1; - unsigned char ITS2:1; - unsigned char ITS3:1; - unsigned char ITS4:1; - unsigned char ITS5:1; - unsigned char ITS6:1; - unsigned char ITS7:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ADTRG0S:1; - unsigned char :7; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TMR2S:1; - unsigned char TMR3S:1; - unsigned char :4; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char MTUS0:1; - unsigned char MTUS1:1; - unsigned char MTUS2:1; - unsigned char MTUS3:1; - unsigned char MTUS4:1; - unsigned char MTUS5:1; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char ENETE0:1; - unsigned char ENETE1:1; - unsigned char ENETE2:1; - unsigned char ENETE3:1; - unsigned char PHYMODE:1; - unsigned char :2; - unsigned char EE:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI1S:1; - unsigned char SCI2S:1; - unsigned char SCI3S:1; - unsigned char :2; - unsigned char SCI6S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CAN0E:1; - unsigned char :7; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE0E:1; - unsigned char POE1E:1; - unsigned char POE2E:1; - unsigned char POE3E:1; - unsigned char POE4E:1; - unsigned char POE5E:1; - unsigned char POE6E:1; - unsigned char POE7E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char POE8E:1; - unsigned char POE9E:1; - unsigned char :6; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char FLWE:2; - unsigned char :6; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FRDMD:1; - unsigned char :3; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPE:1; - unsigned char DFLRPE:1; - unsigned char :1; - unsigned char DFLAE:1; - unsigned char CMDLK:1; - unsigned char :2; - unsigned char ROMAE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPEIE:1; - unsigned char DFLRPEIE:1; - unsigned char :1; - unsigned char DFLAEIE:1; - unsigned char CMDLKIE:1; - unsigned char :2; - unsigned char ROMAEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char FRDYIE:1; - unsigned char :7; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short DBRE00:1; - unsigned short DBRE01:1; - unsigned short DBRE02:1; - unsigned short DBRE03:1; - unsigned short DBRE04:1; - unsigned short DBRE05:1; - unsigned short DBRE06:1; - unsigned short DBRE07:1; - unsigned short KEY:8; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short DBRE08:1; - unsigned short DBRE09:1; - unsigned short DBRE10:1; - unsigned short DBRE11:1; - unsigned short DBRE12:1; - unsigned short DBRE13:1; - unsigned short DBRE14:1; - unsigned short DBRE15:1; - unsigned short KEY:8; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short DBWE00:1; - unsigned short DBWE01:1; - unsigned short DBWE02:1; - unsigned short DBWE03:1; - unsigned short DBWE04:1; - unsigned short DBWE05:1; - unsigned short DBWE06:1; - unsigned short DBWE07:1; - unsigned short KEY:8; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short DBWE08:1; - unsigned short DBWE09:1; - unsigned short DBWE10:1; - unsigned short DBWE11:1; - unsigned short DBWE12:1; - unsigned short DBWE13:1; - unsigned short DBWE14:1; - unsigned short DBWE15:1; - unsigned short KEY:8; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short FCRME:1; - unsigned short :7; - unsigned short KEY:8; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char PRGSPD:1; - unsigned char ERSSPD:1; - unsigned char :1; - unsigned char SUSRDY:1; - unsigned char PRGERR:1; - unsigned char ERSERR:1; - unsigned char ILGLERR:1; - unsigned char FRDY:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FLOCKST:1; - unsigned char :2; - unsigned char FCUERR:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FENTRY0:1; - unsigned short :6; - unsigned short FENTRYD:1; - unsigned short FEKEY:8; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPROTCN:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRESET:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short PCMDR:8; - unsigned short CMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short ESUSPMD:1; - unsigned short :15; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :2; - unsigned short BCADR:8; - unsigned short :5; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short PEERRST:8; - unsigned short :8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short BCST:1; - unsigned short :15; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short PCKA:8; - unsigned short :8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char :1; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char :1; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :2; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :5; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :2; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :3; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char ENB:1; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char ENB:1; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :4; - unsigned char ENB:1; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :2; - unsigned char ENB:1; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ENB:1; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char AIE:1; - unsigned char CIE:1; - unsigned char PIE:1; - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char START:1; - unsigned char RESET:1; - unsigned char ADJ:1; - unsigned char RTCOE:1; - unsigned char :4; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char DLC:4; - unsigned char :4; - unsigned char :8; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :3; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char SENTDATA:1; - unsigned char TRMACTIVE:1; - unsigned char TRMABT:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } TX; - struct { - unsigned char NEWDATA:1; - unsigned char INVALDATA:1; - unsigned char MSGLOST:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char MBM:1; - unsigned char IDFM:2; - unsigned char MLM:1; - unsigned char TPM:1; - unsigned char TSRC:1; - unsigned char TSPS:2; - unsigned char CANM:2; - unsigned char SLPM:1; - unsigned char BOM:2; - unsigned char RBOC:1; - unsigned char :2; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char NDST:1; - unsigned char SDST:1; - unsigned char RFST:1; - unsigned char TFST:1; - unsigned char NMLST:1; - unsigned char FMLST:1; - unsigned char TABST:1; - unsigned char EST:1; - unsigned char RSTST:1; - unsigned char HLTST:1; - unsigned char SLPST:1; - unsigned char EPST:1; - unsigned char BOST:1; - unsigned char TRMST:1; - unsigned char RECST:1; - unsigned char :1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :8; - unsigned long TSEG2:3; - unsigned long :1; - unsigned long SJW:2; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long TSEG1:4; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFE:1; - unsigned char RFUST:3; - unsigned char RFMLF:1; - unsigned char RFFST:1; - unsigned char RFWST:1; - unsigned char RFEST:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFE:1; - unsigned char TFUST:3; - unsigned char :2; - unsigned char TFFST:1; - unsigned char TFEST:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BEIE:1; - unsigned char EWIE:1; - unsigned char EPIE:1; - unsigned char BOEIE:1; - unsigned char BORIE:1; - unsigned char ORIE:1; - unsigned char OLIE:1; - unsigned char BLIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BEIF:1; - unsigned char EWIF:1; - unsigned char EPIF:1; - unsigned char BOEIF:1; - unsigned char BORIF:1; - unsigned char ORIF:1; - unsigned char OLIF:1; - unsigned char BLIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char SEF:1; - unsigned char FEF:1; - unsigned char AEF:1; - unsigned char CEF:1; - unsigned char BE1F:1; - unsigned char BE0F:1; - unsigned char ADEF:1; - unsigned char EDPM:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBNST:5; - unsigned char :2; - unsigned char SEST:1; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBSM:2; - unsigned char :6; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char TSTE:1; - unsigned char TSTM:2; - unsigned char :5; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short USBE:1; - unsigned short :3; - unsigned short DPRPU:1; - unsigned short DRPD:1; - unsigned short DCFM:1; - unsigned short :3; - unsigned short SCKE:1; - unsigned short :5; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short LNST:2; - unsigned short IDMON:1; - unsigned short :3; - unsigned short HTACT:1; - unsigned short :7; - unsigned short OVCMON:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short RHST:3; - unsigned short :1; - unsigned short UACT:1; - unsigned short RESUME:1; - unsigned short USBRST:1; - unsigned short RWUPE:1; - unsigned short WKUP:1; - unsigned short VBUSEN:1; - unsigned short EXICEN:1; - unsigned short HNPBTOA:1; - unsigned short :4; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :1; - unsigned short ISEL:1; - unsigned short :2; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :3; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short BRDYE:1; - unsigned short NRDYE:1; - unsigned short BEMPE:1; - unsigned short CTRE:1; - unsigned short DVSE:1; - unsigned short SOFE:1; - unsigned short RSME:1; - unsigned short VBSE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACKE:1; - unsigned short SIGNE:1; - unsigned short EOFERRE:1; - unsigned short :4; - unsigned short ATTCHE:1; - unsigned short DTCHE:1; - unsigned short :1; - unsigned short BCHGE:1; - unsigned short OVRCRE:1; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE9BEMPE:1; - unsigned short :6; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short EDGESTS:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short TRNENSEL:1; - unsigned short :7; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short CTSQ:3; - unsigned short VALID:1; - unsigned short DVSQ:3; - unsigned short VBSTS:1; - unsigned short BRDY:1; - unsigned short NRDY:1; - unsigned short BEMP:1; - unsigned short CTRT:1; - unsigned short DVST:1; - unsigned short SOFR:1; - unsigned short RESM:1; - unsigned short VBINT:1; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACK:1; - unsigned short SIGN:1; - unsigned short EOFERR:1; - unsigned short :4; - unsigned short ATTCH:1; - unsigned short DTCH:1; - unsigned short :1; - unsigned short BCHG:1; - unsigned short OVRCR:1; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE9BENP:1; - unsigned short :6; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short FRNM:11; - unsigned short :3; - unsigned short CRCE:1; - unsigned short OVRN:1; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short USBADDR:7; - unsigned short :1; - unsigned short STSRECOV:4; - unsigned short :4; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BMREQUESTTYPE:8; - unsigned short BREQUEST:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :8; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short MXPS:7; - unsigned short :5; - unsigned short DEVSEL:4; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short CCPL:1; - unsigned short :2; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SUREQ:1; - unsigned short BSTS:1; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPESEL:4; - unsigned short :12; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short EPNUM:4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :1; - unsigned short DBLB:1; - unsigned short BFRE:1; - unsigned short :3; - unsigned short TYPE:2; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short MXPS:8; - unsigned short XPS:1; - unsigned short :3; - unsigned short DEVSEL:4; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short IITV:3; - unsigned short :9; - unsigned short IFIS:1; - unsigned short :3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long SRPC0:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long DP0:1; - unsigned long DM0:1; - unsigned long :2; - unsigned long DOVCA0:1; - unsigned long DOVCB0:1; - unsigned long :1; - unsigned long DVBSTS0:1; - unsigned long DP1:1; - unsigned long DM1:1; - unsigned long :2; - unsigned long DOVCA1:1; - unsigned long DOVCB1:1; - unsigned long :1; - unsigned long DVSTS1:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DPINTE0:1; - unsigned long DMINTE0:1; - unsigned long :2; - unsigned long DOVRCRAE0:1; - unsigned long DOVRCRBE0:1; - unsigned long :1; - unsigned long DVBSE0:1; - unsigned long DPINTE1:1; - unsigned long DMINTE1:1; - unsigned long :2; - unsigned long DOVRCRAE1:1; - unsigned long DOVRCRBE1:1; - unsigned long :1; - unsigned long DVBSE1:1; - unsigned long DPINT0:1; - unsigned long DMINT0:1; - unsigned long :2; - unsigned long DOVRCRA0:1; - unsigned long DOVRCRB0:1; - unsigned long :1; - unsigned long DVBINT0:1; - unsigned long DPINT1:1; - unsigned long DMINT1:1; - unsigned long :2; - unsigned long DOVRCRA1:1; - unsigned long DOVRCRB1:1; - unsigned long :1; - unsigned long DVBINT1:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long SWR:1; - unsigned long :3; - unsigned long DL:2; - unsigned long DE:1; - unsigned long :25; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long TR:1; - unsigned long :31; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long RR:1; - unsigned long :31; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long CERF:1; - unsigned long PRE:1; - unsigned long RTSF:1; - unsigned long RTLF:1; - unsigned long RRF:1; - unsigned long :2; - unsigned long RMAF:1; - unsigned long TRO:1; - unsigned long CD:1; - unsigned long DLC:1; - unsigned long CND:1; - unsigned long :4; - unsigned long RFOF:1; - unsigned long RDE:1; - unsigned long FR:1; - unsigned long TFUF:1; - unsigned long TDE:1; - unsigned long TC:1; - unsigned long ECI:1; - unsigned long ADE:1; - unsigned long RFCOF:1; - unsigned long RABT:1; - unsigned long TABT:1; - unsigned long :3; - unsigned long TWB:1; - unsigned long :1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFIP:1; - unsigned long PREIP:1; - unsigned long RTSFIP:1; - unsigned long RTLFIP:1; - unsigned long RRFIP:1; - unsigned long :2; - unsigned long RMAFIP:1; - unsigned long TROIP:1; - unsigned long CDIP:1; - unsigned long DLCIP:1; - unsigned long CNDIP:1; - unsigned long :4; - unsigned long RFOFIP:1; - unsigned long RDEIP:1; - unsigned long FRIP:1; - unsigned long TFUFIP:1; - unsigned long TDEIP:1; - unsigned long TCIP:1; - unsigned long ECIIP:1; - unsigned long ADEIP:1; - unsigned long RFCOFIP:1; - unsigned long RABTIP:1; - unsigned long TABTIP:1; - unsigned long :3; - unsigned long TWBIP:1; - unsigned long :1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFCE:1; - unsigned long PRECE:1; - unsigned long RTSFCE:1; - unsigned long RTLFCE:1; - unsigned long RRFCE:1; - unsigned long :2; - unsigned long RMAFCE:1; - unsigned long TROCE:1; - unsigned long CDCE:1; - unsigned long DLCCE:1; - unsigned long CNDCE:1; - unsigned long :20; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long MFC:16; - unsigned long :16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long TFT:11; - unsigned long :21; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long RFD:5; - unsigned long :3; - unsigned long TFD:5; - unsigned long :19; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long RNR:1; - unsigned long RNC:1; - unsigned long :30; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long UNDER:16; - unsigned long :16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long OVER:16; - unsigned long :16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long TLB:1; - unsigned long :31; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long RFDO:3; - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long PADR:6; - unsigned long :10; - unsigned long PADS:2; - unsigned long :14; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long TIS:1; - unsigned long :3; - unsigned long TIM:1; - unsigned long :27; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long PRM:1; - unsigned long DM:1; - unsigned long RTM:1; - unsigned long ILB:1; - unsigned long :1; - unsigned long TE:1; - unsigned long RE:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long PRCEF:1; - unsigned long :3; - unsigned long TXF:1; - unsigned long RXF:1; - unsigned long PFR:1; - unsigned long ZPE:1; - unsigned long TPC:1; - unsigned long :11; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long RFL:12; - unsigned long :20; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long ICD:1; - unsigned long MPD:1; - unsigned long LCHNG:1; - unsigned long :1; - unsigned long PSRTO:1; - unsigned long BFR:1; - unsigned long :26; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long ICDIP:1; - unsigned long MPDIP:1; - unsigned long LCHNGIP:1; - unsigned long :1; - unsigned long PSRTOIP:1; - unsigned long BFSIPR:1; - unsigned long :26; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long MDC:1; - unsigned long MMD:1; - unsigned long MDO:1; - unsigned long MDI:1; - unsigned long :28; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long LMON:1; - unsigned long :31; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long RMD:20; - unsigned long :12; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long IPG:5; - unsigned long :27; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long AP:16; - unsigned long :16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long MP:16; - unsigned long :16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long RPAUSE:8; - unsigned long :24; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long TPAUSE:16; - unsigned long :16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long TXP:8; - unsigned long :24; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long BCF:16; - unsigned long :16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long MA:16; - unsigned long :16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#elif __RX_BIG_ENDIAN__ /*Big endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - unsigned short :8; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - unsigned long :4; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - unsigned long :8; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - unsigned short :6; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - unsigned char :2; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - unsigned short :3; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - unsigned char :4; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - unsigned char :1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - unsigned char :2; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - unsigned char :3; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - unsigned char :6; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - unsigned char :5; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - unsigned char :1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BCD:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDRE:1; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - unsigned short :8; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - unsigned short :8; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - unsigned short :4; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - unsigned short :5; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char :1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - unsigned char :4; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char :2; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char :6; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - unsigned char :4; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - unsigned char :4; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - unsigned char :1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :7; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :8; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - unsigned short :8; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - unsigned short :4; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - unsigned short :4; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - unsigned short :4; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - unsigned short :15; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short :4; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short XPS:1; - unsigned short MXPS:8; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#endif /*endian*/ - -#endif /*IODEFINE_H*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h deleted file mode 100644 index 779da3562..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h +++ /dev/null @@ -1,110 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RDKRX62N_H -#define RDKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#ifdef LED_POSITIVE_LOGIC - #define LED_ON (1) - #define LED_OFF (0) -#else -/* LEDs are using NEGATIVE LOGIC... */ - #define LED_ON (0) - #define LED_OFF (1) -#endif -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT4.PORT.BIT.B0 -#define SW2 PORT4.PORT.BIT.B1 -#define SW3 PORT4.PORT.BIT.B2 -#define SW1_DDR PORT4.DDR.BIT.B0 -#define SW2_DDR PORT4.DDR.BIT.B1 -#define SW3_DDR PORT4.DDR.BIT.B2 -#define SW1_ICR PORT4.ICR.BIT.B0 -#define SW2_ICR PORT4.ICR.BIT.B1 -#define SW3_ICR PORT4.ICR.BIT.B2 - -/* LEDs */ -#define LED4 PORTD.DR.BIT.B5 -#define LED5 PORTE.DR.BIT.B3 -#define LED6 PORTD.DR.BIT.B2 -#define LED7 PORTE.DR.BIT.B0 -#define LED8 PORTD.DR.BIT.B4 -#define LED9 PORTE.DR.BIT.B2 -#define LED10 PORTD.DR.BIT.B1 -#define LED11 PORTD.DR.BIT.B7 -#define LED12 PORTD.DR.BIT.B3 -#define LED13 PORTE.DR.BIT.B1 -#define LED14 PORTD.DR.BIT.B0 -#define LED15 PORTD.DR.BIT.B6 - -#define LED4_DDR PORTD.DDR.BIT.B5 -#define LED5_DDR PORTE.DDR.BIT.B3 -#define LED6_DDR PORTD.DDR.BIT.B2 -#define LED7_DDR PORTE.DDR.BIT.B0 -#define LED8_DDR PORTD.DDR.BIT.B4 -#define LED9_DDR PORTE.DDR.BIT.B2 -#define LED10_DDR PORTD.DDR.BIT.B1 -#define LED11_DDR PORTD.DDR.BIT.B7 -#define LED12_DDR PORTD.DDR.BIT.B3 -#define LED13_DDR PORTE.DDR.BIT.B1 -#define LED14_DDR PORTD.DDR.BIT.B0 -#define LED15_DDR PORTD.DDR.BIT.B6 - - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RDKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c deleted file mode 100644 index 0abb8a674..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* The following four functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1_ISR_Handler( void ) {} -void vT2_3_ISR_Handler( void ) {} -void vEMAC_ISR_Handler( void ) {} -void vTimer2_ISR_Handler( void ) {} -volatile unsigned long ulHighFrequencyTickCount = 0; \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c deleted file mode 100644 index bf6c385e7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c +++ /dev/null @@ -1,647 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ) __attribute__((naked)); -static void prvRegTest2Implementation( void ) __attribute__((naked)); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); - - return 0; -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #1, R1 \n" \ - "MOV #2, R2 \n" \ - "MOV #3, R3 \n" \ - "MOV #4, R4 \n" \ - "MOV #5, R5 \n" \ - "MOV #6, R6 \n" \ - "MOV #7, R7 \n" \ - "MOV #8, R8 \n" \ - "MOV #9, R9 \n" \ - "MOV #10, R10 \n" \ - "MOV #11, R11 \n" \ - "MOV #12, R12 \n" \ - "MOV #13, R13 \n" \ - "MOV #14, R14 \n" \ - "MOV #15, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop1: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest1CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Yield to extend the test coverage. Set the bit in the ITU SWINTR register. */ - "MOV #1, R14 \n" \ - "MOV #0872E0H, R15 \n" \ - "MOV.B R14, [R15] \n" \ - "NOP \n" \ - "NOP \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #1, R1 \n" \ - "BNE RegTest1Error \n" \ - "CMP #2, R2 \n" \ - "BNE RegTest1Error \n" \ - "CMP #3, R3 \n" \ - "BNE RegTest1Error \n" \ - "CMP #4, R4 \n" \ - "BNE RegTest1Error \n" \ - "CMP #5, R5 \n" \ - "BNE RegTest1Error \n" \ - "CMP #6, R6 \n" \ - "BNE RegTest1Error \n" \ - "CMP #7, R7 \n" \ - "BNE RegTest1Error \n" \ - "CMP #8, R8 \n" \ - "BNE RegTest1Error \n" \ - "CMP #9, R9 \n" \ - "BNE RegTest1Error \n" \ - "CMP #10, R10 \n" \ - "BNE RegTest1Error \n" \ - "CMP #11, R11 \n" \ - "BNE RegTest1Error \n" \ - "CMP #12, R12 \n" \ - "BNE RegTest1Error \n" \ - "CMP #13, R13 \n" \ - "BNE RegTest1Error \n" \ - "CMP #14, R14 \n" \ - "BNE RegTest1Error \n" \ - "CMP #15, R15 \n" \ - "BNE RegTest1Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop1 \n" \ - - "RegTest1Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest1Error " - ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #10H, R1 \n" \ - "MOV #20H, R2 \n" \ - "MOV #30H, R3 \n" \ - "MOV #40H, R4 \n" \ - "MOV #50H, R5 \n" \ - "MOV #60H, R6 \n" \ - "MOV #70H, R7 \n" \ - "MOV #80H, R8 \n" \ - "MOV #90H, R9 \n" \ - "MOV #100H, R10 \n" \ - "MOV #110H, R11 \n" \ - "MOV #120H, R12 \n" \ - "MOV #130H, R13 \n" \ - "MOV #140H, R14 \n" \ - "MOV #150H, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop2: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest2CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #10H, R1 \n" \ - "BNE RegTest2Error \n" \ - "CMP #20H, R2 \n" \ - "BNE RegTest2Error \n" \ - "CMP #30H, R3 \n" \ - "BNE RegTest2Error \n" \ - "CMP #40H, R4 \n" \ - "BNE RegTest2Error \n" \ - "CMP #50H, R5 \n" \ - "BNE RegTest2Error \n" \ - "CMP #60H, R6 \n" \ - "BNE RegTest2Error \n" \ - "CMP #70H, R7 \n" \ - "BNE RegTest2Error \n" \ - "CMP #80H, R8 \n" \ - "BNE RegTest2Error \n" \ - "CMP #90H, R9 \n" \ - "BNE RegTest2Error \n" \ - "CMP #100H, R10 \n" \ - "BNE RegTest2Error \n" \ - "CMP #110H, R11 \n" \ - "BNE RegTest2Error \n" \ - "CMP #120H, R12 \n" \ - "BNE RegTest2Error \n" \ - "CMP #130H, R13 \n" \ - "BNE RegTest2Error \n" \ - "CMP #140H, R14 \n" \ - "BNE RegTest2Error \n" \ - "CMP #150H, R15 \n" \ - "BNE RegTest2Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop2 \n" \ - - "RegTest2Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest2Error " - ); -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c deleted file mode 100644 index a1a33fe16..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c +++ /dev/null @@ -1,614 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vects.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -typedef void (*fp) (void); -extern void start(void); -extern void stack (void); -extern void vTickISR( void ); -extern void vSoftwareInterruptISR( void ); -extern void vT0_1_ISR_Handler( void ); -extern void vT2_3_ISR_Handler( void ); -extern void vEMAC_ISR_Handler( void ); -extern void vTimer2_ISR_Handler( void ); - -#define FVECT_SECT __attribute__ ((section (".fvectors"))) - -const fp HardwareVectors[] FVECT_SECT = { -//;0xffffff80 Reserved - (fp)0, -//;0xffffff84 Reserved - (fp)0, -//;0xffffff88 Reserved - (fp)0, -//;0xffffff8C Reserved - (fp)0, -//;0xffffff90 Reserved - (fp)0, -//;0xffffff94 Reserved - (fp)0, -//;0xffffff98 Reserved - (fp)0, -//;0xffffff9C Reserved - (fp)0, -//;0xffffffA0 Reserved - (fp)0, -//;0xffffffA4 Reserved - (fp)0, -//;0xffffffA8 Reserved - (fp)0, -//;0xffffffAC Reserved - (fp)0, -//;0xffffffB0 Reserved - (fp)0, -//;0xffffffB4 Reserved - (fp)0, -//;0xffffffB8 Reserved - (fp)0, -//;0xffffffBC Reserved - (fp)0, -//;0xffffffC0 Reserved - (fp)0, -//;0xffffffC4 Reserved - (fp)0, -//;0xffffffC8 Reserved - (fp)0, -//;0xffffffCC Reserved - (fp)0, -//;0xffffffd0 Exception(Supervisor Instruction) - INT_Excep_SuperVisorInst, -//;0xffffffd4 Reserved - (fp)0, -//;0xffffffd8 Reserved - (fp)0, -//;0xffffffdc Exception(Undefined Instruction) - INT_Excep_UndefinedInst, -//;0xffffffe0 Reserved - (fp)0, -//;0xffffffe4 Exception(Floating Point) - INT_Excep_FloatingPoint, -//;0xffffffe8 Reserved - (fp)0, -//;0xffffffec Reserved - (fp)0, -//;0xfffffff0 Reserved - (fp)0, -//;0xfffffff4 Reserved - (fp)0, -//;0xfffffff8 NMI - INT_NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC - start -//;<> -}; - -#define RVECT_SECT __attribute__ ((section (".rvectors"))) - -const fp RelocatableVectors[] RVECT_SECT = { -//;0x0000 Reserved - (fp)0, -//;0x0004 Reserved - (fp)0, -//;0x0008 Reserved - (fp)0, -//;0x000C Reserved - (fp)0, -//;0x0010 Reserved - (fp)0, -//;0x0014 Reserved - (fp)0, -//;0x0018 Reserved - (fp)0, -//;0x001C Reserved - (fp)0, -//;0x0020 Reserved - (fp)0, -//;0x0024 Reserved - (fp)0, -//;0x0028 Reserved - (fp)0, -//;0x002C Reserved - (fp)0, -//;0x0030 Reserved - (fp)0, -//;0x0034 Reserved - (fp)0, -//;0x0038 Reserved - (fp)0, -//;0x003C Reserved - (fp)0, -//;0x0040 BUSERR - (fp)INT_Excep_BUSERR, -//;0x0044 Reserved - (fp)0, -//;0x0048 Reserved - (fp)0, -//;0x004C Reserved - (fp)0, -//;0x0050 Reserved - (fp)0, -//;0x0054 FCUERR - (fp)INT_Excep_FCU_FCUERR, -//;0x0058 Reserved - (fp)0, -//;0x005C FRDYI - (fp)INT_Excep_FCU_FRDYI, -//;0x0060 Reserved - (fp)0, -//;0x0064 Reserved - (fp)0, -//;0x0068 Reserved - (fp)0, -//;0x006C Reserved - (fp)vSoftwareInterruptISR, -//;0x0070 CMTU0_CMT0 - (fp)vTickISR, -//;0x0074 CMTU0_CMT1 - (fp)INT_Excep_CMTU0_CMT1, -//;0x0078 CMTU1_CMT2 - (fp)vTimer2_ISR_Handler, -//;0x007C CMTU1_CMT3 - (fp)INT_Excep_CMTU1_CMT3, -//;0x0080 Ether - (fp)vEMAC_ISR_Handler, -//;0x0084 Reserved - (fp)0, -//;0x0088 Reserved - (fp)0, -//;0x008C Reserved - (fp)0, -//;0x0090 Reserved - (fp)0, -//;0x0094 Reserved - (fp)0, -//;0x0098 Reserved - (fp)0, -//;0x009C Reserved - (fp)0, -//;0x00A0 Reserved - (fp)0, -//;0x00A4 Reserved - (fp)0, -//;0x00A8 Reserved - (fp)0, -//;0x00AC Reserved - (fp)0, -//;0x00B0 Reserved - (fp)0, -//;0x00B4 Reserved - (fp)0, -//;0x00B8 Reserved - (fp)0, -//;0x00BC Reserved - (fp)0, -//;0x00C0 Reserved - (fp)0, -//;0x00C4 Reserved - (fp)0, -//;0x00C8 Reserved - (fp)0, -//;0x00CC Reserved - (fp)0, -//;0x00D0 Reserved - (fp)0, -//;0x00D4 Reserved - (fp)0, -//;0x00D8 Reserved - (fp)0, -//;0x00DC Reserved - (fp)0, -//;0x00E0 Reserved - (fp)0, -//;0x00E4 Reserved - (fp)0, -//;0x00E8 Reserved - (fp)0, -//;0x00EC Reserved - (fp)0, -//;0x00F0 Reserved - (fp)0, -//;0x00F4 Reserved - (fp)0, -//;0x00F8 Reserved - (fp)0, -//;0x00FC Reserved - (fp)0, -//;0x0100 IRQ0 - (fp)INT_Excep_IRQ0, -//;0x0104 IRQ1 - (fp)INT_Excep_IRQ1, -//;0x0108 IRQ2 - (fp)INT_Excep_IRQ2, -//;0x010C IRQ3 - (fp)INT_Excep_IRQ3, -//;0x0110 IRQ4 - (fp)INT_Excep_IRQ4, -//;0x0114 IRQ5 - (fp)INT_Excep_IRQ5, -//;0x0118 IRQ6 - (fp)INT_Excep_IRQ6, -//;0x011C IRQ7 - (fp)INT_Excep_IRQ7, -//;0x0120 IRQ8 - (fp)INT_Excep_IRQ8, -//;0x0124 IRQ9 - (fp)INT_Excep_IRQ9, -//;0x0128 IRQ10 - (fp)INT_Excep_IRQ10, -//;0x012C IRQ11 - (fp)INT_Excep_IRQ11, -//;0x0130 IRQ12 - (fp)INT_Excep_IRQ12, -//;0x0134 IRQ13 - (fp)INT_Excep_IRQ13, -//;0x0138 IRQ14 - (fp)INT_Excep_IRQ14, -//;0x013C IRQ15 - (fp)INT_Excep_IRQ15, -//;0x0140 Reserved - (fp)0, -//;0x0144 Reserved - (fp)0, -//;0x0148 Reserved - (fp)0, -//;0x014C Reserved - (fp)0, -//;0x0150 Reserved - (fp)0, -//;0x0154 Reserved - (fp)0, -//;0x0158 Reserved - (fp)0, -//;0x015C Reserved - (fp)0, -//;0x0160 Reserved - (fp)0, -//;0x0164 Reserved - (fp)0, -//;0x0168 Reserved - (fp)0, -//;0x016C Reserved - (fp)0, -//;0x0170 Reserved - (fp)0, -//;0x0174 Reserved - (fp)0, -//;0x0178 Reserved - (fp)0, -//;0x017C Reserved - (fp)0, -//;0x0180 WDT_WOVI - (fp)INT_Excep_WDT_WOVI, -//;0x0184 Reserved - (fp)0, -//;0x0188 AD0_ADI0 - (fp)INT_Excep_AD0_ADI0, -//;0x018C AD1_ADI1 - (fp)INT_Excep_AD1_ADI1, -//;0x0190 AD2_ADI2 - (fp)INT_Excep_AD2_ADI2, -//;0x0194 AD3_ADI3 - (fp)INT_Excep_AD3_ADI3, -//;0x0198 Reserved - (fp)0, -//;0x019C Reserved - (fp)0, -//;0x01A0 TPU0_TGI0A - (fp)INT_Excep_TPU0_TGI0A, -//;0x01A4 TPU0_TGI0B - (fp)INT_Excep_TPU0_TGI0B, -//;0x01A8 TPU0_TGI0C - (fp)INT_Excep_TPU0_TGI0C, -//;0x01AC TPU0_TGI0D - (fp)INT_Excep_TPU0_TGI0D, -//;0x01B0 TPU0_TCI0V - (fp)INT_Excep_TPU0_TCI0V, -//;0x01B4 Reserved - (fp)0, -//;0x01B8 Reserved - (fp)0, -//;0x01BC TPU1_TGI1A - (fp)INT_Excep_TPU1_TGI1A, -//;0x01C0 TPU1_TGI1B - (fp)INT_Excep_TPU1_TGI1B, -//;0x01C4 Reserved - (fp)0, -//;0x01C8 Reserved - (fp)0, -//;0x01CC TPU1_TCI1V - (fp)INT_Excep_TPU1_TCI1V, -//;0x01D0 TPU1_TCI1U - (fp)INT_Excep_TPU1_TCI1U, -//;0x01D4 TPU2_TGI2A - (fp)INT_Excep_TPU2_TGI2A, -//;0x01D8 TPU2_TGI2B - (fp)INT_Excep_TPU2_TGI2B, -//;0x01DC Reserved - (fp)0, -//;0x01E0 TPU2_TCI2V - (fp)INT_Excep_TPU2_TCI2V, -//;0x01E4 TPU2_TCI2U - (fp)INT_Excep_TPU2_TCI2U, -//;0x01E8 TPU3_TGI3A - (fp)INT_Excep_TPU3_TGI3A, -//;0x01EC TPU3_TGI3B - (fp)INT_Excep_TPU3_TGI3B, -//;0x01F0 TPU3_TGI3C - (fp)INT_Excep_TPU3_TGI3C, -//;0x01F4 TPU3_TGI3D - (fp)INT_Excep_TPU3_TGI3D, -//;0x01F8 TPU3_TCI3V - (fp)INT_Excep_TPU3_TCI3V, -//;0x01FC TPU4_TGI4A - (fp)INT_Excep_TPU4_TGI4A, -//;0x0200 TPU4_TGI4B - (fp)INT_Excep_TPU4_TGI4B, -//;0x0204 Reserved - (fp)0, -//;0x0208 Reserved - (fp)0, -//;0x020C TPU4_TCI4V - (fp)INT_Excep_TPU4_TCI4V, -//;0x0210 TPU4_TCI4U - (fp)INT_Excep_TPU4_TCI4U, -//;0x0214 TPU5_TGI5A - (fp)INT_Excep_TPU5_TGI5A, -//;0x0218 TPU5_TGI5B - (fp)INT_Excep_TPU5_TGI5B, -//;0x021C Reserved - (fp)0, -//;0x0220 TPU5_TCI5V - (fp)INT_Excep_TPU5_TCI5V, -//;0x0224 TPU5_TCI5U - (fp)INT_Excep_TPU5_TCI5U, -//;0x0228 TPU6_TGI6A - (fp)INT_Excep_TPU6_TGI6A, -//;0x022C TPU6_TGI6B - (fp)INT_Excep_TPU6_TGI6B, -//;0x0230 TPU6_TGI6C - (fp)INT_Excep_TPU6_TGI6C, -//;0x0234 TPU6_TGI6D - (fp)INT_Excep_TPU6_TGI6D, -//;0x0238 TPU6_TCI6V - (fp)INT_Excep_TPU6_TCI6V, -//;0x023C Reserved - (fp)0, -//;0x0240 Reserved - (fp)0, -//;0x0244 TPU7_TGI7A - (fp)INT_Excep_TPU7_TGI7A, -//;0x0248 TPU7_TGI7B - (fp)INT_Excep_TPU7_TGI7B, -//;0x024C Reserved - (fp)0, -//;0x0250 Reserved - (fp)0, -//;0x0254 TPU7_TCI7V - (fp)INT_Excep_TPU7_TCI7V, -//;0x0258 TPU7_TCI7U - (fp)INT_Excep_TPU7_TCI7U, -//;0x025C TPU8_TGI8A - (fp)INT_Excep_TPU8_TGI8A, -//;0x0260 TPU8_TGI8B - (fp)INT_Excep_TPU8_TGI8B, -//;0x0264 Reserved - (fp)0, -//;0x0268 TPU8_TCI8V - (fp)INT_Excep_TPU8_TCI8V, -//;0x026C TPU8_TCI8U - (fp)INT_Excep_TPU8_TCI8U, -//;0x0270 TPU9_TGI9A - (fp)INT_Excep_TPU9_TGI9A, -//;0x0274 TPU9_TGI9B - (fp)INT_Excep_TPU9_TGI9B, -//;0x0278 TPU9_TGI9C - (fp)INT_Excep_TPU9_TGI9C, -//;0x027C TPU9_TGI9D - (fp)INT_Excep_TPU9_TGI9D, -//;0x0280 TPU9_TCI9V - (fp)INT_Excep_TPU9_TCI9V, -//;0x0284 TPU10_TGI10A - (fp)INT_Excep_TPU10_TGI10A, -//;0x0288 TPU10_TGI10B - (fp)INT_Excep_TPU10_TGI10B, -//;0x028C Reserved - (fp)0, -//;0x0290 Reserved - (fp)0, -//;0x0294 TPU10_TCI10V - (fp)INT_Excep_TPU10_TCI10V, -//;0x0298 TPU10_TCI10U - (fp)INT_Excep_TPU10_TCI10U, -//;0x029C TPU11_TGI11A - (fp)INT_Excep_TPU11_TGI11A, -//;0x02A0 TPU11_TGI11B - (fp)INT_Excep_TPU11_TGI11B, -//;0x02A4 Reserved - (fp)0, -//;0x02A8 TPU11_TCI11V - (fp)INT_Excep_TPU11_TCI11V, -//;0x02AC TPU11_TCI11U - (fp)INT_Excep_TPU11_TCI11U, -//;0x02B0 Reserved - (fp)0, -//;0x02B4 Reserved - (fp)0, -//;0x02B8 TMR0_CMI0A - (fp)vT0_1_ISR_Handler, -//;0x02BC TMR0_CMI0B - (fp)INT_Excep_TMR0_CMI0B, -//;0x02C0 TMR0_OV0I - (fp)INT_Excep_TMR0_OV0I, -//;0x02C4 TMR1_CMI1A - (fp)INT_Excep_TMR1_CMI1A, -//;0x02C8 TMR1_CMI1B - (fp)INT_Excep_TMR1_CMI1B, -//;0x02CC TMR1_OV1I - (fp)INT_Excep_TMR1_OV1I, -//;0x02D0 TMR2_CMI2A - (fp)vT2_3_ISR_Handler, -//;0x02D4 TMR2_CMI2B - (fp)INT_Excep_TMR2_CMI2B, -//;0x02D8 TMR2_OV2I - (fp)INT_Excep_TMR2_OV2I, -//;0x02DC TMR3_CMI3A - (fp)INT_Excep_TMR3_CMI3A, -//;0x02E0 TMR3_CMI3B - (fp)INT_Excep_TMR3_CMI3B, -//;0x02E4 TMR3_OV3I - (fp)INT_Excep_TMR3_OV3I, -//;0x02E8 Reserved - (fp)0, -//;0x02EC Reserved - (fp)0, -//;0x02F0 Reserved - (fp)0, -//;0x02F4 Reserved - (fp)0, -//;0x02F8 Reserved - (fp)0, -//;0x02FC Reserved - (fp)0, -//;0x0300 Reserved - (fp)0, -//;0x0304 Reserved - (fp)0, -//;0x0308 Reserved - (fp)0, -//;0x030C Reserved - (fp)0, -//;0x0310 Reserved - (fp)0, -//;0x0314 Reserved - (fp)0, -//;0x0318 DMAC_DMTEND0 - (fp)INT_Excep_DMAC_DMTEND0, -//;0x031C DMAC_DMTEND1 - (fp)INT_Excep_DMAC_DMTEND1, -//;0x0320 DMAC_DMTEND2 - (fp)INT_Excep_DMAC_DMTEND2, -//;0x0324 DMAC_DMTEND3 - (fp)INT_Excep_DMAC_DMTEND3, -//;0x0328 Reserved - (fp)0, -//;0x032C Reserved - (fp)0, -//;0x0330 Reserved - (fp)0, -//;0x0334 Reserved - (fp)0, -//;0x0338 Reserved - (fp)0, -//;0x033C Reserved - (fp)0, -//;0x0340 Reserved - (fp)0, -//;0x0344 Reserved - (fp)0, -//;0x0348 Reserved - (fp)0, -//;0x034C Reserved - (fp)0, -//;0x0350 Reserved - (fp)0, -//;0x0354 Reserved - (fp)0, -//;0x0358 SCI0_ERI0 - (fp)INT_Excep_SCI0_ERI0, -//;0x035C SCI0_RXI0 - (fp)INT_Excep_SCI0_RXI0, -//;0x0360 SCI0_TXI0 - (fp)INT_Excep_SCI0_TXI0, -//;0x0364 SCI0_TEI0 - (fp)INT_Excep_SCI0_TEI0, -//;0x0368 SCI1_ERI1 - (fp)INT_Excep_SCI1_ERI1, -//;0x036C SCI1_RXI1 - (fp)INT_Excep_SCI1_RXI1, -//;0x0370 SCI1_TXI1 - (fp)INT_Excep_SCI1_TXI1, -//;0x0374 SCI1_TEI1 - (fp)INT_Excep_SCI1_TEI1, -//;0x0378 SCI2_ERI2 - (fp)INT_Excep_SCI2_ERI2, -//;0x037C SCI2_RXI2 - (fp)INT_Excep_SCI2_RXI2, -//;0x0380 SCI2_TXI2 - (fp)INT_Excep_SCI2_TXI2, -//;0x0384 SCI2_TEI2 - (fp)INT_Excep_SCI2_TEI2, -//;0x0388 SCI3_ERI3 - (fp)INT_Excep_SCI3_ERI3, -//;0x038C SCI3_RXI3 - (fp)INT_Excep_SCI3_RXI3, -//;0x0390 SCI3_TXI3 - (fp)INT_Excep_SCI3_TXI3, -//;0x0394 SCI3_TEI3 - (fp)INT_Excep_SCI3_TEI3, -//;0x0398 SCI4_ERI4 - (fp)INT_Excep_SCI4_ERI4, -//;0x039C SCI4_RXI4 - (fp)INT_Excep_SCI4_RXI4, -//;0x03A0 SCI4_TXI4 - (fp)INT_Excep_SCI4_TXI4, -//;0x03A4 SCI4_TEI4 - (fp)INT_Excep_SCI4_TEI4, -//;0x03A8 SCI5_ERI5 - (fp)INT_Excep_SCI5_ERI5, -//;0x03AC SCI5_RXI5 - (fp)INT_Excep_SCI5_RXI5, -//;0x03B0 SCI5_TXI5 - (fp)INT_Excep_SCI5_TXI5, -//;0x03B4 SCI5_TEI5 - (fp)INT_Excep_SCI5_TEI5, -//;0x03B8 SCI6_ERI6 - (fp)INT_Excep_SCI6_ERI6, -//;0x03BC SCI6_RXI6 - (fp)INT_Excep_SCI6_RXI6, -//;0x03C0 SCI6_TXI6 - (fp)INT_Excep_SCI6_TXI6, -//;0x03C4 SCI6_TEI6 - (fp)INT_Excep_SCI6_TEI6, -//;0x03C8 Reserved - (fp)0, -//;0x03CC Reserved - (fp)0, -//;0x03D0 Reserved - (fp)0, -//;0x03D4 Reserved - (fp)0, -//;0x03D8 RIIC0_EEI0 - (fp)INT_Excep_RIIC0_EEI0, -//;0x03DC RIIC0_RXI0 - (fp)INT_Excep_RIIC0_RXI0, -//;0x03E0 RIIC0_TXI0 - (fp)INT_Excep_RIIC0_TXI0, -//;0x03E4 RIIC0_TEI0 - (fp)INT_Excep_RIIC0_TEI0, -//;0x03E8 RIIC1_EEI1 - (fp)INT_Excep_RIIC1_EEI1, -//;0x03EC RIIC1_RXI1 - (fp)INT_Excep_RIIC1_RXI1, -//;0x03F0 RIIC1_TXI1 - (fp)INT_Excep_RIIC1_TXI1, -//;0x03F4 RIIC1_TEI1 - (fp)INT_Excep_RIIC1_TEI1, -//;0x03F8 Reserved - (fp)0, -//;0x03FC Reserved - (fp)0, -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 01ef9effb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -static volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ] __attribute__((aligned(16))); -static volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ] __attribute__((aligned(16))); -static char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ] __attribute__((aligned(16))); - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/* - * Handler for the EMAC peripheral. See the documentation for this - * port on http://www.FreeRTOS.org for more information on defining interrupt - * handlers. - */ -void vEMAC_ISR_Handler( void ) __attribute__((interrupt)); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( struct Descriptor * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = ( struct Descriptor * ) &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __RX_LITTLE_ENDIAN__ - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index be4d71175..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 8 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c deleted file mode 100644 index 7c02ddf8a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ); -void _phy_write( unsigned short reg_addr, unsigned short data ); -void _phy_preamble( void ); -void _phy_reg_set( unsigned short reg_addr, long option ); -void _phy_reg_read( unsigned short *data ); -void _phy_reg_write( unsigned short data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -short phy_init( void ) -{ - unsigned short reg; - unsigned long count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -short phy_set_autonegotiate( void ) -{ - unsigned short reg; - unsigned long count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* National DP83640 fix */ - _phy_write(0x13, 0x0006); - reg = _phy_read(0x14); - _phy_write(0x14, (reg&0x7FFF)); - _phy_write(0x13, 0x0000); - - /* Get the link partner response */ - reg = (short)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ) -{ - unsigned short data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( unsigned short reg_addr, unsigned short data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - short i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( unsigned short reg_addr, long option ) -{ - long i; - unsigned short data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( unsigned short *data ) -{ - long i, j; - unsigned short reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (unsigned short)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( unsigned short data ) -{ - long i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h deleted file mode 100644 index 6c0894ed9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,83 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x01 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -short phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -short phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index f6633e1d7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __RX_LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -long R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -long R_Ether_Close(unsigned long ch); -long R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -long R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 47d17fdcb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __RX_LITTLE_ENDIAN__ -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp deleted file mode 100644 index 241474974..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp +++ /dev/null @@ -1,2 +0,0 @@ -[Setting] -ToolChain=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws deleted file mode 100644 index 1c1c3961f..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws +++ /dev/null @@ -1,40 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RX600_RX62N_RDK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RX600_RX62N_RDK_GNURX.hws" "RX" "KPIT GNURX [ELF]" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws deleted file mode 100644 index 4ed474ecd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws +++ /dev/null @@ -1,17 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" 22 22 792 271 0 1 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" 0 0 792 271 0 0 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h deleted file mode 100644 index 42dd6cec9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "yrdkrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* -The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt is set by configKERNEL_INTERRUPT_PRIORITY. This would -normally be the lowest priority (1 in this case). The maximum interrupt -priority from which FreeRTOS API calls can be made is set by -configMAX_SYSCALL_INTERRUPT_PRIORITY. Interrupts that use a priority above this -will not be effected by anything the kernel is doing. Interrupts at or below -this priority can use FreeRTOS API functions - but *only* those that end in -"FromISR". Both these constants are defined in 'PriorityDefinitions.h' so they -can also be included in assembly source files. -*/ -#include "PriorityDefinitions.h" - - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR 28 /*VECT_CMT0_CMI0*/ - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == pdFALSE ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure false positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c deleted file mode 100644 index fdd006000..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -__interrupt void vTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_CMT2_CMI2 -__interrupt void vTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c deleted file mode 100644 index 404241c35..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. */ -__interrupt void vT0_1InterruptHandler( void ); -__interrupt void vT2_3InterruptHandler( void ); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR0_CMIA0 -__interrupt void vT0_1InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR2_CMIA2 -__interrupt void vT2_3InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c deleted file mode 100644 index 38d4a653c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include - -#define partestNUM_LEDS ( 12 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - case 4: LED8 = LED_ON; - break; - case 5: LED9 = LED_ON; - break; - case 6: LED10 = LED_ON; - break; - case 7: LED11 = LED_ON; - break; - case 8: LED12 = LED_ON; - break; - case 9: LED13 = LED_ON; - break; - case 10:LED14 = LED_ON; - break; - case 11:LED15 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - case 4: LED8 = LED_OFF; - break; - case 5: LED9 = LED_OFF; - break; - case 6: LED10 = LED_OFF; - break; - case 7: LED11 = LED_OFF; - break; - case 8: LED12 = LED_OFF; - break; - case 9: LED13 = LED_OFF; - break; - case 10:LED14 = LED_OFF; - break; - case 11:LED15 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 1 : if( LED5 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 2 : if( LED6 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 3 : if( LED7 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 4 : if( LED8 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 5 : if( LED9 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 6 : if( LED10 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 7 : if( LED11 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 8 : if( LED12 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 9 : if( LED13 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 10 : if( LED14 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 11 : if( LED15 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h deleted file mode 100644 index 96fd278fa..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef PRIORITY_DEFINITIONS_H -#define PRIORITY_DEFINITIONS_H - - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -#endif /* PRIORITY_DEFINITIONS_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c deleted file mode 100644 index 38457cc5e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Copyright (c) 20010 IAR Systems AB. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * IAR Embedded Workbench tutorial - * - * Test Program for the RSKRX62N Board. - * LED's perform different display according to - * which switch is pressed. - * Used to check that all the LED's, switches, - * clock function and AD trigger are working fine. - * - * $Revision: 1556 $ - */ - -#include "iorx62n.h" -#include "intrinsics.h" - -void ScrollLedsLowHigh(void); -void ScrollLedsHighLow(void); - -unsigned long pause; -unsigned long off_set; - -#define ON 0 -#define OFF 1 -#define LED0 PORT0.DR.BIT.B2 // P02 LED0 -#define LED1 PORT0.DR.BIT.B3 // P03 LED1 -#define LED2 PORT0.DR.BIT.B5 // P05 LED2 -#define LED3 PORT3.DR.BIT.B4 // P34 LED3 -#define LED4 PORT6.DR.BIT.B0 // P50 LED4 -#define LED5 PORT7.DR.BIT.B3 // P73 LED5 - -/* defined words used in this program */ -enum { - SW1, - SW2, - SW3, - NONE -}GetKey; - -/* SW1 ISR */ -#pragma vector = 72 -__interrupt void isr_sw1(void) -{ - GetKey=SW1; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[72].BIT.IR = 0; // clear interrupt request flag -} - -/* SW2 ISR */ -#pragma vector = 73 -__interrupt void isr_sw2(void) -{ - GetKey=SW2; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[73].BIT.IR = 0; // clear interrupt request flag -} - -/* SW3 ISR */ -#pragma vector = 79 -__interrupt void isr_sw3(void) -{ - GetKey=SW3; - - CMT.CMSTR0.BIT.STR0 = 1; // start timer - ICU.IR[79].BIT.IR = 0; // clear interrupt request flag -} - -/* Timer ISR */ -#pragma vector = 0x1c -__interrupt void isr_cmt0(void) -{ - // Toggle LED's - LED0 = ~LED0; - LED1 = ~LED1; - LED2 = ~LED2; - LED3 = ~LED3; - LED4 = ~LED4; - LED5 = ~LED5; - ICU.IR[70].BIT.IR = 0; // clear interrupt request flag -} - -/* Main program. */ -void main (void) -{ - // enable modules - SYSTEM.MSTPCRA.BIT.MSTPA23 = 0; // A/D Converter (Unit 0) Module - - // Set up RV1 (potentiometer) - AD0.ADCR.BIT.MODE = 2; // Continuous scan mode - AD0.ADCSR.BIT.CH = 0; // only AD0 - AD0.ADCSR.BIT.ADST = 1; // Start A/D - - // Set up SW1, SW2, SW3 - PORT0.DDR.BIT.B0 = 0; // SW1 input on P00 - PORT0.DDR.BIT.B1 = 0; // SW2 input on P01 - PORT0.DDR.BIT.B7 = 0; // SW3 input on P07 - - PORT0.ICR.BIT.B0 = 1; // Enable input buffer - PORT0.ICR.BIT.B1 = 1; // Enable input buffer - PORT0.ICR.BIT.B7 = 1; // Enable input buffer - - // IRQ8-A used for SW1 - IOPORT.PF8IRQ.BIT.ITS8 = 0; // P00 is designated as the IRQ8-A input pin. - IEN(ICU,IRQ8) = 1; - IPR(ICU,IRQ8) = 3; - - // IRQ9-A used for SW2 - IOPORT.PF8IRQ.BIT.ITS9 = 0; // P01 is designated as IRQ9-A input pin. - IEN(ICU,IRQ9) = 1; - IPR(ICU,IRQ9) = 3; - - // IRQ15-A used for SW3 - IOPORT.PF8IRQ.BIT.ITS15 = 0; // P07 is designated as the IRQ15-A input pin. - IEN(ICU,IRQ15) = 1; - IPR(ICU,IRQ15) = 3; - - // Set up LED's - PORT0.DDR.BIT.B2 = 1; // P02 LED0 - PORT0.DDR.BIT.B3 = 1; // P03 LED1 - PORT0.DDR.BIT.B5 = 1; // P05 LED2 - PORT3.DDR.BIT.B4 = 1; // P34 LED3 - PORT6.DDR.BIT.B0 = 1; // P50 LED4 - PORT7.DDR.BIT.B3 = 1; // P73 LED5 - - // Turn al LED's off - LED0 = LED1 = LED2 = LED3 = LED4 = LED5 = OFF; - - // Set up Timer - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; // CMT timers 0, - CMT0.CMCR.BIT.CKS = 3; // 25MHz/512 = 48.8kHz - CMT0.CMCR.BIT.CMIE = 1; // enable peripheral interrupt source - CMT0.CMCOR = 12212; // 4 Hz operation - ICU.IER[3].BIT.IEN4 = 1; // enable timer 0 interrupt - IPR(CMT0,CMI0) = 1; // LED level 1 - - __enable_interrupt(); - - GetKey=SW1; - - for (;;) - { - switch (GetKey) - { - case SW1: - ScrollLedsLowHigh(); - break; - case SW2: - ScrollLedsHighLow(); - break; - case SW3: - GetKey=NONE; - break; - } - } -} - -/* scrolls the LED's from low to high */ -void ScrollLedsLowHigh() -{ - char led_number = 0; - - while (GetKey == SW1) - { - if (led_number > 5) - led_number = 0; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number++; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} - -/* scrolls the LED's from high to low */ -void ScrollLedsHighLow() -{ - signed char led_number = 3; - - while (GetKey == SW2) - { - if (led_number < 0) - led_number = 5; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number--; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd deleted file mode 100644 index 9272a12b0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,898 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - C-SPY - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 3 - - 3 - 1 - 1 - - - - - - - - - - - - - RXJLINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Blinky - - RX - - 1 - - C-SPY - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 3 - - 3 - 1 - 1 - - - - - - - - - - - - - RXJLINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Debug-with-optimisation - - RX - - 1 - - C-SPY - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 3 - - 3 - 1 - 1 - - - - - - - - - - - - - RXJLINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp deleted file mode 100644 index 152a86330..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,2905 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - General - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 5 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 3 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Blinky - - RX - - 1 - - General - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 5 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 3 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Debug-with-optimisation - - RX - - 1 - - General - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 5 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 3 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common Demo Files - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\IntQueue.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - - FreeRTOS Source - - Portable Layer - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port_asm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - FreeTCPIP (based on uIP) - - webserver - - Common - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - Blinky - - - - - Port specific - - $PROJ_DIR$\webserver\EMAC.c - - Blinky - - - - $PROJ_DIR$\webserver\httpd-cgi.c - - Blinky - - - - $PROJ_DIR$\webserver\phy.c - - Blinky - - - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - Blinky - - - - - Renesas Files - - $PROJ_DIR$\Renesas-Files\hwsetup.c - - - - $PROJ_DIR$\HighFrequencyTimerTest.c - - Blinky - - - - $PROJ_DIR$\IntQueueTimer.c - - Blinky - - - - $PROJ_DIR$\main-blinky.c - - Debug - Debug-with-optimisation - - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\ParTest.c - - - $PROJ_DIR$\RegTest.s - - Blinky - - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s deleted file mode 100644 index e07183900..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s +++ /dev/null @@ -1,199 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - PUBLIC _prvRegTest1Implementation - PUBLIC _prvRegTest2Implementation - - EXTERN _ulRegTest1CycleCount - EXTERN _ulRegTest2CycleCount - - RSEG CODE:CODE(4) - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest1Implementation: - - /* Put a known value in each register. */ - MOV #1, R1 - MOV #2, R2 - MOV #3, R3 - MOV #4, R4 - MOV #5, R5 - MOV #6, R6 - MOV #7, R7 - MOV #8, R8 - MOV #9, R9 - MOV #10, R10 - MOV #11, R11 - MOV #12, R12 - MOV #13, R13 - MOV #14, R14 - MOV #15, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop1: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest1CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Yield to extend the text coverage. Set the bit in the ITU SWINTR register. */ - MOV #1, R14 - MOV #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop1 - -RegTest1Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest1Error -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest2Implementation: - - /* Put a known value in each register. */ - MOV #10H, R1 - MOV #20H, R2 - MOV #30H, R3 - MOV #40H, R4 - MOV #50H, R5 - MOV #60H, R6 - MOV #70H, R7 - MOV #80H, R8 - MOV #90H, R9 - MOV #100H, R10 - MOV #110H, R11 - MOV #120H, R12 - MOV #130H, R13 - MOV #140H, R14 - MOV #150H, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop2: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest2CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #10H, R1 - BNE RegTest2Error - CMP #20H, R2 - BNE RegTest2Error - CMP #30H, R3 - BNE RegTest2Error - CMP #40H, R4 - BNE RegTest2Error - CMP #50H, R5 - BNE RegTest2Error - CMP #60H, R6 - BNE RegTest2Error - CMP #70H, R7 - BNE RegTest2Error - CMP #80H, R8 - BNE RegTest2Error - CMP #90H, R9 - BNE RegTest2Error - CMP #100H, R10 - BNE RegTest2Error - CMP #110H, R11 - BNE RegTest2Error - CMP #120H, R12 - BNE RegTest2Error - CMP #130H, R13 - BNE RegTest2Error - CMP #140H, R14 - BNE RegTest2Error - CMP #150H, R15 - BNE RegTest2Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop2 - -RegTest2Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest2Error - - - END diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c deleted file mode 100644 index e177682f3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include -#include "yrdkrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - uint32_t sckcr = 0; - - /* Configure system clocks based on header */ - sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24); - sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16); - sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8); - SYSTEM.SCKCR.LONG = sckcr; - - /* Module standby clear - EtherC, EDMAC */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - - PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi) - PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later) - PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals - PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35) - PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47) - PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51) - - PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start - PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7) - - PORTB.DR.BYTE = 0x00 ; - PORTB.DDR.BYTE = 0x70 ; // Port B: Ether - - PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY) - PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3) - - // Ethernet settings - IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA - PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA - PORTA.ICR.BIT.B3 = 1; // ET_MDIO - PORTB.ICR.BIT.B0 = 1; // RMII_RXD1 - PORTB.ICR.BIT.B1 = 1; // RMII_RXD0 - PORTB.ICR.BIT.B2 = 1; // REF50CLK - PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER - PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV - - - /* Configure LEDs */ - LED4 = LED_OFF; - LED5 = LED_OFF; - LED6 = LED_OFF; - LED7 = LED_OFF; - LED8 = LED_OFF; - LED9 = LED_OFF; - LED10 = LED_OFF; - LED11 = LED_OFF; - LED12 = LED_OFF; - LED13 = LED_OFF; - LED14 = LED_OFF; - LED15 = LED_OFF; - - LED4_DDR = 1; - LED5_DDR = 1; - LED6_DDR = 1; - LED7_DDR = 1; - LED8_DDR = 1; - LED9_DDR = 1; - LED10_DDR = 1; - LED11_DDR = 1; - LED12_DDR = 1; - LED13_DDR = 1; - LED14_DDR = 1; - LED15_DDR = 1; - - /* Configure push button switches */ - SW1_DDR = 0; - SW2_DDR = 0; - SW3_DDR = 0; - SW1_ICR = 1; - SW2_ICR = 1; - SW3_ICR = 1; -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h deleted file mode 100644 index 779da3562..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h +++ /dev/null @@ -1,110 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RDKRX62N_H -#define RDKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#ifdef LED_POSITIVE_LOGIC - #define LED_ON (1) - #define LED_OFF (0) -#else -/* LEDs are using NEGATIVE LOGIC... */ - #define LED_ON (0) - #define LED_OFF (1) -#endif -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT4.PORT.BIT.B0 -#define SW2 PORT4.PORT.BIT.B1 -#define SW3 PORT4.PORT.BIT.B2 -#define SW1_DDR PORT4.DDR.BIT.B0 -#define SW2_DDR PORT4.DDR.BIT.B1 -#define SW3_DDR PORT4.DDR.BIT.B2 -#define SW1_ICR PORT4.ICR.BIT.B0 -#define SW2_ICR PORT4.ICR.BIT.B1 -#define SW3_ICR PORT4.ICR.BIT.B2 - -/* LEDs */ -#define LED4 PORTD.DR.BIT.B5 -#define LED5 PORTE.DR.BIT.B3 -#define LED6 PORTD.DR.BIT.B2 -#define LED7 PORTE.DR.BIT.B0 -#define LED8 PORTD.DR.BIT.B4 -#define LED9 PORTE.DR.BIT.B2 -#define LED10 PORTD.DR.BIT.B1 -#define LED11 PORTD.DR.BIT.B7 -#define LED12 PORTD.DR.BIT.B3 -#define LED13 PORTE.DR.BIT.B1 -#define LED14 PORTD.DR.BIT.B0 -#define LED15 PORTD.DR.BIT.B6 - -#define LED4_DDR PORTD.DDR.BIT.B5 -#define LED5_DDR PORTE.DDR.BIT.B3 -#define LED6_DDR PORTD.DDR.BIT.B2 -#define LED7_DDR PORTE.DDR.BIT.B0 -#define LED8_DDR PORTD.DDR.BIT.B4 -#define LED9_DDR PORTE.DDR.BIT.B2 -#define LED10_DDR PORTD.DDR.BIT.B1 -#define LED11_DDR PORTD.DDR.BIT.B7 -#define LED12_DDR PORTD.DDR.BIT.B3 -#define LED13_DDR PORTE.DDR.BIT.B1 -#define LED14_DDR PORTD.DDR.BIT.B0 -#define LED15_DDR PORTD.DDR.BIT.B6 - - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RDKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c deleted file mode 100644 index a5fef696d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the Embedded Workbench - * IDE. -*/ - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "partest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ - -/* The following two functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1InterruptHandler( void ) {} -void vT2_3InterruptHandler( void ) {} \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c deleted file mode 100644 index c542e2d7a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the Embedded Workbench IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Standard includes. */ -#include -#include - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* For outputing debug console messages - just maps to printf. */ -#ifdef DEBUG_BUILD - #define xPrintf( x ) printf( x ) -#else - #define xPrintf( x ) ( void ) x -#endif - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -extern void prvRegTest1Implementation( void ); -extern void prvRegTest2Implementation( void ); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - xPrintf( "http://www.FreeRTOS.org\r\n" ); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - pcStatusMessage = "Error: GenQueue"; - xPrintf( pcStatusMessage ); - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - xPrintf( pcStatusMessage ); - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - xPrintf( pcStatusMessage ); - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - xPrintf( pcStatusMessage ); - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index f156635c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,24 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM -@REM Read about available command line parameters in the C-SPY Debugging -@REM Guide. Hints about additional command line parameters that may be -@REM useful in specific cases: -@REM --download_only Downloads a code image without starting a debug -@REM session afterwards. -@REM --silent Omits the sign-on message. -@REM --timeout Limits the maximum allowed execution time. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.5\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxjlink.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxbat.dll" --backend -B "--core" "RX600" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\config\debugger\ior5f562n8.ddf" "--double" "32" "--endian" "l" "--int" "32" "-d" "jlink" "--drv_mode" "debugging" "--verify_download" "all" - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index ea81e7e01..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - 300BuildBreakpoints201622 - - - - - - 20121632481300Debug-LogBreakpoints - - - - - - - 164272727 - - - - - - 20010011Disassembly_I050020 - 200ethfifo-status4struct Descriptor-status420020916610010030010300Debug-LogBuild200110$PROJ_DIR$\TermIOInput.txt10 - - - - - - - - TabID-20000-3827 - Workspace - Workspace - - - RTOSDemoRTOSDemo/FreeRTOS SourceRTOSDemo/FreeRTOS Source/Portable Layer - - - - 0TabID-2655-13188Debug LogDebug-Log0 - - - - - - TextEditor$WS_DIR$\main-full.c0000026113773137730TextEditor$WS_DIR$\main-blinky.c00000000TextEditor$WS_DIR$\..\Common\Minimal\flop.c000002941206412064TextEditor$WS_DIR$\..\..\Source\portable\IAR\RX600\portmacro.h000009955655565TextEditor$WS_DIR$\..\..\Source\queue.c0000058522892228920100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2740238-2-212114172024143585142857755601-2-21981682-2-216842001002381203666119048203666 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni deleted file mode 100644 index 14f88bc28..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,141 +0,0 @@ -[E20] -TimeConnected=1305306990 -ComuniDllSave=194838528 -FfwnsdDllSave=194969600 -ChipName=R5F562N8 -CpuMode=0 -InputClock=12.500000 -WorkRamStart=12288 -JtagClock=10 -DebugFlags=0,0 -EmulatorMode=0 -NeedInit=1 -BlockBits=0 -B0=0,0 -B1=0,0 -B2=0,0 -B3=0,0 -TraceMode=0 -TraceOutput=2 -TraceCapacity=0 -TraceRestart=0 -OperatingFrequency=12.500000 -[DebugChecksum] -Checksum=-128387701 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[InstructionProfiling] -Enabled=_ 0 -[CodeCoverage] -Enabled=_ 0 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=0 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[CallStack] -ShowArgs=0 -[TraceHelper] -Enabled=0 -ShowSource=1 -[J-Link] -TraceMode=0 -TraceOutput=2 -TraceCapacity=0 -TraceRestart=0 -OperatingFrequency=12.500000 -PerfEnabled=0 -PerfCondition=0,0 -PerfDisplayTime=0,0 -PerfOnlyOnce=0,0 -PerfUse64Bit=0 -ChipName=R5F562N8 -PinMode=0 -RegMode=0 -Endian=1 -ExtMemBlockNum=8 -ExtMemEndian_000=0 -ExtMemCondAccess_000=0 -ExtMemEndian_001=0 -ExtMemCondAccess_001=0 -ExtMemEndian_002=0 -ExtMemCondAccess_002=0 -ExtMemEndian_003=0 -ExtMemCondAccess_003=0 -ExtMemEndian_004=0 -ExtMemCondAccess_004=0 -ExtMemEndian_005=0 -ExtMemCondAccess_005=0 -ExtMemEndian_006=0 -ExtMemCondAccess_006=0 -ExtMemEndian_007=0 -ExtMemCondAccess_007=0 -InputClock=12.500000 -AllowClkSrcChange=0 -WorkRamStart=12288 -ComunicationSelect=0 -JtagClock=10 -FINE=0 -FlashOvrNum=0 -DebugFlags=0,0 -EmulatorMode=0 -NeedInit=1 -[Disassembly] -MixedMode=1 -[PowerLog] -LogEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=0 -Title0=ID0 -Symbol0=0 4 -LiveEnabled=0 -LiveFile=PowerLogLive.log -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[PowerProbe] -Frequency=10000 -Probe0=ID0 -ProbeSetup0=2 1 1 2 0 0 -[CallStackLog] -Enabled=0 -[DriverProfiling] -Enabled=0 -Mode=3 -Graph=0 -Symbiont=0 -Exclusions= -[Breakpoints] -Count=0 -[Monitor Execution] -Leave target running=0 -Release target=0 -[Aliases] -Count=0 -SuppressDialog=0 -[Trace1] -Enabled=0 -ShowSource=1 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index c22e7832b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 277272727 - - - - - - - 20121632481 - - 181624 - - - - - - - TabID-10758-3386 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - TabID-16801-3477 - Build - Build - - - TabID-414-15843BreakpointsBreakpointsTabID-3320-15993Debug LogDebug-Log - - 0 - - - - - - TextEditor$WS_DIR$\main-full.c00000721377313773TextEditor$WS_DIR$\main-blinky.c00000720010100000010000001 - - - - - - - iaridepm.enu1-2-2706351-2-2331284197024289206210119720978-2-22321682-2-216842341002381238289197024289206 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c deleted file mode 100644 index df730a3c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c deleted file mode 100644 index 72336d35c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma data_alignment=32 -volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; - -#pragma data_alignment=32 -volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; - -#pragma data_alignment=32 -char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static volatile ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( ethfifo * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #if __LITTLE_ENDIAN__ == 1 - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] );/* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_ETHER_EINT -__interrupt void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - __enable_interrupt(); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c deleted file mode 100644 index be4d71175..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 8 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c deleted file mode 100644 index b074aae4d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* National DP83640 fix */ - _phy_write(0x13, 0x0006); - reg = _phy_read(0x14); - _phy_write(0x14, (reg&0x7FFF)); - _phy_write(0x13, 0x0000); - - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h deleted file mode 100644 index e2429d932..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x01 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h deleted file mode 100644 index 1dcc46865..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -int32_t R_Ether_Close(unsigned long ch); -int32_t R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -int32_t R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h deleted file mode 100644 index e5597d232..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#if __LITTLE_ENDIAN__ == 1 - #define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else - #define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp deleted file mode 100644 index 0d3910dbc..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp +++ /dev/null @@ -1,4 +0,0 @@ -[Setting] -ToolChain=0 -[Section] -WindowSize=726,544 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws deleted file mode 100644 index d9db19603..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,46 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo.hws" "RX" "Renesas RX Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_2\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_2_1\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -"c:\devtools\renesas\hewforrx210-w1\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws deleted file mode 100644 index ef666fddb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,13 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -[WORKSPACE_FILE_STATES] -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 49a2c5fc2..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,101 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 289 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 206 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N_Renesas\RTOSDemo\RTOSDemo.c" -[TARGET_NAME] -"" "" 1229201492 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 8fea3a2cc..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "yrdkrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR _CMT0_CMI0 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() nop() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index b97be45c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -static void prvTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( prvTimer2IntHandler( vect = _VECT( _CMT2_CMI2 ), enable ) ) -static void prvTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - nop(); - nop(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index fcbc233eb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT0_1InterruptHandler( vect = VECT_TMR0_CMIA0, enable ) ) -void vT0_1InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT2_3InterruptHandler( vect = VECT_TMR2_CMIA2, enable ) ) -void vT2_3InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c deleted file mode 100644 index 9b76b0213..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define partestNUM_LEDS ( 12 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - case 4: LED8 = LED_ON; - break; - case 5: LED9 = LED_ON; - break; - case 6: LED10 = LED_ON; - break; - case 7: LED11 = LED_ON; - break; - case 8: LED12 = LED_ON; - break; - case 9: LED13 = LED_ON; - break; - case 10:LED14 = LED_ON; - break; - case 11:LED15 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - case 4: LED8 = LED_OFF; - break; - case 5: LED9 = LED_OFF; - break; - case 6: LED10 = LED_OFF; - break; - case 7: LED11 = LED_OFF; - break; - case 8: LED12 = LED_OFF; - break; - case 9: LED13 = LED_OFF; - break; - case 10:LED14 = LED_OFF; - break; - case 11:LED15 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 1 : if( LED5 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 2 : if( LED6 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 3 : if( LED7 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 4 : if( LED8 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 5 : if( LED9 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 6 : if( LED10 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 7 : if( LED11 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 8 : if( LED12 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 9 : if( LED13 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 10 : if( LED14 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 11 : if( LED15 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 34a8806b8..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,629 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" "RX" "Renesas RX Standard" "Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas RX Standard Toolchain" "1.2.1.0" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Debug_with_optimisation" -"SimDebug_RX600" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\SimDebug_RX600" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas RX Assembler" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX Configurator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LST" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C source file" "C" -"C++ header file" "HPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Configuration file" "CFG" -"Debug information file" "DBG" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Configuration file" "TEXT" "EDITOR" "" -"Debug information file" "BIN" "NONE" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas RX Assembler" -"Renesas RX C/C++ Compiler" -"Renesas RX C/C++ Library Generator" -"Renesas RX Configurator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX Assembler" 1 -"Renesas OptLinker" 1 -"Renesas RX Configurator" 0 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas RX Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas RX C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas RX C/C++ Library Generator" "" 0 -"Renesas RX Configurator" "Configuration file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas RX Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas RX Assembler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "Renesas RX Assembler" "Renesas RX C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas RX C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas RX Assembler" -"Object file" "Renesas OptLinker" "Renesas RX C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "User" "C source file|FreeRTOS" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C source file" "C source file" -"C source file|Common demo tasks" "" -"C source file|FreeRTOS" "" -"C source file|FreeRTOS|Portable layer" "" -"C source file|FreeTCP (based on uIP)" "" -"C source file|FreeTCP (based on uIP)|webserver" "" -"C source file|FreeTCP (based on uIP)|webserver|Common" "" -"C source file|FreeTCP (based on uIP)|webserver|Port specific" "" -"C source file|Renesas Files" "" -[GENERAL_DATA_PROJECT] -"MAKEGEN_GENERATE_MAKEFILE_FOR" "0" -"MAKEGEN_MAKEFILE_FORMAT" "2" -"MAKEGEN_MAKEFILE_RELATIVITY" "1" -"MAKEGEN_SCAN_DEPENDENCIES_WHILST_BUILDING_MAKEFILE" "1" -"MAKEGEN_USE_STATIC_SUBCOMMAND_FILES" "1" -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\SimSessionRX600.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SimSessionRX600] -[OPTIONS_Blinky_Renesas OptLinker] -"Single Shot" "0875a156ef7aec10" 5 -[OPTIONS_Blinky_Renesas RX Assembler] -"Assembly source file" "0875a156ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0875a156ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "0875a156ef7aec10" 4 -"Linkage symbol file" "0875a156ef7aec10" 4 -[OPTIONS_Blinky_Renesas RX C/C++ Compiler] -"C source file" "0ae89056ef7aec10" 2 -"C++ source file" "0ae89056ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0ae89056ef7aec10" 2 -[OPTIONS_Blinky_Renesas RX C/C++ Library Generator] -"Single Shot" "0ae89056ef7aec10" 1 -[OPTIONS_Blinky_Renesas RX Configurator] -"Single Shot" "0875a156ef7aec10" 6 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_Renesas OptLinker] -"Single Shot" "02d70456ef7aec10" 6 -[OPTIONS_Debug_Renesas RX Assembler] -"Assembly source file" "02d70456ef7aec10" 5 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "02d70456ef7aec10" 5 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "02d70456ef7aec10" 5 -"Linkage symbol file" "02d70456ef7aec10" 4 -[OPTIONS_Debug_Renesas RX C/C++ Compiler] -"C source file" "030e6356ef7aec10" 2 -"C++ source file" "030e6356ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "030e6356ef7aec10" 2 -[OPTIONS_Debug_Renesas RX C/C++ Library Generator] -"Single Shot" "030e6356ef7aec10" 1 -[OPTIONS_Debug_Renesas RX Configurator] -"Single Shot" "02d70456ef7aec10" 7 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 7 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 4 -"[V|VERSION|1] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)^"] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 5 -"[V|VERSION|1] [S|LANG|C99] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 1 -"[V|VERSION|6] [S|PRELINK|SKIP] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODALL|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] -" 6 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas OptLinker] -"Single Shot" "05a6d256ef7aec10" 5 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Assembler] -"Assembly source file" "05a6d256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "05a6d256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "05a6d256ef7aec10" 4 -"Linkage symbol file" "05a6d256ef7aec10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Compiler] -"C source file" "06e36256ef7aec10" 2 -"C++ source file" "06e36256ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "06e36256ef7aec10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Library Generator] -"Single Shot" "06e36256ef7aec10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Configurator] -"Single Shot" "05a6d256ef7aec10" 6 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_Renesas OptLinker] -"Single Shot" "06e36256ef7aec10" 5 -[OPTIONS_Debug_with_optimisation_Renesas RX Assembler] -"Assembly source file" "06dc3256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "06dc3256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "06dc3256ef7aec10" 4 -"Linkage symbol file" "06dc3256ef7aec10" 4 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Compiler] -"C source file" "0875a156ef7aec10" 2 -"C++ source file" "0875a156ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0875a156ef7aec10" 2 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Library Generator] -"Single Shot" "0875a156ef7aec10" 1 -[OPTIONS_Debug_with_optimisation_Renesas RX Configurator] -"Single Shot" "06e36256ef7aec10" 6 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[OPTIONS_SimDebug_RX600_Renesas OptLinker] -"Single Shot" "04694356ef7aec10" 5 -[OPTIONS_SimDebug_RX600_Renesas RX Assembler] -"Assembly source file" "04694356ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "04694356ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "04694356ef7aec10" 4 -"Linkage symbol file" "04694356ef7aec10" 4 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Compiler] -"C source file" "05a6d256ef7aec10" 2 -"C++ source file" "05a6d256ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "05a6d256ef7aec10" 2 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Library Generator] -"Single Shot" "05a6d256ef7aec10" 1 -[OPTIONS_SimDebug_RX600_Renesas RX Configurator] -"Single Shot" "030e6356ef7aec10" 6 -[OPTIONS_SimDebug_RX600] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_SimDebug_RX600] -[LINKAGE_ORDER_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 41b478438b45fbbefd88b722be2418f3043cc1ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209220 zcmd4437BI?bv8_x#k21--c8%sSh5Z1-m9&}X0@d5mPakgl6rcEP44N|%rw)R)#~w# z0kdym4NHJP!V-2!SObKF00|`d*c0+4;UgjWSOSFX3)#c>o>Ns<(k&h7+Tnkmzn`&Z zx$il3>b$krsj4l`BgRXYJ?KF@b7T3|nWfd%#)I(lVEP|^eoFnO{(qp^%#|v+ zH{G0WHXn+A--7?130NO;w?P8*C=L2R5Oi6ynQ!C@k+)v0wA_b8`?TzDHm4hnYQCA9 zDpGPWt?3m(P5TURvQD@gHSVW_xI4O$=xC%< zZ4koMh%17KD6VL?d||R!E;OeL*?ghaY-Y8DMII7v6lVZ|+B-Dp)j{(?+-$Mx zm#4>S+^2)My#`k$b)JTOHVD(|a+UHV;nEuSi6CyLQU^#?_o$qxh1PncLh;! z|A|7b5qYoVeiY%k!bH7LJE1&bisrL}CT&-B;TI)E+qj^;W5{Qevv*6Mw^A{Cv-I_{ z=1jIUF*|A4FWK1yV6s>;j<*2Ynllr{vZs!_;jH(K9eK(1EEHXbPfpubR= zj1T)L#7eD}(7A0J?Cpnl0Chl`=rNql~JXohX)yjZ-A_FiB`%wua_uu5qebXcijNr!}q-tW7%!S1VLY zr|yy5EoS>n`lO@<1W`o-H&>h4NHm z`jn*g0D!1h&0;xU%w-#un&HaI6`5NvfTcVcY%F-AWC1y$K3%CbnseD=GDQe!?oSx8- zw+0KxK?PApQepO?KNo~Y1gp+58=|AU;n+>?&8lIjwghD6v;d)G@$p zL|&<3R(p1&7uHk*`206D`gBm~bqbxEE};HTqD@mRK?S|+B--%PQYweETy<8@5~m-3 zLc-ppu;`4z7P4B*qhsJkVxoW~3(b0|P^daEji#5DiPtLesRFv@Y@^VmHkhTUTdU7Y zsa~$cI5D)Yv!#6VRIyOXn@+}ZTv7{^bER2yve|02MD09{9<&#!DL+vx6{e7hNsO@Q zTm4SS?tNMxW<2?PE%r;2q5U}Lm&4)Q_lLuIACPblQT81#)XIetdNnjZwOLGoOn*g7 z14M}BsKZLIgchrLqEdp3N`?D0_(ZUP?N{KLY)-l1?UL32(0NBlp!?2{K<`~4f$?{T z1SZ}i0kv;uvL`WE^IHS$*^t)(W{o@dO%A8rGS5I;%5wL$K=Uj2TfHVPH5)d@V}8(A|L&sTa!m{-jJ3 zZzZL>gGLd(2shHxk3T7;aZu%mv9z92sXbkS>HCBLbWlyCM9%K=c3X;f$=+UGkCWWIi}#V^+MB0HYbV=bYZ#Ubu)yw@H!ua&z8_K zm(j|C_-wWKIc<^EPipR1q^Iv%0{9G zB*1}%wrRk*?T`GIguF6<#A;4urdh1lBHz$Xvr^w{M5w8cyhYM{tQXc*`;;MSvF5;K zst}7Dlhh)0ALc|Zmtb%rN++f~f3G>Pvhm=2_SYo}_Aj>PJLgo3PF>%5t;B`#NU{5~ zEnk?Jow`?lZUjF+IPb3}So8ZW`BJW`1+9-;^BDVnQZjEFeU1Ib(9h1NhJJQGJ@m8p z8R_#DY{>nl^l=;S*1b*qTp+`LOZt38Yh```%OaELw`ozUiB^Rgyt--fpB(hBCBYS^ zxw2s#Yf0>Dxt=spLU-fuYCIB#CEdmHt3rye5}+M8PKc8=%Fv`EHXFi*X) zJY1}y$D1k4RBERTHNSz1)K`}dLcCm2V@Ir3V#aQkrYz_IKve_Bi-(20*|)Ti`+Ovo zq*G=&%fjvTag$iJo6%XcU|n^*EMR(V3%9q`nBO=*)#}tc^PQF{zk7n^SHTzq>^wdX zT+G;my@KXUvB(Sgro*w?427blevB$ixwcSyNmtD%Gey*bZ3nDS%Y9a=tJ@1FsV;v` z`hJ=E9{cSP0Oxlkz}87r(XVPEtOeZ%PZn}gIovi`%GRfUS5my2KV!~{k>P~a@w#AP zgbvJDZ_%GiLE`pcovX@472yO%$s2=8woF!I=A-3dd~~u>7WPb5v*4-Tzz%xN6d%iq z-9D;VHZ{NkbyZ<`(G*wr@9%p#y)$n z?uJGGM&EM&F9#J~ezvuGHxDHwj7=c1+`v5?2kwdU7(v4lD)j-}}x zflLH_vV*3PgrJs#{_6zYynVV+DVHK&-m1R`HSqU(JQnk(tKtx&AmRfR;e_um0*W`7)>>>6j998%`T%Ay0fp?w;O5VD6AF! z9gM?n)RtIz5&rABQQK)hO zHDLlv>V13Gzbi>y9gwP5XvRans+5065*kxNG!?}%b-glM!+eJKvT4m3ldLa=;HH0z72gmZ>=fT9f!Tt|+-!5Qh}m83Y6-`Mm2tKFsp2&fjB5z0A!63< zjHSb%oN)=oNorkAY$6oQ$%TTs`A{&g5DFHb3m2d~BHGy9ouoPHt{Zo-)xg>%_H z_er5}C)_87z`;KE@u6@N?h{7gJg%qS=@2-i>peLXZo+GZ!sWcXLgDh>{3u+U^ASHA z0*8FW7ee7C;)|hhxp*rSE+0QL3YXx@lsFd(cOtPA3OAQ{$|zit{g+$|frI~&=R@Hp zlFOlRx#UVHTt2xP3Rg(3hr&%J?;eFqas5qghQgglbwc3azf?OEZX&fY3YTX4(w9Qv zPNXk}z`?%sg;2PO^gW|+<6N%B?+bxLy5skT!cB}nH54v4{heJZ=uSrOrxz_5{Vys!OBJ0smz+y3WTPR?y7`r7Duu+WN zIuhuxjn2bE0gFW^77AD^I*$kiY!sbGO2FMT&aE{Ns#u!2VDe&bu^4B#@j-` zpzRk&!CbPDP+M4~~Yxw&aIK!(dzTBOzeW_F)Oev%1Di z4TlqEuqyE4P`HWMOC%gO53H|pq8NLr1T)Fr%4rt0b67me+E#-m635CcM{3IFqbL$$CF4!Fa?nTc3zE^D!)Z zR$>ngfpi#oqlDzFuulB17`sWrnY109w)3zMNKV_iSwfn$ohGI2L?j%$2M~hQV$-2u zPEmsKcyun0gKlv4aS64rSVq97*`fCLo+?^Q*J#wbsVkW_zKv@jOZFP@h=7wLE|6g%b918#}w& zSz3O9Bycz=(CW0FD}k@*1Dh<@Tb*Z15=Z(Z>YE$ut<}ZnOXzD1`r@6Nt<4sEIkVYm zU7TK9UTn30UQ1cbkNHw{gmkT+TWbd--y%s~?@Ma_bDQmUYqdjvo1R}?TyFiFBzj#? zvI>&ui<`@>HU}X6w3f4q+f{w(q0nruv?kkYD+m((x|G(#x-v^Etv1}* zpx^WJt(CRauC1?^6Wm4tU#H?80eWbY?-D;v%EF4*I_hhk#O?z@8pY$>ZgPsy}&E*8{i{oJ{ zoK0D(P?ILIUM)k zBkSCwAo#J|Fo)W#{IW$9dU_&T!l`{akzJ}xElR1dMHSqm!g2B(o4GDw50FK@;YIgK z$RmVQ$85WtUXsxJ8O^86*#HwqYUS-90Xbh75m7-Yn@D;Ky1iJTSd7n0F%mn9I3R@x zk(s^Pstdu2x()Zi%uISHfE4d^Ay^Rc8Q~kI*jX{zTj{!;_eiO4!7V6nkv{Gy)+^1^ z^Q&hI+O$|O?VW^JSX*9OElQB>1X*1+gAYr^Zu-97LchG)F$V}N&@K&HT3eiw5@K66 zmghIlO%I2x&o8v{5@c%;L$5DL9@&MO~gC-ZG8~6olu2xS<(Vq z=sW2!fy!1&tfN*p@x<15)={gI4igt`VYVSs)rpy?J1baiCx0dlrX9B+tids{&(>$w zfO$f`c1q{fg0KeHWW)N*8eG!w_@Np+bzHblTM zwOcsJ5&4QF%89AqP8$4?d}R(-DMUVeKO}fO5HS(7mU-70^H_7hvI8K4diM}g<-*B^ z&d)y#wXVpK>y0e#*vL2MijC=FIdYAZ&LOgn-3&24I}-Whq1p|Wy1HT(e=Fo8w@TXC zze<99i&+PoRg2s>RDw>vb)^&|?-^=Uzl37s*CmNPr4z+wzF4ObZT_7awJ%r@cM}S? znGxt666nav{L-olU%%5ItiN5O&jeNOCA7Lu1WG?7!7lH@c)V>U0dJKAu4DlWCh6j( zJ`rQMWeOXP5iA69r*itv5#uon%@(Qlq))wZo+WUMEb{Q#8FBE$JSLECLd;z z!lL02!8b8k>GlloAF7(LeGI=#f*)SN`P6RTL_)r6%0UA55x8rE875k|9W(hHAG~~| zPS&~~ZYyTJk;)EX;_I&r1N6V~S#5kRZF14nSgyqcKivG{!wM8snXnFe=wLZ+uQdD2w^X@y|(^ z-JB~G@_t$ZDeq8(Z)YUL*_0s49FB*5#%PT5ObO##<6amE@$MN3iC-KENn9EUNj`NX zB=xkBko40>LdNeK3CV7ZgiPE!98#@L#qJ&naoWQn=zwBx90_rLUV^9+!x2xf9*uEc zGXg`AKCc^%ab74l>)&QFiVxGx!v@m@9>lX%5wO!AcyMlnT^0?(2lD(eJso+Dv=HO{j~Lfq#{5I-f? zd%lG6Q}UiS9D-fv*w2oHIIoo;TdAr4;;^sIm!z-TxPkw}p`V>Ul0H+)?w5ys^}aIf zYy7Ljz9xQe*w^Im5Br+>+OV(bKN$9P{C^Mon*HNpUnjmUeciU&Sv$AwvC+Ofuo z^m*gk(&w#ZT=NjoDcBi$`p2Q9L2I)~N%s|lgy`y) z)NqMe?7Ef7PQCbqTQ#0C9N1k|S(1RqSYvn3UmIdBqqK6hjT)!eHzbeq zXXj6bes=$K=x6VnLqEs=Z0P62pAY?<{J%p#r@l4xbNbsuKaYQB=;!QrrOzm*H5I5a zZFb)#gGKN9^|dx0At+9j`I!i`x47-5xqi_^X5}V6t2w>~zoV3Qe-0>7T%=nq(LJ4Y zQ)X`qCUOfSmFnVTHw4396~#ZHtQ2v(pIM^5Ca8mpz{Fojc}2Bocc}4f(mNAo!St_! z)eD?n;yqti<9AR|fz zys|NiMbX?uWV=qw3c^E`g)%^ExZNNZiN09p;%|aEzN!oK!!N6TJ}z6xoP3oVv+vo!ixyo+MC?*Af~rHBI2bxgCkAy~!2(T(i= z_nk+guhGd^aZ*>a20V6wYs*XM8ga)C?q)@B6MX(^Eo9~FIu_DTZ82s9V`qwi3=OM`hP~U zUS*fS{pw#YX@8iny32ez1+;qG(1`bj_Q|Xg=sFZb=OiK+`%~zuGsTE3D3{`C#N( zl8bwQbCp`&2YxG<8Sb^ZEe`dyW-Ry3AeLKD>XC6-y~*=fFwfju5~x01oNSm;nbmTs z9M|zy9fswR==XF+9uZXM;^n;z7TBSR!vq0kiF#R=nh(|jPrkDtjf-H~C~T0yv03-X4#c@BpoYwOt)h3D(^{wY{6*s0}8 zH4=S}hFICWhBaeZLEUvYTjMBSN&@qk6HqvC*mIPnPEfOtx|wU#__-}JGqIWh_EVYQ zwANHVLDM;uXj2F+JlAC0;^^0>XG`YyBDq2tq*bBVUUAfCOjWb_?xR)_Gtjhh$fJ=O?uo@kN&TGYBC&1=RPfBrNg;~2;xH2%V>xp>JE|~8?4pZECp8uTDvR~H66RvEpk&u z<&eXBIDt=Sd#nU_R_b zt*KgNt}$&!0G2Xk7e7`;Ga?iJVBxqmsn1q%&ps}irx9hnnWb?Sy)+at0~E_S+|AVI zVpJK7^R51a3!ECjaND3_H}27yvrOT#!=WJNO8v+SB`lYOJ}gEcl}07<0!e~vCQE3G z{7c`Xf39UB!79K*ewM*?gY_nlm}uz9^&k>0O059XL}o-jxQZz_t?TL$H#jqnwIsAbv}lEfzsXbTYNKY{YT>z@ z;W>z^dNaz5o~(MpdS~g`mu7DyjH!Klg0ANR#`jG}q8BA^@F1K)-3ooT23tjzrvw3T z^!plZ<*Ns+q9!Ry=X#0ot+aXmSJGgazB+#`ecghpXGRr&5bSy`L$_0IO!}RNb+Ti> z-!G~7f73Es4n5ohH1+GbI`o*f{8kXtLJVkFB>aWEU6dU|VCY)|y|uR6_J< zWJ$MxPYW`7xrOIbhkiURtvUC#-IPG?Tx;PxpTTT#N*j^rpJ}5l{1M>k&|PkVPU@)x zg^^9koV`F#$-sI+V}Ga}VPP*bjDWMN2G#!CadJ7Wrphk90h)U3_6;!`nhs7LzXoL0N_6;ecT0c$7 zlqt8F;kJ}TykSGR)P~n3YqUdXWQAi@8vXB*8HbhaghmgfY~CZO);9NK??aN_qe?Hw zgW`CY*8C|6euaYbBM6OYvPMhXBiW)03QN!fMI|lJkpy;_3)3I1jrdt0@vHl@hqggg zf$l^%G|GB6eHTz%emc=-NSGZ8Q^=dNEG@eU!DXux{gI?*rv?@BkCGsyN0p&Yv?_u2 z0YrmmdS7L|6aDTmTpeNE`Pot-awfW8yV5eA996Go=TO}`w|!aCb_6KRIY`Vi24^mlIiw1hoqu$uVJZD!@uGS!F9O(RN`?0u)Cm53z^(9dTi4CP$)?C|3a zl7A>Ks<-wHOiEZvm9d5VW5iU~FH|w0pP64qJ8l+Ct&Z}uzd^~`$#&*Ksqr{E>!ST z_-vUEe3&2%0Z&gFV8?j2j91BNUY|Ei-5WIID%P(ah?t_M$<%og8pE3<5=&+u%g`BQ z-qkkiYE~u>Gfuez2YfgYvnFmSJ<x56-XC{X3NDt=XwYh~I2`DL`Xe^q6)e7E z8?BXzK!4cxNUsTXu+lgL$-pR}EZK7%uw9dMFHZ+;Rj)H6$z2OMgo*l1pnv-gZ_An< zXgZjEGL5545!pr$gJM^~bi5Y!dW9_`_)tj3bY7O|el3b!DQcVj_rNXS0R>cxSC^T8iPW_97zCMVi-i2a1%yvzkj_(gl=<*&>tSw-~ z4cY8e;m;+3ZG3#>-=&(!pPm00`q}-@p`X3~8u~f$-$Oqqe=L38rwS2o9`~$(-Wc@# zZr~`CjK=o2X;$Mw&|wAQa*ytb7v&x)fsgis^=j24B>16zIE@@*5_Z4B(&`tjtu-78 zxJv<1SqryHm^})kwq>&#Wnb8%P_z>Da7oi%h0$vUw@a$FZ{SVIrGUJokI%ol)-hGtx5$gFi8WR_7NizWI4PO=j>OHgAW_^S-UsdzCA?bU# z{JSQa=wuNo+NM+>qkTeHnnBPndz?OxEqvs z3Bfs5tQ)rmk?1zb8|-ww+ssovwEuLI34%LwlFV*OPpytd&BlOLE-!23aNa+6{8x0Q zF9e%A1|Wp?V?zOx#qtLwz-~%{&NRWhzd8~$Q?LJ;1ln&j0YqcbPfEZ&23W3Cs-KWh zoV99w`XfUDxW4hjLjm3mp+qfZ>#k6ip~mN7oVA-h#ZRbm?~f= z0gL^4lTXVt2YV#Y=HRHBY1%C4fgUKg(q^UILhkQFR;ni?UUma$7NVZ0LFa8vmVOt?A<3rq{*SCHzA=ZCvi?Pc$*Ajxy4w5l8Jx3C~l0|WU4$VRJJ+bWc zNK6vBnnf@^LfjUv6UOQfZn#o=)X{__q|ylpu_rQ;h$?p!#+g_11T5mKffLVhBIhMR zMWZUDsvJeuB&@Ql7i(O$A&K;=S4~3Xws_F-1=x!!DW%4me>Y=t-R-S%M67F?1 zw=l1jkeBx)Lr9aGH%J1#+$aH)mG?^`z1;MPn8ZFTN$z3mxC4nquai)Ult%V=LG3%D zX5e1OI7?k3|1Sf-3G< zJ43MtOmQ~RuSo*^y3v0}z9K<;EawK1k8slVOXP==$aP)6m|ZTqE1_7%#vg*H?v&(I z8_L=6<&02K66(pjFNE1-HIBzn6fq1qfZ5;B84-CpG*KbE9)I*13LMO!sA z*$BqGAnWmj95zTd-wnMtar?&i>BE zd4Hi4CuRRi5Am#Z1_G+CjK{^bzmb3k0ObDO6hN~%Xw9h)86;XVtf|lr!Z}In6~G=Z z)DU^y#L`P0>+?+&+iu3BmiE1nP-6i)0sPmJVlqOdkNW^|sv27cW?{qf!9l{BSwRmJH-MzWA-kd*;AgxIBt(Y{>3X=ue>w^%O6}=3Yfw0}2T<$n6cW)b> z;KF&*^gSuT{Yn!pTVg$=P&UWEt(_Q^WVMPT#U-;F@N85A{ObNFZPh9-!y~SK>M|h% z2RK;`q{28UA@{LI+Uw1w^`+HF)J)<&8%%m1YpmfJ0p7QvQ%>YMD<8_l8olwrwZIHu zEFdeKC{EE5Q4w=fC>yA7FC{!tt7P-JY`u}zj<(dX|4>RPvwJ0wN|ScdaKfrkyIaC> zapS#~14G$gSYF#`MWU~j*xyCAv!494q-YNjz=}|g{!7xt*&|Ju9hN0kM>sj!`-3B} zro;rSYR7&e$mroN+V=>pdJ_v4n5!&rE8NUy;z<)c8vE%)ENM@p(z0Yd5Q>X&-jECrYROK$769!%5(&5ro!HJyRpC9Cmf9 zC>xxm;WL=^yTVD(Vs4>K2Tki|C5fwjlFGQJp3=d&iW)`+=s3Qwg{-=8l_gXzV1pUW zXZ_of%$1f5HjgKZCkyp&N+Q>EMGCmkhpnTQ9PyNe`qxKG;gkr+UQRa}Rm@7T>{vJ3 zQ&LLKWx>4G;qQ-7I+Kfo1rZFRLdztCB_(2Crv z+d#XQ(VD3|6!KR|)pfs7*jngNC-RR{i-j7vG~EPQonmqxMs z6R5EW%|9-s&wU@FAUVi0TdPj$qBOWOHNawZO2Tnl)Ww}hPD{w6n;Fd9v z0=1@S=GP<{?xBnf?P*oBdFRRZ2VHJTXdaMYBTb#Va7t3i>c_b=BXB1%-K3V-1YBFq z1$WNWy5|XIf{`s4mp_J~5EAl*y8Ky4r4U?AQ&oDZm|v>&XIq`c_Wa^vJMt~9&T2uq ztp)Df8X`9c`DqEsjVO?-t*O zh=xR#LY{Cet*&ok!eNH>7Klf8OY2F_#AhW{JP6mQ=4Sd2C7eofot1q=0_h|PBI?124p1g(H`)6yLD#iBEfH$;Jvy#Yt6ei=NBWdlT7A;d{Gs`d!<6i9Z9k3m)4g^ zKyDX`Rcw88sea)I9EL-Td!B^jPI+mgNri{U5ltRQME*k(xQSiWBQS8_@f(u()xF{? z^9w5B)AJh`2yEFQ6x~C8LOik=ldydW1coMGm#n&?H-X-<$pm&n@b)icr%m)8@3C}H3SMSeB zI4=9Z^(uXX1mLKB-E5m_ilH$D6p?*|hsshr?B*X9o3TY4moGMnRg9QC9X;hJ<7C{aesr;5~{|%O!5hjYBAG{m}!=^ zyrxo9bJ3`j8m}~9dRS|me5&LLwg?ymuK@O33AU4p3U__C4{gMBc^T(tq7y+dc$zLkQ%lpu&r2cJXT7T z>j7V0f|UUb;2Tmwg&;c_yQvck%33rIvJ+pz08`JWYxi?Bxo@-Vcw}Ru!?@07hQU&BjrdBvPQ*7*( z$|H{}+pUW$bT7uWQa!kgjcZg))PYsqxT0+M6NNA8Tv`>F2bI8Ks=%Y-=WC!f<>qDv zKz~N@zELX8jKakCT50pL3@t}R-ndN|s&JX^u2@~AJ!@r`+m4OS+Il4VKFRys51@wQ zmi>HvsQXFLIz~_*kyLRPi*BG<%bmy zC6|I67tyIjq6eiaz@>+`Js&NpQl6uuGWFwkN+9L`M(OoZL%;yEYd@9%T>Cc{*PEx8 zRu?08O9pfE2R+@T(!CO!?0<&RqNR!Vwj9diS4!CQ))A__MH6?-l(h&-l6(q)MoZU{HqXZ>~3mr03Ui2)7X^eEw);|6U~bJhzd&=@>N znvqcJkA+XJO0@-D;BH3(u%`P%BQzh?WR1^~G!j4EixtjFDvtn$H7eRw$9aR3O6fBs zrG4mzMn6+RQ>N&G7j8^UJgk)|D$FXn7B{Og^^20RG|TRXDtn(TSwQRS7}{ae4TA`@ zYILKj-rjq%l*qo#!Pey|yEVRXX}xt$gRE-?j%;46wH7wp8`yx!VS1fg z+g$A!PL2ih1{25!xYnz@xpKPIuAHI2ZahIU;c6dW@60cppI$n9ZVo#t?V0)Z`FTkQ zCh0`#mvG8_1)`l+OF|!1=qhG0?WN8om}cTxEQf46f&HV%FI}ygMC(BLUiyq>-WdMF z@$aifz#M`(e=ouIv$lzP4r5!Kg|GdF1l-3!dg>9^FVtiII|QzFax(UZp>Q*?KMsLw zK;IvQ!p+3KJ_3jLD4V&NV(d3Z;vB*`zcmu)63+eXNE}Wc%oM%PNw@>-XL?|=N&kx# zA0-up0MaQwIwaC9J|-m6D?V02s)EC9FCG&pH-1~n&=Jm%dN>kWRVq`Dlhh7CJH^{2 zv@&86hw~?k2z;o0N-{!~UIy0kr;4AJaH?_@>9l|C&e)%Xf;oRG!BnbRn-lwsa5(3C z;c)Kv!{NLigu})EG8``PLkZXCJ@=cTVBVjFg2n$l6fE(7L&1{Y3I$7jI}|Maolvmx z?@F+4IYAI;x$zkZr;0nhxra9=iYH?K5(YR`%*OsP9B?A`PvL;M*guB@=3_q!2Q0+? zH5_m<_HPpKAh$I9tRVZxiQOzU9DPuD$ca5PBy_@w-53&@b7D7zgyx;t!$w1$W@D;2 z>o}2+&=Zam4GEodoLeNQU+j>64(b1wL_k0Ag!7+afaLvu4+orZ{$nK2WgFd}8krde zo^T%&1_&G7{|=M%RB^)n@kpS@#nan9GHC#jwD;g}zzJ_lIAG4(8V;EEwv7bFIWzIy zVSva?{IYPsiTI9iz+8N1IAA`$Ya}qiH7v0w9PmV9Z#dvwV&6z$lKq%G90mwKCijN} zP9zV61Ll$k!vXWjL*amhh1)COVPpELaKMT5)gyu9T+GIA2m?gYp-_yS3J0y7EXE!m4%&d$Cx(PV>k~#p z9c8QYq;OE!>O46d6t+5dg@i(DQ-Z45F5PJt!wtxAz?Y9C#7?}bAai_RZ}L)MDU?}tM+iq6+0NiHCsqY5>d!8x5 zj}3%J4ogN{excr4nO{G*)^6qaOx48F>U{fBUQb%J$oOnk{GxcyKO@ z7l-qeDY__wUc}75U3+O?Ff3vVD*Y~LH~q4Ucy4O3)qaAOw&D+tT%-p|KpM3P^fXm{ z>E6~;B}VqCy?L&|aHKh^Z<&9&#w|nhDnf4;u>0P^-n%(fYzZ6*3e@4ol~HCacdB^2 z#E+x97)CUKj^5AUwivc+7R!mWQ=3lnwlVjER=8p!<7M0L>c`4~G>{bF5UG zSQ|^L_HciJSd&yA>QjxH-RiU@tj?O&OpGi`&?~fBltuP|9~ENGyjf-+P!g33t@b?# zy=X7D#7~Kw6>cPApS(?KEXQs-w~@ zm72C1$GDMFaBNO3SW0!-Wd@ z3mJZpWzSepz^{N>@`I9Ok9Fv+7(KnVjIJ%RSG(3qY=1W~_L2#1w1CI@frc|P?zQk& z^yB?JL_RI~w#O7E;WN4fS*m+XA)qnkxa5`|QwZNR#axPJrLga$iU`yZy zEp9Hi+8pt>An8A7OlmAGoadVOcnNxhp~VfdqOQi4t;G`(dLN_JSQ$gmQxfj*MHs~y(_svAL7=4(#h9`}AfwO(`dirDxv|O3RgUnc z@z;aUJ@F3==>8nJu(q@~rtS*D4NwvKYxH;U9sTr!sLkj@A5&-!N-kDP#R-L{JCq0F zuU7c=bC;ScOG`~2{xoAsh(hj3s1i(Mppc`4=#iR%LRWNC!pZ6RmD9^DB|)bT21?)r z@oL9OHalZYvJXOw5&xesz2_sr(QioNH*^yuaG&@sV-(~beY9k3yk8b0Q#<9`#$cZ3 z!o0P0nrB97*SAN3lOQYH&A=3GJSb_>b*_@Eu#4`gfC zAPQ6;Xi!lb#9k#Ipx|t-iyokClQX)RroU}qb{;)0C2?zS5~|^D(&M?+nI>)+n8kzA zGjzEQSrDZGKiT;j(BIceJjytZIaoM%9*ZgwMF{?M+ZaxsY;+VYTv2-1if-3sX*0;i zwYaKm;e4}$<`4eu{zcjH0&UCVf?`KeyaY1hXO5mH)_1YcE^-m3E_f{4qH7%tD!wddfg!^nYA{pa9M`P&Rh(Ak->JthV7h3DM z0Pna;GA@~a9cNUbCzsc-D7JdGx&~(}IeLtTQn9lAkRG}ECQf3VSlU=?63E0`k(7`))!f6iyDElZnP}VsZq)Fe0%Yp`F0D7BxtTlbMy|KK3(M7SFDb0a-V;$ zv$nb%QGdQLzZ@;-3U4)w$5gvY_zm6068?4xuPjpb&#$lJvbJSq(Mc%}H!JYM*`+gj zG&$z~ON83VTgK>(?KOX6|V z$ona+VJSVLdYi7Hx0#OHhf&49g}a96q^Q`GTI$_>NfZaVp{F+q{F7t4IF%^=#f`d> zVl|{v8oL>!izCRHR*AZLd2RLV*m40UbLd>#)3tb&RgjiRQI2 zRu{XUtJcaqZhhsduvG(F!Q@Q6X8daFBHF-(_R>0C*a6E2*F@TP80a_E+mzQNL*_vqsG}?dSeaSk?l*-k3btKw0ibq$P5q4XvWhm zZ8U=?yfqcOihWODkc;U-?98TVFD^2DHx!v>i`MXZ|Nj-GI{f z{v?!o0j1ylNhpm6l-{UYNGtnhurkP}ynadqZ3MJ^Rh#GpotcnJD!PTq<@t?4gwxUz zaYJ|WLu2>n(XzTKE+T3z4lDMiI;Da}hSMq(`d7j_venW$BD?H=(nJDcXjdpYfnOJDDBwZ?^y?LtZ@)YYms6#B3xLpB2CBb zF%!j5zp*xljfd#sPNm)IwQz+ny`nmXmjfEPi7_%<(^WCA0n$~S@ z@IU8U>z#Ap4V?q7!@&y)bVn|nwt101Pi&q!(`rZWlahXfPTG)?JJ(t`k3rW7L@RN2 zkUW=TMecL8gU$xs|46N;f4qg9u)^BK$)z)EFbE?9rRa;AM{6i|+aQCa(vZ+vtbql} z7JIZWTijUa%Mu!`_6kCe_;wKPezTH?EQ4s-;_PO-Rp_AX=HQg3NuJgt|AP@V{vZzvb zopzGdu$a|O-wrjsZOIF#8+$xEafIi(#nz#P&6la|^oYUa4*^GP&bn48}ytgLq~ zMc<E7s=o{B;1?@FMZ__4G_hc0EX1%2GAT*K2g`h^W(lkipFcZz{uw~*y1KB1PRNQKFvshJp z{Eg0^wGw@cD4cJpiS1fjxBe%jvW8i2U%TBkfSf~>N^7`YYOX&aYsgKUm~Su9+<2qE zkua@nU(HsPeSLvuqCGX4YJp$I$2Kn-291u3Gl&^#U#fBJscEutwGM}(_UN%Y@#rU| zN!u%Qp8C_K+21NQEIL&8u&$it#}l}ry2#fgaT7@2RP#!^8v zK@0h0K=;yPdbi8up|L+Gyd-5HSYw%`>;ieMw05@8Zm+ewGva8XtFVIcQc063rbZJiT5B(2BEH#b_BBy*z8Tyz z$O!tSzP8z3XhnBRo;epNrh`o2?oVjoH!p^?z^wXO+&sp%K;22mt%+GsmRS0c_U&Ad zrC=kCjP4rS;e$&w z);X(YDfE&ynPDx&1Sgxkc}+?jgZr$zqG&j67gxZ*EVY~gFr4B{PMn9{QvD)w82!h%rtT?T9uxdqz0H{o{ zzcAeD-99p_)7A*$hJf$UZNhh04Q-=cR-V628)MB6gOkfT9T}TkYO9f|68@I1z`0-r zwsOLG@A@OqdzR31(Z?w5R#G{zTw@mGeD2hQ3>;8_RLh_^?*$_l&ezv*&#N94_;{ad zhD=<-@bg>J@bjjC+t_Xwn@nnI(pH&&koz=JTm`xETUSzM|&^HO0jn<=IU;}UXK zMDgpVX@OaV-ufX_)X7ILm)H!p3A3vdzQ$c?aN#fdelS2JSW~)S=h?4hzy#*|Ql|2$ zi*&d#`U)*>t-0N*#kt_nRy`GxVt!!Jd9PIUoy#_9HX<5MPbpSEEG;(gWH^v}%a2Abw32mA_!XCrEM z_pB0e1LdJZR5V+>8oOx9FaP5$W1Z+Tv=N^P8u9RMq$vu4Qi7}9F%hD^RF^AXjVTzG zn(Mh>7;$vSmM9(MrP^bOKD1wypUMcPOXpk%3MYGn2c!y0d!uUMr&jv{!pCxwzVW{H zeQa}qTQrn({#{*mjrMIo)AUxUX-eO3l}dlKjvP~_t!6VdR3j~)3^wtjl8MRtsZbku zRxN+A zj7{`_1zSYtV2EN1-=7DrS4!edl1b&>9?>xsE0UQE*^FztM-?DfK5mOprd}`4&D7 za?6;0?os31gDQlM(nI@;x9)Msh$|@S+b`%cWXW9Fbt8h8d;NHqpsC!D{8|7&ZRdz6{ZTJ*7!%{5a_%;vP&ihAG^pD#)q z0(n29RN%XdfV4!n(NV|iBm8HI1~A)Y>lamQfchT&h%QDq!JYWk{V9stxq}Y8kKr%t z4(Pm}D)o%h|KlWdU->YpudLp$6wIMWwJ1GsAo3z9FO{EEN;*q%DNCN15EU^DrurTY zQDy!;TA3BYP#C3*X9RsOir9g}(H}`u^H+^j-+g;T=|y@7V-h#1M18!8MboRE$puw^ zOj+=vOmAe!Z%Mv*jHp~YmVPsXRQj_&na7`_yQTf*M-NqN_H)2npJNeULt4M48#ybC zSW8kJ9?A<*-{UgRq#kx!&Lzb${&sTP2$+whmga zqWe|OEU(?exnhUva-b-~$WNUQGxl<+p(8GzlM)(J38{Mp)V>ewBssn6XUvF{))c3COa~O~8%&9dzEHRPRsiZXN-K4nO|5!%QI|-o`&36!F7VkBzNm(@ zM8BdFvEb^MAc8EGIt4tTtP0qNCA8*~&?;nxnMC0zuByqSzt|d`)jGZnclUK@QI##~ z8@qZ`|Jdyt>8pRf%IXuZ7Ai)~YN!)Jo9^ zRjQ-+PbgdV6ngzZp)P}bq2mJj2N31fJ?sM59=%txaa>Yw;`e$+ChHe_Rhoc(%i`&v z$^u5!tfrs9kw&*9qjiN+1d~sCQW$ABU66s!pbR%7&uI!BgPog=Nav38b1U9j1#zIcfXXgP5#|5CSw1`pIq`zG|95i;8iR+BxY$}o?iv9;5^iL!rHNsR)1QcP!} z7RsnMd5jbdq5EP+>bp$_j$~gWjbzpOQtyS9gG`IwuE$Z<0$QmjhbV8#WPZr5UymQT z>~~eXR;yP9)j%uyKFP}CAyYAq9G1wFq^vx$Cy~Ido&9;ygLZnxnpyzMCw;*|gRk}M zBT4I<(IIbEG@aTMQHu0QPCX&RmaDnWs86HsZ5j`B!%65*8+3$XsS{n4Qmgm4AzW%I zX*;l{o7j2DRpzLdO0$kQjn&1lweGpPB3rdicicP(q}dE^o4k9owYtDDntF%uoNhm? z9YWoH)Yr~*=pZ(R9O~>RU9Lw~M)yf=)$KYHwCrxeE4V(W!JS_w#W9*`M(zwY>yPWv ztS=tCUy4m2^+HhbV|x@+PS4UilIpNtm_g-Jv=fg8_1+lJ%cp01Os3D#KiAS$f>${#)YGKKKx;E50V5a9~m>aiMb7~^>0`r4Y z!<^n9mD4l3Fh#+NlhH#5PPTh`m8T`6ORl*iVJc{ou1$Er((!9j-wfj=+6~qK-blJl zZ?NR6B*`Z#rYY0r@K^T=zz!sWoT49)lDw@i zNu1g3^N^b6@~J$0ir%2LSSu9$xesd5epUk%zOQj$?)4CnTxbswcj|82@|hkgD=9SA zIm}0K;j+G~;`P#@rQXCYE_M2)-X%#Ty57PfPVWIHY*e4cGg|r-{g~Eb@z>Kc4A7!` z2CZaK&;P9Ysplj_7_!>4WKI8qEA{&<)0x+CP1BXi@um)LqE%dT&t>!jx=vb&>B*)} zjDC~$0fu;34RWG4NG)l)OCoYa3!Ifr|N1rcH?=QfDxro%KQGm5b=R4C8Gy!)fhCsD zO1^z~k0qTJR?X4<44gLJvAMDyy-M=hBYM=RYhn9HF#`#GWo&d-Dlfg}4A7$sj8U^q z%9Ywn?|ml$V?ous9SJd#PyxX?#P{M{t`gfOIbMZ5Tp-8!lf)nE!Kt;NrEcK7fHR;? zDp{;L5NT(QHCX!`w=N-qK;4c>e;N>KNB^uM?Dptcsuf}9_O}HWvu*W~3U*j{f`+>g zmX_&cHAk%xsnId5%bJ%a1zl8DY2A`?I6&VwrHOmO)@Mz3ZSx+X8%k?-8@JWbR6!nwPDr-_u;lGnvx0@EoygJGtdDR=~EICli$~wvnHJb zN(Jli=bm=%KBmpG=AkJ&cLS!Qw!-IYh1S$`fN}jZR9lw`QMM+e4+|KlqUKRv+kMm0 zmxZOSxS@9PxVNwh(+{-29jL>v?$7lmRJe)-I?N<`A4E~j%~tIVYnl4yKn_TQnzhpj z2D`hl(9WvRi}ycyQ{uv>{!TqMwj6vZOzI{ct&iV8v)A>(AdMJDqNLRj z5{*N1tH+=WEraw`9H zfmnA(YF;WS%lFd^V<<9 zachvP5nlsM4B@ZAibV_mUUK4d`>K-qi=I!Y7F=%FdfK!hlYHta17V0(t9!N7>b_)f zHaTT&Wte7BG2Lw#sOuS6Hj6+md#3<&$OnYexGyWD{t-{F4~Q#iU`}s~?ED z#yP!>(@)acs5EB!P&jJ`wpV_E8EN&PM5qJozdVyBirlhV^|5aNy(v}54-QJEzu4ce zws#-_gVK1wS$Tsrd-2rJ%2e6Dch>qUZTAJV=BV4cz=P)Kr?gh9 z(m(2fXjK~~(T_@|-Z99%n!;kwwO*z?DvJ6%qDy7;u~P3`{GX?x5{%v~b*~|kpc_s? z~J?r}_{$A>(h7G)Re?Kryza1Ks zoF6*aS6r#a`pr!=uPw65_=|_QV31d1r#UQ%#p?ycO!4L0mZxwfy}0^hw#u;< zP3bEtdC7rqv|pruRPN}z{i5$aZ_|hmy=*jUcC0LiJ=WS~W>c`DA7+y}`gy4s+}e{P zl{={HxhGxaRW0=2D1|xLMG;EOGZ(!Yc1mX4GN3ddd1X3CW5ZNk`9&luHu- z1Fv+dJlv;80G5Mq9WHHJJSsQQmr6>4n?6)92E<#Lk&b1=qvc8wcnH;Yd2~W|X_nR* zS!=gr^W&P#nOh;gD*9TfPDh6&L$MqF#&}xtUvO+q{!<|v#{a#=)ok_appNh8;lC9b z5*%9(*UBmQ;U@IVIjprKC_g#i>LtC{Go)qWu0UN+94K$JGpOF9Ew1wV;gI$yi>GL6 zExc>DcpFErqA5aD0AK5K+gN9%%~uIGb9g&-0?!N3VlA!>qWhx!n3V76Jv-};t&iQW zY^^W+|0P3T(ivJo*NoYD_a_=`S;$X%E0z98g+Vn9pVKNVpL~3f3e!ocE0$GPske63 z3ljPY=bjxweS>Ear=t4FukdTC^UHeUW>7sEIVtWoeEx9HzckXyQLMKbDaO&-GMD*z zT!y_$Ug>SP&0QImreI`-Dux^Uo4Vb4kZYo^(<>;Jz6bsI)-mU4ZpO>RGl@(xlggws z;~6KGah#0fW*jf$#4}DJ<0LaqD&wRx&UnU+Wn3rYx*6BYxbcje$hgUjo65N9j60t3 zVj0iLcu?tOym-b-WV~d?OJ%%t#v9MXW0|;% z*E{gN1Lr&Nz619=@V^5B95CR30tXy8Ai)6(4rp+|g99QQFyVj-2V6KH!vPx(=y1S? z3qD-%;ernre7NAl1s^W>aKVQQK3wqOf)5wv*aaUh_;A683qD-%;ernre7IDesX%jy z29C-!6>2KgRII67Q^5uwF8FZ4hYLPj@Zo|F7ks$j!v!BM_;A683qD-%;ernre7NAl z1s^W>aKVQQK3wqOf)5vbxZuMDA1?TC!G{YzT=3z74;Os6;KKzUF8FZ4hYLPj@Zo|F z7ks$j!v!BM_;A683qD-%;ernre7NAl1s^W>aKVQQK3wqOf)5vbxZuMDA1?TC!G{Yz zT=3z74;Os6;KKzUF8FZ4hYLPj@Zo|F7kqf&!vh~4`0&7o2R=OT;eihie0bo)10Npv z@W6)$K0NT@fe#OSc;LeWA0GJdz=sDuJn-S6et6)+10Npv@W6)$K0NT@QAI}d~9DKyVM;v^_!ABf?#KA`#e8j;=9DKyVM;v^_!ABf? z#KA`#e8j;=9DKyVM;v^_!ABf?#KA`#e8j;=9DKyVM;v^_!ABf?#KA`#e8j;=9DKyV zM;v^_!ABf?#KA`#e8j;=9DKyVM;v^_!ABf?#KA`#e8j;=9DKyVM*@5#z()dnB)~@k zd?dg}0(>OEM*@5#z()dnB)~@kd?dg}0(>OEM*@5#z()dnB)~@kd?dg}0(>OEM*@5# zz()dnB)~@kd?dg}0(>OEM*@5#z()dnB)~@kd?dg}0(>OEM*@5#z()dnB)~@k^&lHel=K9b-g2|kkGBMCl| z;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek>lHel=K9b-g z2|kkGBMCl|;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek> zlHel=K9b-g2|kkGBMCl|;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek>lHel=K9b-g2|kkG zBMCl|;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek>lHel=K9b-g2|kkGBMCl|;3Ek>lHel= zK9b-g2|kkGBMCl|;3Ek>lHel=K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE z;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ# z1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY- zQs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;X zBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6 zK2qQ#1wK;XBLzOv;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;% z;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL z4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_ z(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~ zBMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>Tv zKE}bvIQSR`ALHO-9DIy}kMaN4+m**zR+QIn#RZqRM!^W87&OL#shSyPE{njh2_l<- zEDg<@?$-;`8}IdO1QAeBBOy_vQCuQM#VDvjq8Jm5VpJG3g1F!k71S7aToCu1Q}2HD z?!E8cS9hsu{`h{wz;~+N{c1VisSWXn5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm z@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV$Q2=Ryzj|lOI z5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV$Q z2=Ryzj|lOI5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA) zh!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV$Q2=Ryzj|lOI5RVA)h!Bqm@rV!) zAWAUwK%8Lcfk?s71F?dk2cm_{lpcr|3_TDr746x+&;wC~p$Fm!Lk~m}h8~C|a%6fSnlSW0JYnd8h{DhVF@>QA zqKb@~9*8RpJrG$KdLXti^gwiB=z;hm|E32b3_}mZ7=|8*G7LQsXBc`Q(#Y27fmp-P z1JQ<|2jUGw4@4Y>9*jBSNCOXiZ5nvso6x`mHK&0G@M-A5nByNBdNAfaNq{l$i2{sy zPZnUzjWA%80V533yff36aym}7|p6a^zG7)`;53Px2hvVzeS zjIdyo1tTpOZNZ2OMqM!Sg3%X@z+e;xBQY3_!H5h-WiT=Wbq0h35v0-pg9uV3_aM-sX@Td zgZ-Q`1PndcSf(1ZP)Vgw95*w3j)pb61~{hX2n3_aM-sY<}mgZ-Ss1Pndcto z(1ZP)@&pV$*w3j@z|e#JoFWAbJ=o8wQ^3%J{hU$-3_aM-saBvR(}Vq-f&~mc*w3k1 zz|e#JoU#QBJ=o8wT)@zS{hZ4gE6Pn0YeYQd<|nxxdVnCj5!q#7>hQQE+F{d5^Ll4HBk_Zev z7;~y3F!W%|DU86-gE6Nzf`N-3j5*~I7>#lX;mF{c^> zLl4HBf(#5j7;|benAG4wRR#tg)Ma4cL1hL89?)jaq1|vH3|$y>3N$cuVbH13z|e(3 zr%VHbLMYT=zN80(POS!p9t=9=8W?&o=u~WA=)s^1%&98D(1S6jumnR7#+=#`3_PeV!N7z15)3@3Fu}ls8WRjWs4~IOgE6Pj z1VazToLUnMJs5M!O)&Ie%&9oR(1S6j=mbL##+3oT^kB@XKEcp~F{c0p zLl4HB8WapY7<0-{F!W%|sYJohgE6NV1w#+UoO%=tJs5LJQZV#j%&AJj(1S6jFa@4X z55}C@6bwBWbIMaN^kB@XP{GiHF{elcLl4HBIu#5(7;{QhF!W%|saC55}C@77RTYbIMytQRu;#Q{jT4 z2V+i=3x*zyIdv`=dNAgcx?t$Rm{aY7p$B75!3%~Sj5#$g7R&MQV9Y6j!O(*-hYEJiIo#?Y+dZ)J!~An8{^BY4m(wN=7;BGBwzrN= z;Z?ZK@?v*v+hT|3u_y2VEdIm%;#g-phTw5ny|Ah?xf$(k;?rvvd-bo`62ZC-hdlp#osFM<8I$S5?pSS>t7#a-3{W;qWKx&4Xv*;PsOL zf4a}w&tm(i)P47W;CeTJpY65g3(M#8C5&ZmT;iwaQ-48A&`&@KXZidMo$hAS-4Fx* z0^Xky5MMtY_+ADA8AGtSZ)$d$RexMCX#H3~pXB4K^HI1}Q#c&6@5F`bF(FX(qk%f+ zqptDTyNcHhb!EUswShl!T(trQ$8j0Z@f|cL44;4s8&5}$ZCXQ|`dsQvvwqle>Jd(H z`|9(W){c|Z@+LMTjXm5x@f7wGj~vsqev_NJm_<=L+=J#1P2mnc4^4%qgX7p@^SW0+ zg&RLdj&J()QWLsOhK1fXZ{jTm~<97*E|)VjzQLfmLs-iX4r(6&NuI1 zx8a4mAq!A@qkto;eHP)~=IfeI(d7r`TQOdc6kkBuzgnHby z*#XN+a~#2C2vDoP z@C2lv3814I)u@+KqfXE82Br6D3}s%2=a>3(Z&3Q_fO1UrpLakxOXl=@2QENA z4F!0WgcAHsJvAV><_))wxxd=Cx4NWy3W%&@I?K*tORY|8a&~%t46hk1jJMlk-FX}o zOiyQf0`}nHJu8Nl<}kmsWqex)!*{zwzNYqQilCnigs4&-WRhX|f7ZlXKMCG1C{?y) z@kx?4u{bw5HQQ;AZ%tD*wR;#`y&G_!U#-5R2TMy6*jzBaeHIx(n$V~x`bN}G0OG!- z>S*Lnj(@yNq?(I1^K`2bRD0Cd9ewvbz+99}9@vR>;S zQ>_E$sU_=~9nIN|Tb=p!<8w7`MoBoamgu_+`0^3XU*KALZ;rgIZ$m(DqpW)+MPj#^EZS{uq*M3e&bj61c z%GSLcEn||zVVlkQ5OBRRi#WykWnK#W9H5q&3yM+W6xd{jphpLL2Gj=u&@t9JvP0Hz zVs3F_^Qu;7Vul=!PjY+4)CT~w%&JZCm+bE7j@h-?$Sa)Q;04ZnMSj5bUg7lqjo}#M z-c*X(t@8?}*8;B07LDS_n%Y6rAMY-AwoELK@)B6CeVw~-|f?hj5*~R)ox_*D|8&N+U zh(`~nZ`tqHokXA~c1$lIQ%m+XwYNVk{WM@XCg*Iu7}xpk5{@ZM;VePAYEShFr}qM! zf2~a&8j_DHKJeq{DmDkse%tx>{CsO+dTgfMS{m16w;O$;DZU-#=qiPEvwJqVm(zru z^*h2hqB;_Y8;5t5Y#l`s6=@LjoIc76j5-=Hj;YPoCP}wNW9hc%m+^8MKh<-+L8)T^ z06N%WwuZ3~ zvOX(>MBbqE20&G8A10=q`GNMK*89WK`va>^@;Qs$x|`-&7qrvK=Q^)&dTn*Mlr%$; zETPJ*@d~Fk;A*tAtvD!%Qy(ckL3xAHs{vI}&T@&1>crr@R`DV1vRj>#oI|MmCN83w zwbhe-A*mMt$uU)wP4N<23Qq}vs!j#!b4sQj@%SexyV(1 zWQr+lQJEe%14vc0uP86TFwcDtj5D2<6EB_i1ex! zfNL%Y3(IC(*yII9O#sF*^hl|>o9?IE3+Ky<@T5O1)drSh7)aO4*(#Hln&_#Z@QM#q zZ77-f#Us1f5z2)TJ=4Hh@oms1@x*;1a(YIe=MPJ523E~h4|#OUa_`nCJ?8~R%>(Ap zYVi?;2Rk5^W_XQ~Uhn{-7VCq=Ee16?52Ik1bvi6B&ISb6GXQt6e=}beua?J(0`{f% z_IywKM$}V4babf_b)4fhaH{POOHX>i>YYNL@Q0;00m}=ISi)NI@)XvLCtK! zIFOeC@%-u9)w$U#nUGO&$rB|&h<4o+H`-6 z=^G}k%|Kp1oGrzlQ%F*un#|SrReY6qzf$G)$@4;WAGHV{$9tZ zG1JR>i5kMXy*Y;30Srec&(^~xiWk)PReX28V!8H)gA42Xsu#hxRr0%+lk8;hOWYK! zFItIG)QeHdwAbI#p93-rs(KM~m!nT*=hn{Rwz>9>qEj|{0f>$Z#j=R0MYqA@_G;cc zq@Dw0MfPV_G&XeczES2}(Pn>G`aEE*8y@@2uo3T3QL}YD^$a{KvOa!`y!EhYZ%}#) zP&Fcydvj*nAC{g3Rz)`2U7T9pvd|uz--MR~*QW2}P!oRf^d{g{Tq8F7DPy+0zPtb0 zG?Q<62Gr*Q&`Wl%mO@iKbv{a{v>~TFnUurXx)Z(()kPT-!^aiN2g=Ql=`&8R}k29J4#mrOo zVt2KzA%NZrfNB|3ET^e0bv^YmJgaH;iB)jbZQ`vv@OEtH&c=S=RExc+C2?<#IzJGw zUIMUJ%|Trpa3)Zf0DN+Ila?{8yfk^1*EwDqx&(C@ zN~pA>sCe?vkWF6lr7sT(uU-cDDX(oRosK15>UsH!6{TK*qAInk@-e}!2@K0$hb}?A z5+zhh$SVDY_~r+F#Y&W-{syJ^9l6r2%)YmDUd3ZvgSnM7!?fn`@?g;F6@Ye-QTJDsS|=5(zYYYfUI}2w=8f_- z7W#8V08sTeK0iTnRrAU~!0PXUkJjo{Rf}*^Sxd>|{WAL1!HZC@K@pyAOiNxztp7d? zu6iwS{jN}_iA5*zSmNtet}OKrD9fSjy#YXuRnVa|vWMYO zsjK{9sW$@a@G1#ROvL(M3ir#QPH*yqquvahCXwr1V}J_1#S@VF$A&)sR0lP5^!V5xjX6V&^@ziU8=XiL?%+8tCB{jm=`}?K{>a{>PaClQs)sI8-dwHX z^6l+!=YY}}Lj5Bk9Gf)DaMa|x@o1NC^)x`Ks{!QL&*7e<&gX3KHeX2UpBnzS-s?lC z(%U@&sdoUV$xLo9079kS=?_a?11!hxuc6VCJA_fKcX@+S|J)D?J+M99HV6CO?F~x3 z2T*=x+w6#8w!X6~T)SdLsq0Wwla^@@4Wruc^@pY22P}_SkvxN<-x^{#RaXPG;#~p7 zf{jcdwmG~lB)a-1px2;TiLU?lrU>dCK&U{oq~q9u`kl@E)iv<1Ky#%0FXkf_hKApOG8}u5ApVt^-7k_F&Vd_crra?}PsV!wF}S_DXv&7pG$&e1Dk1 zOZ`j30aiv9&N0{f!%`mrRudYLNZD@i2BrQLPytsY!J)yx~3`Ky10zhgUJ z-Xs`bIgBahgAD=HhX7C^4x+wUT81I|#>Nop!+@wj%cK@UkWq<$Yl@&g0)z^&kUGS% zKo$PIA%OZ10Mv+u?GvcOO^qScN9#dYdWu^7XRu*MeGJf!OUBENXuaeQ)&01COm#Cb z9oM>)t!Mwv99_K8n@n}1C88DN$bva;VZ)e_RLHt5fW z!Bzha+`9eDoaN4aZ$<(mhhZzS58$&w;nnAY3{dKJz?M~7 zvg35ogSh&R0HEsg0Npga(^w{yjpM4$~}i={Je>7sKMKF9E+Sm(JE-cqwlx8@PKxe>oJgx(mpTow~LK z4XbnZb~XK#K)~v&0Iu6R`IYl-?$cij0II$Y(6Xvl_S@RqBXb}B*8dX>T73i1eiygX zn>rJlDWx zkkuD}e9rI@x?G)$DZ>|o7oom{A{=>bxnCiRRiJ@i_K&IV0;Xg9C|6Gz!TV?HzY+{u zeHGA-S-f1WrDJCfPkk*czWO@w9czWv>YwhP5X1i`bP4JkD8ZpQRs0Q$xLG#7t^J!T zHbJOwp(sZzq-~F7XV6lo+x6X{OHlWq1jm?Zf5SjfayfdsL1FOucJLz9cThxKo;d8@ zGyUB_!0LYi?AR@9zk9arSoW2DAxM8O1giQ!poTeZY_Cj0Gx`2Xl%jrsQXFGX;ddYC zvs5}0mr>{+1_W0>0=R=06xLky?#v6x`p5n;)lYy~=a5TZJK~W5G>C5ooF>$_e9dy{ z^dWJj!QG)tQ1_q&FI*=58|;DkZ->QK-wE@D5-HqwLzkfb7bT4O$T`w6z$CiVnPxBe zUf=@M|Ai@_zXbCAzy+uupa2Jl8K5q?xoSEF$@85*3|@r#5sIiNcIRi@>0crD68tzQ zy!weRc*(2Mw*mar)1;#A1yEh4IPCs5{j)&8>gND<;DSd#^encs?kYZ8%ls@ZecLqG zx*+`=iT+I(T=iSv`aPsyEZ+TY<;qgOZ~DEuOKaDxo?5#$eT}>RLl|83N8mQeE^=Pi z(SO98;Lt|~=H*;TAw8odIQAbR!M*ChLLl4uzMiZ+;dCSp6Kpj>)=OjqSRT{zWio^-DlIM3HK>PF{+1UqEp6 zD}Xy>v~o31z0`Vt2vqfJpgN}J3U%EyH@mQT2Q$RqguzuK5AZ%Es8L`#`bQzbay;qs zfMC$-fq<^Ns83Qglk*^p-X#F2dJsUHOygTOtXtjgrd7=c`^QudX@JQunzwoPq5d(| zuE4C_Ubjwm$6B5F_2b;sp|)>Nf7XWugH{g*blGE$@#2C^!1GI6#QR7n?D{CIWz18@%=K;QXg>=4IsjAct89PbP7DTS zms}!gW4475L#oX^&n3t+ugBPJ6iXy6R=gIvQ z+0|Y3kWk3_!9Wg>KK7Rf)Pq8opm#wDURqB&1x`rQ>Vd(F&<{WnRTr9aTTl8|$U>7E z4U4ZwfFGbG^@Rxa=peI(dJJG4iJ6^@s*aZWu>rx=;{fhR%xulG`x^@1|JIKWfvWx# zsAcJr`O5J{ezIbXG0|M(gk0CWu)<+l>d!Le+uN_5!XH4!|l ztn{U)|Mu<&-8NcjDky$bVDKHW<8NMdktw5YifH%ltZ+0o4FTBx@GS6p={KKGGO!qv!{y$;O|$c~%NefcAIjyh;|xlfc@|JdzwuX^=YkK8$0u@~fje3>ib zwKpZ-rp#d_$LQ8woY>6yab)B4t48;_b+pVS;lm*@7AzX3tVWi;|IMX$-|A-slPRaq zXYai1p2IkTm1*C@tDJrjRA%yuPuGzY4%sO5hu_?9YU>!eYD}o=SOo+g^6~>knj`c9$&rwqrW$Jb(pr~*m9GDy7R5yGECd=Ay65l(()#Tma2@^ zjJCr&Y@gU`A@&ZMB*TX!Gdy(A+BDZj2>W}^W+u8yrxqR5hhBPvq1%-hWsT%qK9Xa2 zDEt|=c@L0cEu`2n$yw-f-=CAl4GXW><28@DZPbfAo29{1UGs<@sOrdW?|j??P7K9_ zgA!IPtkMzJEW;QitP&nO|EVhFJxhkyFyCzNSH8W~XD`}8LtO1^SnbreyHEJn2(g{*X?UU&Xa0?{!obj%NZ z(thcah4V$9w9u!DfQ2g*O6X@r?nFM8w@XO9{q^^mP&@KfY3IGSos0QLb^zduwVb5p zf4=d-@49u=asH%kDW-@o{q86#LXL!|Y!OQ)_hZ%f-msClO~|EOQ)bC!6EI<_T9~R| z_SI(^B8JT!bcJDgjwYA;WrbcR)EgCT{DxuJj?u~D$z0XyZZ?hS(x0_1Ipmtpj;;(t z*FruWT41)imO~e<+^ExjeV)-{9eXwlfrng*sATaW4Dr`O{2dgguug|JJZk2i1rpV?m49tzHp! ztA*YAB_!#^pTw@hkpn+?UHiD50m-x;2}7o}Pcm)!uj9QjndEw@OJdT>A2kxIwaN$c zO(;L=E%$uQFyFw8UHhnag0bs{j9m+3cSxZXBh}ATmS%RCWx8v2dF`Vih5BadT9~>+ zr?mCYj!$t{&e^xGZaMDaP)UH6B%p4B!C|#`?snjuu)5)6W2WA96O7@9t<>auE^P$Q zs&l~%GQ5yVMKUw=7LH|PW@$&x>g3MC4+2`?PX!d7cZwtQg>!8 zZ-4r0Z@?PT^zb1rjq1!)E$6XKY*YM0l`xAaJyZ-sw@LtT0BF8kdvdYfy8 ztoVy$Y?iH~Bj=uU7&lN?>T}LGNh!1aTcp*GfhrY^Bq~B)WAq3sd!p zsdakIx^zl+%3C&Hzvu1FePKhtNpS|P17*-UPzJ37XV7*<)WJXP=Ptu#S`(Ycp$2T3 zSRQXLOtPVGy7JR49<3>xrZ(zW6Wcq4$hR#k;`ZhS~Lhx z`Mlll>(CUlbse@rN~(CwZ~~r%6p3K)0cE>(?UZVmiu-A1GeSZ}x6`v@A8`5y#U;s%fo>Pyi(xlbI%fM^xct0*ywzdu zu0>(kFub8y z>yN+wzFS=9n{8aOBe&hpHE?KBl32&wT8KPEHqj!R_`T^+edMYcPil-7HO9B3p+(ZD z`_uVZb51eJ`m`g}ve7Eh%#!zF^ip>nGIh6ymqMnbb{W=JvZy^Ii+W{}MZF@)qLyT_ zD(N4-4xEskXAV5}1HU_Br{CQXlQ`sKPNQ;6J?6e$c+jUt_LG=JZ1z(lqwBWk&HL-9 z%tK$cr#VVj^>gM5H8OK1awt2qJB~G(0iy&NpP1V+*&a(hOk?kKshIiLdek@wl-l40{cd&bF6 zHfDF`?q4lulCvMOZ_&}3?1Y>R*L-_^zO^ttHq&k`jcYEz3L$Iq`($7N+~ObaF$}z2 z^7oY+0MhE-pcGs;1J#m&HsSb*1Vl^D;3EO?0@jm`G2%rY{ul^;N2bFG1;`GM!tGcmq%a91~EIFa4s#r zyU6Z@uKPvuvl6>&wr&LZq4RFbQCEC$u}P+v+z~+_2t%_qqS9Vq!T-CFjcOj`0<9o?MkYfhO z_N2JJiE|K~oFDtWhkW8Ocic8wHF?d=deWZ+V|nkHQ_G{P<^s8e*zeL$t#s(rN=s_h zC@0dA6FItUwr%8}m6Gp}N?Gi!J{9weAt{SJ$5#ikVEd6A4fL8|*i(@n6AUd0hJ(Cj zI~%`e&NDVj?%JzI&h4QhZ{*x^702((oke6Rs87!Iijs3HicNS;1#&x<9m5=>ZtjN? zM4`%7T(5c0H9q*#OowylcW16MB%m%)DWaNMsAd38sKatXyJ^s|UEW42ukYHIomQ`2 zo!;7a@;x7H^u>#)p%!Xbb`>>SZBbta?tZsvL(R>e3DT*pE zl1@A82P2(!_mN}x8)%g6g?6{qO_NT&5~S09ld5EEDCta*EjuSTlG_13H?)XYdtzb~ zUn%Y&3-LFXNycm{;oNYN6QAMIh+!Xwx=KIwp*MWOf3&H z=ly0S_x4tVD{agr+Wnr6ZTNaM@6m+1{s~ zywCN9e>he=3JV#!oO0F7%Zxk~ggR-VPTm=gWvgLkbGvnpV{$B3Raz4&y-9C!Rp!PZ z#~7ELS@Kk*tO(=Cj@^*`rx5IQ{}t!h!D<%o6o1m5-7CI^o#GXX$ls7Ioi;U%+wmmK zG;ZM?+EF|jNEI`0wc2^KOp7RPZ@JohJ$|8uU)0!cU{8IbNBw5}iDsif4H$b(4q$|- zRJd_KKDDqNyYrzo+p$~hy|JCT_w^h8l=Bdn682O^i!E+P87V(+g!IIv?EZ7dxRsqu zhjA&p!ND={=V9h>DJ@)T(yI=YJ!0H@eM!mdOO8y;5`ZLW5yft@-CCZZ{4bYFIY!qs zm~%Hx^2C}Y6T6%C!3Mh}kg&@INNN`x!%ikElNH4i*y@s>~B zO>LQ*GjCroyHcCp`zyXP`r8CSv1?Agpt-v}6#DT)Nz^Nf$G?gR)Gl z9hpS$pi?4E(UPV(*3+`=Veq8KJGcDMeDQsU2Q~)k4VVz2w(s%&^GMko-DKbk77+O4 zc3Gg`cgnTfc-2hRmYj>8X~~j$IAoe~HJ9&RTg}N#*rD$E=lw zi<6XM&Tr2XmZi0(b;lEo2+W3_ozE5^mwJ{(i|d>J4J}7&PLl0Oc}F;;SEe4{liKx3 zvel)VklF-E_JWrn$y!KqLw0LvY1!?0+4fiN%AI|G{34@&I|l9C;N;vs!DUbLl)BlR z^VGRVJRHZQJ<~|LfzvTZ+d5~zjOg9DyMILSb_~;n;I`ZISW=cs+MOAWvBaV$yL`^) z=0>RWWzddq;=s$SHu6Xh^KW_j#|yzLNP;yrj6GQrPuc>v+XI~YW=BMi=^@_2QH zJq`k5SA1_e^;pBv9Ro@BCl>9eN&ieOWV>QB&PSKw#u8%tLSog*mm;fL$Z8pxHqoT= zl|rEih6Hvemd(r)Z|HS2g5eZMXk^8+Q_0PRIrs30(Cc7Bd2<%Ysmf>*vLm7<+`2TJ zeHz-)*|W7vO?m?-IbrkNwdYhvR+#9@#y}}f6>YQ(BHRImVehyc|kwHwim>R~Bw4 zhqXIP0&-aUT7+Yu$yVHML0zNg({$cms2z?K>yelhJ1z#wR@#2;g10&)O==Hc2(S}y zc09_@71LxJBUI+zl<9z_CC6%?)ZT8u@mu*qna*CH?je=1bq`Md?NI0#WYP^Pvyrb) z{=Ho2){}~mNyxq*$2?%`mhDWbODpZo`kiI7=ZUGS+%*_1iLfsNHPQO>7T@GWBmW76 zmIT5<8wwS=Xd&Rz^UnJ>NP6lF0o{)SmGfsNAme+Si z&ffcRe0|4v9$~j_UH*I{_+j*q2hKy{58)2C>ShFy2F5w8RuK|-F-}b3s z$M)=GYe^&-@{WaEXYCm82IlnKog$JA=IOs>B3az`;;ZyIfZnk1ialQQ80V8@$={vR zOU!az@q1^@cdHL9z1Gf6wB#mU7ULvFJ0Q0rwbu*CfQ+R2-g`fO@70wLh2)bvDMVxe zdHcdKB~_kGg_?Rwf9#D86_YeF=;Egf?FDGwk_mfDvtOofv&o7-zq7b)uDv7PW;(TY zZIs?mf9=uxnER?%B!95va)l_ky~*0a04#M$j!V)_gnil#Fm>d70gIItjFhtd#WA+q zs#WcN_G&&yw=OK8V4IhHJF_Wnc7;wDtlyR>AHHZr^?N;xU1}T4TM+ZkaP>&caKo`k zEiAGOMHs3^$7D|n*(68lN-lKX_@MV{E`Xt-9HW>Dh-%s>)`$ zOfQ`d3~W%T+E_}IAt{Hv;o=z7Y7DWeBSdNm#YK^5c)N+J(Z9bQ7od!qH9p z)S5$17-%E8I}l`eAH1W^F+EkDPKC`jQOmR29PQmF6*=8-N^6O7MdD4=`C*TTSFGi5 z=4mfSo(iZX_s^6o$#NzG7B?`|I(n()Uga8l`mBe&$HWolbRqGeC}KlGvrzY(b@lOg zUGv$|CU^-c#lFJnI5=(V7k5c}3g>O#J@6%uLw&}*Myz3H4jE4mw%;-E0P)5$;;W9G&s-|Q2pQ8)pop*tTC3laO zq4LACvE&n}SfJ>b-RYmW_@~p~c+hR56{Xp@jV7-6w(Gm1cCH&vDPkrfQ>I+e_McO4 z{K|D7zHPLcx7^Go_fA*Xk0ll8tA=tdP6fq6Kt#t>r+j>ObH8Pos3jDg;fo120ke(T zv4&o5yy**SopCdFZ~~Gi!5#UCqfN)FR+uZ&4?sJJP&RRN^0kw{v$s*$eI|}}o0WsJ zW-Ci>l5^HVUcd1&0rf-1Bi9@yuG!_akH(SfighKi9DEzjuGcuSl)PV_m)zQCr2Vq8 z^gJo@m}sdhlk!@nWhGKx+wC3Q$I@m;@3izqHcFJur^<~h3HBwICWXw^?afS%AC3>G`qc zc4uL{-5%@Cx8~;3Wr#%7Tzj!!yKJ(b9k`0r5G`s*rM@yej6;)%07{5GMO60VIOaSu zQlo@eU`HdVI-bugFE91(%H^nj$F2{gn&GH?xiToam^2B%B4_xLakO6@8wm zSaep#v6nssm2oU(bZjHeHj3i2XEraik4H6KAiB)7R?OoQgOQ~fl z>{N7wdDu%X)SZ{zW9|tn)6$23k9?w4O;3~CQ5&go_U7v*YMi~Kx`7&}MU4w4m+6vn zSsrs6^3c5;Msy^FS=6HUU6n|)jtn_DA{Q(s^%j7PsHaCRfBo^--*<~^$tGJ%XHFxc zUPVnSUw^Z&{WaiN(3eso73@e5+390CJf~#rRNlN t%~?J*Lc0NG1vEXoKhiNc%BY&UEF-4@i|(aE>t10bDZMh1l)V}0{{ew&vPb{` diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index cd6a070f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,68 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" -"SimDebug_RX600" -[CURRENT_CONFIGURATION] -"Debug" -[CURRENT_SESSION] -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Blinky] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug_RX600_E1_E20_SYSTEM] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_with_optimisation] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_SimDebug_RX600] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_SESSION_SimSessionRX600] -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c deleted file mode 100644 index 156f0b8f3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c +++ /dev/null @@ -1,66 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :dbsct.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of B,R Section */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - -/********************************************************************* -* -* Device : RX -* -* File Name : dbsct.c -* -* Abstract : Setting of B,R Section. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "typedefine.h" - -#pragma unpack - -#pragma section C C$DSEC -extern const struct { - _UBYTE *rom_s; /* Start address of the initialized data section in ROM */ - _UBYTE *rom_e; /* End address of the initialized data section in ROM */ - _UBYTE *ram_s; /* Start address of the initialized data section in RAM */ -} _DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") }, - { __sectop("D_2"), __secend("D_2"), __sectop("R_2") }, - { __sectop("D_1"), __secend("D_1"), __sectop("R_1") } -}; -#pragma section C C$BSEC -extern const struct { - _UBYTE *b_s; /* Start address of non-initialized data section */ - _UBYTE *b_e; /* End address of non-initialized data section */ -} _BTBL[] = { - { __sectop("B"), __secend("B") }, - { __sectop("B_2"), __secend("B_2") }, - { __sectop("B_1"), __secend("B_1") } -}; - -#pragma section - -/* -** CTBL prevents excessive output of L1100 messages when linking. -** Even if CTBL is deleted, the operation of the program does not change. -*/ -_UBYTE * const _CTBL[] = { - __sectop("C_1"), __sectop("C_2"), __sectop("C"), - __sectop("W_1"), __sectop("W_2"), __sectop("W") -}; - -#pragma packoption diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c deleted file mode 100644 index d8085c12a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "iodefine.h" -#include "yrdkrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - uint32_t sckcr = 0; - - /* Configure system clocks based on header */ - sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24); - sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16); - sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8); - SYSTEM.SCKCR.LONG = sckcr; - - /* Module standby clear - EtherC, EDMAC */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - - PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi) - PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later) - PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals - PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35) - PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47) - PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51) - - PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start - PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7) - - PORTB.DR.BYTE = 0x00 ; - PORTB.DDR.BYTE = 0x70 ; // Port B: Ether - - PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY) - PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3) - - // Ethernet settings - IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA - PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA - PORTA.ICR.BIT.B3 = 1; // ET_MDIO - PORTB.ICR.BIT.B0 = 1; // RMII_RXD1 - PORTB.ICR.BIT.B1 = 1; // RMII_RXD0 - PORTB.ICR.BIT.B2 = 1; // REF50CLK - PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER - PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV - - - /* Configure LEDs */ - LED4 = LED_OFF; - LED5 = LED_OFF; - LED6 = LED_OFF; - LED7 = LED_OFF; - LED8 = LED_OFF; - LED9 = LED_OFF; - LED10 = LED_OFF; - LED11 = LED_OFF; - LED12 = LED_OFF; - LED13 = LED_OFF; - LED14 = LED_OFF; - LED15 = LED_OFF; - - LED4_DDR = 1; - LED5_DDR = 1; - LED6_DDR = 1; - LED7_DDR = 1; - LED8_DDR = 1; - LED9_DDR = 1; - LED10_DDR = 1; - LED11_DDR = 1; - LED12_DDR = 1; - LED13_DDR = 1; - LED14_DDR = 1; - LED15_DDR = 1; - - /* Configure push button switches */ - SW1_DDR = 0; - SW2_DDR = 0; - SW3_DDR = 0; - SW1_ICR = 1; - SW2_ICR = 1; - SW3_ICR = 1; -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c deleted file mode 100644 index b5ef3862f..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c +++ /dev/null @@ -1,53 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :intprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Interrupt Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : intprg.c -* -* Abstract : Interrupt Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include "vect.h" -#pragma section IntPRG - -// Exception(Supervisor Instruction) -void Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void Excep_UndefinedInst(void){/* brk(); */} - -// Exception(Floating Point) -void Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void Excep_BRK(void){ wait(); } - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src deleted file mode 100644 index 70330dadd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src +++ /dev/null @@ -1,120 +0,0 @@ - -; Comment out the orginal code - .IF 0 - -;------------------------------------------------------------------------ -; | -; FILE :lowlvl.src | -; DATE :Wed, Jun 16, 2010 | -; DESCRIPTION :Program of Low level | -; CPU TYPE :Other | -; | -; This file is generated by Renesas Project Generator (Ver.4.50). | -; NOTE:THIS IS A TYPICAL EXAMPLE. | -; | -;------------------------------------------------------------------------ - - - .GLB _charput - .GLB _charget - -SIM_IO .EQU 0h - - .SECTION P,CODE -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - MOV.L #IO_BUF,R2 - MOV.B R1,[R2] - MOV.L #1220000h,R1 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - MOV.L #1210000h,R1 - MOV.L #IO_BUF,R2 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - MOV.L #IO_BUF,R2 - MOVU.B [R2],R1 - RTS - -;----------------------------------------------------------------------- -; I/O Buffer -;----------------------------------------------------------------------- - .SECTION B,DATA,ALIGN=4 -PARM: .BLKL 1 - .SECTION B_1,DATA -IO_BUF: .BLKB 1 -; .END ; Commented out for conditional assembly - -; Code below is for debug console - .ELSE - -;----------------------------------------------------------------------- -; -; FILE :lowlvl.src -; DATE :Wed, Jul 01, 2009 -; DESCRIPTION :Program of Low level -; CPU TYPE :RX -; -;----------------------------------------------------------------------- - .GLB _charput - .GLB _charget - -FC2E0 .EQU 00084080h -FE2C0 .EQU 00084090h -DBGSTAT .EQU 000840C0h -RXFL0EN .EQU 00001000h -TXFL0EN .EQU 00000100h - - .SECTION P,CODE - -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - .STACK _charput = 00000000h -__C2ESTART: MOV.L #TXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__TXLOOP: MOV.L [R4],R5 - AND R3,R5 - BNZ __TXLOOP -__WRITEFC2E0: MOV.L #FC2E0,R2 - MOV.L R1,[R2] -__CHARPUTEXIT: RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - .STACK _charget = 00000000h -__E2CSTART: MOV.L #RXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__RXLOOP: MOV.L [R4],R5 - AND R3,R5 - BZ __RXLOOP -__READFE2C0: MOV.L #FE2C0,R2 - MOV.L [R2],R1 -__CHARGETEXIT: RTS - -;----------------------------------------------------------------------- - -; End of conditional code - .ENDIF - - .END - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c deleted file mode 100644 index 2d02ccad9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c +++ /dev/null @@ -1,329 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.c */ -/* DATE :Wed, Jun 16, 2010 */ -/* DESCRIPTION :Program of I/O Stream */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : lowsrc.c -* -* Abstract : Program of I/O Stream. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include -#include -#include "lowsrc.h" - -/* file number */ -#define STDIN 0 /* Standard input (console) */ -#define STDOUT 1 /* Standard output (console) */ -#define STDERR 2 /* Standard error output (console) */ - -#define FLMIN 0 /* Minimum file number */ -#define _MOPENR 0x1 -#define _MOPENW 0x2 -#define _MOPENA 0x4 -#define _MTRUNC 0x8 -#define _MCREAT 0x10 -#define _MBIN 0x20 -#define _MEXCL 0x40 -#define _MALBUF 0x40 -#define _MALFIL 0x80 -#define _MEOF 0x100 -#define _MERR 0x200 -#define _MLBF 0x400 -#define _MNBF 0x800 -#define _MREAD 0x1000 -#define _MWRITE 0x2000 -#define _MBYTE 0x4000 -#define _MWIDE 0x8000 -/* File Flags */ -#define O_RDONLY 0x0001 /* Read only */ -#define O_WRONLY 0x0002 /* Write only */ -#define O_RDWR 0x0004 /* Both read and Write */ -#define O_CREAT 0x0008 /* A file is created if it is not existed */ -#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */ -#define O_APPEND 0x0020 /* The position is set for next reading/writing */ - /* 0: Top of the file 1: End of file */ - -/* Special character code */ -#define CR 0x0d /* Carriage return */ -#define LF 0x0a /* Line feed */ - -#if defined( __RX ) -const long _nfiles = IOSTREAM; /* The number of files for input/output files */ -#else -const int _nfiles = IOSTREAM; /* The number of files for input/output files */ -#endif -char flmod[IOSTREAM]; /* The location for the mode of opened file. */ - -unsigned char sml_buf[IOSTREAM]; - -#define FPATH_STDIN "C:\\stdin" -#define FPATH_STDOUT "C:\\stdout" -#define FPATH_STDERR "C:\\stderr" - -/* H8 Normal mode ,SH and RX */ -#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -extern char fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* RX */ -#elif defined( __RX ) -/* Output one character to standard output */ -extern void charput(unsigned char); -/* Input one character from standard input */ -extern unsigned char charget(void); - -/* H8 Advanced mode */ -#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* H8300 and H8300L */ -#elif defined( __300__ ) || defined( __300L__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -/* Move the file offset */ -extern char __regparam3 fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); -#endif - -#include -FILE *_Files[IOSTREAM]; // structure for FILE -char *env_list[] = { // Array for environment variables(**environ) - "ENV1=temp01", - "ENV2=temp02", - "ENV9=end", - '\0' // Terminal for environment variables -}; - -char **environ = env_list; - -/****************************************************************************/ -/* _INIT_IOLIB */ -/* Initialize C library Functions, if necessary. */ -/* Define USES_SIMIO on Assembler Option. */ -/****************************************************************************/ -void _INIT_IOLIB( void ) -{ - /* A file for standard input/output is opened or created. Each FILE */ - /* structure members are initialized by the library. Each _Buf member */ - /* in it is re-set the end of buffer pointer. */ - - /* Standard Input File */ - if( freopen( FPATH_STDIN, "r", stdin ) == NULL ) - stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdin->_Mode = _MOPENR; /* Read only attribute */ - stdin->_Mode |= _MNBF; /* Non-buffering for data */ - stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */ - - /* Standard Output File */ - if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) - stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdout->_Mode |= _MNBF; /* Non-buffering for data */ - stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */ - - /* Standard Error File */ - if( freopen( FPATH_STDERR, "w", stderr ) == NULL ) - stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stderr->_Mode |= _MNBF; /* Non-buffering for data */ - stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */ -} - -/****************************************************************************/ -/* _CLOSEALL */ -/****************************************************************************/ -void _CLOSEALL( void ) -{ - long i; - - for( i=0; i < _nfiles; i++ ) - { - /* Checks if the file is opened or not */ - if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) ) - fclose( _Files[i] ); /* Closes the file */ - } -} - -/**************************************************************************/ -/* open:file open */ -/* Return value:File number (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long open(const char *name, /* File name */ - long mode, /* Open mode */ - long flg) /* Open flag */ -#else -int open(char *name, /* File name */ - int mode, /* Open mode */ - int flg) /* Open flag */ -#endif -{ - - - if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */ - { - if( ( mode & O_RDONLY ) == 0 ) return -1; - flmod[STDIN] = mode; - return STDIN; - } - else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDOUT] = mode; - return STDOUT; - } - else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDERR] = mode; - return STDERR; - } - else return -1; /*Others */ -} - -#if defined( __RX ) -long close( long fileno ) -#else -int close( int fileno ) -#endif -{ - return 1; -} - -/**************************************************************************/ -/* write:Data write */ -/* Return value:Number of write characters (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long write(long fileno, /* File number */ - const unsigned char *buf, /* The address of destination buffer */ - long count) /* The number of chacter to write */ -#else -int write(int fileno, /* File number */ - char *buf, /* The address of destination buffer */ - int count) /* The number of chacter to write */ -#endif -{ - long i; /* A variable for counter */ - unsigned char c; /* An output character */ - - /* Checking the mode of file , output each character */ - /* Checking the attribute for Write-Only, Read-Only or Read-Write */ - if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR) - { - if( fileno == STDIN ) return -1; /* Standard Input */ - else if( (fileno == STDOUT) || (fileno == STDERR) ) - /* Standard Error/output */ - { - for( i = count; i > 0; --i ) - { - c = *buf++; - charput(c); - } - return count; /*Return the number of written characters */ - } - else return -1; /* Incorrect file number */ - } - else return -1; /* An error */ -} - -#if defined( __RX ) -long read( long fileno, unsigned char *buf, long count ) -#else -int read( int fileno, char *buf, unsigned int count ) -#endif -{ - long i; - - /* Checking the file mode with the file number, each character is input and stored the buffer */ - - if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){ - for(i = count; i > 0; i--){ - *buf = charget(); - if(*buf==CR){ /* Replace the new line character */ - *buf = LF; - } - buf++; - } - return count; - } - else { - return -1; - } -} - -#if defined( __RX ) -long lseek( long fileno, long offset, long base ) -#else -long lseek( int fileno, long offset, int base ) -#endif -{ - return -1L; -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c deleted file mode 100644 index 0404ac406..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c +++ /dev/null @@ -1,129 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :resetprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Reset Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : resetprg.c -* -* Abstract : Reset Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include <_h_c_lib.h> -//#include // Remove the comment when you use errno -//#include // Remove the comment when you use rand() -#include "typedefine.h" -#include "stacksct.h" - -#pragma inline_asm Change_PSW_PM_to_UserMode -static void Change_PSW_PM_to_UserMode(void); - -#ifdef __cplusplus -extern "C" { -#endif -void PowerON_Reset_PC(void); -void main(void); -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus // Use SIM I/O -extern "C" { -#endif -extern void _INIT_IOLIB(void); -extern void _CLOSEALL(void); -#ifdef __cplusplus -} -#endif - -#define PSW_init 0x00010000 -#define FPSW_init 0x00000100 - -//extern void srand(_UINT); // Remove the comment when you use rand() -//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok() - -//#ifdef __cplusplus // Use Hardware Setup -//extern "C" { -//#endif -//extern void HardwareSetup(void); -//#ifdef __cplusplus -//} -//#endif - -//#ifdef __cplusplus // Remove the comment when you use global class object -//extern "C" { // Sections C$INIT and C$END will be generated -//#endif -//extern void _CALL_INIT(void); -//extern void _CALL_END(void); -//#ifdef __cplusplus -//} -//#endif - -#pragma section ResetPRG - -#pragma entry PowerON_Reset_PC - -void PowerON_Reset_PC(void) -{ - set_intb((unsigned long)__sectop("C$VECT")); - set_fpsw(FPSW_init); - - _INITSCT(); - -// _INIT_IOLIB(); // Remove the comment when you use SIM I/O - -// errno=0; // Remove the comment when you use errno -// srand((_UINT)1); // Remove the comment when you use rand() -// _s1ptr=NULL; // Remove the comment when you use strtok() - -// HardwareSetup(); // Use Hardware Setup - nop(); - -// _CALL_INIT(); // Remove the comment when you use global class object - - set_psw(PSW_init); // Set Ubit & Ibit for PSW -// Change_PSW_PM_to_UserMode(); // DO NOT CHANGE TO USER MODE IF USING FREERTOS! - ( void ) Change_PSW_PM_to_UserMode; // Just to avoid compiler warnings. - - main(); - -// _CLOSEALL(); // Use SIM I/O - -// _CALL_END(); // Remove the comment when you use global class object - - brk(); -} - -static void Change_PSW_PM_to_UserMode(void) -{ - MVFC PSW,R1 - OR #00100000h,R1 - PUSH.L R1 - MVFC PC,R1 - ADD #10,R1 - PUSH.L R1 - RTE - NOP - NOP -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c deleted file mode 100644 index 98e5bcbeb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#define HEAPSIZE 0x400 -signed char *sbrk( size_t size ); -union HEAP_TYPE -{ - signed long dummy; - signed char heap[HEAPSIZE]; -}; -static union HEAP_TYPE heap_area; - -/* End address allocated by sbrk */ -static signed char *brk = ( signed char * ) &heap_area; -signed char *sbrk( size_t size ) -{ - signed char *p; - if( brk + size > heap_area.heap + HEAPSIZE ) - { - p = ( signed char * ) - 1; - } - else - { - p = brk; - brk += size; - } - - return p; -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c deleted file mode 100644 index d2dec0b3b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c +++ /dev/null @@ -1,64 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vecttbl.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Initialize of Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vecttbl.c -* -* Abstract : Initialize of Vector Table. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "vect.h" - -#pragma section C FIXEDVECT - -void* const Fixed_Vectors[] = { -//;0xffffffd0 Exception(Supervisor Instruction) - (void*) Excep_SuperVisorInst, -//;0xffffffd4 Reserved - Dummy, -//;0xffffffd8 Reserved - Dummy, -//;0xffffffdc Exception(Undefined Instruction) - (void*) Excep_UndefinedInst, -//;0xffffffe0 Reserved - Dummy, -//;0xffffffe4 Exception(Floating Point) - (void*) Excep_FloatingPoint, -//;0xffffffe8 Reserved - Dummy, -//;0xffffffec Reserved - Dummy, -//;0xfffffff0 Reserved - Dummy, -//;0xfffffff4 Reserved - Dummy, -//;0xfffffff8 NMI - (void*) NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC -PowerON_Reset_PC -//;<> -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 9933054b7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,466 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "108a|FFFFFFFF|00000000|1054|fff8cd9e|1050|fff8c484|88218|000870B4|000870AE|88204|88208|18b8" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000B58C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000AD9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "000000000000AD9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "000000000000B33C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000B58C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000013104" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF92894" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8B0F0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "000000000000B33C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckAfter" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckBefore" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpAfter" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpBefore" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}T_SESSION_IS_SAVED" "YES" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "228" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "ucBufferInUse, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "usCond2, 2, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "usCond3, 2, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "count, 2, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "*datalen, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "buf->left, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "108" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "84" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 241 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 381 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 132 132 1126 354 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 2 "0.39" 170 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.54" 277 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 241 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "0.87" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STACKTRACE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.50" 277 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 381 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 344 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 3 0 "0.00" 0 914 231 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 0 0 0 "0.00" 0 427 225 0 0 5 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 0 0 0 "0.00" 0 800 233 0 0 5 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -[TARGET_NAME] -"RX600 Segger J-Link" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -"SBK_TAR_EMUE100|PC" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-rdk_renesas\rtosdemo\webserver\emac.c" 413 0 1 "{00000000-0000-0000-C000-000000000046}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index ee7dfebda..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf deleted file mode 100644 index 00cf3324e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf +++ /dev/null @@ -1,72 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -[TARGET_NAME] -"RX600 Simulator" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h deleted file mode 100644 index 7787987ee..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,7181 +0,0 @@ -/********************************************************************************/ -/* */ -/* Device : RX/RX600/RX62N */ -/* File Name : ioedfine.h */ -/* Abstract : Definition of I/O Register. */ -/* History : V2.0 (2010-08-21) [Hardware Manual Revision : 1.00] */ -/* Note : This is a typical example. */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX62N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=114) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX62NIODEFINE_HEADER__ -#define __RX62NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union { - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char :5; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - void *TDLAR; - char wk3[4]; - void *RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - void *RBWAR; - void *RDFAR; - char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk1[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk2[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk3[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk4[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk5[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk6[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk7[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk8[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[255]; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[255]; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - char wk5[112]; - unsigned char DMRSR0; - char wk6[3]; - unsigned char DMRSR1; - char wk7[3]; - unsigned char DMRSR2; - char wk8[3]; - unsigned char DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - char wk10[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char TMR1S:1; - unsigned char TMR0S:1; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk3[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk5[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_mtua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char SPRF:1; - unsigned char :1; - unsigned char SPTEF:1; - unsigned char :1; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk4[15]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - } BIT; - } SCKCR; - char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - } BIT; - } OSTDCR; - char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - } BIT; - } LVDCR; - char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMAC_DMAC0I=198,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=45,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=49,DTCE_RSPI1_SPTI1, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_MTU1_TGIA1=121,DTCE_MTU1_TGIB1, -DTCE_MTU2_TGIA2=125,DTCE_MTU2_TGIB2, -DTCE_MTU3_TGIA3=129,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_MTU4_TGIA4=134,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6, -DTCE_MTU7_TGIA7=149,DTCE_MTU7_TGIB7, -DTCE_MTU8_TGIA8=153,DTCE_MTU8_TGIB8, -DTCE_MTU9_TGIA9=157,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9, -DTCE_MTU10_TGIA10=162,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_TMR0_CMIA0=174,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=177,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=180,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=183,DTCE_TMR3_CMIB3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=215,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=219,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=223,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=227,DTCE_SCI3_TXI3, -DTCE_SCI5_RXI5=235,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=239,DTCE_SCI6_TXI6, -DTCE_RIIC0_ICRXI0=247,DTCE_RIIC0_ICTXI0, -DTCE_RIIC1_ICRXI1=251,DTCE_RIIC1_ICTXI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMAC_DMAC0I=0x70,IPR_DMAC_DMAC1I=0x71,IPR_DMAC_DMAC2I=0x72,IPR_DMAC_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define AD0 (*(volatile struct st_ad __evenaccess *)0x88040) -#define AD1 (*(volatile struct st_ad __evenaccess *)0x88060) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C288) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IOPORT (*(volatile struct st_ioport __evenaccess *)0x8C100) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88880) -#define MTU6 (*(volatile struct st_mtu0 __evenaccess *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 __evenaccess *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 __evenaccess *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 __evenaccess *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 __evenaccess *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 __evenaccess *)0x88C80) -#define MTUA (*(volatile struct st_mtua __evenaccess *)0x8860A) -#define MTUB (*(volatile struct st_mtua __evenaccess *)0x88A0A) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic __evenaccess *)0x88320) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci __evenaccess *)0x88240) -#define SCI1 (*(volatile struct st_sci __evenaccess *)0x88248) -#define SCI2 (*(volatile struct st_sci __evenaccess *)0x88250) -#define SCI3 (*(volatile struct st_sci __evenaccess *)0x88258) -#define SCI5 (*(volatile struct st_sci __evenaccess *)0x88268) -#define SCI6 (*(volatile struct st_sci __evenaccess *)0x88270) -#define SMCI0 (*(volatile struct st_smci __evenaccess *)0x88240) -#define SMCI1 (*(volatile struct st_smci __evenaccess *)0x88248) -#define SMCI2 (*(volatile struct st_smci __evenaccess *)0x88250) -#define SMCI3 (*(volatile struct st_smci __evenaccess *)0x88258) -#define SMCI5 (*(volatile struct st_smci __evenaccess *)0x88268) -#define SMCI6 (*(volatile struct st_smci __evenaccess *)0x88270) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb0 __evenaccess *)0xA0200) -#define WDT (*(volatile union un_wdt __evenaccess *)0x88028) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h deleted file mode 100644 index 4d2aabfc7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Header file of I/O Stream file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -/*Number of I/O Stream*/ -#define IOSTREAM 20 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h deleted file mode 100644 index 1d5db830d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :stacksct.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of Stack area */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -#pragma stacksize su=0x300 -#pragma stacksize si=0x100 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h deleted file mode 100644 index d3ad67fec..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,41 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : typedefine.h -* -* Abstract : Aliases of Integer Type. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h deleted file mode 100644 index a6a48946b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h +++ /dev/null @@ -1,60 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vect.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Definition of Vector */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vect.h -* -* Abstract : Definition of Vector. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -// Exception(Supervisor Instruction) -#pragma interrupt (Excep_SuperVisorInst) -void Excep_SuperVisorInst(void); - -// Exception(Undefined Instruction) -#pragma interrupt (Excep_UndefinedInst) -void Excep_UndefinedInst(void); - -// Exception(Floating Point) -#pragma interrupt (Excep_FloatingPoint) -void Excep_FloatingPoint(void); - -// NMI -#pragma interrupt (NonMaskableInterrupt) -void NonMaskableInterrupt(void); - -// Dummy -#pragma interrupt (Dummy) -void Dummy(void); - -// BRK -#pragma interrupt (Excep_BRK(vect=0)) -void Excep_BRK(void); - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void); -//;<> - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h deleted file mode 100644 index 779da3562..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h +++ /dev/null @@ -1,110 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RDKRX62N_H -#define RDKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#ifdef LED_POSITIVE_LOGIC - #define LED_ON (1) - #define LED_OFF (0) -#else -/* LEDs are using NEGATIVE LOGIC... */ - #define LED_ON (0) - #define LED_OFF (1) -#endif -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT4.PORT.BIT.B0 -#define SW2 PORT4.PORT.BIT.B1 -#define SW3 PORT4.PORT.BIT.B2 -#define SW1_DDR PORT4.DDR.BIT.B0 -#define SW2_DDR PORT4.DDR.BIT.B1 -#define SW3_DDR PORT4.DDR.BIT.B2 -#define SW1_ICR PORT4.ICR.BIT.B0 -#define SW2_ICR PORT4.ICR.BIT.B1 -#define SW3_ICR PORT4.ICR.BIT.B2 - -/* LEDs */ -#define LED4 PORTD.DR.BIT.B5 -#define LED5 PORTE.DR.BIT.B3 -#define LED6 PORTD.DR.BIT.B2 -#define LED7 PORTE.DR.BIT.B0 -#define LED8 PORTD.DR.BIT.B4 -#define LED9 PORTE.DR.BIT.B2 -#define LED10 PORTD.DR.BIT.B1 -#define LED11 PORTD.DR.BIT.B7 -#define LED12 PORTD.DR.BIT.B3 -#define LED13 PORTE.DR.BIT.B1 -#define LED14 PORTD.DR.BIT.B0 -#define LED15 PORTD.DR.BIT.B6 - -#define LED4_DDR PORTD.DDR.BIT.B5 -#define LED5_DDR PORTE.DDR.BIT.B3 -#define LED6_DDR PORTD.DDR.BIT.B2 -#define LED7_DDR PORTE.DDR.BIT.B0 -#define LED8_DDR PORTD.DDR.BIT.B4 -#define LED9_DDR PORTE.DDR.BIT.B2 -#define LED10_DDR PORTD.DDR.BIT.B1 -#define LED11_DDR PORTD.DDR.BIT.B7 -#define LED12_DDR PORTD.DDR.BIT.B3 -#define LED13_DDR PORTE.DDR.BIT.B1 -#define LED14_DDR PORTD.DDR.BIT.B0 -#define LED15_DDR PORTD.DDR.BIT.B6 - - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RDKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c deleted file mode 100644 index 5fa0159c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c deleted file mode 100644 index 1ee679274..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c +++ /dev/null @@ -1,639 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 (marked LED 9 on the silk - * screen!) every 5 seconds - the toggle rate increasing to 200ms being a visual - * indication that at least one task has reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) /* Marked LED 9 on the RDK silk screen. */ - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ); -static void prvRegTest2Implementation( void ); - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Flop"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest1"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest2"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest1Implementation -static void prvRegTest1Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #1, R1 - MOV.L #2, R2 - MOV.L #3, R3 - MOV.L #4, R4 - MOV.L #5, R5 - MOV.L #6, R6 - MOV.L #7, R7 - MOV.L #8, R8 - MOV.L #9, R9 - MOV.L #10, R10 - MOV.L #11, R11 - MOV.L #12, R12 - MOV.L #13, R13 - MOV.L #14, R14 - MOV.L #15, R15 - - ; Loop, checking each iteration that each register still contains the - ; expected value. -TestLoop1: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest1CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register. - MOV.L #1, R14 - MOV.L #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - ; Restore the clobbered registers. - POPM R14-R15 - - ; Now compare each register to ensure it still contains the value that was - ; set before this loop was entered. - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop1 - -RegTest1Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. - BRA RegTest1Error -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest2Implementation -static void prvRegTest2Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #10, R1 - MOV.L #20, R2 - MOV.L #30, R3 - MOV.L #40, R4 - MOV.L #50, R5 - MOV.L #60, R6 - MOV.L #70, R7 - MOV.L #80, R8 - MOV.L #90, R9 - MOV.L #100, R10 - MOV.L #110, R11 - MOV.L #120, R12 - MOV.L #130, R13 - MOV.L #140, R14 - MOV.L #150, R15 - - ; Loop, checking on each iteration that each register still contains the - ; expected value. -TestLoop2: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest2CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Restore the clobbered registers. - POPM R14-R15 - - CMP #10, R1 - BNE RegTest2Error - CMP #20, R2 - BNE RegTest2Error - CMP #30, R3 - BNE RegTest2Error - CMP #40, R4 - BNE RegTest2Error - CMP #50, R5 - BNE RegTest2Error - CMP #60, R6 - BNE RegTest2Error - CMP #70, R7 - BNE RegTest2Error - CMP #80, R8 - BNE RegTest2Error - CMP #90, R9 - BNE RegTest2Error - CMP #100, R10 - BNE RegTest2Error - CMP #110, R11 - BNE RegTest2Error - CMP #120, R12 - BNE RegTest2Error - CMP #130, R13 - BNE RegTest2Error - CMP #140, R14 - BNE RegTest2Error - CMP #150, R15 - BNE RegTest2Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop2 - -RegTest2Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. - BRA RegTest2Error -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index ebc6afe2e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,535 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section _RX_DESC - volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section _TX_DESC - volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - struct - { - unsigned long ulAlignmentVariable; - char cBuffer[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - } xEthernetBuffers; -#pragma section - - - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers.cBuffer[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __LIT - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vEMAC_ISR_Handler( vect = VECT_ETHER_EINT, enable ) ) -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index be4d71175..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 8 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c deleted file mode 100644 index afd6e31d0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* National DP83640 fix */ - _phy_write(0x13, 0x0006); - reg = _phy_read(0x14); - _phy_write(0x14, (reg&0x7FFF)); - _phy_write(0x13, 0x0000); - - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h deleted file mode 100644 index e2429d932..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x01 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index 13157ab5c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - __evenaccess uint32_t status; -#if __LIT -/* Little endian */ - __evenaccess uint16_t size; - __evenaccess uint16_t bufsize; -#else -/* Big endian */ - __evenaccess uint16_t bufsize; - __evenaccess uint16_t size; - -#endif - int8_t *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -int32_t R_Ether_Close(uint32_t ch); -int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -int32_t R_Ether_Read(uint32_t ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const int8_t *name; - uint8_t open; - uint8_t Tx_act; - uint8_t Rx_act; - uint8_t txing; /* Transmit Active */ - uint8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uint8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - uint8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uint8_t mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 00f739647..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __LIT -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 6de54b590..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,965 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|fff83a05|103c|1710|14cc" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT01" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT02" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT03" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT04" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT05" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT06" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT07" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT08" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT09" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT10" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_FILE" "" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_SELETCT" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_MODIFIED" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_NOREAD_OSOBJECT" "0" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_SAMPLING_PERIOD" "100" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "103c" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "5904" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSession" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "5324" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSessionViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000106C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000001AE0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000063656843" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "000000000000006B" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000002" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000FF9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000004020001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF80178" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF868F0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000001000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000001064" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSession" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSessionViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "255" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "ulRegTest2CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "ulRegTest1CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "ulIdleLoopCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "xEnd, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "pxNewBlockLink, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "3" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoDefaultSession" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "C:\temp" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "GCC io.txt" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp124" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp125" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp126" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp127" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp128" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp129" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp130" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp131" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp132" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp133" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp134" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp135" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp136" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp137" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp138" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp139" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp140" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp141" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp142" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp143" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp144" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp145" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp146" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp147" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp148" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp149" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp150" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp151" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp152" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp153" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp154" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp155" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp156" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp157" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp158" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp159" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp160" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp161" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp162" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp163" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp164" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp165" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp166" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp167" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp168" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp169" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp170" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp171" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp172" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp173" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp174" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp175" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp176" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp177" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp178" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp179" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp180" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp181" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp182" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp183" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp184" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp185" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp186" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp187" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp188" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp189" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp190" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp191" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp192" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp193" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp194" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp195" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp196" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp197" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp198" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp199" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp200" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp201" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp202" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp203" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp204" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp205" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp206" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp207" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp208" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp209" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp210" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp211" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp212" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp213" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp214" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp215" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp216" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp217" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp218" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp219" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp220" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp221" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp222" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp223" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp224" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp225" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp226" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp227" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp228" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp229" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp230" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp231" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp232" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp233" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp234" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp235" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp236" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp237" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp238" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp239" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp240" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp241" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp242" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp243" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp244" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp245" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp246" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp247" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp248" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp249" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp250" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp251" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp252" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp253" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp254" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp255" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp256" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp257" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp258" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp259" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp260" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp261" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp262" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp263" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp264" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp265" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp266" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp267" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp268" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp269" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp270" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp271" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp272" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp273" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp274" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp275" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp276" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp277" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp278" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp279" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp280" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp281" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp282" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp283" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp284" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp285" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp286" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp287" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp288" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp289" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp290" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp291" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp292" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp293" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp294" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp295" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp296" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp297" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp298" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp299" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp300" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp301" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp302" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp303" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp304" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp305" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp306" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp307" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp308" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp309" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp310" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp311" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp312" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp313" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp314" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp315" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp316" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp317" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp318" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp319" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp320" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp321" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp322" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp323" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp324" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp325" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp326" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp327" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp328" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp329" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp330" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp331" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp332" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp333" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp334" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp335" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp336" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp337" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp338" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp339" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp340" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp341" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp342" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp343" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp344" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp345" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp346" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp347" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp348" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp349" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp350" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp351" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp352" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp353" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp354" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp355" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp356" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp357" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp358" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp359" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp360" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp361" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp362" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp363" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp364" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp365" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp366" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp367" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp368" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp369" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp370" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp371" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp372" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp373" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp374" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp375" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp376" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp377" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp378" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp379" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp380" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp381" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp382" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp383" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp384" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp385" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp386" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp387" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp388" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp389" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp390" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp391" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp392" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp393" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp394" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp395" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp396" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp397" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp398" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp399" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp400" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp401" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp402" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp403" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp404" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp405" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp406" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp407" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp408" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp409" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp410" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp411" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp412" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp413" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp414" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp415" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp416" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp417" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp418" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp419" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp420" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp421" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp422" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp423" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp424" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp425" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp426" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp427" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp428" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp429" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp430" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp431" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp432" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp433" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp434" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp435" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp436" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp437" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp438" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp439" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp440" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp441" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp442" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp443" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp444" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp445" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp446" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp447" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp448" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp449" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp450" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp451" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp452" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp453" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp454" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp455" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp456" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp457" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp458" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp459" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp460" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp461" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp462" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp463" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp464" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp465" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp466" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp467" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp468" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp469" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp470" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp471" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp472" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp473" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp474" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp475" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp476" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp477" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp478" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp479" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp480" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp481" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp482" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp483" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp484" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp485" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp486" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp487" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp488" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp489" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp490" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp491" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp492" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp493" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp494" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp495" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp496" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp497" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp498" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp499" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp500" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp501" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp502" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp503" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp504" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp505" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp506" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp507" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp508" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp509" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp510" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp511" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp512" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp513" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp514" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp515" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp516" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp517" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp518" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp519" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp520" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp521" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp522" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp523" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp524" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp525" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp526" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp527" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp528" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp529" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp530" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp531" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp532" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp533" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp534" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp535" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp536" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp537" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp538" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp539" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp540" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp541" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp542" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp543" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp544" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp545" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp546" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp547" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp548" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp549" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp550" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp551" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp552" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp553" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp554" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp555" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp556" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp557" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp558" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp559" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp560" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp561" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp562" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp563" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp564" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp565" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp566" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp567" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp568" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp569" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp570" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp571" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp572" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp573" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp574" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp575" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp576" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp577" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp578" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp579" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp580" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp581" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp582" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp583" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp584" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp585" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp586" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp587" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp588" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp589" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp590" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp591" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp592" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp593" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp594" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp595" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp596" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp597" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp598" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp599" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp600" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp601" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "532" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.07" 306 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 44 44 816 406 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoDefaultSession" "WINDOW" 59422 0 3 "0.49" 306 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoDefaultSession" "WINDOW" 59422 0 0 "0.21" 251 0 0 350 200 17 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "0.57" 306 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoDefaultSession" "WINDOW" 59421 0 0 "1.00" 307 0 0 350 200 18 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoDefaultSession" "WINDOW" 59422 0 1 "0.43" 306 0 0 853 610 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 11 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port_asm.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\GNU-Files\start.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\RegTest.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\portmacro.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\FreeRTOSConfig.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 298 -510103 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 581 33414224 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 144 -524093 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 222 -523943 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\source\portable\gcc\rx600\port.c" 255 -511337 1 "{00000000-0000-0000-C000-000000000046}" "" -"" -1 -523932 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -"" -1 -509967 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini deleted file mode 100644 index 5e7c5edd5..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini +++ /dev/null @@ -1,30 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=0 -HideNext=0 -ConnectionDlgAutoClose=1 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=0x17000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 9476d0452..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "rskrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c deleted file mode 100644 index b6660aaa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c +++ /dev/null @@ -1,55 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :hwinit.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Hardware Setup file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#include "iodefine.h" -#ifdef __cplusplus -extern "C" { -#endif -extern void hw_initialise(void); -#ifdef __cplusplus -} -#endif - -void hw_initialise(void) -{ -/* - SCI.SMR.BYTE = 0; - SCI.SMR.BIT.CA = 1; - SCI.SMR.BIT.CHR = 1; - SCI.SMR.BIT.OE = 1; - SCI.SMR.BIT.STOP = 1; - SCI.SMR.BIT.MP = 1; - SCI.SMR.BIT.CKS = 3; - SCI.BRR = 0; - SCI.SCR.BYTE = 0; - SCI.SCR.BIT.TIE = 1; - SCI.SCR.BIT.RIE = 1; - SCI.SCR.BIT.TE = 1; - SCI.SCR.BIT.RE = 1; - SCI.SCR.BIT.MPIE = 1; - SCI.SCR.BIT.TEIE = 1; - SCI.SCR.BIT.CKE = 3; - SCI.TDR = 0; - SCI.SSR.BYTE = 0; - SCI.SSR.BIT.TDRE = 1; - SCI.SSR.BIT.RDRF = 1; - SCI.SSR.BIT.ORER = 1; - SCI.SSR.BIT.FER = 1; - SCI.SSR.BIT.PER = 1; - SCI.SSR.BIT.TEND = 1; - SCI.SSR.BIT.MPB = 1; - SCI.SSR.BIT.MPBT = 1; - SCI.RDR = 0; - -*/ -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c deleted file mode 100644 index 7334d3e9c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c +++ /dev/null @@ -1,431 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void){ __asm volatile ("brk"); } - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void INT_NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void INT_Excep_BRK(void){ /*wait(); */} - -// BUSERR -void INT_Excep_BUSERR(void){ } - -// FCU_FCUERR -void INT_Excep_FCU_FCUERR(void){ } - -// FCU_FRDYI -void INT_Excep_FCU_FRDYI(void){ } - -// CMTU0_CMT0 - (RB) NOTE This has been replaced in the vector table with vTickISR(). -void INT_Excep_CMTU0_CMT0(void){ } - -// CMTU0_CMT1 -void INT_Excep_CMTU0_CMT1(void){ } - -// CMTU1_CMT2 -void INT_Excep_CMTU1_CMT2(void){ } - -// CMTU1_CMT3 -void INT_Excep_CMTU1_CMT3(void){ } - -// IRQ0 -void INT_Excep_IRQ0(void){ } - -// IRQ1 -void INT_Excep_IRQ1(void){ } - -// IRQ2 -void INT_Excep_IRQ2(void){ } - -// IRQ3 -void INT_Excep_IRQ3(void){ } - -// IRQ4 -void INT_Excep_IRQ4(void){ } - -// IRQ5 -void INT_Excep_IRQ5(void){ } - -// IRQ6 -void INT_Excep_IRQ6(void){ } - -// IRQ7 -void INT_Excep_IRQ7(void){ } - -// IRQ8 -void INT_Excep_IRQ8(void){ } - -// IRQ9 -void INT_Excep_IRQ9(void){ } - -// IRQ10 -void INT_Excep_IRQ10(void){ } - -// IRQ11 -void INT_Excep_IRQ11(void){ } - -// IRQ12 -void INT_Excep_IRQ12(void){ } - -// IRQ13 -void INT_Excep_IRQ13(void){ } - -// IRQ14 -void INT_Excep_IRQ14(void){ } - -// IRQ15 -void INT_Excep_IRQ15(void){ } - -// WDT_WOVI -void INT_Excep_WDT_WOVI(void){ } - -// AD0_ADI0 -void INT_Excep_AD0_ADI0(void){ } - -// AD1_ADI1 -void INT_Excep_AD1_ADI1(void){ } - -// AD2_ADI2 -void INT_Excep_AD2_ADI2(void){ } - -// AD3_ADI3 -void INT_Excep_AD3_ADI3(void){ } - -// TPU0_TGI0A -void INT_Excep_TPU0_TGI0A(void){ } - -// TPU0_TGI0B -void INT_Excep_TPU0_TGI0B(void){ } - -// TPU0_TGI0C -void INT_Excep_TPU0_TGI0C(void){ } - -// TPU0_TGI0D -void INT_Excep_TPU0_TGI0D(void){ } - -// TPU0_TCI0V -void INT_Excep_TPU0_TCI0V(void){ } - -// TPU1_TGI1A -void INT_Excep_TPU1_TGI1A(void){ } - -// TPU1_TGI1B -void INT_Excep_TPU1_TGI1B(void){ } - -// TPU1_TCI1V -void INT_Excep_TPU1_TCI1V(void){ } - -// TPU1_TCI1U -void INT_Excep_TPU1_TCI1U(void){ } - -// TPU2_TGI2A -void INT_Excep_TPU2_TGI2A(void){ } - -// TPU2_TGI2B -void INT_Excep_TPU2_TGI2B(void){ } - -// TPU2_TCI2V -void INT_Excep_TPU2_TCI2V(void){ } - -// TPU2_TCI2U -void INT_Excep_TPU2_TCI2U(void){ } - -// TPU3_TGI3A -void INT_Excep_TPU3_TGI3A(void){ } - -// TPU3_TGI3B -void INT_Excep_TPU3_TGI3B(void){ } - -// TPU3_TGI3C -void INT_Excep_TPU3_TGI3C(void){ } - -// TPU3_TGI3D -void INT_Excep_TPU3_TGI3D(void){ } - -// TPU3_TCI3V -void INT_Excep_TPU3_TCI3V(void){ } - -// TPU4_TGI4A -void INT_Excep_TPU4_TGI4A(void){ } - -// TPU4_TGI4B -void INT_Excep_TPU4_TGI4B(void){ } - -// TPU4_TCI4V -void INT_Excep_TPU4_TCI4V(void){ } - -// TPU4_TCI4U -void INT_Excep_TPU4_TCI4U(void){ } - -// TPU5_TGI5A -void INT_Excep_TPU5_TGI5A(void){ } - -// TPU5_TGI5B -void INT_Excep_TPU5_TGI5B(void){ } - -// TPU5_TCI5V -void INT_Excep_TPU5_TCI5V(void){ } - -// TPU5_TCI5U -void INT_Excep_TPU5_TCI5U(void){ } - -// TPU6_TGI6A -void INT_Excep_TPU6_TGI6A(void){ } - -// TPU6_TGI6B -void INT_Excep_TPU6_TGI6B(void){ } - -// TPU6_TGI6C -void INT_Excep_TPU6_TGI6C(void){ } - -// TPU6_TGI6D -void INT_Excep_TPU6_TGI6D(void){ } - -// TPU6_TCI6V -void INT_Excep_TPU6_TCI6V(void){ } - -// TPU7_TGI7A -void INT_Excep_TPU7_TGI7A(void){ } - -// TPU7_TGI7B -void INT_Excep_TPU7_TGI7B(void){ } - -// TPU7_TCI7V -void INT_Excep_TPU7_TCI7V(void){ } - -// TPU7_TCI7U -void INT_Excep_TPU7_TCI7U(void){ } - -// TPU8_TGI8A -void INT_Excep_TPU8_TGI8A(void){ } - -// TPU8_TGI8B -void INT_Excep_TPU8_TGI8B(void){ } - -// TPU8_TCI8V -void INT_Excep_TPU8_TCI8V(void){ } - -// TPU8_TCI8U -void INT_Excep_TPU8_TCI8U(void){ } - -// TPU9_TGI9A -void INT_Excep_TPU9_TGI9A(void){ } - -// TPU9_TGI9B -void INT_Excep_TPU9_TGI9B(void){ } - -// TPU9_TGI9C -void INT_Excep_TPU9_TGI9C(void){ } - -// TPU9_TGI9D -void INT_Excep_TPU9_TGI9D(void){ } - -// TPU9_TCI9V -void INT_Excep_TPU9_TCI9V(void){ } - -// TPU10_TGI10A -void INT_Excep_TPU10_TGI10A(void){ } - -// TPU10_TGI10B -void INT_Excep_TPU10_TGI10B(void){ } - -// TPU10_TCI10V -void INT_Excep_TPU10_TCI10V(void){ } - -// TPU10_TCI10U -void INT_Excep_TPU10_TCI10U(void){ } - -// TPU11_TGI11A -void INT_Excep_TPU11_TGI11A(void){ } - -// TPU11_TGI11B -void INT_Excep_TPU11_TGI11B(void){ } - -// TPU11_TCI11V -void INT_Excep_TPU11_TCI11V(void){ } - -// TPU11_TCI11U -void INT_Excep_TPU11_TCI11U(void){ } - -// TMR0_CMI0A -void INT_Excep_TMR0_CMI0A(void){ } - -// TMR0_CMI0B -void INT_Excep_TMR0_CMI0B(void){ } - -// TMR0_OV0I -void INT_Excep_TMR0_OV0I(void){ } - -// TMR1_CMI1A -void INT_Excep_TMR1_CMI1A(void){ } - -// TMR1_CMI1B -void INT_Excep_TMR1_CMI1B(void){ } - -// TMR1_OV1I -void INT_Excep_TMR1_OV1I(void){ } - -// TMR2_CMI2A -void INT_Excep_TMR2_CMI2A(void){ } - -// TMR2_CMI2B -void INT_Excep_TMR2_CMI2B(void){ } - -// TMR2_OV2I -void INT_Excep_TMR2_OV2I(void){ } - -// TMR3_CMI3A -void INT_Excep_TMR3_CMI3A(void){ } - -// TMR3_CMI3B -void INT_Excep_TMR3_CMI3B(void){ } - -// TMR3_OV3I -void INT_Excep_TMR3_OV3I(void){ } - -// DMAC_DMTEND0 -void INT_Excep_DMAC_DMTEND0(void){ } - -// DMAC_DMTEND1 -void INT_Excep_DMAC_DMTEND1(void){ } - -// DMAC_DMTEND2 -void INT_Excep_DMAC_DMTEND2(void){ } - -// DMAC_DMTEND3 -void INT_Excep_DMAC_DMTEND3(void){ } - -// SCI0_ERI0 -void INT_Excep_SCI0_ERI0(void){ } - -// SCI0_RXI0 -void INT_Excep_SCI0_RXI0(void){ } - -// SCI0_TXI0 -void INT_Excep_SCI0_TXI0(void){ } - -// SCI0_TEI0 -void INT_Excep_SCI0_TEI0(void){ } - -// SCI1_ERI1 -void INT_Excep_SCI1_ERI1(void){ } - -// SCI1_RXI1 -void INT_Excep_SCI1_RXI1(void){ } - -// SCI1_TXI1 -void INT_Excep_SCI1_TXI1(void){ } - -// SCI1_TEI1 -void INT_Excep_SCI1_TEI1(void){ } - -// SCI2_ERI2 -void INT_Excep_SCI2_ERI2(void){ } - -// SCI2_RXI2 -void INT_Excep_SCI2_RXI2(void){ } - -// SCI2_TXI2 -void INT_Excep_SCI2_TXI2(void){ } - -// SCI2_TEI2 -void INT_Excep_SCI2_TEI2(void){ } - -// SCI3_ERI3 -void INT_Excep_SCI3_ERI3(void){ } - -// SCI3_RXI3 -void INT_Excep_SCI3_RXI3(void){ } - -// SCI3_TXI3 -void INT_Excep_SCI3_TXI3(void){ } - -// SCI3_TEI3 -void INT_Excep_SCI3_TEI3(void){ } - -// SCI4_ERI4 -void INT_Excep_SCI4_ERI4(void){ } - -// SCI4_RXI4 -void INT_Excep_SCI4_RXI4(void){ } - -// SCI4_TXI4 -void INT_Excep_SCI4_TXI4(void){ } - -// SCI4_TEI4 -void INT_Excep_SCI4_TEI4(void){ } - -// SCI5_ERI5 -void INT_Excep_SCI5_ERI5(void){ } - -// SCI5_RXI5 -void INT_Excep_SCI5_RXI5(void){ } - -// SCI5_TXI5 -void INT_Excep_SCI5_TXI5(void){ } - -// SCI5_TEI5 -void INT_Excep_SCI5_TEI5(void){ } - -// SCI6_ERI6 -void INT_Excep_SCI6_ERI6(void){ } - -// SCI6_RXI6 -void INT_Excep_SCI6_RXI6(void){ } - -// SCI6_TXI6 -void INT_Excep_SCI6_TXI6(void){ } - -// SCI6_TEI6 -void INT_Excep_SCI6_TEI6(void){ } - -// RIIC0_EEI0 -void INT_Excep_RIIC0_EEI0(void){ } - -// RIIC0_RXI0 -void INT_Excep_RIIC0_RXI0(void){ } - -// RIIC0_TXI0 -void INT_Excep_RIIC0_TXI0(void){ } - -// RIIC0_TEI0 -void INT_Excep_RIIC0_TEI0(void){ } - -// RIIC1_EEI1 -void INT_Excep_RIIC1_EEI1(void){ } - -// RIIC1_RXI1 -void INT_Excep_RIIC1_RXI1(void){ } - -// RIIC1_TXI1 -void INT_Excep_RIIC1_TXI1(void){ } - -// RIIC1_TEI1 -void INT_Excep_RIIC1_TEI1(void){ } - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm deleted file mode 100644 index 677b81f41..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm +++ /dev/null @@ -1,94 +0,0 @@ -/*------------------------------------------------------------------------ - | - FILE : start.asm | - DATE : Wed, Aug 25, 2010 | - DESCRIPTION : Reset Program | - CPU TYPE : Other | - | - This file is generated by KPIT GNU Project Generator (Ver.4.5). | - | -------------------------------------------------------------------------*/ - - - - /*Start.asm*/ - - .list - .section .text - .global _start /*global Start routine */ - -#ifdef CPPAPP -___dso_handle: - .global ___dso_handle -#endif - - .extern _hw_initialise /*external Sub-routine to initialise Hardware*/ - .extern _data - .extern _mdata - .extern _ebss - .extern _bss - .extern _edata - .extern _main - .extern _ustack - .extern _istack - .extern _rvectors -#if DEBUG - .extern _exit -#endif - - -_start: -/* initialise user stack pointer */ - mvtc #_ustack,USP - -/* initialise interrupt stack pointer */ - mvtc #_istack,ISP - -/* setup intb */ - mvtc #_rvectors_start, intb /* INTERRUPT VECTOR ADDRESS definition */ - -/* setup FPSW */ - mvtc #100h, fpsw - -/* load data section from ROM to RAM */ - - mov #_mdata,r2 /* src ROM address of data section in R2 */ - mov #_data,r1 /* dest start RAM address of data section in R1 */ - mov #_edata,r3 /* end RAM address of data section in R3 */ - sub r1,r3 /* size of data section in R3 (R3=R3-R1) */ - smovf /* block copy R3 bytes from R2 to R1 */ - -/* bss initialisation : zero out bss */ - - mov #00h,r2 /* load R2 reg with zero */ - mov #_ebss, r3 /* store the end address of bss in R3 */ - mov #_bss, r1 /* store the start address of bss in R1 */ - sub r1,r3 /* size of bss section in R3 (R3=R3-R1) */ - sstr.b - -/* call the hardware initialiser */ - bsr.a _hw_initialise - nop - -/* setup PSW */ -// mvtc #10000h, psw /* Set Ubit & Ibit for PSW */ - -/* change PSW PM to user-mode */ -// MVFC PSW,R1 -// OR #00100000h,R1 -// PUSH.L R1 -// MVFC PC,R1 -// ADD #10,R1 -// PUSH.L R1 -// RTE -// NOP -// NOP - -/* start user program */ - bsr.a _main - -/* call to exit*/ -_exit: - bsr.a _exit - - .end diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index af3cf2511..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void vTimer2_ISR_Handler( void ) __attribute__((interrupt)); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -void vTimer2_ISR_Handler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* This is the highest priority interrupt in the system, so there is no - advantage to re-enabling interrupts here. - - We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index ea02e3dbf..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. See the documentation page -for this port on http://www.FreeRTOS.org for more information on writing -interrupt handlers. */ -void vT0_1_ISR_Handler( void ) __attribute((interrupt)); -void vT2_3_ISR_Handler( void ) __attribute((interrupt)); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -void vT0_1_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT2_3_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} -/*-----------------------------------------------------------*/ - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c deleted file mode 100644 index 72bdd65dd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define partestNUM_LEDS ( 6 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_ON; - break; - case 1: LED1 = LED_ON; - break; - case 2: LED2 = LED_ON; - break; - case 3: LED3 = LED_ON; - break; - case 4: LED4 = LED_ON; - break; - case 5: LED5 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_OFF; - break; - case 1: LED1 = LED_OFF; - break; - case 2: LED2 = LED_OFF; - break; - case 3: LED3 = LED_OFF; - break; - case 4: LED4 = LED_OFF; - break; - case 5: LED5 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED0 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED1 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED2 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED3 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 4 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 5 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 64a895a26..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,483 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\RTOSDemo.hwp" "RX" "KPIT GNURX [ELF]" "C Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"KPIT GNURX [ELF] Toolchain" "v10.03" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Debug_with_optimisation" -[BUILD_PHASES] -"GNU Assembler" 1 -"GNU Compiler" 1 -"GNU Library Generator" 1 -"GNU Linker" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Archive File" "A" -"Assembly include file" "INC" -"Assembly list file" "LIS" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C list file" "LST" -"C source file" "C" -"C++ header file" "HPP" -"C++ list file" "LPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Debug information file" "DBG" -"Expanded assembly source file" "EXP" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocess Assembly file" "ASM" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Profile file" "PRO" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Archive File" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C list file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ list file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Debug information file" "BIN" "NONE" "" -"Expanded assembly source file" "TEXT" "EDITOR" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocess Assembly file" "TEXT" "EDITOR" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Profile file" "BIN" "NONE" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"GNU Assembler" -"GNU Compiler" -"GNU Library Generator" -"GNU Linker" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"GNU Library Generator" 1 -"GNU Compiler" 1 -"GNU Assembler" 1 -"GNU Linker" 1 -[BUILD_PHASE_DETAILS] -"GNU Assembler" "Assembly source file" 1 -"GNU Compiler" "C source file|C++ source file|Preprocess Assembly file" 1 -"GNU Library Generator" "" 0 -"GNU Linker" "Object file|Library file|Relocatable file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"GNU Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_Preprocess Assembly file] -"GNU Compiler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "GNU Assembler" "GNU Compiler" -"Object file" "GNU Linker" "GNU Assembler" -"Object file" "GNU Linker" "GNU Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "User" "Preprocess Assembly file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "User" "C source file" 2 -[FOLDER] -"C header file" "C header file" -"C source file" "C source file" -"C source file|FreeRTOS Source" "" -"C source file|FreeRTOS Source|Portable Layer" "" -"C source file|FreeTCPIP (based on uIP)" "" -"C source file|FreeTCPIP (based on uIP)|webserver" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Common" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" "" -"C source file|GNU Files" "" -"C source file|Renesas Files" "" -"C source file|Standard Demo Files" "" -"Preprocess Assembly file" "Preprocess Assembly file" -[GENERAL_DATA_PROJECT] -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[OPTIONS_Blinky_GNU Assembler] -"Assembly source file" "0f757b5b0aa5bc10" 4 -[OPTIONS_Blinky_GNU Compiler] -"C source file" "0f29ab09a4b1fc10" 3 -"C++ source file" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0f29ab09a4b1fc10" 3 -"Preprocess Assembly file" "0f29ab09a4b1fc10" 2 -[OPTIONS_Blinky_GNU Library Generator] -"Single Shot" "00e05b5b0aa5bc10" 1 -[OPTIONS_Blinky_GNU Linker] -"Single Shot" "04611067f811cc10" 5 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 5 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|LINCSYM|1] [B|LOMITDD|1] [B|LOMITFP|1] [B|OPTIMIZE|0] [I|OPTLV|1] [S|APPTXT|^"-Wa,-gdwarf2^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|LINCSYM|1] [B|LOMITDD|1] [B|LOMITFP|1] [B|OPTIMIZE|0] [I|OPTLV|1] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 3 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_GNU Assembler] -"Assembly source file" "00d92b5b0aa5bc10" 3 -[OPTIONS_Debug_GNU Compiler] -"C source file" "02307b3c84b1fc10" 2 -"C++ source file" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "02307b3c84b1fc10" 2 -"Preprocess Assembly file" "02307b3c84b1fc10" 2 -[OPTIONS_Debug_GNU Library Generator] -"Single Shot" "00c20b5b0aa5bc10" 1 -[OPTIONS_Debug_GNU Linker] -"Single Shot" "04611067f811cc10" 4 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [B|WONCEU|1] [B|OUTTRAD|1] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|MODE|BUILD/CHANGED] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|0] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] -" 1 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Assembler] -"Assembly source file" "00e05b5b0aa5bc10" 3 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Compiler] -"C source file" "0f29ab09a4b1fc10" 2 -"C++ source file" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0f29ab09a4b1fc10" 2 -"Preprocess Assembly file" "0f29ab09a4b1fc10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Library Generator] -"Single Shot" "00e05b5b0aa5bc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Linker] -"Single Shot" "04611067f811cc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|APPTXT|^"-e _start^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [B|SUBCOMMAND|0] [S|PROJECTTYPE|CAPPPROJECT] [S|ENDIAN|LITTLE] [S|CPUTYPE|RX600] [S|CPU|Other] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] [S|ARCHIVE|libRTOSDemo.a*libgcc.a] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFFF8000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00001808|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x00001708|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001001|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_GNU Assembler] -"Assembly source file" "00d92b5b0aa5bc10" 4 -[OPTIONS_Debug_with_optimisation_GNU Compiler] -"C source file" "0f29ab09a4b1fc10" 3 -"C++ source file" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0f29ab09a4b1fc10" 3 -"Preprocess Assembly file" "0f29ab09a4b1fc10" 2 -[OPTIONS_Debug_with_optimisation_GNU Library Generator] -"Single Shot" "00d92b5b0aa5bc10" 1 -[OPTIONS_Debug_with_optimisation_GNU Linker] -"Single Shot" "04611067f811cc10" 5 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 5 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [S|APPTXT|^"-Wa,-gdwarf2^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 3 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index dd731a5e29f77b74a1da2ab11d32010a77db584f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169792 zcmc${37lM6RX+}7l1V0eCYj7WJ$qFqK)qLcF)-6zRoz{rySk^UI+-v)O;2|vY0~NL zsqW4sfU=7qDu@dxiXi*GDIy{&KM_Pl!3FmX7u;|cMdkNB=id9a`%cws{QW=w{v_4Q z`<`>pJ>R>YyS#1Algig$`MAgJs*copXO>oa>yN|N6X*k9k5}K+=at=Vty8V1F5d9C z$8E!(-i)Uqz}{~6-2BB}cX@T?Y}UOK5P~faf)#SNOR$3hZKSb~yIF$n=yn_RX6mwJ z7*s8-Y&eDPMt6}jxmc7`DQMR9p$`m(7IHpxQ-U5~14=&f9tn93BfDqj*F*NcJpn#w z^m`NFgO-0-!XNSN37G#T34T<;mwOTW>q!KH8CXan5X`|#BmwPFHYtz=N5WHKnr)?? zFBPWkc-~5_OOH`YrrVv_)Qcs+{%*J3sWqCNZvDa8)TQ)c$q;BdS+90dFOW3tQ1$UK z>G`4VM77#I)f$~ODNdrMbESMFS}C`44SKGm3XkEFZ;>8fK`z;lp6={Uk5(re&AO>| zHCPd9Id&+Yy+qQm%gex3lDBp!XT4BTv2C>4xlaqfEt>mnqqWTIWyzZJgVMvpqs{JU z?PR^xX|(Ipb+Fp1Pu!u?c~>-@13-iI(Pq0b(jd zjm~KjGA*m6e&1+owmW&Mb9%Pkt#>9L(aMiS&Dce_R(*Er^urQlw}Lz{S8sQ^66l(- z(RQQSot~-HyVaRyr!_N0_Kj$~W#5qizTFw^%(V%As|4RSR-HQ09dFfPMYDR^`06>) z?CfOR^xTx`ODx3IkDT8aotm0CH99s`M`>(LG@8%S$!4PJ_5xf(Zn|SrGu0C&^A_v~ zV6&|Tl%3YdPGh?MOi3%5VBq*Z(*l`4puv}-ChP|onVze6r|Qj#&g3&Btp@;X%{9A? zX01^j?aZ_umXKs_yAGCWWU#T|b&>_-g!bf2tJ6I-+UPtaX{Gcj+uhELa>BDEHaF?R!f$n5gLtYrwbx=W+kyMyH z=(k0o+s4|}mrE6W+t}Rr=XE0YMkROQVRw9Hu34MVkZYoloeY_qnz~;?>?K5VrlS;< zCDbx_dRiYVxkAjy5yDBjxr9)tVXi#7Nd#<5QB}ZPn?{_eg55z{AXI zrKkJpX_xAJyFNudpH9Q7&ZNfqUP%o-b-!=W)9m+4Pq$T@wHYaEd#W?t*34W7Jz011 zsT%ckd0)D`%F@j@F(&*Y4D7-N`!jzo6nlV7B4^jnSg9S4*_p=tffCrD0a1 za5xC-*6QQ1qxJ+SBc&@*r8g^db+V31G(OWp4@%W(23^%S8o~uBl|x!?b`DHX`#1TF zQxf)eg{?QaSsjD^Q=_dKx`OH1(N05kSYO0kBG$k=weW+ppc;N^)X+3@H65$N-g>t^ zRj<#!UJ}1aiBHtgIgWPfU1|kcnmU%Y>G~`u9#vwT7}~eFsap4RqmEB0j|DBztWM3L zn;V^-ouZbO`fp7EHKr#UQ}qdCVtlSyrDyGrNp|nk`erd~sI@Zhl+q33oOdO|x$jPf z%f3g#-J@M?yU)d`L{_x?c3?m2T@17rbPF}je7ezlAx~oBRr`uHwd}4UKEJ^DcLTPbN-5f>tj$w!y*;rLdH+a*HCI&-Ox}Bj0&x~3u z2~BFV-oaR`eIoOI$(9Jv`9MOT`@w|3?1v=ab;^me^;Tnc5>3pM*BqL5+{)ICT4V+_ zfEzE6HB+s(+l}T#>YY-9aD$dIEnZOQt&-5KN=S_nTlH$aaT1Lu4Xn(_?zGO>o@mw6 z88f02sIM3h5?^LKW@SwGB}$}SZ`Q&|8J?}AbYIeGpc~;vdh!{@EGrFNil_;1b%SHy z)gcTiiBR5GBoWO}Kt%P5wfbyla!rytqMY5C>7W#N-T6Zj{2B$HYuCF7IgK?s=$EP| z+Gb>I}cR`mnY>|p0YzgC|bJ)Iguqe_EXYw&;NLLbdz zD!p3*99Za^mX{mt)Yl~BbrB>2Av4q6M!S{zE$tX9^}R-f+UV39B+b_ZVZPel0JWH| zbGfN!QU@iqNZo@usY4PBPDBaBMCWfcYgRU%P#gUriGux$z4?uEs@0}GYgsEfjO6go z|Jq)wkIhXyS3f=$ef)%)HxaicxZ7$|)mbfQJ-niZLF=m|^S0B|%(oAG?7U*&WA~K< zA7{Tqdb|y*Gv6sa+|Elkm&C_)GW-vu$Jh2Q%r79KFpj>N;z3=s9Mq__O|$Ms{cA~Z z#pzyHH(>=!Vn3xp@gbE?+sw!;;57!=dJt2vb`=9O1isp4SZ3i58GPqKquY#SE$m^! zLNASRyt$7VmdB%^HH0?9auFSJpy@#dqmA<((WTNtZ>JvZw24Vrh4#)~zhC9aF2$F) zo8>t(BCCxSdbR2L^i1ot>7UL;$vg=0=8PKjA<&1Z_LMec4Btc5?f{^wf#bMay=F>? zrF5T%q>^;nR5%N_*Tan?;AM)B1@qPMeBSg<7H)5^GrxX*qPNlBnBV9b>n=vKtYC}* z_P2G@X!Y}Z5N7XAHyRuRH>JvQzd})z93uxa4zy5vNmt7#dq`@4b^umyRsT?`t2^os zQeA$v^!!ToJo8;c0M2(yfGfsPMSo4(XT?IFFkY`pwr?Mw8f{PhwxoDBKgMJeqd%kL zRZ(X4Abd5;WwGs}zAK8_Ha?r7!b!cf+)SI6G{zefej?Uj;i_?3 zpaZGZ4zk2)-4!)t4TCwQjewvgAH z>&>rmSb=&44n_vMd@GK+uMt`=GOKV__;@GduwHbl_LhaXs!^SuEp+SE$(c`Uj8)DL z_!x}Cv6l7=5^|41qHtsS^h*-zMulqD!T%WIwV_qT&qz`?M5Nj?GB8$@(86#{dK21*KF0XAWT8ypO@gf z7)}KItOVKbL6rYLDFIc|Jdq0|{V554CFw;A_v;d1TcbMn8mSGtf_9=jPkOosPr+;k z{~MV*u2*e_wUI`n96~vFN~nFL3rkiQ)L`MD^-tFc+V&ETR(rbjRy(sxQs={34~}Q9 zN&=hC>=_R0K-=ylu<6X+!7yGOnr>wNZE#MpHq@<7H=KVT26GAKer*^mOR(&JNU#Is zUg~j2`7_g4m2we5I*ql2NVoB5LS(klmyldsc#6T$MgNU)$k+(SuF*{hSFa)*J>8khbUW3?$;>^Hx&UsXF`BtM5pFD#N`$Ls(ur`j%&|nc zdggc{+<4}R5{}zE_{C91*gI0)z?r#~qXZp?Y|Fr3Twx%ou6lWr~n z4)(cjBHWmp9fr$tJV?TfxbZ?`7_P|mw>X^$cd|H@00;jSpPmReRy;8bS7Q504OTJ9vm)yi`cj)#e}GxhFFz2S6|pxlR(ptAEx zP`O7W6ptrbjYc)oZB*;^M&>&cAzKeNGT)U5*@4biCqqK#cMnB6%1-AsiIA|<`JO~b z*y((4G9+}qRzmKl*kV}Mlqth2E(c# z7u%RJo5NvLPc9CJQ6;&Q00wQ34TCvkn{#$e((R}6>2w!$li!(dzCRS96w_8k(8XJMV`7Iwc+BPy_v2sf5l zlyKZUu)dj-jZ9C1nPfR$I_jKBgd20tN;s3OgKg#w=bQvH$#VR4)Llx18*`r{;Y_kF zCF`D-U?y3P=ZrxCUfOHu7UlNkD z!aDKM$o#j2Ga4P8w(~y;kes&j4GC$|cDj_d^EfHr>>fY}*2;_|f;qQJFdmPds^K^i zoPE25+Sh1e|DajF_12KBW&5iL$GasbYkHOErO_4EBf#*M|ImhkU(s+&<#h(WwxBl{ z(6{FNh2GCeBDWin%}f5CgoX2yOJ~oW!rp}b^nCyP%e1hy_UxsnglGFptNo>o%h;@7 zHr-nyH<|PhfZ*|1n9*Pp^%AM{DO+`w_`cNRqdD>FJVF z-R$>aGW|9=zp}X8y9wo)Ha}RV-W(Ne0PV|}o%6%x+6(7;i<`^6KJSwGHf^d^>aGu^ zhvK$*p{L#XuTu8z@@1AT^!jjThrZY5dlyz$d|Q89k`LsOkD=%49-VfKMc}nUME2)C7gGslzvshP)ficrSvdJqnVN* zloAfgQ%b)rVJIbFkWzIRq|r2+Ut>K};)FgaY1xT{N|X+r6`ZNS>Q3(0sJBFYvKuJ01KjZZ2_D84DQX1?g#WJ?ifJ@oIS4b`X^|e&ds&5p z(qc@b`ES~23q#I*biC2Rb||3L8OzHWT#DxKD1k%!0@=aN#VrcBk4XY-4y6E3n|*$- z*I=thKSJgNcO9}dmn7YXG(4bsUc%l)SZw+0j#jHUlf~zXd7O^j%gv4%*;)=_i)ioo z$k*H!HEvVq$~snY1zi*Kt&;9-xFu#&dbqREp6Na^zjC&&l~W^)fBx4lLM*J} zGN^_G*+Gz%<*M|2H$7kLVZO7nF)o3w(x9c)MRT1)ye;d?^Xum(B{gjB`r7l-)^*`iyR7^^PNNtsUAlDL{AXa_SL;K4;cxbz_PSCV=Uj1$0Aop9bJ z^(6^>tI^!RIVsgE(Xc2WYR*qsMsYUOwrUz2ko?RkTyl~6h?H221osyyvjN;nW3Mr< zS%0vT`eRA)jRwXBL^5y;bW<_2l-p92iuTwZNs2Sk;6oRkQM%crd#cgFrC}*Eov_k5 zMAk9S5aTmMsehDm!rBcM7Zr3Gqxh{}OVtM2qa=s|y55S+YNeh!P=ZcC`cjHGb0>$D z1GXwGp@=haA4}r!h54lwbrj+OZ=m)zo$CTD!$1FPFQL^9FsOj$jz0@_)Q5$R(f^pF z_c|89CVrf|{=X&iRSz#C4mEESa7)ch(=Py36aaH6>@e4 zSA3XZ`&%T{oM$D#cQ|+#tKss!XGy7COZMQBHg$l>q3h^y9|$HaZFbOaSw z649}7Tqc2C_fvHRIDHeJCV*VkjgxH58Jc9ttVU422YD zheApZ426_iLm{IRLm^|$!I0V6iA;Sc#2Ft9L5rVR8wznAl_09b@TR?U!!gd%5DaZr zTON*aE)2%-?y37Fj4GXNY@K>&D8zZzP>9 zL$Glo^PHg&=ez{D_QFP$?t2`aK%|on-s&lC`d4&x&syWXf;xwvko3`0=cCfo?c62& z{J_V~r=-WE+x^KwPqQBz^fdQVgP!I;KIm!TX9hhjesa*$($5ZhTK>5~Pe*@z(9^L` zh)m{VlNMC?dWNZ0iQT;D)Y zd30_HcR?Sf7I|J!McDkWr8;pygXqpHgaK;xFH1-y*J;hw&D|(gayw@y zPqX_>0M42S9AreZi_>yWCeua0XjJFTg6`K)x@>g{6SATN+^d1=me%_v*bN#Mx^x^y zP>?S#30)f}MAx(w220Fgfu>oXm_Zn(gBu8Fa`ZGwVmqZVc}RMEH9c}yQG=vLXe|&OhW9Vv~gboVm_3Gr%JdTgll)w((_&P{1k2kuiqm< zw&5(sPfHELRTKa~#4Kj`J0gW53&7MN5-{w0fvBVFX|6B`MCbN5LUy$5$E$OT^+Ppu& z+dt7xrN2{h7w5y4P#!RsUE^-Wv?&g^Me}hLr#Ul+TWcPaQem^}UzE(|Qlf854_f_7 zN#EU+rX^q-ZNj&f(T9}+#A~~_CyyyerC%o{hc+6?J&61Le6ZOCViiEn>-cX-dEG_2 z5Ro74m_0-B8YX^I(lA0AXd%oiYP<;qSy785>F?3`u!`IPk~F>7_-y->*#~9$2OW)% z1kh}%vVi*-*qQ6{H4v=@oivSeP*D6YuDDY(%?T3@wsO6j8bO2vTQgm6^SK4$CW`he zai_Wn{nUzBFm`ftW;T^J9hn8WkqoDSzPin9uEli*;~rf7)IP1Nz12J&A*tCJE~I=n zG&hy^X}DEguVXm157er_W(-LA0^ih=BoS`E5bIYr=hHRGFO!;c)~<$GG#vBaUXr?1 zYrh}g@z4Ldl?x?SH|3!yM9w< zdBrk?+tv^kUGGe1CS?|uEQy=RD3-uQRP8QTdb%o_%TFr(!NFG1<=}M7`V5xf+h+J^ zrNOS`?OMF`V7mS1lGZ(J&CFcD%K?vYYUHvt%l5 zc0XB0a{H-XC*fVzYxb;JU~ZZfSgmx^BF!r#d#|8S?i-}0lAbz0EIr+Z(qiVwZ;RHH zD^UlVo$=JS=$z9i0{{H4{az(in~}al11%R_9RQkQ_A&{470T4p5myK-Xj${+Yu5S~ zM;8}qzkg@7)tg_uJcSkiR9DwXtI{8}@O&5}^#m<&7mNvIjS{Gy>n)t;LoGc{X+4#u zZCX_OEc{{M=`2EZj1DlUa~7%dk~w>Up2Q7?jg_U1RN8og76C&>+yGc(Wxa>7=JM*o z`Nqn|>Uh7`!9phokZ z5@^rb#aYyVX`G%|T`-#(ts-zZh#Fm9I=j+aOns+RruVL03Y?NTCuL$Ub~@DSCn8s9 zz9E{|LyxZYdgnvCWKF|Noe=){Uq?JF1mT$4Amn5~Nfp055xcw?@KH_cI$ zr)HS43jFn~UtOd+LHFXTy)rayF(V{PW*^H?pqxW6XSMBCCa-3kas_rAaUv$(U@1Ku z0Q39!XufICmg*4;-DuKl+Ps%7n10ccye%rpW8~0_8qA=>l06cY*7&59@Kvq$iPnP!x7nRM zs4>rp8o!;dtog8%IzM(kB0b*L>QuiZJ-njTnHo3yq%6zvv_1ZG*>vwh@CA*z%QBre z9{e9MdD?UEmO)RQw+?#hzHQLc?Ar%D&A(&N)51HYr@Q^;+B*mL>S(?X_@MCeuW?+4jbhl1heN{Kpl;m!L9M(j=*3CO1$5AQM z<=h<26q&|Lsd#@3y@m!`XH8FQVQ*E~CYHv8WK3^miSE~;2>4L5>%CIW0v=F6f9b@G zzb)h*ilfkLtY~cgMC}%CrdDuBEg_6Bcb-SaXCNM z52xuB#G?KE*SK9RpMD_eFiR8#r3EnrEHJF;PtMvbDdGG z$vUv5HBlJS)C5b@UZsgvgfS?%UsAPW9WNkRTKJ%Tet*=<``UB3$sg|w;o+0lu6}zI zx2=83$!R54g}V|D=}eH>9S{#_R9h8E1Jt`_{Xb5ck4%*$X{7Js0=(8!BmmTB&1Qi( z^?ahLEJ;Ismek)X0d}=dp)k|?^s*9U2i}p1X8+ryszyAHxQ@NW~yVgLf4ZthO;wxnQ$cHzfCglIweCL zOhja4phz3`)#m7gIlUSQRTrD5YG0M|b%av!MX)l}L>>PJ3C?8t@b(<;SZvnnwZE4H z?qvP^n)a^jI1^8@9Cw=%r|pOCcVLOY6`IodVg5A^9^k5}JT>(7>if)*(uvy^G(oR&rV1DR-dW@hIl-9erS=w;T-JuTH_ zjT%N6D^Lx%pqPoaC9)eLCT?desYGkmH2|r4g`KuA11~~E!*;r@Eq{WHce`01-;wZC zK9zn`)V?CEg59#w#}yIYJRfs@6^p?5hu-R)dJ$})0oh8_rW*x8nlq)$B{!DT2uoEl zMxuH^O$tRWy+BAR{ZT2sy9Z0^_co`}AD0vy3M$~WhSVD+?DZDb)Bj_V%vCHyxld0? z80EA&4}h^J1DiZ>7Pt)g1G+`G)cD) ze88Ouqx+9cmlI;Yy!Z6tJI|jXoJP^vr-WYa>V`r zC#58g2HZwSW7DT3fgq_$!1%yiCo1$_DjOjYli2S`iK*s*$DOJ4xP(${c1BMiT#w=W zgJ=tI?@yaXOYfItRPz}pV~qN+Bzllt#*scoI46S?!e2=sjHTby}oep+K z;e3FW;^yNPNkV5^NvJ{WQ3)#~c0RS7gjMUpO_IND!xwN$Jg@hXY&|3_nQvO+=gGHm!e`OxZD4qiZ9-pr2c@%H4Aa|LKdj zKckDdwT^q024RKv1_{H8^u5|<%n`3h-Bo;Spdx*3_Ln3OTcoZit_{SfTd{vm!tA1) z@x{a@I&ay$pCG6{=GJS|5DWmS9BxR7`WjUZUMKDz$6rpvaK*`0H^ehRnI zrv6YW{Ras_Q?oW+r%)iqalu1I64b~cMp7V02SDtwEL8Jw<()mhN%0qx9ma4ry;n8vOU z%<0e-ajT`hWy$Q@T<&1islKwh2RMt++`RBeuRn8!eqA>KY0HEgJUrgj5P8GMBa+=PNhi|2yuN|W zQrNH1GeKZ0iG$XANK7!*f^Mfxa;X_M4*~Gcbo>&Sxdq ze%3bDMtljY+pX63OTc{$r0dDBIkug7ZvtEkueN_*BHVQ50|{^)=zD)6+;rxHLvXl5 zjb0{|`N5$$e*2U2Lql3zh5c)!xHWw`?*G!qIKyr)3{nH2~nuiIGhyf zHjX5PW*gT?P*r&J?rd}$KO$x7FlS2Lzt&aXGL55>+8DIcxK=_dBgXNfd%P41CHMy< zBUA}yV5@ez@j3~oYL0%}edZ&HV9t+AFqNv-=45^*8P54+GMxLf$#B`9ONPt+d@@}A zQxY!ZJ@+RP!LlDs1k3$oB3S-oiC~4FN(3u@JQ1w)(}`f^Pe?GoobVCq*Go86-031J zeuZx4^GSeshi>L`$$(>-Urq+BW_~3Zu$KANWWajn*OCFpGrukYRh!6nZLxox%r_E2 z;UOpU^@PwdC-Ywkp;agI-wB~LC-XnUp?I_X1ijh*aZ-Eedw`)Q9p~{0p{E?@2@=#R zc2HVH`oAez8U~(pej^Exy#Iw{z%l2GLxC>a=>ASJ;7RvONr14?{jFrcG55EJ0<&B^ zvwxTbh@`W>n+!OX{k>$sYWDY&0c+Vm7z)gBW^#X)1c=P!{wNu6EceIBfYsceBm>rR ze>xPH=Ngv(ax&n_{GTTSp348lP+)=mSooVHK=`rnm&t%*g}+J$tQNkK3|K4tbuwVR z@VCi;7SAT z$4dV^6jg1C_VXIR}28FFo zDIpYEixTtzPb2wkBfsiC^H!;JgprL#<{in9cn$p9k|8^d%-e?}9k$bXXEJ1?;k+jq z60d}RS2AR$;k;Wy?os~iRB?sd^rwfTs&lg+9*&xA)jlMl)GUXOcv4*ImxkbQ))UdD zM&>%HL}-14qq=i_0vuJG81UT4N$Rxo*-;*Vrng!B+dWwpUX0A*I9LwyKfU2gm zM!e!YvrEExDRbO*)VV4daLm~)0lkzRdXv4gN5Xk2b0m1w-J1+J=I)b#Udk?|?CzIv zUdkL>9?c#|1{}*Clz?8!SxPy3NW!U+4y_h-YZ=5}XEJY;n)D#lVd#%aP?aCnijPL- zO%l-4iBp`Myz}NHP)^?YF$wA=@8CGrSi^aX1XNxEhH$OS|4D{(enG;i!7AQ)*gXZW z|Dpuj#dl57Em+T!7N-t+5OdAcYouKwM;J=Ca4pT_m0>-;W^3KtcV?|lU44=F+R?>h zxOD6+ZXD}hexYQ>;TUkLf~Bh19s7F}8n=z%E%$v%=MjaPTj_J^y*}IXA_;y?EIjoT z$%vyD+va8S)qW34dSgo~^Zm;yb5Wgjslq{DKv|y3BX^WR3wrb-tr(8d9br(6i}lEX zt1Ig>lJQru0AIgmHu6}6?DsKqD;rD84@k;(8z8(pD}fF(2rH+p&6N($x6!KRx;YJF zrM-*MbQhaBDr7+pFl4sBwAx?VxZK9|a8lCBzE*F2^Fq&@;IhU32ub{ z$f=$Av*w_WC8IoqoZuQpS`#wJzpw_`_u*oZsJhVE=stg8n+D1 zE4}{G0=6jhut8x}5;zR)st zVbQ0nhKHmJK^wR~{Eb%#g?P78%_aRkI(`EenYAUT4fuA&_z8S0qPjAE_G4 z^?O<(Nf#3zYLrh($^(XUa1ARp2Vd7Yvy8q@F{-pP)~J8Hq+VA^P@oFp?@I+yw@d({ z`Nsw?1^)vHt~1)1KOdcUt`B(*B#C2?I;!Ze1dyTxHG=|E6gxjghE;*I;PLzmoDEunxT|qbFCF(dVaXl6Cw2 z#MrOqysBl@HDRDBJr7H^1bj=1y*zk_I;<29_$jCo^m|eX3K-1v2F*tk+&z(X35Ao`|}rQF1`N8lG=R?RFf{uWu7ruA!T`Uop$Q}iKGw(2-C)y z%?(2Rp@h1cQT^(<`IWQ1S&W@m7gOd4*gH^)@X!B3iJ+TSf?!jx)^#gm$?R1!dPaVo zw!?xcYjywer;@cArTTsI76D6_&J&}IeV>)=(<*sV>Kz4>R5Hq_G;<*fjABG?YHzHr zrA(u0flw0-$S5>pBMZB`I%19j)2Q@u=(hO_Zt}lwxVXBsIMQ7^ce#6EX{pQO!fqx- ze@*`kXv8S#aku09a3Mzty;%~v)=y~-?bC%vmU~L#KafOhGS248I$yFrvVIQpKV>CE z7gLc32qksr7Z>~K-;`8wN=CuiZj6#+Ba8DJ^XY|~tPX>RkhSNF5Snog8*B)z|ar*I*IHSKJ zF>!jGF9sahEOj?V9@#w8#ed3X3f<7=!p6wjIxhaFKOUo}P>zFB8zalT75oU1V~VG> zjlO=Qe#i4P?Z~H`96^pk#r3h6BsW%5$N<6@z5a-lGFeFTwE6z|9+LC$Q9JwxWUFrw z%^PD4YG{Ml!{h^$rp-0c1C(uYhM#HrZ5=U?^a&}6r~(wX%OQR$62&ZM^cm)40QOnlt0t~1KjzizZabpS!8L+nKBS=M$b~T3!1xUmX>>6 z!l}uJ2SSSZ&ZXsu3gnx^B=2f4_uR7AgDZ*VYy= zp;8vnu@I+4oaFf zk4_Ya8rYz*5L}{n>#+MC(P>!{_bsiE^T<31tYYOOrJ8o%(Br0q^I%l*kB!i0dR$a& zN-gz*o+R4bg$rw;B=9H4^d~A&{KZYXl43P#Q5yXW(v4oRY-pD}#?DYnoXRCfbpmuk zJmkcixG2*~N&V77Zw(uj)LA=d#Q=7O|{^)+0r2cei zQ@n0myIYb&{{AoG5Q7x%Iac0v?k8br# zDwm`Br@J4za45MP@~7n<+mamer{%t7YjR$C&)tHY+9a>|d*PPkkU!nWzGO>s$e)%o z^FFKBjA_qsveQfN+qRIN+GMZtM{Ar(`72QU(*uI<-jW>hr{%tHYjR$CbSqP=owrBE zt?kXVUjO9M`f4Aq+1*f?Jd|{hV0QRtMwQ@UDb?uc!V?@*f=4C6D2@6AK&GMOXis5m zHe(W0H@Rp_Z`!h;wsb@ijIoqX3^>|SS_DgKsk%!>TYA@)1+}GVNifDzI$_{yOOH!( zF+Nqd*=S3jyk$XcsVfP_SV|`nvf9$TBxhMVtM1FloK(f;rHKnT3r;jl0jCXT$yhXk zI*YVbe`|tOWvU6hS`A!$9${)t3BE{5F&cfqE4>`PO~lE}DbekcUk8Y4&pu&`q7x0r z`1ZfHXfTOt?|x$|qI`vgmDw z7Svw-$kqfW8aeIN_ib5Fd-a1`5X8{6+Q{oXern5tI*&iQHNlBSUgzAH?>;H&0zhYolC}U!PcbhpWH2rsuvmI~Omk)}3jW3O1K4 ztesV9neuJzOSpkI@h#V}Do9u0j<5EomR8Oyp_}y(&cXN4((@CQ5H{|1u&o-KcBbmJ zHtjX>_X;v%a~TiPrjw-6Z%EBPTGYQVzqF!~qvA#Wpy^TwXEuUxNMNOR37cjXuxSY| z;-)0^{wTH5&VQn<8)hP7ZQZz)H(ISNz-r#43>};6`W9ei2OSrRwZqY(B&Wrj*dYxy=cm6{5;YX9VbdGG@qk{`)4?_PskQz^ zvv>XY$l67Jvv>N7y9DQ$olddJyb~`}^dcI6TAN2vlTZnIn%?DMYrMz@$+2Y1=d-bk zjn4IA7i7p%(>UDy&FY=)V{hGprT2^4-mU1Zu3lKfW_ehQ7GZjR;~bU7h`krJUYa0> z{9v|A#`r<$g<7K%yIn#~Fnc_1`QIpYBTC<+E&X39%|?{|#s3SXxrov`k!@-fEKAMK zvN)ge0Tm)>J)+HQ8KevDLk#8Rl8Ux;e0hF7j&M2^O2+*+{)g1vE32DbU0&`j4l4F$ zI89N{Z$hh3=*>*j(mEjP?aifyrNw!^Gd|);)4N!ntm&+CuYp#`S>KpkI*XmI=9GVP zwSNKIq>0+a&OZ(UrwE-CwT_-^3t*H*asQ^Pg+IwT*MfNBC!zp<{X%_uA$q{_7ZD zQIIZ5S({%+pT4v(f;XEWIVttXZvJrUlw6c0Qev(ewl)37;-okl| zsZQd~5@rjT=NhNF(|^?bm!qZY$y$$RBoC+HM^@OnG`@6Z6~4g8MJf8ME~eHCUkoJ3%G!Ux6<-J;h)4U-%(X&yL^2ERkI5J)MIGRNMO-HNC1tA$8MsD^}Qf9)b&=nL~!faF>n_uslR$+E^9hc|e zs7^-8t*Nyh&8y0*#tf5J&zS?#ry4ZI@2Nxu8o|XDI`OLHgS#R=P-o&$fm7UwpblQb z59!~KYW>}!ylMxGf~V?Hr`2Y?Frt93Fu=$+c*P8=G8g;CN}%c0hqu(G;I)NQbmxF7 zSjR{BZV*bE@Hl*8jwtBqQD=2yepx4w{`9a`CD6vBDZmV*erXN+*D)2P!=Y%FRjv6~ zlrbu1_eD$dJvxV;6>2`is+yQqDWjDVvtVttD5h(&j3Es$XsNGE@r#~cImij8=GW^N z);2Du|43JEtMQxAW`?>QmElMlp+aW7>?QC#odCrILc^DvB23d&D|EAz%DGt_z9H(q zv8Y(=Xo52*wXkLoX?6IOINj?TW~f4UNk}@)ddU-`_L^ywsm?S$F$(z%yrl6q-7RIK z8qE=pIE{l$q+uzQNXx|ABiSYv)aLi@W@A?I@l`EsowqtB3fFonK(N}^{iE47WtC<` z4?;bgZvZ)m%B$A!1*t=OpRA!ec5=SIM8TVN(}*fN0?||!1*IWqz^~~z*lR_!(JO;{3U)z7k6^X>QL)xSsZ@q zSsVUy(9-uvjcGaF$Ll<1;l@x8^u0lh9zLYMA&o;!2cV0U?E_o68h5G73DDbeTIr8U zV-3?XM#_a!OVdHgzK4#DD2lmE4s>`(18{eNq^`NjpPuFWpbF>GA(WZ4D z*d?32;#QYjuuU}z2ldF$(pk59ZPgq>QEkCMKcny&5p~7>ufF@iWxOUl_vD~943|5`zbE1ed zm~0{5wScz?sxdIP?8 zA#1=KjUwm-^|fV-x}VS^rLxqgor^b{Qt!|7ISx){Rj&7lL!aV9bp zVa&21?4CI11*W#4q|JE%%Z1U_iVNfD0u`94)wA_}f3@!~o`rk7O-vqFdg+^_*2=8C zm|U@H%?&%09-#FNuD!ff52|UG7WneN%yk4IWqdmtQ4^!-yCh9uBs8>!MXUWqM8YBcGg<L^`9iMC&nd84IP<3xAF*GfI`ipnu32> z8iSc78=sPm&HjpxBYBldN5(c6bhz~cl2s0w`LWBm8s#lg!H$l2IIEtcBAux@#A2CgmWECB zzg1OE8J0qsG5Jt6`VzPU8TRK3)hio;p(Ui@r78t8AiDJh}B@g%vX~tKRQh($dqb9W%t<-K;L2piNrT3V1Cl_rV`X9;EJC&*YE`n*0xVn&{)M(N5)I2t5 zEz*tM>DOp+D}wB5aV`Y3gNTN{jhZ*&#c!%Cm{r_>QpDq^?$U~EF18AZGhFdnQ;XdjCHipT`m+tDO^u~k5*(At=p&! zZV;#49xsF}nu@@GJT|hCeu0*yEtMfJJkh^q4B1dh`gp|yDg?#=x;}YoOw8X>qfUbu zaSS9Z(FY|9)UHEMl)48?nC|kX(rBey;L@msV^T$}rMAjksRlpw`gEO9Rnq6^_IhM< zfg3nf7XD7fL^XDPMd1hOl+@JS#ing8tJF5zxO-ny`o{;;lLmbALbhQ<1@puc8zJ5uLPuB78{p^|Xaw-*xJ zAktsb-=Pg0Cg7#8O-kXKPzrcSf*Lw}hlCI3fk{>p=A?#Yk{QT_653oty}}kzFtM}- zF8UPsQ$KlkH_^l1#yP&`^4JJ|B3%0YQr5NqNh)~vpSqjS&`Xyl(u{<>ZSixTu3D@D z_koR=AF!|*F%?@*$r_`!Pi<$~9GJBf-=K;HsawKbQUz@vQ+Zml=4#JjKJRN1_}V}U zYeDtqoT6=$r+yiOW%ScZ183w0sRXN=l_(!;D!|1xXynZD{Mqy;M4@#x`RD5|NftZd z%n&s%32~uf0;m<%y&{=x_@wrg*gT=*(^dx6Mp;S^jnLBC60T6?3X1CUBf1P(GS~TT z#Eo)6KRzsZz7Z%in~NxWrr^*o7*u#;&R|K8Ek0k8k_cD@r9rFCN+N2vIc0ux#pZXP z7PaA6W_%~4F&e!2>E=PqP z)k0P;eOuH_>iO$fN27P;s07~vJIT~L@gKSMzs!VRGrfkRrAA6;}D3#y>3&sD|H`KcyQuHHj^a-w0s*OJi zkp3{TO-|SgM~0kG4C@SatIbV%KS6xQdRXdMpBAG~Z=_$>`@(cZ;IyJ0_OEHSthjo^ zW11Q!KhnCXCMNMo#7{UVc~4Y%Nvy4&)`MHOPiqTu$%MTCGBOED%)OWI+y|*6?`d+Q?x~M_NEQ1hB++6E$Kq7q7%&d}InVPh9 zP+*PTrgUa`^)b$s&5#M;tSxX!qZ?*FCFOc{YbkJS0HqYO33Z>oafz4GM|DaxaS1h1 zY7zIMe%p*9@6T~!VHs+iph1JH2WLo#*tkEM7Qs)Cz?zt#xuuri&(J@pIo3kv-KZIXr7MTXF7 ziyjvil)uJ`o|~I+cKVrG$K#{f(mHq$jW$-%T@v*SLrRv#@L`rQ{*itK0T@u!|-p?>@$+tx?1^up)`_O{;=fj z0A+eSZBa$0@$rARb@|y_%ysX!H z@t-bnzmzt2s9IWejRH+d7O&Vly=f`Ytqsk^;AZdDL8?Lc9i1U-MyA3--Ya|= zjRJo$ZH|545Uu{Ym8EoixA7vlZe`656iZT9dXj|aXo_iuJtLdTD75%X`UOainnlY{ zwrqqAHNvK4)^67t*0ly}#v0nebP>%rUY2oL?N~vNNyUJ=3eN+9L$0sX-n06RQB{d} zYBU;rO>yij%fOZL|AJI_|YXYU)lo-{a$%XpGD{iK<^b`0vyh#pCUS6M&;DSMe@*|7R$y5eqab9O*}++o<~_Oz;$*-ne;+W3jqa!p;L|rt^V>{-p~!oj zV>wE{Kq4fxNiY6Q&!OzAU(#QY{ND;#rcdqbSuw`6<~3)W#|R_GM*^c@tQ0MrU#EkD zOB?AQlx$b4bINEjt&sKJ@gN%ZnDpq}pr6`Tq@0-p$|{3xY#CZvOj^}mrfaWN)pX;5 za zZ;v|hj)-2q$Rc1eJ@$4VSevMx5|9oaf=*)6S#6SaGFrXp>LTXfeeW235{0Iq+!D=W z(075e)k(=V7w8?0>eZ7@Hk4gvHq1t5CQpnC2Av+>#ub>?n4(~9+0w%mPS(G3fhR=6 zOYRG_*J;mUs5a@5MkmvC?0L=KYpLCml-tePQs#V+CG~7oY$&tl__6;o`T+*>Wo`|9 z0q>90z->1_PPe4MjUJ1V2})6H2cVRE3C5!nuw(V7 zBi78}twGD7{Y74&3kRcm7nfEy5p6y%ZftI>EcAJcVfqK8Bp-@R($D{(1XWS-vFd!h zpQt(FZN-v~hZ4n&93tyC6p@S%%@Bq7aNOr45UEVV{ zy|ljGTRgqgTh=RnZ`dU;H|P6qb{VT~GbBmqZE1aJ1(!nL zU^e~Po64vZ)-LfDdi5Uf^m(bW4AvWHEd544sMpj5s|M>aY0%zAQe%%x#tu+A)Y9kb zT5DNa3-GKxiCqFA$7bLR=?!iuir-F3GHsH#@rmx zNYleeK=jp8;R2O^u>V zu*ga~F!)kuKB_odfio;h>{h9(QJd^8lAF9BP8U;7&}zqyO+lN6)GwSx~LME zxOI%aKhplNVrh9>pA~_!&AU&}Jgk6I&Q=$QJFRmgWM$TDak9cpPOLUR&SV?*Ic=B~ zb9$n!iXvfxMLq4VTcVMR7>o27I<_jt^Iy>=%8CQUl!|aT$j;qov{_bYsA%UdCPHK@ ze7RO=MT=sL3kQvCUFMvN6(hPUVw^gpL={l=EIMNQ-ASoytgFTO_`>wp+TYd^{H^9> z$1H{`m~$d(+@qU6ha`u>~rX#wS{hnrSnS5C}<5k0ck_oa!86~{+{={$WC_axzdB--!tY~8(BmVLMGg(Ji$ z=U6tzFK19g>y08j8%d+-eM5^JYR>DAb1wxAeZ4NcX>f=i{jXO9vlcOr&JPOyQ=SW3 zNRu+}J~(4yAeu+3Ibm0Z?mf6d^5yFi`I3!|cjQoGllwGe@s#A$(@WSmu53|Ffxqq^ zE)aT)=~Qp!EL}n=&REE`JXHHHFh}DCi$`@XFH(6_;#GQ2HcG2k*>u1)Jc^#4$5AE# z#b!CB!Ua0kDLm=cj-aJ|dL6eu z`$OZ}^os6ztUTT!=25BS;Sp_Silu2>Xyz1C)MBc_8s>)MBP^*(O8RG{7V)%IovW=R zEupzHQfvd$Z_p!q%OSl1)zeQrt%J=&9VY&JT_l>*ZR_-Xrk zXctv=wS|L9xCi6Z>Uo?1xl3~RZFUL$#A-p`3?gjxxk^0kXe8u9du zR2DA8*&a3`-Uq=ZI%0%eCjLU&t+6S1!0-@XAO_eF)aR89vl_H~S(TB0lf3eZpgr84upIG5;=l}-oY z<)Lt~3N`1xYHwO`DSU}MOUIn*J3@<-L(? zNm?UbR$9%wsI5lhe#_8C;08>?oZ=|1D5eifJ>k>ic+=wpIgN<*oMie_Qs;l4WIf%y zmB9F?NX9pY8*e8OYy0m?woh8NQ>4Kd9p`H^j#X@!(QNvMbVqMB+Lx>p^z>lsi3IzL zp$$s9CR#MWtr6SeoEh%`Z`l&U>0OY*O=XQ!(z`s5;-qVb>b!~ZI% z^>@;YqBl@|8yj>M5E~3z66p(ITWBJu3P)&1?7>}XK4le<>Ey|WiVV`Utw`T2CDXEe z+`*=*1dU-RW1%cY!ytlCvf3n1Zu^1HOX z)>=R_=o>1pbbnK1)t67Z(KFxa^qZ*-frX#+HeJ%J^{m;5Uj`)=Tx8QLzGm|7Eit7x zq&41WS~=1$D$#4B0~TU~eEY2o4HL~CkMp{WS@~Ox%U>knflIbw^5au)>+a%C43j~q z|MiU{kB@KJ$j#xYRrpFHrh%_DQuS7AQRgLeJFo9;_u^ybZU9967qA(UUuk3UgO@^i z0%6w#?|ct1%~1z_r_`bR3sW|t$lNS4a;6Va~+UfSkhn7S+a`7y>fdWRc=*> z^k?*F)MBa@&80sW_4iGxR!-csnf^~{3@|O*ET<#wM@?TVb%tl;ObEL`DRM#kvI09n z=})GQ36>uEyE?Y&NJD}2pls3>K5zHWE2IK@i=Bm#;C`u?S|v?w8Z>3xE@9q=!0GL3 zkZzZ>m5AJcRw2TrrEuly(v z^z;Cn*3F|?3yrdHSp)%8-Xg6XJ&5E>997ww3uJ5KLZ4rv(yfk8O^uCKPtdYcB$w%* zM`kEP){VC5Xc6#p#I{qhQhmVtBo%jsO0+2dS6be>67-Xnycw^lSI+RLKCtP7?J}hx zD622@C$8;+G_yu;k(*!EOTxaKH@K3cezrC)iTVtxdE0}Pu@A=iHj=lP@??eR1NjOU zqDY=X$qfx-np!q;$)AjVMdH|rG%v(522D&wZ5}rdtoQ&`T)I*f%K5I>6$rf==~M4C zie)=}RCjBZkE0s}SyNbHjEmFf^`zOV4==Z@n?*lvS_`UIDf&at`xCWr=5c40o|y(H zFnPvHi311!y$J%Y@-!@{hSHynPDvSl!%zcFkMRH0PCwNF1uLDCtbW`#oLijdyOnGu zSIJijm13n-DOa3K#c?W*TXC`#Cs%Ru6{k>fiWR3+amp1pQ*oV&>sH)s#m!aRe8nwP z++xKoRorqVo2g`-N){@!m29q(%~!I8O14oJ!8Em+nJPgWL@`XyiSjm?v`EsR@sT7<_!L1asl|rskfW3uEp;#%D zDur^Tn5h(^9)YapXC29r=!&N8Tg%!G8`M=)i*xTf|b>A;f?TcFE8T%g-PTki!R z!0!$m@4)j8T<^g54xI16`wrai!2b>iaKL~A3LJ3YfCL9DIH17+4-SZMz=Q)T9B|=) z3aKVQQK3wqOf)5vbxZuMD zA1?TC!G{YzT=3z74;Os6;KKzUF8FZ4hYLPj@Zo|F7ks$j!v!BM_;A683qD-%;ernr ze7NAl1s^W>aKVQQK3wqOf)5vbxZuMDA1?TC!G{YzT=0_{f2e9QeqAj~w{O zfsY*c$bpX>_{f2e9QeqAj~w{OfsY*c$bpX>_{f2e9QeqAj~w{OfsY*c$bpX>_{f2e z9O_37eB{7K4t(UmM-F`Cs1Kk{fO-My2Dl#pj(P&>3aBrj&H#Mmz()>zzzz zzzzqYOUE;G+ya%HX36 zKFZ*u3_i->qYOUE;G+ya%HX36KFZ*u3_i->qYOUE;G+ya%HX36KFZ*u3_i->qYOUE z;G+ya%HX36KFZ*u3_i->qYOUE;G+ya%HX36KFZ*u3_i->qYOUE;G+ya%HX36KFZ*u z3_i->qYOUE;G+ya%HX36KFZ*u3_i->qYOUE;G+ya%HX36KFZ*u3_i->qYOUE;G+ya z%HX36KFZ*u3_i->qYOUE;G+ya%HX36KFZ*u3_i->qYOUE;G+ya%HX36KFZ*u3_i-> zqYOUE;G+ya%HRX@K}=LKU<4nSs${?kJ}_CyfE9dTx{?7e_`rlE17Bmw^LK@wmPvtE(_hxi}~u!s+m0FU?}2{4Hd zk^q;OBa;N!#0N=$PkfLB7{v!kfKz;s1X#t4nk2w0K1c%0;)5i>Ej~yB?BatYz%Sm@j(*c86PA8rZHP532==Mk^tNIAPMk|50U`m_#g@596ZtoB;alO zfCPL(ACQ3M^Z^Ozrw@`K&hbSbBte|3kN|P6f&#?33JVbD92nrp0EY%RHo(CFjt+2m zfa3!kAm9iAhX^=Ez(E3z5^$J+;{+Ti;79?73OH84!2*sJaJYcu1spKohyjNTIA*{> z1CAPS*nr~(95~>}0f!DacEG^{jvjFMfa3=oK;Q@hhY&c1z(E9#B5)Xi;|Lr`;79_8 z5;&H?!32&ba5#bE2^>)1hysTcIHtfs1&%6kSb^gT99ZDU0*4kjw!py!jxKO`f#VAt zVBiP?hZs14A7GGT4fp`(6m7r9{8H?{8g_`)j6mBI#ri^0|abN#sRjY z25nB#0fHJ_=j0tAs6m^PdVrt?*E!h-2x@ShlYoGr2G=<`2ncF$os))upa$1DnFt7K zaGjHkfS?A~Ir#`oA!=})lahd-2G==R2?%O%os*b=pa$1Dxd{kraGjH$fS?A~IT;EF zYH*#Cq=29X*Ex9#2x@Shld6EA2G=>+3e03`aGjH|fS?A~IXMdmYH*#Cwt%3G%)p9*2I&k4Xpqo= zfCecI2xyShfPe;R4J zpazXjt^AgDp3lMR8O28~Wa1cDkgIyn&tYS8GUMIfj_qmvnd zpazXjas-}>8g%aDMAT0v{4H7dD&>%Gf0S%Hf5YQk!gAhm!+MEmx1T|=Lk~9$1pv}qCKv07=CshMM z4ceS+4Fol4a}qWX)S%7D*+5W(HYaTZK@HlR%nbxJXmgS`h{V*O&B@p)P0HYc@%gn$~f zIoTZuYS88+cp#`jo0H>#payMDng@a!v^kj`2x`#gBzqvJL7S8BfuII$PRa*@8niiC z9|&sD<|KZQmq3Hm4+Jzw{y;#3^bZ6yNB}`VgA@>w7;4bwWPu>4L7S5Zf}jR%PA&+7 z8nij-AP8#E=46B*s6m^P6oQ}zZBAYYf*Q0rsUZkz(B@=^AgDo`lORGaMGe}V91#RH zXmip;5Y(W}$rM3QgEl8w1VIhjoO}@kHE45EMiA7X&B+=;P=hunaRfmP+ML`G1T|=L z(nmapayMD)(L_dv^j|<2x`#gClv)j4ceS+6a+PBa}rVz)S%7DNkLG9HYY6wK@HlR%oGGQXmgTN5Y(W} z$xlI0gEl8cg`}Jsv^iNS2x`#gB&r~&L7S7Sf}jR%PPz($8nihXD+p@P<|M5ks6m^P zw}PMsZBFV6f*Q0r*((TY(B>qtus47PDJ%$Rki>$325Bq^XpqQ)fCi~7Y$T{bo0H9g zpayMDLJNW#v^hAfv-u5oTMLeAis*lL<6mBk{~uXdP_CBys^^wh;DML%$d|q& zCQ`xuy2c;-P@7S%ppa&Cq&z%0f-e9JmGPOIu{o8svIlS$7QmUP4o~9Yc0ifky+O%t zfI2p1uWBy^ms$A2Z-$kJtHZ;+BmLz8Jb2S1>=+-p@rEWZ1lnmS`xcG-_!`859!MGK z9-mm*(?2pbzNSobMgN&!J)A^^6?@9}v;tuZA1yj6OTSxY%-HDA&?!F^Rczs1h+p{61ur$Dk3fX?tU za=l|?6Xk))$+5ngWIuNd3NJeVetDMOJ66!@>T-O32;c6i{etdF{~&(_S}85<+)V5G z>>2KxwmwmHT3vzHJLU|m6?$X8kOtLKr4x$xauP4iH2R6MT<@TUwWA(>ygELZNKohO z8PcF^ytKIZcn+*apk!DRl)HNcWMR1vAoj{)taKgO}1h|7fi7*#SV!_5eMu_(%@-4vugj`L^XTo#AXsn3Vl3=Vt;Z2ZxC@ z2Utad(yB4sD+iF_Q;j}=WS@e+ZoFC=d7SEHY9tEaB@iC*~OSgnWfbU+*|G zaKkUqdqASUh-5ZwHWpFzR4x_bq_NsQf$&E0kl25p`PXvY>T z%`9p3x;dYFeo%Px0>Ed?N4gXCMw*Yj&?}sI5#Tbez@*+a#KekF`ad!4IirUgeCKV z<%oQCrnS1{Btn)>t$PJt_~MB1)A6Ceg||kFj6#2PWRF<6mS$EJE#k7HtU7mofNP!vJt1Ho}7)4CyP&fu{P8y{s~_V1n2vL~G;=gc_?8b1j;!Q?k4Okq!-tl__}}h{$#E1Ea^A|> zXvHxiYEo1sHfjzN^2mA?L(88P0#(XD%|tMCj-6w8F0KbdF;$uD!Shb+_nDzvkTcLi zPiIe)WxV6RVS*od<*ztBd>gV1ZJh1rcTCF;SnGwKaa!;u=l}r_}o!9YDrF&xa;ACZhljg*5*m44}!*A`)VuX`} zJ1?!4WCSa}vN8()Q7*EmAb=bPfNWtOnMd?FG@9VpBHHpgXlF~9BbE^D9+Ov77DCgp zl~0ovsN?2p8tms#932Q)jsoy0o##lJ9&56Vxie5Jhc!orLY5k5xJbzQmYoCw`j>5e;cwC*~ zX;Q%o>k+$q$0NTi{9xu0ohPgXZ}D#WcUofD3ycf_h7kz&Y$iuXhbGG7_$u&3FUm}+ ztIM^&tQNi z8X8<)uJIVrvYIz%|L$nT_0*S}PSM5!>-{G*DsMoeney-UIcv*)C$<|mClqz!=0qU8 zrn8?-3InxUNC*Na71KAb&-V-T${~7ia!~|x3J?y>J_fcd9Gy6|FoZcRAB3%_K`)jS zhA^iCB1c+)UR3*W3k97xqbPzoGvCj!l`!Z;xiEw|3lKS0M(v6ux^Q+eebWQ|1=(k1 zbg383UknH2poeXEN?PId;(s7r1SH4uut+Vbm~OQ$EDRxQ0pZxe*j~hcPkZ7qx_p5I z?1E6paz2n9^%>dwT;nay3kEG~0G)|8bx=q86C2yy)uCIEbJ0TDEA1_Fw)LcD${UnS z0?O0j^Tc@*WnA8hT&|f2gDc~Haibj`w>+!D;K~?qL+wb-2>fxrJ)r33uf7$Wo}vzi z!UR{j$jm2=SOnJFS>++QUWmeu$6_9Dqdb#f}Yr8gKBU)})x z{1M;uLfsLkX#RWFcm=LNSjs+^-hqGm%d{9rV4!r8{T#lR1|Ja4dz-nQAcI4Ms(#hbShz2HZ~A#0L<~IEGvT3@^J)GgioZnN?7C zm?gfN)cINN0OdL3g(1uYATqEh+6!e-(22>S2xcnZ&#-(FI&p4c2(uax8PWkA34Lfv z))dn>=jGGa2QB3MV*2I+=;xS^mRp1s))s~^7Xl*3d{mYdow%qdg1Hz784@#{33VO{ zUAP54rbxupUxO6uWLQs4gn(!u|CNSDx%l6zbLk-D0(NK{Er{N3({SI$Xay_7m z*x!bFbn7~QSn_sY72P+PYvCjvjB%Q|ll1DrB?bMjxfB37LYYm#;leK~3}M~~h#U!p zeKzq;#q`bP`Sff228Q5@V*2LI(05!-X(6;5yYjc>*EMg2u7kUtHZv2*wPtUI@whS! zu6Y}9J&=Lzys%sq7T;VAe8;m>X~uhCuzvtMKy3C#D(6KZL`%x93EY6W8xAq;p0IVw zHW#RV%omb;6iAuMGExTVrl&W}M`ofGxeKj0W{BPUPn#+U2}k34CLbn4bo_AO2INjO zkTYaPQ#mU1yu$;Cd0T9Mn( zN~X&%DOYRkIX3hD@NLMgXro9X-PpOBTi~^`-f~M=>rGD(+ziaD&r&2{>a$PgeSY!e zy})zaIZNZ;ns4Em_k=)|bwG8zQIMvujRZcn?r>55-9h2yCctMcTu+z@dNzR$zsonG z+z3QR*h@3QZ4)DNL*NGFooFCyDxEOOt*NwmM;KhW9=KUk>4g5aJy*XjEWW%Q_+d8H z<}N@xDo)Z&#@H?+7Gysh5M1u`Gbpy_jTiFG9l@aGLxA=$6>YEU&(T?K?e?(v@&Megm6@9`Rl=&o}90x6qv4R!(mcyq! z0hxOMhPi_7{jxaQNq_23N}{jEO>DW3@hY(5KM55Bk2QN+4kKRRB9~W~Q0X4E<5{7y9}&?~vx}fK2n< zqxR!kf0L(vHAWur3~2rxfN7{EXAf&{AIgJ%@ys`X=eT9$$O~H5e_s?I;AuC6LN*(L zoQAY z2bl7o0m03W0A6ed-FP`pe(Vv<`~+ZWqI~-`&Ys2Jmy(CQLz>+qMuI$0ye)X4BR?fYp zAKMIFpR{^QK+7x5-#r1z-vE@Uj;8%GY8SL{JpR|2Xhr^lRvexnadZ>j&QLPmJnbJ- z{tV1aFHfW%bA~k#MCMPSTac&Fg3p?zMkR>-fSq|Vd>isdw6SmJbFO;PW;7+D(fvbq z9r-PEiuu=MZ)JW5;B1A`^&bM?{QLa6W_uKS`FwM)k*7DEH_S#e^E=zeuIaj=^z%s1 z&8;fiLDf;-WLr%`h_=*ZJtru{A$Sq(Cg?OGPwG!yg|t`0af)l%I#~Vl_#&&0w4P<${)YJ>eA&~Z|d?HS+tSnDk8b- zs?wV;y60QD`mOo6-k&y~`Q(LBzh}Tn$)}FrD(bi+Kuz<53D=a`_(8e(6@xb{K6+!9 zBb!dsL{ka&JMTT@>f?{u*j3=&mi1e%dHh9BZS2Z%MbBP|#IfY9J)g)66T9hW9v*)1 zV_QAFvCDhW0z7-^#$9i@==6u&u01z&c|4mmrLjkUK6clJF29Vj?P{8& z+2OO*!8c0rcD-cYmDle0P^$Uee)GkQyqPyz`ql2EPkdlwSH6eH>?7KpA0pc?;UTip zvv=Kj@uH1gj-7yxguZBGzveY-pJ(6x$ro(uauDuTf7;4VsDO;Gd~?RpCtpU#?qHXj z8)(UTV(ZtGkG~*txOt*ZtM?Z5-bKLlDG%E-hwn`Mr3p-g7AuBAxd*0(LALaDzBb8Dtkv0AY&bU2|dJu z2F;+~=id9IJ9oPdu^^41I>!S2N~Qz|v!Y?v`(ctPtv!GHr$6dDfZIXH_H7e&U%W_q z<%0Pex!^sRU14nsAesU=u5Q;kCH;0~{Z0P)bLW=%C;M%|c?;)0i#{a7>qELN(WQtV zyz~brJ%cD29)3_1-9edOE+L5f|m+(t9R)E0Jv@JudXx;aiS*tcjB#4IqJ1wsg&8r;j>ofx=Ovna!OFgV9 zUAkuW7nW`8N;B)*CvVgCLO2`KtSCsCv?<-aWcKdL)`2oz~f_r0HH`RyS__n9_!uhc5x?=kshmX&mM} zF)JdG9Zo52e6L*-G_#-Vx`P~rr<6uCrEx6p484r5d|)p<|Ia-U2@$^b<#W6DM=hn{ zTw@U>DKOioM@s$QT>IfO(z!hcX7kasXs{0zmTff56qZH9vV;6;U3N)fxy_k}%@+y; zRMCK%X7o~rBU}AT3aB18LIzdQpz2t~(O|d#6;ZuP^yx>XLxO}-(ILqeN_9g|p5gjm zRU@9k=bbVmmo5A2=B*ye!wBfoMIm#6X`C5bXk z{q|0|Wv3GhEfOG45zSMwZZH$JzB)}UgKL&vwPm|1iV4Ey1U6a8krODBX7)PZ!Dy2m zDkrc3Fxb^YyUX^J5ac`>&_&1F4O4G-WuYY_odHXyJ`ula`GlVqKS`V zyVpD;9do}yJJp^}GCNHk8c{*sav<@M1LDZ^9x%HhJvJ})>W7Xf4 zWJad>N{$K$UFrxFq0<#hRiqhCha=TdXi8UX10EK0v!`Yl{ldv*Rs;us!u^5%v!akt zB-w~%LN;dm$b`Ir+3z)JHc{l4s?&{@!3?HVqG?s2{6#c>$(d@!Hf-kBZPr8~Gh`+s zn#mO5Uep=kh~0bMA;t0z(Y(WF&ffNN-&ejrJMsY@9GNbV+I|2dt653L$euEBu(VA^ z_>_r*g->(i!4X4ZFXfq~R~))K3sKXAraX~eG}0Fe(Uwv0FfUpIoXk{!6Af@h0+PlM z8<28drGv+*eNNguVD4Fb%C?)jiu+qpf9uHmGwmGh@$(NJUlF+m2lJWO@^#nw1w@&>h`T(|2TatKrvUhQ+=IMu}~ozDi)-evGo|JFj{V=VIoIQV$ntv=77#U zY4Mbez4E+;kL2BK=*HdNw{+a0Xy>-^x@l!)lp;s@#b3@jKQP4!cX0DfM@L)lBH_KU=CTJwJ(JAfhj@wqZRgo=L(e>(8jDWFDg2y_^8SAE35N!F!R2O4i z(V!_BH0N}ln)QiYn~5;T3)f9V_Y@r^v1w9|7Upfk9xuA@F}(ehmETQFI3}YGEAMZ< z^u$kRe-GHfG6Z{E?jS1Sb3NhFm6kGDeO9$J{D&iWRGvS277cs2s8=}b*=u?Srci=CpevtZB@4SH!U9ba41;)uP{ zm!}j^(V|ooPEd>EeI6<|Z@|!qGO9&3r1srz-HF~0tkflJfLZJF#XtM=b= z&#Z?+1Y*%Z93o7LhRHO$bjJZlgCB~0y~UJ1y=241sDtv5Mrd?v;Y76P+%X9{2Q>|m zMfPf1j)J|~(!D36y^sgbX-iHWe#mZ!(m146&uLjvAD+`vd5#{Z>1bQeDe5^Ld|{eK z5-U#YR~fRxC#Kewp{c%Vc`#Nl`@n6d-nun>azMW?>h~Qx;3V&;^Mkv|r}mYfbNiG7 z#?}=AW}jdFDY{$bSf)w6u{&Gw;HyP_wPUHrJCd;Nu=}La7r(pkS=eYeR*nO%{wPD~ z+k4%x{-lkm>WcEXV+rn#ZBgw(nRYB=zG*H)b>+_0plC#risH-cE_E@acT1s4q?P zWpSS&B}ze)zYA*T6yh`dXw}Kl0Yy-+@Zf zV%dG056&#V=E2^d;bDv1zF5>37ca!n@64LgONO?44gzM@)F;8&=#D^_h%NTm=bTMj zF=z4N^DQ}(hg8uX)>D{R1aTau*$C3gCLc7l^WUF~cOUXlSuw|C*=Z$air~fbJbj>> z7agj+s#&%_W%cOz%E6KT%IMg6jXy>XBJP$G>>Mw>)}n(MiNJPW6gUFs{!m21U^OBz zmc>BtNZ(L(JaS!&Ua{-9uoL&N?%GmKrR#6G_g=ISBovE=;&l9zeK7y1$KH3-N49<_ z)t3}v6EUe|*p^jmm2jb~Kr|~T5QjzMaMsOsLiW=>5xxIM+g`}SAnyTHN}dC%gbb*n z0o7kPlo<$zqT$eyt64|g!j-jFXKK-!mw;%)Yu=j_v7O`dW_^0y)jMx;y%^d0J2e)H z=h$kgJ5RCIe*7X(Y_(+w%RR>K1}z-_SfKgw0sTLk{ftenFGN^VrQAo@$08jyFnVYX&^4orHe;rTcIfjDpwehVCM4i6krlp^H>Kk4AcXpC3 zF;wfuA3gl==$j4Mw6$Ek^y`HYHJX7$pS}a#uw_Bs%LA4Nz3S105r*ST*}Cu6(HI=A z-}LbLNkUuF=$QNMdexHW*xEmz;ZV(ijT`nFG6K?@lS;pESUd?5O@e&(Iys1o2JuSg zrC`UqK-4wLQG5Ezg`VHoXC>44Ajj@7A-vh>nKd6t2yYGe=8e660n%dx6^)>d(Vk|| zgl`KqMRuSyom5kzwYU*TIyUc , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "rskrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -void io_set_cpg(void); -void ConfigurePortPins(void); -void EnablePeripheralModules(void); - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - /* CPG setting */ - io_set_cpg(); - - /* Setup the port pins */ - ConfigurePortPins(); - - /* Enables peripherals */ - EnablePeripheralModules(); - -#if INCLUDE_LCD == 1 - /* Initialize display */ - InitialiseDisplay(); -#endif -} - -/****************************************************************************** -* Function Name: EnablePeripheralModules -* Description : Enables Peripheral Modules before use -* Arguments : none -* Return Value : none -******************************************************************************/ -void EnablePeripheralModules(void) -{ - /* Module standby clear */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */ - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */ -} - -/****************************************************************************** -* Function Name: ConfigurePortPins -* Description : Configures port pins. -* Arguments : none -* Return Value : none -******************************************************************************/ -void ConfigurePortPins(void) -{ -/* Port pins default to inputs. To ensure safe initialisation set the pin states -before changing the data direction registers. This will avoid any unintentional -state changes on the external ports. -Many peripheral modules will override the setting of the port registers. Ensure -that the state is safe for external devices if the internal peripheral module is -disabled or powered down. */ - - /* ==== MII/RMII Pins setting ==== */ - /*--------------------------------------*/ - /* Port Function Control Register */ - /*--------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x9A; -#else /* ETH_MODE_SEL */ - /* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x82; -#endif /* ETH_MODE_SEL */ - /*-------------------------------------------*/ - /* Input Buffer Control Register (ICR) */ - /*-------------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set ET_ERXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set ET_ERXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set ET_RX_CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set ET_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set ET_CRS input */ - PORT8.ICR.BIT.B3 = 1; - /* PC0=1 Set ET_ERXD3 input */ - PORTC.ICR.BIT.B0 = 1; - /* PC1=1 Set ET_ERXD2 input */ - PORTC.ICR.BIT.B1 = 1; - /* PC2=1 Set ET_RX_DV input */ - PORTC.ICR.BIT.B2 = 1; - /* PC4=1 Set EX_TX_CLK input */ - PORTC.ICR.BIT.B4 = 1; - /* PC7=1 Set ET_COL input */ - PORTC.ICR.BIT.B7 = 1; -#else /* ETH_MODE_SEL */ - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set RMII_RXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set RMII_RXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set REF50CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set RMII_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set RMII_CRS_DV input */ - PORT8.ICR.BIT.B3 = 1; -#endif /* ETH_MODE_SEL */ - - /* Configure LED 0-5 pin settings */ - PORT0.DR.BIT.B2 = 1; - PORT0.DR.BIT.B3 = 1; - PORT0.DR.BIT.B5 = 1; - PORT3.DR.BIT.B4 = 1; - PORT6.DR.BIT.B0 = 1; - PORT7.DR.BIT.B3 = 1; - PORT0.DDR.BIT.B2 = 1; - PORT0.DDR.BIT.B3 = 1; - PORT0.DDR.BIT.B5 = 1; - PORT3.DDR.BIT.B4 = 1; - PORT6.DDR.BIT.B0 = 1; - PORT7.DDR.BIT.B3 = 1; - - /* Configure SW 1-3 pin settings */ - PORT0.DDR.BIT.B0 = 0; - PORT0.DDR.BIT.B1 = 0; - PORT0.DDR.BIT.B7 = 0; - PORT0.ICR.BIT.B0 = 1; - PORT0.ICR.BIT.B1 = 1; - PORT0.ICR.BIT.B7 = 1; - -#if INCLUDE_LCD == 1 - /* Set LCD pins as outputs */ - /* LCD-RS */ - PORT8.DDR.BIT.B4 = 1; - /* LCD-EN */ - PORT8.DDR.BIT.B5 = 1; - /*LCD-data */ - PORT9.DDR.BYTE = 0xF0; -#endif -} - -/****************************************************************************** -* Function Name: io_set_cpg -* Description : Sets up operating speed -* Arguments : none -* Return Value : none -******************************************************************************/ -void io_set_cpg(void) -{ -/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require -changes to the debugger and flash kernel BRR settings. */ - - /* ==== CPG setting ==== */ - SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */ - /* I Clock = 96MHz, B Clock = 24MHz, */ - /* P Clock = 48MHz */ - -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 5451fee0b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,268 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000B678" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000EB60" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "000000000000EB60" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000FFFFDCDA" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000B678" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017FA0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8B4BD" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8E6D8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000040000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "00008A613AE30000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "000000000000B678" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,48" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "247" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 252 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 252 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 441 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 11 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"Unknown Options" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"TRUE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index cc95f9211..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial=E1:_9KM000237 -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h deleted file mode 100644 index bdff17965..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,14211 +0,0 @@ -/********************************************************************************/ -/* */ -/* Summary : Definition of I/O Register. */ -/* Version : V1.1 (2010-04-21) [Hardware Manual Revision : 0.50] */ -/* File Name : iodefine.h for KPIT GNURX */ -/* Device : RX/RX600/RX62N */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* CPU TYPE : RX62N */ -/* DESCRIPTION : Definition of ICU Register */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* for example : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* for example : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* for example : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/********************************************************************************/ - -#ifndef IODEFINE_H -#define IODEFINE_H - -#ifdef __RX_LITTLE_ENDIAN__ /*Little endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short MD0:1; - unsigned short MD1:1; - unsigned short :5; - unsigned short MDE:1; - unsigned short :8; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short IROM:1; - unsigned short EXB:1; - unsigned short BSW:2; - unsigned short BOTS:1; - unsigned short :1; - unsigned short UBTS:1; - unsigned short :9; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short ROME:1; - unsigned short EXBE:1; - unsigned short :6; - unsigned short KEY:8; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short RAME:1; - unsigned short :15; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short STS:5; - unsigned short :1; - unsigned short OPE:1; - unsigned short SSBY:1; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPA4:1; - unsigned long MSTPA5:1; - unsigned long :2; - unsigned long MSTPA8:1; - unsigned long MSTPA9:1; - unsigned long MSTPA10:1; - unsigned long MSTPA11:1; - unsigned long :2; - unsigned long MSTPA14:1; - unsigned long MSTPA15:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA19:1; - unsigned long :2; - unsigned long MSTPA22:1; - unsigned long MSTPA23:1; - unsigned long :4; - unsigned long MSTPA28:1; - unsigned long MSTPA29:1; - unsigned long :1; - unsigned long ACSE:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB0:1; - unsigned long :14; - unsigned long MSTPB15:1; - unsigned long MSTPB16:1; - unsigned long MSTPB17:1; - unsigned long MSTPB18:1; - unsigned long MSTPB19:1; - unsigned long MSTPB20:1; - unsigned long MSTPB21:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB25:1; - unsigned long MSTPB26:1; - unsigned long :1; - unsigned long MSTPB28:1; - unsigned long MSTPB29:1; - unsigned long MSTPB30:1; - unsigned long MSTPB31:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long MSTPC0:1; - unsigned long MSTPC1:1; - unsigned long :30; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :8; - unsigned long PCK:4; - unsigned long :4; - unsigned long BCK:4; - unsigned long :2; - unsigned long PSTOP0:1; - unsigned long PSTOP1:1; - unsigned long ICK:4; - unsigned long :4; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char BCLKDIV:1; - unsigned char :7; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OSTDF:1; - unsigned short OSTDE:1; - unsigned short KEY:8; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char RAMCUT0:1; - unsigned char :3; - unsigned char RAMCUT1:1; - unsigned char RAMCUT2:1; - unsigned char IOKEEP:1; - unsigned char DPSBY:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char WTSTS:6; - unsigned char :2; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ3E:1; - unsigned char DLVDE:1; - unsigned char DRTCE:1; - unsigned char DUSBE:1; - unsigned char DNMIE:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ3F:1; - unsigned char DLVDF:1; - unsigned char DRTCFF:1; - unsigned char DUSBF:1; - unsigned char DNMIF:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ3EG:1; - unsigned char :3; - unsigned char DNMIEG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char PORF:1; - unsigned char LVD1F:1; - unsigned char LVD2F:1; - unsigned char :4; - unsigned char DPSRSTF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char SUBSTOP:1; - unsigned char :7; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD1RI:1; - unsigned char LVD1E:1; - unsigned char :2; - unsigned char LVD2RI:1; - unsigned char LVD2E:1; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char STSCLR:1; - unsigned char :7; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char IGAEN:1; - unsigned char TOEN:1; - unsigned char :6; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char IA:1; - unsigned char TO:1; - unsigned char :2; - unsigned char MST:3; - unsigned char :1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short ADDR:13; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char EXENB:1; - unsigned char :3; - unsigned char BSIZE:2; - unsigned char :2; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char EMODE:1; - unsigned char :7; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char BE:1; - unsigned char :7; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char SFEN:1; - unsigned char :7; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short RFC:12; - unsigned short REFW:4; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEN:1; - unsigned char :7; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char INIRQ:1; - unsigned char :7; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short ARFI:4; - unsigned short ARFC:4; - unsigned short PRC:3; - unsigned short :5; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char MXC:2; - unsigned char :6; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long CL:3; - unsigned long :5; - unsigned long WR:1; - unsigned long RP:3; - unsigned long RCD:2; - unsigned long :2; - unsigned long RAS:3; - unsigned long :13; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short MR:15; - unsigned short :1; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char MRSST:1; - unsigned char :2; - unsigned char INIST:1; - unsigned char SRFST:1; - unsigned char :3; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RRS:1; - unsigned char :3; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char SHORT:1; - unsigned char :7; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char DTCST:1; - unsigned char :7; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short VECN:8; - unsigned short :7; - unsigned short ACT:1; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DACKW:1; - unsigned char DACKE:1; - unsigned char DACKS:1; - unsigned char :4; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long DARA:5; - unsigned long :1; - unsigned long DM:2; - unsigned long SARA:5; - unsigned long :1; - unsigned long SM:2; - unsigned long DIR:1; - unsigned long AMS:1; - unsigned long :14; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DREQS:2; - unsigned char :6; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char EREQ:1; - unsigned char :7; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char PREQ:1; - unsigned char :7; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char IR:1; - unsigned char :7; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char DTCE:1; - unsigned char :7; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN0:1; - unsigned char IEN1:1; - unsigned char IEN2:1; - unsigned char IEN3:1; - unsigned char IEN4:1; - unsigned char IEN5:1; - unsigned char IEN6:1; - unsigned char IEN7:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char SWINT:1; - unsigned char :7; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FVCT:8; - unsigned short :7; - unsigned short FIEN:1; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char IPR:4; - unsigned char :4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IRQMD:2; - unsigned char :4; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char NMIST:1; - unsigned char LVDST:1; - unsigned char OSTST:1; - unsigned char :5; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char NMIEN:1; - unsigned char LVDEN:1; - unsigned char OSTEN:1; - unsigned char :5; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char NMICLR:1; - unsigned char :1; - unsigned char OSTCLR:1; - unsigned char :5; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char NMIMD:1; - unsigned char :4; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short STR0:1; - unsigned short STR1:1; - unsigned short :14; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short STR2:1; - unsigned short STR3:1; - unsigned short :14; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short CKS:2; - unsigned short :4; - unsigned short CMIE:1; - unsigned short :9; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char :2; - unsigned char TME:1; - unsigned char TMS:1; - unsigned char :1; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char RSTE:1; - unsigned char WOVF:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short TOPS:2; - unsigned short :2; - unsigned short CKS:4; - unsigned short :8; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short CNTVAL:14; - unsigned short UNDFF:1; - unsigned short :1; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char CH:4; - unsigned char :1; - unsigned char ADST:1; - unsigned char ADIE:1; - unsigned char :1; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char MODE:2; - unsigned char CKS:2; - unsigned char :1; - unsigned char TRGS:3; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char DIAG:2; - unsigned char :6; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAE:1; - unsigned char DAOE0:1; - unsigned char DAOE1:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER8:1; - unsigned char NDER9:1; - unsigned char NDER10:1; - unsigned char NDER11:1; - unsigned char NDER12:1; - unsigned char NDER13:1; - unsigned char NDER14:1; - unsigned char NDER15:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER0:1; - unsigned char NDER1:1; - unsigned char NDER2:1; - unsigned char NDER3:1; - unsigned char NDER4:1; - unsigned char NDER5:1; - unsigned char NDER6:1; - unsigned char NDER7:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD8:1; - unsigned char POD9:1; - unsigned char POD10:1; - unsigned char POD11:1; - unsigned char POD12:1; - unsigned char POD13:1; - unsigned char POD14:1; - unsigned char POD15:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD0:1; - unsigned char POD1:1; - unsigned char POD2:1; - unsigned char POD3:1; - unsigned char POD4:1; - unsigned char POD5:1; - unsigned char POD6:1; - unsigned char POD7:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char NDR12:1; - unsigned char NDR13:1; - unsigned char NDR14:1; - unsigned char NDR15:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char NDR4:1; - unsigned char NDR5:1; - unsigned char NDR6:1; - unsigned char NDR7:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char PTRSL:1; - unsigned char :7; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER24:1; - unsigned char NDER25:1; - unsigned char NDER26:1; - unsigned char NDER27:1; - unsigned char NDER28:1; - unsigned char NDER29:1; - unsigned char NDER30:1; - unsigned char NDER31:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER16:1; - unsigned char NDER17:1; - unsigned char NDER18:1; - unsigned char NDER19:1; - unsigned char NDER20:1; - unsigned char NDER21:1; - unsigned char NDER22:1; - unsigned char NDER23:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD24:1; - unsigned char POD25:1; - unsigned char POD26:1; - unsigned char POD27:1; - unsigned char POD28:1; - unsigned char POD29:1; - unsigned char POD30:1; - unsigned char POD31:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD16:1; - unsigned char POD17:1; - unsigned char POD18:1; - unsigned char POD19:1; - unsigned char POD20:1; - unsigned char POD21:1; - unsigned char POD22:1; - unsigned char POD23:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char NDR28:1; - unsigned char NDR29:1; - unsigned char NDR30:1; - unsigned char NDR31:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char NDR20:1; - unsigned char NDR21:1; - unsigned char NDR22:1; - unsigned char NDR23:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char ADTE:1; - unsigned char :3; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char :4; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char MP:1; - unsigned char STOP:1; - unsigned char PM:1; - unsigned char PE:1; - unsigned char CHR:1; - unsigned char CM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char MPIE:1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char MPBT:1; - unsigned char MPB:1; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char FER:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :4; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char ACS0:1; - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char BCP:2; - unsigned char PM:1; - unsigned char PE:1; - unsigned char BLK:1; - unsigned char GM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char :1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char ERS:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :3; - unsigned char BCP2:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char GPS:2; - unsigned char LMS:1; - unsigned char :4; - unsigned char DORCLR:1; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char SDAI:1; - unsigned char SCLI:1; - unsigned char SDAO:1; - unsigned char SCLO:1; - unsigned char SOWP:1; - unsigned char CLO:1; - unsigned char IICRST:1; - unsigned char ICE:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ST:1; - unsigned char RS:1; - unsigned char SP:1; - unsigned char :1; - unsigned char TRS:1; - unsigned char MST:1; - unsigned char BBSY:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char BC:3; - unsigned char BCWP:1; - unsigned char CKS:3; - unsigned char MTWP:1; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOS:1; - unsigned char TMOL:1; - unsigned char TMOH:1; - unsigned char :1; - unsigned char SDDL:3; - unsigned char DLCS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char NF:2; - unsigned char ACKBR:1; - unsigned char ACKBT:1; - unsigned char ACKWP:1; - unsigned char RDRFS:1; - unsigned char WAIT:1; - unsigned char SMBS:1; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char TMOE:1; - unsigned char MALE:1; - unsigned char NALE:1; - unsigned char SALE:1; - unsigned char NACKE:1; - unsigned char NFE:1; - unsigned char SCLE:1; - unsigned char FMPE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char SAR0E:1; - unsigned char SAR1E:1; - unsigned char SAR2E:1; - unsigned char GCAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char HOAE:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TMOIE:1; - unsigned char ALIE:1; - unsigned char STIE:1; - unsigned char SPIE:1; - unsigned char NAKIE:1; - unsigned char RIE:1; - unsigned char TEIE:1; - unsigned char TIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char AAS0:1; - unsigned char AAS1:1; - unsigned char AAS2:1; - unsigned char GCA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char HOA:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOF:1; - unsigned char AL:1; - unsigned char START:1; - unsigned char STOP:1; - unsigned char NACKF:1; - unsigned char RDRF:1; - unsigned char TEND:1; - unsigned char TDRE:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char BRL:5; - unsigned char :3; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char BRH:5; - unsigned char :3; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPMS:1; - unsigned char TXMD:1; - unsigned char MODFEN:1; - unsigned char MSTR:1; - unsigned char SPEIE:1; - unsigned char SPTIE:1; - unsigned char SPE:1; - unsigned char SPRIE:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char SSLP0:1; - unsigned char SSLP1:1; - unsigned char SSLP2:1; - unsigned char SSLP3:1; - unsigned char :4; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char SPLP:1; - unsigned char SPLP2:1; - unsigned char SPOM:1; - unsigned char :1; - unsigned char MOIFV:1; - unsigned char MOIFE:1; - unsigned char :2; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char OVRF:1; - unsigned char IDLNF:1; - unsigned char MODF:1; - unsigned char PERF:1; - unsigned char :4; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char SPSLN:3; - unsigned char :5; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char SPCP:3; - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR0:1; - unsigned char SPR1:1; - unsigned char SPR2:1; - unsigned char SPR3:1; - unsigned char SPR4:1; - unsigned char SPR5:1; - unsigned char SPR6:1; - unsigned char SPR7:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char SPFC:2; - unsigned char SLSEL:2; - unsigned char SPRDTD:1; - unsigned char SPLW:1; - unsigned char :2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char SCKDL:3; - unsigned char :5; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char SLNDL:3; - unsigned char :5; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char SPNDL:3; - unsigned char :5; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char SPPE:1; - unsigned char SPOE:1; - unsigned char SPIIE:1; - unsigned char PTE:1; - unsigned char :4; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char OE3B:1; - unsigned char OE4A:1; - unsigned char OE4B:1; - unsigned char OE3D:1; - unsigned char OE4C:1; - unsigned char OE4D:1; - unsigned char :2; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char UF:1; - unsigned char VF:1; - unsigned char WF:1; - unsigned char FB:1; - unsigned char P:1; - unsigned char N:1; - unsigned char BCD:1; - unsigned char :1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char OLSP:1; - unsigned char OLSN:1; - unsigned char TOCS:1; - unsigned char TOCL:1; - unsigned char :2; - unsigned char PSYE:1; - unsigned char :1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char BF:2; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T4VCOR:3; - unsigned char T4VEN:1; - unsigned char T3ACOR:3; - unsigned char T3AEN:1; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char T4VCNT:3; - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char BTE:2; - unsigned char :6; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char :7; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char :2; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char WRE:1; - unsigned char :6; - unsigned char CCE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST0:1; - unsigned char CST1:1; - unsigned char CST2:1; - unsigned char :3; - unsigned char CST3:1; - unsigned char CST4:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC0:1; - unsigned char SYNC1:1; - unsigned char SYNC2:1; - unsigned char :3; - unsigned char SYNC3:1; - unsigned char SYNC4:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char RWE:1; - unsigned char :7; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char TGIEE:1; - unsigned char TGIEF:1; - unsigned char :6; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char I1AE:1; - unsigned char I1BE:1; - unsigned char I2AE:1; - unsigned char I2BE:1; - unsigned char :4; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short ITB4VE:1; - unsigned short ITB3AE:1; - unsigned short ITA4VE:1; - unsigned short ITA3AE:1; - unsigned short DT4BE:1; - unsigned short UT4BE:1; - unsigned short DT4AE:1; - unsigned short UT4AE:1; - unsigned short :6; - unsigned short BF:2; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char TGIE5W:1; - unsigned char TGIE5V:1; - unsigned char TGIE5U:1; - unsigned char :5; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char CSTW5:1; - unsigned char CSTV5:1; - unsigned char CSTU5:1; - unsigned char :5; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char CMPCLR5W:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5U:1; - unsigned char :5; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE0M:2; - unsigned short POE1M:2; - unsigned short POE2M:2; - unsigned short POE3M:2; - unsigned short PIE1:1; - unsigned short :3; - unsigned short POE0F:1; - unsigned short POE1F:1; - unsigned short POE2F:1; - unsigned short POE3F:1; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE1:1; - unsigned short OCE1:1; - unsigned short :5; - unsigned short OSF1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE4M:2; - unsigned short POE5M:2; - unsigned short POE6M:2; - unsigned short POE7M:2; - unsigned short PIE2:1; - unsigned short :3; - unsigned short POE4F:1; - unsigned short POE5F:1; - unsigned short POE6F:1; - unsigned short POE7F:1; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE2:1; - unsigned short OCE2:1; - unsigned short :5; - unsigned short OSF2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short POE8M:2; - unsigned short :6; - unsigned short PIE3:1; - unsigned short POE8E:1; - unsigned short :2; - unsigned short POE8F:1; - unsigned short :3; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char CH34HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH6HIZ:1; - unsigned char :4; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE0ZE:1; - unsigned char PE1ZE:1; - unsigned char PE2ZE:1; - unsigned char PE3ZE:1; - unsigned char PE4ZE:1; - unsigned char PE5ZE:1; - unsigned char PE6ZE:1; - unsigned char PE7ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short P6CZE:1; - unsigned short P5CZE:1; - unsigned short P4CZE:1; - unsigned short :1; - unsigned short P3CZEB:1; - unsigned short P2CZEB:1; - unsigned short P1CZEB:1; - unsigned short :1; - unsigned short P3CZEA:1; - unsigned short P2CZEA:1; - unsigned short P1CZEA:1; - unsigned short :1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short POE9M:2; - unsigned short :6; - unsigned short PIE4:1; - unsigned short POE9E:1; - unsigned short :2; - unsigned short POE9F:1; - unsigned short :3; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char EXTRG:1; - unsigned char TRGE:1; - unsigned char CKS:2; - unsigned char ADIE:1; - unsigned char :1; - unsigned char ADCS:1; - unsigned char ADST:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS:8; - unsigned short :8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short ADS:8; - unsigned short :8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char ADC:2; - unsigned char :6; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short ACE:1; - unsigned short :9; - unsigned short ADRFMT:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char ADSTRS:4; - unsigned char :4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS0E:1; - unsigned char CS1E:1; - unsigned char CS2E:1; - unsigned char CS3E:1; - unsigned char CS4E:1; - unsigned char CS5E:1; - unsigned char CS6E:1; - unsigned char CS7E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS4S:2; - unsigned char CS5S:2; - unsigned char CS6S:2; - unsigned char CS7S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS0S:1; - unsigned char :1; - unsigned char CS1S:2; - unsigned char CS2S:2; - unsigned char CS3S:2; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A16E:1; - unsigned char A17E:1; - unsigned char A18E:1; - unsigned char A19E:1; - unsigned char A20E:1; - unsigned char A21E:1; - unsigned char A22E:1; - unsigned char A23E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char ADRLE:2; - unsigned char A10E:1; - unsigned char A11E:1; - unsigned char A12E:1; - unsigned char A13E:1; - unsigned char A14E:1; - unsigned char A15E:1; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADRHMS:1; - unsigned char :2; - unsigned char DHE:1; - unsigned char DH32E:1; - unsigned char WR1BC1E:1; - unsigned char WR32BC32E:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char WAITS:2; - unsigned char :2; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char DQM1E:1; - unsigned char SDCLKE:1; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char EDMA0S:2; - unsigned char EDMA1S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS8:1; - unsigned char ITS9:1; - unsigned char ITS10:1; - unsigned char ITS11:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS15:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS0:1; - unsigned char ITS1:1; - unsigned char ITS2:1; - unsigned char ITS3:1; - unsigned char ITS4:1; - unsigned char ITS5:1; - unsigned char ITS6:1; - unsigned char ITS7:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ADTRG0S:1; - unsigned char :7; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TMR2S:1; - unsigned char TMR3S:1; - unsigned char :4; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char MTUS0:1; - unsigned char MTUS1:1; - unsigned char MTUS2:1; - unsigned char MTUS3:1; - unsigned char MTUS4:1; - unsigned char MTUS5:1; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char ENETE0:1; - unsigned char ENETE1:1; - unsigned char ENETE2:1; - unsigned char ENETE3:1; - unsigned char PHYMODE:1; - unsigned char :2; - unsigned char EE:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI1S:1; - unsigned char SCI2S:1; - unsigned char SCI3S:1; - unsigned char :2; - unsigned char SCI6S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CAN0E:1; - unsigned char :7; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE0E:1; - unsigned char POE1E:1; - unsigned char POE2E:1; - unsigned char POE3E:1; - unsigned char POE4E:1; - unsigned char POE5E:1; - unsigned char POE6E:1; - unsigned char POE7E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char POE8E:1; - unsigned char POE9E:1; - unsigned char :6; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char FLWE:2; - unsigned char :6; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FRDMD:1; - unsigned char :3; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPE:1; - unsigned char DFLRPE:1; - unsigned char :1; - unsigned char DFLAE:1; - unsigned char CMDLK:1; - unsigned char :2; - unsigned char ROMAE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPEIE:1; - unsigned char DFLRPEIE:1; - unsigned char :1; - unsigned char DFLAEIE:1; - unsigned char CMDLKIE:1; - unsigned char :2; - unsigned char ROMAEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char FRDYIE:1; - unsigned char :7; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short DBRE00:1; - unsigned short DBRE01:1; - unsigned short DBRE02:1; - unsigned short DBRE03:1; - unsigned short DBRE04:1; - unsigned short DBRE05:1; - unsigned short DBRE06:1; - unsigned short DBRE07:1; - unsigned short KEY:8; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short DBRE08:1; - unsigned short DBRE09:1; - unsigned short DBRE10:1; - unsigned short DBRE11:1; - unsigned short DBRE12:1; - unsigned short DBRE13:1; - unsigned short DBRE14:1; - unsigned short DBRE15:1; - unsigned short KEY:8; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short DBWE00:1; - unsigned short DBWE01:1; - unsigned short DBWE02:1; - unsigned short DBWE03:1; - unsigned short DBWE04:1; - unsigned short DBWE05:1; - unsigned short DBWE06:1; - unsigned short DBWE07:1; - unsigned short KEY:8; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short DBWE08:1; - unsigned short DBWE09:1; - unsigned short DBWE10:1; - unsigned short DBWE11:1; - unsigned short DBWE12:1; - unsigned short DBWE13:1; - unsigned short DBWE14:1; - unsigned short DBWE15:1; - unsigned short KEY:8; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short FCRME:1; - unsigned short :7; - unsigned short KEY:8; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char PRGSPD:1; - unsigned char ERSSPD:1; - unsigned char :1; - unsigned char SUSRDY:1; - unsigned char PRGERR:1; - unsigned char ERSERR:1; - unsigned char ILGLERR:1; - unsigned char FRDY:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FLOCKST:1; - unsigned char :2; - unsigned char FCUERR:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FENTRY0:1; - unsigned short :6; - unsigned short FENTRYD:1; - unsigned short FEKEY:8; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPROTCN:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRESET:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short PCMDR:8; - unsigned short CMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short ESUSPMD:1; - unsigned short :15; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :2; - unsigned short BCADR:8; - unsigned short :5; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short PEERRST:8; - unsigned short :8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short BCST:1; - unsigned short :15; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short PCKA:8; - unsigned short :8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char :1; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char :1; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :2; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :5; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :2; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :3; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char ENB:1; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char ENB:1; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :4; - unsigned char ENB:1; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :2; - unsigned char ENB:1; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ENB:1; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char AIE:1; - unsigned char CIE:1; - unsigned char PIE:1; - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char START:1; - unsigned char RESET:1; - unsigned char ADJ:1; - unsigned char RTCOE:1; - unsigned char :4; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char DLC:4; - unsigned char :4; - unsigned char :8; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :3; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char SENTDATA:1; - unsigned char TRMACTIVE:1; - unsigned char TRMABT:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } TX; - struct { - unsigned char NEWDATA:1; - unsigned char INVALDATA:1; - unsigned char MSGLOST:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char MBM:1; - unsigned char IDFM:2; - unsigned char MLM:1; - unsigned char TPM:1; - unsigned char TSRC:1; - unsigned char TSPS:2; - unsigned char CANM:2; - unsigned char SLPM:1; - unsigned char BOM:2; - unsigned char RBOC:1; - unsigned char :2; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char NDST:1; - unsigned char SDST:1; - unsigned char RFST:1; - unsigned char TFST:1; - unsigned char NMLST:1; - unsigned char FMLST:1; - unsigned char TABST:1; - unsigned char EST:1; - unsigned char RSTST:1; - unsigned char HLTST:1; - unsigned char SLPST:1; - unsigned char EPST:1; - unsigned char BOST:1; - unsigned char TRMST:1; - unsigned char RECST:1; - unsigned char :1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :8; - unsigned long TSEG2:3; - unsigned long :1; - unsigned long SJW:2; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long TSEG1:4; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFE:1; - unsigned char RFUST:3; - unsigned char RFMLF:1; - unsigned char RFFST:1; - unsigned char RFWST:1; - unsigned char RFEST:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFE:1; - unsigned char TFUST:3; - unsigned char :2; - unsigned char TFFST:1; - unsigned char TFEST:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BEIE:1; - unsigned char EWIE:1; - unsigned char EPIE:1; - unsigned char BOEIE:1; - unsigned char BORIE:1; - unsigned char ORIE:1; - unsigned char OLIE:1; - unsigned char BLIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BEIF:1; - unsigned char EWIF:1; - unsigned char EPIF:1; - unsigned char BOEIF:1; - unsigned char BORIF:1; - unsigned char ORIF:1; - unsigned char OLIF:1; - unsigned char BLIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char SEF:1; - unsigned char FEF:1; - unsigned char AEF:1; - unsigned char CEF:1; - unsigned char BE1F:1; - unsigned char BE0F:1; - unsigned char ADEF:1; - unsigned char EDPM:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBNST:5; - unsigned char :2; - unsigned char SEST:1; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBSM:2; - unsigned char :6; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char TSTE:1; - unsigned char TSTM:2; - unsigned char :5; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short USBE:1; - unsigned short :3; - unsigned short DPRPU:1; - unsigned short DRPD:1; - unsigned short DCFM:1; - unsigned short :3; - unsigned short SCKE:1; - unsigned short :5; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short LNST:2; - unsigned short IDMON:1; - unsigned short :3; - unsigned short HTACT:1; - unsigned short :7; - unsigned short OVCMON:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short RHST:3; - unsigned short :1; - unsigned short UACT:1; - unsigned short RESUME:1; - unsigned short USBRST:1; - unsigned short RWUPE:1; - unsigned short WKUP:1; - unsigned short VBUSEN:1; - unsigned short EXICEN:1; - unsigned short HNPBTOA:1; - unsigned short :4; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :1; - unsigned short ISEL:1; - unsigned short :2; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :3; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short BRDYE:1; - unsigned short NRDYE:1; - unsigned short BEMPE:1; - unsigned short CTRE:1; - unsigned short DVSE:1; - unsigned short SOFE:1; - unsigned short RSME:1; - unsigned short VBSE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACKE:1; - unsigned short SIGNE:1; - unsigned short EOFERRE:1; - unsigned short :4; - unsigned short ATTCHE:1; - unsigned short DTCHE:1; - unsigned short :1; - unsigned short BCHGE:1; - unsigned short OVRCRE:1; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE9BEMPE:1; - unsigned short :6; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short EDGESTS:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short TRNENSEL:1; - unsigned short :7; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short CTSQ:3; - unsigned short VALID:1; - unsigned short DVSQ:3; - unsigned short VBSTS:1; - unsigned short BRDY:1; - unsigned short NRDY:1; - unsigned short BEMP:1; - unsigned short CTRT:1; - unsigned short DVST:1; - unsigned short SOFR:1; - unsigned short RESM:1; - unsigned short VBINT:1; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACK:1; - unsigned short SIGN:1; - unsigned short EOFERR:1; - unsigned short :4; - unsigned short ATTCH:1; - unsigned short DTCH:1; - unsigned short :1; - unsigned short BCHG:1; - unsigned short OVRCR:1; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE9BENP:1; - unsigned short :6; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short FRNM:11; - unsigned short :3; - unsigned short CRCE:1; - unsigned short OVRN:1; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short USBADDR:7; - unsigned short :1; - unsigned short STSRECOV:4; - unsigned short :4; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BMREQUESTTYPE:8; - unsigned short BREQUEST:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :8; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short MXPS:7; - unsigned short :5; - unsigned short DEVSEL:4; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short CCPL:1; - unsigned short :2; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SUREQ:1; - unsigned short BSTS:1; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPESEL:4; - unsigned short :12; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short EPNUM:4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :1; - unsigned short DBLB:1; - unsigned short BFRE:1; - unsigned short :3; - unsigned short TYPE:2; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short MXPS:8; - unsigned short XPS:1; - unsigned short :3; - unsigned short DEVSEL:4; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short IITV:3; - unsigned short :9; - unsigned short IFIS:1; - unsigned short :3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long SRPC0:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long DP0:1; - unsigned long DM0:1; - unsigned long :2; - unsigned long DOVCA0:1; - unsigned long DOVCB0:1; - unsigned long :1; - unsigned long DVBSTS0:1; - unsigned long DP1:1; - unsigned long DM1:1; - unsigned long :2; - unsigned long DOVCA1:1; - unsigned long DOVCB1:1; - unsigned long :1; - unsigned long DVSTS1:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DPINTE0:1; - unsigned long DMINTE0:1; - unsigned long :2; - unsigned long DOVRCRAE0:1; - unsigned long DOVRCRBE0:1; - unsigned long :1; - unsigned long DVBSE0:1; - unsigned long DPINTE1:1; - unsigned long DMINTE1:1; - unsigned long :2; - unsigned long DOVRCRAE1:1; - unsigned long DOVRCRBE1:1; - unsigned long :1; - unsigned long DVBSE1:1; - unsigned long DPINT0:1; - unsigned long DMINT0:1; - unsigned long :2; - unsigned long DOVRCRA0:1; - unsigned long DOVRCRB0:1; - unsigned long :1; - unsigned long DVBINT0:1; - unsigned long DPINT1:1; - unsigned long DMINT1:1; - unsigned long :2; - unsigned long DOVRCRA1:1; - unsigned long DOVRCRB1:1; - unsigned long :1; - unsigned long DVBINT1:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long SWR:1; - unsigned long :3; - unsigned long DL:2; - unsigned long DE:1; - unsigned long :25; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long TR:1; - unsigned long :31; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long RR:1; - unsigned long :31; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long CERF:1; - unsigned long PRE:1; - unsigned long RTSF:1; - unsigned long RTLF:1; - unsigned long RRF:1; - unsigned long :2; - unsigned long RMAF:1; - unsigned long TRO:1; - unsigned long CD:1; - unsigned long DLC:1; - unsigned long CND:1; - unsigned long :4; - unsigned long RFOF:1; - unsigned long RDE:1; - unsigned long FR:1; - unsigned long TFUF:1; - unsigned long TDE:1; - unsigned long TC:1; - unsigned long ECI:1; - unsigned long ADE:1; - unsigned long RFCOF:1; - unsigned long RABT:1; - unsigned long TABT:1; - unsigned long :3; - unsigned long TWB:1; - unsigned long :1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFIP:1; - unsigned long PREIP:1; - unsigned long RTSFIP:1; - unsigned long RTLFIP:1; - unsigned long RRFIP:1; - unsigned long :2; - unsigned long RMAFIP:1; - unsigned long TROIP:1; - unsigned long CDIP:1; - unsigned long DLCIP:1; - unsigned long CNDIP:1; - unsigned long :4; - unsigned long RFOFIP:1; - unsigned long RDEIP:1; - unsigned long FRIP:1; - unsigned long TFUFIP:1; - unsigned long TDEIP:1; - unsigned long TCIP:1; - unsigned long ECIIP:1; - unsigned long ADEIP:1; - unsigned long RFCOFIP:1; - unsigned long RABTIP:1; - unsigned long TABTIP:1; - unsigned long :3; - unsigned long TWBIP:1; - unsigned long :1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFCE:1; - unsigned long PRECE:1; - unsigned long RTSFCE:1; - unsigned long RTLFCE:1; - unsigned long RRFCE:1; - unsigned long :2; - unsigned long RMAFCE:1; - unsigned long TROCE:1; - unsigned long CDCE:1; - unsigned long DLCCE:1; - unsigned long CNDCE:1; - unsigned long :20; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long MFC:16; - unsigned long :16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long TFT:11; - unsigned long :21; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long RFD:5; - unsigned long :3; - unsigned long TFD:5; - unsigned long :19; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long RNR:1; - unsigned long RNC:1; - unsigned long :30; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long UNDER:16; - unsigned long :16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long OVER:16; - unsigned long :16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long TLB:1; - unsigned long :31; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long RFDO:3; - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long PADR:6; - unsigned long :10; - unsigned long PADS:2; - unsigned long :14; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long TIS:1; - unsigned long :3; - unsigned long TIM:1; - unsigned long :27; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long PRM:1; - unsigned long DM:1; - unsigned long RTM:1; - unsigned long ILB:1; - unsigned long :1; - unsigned long TE:1; - unsigned long RE:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long PRCEF:1; - unsigned long :3; - unsigned long TXF:1; - unsigned long RXF:1; - unsigned long PFR:1; - unsigned long ZPE:1; - unsigned long TPC:1; - unsigned long :11; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long RFL:12; - unsigned long :20; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long ICD:1; - unsigned long MPD:1; - unsigned long LCHNG:1; - unsigned long :1; - unsigned long PSRTO:1; - unsigned long BFR:1; - unsigned long :26; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long ICDIP:1; - unsigned long MPDIP:1; - unsigned long LCHNGIP:1; - unsigned long :1; - unsigned long PSRTOIP:1; - unsigned long BFSIPR:1; - unsigned long :26; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long MDC:1; - unsigned long MMD:1; - unsigned long MDO:1; - unsigned long MDI:1; - unsigned long :28; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long LMON:1; - unsigned long :31; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long RMD:20; - unsigned long :12; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long IPG:5; - unsigned long :27; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long AP:16; - unsigned long :16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long MP:16; - unsigned long :16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long RPAUSE:8; - unsigned long :24; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long TPAUSE:16; - unsigned long :16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long TXP:8; - unsigned long :24; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long BCF:16; - unsigned long :16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long MA:16; - unsigned long :16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#elif __RX_BIG_ENDIAN__ /*Big endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - unsigned short :8; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - unsigned long :4; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - unsigned long :8; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - unsigned short :6; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - unsigned char :2; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - unsigned short :3; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - unsigned char :4; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - unsigned char :1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - unsigned char :2; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - unsigned char :3; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - unsigned char :6; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - unsigned char :5; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - unsigned char :1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BCD:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDRE:1; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - unsigned short :8; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - unsigned short :8; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - unsigned short :4; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - unsigned short :5; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char :1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - unsigned char :4; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char :2; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char :6; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - unsigned char :4; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - unsigned char :4; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - unsigned char :1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :7; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :8; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - unsigned short :8; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - unsigned short :4; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - unsigned short :4; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - unsigned short :4; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - unsigned short :15; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short :4; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short XPS:1; - unsigned short MXPS:8; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#endif /*endian*/ - -#endif /*IODEFINE_H*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h deleted file mode 100644 index 5077d7425..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h +++ /dev/null @@ -1,98 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RSKRX62N_H -#define RSKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#define LED_ON (0) -#define LED_OFF (1) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT0.DR.BIT.B0 -#define SW2 PORT0.DR.BIT.B1 -#define SW3 PORT0.DR.BIT.B7 -#define SW1_DDR PORT0.DDR.BIT.B0 -#define SW2_DDR PORT0.DDR.BIT.B1 -#define SW3_DDR PORT0.DDR.BIT.B7 -#define SW1_ICR PORT0.ICR.BIT.B0 -#define SW2_ICR PORT0.ICR.BIT.B1 -#define SW3_ICR PORT0.ICR.BIT.B7 - -/* LEDs */ -#define LED0 PORT0.DR.BIT.B2 -#define LED1 PORT0.DR.BIT.B3 -#define LED2 PORT0.DR.BIT.B5 -#define LED3 PORT3.DR.BIT.B4 -#define LED4 PORT6.DR.BIT.B0 -#define LED5 PORT7.DR.BIT.B3 -#define LED0_DDR PORT0.DDR.BIT.B2 -#define LED1_DDR PORT0.DDR.BIT.B3 -#define LED2_DDR PORT0.DDR.BIT.B5 -#define LED3_DDR PORT3.DDR.BIT.B4 -#define LED4_DDR PORT6.DDR.BIT.B0 -#define LED5_DDR PORT7.DDR.BIT.B3 - -/* 2x8 segment LCD */ -#define LCD_RS PORT8.DR.BIT.B4 -#define LCD_EN PORT8.DR.BIT.B5 -#define LCD_DATA PORT9.DR.BYTE -#define LCD_RS_DDR PORT8.DDR.BIT.B4 -#define LCD_EN_DDR PORT8.DDR.BIT.B5 -#define LCD_DATA_DDR PORT9.DDR.BYTE - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RSKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c deleted file mode 100644 index 0abb8a674..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* The following four functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1_ISR_Handler( void ) {} -void vT2_3_ISR_Handler( void ) {} -void vEMAC_ISR_Handler( void ) {} -void vTimer2_ISR_Handler( void ) {} -volatile unsigned long ulHighFrequencyTickCount = 0; \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c deleted file mode 100644 index bf6c385e7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c +++ /dev/null @@ -1,647 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ) __attribute__((naked)); -static void prvRegTest2Implementation( void ) __attribute__((naked)); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); - - return 0; -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #1, R1 \n" \ - "MOV #2, R2 \n" \ - "MOV #3, R3 \n" \ - "MOV #4, R4 \n" \ - "MOV #5, R5 \n" \ - "MOV #6, R6 \n" \ - "MOV #7, R7 \n" \ - "MOV #8, R8 \n" \ - "MOV #9, R9 \n" \ - "MOV #10, R10 \n" \ - "MOV #11, R11 \n" \ - "MOV #12, R12 \n" \ - "MOV #13, R13 \n" \ - "MOV #14, R14 \n" \ - "MOV #15, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop1: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest1CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Yield to extend the test coverage. Set the bit in the ITU SWINTR register. */ - "MOV #1, R14 \n" \ - "MOV #0872E0H, R15 \n" \ - "MOV.B R14, [R15] \n" \ - "NOP \n" \ - "NOP \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #1, R1 \n" \ - "BNE RegTest1Error \n" \ - "CMP #2, R2 \n" \ - "BNE RegTest1Error \n" \ - "CMP #3, R3 \n" \ - "BNE RegTest1Error \n" \ - "CMP #4, R4 \n" \ - "BNE RegTest1Error \n" \ - "CMP #5, R5 \n" \ - "BNE RegTest1Error \n" \ - "CMP #6, R6 \n" \ - "BNE RegTest1Error \n" \ - "CMP #7, R7 \n" \ - "BNE RegTest1Error \n" \ - "CMP #8, R8 \n" \ - "BNE RegTest1Error \n" \ - "CMP #9, R9 \n" \ - "BNE RegTest1Error \n" \ - "CMP #10, R10 \n" \ - "BNE RegTest1Error \n" \ - "CMP #11, R11 \n" \ - "BNE RegTest1Error \n" \ - "CMP #12, R12 \n" \ - "BNE RegTest1Error \n" \ - "CMP #13, R13 \n" \ - "BNE RegTest1Error \n" \ - "CMP #14, R14 \n" \ - "BNE RegTest1Error \n" \ - "CMP #15, R15 \n" \ - "BNE RegTest1Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop1 \n" \ - - "RegTest1Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest1Error " - ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #10H, R1 \n" \ - "MOV #20H, R2 \n" \ - "MOV #30H, R3 \n" \ - "MOV #40H, R4 \n" \ - "MOV #50H, R5 \n" \ - "MOV #60H, R6 \n" \ - "MOV #70H, R7 \n" \ - "MOV #80H, R8 \n" \ - "MOV #90H, R9 \n" \ - "MOV #100H, R10 \n" \ - "MOV #110H, R11 \n" \ - "MOV #120H, R12 \n" \ - "MOV #130H, R13 \n" \ - "MOV #140H, R14 \n" \ - "MOV #150H, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop2: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest2CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #10H, R1 \n" \ - "BNE RegTest2Error \n" \ - "CMP #20H, R2 \n" \ - "BNE RegTest2Error \n" \ - "CMP #30H, R3 \n" \ - "BNE RegTest2Error \n" \ - "CMP #40H, R4 \n" \ - "BNE RegTest2Error \n" \ - "CMP #50H, R5 \n" \ - "BNE RegTest2Error \n" \ - "CMP #60H, R6 \n" \ - "BNE RegTest2Error \n" \ - "CMP #70H, R7 \n" \ - "BNE RegTest2Error \n" \ - "CMP #80H, R8 \n" \ - "BNE RegTest2Error \n" \ - "CMP #90H, R9 \n" \ - "BNE RegTest2Error \n" \ - "CMP #100H, R10 \n" \ - "BNE RegTest2Error \n" \ - "CMP #110H, R11 \n" \ - "BNE RegTest2Error \n" \ - "CMP #120H, R12 \n" \ - "BNE RegTest2Error \n" \ - "CMP #130H, R13 \n" \ - "BNE RegTest2Error \n" \ - "CMP #140H, R14 \n" \ - "BNE RegTest2Error \n" \ - "CMP #150H, R15 \n" \ - "BNE RegTest2Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop2 \n" \ - - "RegTest2Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest2Error " - ); -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c deleted file mode 100644 index a1a33fe16..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c +++ /dev/null @@ -1,614 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vects.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -typedef void (*fp) (void); -extern void start(void); -extern void stack (void); -extern void vTickISR( void ); -extern void vSoftwareInterruptISR( void ); -extern void vT0_1_ISR_Handler( void ); -extern void vT2_3_ISR_Handler( void ); -extern void vEMAC_ISR_Handler( void ); -extern void vTimer2_ISR_Handler( void ); - -#define FVECT_SECT __attribute__ ((section (".fvectors"))) - -const fp HardwareVectors[] FVECT_SECT = { -//;0xffffff80 Reserved - (fp)0, -//;0xffffff84 Reserved - (fp)0, -//;0xffffff88 Reserved - (fp)0, -//;0xffffff8C Reserved - (fp)0, -//;0xffffff90 Reserved - (fp)0, -//;0xffffff94 Reserved - (fp)0, -//;0xffffff98 Reserved - (fp)0, -//;0xffffff9C Reserved - (fp)0, -//;0xffffffA0 Reserved - (fp)0, -//;0xffffffA4 Reserved - (fp)0, -//;0xffffffA8 Reserved - (fp)0, -//;0xffffffAC Reserved - (fp)0, -//;0xffffffB0 Reserved - (fp)0, -//;0xffffffB4 Reserved - (fp)0, -//;0xffffffB8 Reserved - (fp)0, -//;0xffffffBC Reserved - (fp)0, -//;0xffffffC0 Reserved - (fp)0, -//;0xffffffC4 Reserved - (fp)0, -//;0xffffffC8 Reserved - (fp)0, -//;0xffffffCC Reserved - (fp)0, -//;0xffffffd0 Exception(Supervisor Instruction) - INT_Excep_SuperVisorInst, -//;0xffffffd4 Reserved - (fp)0, -//;0xffffffd8 Reserved - (fp)0, -//;0xffffffdc Exception(Undefined Instruction) - INT_Excep_UndefinedInst, -//;0xffffffe0 Reserved - (fp)0, -//;0xffffffe4 Exception(Floating Point) - INT_Excep_FloatingPoint, -//;0xffffffe8 Reserved - (fp)0, -//;0xffffffec Reserved - (fp)0, -//;0xfffffff0 Reserved - (fp)0, -//;0xfffffff4 Reserved - (fp)0, -//;0xfffffff8 NMI - INT_NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC - start -//;<> -}; - -#define RVECT_SECT __attribute__ ((section (".rvectors"))) - -const fp RelocatableVectors[] RVECT_SECT = { -//;0x0000 Reserved - (fp)0, -//;0x0004 Reserved - (fp)0, -//;0x0008 Reserved - (fp)0, -//;0x000C Reserved - (fp)0, -//;0x0010 Reserved - (fp)0, -//;0x0014 Reserved - (fp)0, -//;0x0018 Reserved - (fp)0, -//;0x001C Reserved - (fp)0, -//;0x0020 Reserved - (fp)0, -//;0x0024 Reserved - (fp)0, -//;0x0028 Reserved - (fp)0, -//;0x002C Reserved - (fp)0, -//;0x0030 Reserved - (fp)0, -//;0x0034 Reserved - (fp)0, -//;0x0038 Reserved - (fp)0, -//;0x003C Reserved - (fp)0, -//;0x0040 BUSERR - (fp)INT_Excep_BUSERR, -//;0x0044 Reserved - (fp)0, -//;0x0048 Reserved - (fp)0, -//;0x004C Reserved - (fp)0, -//;0x0050 Reserved - (fp)0, -//;0x0054 FCUERR - (fp)INT_Excep_FCU_FCUERR, -//;0x0058 Reserved - (fp)0, -//;0x005C FRDYI - (fp)INT_Excep_FCU_FRDYI, -//;0x0060 Reserved - (fp)0, -//;0x0064 Reserved - (fp)0, -//;0x0068 Reserved - (fp)0, -//;0x006C Reserved - (fp)vSoftwareInterruptISR, -//;0x0070 CMTU0_CMT0 - (fp)vTickISR, -//;0x0074 CMTU0_CMT1 - (fp)INT_Excep_CMTU0_CMT1, -//;0x0078 CMTU1_CMT2 - (fp)vTimer2_ISR_Handler, -//;0x007C CMTU1_CMT3 - (fp)INT_Excep_CMTU1_CMT3, -//;0x0080 Ether - (fp)vEMAC_ISR_Handler, -//;0x0084 Reserved - (fp)0, -//;0x0088 Reserved - (fp)0, -//;0x008C Reserved - (fp)0, -//;0x0090 Reserved - (fp)0, -//;0x0094 Reserved - (fp)0, -//;0x0098 Reserved - (fp)0, -//;0x009C Reserved - (fp)0, -//;0x00A0 Reserved - (fp)0, -//;0x00A4 Reserved - (fp)0, -//;0x00A8 Reserved - (fp)0, -//;0x00AC Reserved - (fp)0, -//;0x00B0 Reserved - (fp)0, -//;0x00B4 Reserved - (fp)0, -//;0x00B8 Reserved - (fp)0, -//;0x00BC Reserved - (fp)0, -//;0x00C0 Reserved - (fp)0, -//;0x00C4 Reserved - (fp)0, -//;0x00C8 Reserved - (fp)0, -//;0x00CC Reserved - (fp)0, -//;0x00D0 Reserved - (fp)0, -//;0x00D4 Reserved - (fp)0, -//;0x00D8 Reserved - (fp)0, -//;0x00DC Reserved - (fp)0, -//;0x00E0 Reserved - (fp)0, -//;0x00E4 Reserved - (fp)0, -//;0x00E8 Reserved - (fp)0, -//;0x00EC Reserved - (fp)0, -//;0x00F0 Reserved - (fp)0, -//;0x00F4 Reserved - (fp)0, -//;0x00F8 Reserved - (fp)0, -//;0x00FC Reserved - (fp)0, -//;0x0100 IRQ0 - (fp)INT_Excep_IRQ0, -//;0x0104 IRQ1 - (fp)INT_Excep_IRQ1, -//;0x0108 IRQ2 - (fp)INT_Excep_IRQ2, -//;0x010C IRQ3 - (fp)INT_Excep_IRQ3, -//;0x0110 IRQ4 - (fp)INT_Excep_IRQ4, -//;0x0114 IRQ5 - (fp)INT_Excep_IRQ5, -//;0x0118 IRQ6 - (fp)INT_Excep_IRQ6, -//;0x011C IRQ7 - (fp)INT_Excep_IRQ7, -//;0x0120 IRQ8 - (fp)INT_Excep_IRQ8, -//;0x0124 IRQ9 - (fp)INT_Excep_IRQ9, -//;0x0128 IRQ10 - (fp)INT_Excep_IRQ10, -//;0x012C IRQ11 - (fp)INT_Excep_IRQ11, -//;0x0130 IRQ12 - (fp)INT_Excep_IRQ12, -//;0x0134 IRQ13 - (fp)INT_Excep_IRQ13, -//;0x0138 IRQ14 - (fp)INT_Excep_IRQ14, -//;0x013C IRQ15 - (fp)INT_Excep_IRQ15, -//;0x0140 Reserved - (fp)0, -//;0x0144 Reserved - (fp)0, -//;0x0148 Reserved - (fp)0, -//;0x014C Reserved - (fp)0, -//;0x0150 Reserved - (fp)0, -//;0x0154 Reserved - (fp)0, -//;0x0158 Reserved - (fp)0, -//;0x015C Reserved - (fp)0, -//;0x0160 Reserved - (fp)0, -//;0x0164 Reserved - (fp)0, -//;0x0168 Reserved - (fp)0, -//;0x016C Reserved - (fp)0, -//;0x0170 Reserved - (fp)0, -//;0x0174 Reserved - (fp)0, -//;0x0178 Reserved - (fp)0, -//;0x017C Reserved - (fp)0, -//;0x0180 WDT_WOVI - (fp)INT_Excep_WDT_WOVI, -//;0x0184 Reserved - (fp)0, -//;0x0188 AD0_ADI0 - (fp)INT_Excep_AD0_ADI0, -//;0x018C AD1_ADI1 - (fp)INT_Excep_AD1_ADI1, -//;0x0190 AD2_ADI2 - (fp)INT_Excep_AD2_ADI2, -//;0x0194 AD3_ADI3 - (fp)INT_Excep_AD3_ADI3, -//;0x0198 Reserved - (fp)0, -//;0x019C Reserved - (fp)0, -//;0x01A0 TPU0_TGI0A - (fp)INT_Excep_TPU0_TGI0A, -//;0x01A4 TPU0_TGI0B - (fp)INT_Excep_TPU0_TGI0B, -//;0x01A8 TPU0_TGI0C - (fp)INT_Excep_TPU0_TGI0C, -//;0x01AC TPU0_TGI0D - (fp)INT_Excep_TPU0_TGI0D, -//;0x01B0 TPU0_TCI0V - (fp)INT_Excep_TPU0_TCI0V, -//;0x01B4 Reserved - (fp)0, -//;0x01B8 Reserved - (fp)0, -//;0x01BC TPU1_TGI1A - (fp)INT_Excep_TPU1_TGI1A, -//;0x01C0 TPU1_TGI1B - (fp)INT_Excep_TPU1_TGI1B, -//;0x01C4 Reserved - (fp)0, -//;0x01C8 Reserved - (fp)0, -//;0x01CC TPU1_TCI1V - (fp)INT_Excep_TPU1_TCI1V, -//;0x01D0 TPU1_TCI1U - (fp)INT_Excep_TPU1_TCI1U, -//;0x01D4 TPU2_TGI2A - (fp)INT_Excep_TPU2_TGI2A, -//;0x01D8 TPU2_TGI2B - (fp)INT_Excep_TPU2_TGI2B, -//;0x01DC Reserved - (fp)0, -//;0x01E0 TPU2_TCI2V - (fp)INT_Excep_TPU2_TCI2V, -//;0x01E4 TPU2_TCI2U - (fp)INT_Excep_TPU2_TCI2U, -//;0x01E8 TPU3_TGI3A - (fp)INT_Excep_TPU3_TGI3A, -//;0x01EC TPU3_TGI3B - (fp)INT_Excep_TPU3_TGI3B, -//;0x01F0 TPU3_TGI3C - (fp)INT_Excep_TPU3_TGI3C, -//;0x01F4 TPU3_TGI3D - (fp)INT_Excep_TPU3_TGI3D, -//;0x01F8 TPU3_TCI3V - (fp)INT_Excep_TPU3_TCI3V, -//;0x01FC TPU4_TGI4A - (fp)INT_Excep_TPU4_TGI4A, -//;0x0200 TPU4_TGI4B - (fp)INT_Excep_TPU4_TGI4B, -//;0x0204 Reserved - (fp)0, -//;0x0208 Reserved - (fp)0, -//;0x020C TPU4_TCI4V - (fp)INT_Excep_TPU4_TCI4V, -//;0x0210 TPU4_TCI4U - (fp)INT_Excep_TPU4_TCI4U, -//;0x0214 TPU5_TGI5A - (fp)INT_Excep_TPU5_TGI5A, -//;0x0218 TPU5_TGI5B - (fp)INT_Excep_TPU5_TGI5B, -//;0x021C Reserved - (fp)0, -//;0x0220 TPU5_TCI5V - (fp)INT_Excep_TPU5_TCI5V, -//;0x0224 TPU5_TCI5U - (fp)INT_Excep_TPU5_TCI5U, -//;0x0228 TPU6_TGI6A - (fp)INT_Excep_TPU6_TGI6A, -//;0x022C TPU6_TGI6B - (fp)INT_Excep_TPU6_TGI6B, -//;0x0230 TPU6_TGI6C - (fp)INT_Excep_TPU6_TGI6C, -//;0x0234 TPU6_TGI6D - (fp)INT_Excep_TPU6_TGI6D, -//;0x0238 TPU6_TCI6V - (fp)INT_Excep_TPU6_TCI6V, -//;0x023C Reserved - (fp)0, -//;0x0240 Reserved - (fp)0, -//;0x0244 TPU7_TGI7A - (fp)INT_Excep_TPU7_TGI7A, -//;0x0248 TPU7_TGI7B - (fp)INT_Excep_TPU7_TGI7B, -//;0x024C Reserved - (fp)0, -//;0x0250 Reserved - (fp)0, -//;0x0254 TPU7_TCI7V - (fp)INT_Excep_TPU7_TCI7V, -//;0x0258 TPU7_TCI7U - (fp)INT_Excep_TPU7_TCI7U, -//;0x025C TPU8_TGI8A - (fp)INT_Excep_TPU8_TGI8A, -//;0x0260 TPU8_TGI8B - (fp)INT_Excep_TPU8_TGI8B, -//;0x0264 Reserved - (fp)0, -//;0x0268 TPU8_TCI8V - (fp)INT_Excep_TPU8_TCI8V, -//;0x026C TPU8_TCI8U - (fp)INT_Excep_TPU8_TCI8U, -//;0x0270 TPU9_TGI9A - (fp)INT_Excep_TPU9_TGI9A, -//;0x0274 TPU9_TGI9B - (fp)INT_Excep_TPU9_TGI9B, -//;0x0278 TPU9_TGI9C - (fp)INT_Excep_TPU9_TGI9C, -//;0x027C TPU9_TGI9D - (fp)INT_Excep_TPU9_TGI9D, -//;0x0280 TPU9_TCI9V - (fp)INT_Excep_TPU9_TCI9V, -//;0x0284 TPU10_TGI10A - (fp)INT_Excep_TPU10_TGI10A, -//;0x0288 TPU10_TGI10B - (fp)INT_Excep_TPU10_TGI10B, -//;0x028C Reserved - (fp)0, -//;0x0290 Reserved - (fp)0, -//;0x0294 TPU10_TCI10V - (fp)INT_Excep_TPU10_TCI10V, -//;0x0298 TPU10_TCI10U - (fp)INT_Excep_TPU10_TCI10U, -//;0x029C TPU11_TGI11A - (fp)INT_Excep_TPU11_TGI11A, -//;0x02A0 TPU11_TGI11B - (fp)INT_Excep_TPU11_TGI11B, -//;0x02A4 Reserved - (fp)0, -//;0x02A8 TPU11_TCI11V - (fp)INT_Excep_TPU11_TCI11V, -//;0x02AC TPU11_TCI11U - (fp)INT_Excep_TPU11_TCI11U, -//;0x02B0 Reserved - (fp)0, -//;0x02B4 Reserved - (fp)0, -//;0x02B8 TMR0_CMI0A - (fp)vT0_1_ISR_Handler, -//;0x02BC TMR0_CMI0B - (fp)INT_Excep_TMR0_CMI0B, -//;0x02C0 TMR0_OV0I - (fp)INT_Excep_TMR0_OV0I, -//;0x02C4 TMR1_CMI1A - (fp)INT_Excep_TMR1_CMI1A, -//;0x02C8 TMR1_CMI1B - (fp)INT_Excep_TMR1_CMI1B, -//;0x02CC TMR1_OV1I - (fp)INT_Excep_TMR1_OV1I, -//;0x02D0 TMR2_CMI2A - (fp)vT2_3_ISR_Handler, -//;0x02D4 TMR2_CMI2B - (fp)INT_Excep_TMR2_CMI2B, -//;0x02D8 TMR2_OV2I - (fp)INT_Excep_TMR2_OV2I, -//;0x02DC TMR3_CMI3A - (fp)INT_Excep_TMR3_CMI3A, -//;0x02E0 TMR3_CMI3B - (fp)INT_Excep_TMR3_CMI3B, -//;0x02E4 TMR3_OV3I - (fp)INT_Excep_TMR3_OV3I, -//;0x02E8 Reserved - (fp)0, -//;0x02EC Reserved - (fp)0, -//;0x02F0 Reserved - (fp)0, -//;0x02F4 Reserved - (fp)0, -//;0x02F8 Reserved - (fp)0, -//;0x02FC Reserved - (fp)0, -//;0x0300 Reserved - (fp)0, -//;0x0304 Reserved - (fp)0, -//;0x0308 Reserved - (fp)0, -//;0x030C Reserved - (fp)0, -//;0x0310 Reserved - (fp)0, -//;0x0314 Reserved - (fp)0, -//;0x0318 DMAC_DMTEND0 - (fp)INT_Excep_DMAC_DMTEND0, -//;0x031C DMAC_DMTEND1 - (fp)INT_Excep_DMAC_DMTEND1, -//;0x0320 DMAC_DMTEND2 - (fp)INT_Excep_DMAC_DMTEND2, -//;0x0324 DMAC_DMTEND3 - (fp)INT_Excep_DMAC_DMTEND3, -//;0x0328 Reserved - (fp)0, -//;0x032C Reserved - (fp)0, -//;0x0330 Reserved - (fp)0, -//;0x0334 Reserved - (fp)0, -//;0x0338 Reserved - (fp)0, -//;0x033C Reserved - (fp)0, -//;0x0340 Reserved - (fp)0, -//;0x0344 Reserved - (fp)0, -//;0x0348 Reserved - (fp)0, -//;0x034C Reserved - (fp)0, -//;0x0350 Reserved - (fp)0, -//;0x0354 Reserved - (fp)0, -//;0x0358 SCI0_ERI0 - (fp)INT_Excep_SCI0_ERI0, -//;0x035C SCI0_RXI0 - (fp)INT_Excep_SCI0_RXI0, -//;0x0360 SCI0_TXI0 - (fp)INT_Excep_SCI0_TXI0, -//;0x0364 SCI0_TEI0 - (fp)INT_Excep_SCI0_TEI0, -//;0x0368 SCI1_ERI1 - (fp)INT_Excep_SCI1_ERI1, -//;0x036C SCI1_RXI1 - (fp)INT_Excep_SCI1_RXI1, -//;0x0370 SCI1_TXI1 - (fp)INT_Excep_SCI1_TXI1, -//;0x0374 SCI1_TEI1 - (fp)INT_Excep_SCI1_TEI1, -//;0x0378 SCI2_ERI2 - (fp)INT_Excep_SCI2_ERI2, -//;0x037C SCI2_RXI2 - (fp)INT_Excep_SCI2_RXI2, -//;0x0380 SCI2_TXI2 - (fp)INT_Excep_SCI2_TXI2, -//;0x0384 SCI2_TEI2 - (fp)INT_Excep_SCI2_TEI2, -//;0x0388 SCI3_ERI3 - (fp)INT_Excep_SCI3_ERI3, -//;0x038C SCI3_RXI3 - (fp)INT_Excep_SCI3_RXI3, -//;0x0390 SCI3_TXI3 - (fp)INT_Excep_SCI3_TXI3, -//;0x0394 SCI3_TEI3 - (fp)INT_Excep_SCI3_TEI3, -//;0x0398 SCI4_ERI4 - (fp)INT_Excep_SCI4_ERI4, -//;0x039C SCI4_RXI4 - (fp)INT_Excep_SCI4_RXI4, -//;0x03A0 SCI4_TXI4 - (fp)INT_Excep_SCI4_TXI4, -//;0x03A4 SCI4_TEI4 - (fp)INT_Excep_SCI4_TEI4, -//;0x03A8 SCI5_ERI5 - (fp)INT_Excep_SCI5_ERI5, -//;0x03AC SCI5_RXI5 - (fp)INT_Excep_SCI5_RXI5, -//;0x03B0 SCI5_TXI5 - (fp)INT_Excep_SCI5_TXI5, -//;0x03B4 SCI5_TEI5 - (fp)INT_Excep_SCI5_TEI5, -//;0x03B8 SCI6_ERI6 - (fp)INT_Excep_SCI6_ERI6, -//;0x03BC SCI6_RXI6 - (fp)INT_Excep_SCI6_RXI6, -//;0x03C0 SCI6_TXI6 - (fp)INT_Excep_SCI6_TXI6, -//;0x03C4 SCI6_TEI6 - (fp)INT_Excep_SCI6_TEI6, -//;0x03C8 Reserved - (fp)0, -//;0x03CC Reserved - (fp)0, -//;0x03D0 Reserved - (fp)0, -//;0x03D4 Reserved - (fp)0, -//;0x03D8 RIIC0_EEI0 - (fp)INT_Excep_RIIC0_EEI0, -//;0x03DC RIIC0_RXI0 - (fp)INT_Excep_RIIC0_RXI0, -//;0x03E0 RIIC0_TXI0 - (fp)INT_Excep_RIIC0_TXI0, -//;0x03E4 RIIC0_TEI0 - (fp)INT_Excep_RIIC0_TEI0, -//;0x03E8 RIIC1_EEI1 - (fp)INT_Excep_RIIC1_EEI1, -//;0x03EC RIIC1_RXI1 - (fp)INT_Excep_RIIC1_RXI1, -//;0x03F0 RIIC1_TXI1 - (fp)INT_Excep_RIIC1_TXI1, -//;0x03F4 RIIC1_TEI1 - (fp)INT_Excep_RIIC1_TEI1, -//;0x03F8 Reserved - (fp)0, -//;0x03FC Reserved - (fp)0, -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 01ef9effb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -static volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ] __attribute__((aligned(16))); -static volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ] __attribute__((aligned(16))); -static char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ] __attribute__((aligned(16))); - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/* - * Handler for the EMAC peripheral. See the documentation for this - * port on http://www.FreeRTOS.org for more information on defining interrupt - * handlers. - */ -void vEMAC_ISR_Handler( void ) __attribute__((interrupt)); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( struct Descriptor * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = ( struct Descriptor * ) &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __RX_LITTLE_ENDIAN__ - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c deleted file mode 100644 index 00dbcca9a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ); -void _phy_write( unsigned short reg_addr, unsigned short data ); -void _phy_preamble( void ); -void _phy_reg_set( unsigned short reg_addr, long option ); -void _phy_reg_read( unsigned short *data ); -void _phy_reg_write( unsigned short data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -short phy_init( void ) -{ - unsigned short reg; - unsigned long count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -short phy_set_autonegotiate( void ) -{ - unsigned short reg; - unsigned long count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (short)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ) -{ - unsigned short data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( unsigned short reg_addr, unsigned short data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - short i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( unsigned short reg_addr, long option ) -{ - long i; - unsigned short data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( unsigned short *data ) -{ - long i, j; - unsigned short reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (unsigned short)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( unsigned short data ) -{ - long i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h deleted file mode 100644 index 7e063aab8..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,83 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1F - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -short phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -short phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index f6633e1d7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __RX_LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -long R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -long R_Ether_Close(unsigned long ch); -long R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -long R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 47d17fdcb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __RX_LITTLE_ENDIAN__ -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp deleted file mode 100644 index 241474974..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp +++ /dev/null @@ -1,2 +0,0 @@ -[Setting] -ToolChain=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws deleted file mode 100644 index 24793e52b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws +++ /dev/null @@ -1,40 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RX600_RX62N_RSK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RX600_RX62N_RSK_GNURX.hws" "RX" "KPIT GNURX [ELF]" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws deleted file mode 100644 index a79e2c867..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws +++ /dev/null @@ -1,17 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" 0 0 792 235 0 0 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" 22 22 792 235 0 1 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h deleted file mode 100644 index 59545d3cf..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "rskrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* -The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt is set by configKERNEL_INTERRUPT_PRIORITY. This would -normally be the lowest priority (1 in this case). The maximum interrupt -priority from which FreeRTOS API calls can be made is set by -configMAX_SYSCALL_INTERRUPT_PRIORITY. Interrupts that use a priority above this -will not be effected by anything the kernel is doing. Interrupts at or below -this priority can use FreeRTOS API functions - but *only* those that end in -"FromISR". Both these constants are defined in 'PriorityDefinitions.h' so they -can also be included in assembly source files. -*/ -#include "PriorityDefinitions.h" - - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR 28 /*VECT_CMT0_CMI0*/ - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c deleted file mode 100644 index fdd006000..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -__interrupt void vTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_CMT2_CMI2 -__interrupt void vTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c deleted file mode 100644 index 404241c35..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. */ -__interrupt void vT0_1InterruptHandler( void ); -__interrupt void vT2_3InterruptHandler( void ); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR0_CMIA0 -__interrupt void vT0_1InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR2_CMIA2 -__interrupt void vT2_3InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c deleted file mode 100644 index 90f96ac10..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include - -#define partestNUM_LEDS ( 6 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_ON; - break; - case 1: LED1 = LED_ON; - break; - case 2: LED2 = LED_ON; - break; - case 3: LED3 = LED_ON; - break; - case 4: LED4 = LED_ON; - break; - case 5: LED5 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_OFF; - break; - case 1: LED1 = LED_OFF; - break; - case 2: LED2 = LED_OFF; - break; - case 3: LED3 = LED_OFF; - break; - case 4: LED4 = LED_OFF; - break; - case 5: LED5 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED0 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED1 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED2 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED3 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 4 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 5 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h deleted file mode 100644 index 96fd278fa..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef PRIORITY_DEFINITIONS_H -#define PRIORITY_DEFINITIONS_H - - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -#endif /* PRIORITY_DEFINITIONS_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c deleted file mode 100644 index 38457cc5e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Copyright (c) 20010 IAR Systems AB. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * IAR Embedded Workbench tutorial - * - * Test Program for the RSKRX62N Board. - * LED's perform different display according to - * which switch is pressed. - * Used to check that all the LED's, switches, - * clock function and AD trigger are working fine. - * - * $Revision: 1556 $ - */ - -#include "iorx62n.h" -#include "intrinsics.h" - -void ScrollLedsLowHigh(void); -void ScrollLedsHighLow(void); - -unsigned long pause; -unsigned long off_set; - -#define ON 0 -#define OFF 1 -#define LED0 PORT0.DR.BIT.B2 // P02 LED0 -#define LED1 PORT0.DR.BIT.B3 // P03 LED1 -#define LED2 PORT0.DR.BIT.B5 // P05 LED2 -#define LED3 PORT3.DR.BIT.B4 // P34 LED3 -#define LED4 PORT6.DR.BIT.B0 // P50 LED4 -#define LED5 PORT7.DR.BIT.B3 // P73 LED5 - -/* defined words used in this program */ -enum { - SW1, - SW2, - SW3, - NONE -}GetKey; - -/* SW1 ISR */ -#pragma vector = 72 -__interrupt void isr_sw1(void) -{ - GetKey=SW1; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[72].BIT.IR = 0; // clear interrupt request flag -} - -/* SW2 ISR */ -#pragma vector = 73 -__interrupt void isr_sw2(void) -{ - GetKey=SW2; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[73].BIT.IR = 0; // clear interrupt request flag -} - -/* SW3 ISR */ -#pragma vector = 79 -__interrupt void isr_sw3(void) -{ - GetKey=SW3; - - CMT.CMSTR0.BIT.STR0 = 1; // start timer - ICU.IR[79].BIT.IR = 0; // clear interrupt request flag -} - -/* Timer ISR */ -#pragma vector = 0x1c -__interrupt void isr_cmt0(void) -{ - // Toggle LED's - LED0 = ~LED0; - LED1 = ~LED1; - LED2 = ~LED2; - LED3 = ~LED3; - LED4 = ~LED4; - LED5 = ~LED5; - ICU.IR[70].BIT.IR = 0; // clear interrupt request flag -} - -/* Main program. */ -void main (void) -{ - // enable modules - SYSTEM.MSTPCRA.BIT.MSTPA23 = 0; // A/D Converter (Unit 0) Module - - // Set up RV1 (potentiometer) - AD0.ADCR.BIT.MODE = 2; // Continuous scan mode - AD0.ADCSR.BIT.CH = 0; // only AD0 - AD0.ADCSR.BIT.ADST = 1; // Start A/D - - // Set up SW1, SW2, SW3 - PORT0.DDR.BIT.B0 = 0; // SW1 input on P00 - PORT0.DDR.BIT.B1 = 0; // SW2 input on P01 - PORT0.DDR.BIT.B7 = 0; // SW3 input on P07 - - PORT0.ICR.BIT.B0 = 1; // Enable input buffer - PORT0.ICR.BIT.B1 = 1; // Enable input buffer - PORT0.ICR.BIT.B7 = 1; // Enable input buffer - - // IRQ8-A used for SW1 - IOPORT.PF8IRQ.BIT.ITS8 = 0; // P00 is designated as the IRQ8-A input pin. - IEN(ICU,IRQ8) = 1; - IPR(ICU,IRQ8) = 3; - - // IRQ9-A used for SW2 - IOPORT.PF8IRQ.BIT.ITS9 = 0; // P01 is designated as IRQ9-A input pin. - IEN(ICU,IRQ9) = 1; - IPR(ICU,IRQ9) = 3; - - // IRQ15-A used for SW3 - IOPORT.PF8IRQ.BIT.ITS15 = 0; // P07 is designated as the IRQ15-A input pin. - IEN(ICU,IRQ15) = 1; - IPR(ICU,IRQ15) = 3; - - // Set up LED's - PORT0.DDR.BIT.B2 = 1; // P02 LED0 - PORT0.DDR.BIT.B3 = 1; // P03 LED1 - PORT0.DDR.BIT.B5 = 1; // P05 LED2 - PORT3.DDR.BIT.B4 = 1; // P34 LED3 - PORT6.DDR.BIT.B0 = 1; // P50 LED4 - PORT7.DDR.BIT.B3 = 1; // P73 LED5 - - // Turn al LED's off - LED0 = LED1 = LED2 = LED3 = LED4 = LED5 = OFF; - - // Set up Timer - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; // CMT timers 0, - CMT0.CMCR.BIT.CKS = 3; // 25MHz/512 = 48.8kHz - CMT0.CMCR.BIT.CMIE = 1; // enable peripheral interrupt source - CMT0.CMCOR = 12212; // 4 Hz operation - ICU.IER[3].BIT.IEN4 = 1; // enable timer 0 interrupt - IPR(CMT0,CMI0) = 1; // LED level 1 - - __enable_interrupt(); - - GetKey=SW1; - - for (;;) - { - switch (GetKey) - { - case SW1: - ScrollLedsLowHigh(); - break; - case SW2: - ScrollLedsHighLow(); - break; - case SW3: - GetKey=NONE; - break; - } - } -} - -/* scrolls the LED's from low to high */ -void ScrollLedsLowHigh() -{ - char led_number = 0; - - while (GetKey == SW1) - { - if (led_number > 5) - led_number = 0; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number++; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} - -/* scrolls the LED's from high to low */ -void ScrollLedsHighLow() -{ - signed char led_number = 3; - - while (GetKey == SW2) - { - if (led_number < 0) - led_number = 5; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number--; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd deleted file mode 100644 index d977e66ee..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,694 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - C-SPY - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 1 - - 0 - 1 - 1 - - - - - - - - - RXJLINK - 1 - - 0 - 1 - 1 - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - Blinky - - RX - - 1 - - C-SPY - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 1 - - 0 - 1 - 1 - - - - - - - - - RXJLINK - 1 - - 0 - 1 - 1 - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - Debug-with-optimisation - - RX - - 1 - - C-SPY - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 1 - - 0 - 1 - 1 - - - - - - - - - RXJLINK - 1 - - 0 - 1 - 1 - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp deleted file mode 100644 index 6350bd8d7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,2779 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - General - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 3 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Blinky - - RX - - 1 - - General - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 3 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Debug-with-optimisation - - RX - - 1 - - General - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 3 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common Demo Files - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\IntQueue.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - - FreeRTOS Source - - Portable Layer - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port_asm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - FreeTCPIP (based on uIP) - - webserver - - Common - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - Blinky - - - - - Port specific - - $PROJ_DIR$\webserver\EMAC.c - - Blinky - - - - $PROJ_DIR$\webserver\httpd-cgi.c - - Blinky - - - - $PROJ_DIR$\webserver\phy.c - - Blinky - - - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - Blinky - - - - - Renesas Files - - $PROJ_DIR$\Renesas-Files\hwsetup.c - - - - $PROJ_DIR$\HighFrequencyTimerTest.c - - Blinky - - - - $PROJ_DIR$\IntQueueTimer.c - - Blinky - - - - $PROJ_DIR$\main-blinky.c - - Debug - Debug-with-optimisation - - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\ParTest.c - - - $PROJ_DIR$\RegTest.s - - Blinky - - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s deleted file mode 100644 index e07183900..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s +++ /dev/null @@ -1,199 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - PUBLIC _prvRegTest1Implementation - PUBLIC _prvRegTest2Implementation - - EXTERN _ulRegTest1CycleCount - EXTERN _ulRegTest2CycleCount - - RSEG CODE:CODE(4) - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest1Implementation: - - /* Put a known value in each register. */ - MOV #1, R1 - MOV #2, R2 - MOV #3, R3 - MOV #4, R4 - MOV #5, R5 - MOV #6, R6 - MOV #7, R7 - MOV #8, R8 - MOV #9, R9 - MOV #10, R10 - MOV #11, R11 - MOV #12, R12 - MOV #13, R13 - MOV #14, R14 - MOV #15, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop1: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest1CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Yield to extend the text coverage. Set the bit in the ITU SWINTR register. */ - MOV #1, R14 - MOV #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop1 - -RegTest1Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest1Error -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest2Implementation: - - /* Put a known value in each register. */ - MOV #10H, R1 - MOV #20H, R2 - MOV #30H, R3 - MOV #40H, R4 - MOV #50H, R5 - MOV #60H, R6 - MOV #70H, R7 - MOV #80H, R8 - MOV #90H, R9 - MOV #100H, R10 - MOV #110H, R11 - MOV #120H, R12 - MOV #130H, R13 - MOV #140H, R14 - MOV #150H, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop2: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest2CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #10H, R1 - BNE RegTest2Error - CMP #20H, R2 - BNE RegTest2Error - CMP #30H, R3 - BNE RegTest2Error - CMP #40H, R4 - BNE RegTest2Error - CMP #50H, R5 - BNE RegTest2Error - CMP #60H, R6 - BNE RegTest2Error - CMP #70H, R7 - BNE RegTest2Error - CMP #80H, R8 - BNE RegTest2Error - CMP #90H, R9 - BNE RegTest2Error - CMP #100H, R10 - BNE RegTest2Error - CMP #110H, R11 - BNE RegTest2Error - CMP #120H, R12 - BNE RegTest2Error - CMP #130H, R13 - BNE RegTest2Error - CMP #140H, R14 - BNE RegTest2Error - CMP #150H, R15 - BNE RegTest2Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop2 - -RegTest2Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest2Error - - - END diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c deleted file mode 100644 index 46d03858a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,230 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "rskrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. -#include "r_ether.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -void io_set_cpg(void); -void ConfigurePortPins(void); -void EnablePeripheralModules(void); - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - /* CPG setting */ - io_set_cpg(); - - /* Setup the port pins */ - ConfigurePortPins(); - - /* Enables peripherals */ - EnablePeripheralModules(); - -#if INCLUDE_LCD == 1 - /* Initialize display */ - InitialiseDisplay(); -#endif -} - -/****************************************************************************** -* Function Name: EnablePeripheralModules -* Description : Enables Peripheral Modules before use -* Arguments : none -* Return Value : none -******************************************************************************/ -void EnablePeripheralModules(void) -{ - /* Module standby clear */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */ - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */ -} - -/****************************************************************************** -* Function Name: ConfigurePortPins -* Description : Configures port pins. -* Arguments : none -* Return Value : none -******************************************************************************/ -void ConfigurePortPins(void) -{ -/* Port pins default to inputs. To ensure safe initialisation set the pin states -before changing the data direction registers. This will avoid any unintentional -state changes on the external ports. -Many peripheral modules will override the setting of the port registers. Ensure -that the state is safe for external devices if the internal peripheral module is -disabled or powered down. */ - - /* ==== MII/RMII Pins setting ==== */ - /*--------------------------------------*/ - /* Port Function Control Register */ - /*--------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x9A; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x82; -#endif /* ETH_MODE_SEL */ - /*-------------------------------------------*/ - /* Input Buffer Control Register (ICR) */ - /*-------------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set ET_ERXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set ET_ERXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set ET_RX_CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set ET_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set ET_CRS input */ - PORT8.ICR.BIT.B3 = 1; - /* PC0=1 Set ET_ERXD3 input */ - PORTC.ICR.BIT.B0 = 1; - /* PC1=1 Set ET_ERXD2 input */ - PORTC.ICR.BIT.B1 = 1; - /* PC2=1 Set ET_RX_DV input */ - PORTC.ICR.BIT.B2 = 1; - /* PC4=1 Set EX_TX_CLK input */ - PORTC.ICR.BIT.B4 = 1; - /* PC7=1 Set ET_COL input */ - PORTC.ICR.BIT.B7 = 1; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set RMII_RXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set RMII_RXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set REF50CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set RMII_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set RMII_CRS_DV input */ - PORT8.ICR.BIT.B3 = 1; -#endif /* ETH_MODE_SEL */ - - /* Configure LED 0-5 pin settings */ - PORT0.DR.BIT.B2 = 1; - PORT0.DR.BIT.B3 = 1; - PORT0.DR.BIT.B5 = 1; - PORT3.DR.BIT.B4 = 1; - PORT6.DR.BIT.B0 = 1; - PORT7.DR.BIT.B3 = 1; - PORT0.DDR.BIT.B2 = 1; - PORT0.DDR.BIT.B3 = 1; - PORT0.DDR.BIT.B5 = 1; - PORT3.DDR.BIT.B4 = 1; - PORT6.DDR.BIT.B0 = 1; - PORT7.DDR.BIT.B3 = 1; - - /* Configure SW 1-3 pin settings */ - PORT0.DDR.BIT.B0 = 0; - PORT0.DDR.BIT.B1 = 0; - PORT0.DDR.BIT.B7 = 0; - PORT0.ICR.BIT.B0 = 1; - PORT0.ICR.BIT.B1 = 1; - PORT0.ICR.BIT.B7 = 1; - -#if INCLUDE_LCD == 1 - /* Set LCD pins as outputs */ - /* LCD-RS */ - PORT8.DDR.BIT.B4 = 1; - /* LCD-EN */ - PORT8.DDR.BIT.B5 = 1; - /*LCD-data */ - PORT9.DDR.BYTE = 0xF0; -#endif -} - -/****************************************************************************** -* Function Name: io_set_cpg -* Description : Sets up operating speed -* Arguments : none -* Return Value : none -******************************************************************************/ -void io_set_cpg(void) -{ -/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require -changes to the debugger and flash kernel BRR settings. */ - - /* ==== CPG setting ==== */ - SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */ - /* I Clock = 96MHz, B Clock = 24MHz, */ - /* P Clock = 48MHz */ - -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h deleted file mode 100644 index 5077d7425..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h +++ /dev/null @@ -1,98 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RSKRX62N_H -#define RSKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#define LED_ON (0) -#define LED_OFF (1) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT0.DR.BIT.B0 -#define SW2 PORT0.DR.BIT.B1 -#define SW3 PORT0.DR.BIT.B7 -#define SW1_DDR PORT0.DDR.BIT.B0 -#define SW2_DDR PORT0.DDR.BIT.B1 -#define SW3_DDR PORT0.DDR.BIT.B7 -#define SW1_ICR PORT0.ICR.BIT.B0 -#define SW2_ICR PORT0.ICR.BIT.B1 -#define SW3_ICR PORT0.ICR.BIT.B7 - -/* LEDs */ -#define LED0 PORT0.DR.BIT.B2 -#define LED1 PORT0.DR.BIT.B3 -#define LED2 PORT0.DR.BIT.B5 -#define LED3 PORT3.DR.BIT.B4 -#define LED4 PORT6.DR.BIT.B0 -#define LED5 PORT7.DR.BIT.B3 -#define LED0_DDR PORT0.DDR.BIT.B2 -#define LED1_DDR PORT0.DDR.BIT.B3 -#define LED2_DDR PORT0.DDR.BIT.B5 -#define LED3_DDR PORT3.DDR.BIT.B4 -#define LED4_DDR PORT6.DDR.BIT.B0 -#define LED5_DDR PORT7.DDR.BIT.B3 - -/* 2x8 segment LCD */ -#define LCD_RS PORT8.DR.BIT.B4 -#define LCD_EN PORT8.DR.BIT.B5 -#define LCD_DATA PORT9.DR.BYTE -#define LCD_RS_DDR PORT8.DDR.BIT.B4 -#define LCD_EN_DDR PORT8.DDR.BIT.B5 -#define LCD_DATA_DDR PORT9.DDR.BYTE - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RSKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c deleted file mode 100644 index 9f1eee9f1..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "partest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ - -/* The following two functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1InterruptHandler( void ) {} -void vT2_3InterruptHandler( void ) {} \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c deleted file mode 100644 index 679224385..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Standard includes. */ -#include -#include - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* For outputing debug console messages - just maps to printf. */ -#ifdef DEBUG_BUILD - #define xPrintf( x ) printf( x ) -#else - #define xPrintf( x ) ( void ) x -#endif - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -extern void prvRegTest1Implementation( void ); -extern void prvRegTest2Implementation( void ); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - xPrintf( "http://www.FreeRTOS.org\r\n" ); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - pcStatusMessage = "Error: GenQueue"; - xPrintf( pcStatusMessage ); - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - xPrintf( pcStatusMessage ); - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - xPrintf( pcStatusMessage ); - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - xPrintf( pcStatusMessage ); - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index c5731752e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,15 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.0\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\bin\rxproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\bin\rxemue20.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\bin\rxbat.dll" --backend -B "--core" "RX600" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\config\debugger\ior5f562n8.ddf" "--double" "32" "--endian" "l" "--int" "32" "-d" "emue20" "--emu" "e1e20" "--drv_communication" "USB" "--verify_download" "all" - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index eb0814430..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - 300BuildBreakpoints201622 - - - - - - 20121632481300Debug-LogBreakpoints - - - - - - - 164272727 - - - - - - 200100 - 200ethfifo-status4struct Descriptor-status420020916610010030010300Debug-LogBuild200110$PROJ_DIR$\TermIOInput.txt10 - - - - - - - - TabID-20000-3827 - Workspace - Workspace - - - RTOSDemoRTOSDemo/FreeRTOS SourceRTOSDemo/FreeRTOS Source/Portable LayerRTOSDemo/FreeTCPIP (based on uIP)RTOSDemo/FreeTCPIP (based on uIP)/webserverRTOSDemo/FreeTCPIP (based on uIP)/webserver/Port specific - - - - 0TabID-2655-13188Debug LogDebug-Log0 - - - - - - TextEditor$WS_DIR$\main-full.c024512338123380TextEditor$WS_DIR$\FreeRTOSConfig.h07446864686TextEditor$WS_DIR$\webserver\EMAC.c001377613776TextEditor$WS_DIR$\main-blinky.c08647874787TextEditor$WS_DIR$\uIP_Task.c0226710671060100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2740238-2-212114172024143585142857755601-2-21981682-2-216842001002381203666119048203666 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni deleted file mode 100644 index 43d1a4018..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,80 +0,0 @@ -[E20] -TimeConnected=1305306678 -ComuniDllSave=82903040 -FfwnsdDllSave=303890432 -ChipName=R5F562N8 -CpuMode=0 -InputClock=12.500000 -WorkRamStart=12288 -JtagClock=10 -DebugFlags=0,0 -EmulatorMode=0 -NeedInit=1 -BlockBits=0 -B0=0,0 -B1=0,0 -B2=0,0 -B3=0,0 -TraceMode=0 -TraceOutput=2 -TraceCapacity=0 -TraceRestart=0 -OperatingFrequency=12.500000 -[DebugChecksum] -Checksum=-127835808 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[InstructionProfiling] -Enabled=_ 0 -[CodeCoverage] -Enabled=_ 0 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=0 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[CallStack] -ShowArgs=0 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[CallStackLog] -Enabled=0 -[DriverProfiling] -Enabled=0 -Mode=3 -Graph=0 -Symbiont=0 -[Breakpoints] -Count=0 -[Monitor Execution] -Leave target running=0 -Release target=0 -[Aliases] -Count=0 -SuppressDialog=0 -[TraceHelper] -Enabled=0 -ShowSource=1 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index d9a205d53..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 277272727 - - - - - - - 20121632481 - - 181624 - - - - - - - TabID-10758-3386 - Workspace - Workspace - - - RTOSDemoRTOSDemo/FreeRTOS Source - - - - 0 - - - TabID-16801-3477 - Build - Build - - - TabID-414-15843BreakpointsBreakpointsTabID-3320-15993Debug LogDebug-Log - - 0 - - - - - - TextEditor$WS_DIR$\main-full.c024512338123380TextEditor$WS_DIR$\main-blinky.c086478747870100000010000001 - - - - - - - iaridepm.enu1-2-2706351-2-2331284197024289206210119720978-2-22321682-2-216842341002381238289197024289206 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c deleted file mode 100644 index df730a3c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c deleted file mode 100644 index 72336d35c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma data_alignment=32 -volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; - -#pragma data_alignment=32 -volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; - -#pragma data_alignment=32 -char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static volatile ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( ethfifo * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #if __LITTLE_ENDIAN__ == 1 - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] );/* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_ETHER_EINT -__interrupt void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - __enable_interrupt(); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c deleted file mode 100644 index 11e118a07..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h deleted file mode 100644 index 50415a7f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1F - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h deleted file mode 100644 index 1dcc46865..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -int32_t R_Ether_Close(unsigned long ch); -int32_t R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -int32_t R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h deleted file mode 100644 index e5597d232..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#if __LITTLE_ENDIAN__ == 1 - #define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else - #define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp deleted file mode 100644 index 0d3910dbc..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp +++ /dev/null @@ -1,4 +0,0 @@ -[Setting] -ToolChain=0 -[Section] -WindowSize=726,544 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws deleted file mode 100644 index 808ac3c0a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,45 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo.hws" "RX" "Renesas RX Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_2\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -"c:\devtools\renesas\hewforrx210-w1\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws deleted file mode 100644 index ef666fddb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,13 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -[WORKSPACE_FILE_STATES] -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug/Debug.hdp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug/Debug.hdp deleted file mode 100644 index 750b6026931992b6ed6ccc4a5d22880469605b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352650 zcmds=J&Y{ZmETD$AVmxWIMKqvBnt?B8gkwTA0H`cwU0wS>6sjHI5VIgR}IYe^whj* zy`Jt?RnPly;?0#fvoj}~7>0p$;J|<(2n(2w1aO0eQ^gJz%AC4xO;=5IcU7J9zjeuJ z@pqR$wEJW{NwPt9mcDp*^!??3xpVYvXaBwZJ9l>WXIJz5e~^CXdw+O)?|1+Go3~7U zJ^$6>|NV6I(cnCJxtPr+*&toE)MfH&u=?MmuLpNe@1E`r#?#T{`aBtAi}Um3;@!)) z@4mCYbD0d!lXT}Iw`I_frIo+*v~o2ZrL(A6~iNZ~yuJKjzNFf2(Z0f8EQJvsfC_Z?Dorzs6d6 zSoU`|yG}<*v5)NcXUk^k*nXG#pN8mz*?eITvZaL}gYZ>ymL=)SBy};hJDN@1=H3lL zi%toW(rz79|H-hEzUUQa!}&ZLTrL*#^P7Jf_RY_G8F2%Cp3O!t47=jf{tn9FZZSCe z%b$!4TmPt6>#q-l-3xcvrM*}vGcRX(*}f_%#=>y);xt>N*P})LuVGpSR_#btZ7S^7 zGwW`W>A7Lg_-~b)&t%j(!FO9+KYy{vN}&46gD`Cu+@&>b4!^LQJHMslmY`i$1WrO)>;Qo*0tnR8{KIFT8VUy&R8F}4vcw~cAD-M?o!z5k-eMDyh6LB6qhWSIBBUHj2;hCkguusq%I2$XzTvR$H!xzSuSxOm;4 zohQE>rs;T=4t~CWeD|JVX#4CJ#(6E`$CKf|Nep!#VhQDNm=4d!&#wk2Id*;e>8FD% zzhJjK=Gn*e7g^jmR6O#@!Tyu?@7;gjFiya=wrl78+2s7mI89E!vK*LSVgXXmDRCG8 zlcH<+!^8atd+(n<8&Ael%cZQR^ap$P(!qE?o?R@ir^(>p;}0L+f3QUdS0Cr$a`)lK zBg0APN32|4 z;tp5y>(f_h4v{Bm37_bZM-L#WzbWv<4YpnQM&UlBaWTvq3OS;ZI2mUpQ?GZA1hhaI znH7+#-Q&ON?s49eI_oY@##c!igqb^=Jo$gpMVZez9Py!&V@zDS46YVO?E-+3gDxNZg5VQCSN6`3zM&i^w`K(L_3&Qip8rO z`HCn9Zzt=@!;`OwaBxB8gv*exh-i;2E<(O4Xbw)k3Tk!>R}u16P_qkY5%Lw$3=Trq z&NAdHB04_u6;TiF+6Bp1M72kt$dIpsqKmmvgnUIrgNxTXr6xhXBGP^K3sU4OqB}L$hp`K zBwF#qh(-_cwfgfL+Wd3jeqx-aqjer0Y=XmO%=QS?U){QUK z*8+Lknh{_?Z4CuML~ErKwr;)($+VC2lH%r%64{#kWeAhir%?v!Y4PEtO;()%>52k@ z_KzGieXxP?S)M!xn*6TFXIg6G!o(D@3nF^3!|Q^^G3}k<^N{XM1g=q(+s( zNJ#@C%69iyaRaMZaLW)v|>Di*F_l#~wcxw++wl9D~* zgHgK}k>X_mSm@l6rsC%^)mKX-deT`zsuhIztp9#-p#f3Q zx$NxuFkK|oH#llMx};9vZVRFti;N7si!McG=h z_6&-OvNgtvin0xS-MvgJrf)M;lu+44bj%ALPRp`ucn zi&K6fRFth5Jm;$TMIls_tsA_ys&t1(McIq9u}8KRK}Dqn2S-Jv1iR@) z1QnGM?1ESX6=e$sN1bb78B~<5I6hRAEgjr*3!m?9EX;hT0(+Cw6(iaRBW$ObFyb{5@`P&-^<|78RvhiByjQqyKpKc!O6!_~U)YyZ+ zYJ96xP^vF^*TP>4Diy#l1=aQlfkygLP^xbTw7{2wN`Er?XmFmqT+C*ZY>+0?BpYUf z%jDHy^}k795AL4cJ>46W`Q^%S*&Cll5ftis(LI`7%_qrgRjr?RHfr`J8@ygTS8v;1 zc|ct)#w@nu!h*rtBULrh!h%w<)@+A`1tqGm!h-tsP+>t6V4Sp)!h#aPoiYdt3kp}@ zgay@u*ql3iV`0MaNG>jTIFzuUWblNuB3C((u%K-4zOs@{Fv5b0!Emk=Q;4vjWblrJ zNeBxH2C1kbWiSC@LDgVnu=!v?$-cX${4C;fJWZCnrdl;Jb|b;@=ykISO$5iI*99;Q1Pkf~2b^nP1`jMKSQrNuR1WU0 zxiqk#Vvpcpz`*ecF6KO%1r`(xE|<&CS5PlFBf6CyN&gDU4GI4W$_&B&MkB8o{S}l4{OOX+yO`v>?gse# zaX0w8M8&JG)^6Tiy*v8;^1s|UdbYFw-u|6CJ2@#l&tC{lzw^C6y#4#%{^TEXSXcCS zN*EYpQQ8SG6|tdNFcs0h0BfCLu03?BqPZ8v_;NVOHW^VB-8};2mTRtE(W;2{4UjtF ztQ{a&+Gs}|RT@|YdQ@?uhd-*=0i&oDgj5j=ZXQ4+QpJJ-9I4_1q=($`1PhalQG9U< z&H*M>#DfPz7175*Csho9*F2R00-{vW4u*ZDox&+q#Dk~KOt4Z#I!Krl>4u3|s^|yf zW^=<@ZbkOq+27G#X$HqGRhryabt{0WqPkC@6DX#Neve~P8p>2r4xXmF6vM+aRn&v4 z0tnQM(g1>Nsu&Q3H&q;fxu;kbGcisT{oo~DT|WVIs>lbIXHGr??NpKOk@acFGiK%8 zxMz&Y-F!uZpD`+Tflec!D$2nj>e`$EgQ`du#zIv*fF}oBKvYG$N9Zt6(HNx{^C}IE zsz?Wy#SlKKV!&rt!U9QE)QcmfDlR~jrpWpfT&g16Bj+$MQx)mpTHdue6F60oFOQz8 z*Z|X~>jgH18nXcwj;dk+90vfHsv;kpzE*J0PDE8jJ$T=|qMn9TRV;Yy%xP>@ML9U@ zx>Y9$u&M|TiL$B)4gs}BD6|=GRT1hB!KLHrb0c!^t8S^XAIhmF01W zpLsf6e0iN*Cnw{pB&A^9Z@+!yU|!uH4o&yksP_-#^TwwiZCv=`o#mzb-PKEX8xsOR zu#J%(G1W*2+qm$JsTO3|#so-zrn6t?quP<>E~nQZZ5#C}P_d0QJ<8a|9~gM8*s+az za9;>=$Tpr7z+@X^AbRJ{uvnz>R=6qdVmRosjT`WMvBGINEVGRx@QSi>M8M59X279S znW1QB8#mx>2ory{@dBb+MN(t(&^Cs^P-6qqHg0^`y{J*DDNQ+{TMAL2hFT zJg?y*EU3(szdna`>qZ__?ODUgJ+DcKYI3XZ|^k!=e=L-9vy#nT45C@UmO>X zUnOT*lD6PY@*b)=%}HHfd%hLtijDs6FC_^LaM7TrB42H~%#2 z7h=gu3>-I%=Gkmi&So{JT&Wv~Ed)bXCn*)TP=PvG8@4JGflMo`Uu`_ zs;p2N1jI&-aN-8>Xp#@&-C;VqG#dz5Q9=8MG?d!BM;+8{ZC&jxSS8uMg-FbC0rZwcJv1n$NaVa?qUWa@_$@ zx20qNT(~&{j6y9X@x;$GwLV>$Mf}lFvjFikZQ8p_v4}rvq}|P6bnR7~+FiiY#a2q% z!NKaxpEnOj{BpzHeLnTp47JT+CtQsgK z{o+MWNXi?&mGtg z9Ntw_Gr@FR*j7=^U|3h0DWX+WGNweQS~4>Qesog!54xetB| zj38+OC9NiqPzRN}7(TiBGV3v+Tv}*eR z58x{9k^{MFdjW6TDlY{0s%--tB9#pah1K=}UIH-bSZx;|8&o7LCNQgQ1q>`UL#yp0 z3|4EnO7S(&O4@4oK%YTDz_;2~JkGgk9#`80cst^f6c5qWHUch3AZj;uF9^u1?M0OB z)iwiWuVU@a#C^4`fVa7ID+B?o?F3vcIwuS$SlfliY(jIwTVkRc9gf_Dn-Xc7IC2wi zP|$#}wh3@#yPjY$$J#E0F=TB!;8_WmOxCvH5nBvcIdT`pEKc*w+AhGgJA^cAd-2&& zu_$M4BjVt*wjq%6DrOUkh1T}qk+m3jw6+Uy@8NoaNla@yk%y?Y9f7&n^$nY=-V!e? z)LPpMIA#F)TH6UYL$09Boj|s>5#smOk%1K>G^0)Y_29^W#{mS5ZEKqV=XkdsCP{8> z4+2C@qn4jPL)2L5~1u_s;%~UQ-7-X)2F-)9gk1`r*ClP0TnWwe^c|XMi!&TG1>l zlejiH?pMGpES}grlj5uE)V%e}>038Sz!EvfO|Z(7g&Q7}T>ylfYGh&A#3p||UaCr0 zPVup@bmA(fRXR~?EUX%gld8d~(qduR#0l?uV>2s>g+&u5aOIQsC&650a1rXWoZLGR}0hCwWLl3aC5$;tt;2T6OxUaf?3_C1g&&~9# zF1$zNG$O(32C$ZIhlJIIt6; zO!!&d3m98$99rE-a6o!%9JC_S>JIu03<9E7_u_HsKx5VFF2MULm#TQ6wYn2|EUjxRi%LbagX6J1iEOuI@w}R#$ff zLU_fjLgDM`COmQ%187&b0q#XyUoa7Obu04FySgPXCA;2XWANKzh6To}n*qlSfXb^| z0jJ6p2)z@YS9b!k1uITyoL=3I$EgGj*sHq$XM49gCXst}6Cojdb@3SUzHof99sXSI zaWT=&puT!bV_5uReAQT`p)NZ}#euqN;uM7UTz>?SPAnyOJ{rGrq~0ZJUp!KG76c`& zzIimL{?ju4ENc#=zl5aTSHyyrF`!z$ilpv@IAq{BDL-mcs{-6Y8%@Z zzMQ1)i39%k{)&>itA0Jj`l6D$CxU<=qObGoO6p$vW$5fpHYnE45iH*NI~h$Hzrd&7 zC&b|iBfbhJyTi2U`&a6Ae%W22T-YJ&b*p9CAU!RD?#eNs3f({&M}dbM$Oy|GoV?cXsjvk9ocpOv`kQ72CHzs9~eNM|3s5s$t{8H)GWwWicP< zSRl2(4`R~=oU=l59axTzwr>mCSPOE!Q!a5kKRIaQ4-CB4=R$1M6Gv0){66?*h>a&= zQ$>2Jc%}C57TOpCOV^8H3(lh(Tj8c)`{Q*3@}$+16`XfOZ2E_QK-Py*<%oDp#KsIb zbSg8{iy}5|h|BBsu3E7EjU_O{6}tlF zYa}*?2nKmQEz}JWPmp8jFb248ou`van*KnUMu`%NjZH)Izw!%xX0-zr;vGD@# z3ZR!vY#jM)+gQ(;*w_(&)5OLWSn6ENKGee|HcmV;8{>5o8!zDA#`OyGi4z+?^6#A3 z_yV)G>nHYOCtKx+_2P+*BXBGM&z{)$0q50~7ehMVKC!U_f)XosDxjeCd!ja;JdQu; zS5R!Mfa?Rd#wMRav2jAw@GSSHB@os9QBoTR_q!_&)*LiHin0yLn_ouRWw~EIP|`uj zx{p=<{XhNGRZ@idlcAy8(7Hn7w4wF+g0d}jRH5YwK>ML3_UPe896z)^-yUv3p+n09 zS<`g(>l`yLKUSUHetb2wE){$^v}iprIka*x3|f)n(7Fy-Q{Q~4X8^*)q17s2!l5OD zXjyS@!9iw?brvVy7COOmk%|iCK)a#a6ujQ4v=TUOXqjM$Rx&BjHndLg7?z39hE@sE zFvWmp!m**Hf*sGsUPJ2)4z$K1uoYDeEwE2e5)f)=sU9a>G+r87BzRKl200HL4J{O$ zE+Hh;S}Ov3hSn;IafTKPj{ah8#{@J(O9ih~>QV{xGPF`~HR6;qpvurHJ+di{OGYBH z8-z3#=~6z8I2wy|K}o}lp+$lt$F(E_OAM`27&r_q7u;)dQNqwNJ^G#j2^y;`W+58? z3#}4d+d*JoXstdAW)`v+TBtaT7g{iQjb3C^3bPBX(PPvz0J_jB!L_GrNhTT>TB$tr z7Fscwt6bZ%akfabvOu-aTEUnF5VX)r!5LtM#_EL2LJK{>uEbV^(%4vNwH_Nh8VCz5 z5}c#ldWuB7LTd~OafQ|v0?)G5Bnw`ZlvI#UH-&DfFrUHtAuB8W<~q4fn2-Gi`io`T z_uzykCa17R_ugV)wI?S7H=u9#)+w+U8!sJCpNo$T z3{EQFtla$iL*PE`5ps=BwFZ`lwOaf0rGaIsfPH~A>v4U7g@ZBBiuDDSb--FI_)>j= z#VSC3ffa+?j62MD%wgqhWfrH{1~S2;p$b3a5PgAL6ue}qq!K`1V3lBaRw^l;FR)DT zP?(AH1r`aS6U9(x(tLrHg1yd$`2x!f&hkZ~uNCDBtglZ%5+q+>r5-1fG{_fNBX}t7 zhBuGn3#=2IBO#2>SSmvC1(y0bwoI;)yL(gW`0>F9#{;*7E>DQ|-r3)gJKzAveX*Eh zGJJts6}*zFDW;b<%o)b%HltD>`XdFR)mTy&TQz1=a}8Ol}25qI!WPh9va@OA7(&nM!Kr z^a4x5Zp}yO?0PYtCY!v;ue#6gK1r@-1M(BB%ZrfRC;2yyv%$+`v{;-?D1>hBz5nq| z4!+q4D2Y4b;+$u{e3j4{-)!Lz87-WDANp!G9UP3O^WFUDxkj%^N);d#CFS;rf<|mnQmbziv@nd4Qn3u)P7F$F z?9ug&_@Ja#tUcRVLP?D(V41p)Clg%z*hw&l@n{K z{FgV!Iqon5G1Z0e2TX9H9v3-J= zU?U}EdmIbXproW=@N&Q<3m!EoDH@!zA%rp}-3U)9sr&Qp-PZa_x|&f~aHXVhFpCuH zQ6_0ADI2_6tji{_OG(w>O3A5aFqo2xJ+d_oWJV~so6d|#u*)1Ysu_`B7sNETDJd8n zb*_aO5T~SKVWLw~I=JWN;+>L`J>rAGdPbzUnEhz*Q&KUw9)&1SN!>n+e-;udDO#Kl zl@t#mIYqXnU{OiE9@&FIj!G&9*UqkmnHZ_0YI&wqQazaeT${52(+G95Xj4huV2lIk zsibOfwprmjJ2_NI(ctyxis=TlbN;s-)hK?5d>B5Fl$j z`kJX$Nqs?HqLdT}{OuBXxgk3*-(D+p|GN92mxrOgO3tz*eVL?#%f(`TzB_t8rWn%S z|M`y`Lu&E!C1Xl#?F;KmJT_TeCh0U;3>*x1vVZvWaNz!b*W>vnb!%yfSSIi+&E_Rb zT%%GgT|EmMqj|6Gj%L$~xVkQI16M9Ey z{wI>$=xe2=l*uw{2$VWm+UZdb(^v{+>BTq7T1urXt@w9K^V{&2Ua;Df_OdWb5B~je z-dHwf=>_YL_Odcd51h3dS+!M$+J3%iAG;4KxHGIs)^0%>w>+ckEK3XWOVzOe@1(9= z;((#pTDE5C0le1%%i1iR5&MVZ0A+8M_P{a`ch}4+i`ybk1@Xiwo3r!;G67Ys7pJVw z(id@0us*yhUqsoRr6q7kRhFo-JWEf+x!!s=G0XNW9f7qBMdD+Y^;y~igO6SIXXz<; zS>QIBX)PPHG}C7g5oLvzwmeuLy6n)>5OI69p1xhOvdk?qjI&CV{-~z zzOh3P<#gv!EHr<+Y!w$n96I0F7I=DCQQsUu-`E;>-&$EC7=2?`;P9$kQJB85E$}Xd zN$MM$0tve!6*6IcV`pF#vUz=DTfve2E%nn%?Hl{)GoT1?-`JVQfjrIb8+!upgk1XL z;rqtEz%>&@@Nbzl1mZWgCd%;}djs=gu{mL){Kn3}+w!_Ig620i1}=D=F$U0YY|3L6 zqnZBg^wf>@Z%`0j<1H3 z!Iy_g@`7UP|McA-IJREm&zInQ4+MBJKFgb8?K=XJT0`LEHCkCxYA9A*Np6oQxCOy$ z=(J?h`bI&W@>XhA43}-MN|9{N9$nw~cDill`AmjlJY^e&>d#50P=`57gq@!I$TmScxY6S#2oZnQa5DLK^)lvh%*N4BOp-3SGDL%0zMcGC+@*hVDS1u>1!N(u%?ooitR8!M?; z7<`qK4(_?RRI8+9kN999s}U(KWC5=EavHR3UvLeKl^XrOFzD(q~!Cq^}2ePw$@Y4a(7bdU-lJZDg;F4L$45m7gS6 zvjH0%T)delZMeO$&!9yG*$*dKR((Qj!i)Q5PLYDRaPXR?!sj`a3gY5HbfOYZlq-nq2E)A4P1P)j3kR=m znS~4DvO#3CNGr_h1##_QtSpb2Zq6G9Zj)RdYONi5iVOEWw#xNh-aIzoD(p44l)j2v z58A}rxKCgc6%FFrJ?;|evIcS0;DxhGCA``OapmAl4;45>CmyMC5En06>L9Kj%rV8% zmRav0t{sG0>e`8-2XX1(Qp-taR6dBy_Q>jV`9rL#yK5j~Q|;y=x)35Z)h@8utxC0OmEwVaQIw3CFBeyW>C&XogYjM}s%pwYL>GG8n;ugRZ=~|y%P7$kkR!xPt zcrfmP!U}Qe;MBBIsL)wmA+8*}%Uw}Umsp6)_t-_#br#~P!P(TU9?4=0anT_wF2u!# zD7%PEWOMDs54-u7B?Gz`W-l^|`272S`l%y61O3I4@AM_(vc>s$w)uK=BX z!0H6h&AgEz$Va(@4HhzLE3-IR z=K!LCWrD{<6`9DvK?6$#uZAkA1pFCTB^aKSN(%K1EE7CaW`do8MS>(sG1QqDXJDmZ zud|`ez%qS-$5uo$5`C>eW?+4N0+PTl11t47P^4kYz#75RW;eWfXk}oX;2a5ol*UpK zY%;La&sisaRn>Qu+#jEOc=!16!3W1(uzO&w;J7aqb4(;Muu|~ysjid&AOi~p7a&e3 z19uE8(j$w~aAO=AyHQ44jc%;d;G(TY7mzfj7+51XXk0ropv1r;g%QNSYQbG47dQ;8 z(xc-Uc%iMxV(y_~!oVWI#T#K>h-Y z1lO9b9hrb%V4?CjUtqytl5#D}hWFx-%0l%5O9kT<0P_M11rz@Y%+`tF1=b1Pbgk&5 zp}W9hJ@#@mVi#B=I5W8w6baM?mKYMB3oI=JEN3c76pbrEHteC_#rP^ov&}af1Gm#h zti!RSO9DG>J>zZ(RN)pzrG z_bK_U^gTVtae_Kn_# znjyaL~xGz724UyWU_>#ri&k!DD?x;JFHyP1ZN!5n&8`IeH((%uW-|`aZyw zJp@7PyYbm_u{ddcE8-}%z9o=pD`pppw$^vyk-->1w!RN=Z{m7`$!zO;k;l6AJ%O3o z^$(l;-WoS7I9%TiICcPjT;B^gXRe^zort-<6%ayLu|iYm`hGl)Drit$-v&7EyR|aO zvg^ADiM#8o4?)DouDThT*H=wMO2M7)&#ta!(?Q9x&xh$E$rhV*y}tSnyYCa4)L%@7 z*<}pce~fE?I$eBuom?j|$R}zanwtLO$!zrE%NWFa#Lam!TtpE!9wT-Fi4o)$dtZMLnu&Pkv6pqO%2Vtg4IZ-4gD;f;#N;Fjv zCaW5R6_~|evYJ5xyhtL@!GS~Mjq9n2`jYL!_aB`X|+rs~3pVklYN;2O&5 zW)wcjYWB$9bdgh(lDi98{Nt;{G&lGQ9+fFvs(+@Euc zjbuf8L5u5JF@!0Z0OpZU8EDGa#lf(ta32cf#Mrk-QfJQQk~LSXd^2d zyii?{O&8V3YWLU%(*-oLlEL}XtqI9u8Ck`|Utc~zR8~4%&96^irNjBW@nZtS->MVv z01jBvdLfEnVp7;#@FJ@a`0Hhtm%!%b+k5Zq@6-sl0fQnvdiHQ{?==7Cy%G`dj&R)x4LVpdI@aKnSL3pR;U6elbjypXTTv^Z69!qSO7)Ox5_ z(uuM-Vbx%qRH~`EIAPhuxxsp4GYjK{MT6*nkxH1Aal*>MD5);_+~r@9-EDGr@Y*=x zX7<(FS{x^=w@*M5)p5egiL=@D{NbiYx;#!;GjUM8uGyszUVWUfZg5VA3gjY_j#S7A zOBXGX6V?vqm16PAtdSE|PTab#kI}kvqDW3yIJls4!WmU^!lFI0I9(e9)ZHBmWxYtF*nlXa>Am) z#Vb@VCoJ7(zrZS(6V@$WF(<4aECDF8I8`zyEZHNUFly$6MT2W?*UrqMIbq@QRdd1y zz@+F}o?SKyzWb9nzpJ5Qz2>khS_*59`25V0&sS1FZ1goxw{F_a_1J>d*Ge7v~R7t&BB8(^I6{RuT`H~ zSP5lw3*`CS0Uir#-U2VhwGxMPw(tTTtX4EG2Y~D za@@iVxWaU97&y6w6OY-3X3V$9NH=)C1xDPoNz>?CV8jg)8d0|}0*-dqBMffc!ig}< zZea;LgW(eH7FImsjDfvxfsmxR^PqY{hNdxISPd_Y>-@*?# zh5)+X!VNf!uAuXs$iIad5NlX5L)QUVIPy5upo;@6jDTwaw~i(&1}uDpEF-YcAELG( ze%-Z#17p(4AMmdU4?+l5-ys-$dhmF^i<|$>_x|wq@BjQq?rS>Azg!agO6a_iyC5IT zC<_A?Z{|r`X@HTxUxp}rxDD6zwD>B;X7zxPy&lMS{)MjGhQlRl!sAX@t_|z*~F)|3o-fHEFee8j!JYeyPQJ*N(uNXN4QE7Lc%_?Ep z4m-t#FsF*e$PRcqUsX$R3R#RSfgD9;iKt~Uasv*Z$_-V{Vq^!rOJ!EH7?}ad)*`hr zi&~5vfzigUYcaCpTNSce+G4-t@%7PK-D1=qeFh9s;9}&+qeqq$X7?}|+g)wpkp5kz;VT{~(1RSFv zW;@IjYXQ0@#>fn~NvK2QKc|Wnj4b)=<5-n3Mt;PLV~l)(Ol&a=MH+G*`HfK`W7IF; zUdQzdv!2Ar5CQBSuYKIRp5x*+1}1OUQ|ww9qrURA#449DvILGNpkl_z5IDiE)R}Y^ z%^3LsiHa3Jblr@RDUUM|x^%|K3%F8nD{iuS#>h&@0vaO=A!=y0LVB%?#{Ld8%=bKu z+WkQ{6}?=6l{FnL-}x}oPMpLPMZ^2EtE<^`P!wuRlf}THohSQ;PY(y~|93r}M+0#a zixHli+1%A}>_t(>5u}>vmXgi;YIii7UPRMjL2%q#f7O4ArUSp|&J9FF4(Ic1aJg8_ z&u{)2O}`O~WWtt98}n>7dJ#=G5l0*xKV{OeEA1>9_x@%kqiA}DV5f)AP+<^<>u;$m*Z$+*-F4;KdOunw5~0PR zzLCJ|!di;g_oB8W)VC(Q8Z_;;z^%FQ?Zv=a7-26aH~@e)~*|=@9pgqxu6HwJsno^y;TC2jl7Z zYB(9>A6s7}*@D_h|M4Gw=r*-7KTs}Fd-UgIe72bvWYzliT}uv-6)P~_Wd-+$g~qWh ztJXIbRL5~S%&<2{%9mj_S46T++9LoOpGcBbi?wO{8$z-wIeVI;XAk%GPV;}>`^E0j z@n@%1UHQou$HfFv21MIaL9!Nt96FVk`)T$fef{v>^d?~39dd0oAnOARnAV4XWL1JR z8u-4Ctaf6jd%Q;4ZfLJ)y1ebnIa@VEzy}~4QOkO*N4D8P)kQ@L=TRP6)gbCyJ?+AI zdq-9|aqF`l=9O~di5*$dV31Uzsh4zQRTJmV>rKskFh^E1SpHrl5$3x%vcka-sg@~j z`7)SW#%*2~Dvcf$8c=~A?S;@qG;d-)jiG%k7jjU{N zB8MKDiAy>1o{X$=(Pv|1rGpuzSgkT&hmjRdFf!}Ivo4%?1V&ajxQ24N8E?JFYWB$9 z^ph@8O74ESB`V2o!l55%iAu5yX8Ii#S;^q|bFIvHZbeqJ@T)4a;=%nn_wf{2(H>F4 zcq1h$&BcsJKZPQz8C?} zB(j>pwY6(y=Gz>yy5-*%k<|}oL)Y%?Cq$xD&Uz_CRyi2!z=I&Ny21Hp<(-VqcRyrh zgBPkRva1V8qx(pYZ7}_chir3$^QBu8l8<%BDklE=@?56`7_R2mr?1kSpik1WQc{gz z2=Vj=;novaEI}tsVe<*EL3d63T12+Immw<=`0M4!DY@4T9R3c=ZV@aU zRaeD#dw=^A$IOQLgJn$jz~UMi*|6$-ImnW)S^FGoSaAXjY*>Lk`nHjI4Xe(#Z(A7G zu;MVBu0$9&nbxqXdUR+b!x~l{)@JR@YFJe&jA~fPdQ56q-CzK;GN@ryfm@^vZgW2B z!hgbQRbWiR3I?evcf`VCN=;Q3NBJCvG_1<$BqZw8rcTcrqd8CIz%V;NQ|IO2=d8InZYI)HqD$~J18FMJ1tZNohLs487uSjm#xbl$ zVWu&xSaAQyWf;SX^yqa4vuLWZm~m)EF|5YVu+T#X_e zbZ6Xx(IX#?S{~i+KFMFn&jyp(tI5mByIDH=7t8;HdrJRtmP1+jOr9Mc;~gO z$Qjv`bWXNPlfds^^;s!Y$h88o-s4z3k&BE=c9q*fNhLiULL`fLW<>@fd;@IQNtVrI zO&5l2i8^rzY+!r9xKf6t)~dLGQ;cs!=b?~N=oAl|HpAfg`@^ALpeSya0tbX-T zQRK9U?a?wb4b|3w! z@_KP1KbxpoTY_lJ5HKdjw7 z%6dFcSV~-l9Waa-@2nF=l*u>syT%eD<0AK_r9`>*4gg&hvUP2CQcDS3{2R%Jhisdg z3AY@K)W0=4%D7GhMB1ZTYl^ed(hm?}0EBC2t5fAjBtsHVN?0pcsy;C1F_%ndK zz0rDbH1dqq?h2$yLc-V+(BM4?X(+RJ>v~l0(Umw#0r$d>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 206 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N_Renesas\RTOSDemo\RTOSDemo.c" -[TARGET_NAME] -"" "" 1229201492 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index dc6ff5222..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "rskrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR _CMT0_CMI0 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() nop() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index b97be45c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -static void prvTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( prvTimer2IntHandler( vect = _VECT( _CMT2_CMI2 ), enable ) ) -static void prvTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - nop(); - nop(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index fcbc233eb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT0_1InterruptHandler( vect = VECT_TMR0_CMIA0, enable ) ) -void vT0_1InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT2_3InterruptHandler( vect = VECT_TMR2_CMIA2, enable ) ) -void vT2_3InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c deleted file mode 100644 index 72bdd65dd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define partestNUM_LEDS ( 6 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_ON; - break; - case 1: LED1 = LED_ON; - break; - case 2: LED2 = LED_ON; - break; - case 3: LED3 = LED_ON; - break; - case 4: LED4 = LED_ON; - break; - case 5: LED5 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_OFF; - break; - case 1: LED1 = LED_OFF; - break; - case 2: LED2 = LED_OFF; - break; - case 3: LED3 = LED_OFF; - break; - case 4: LED4 = LED_OFF; - break; - case 5: LED5 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED0 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED1 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED2 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED3 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 4 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 5 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index a9c750c96..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,627 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\RTOSDemo.hwp" "RX" "Renesas RX Standard" "Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas RX Standard Toolchain" "1.1.0.0" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Debug_with_optimisation" -"SimDebug_RX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\SimDebug_RX600" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas RX Assembler" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX Configurator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LST" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C source file" "C" -"C++ header file" "HPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Configuration file" "CFG" -"Debug information file" "DBG" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Configuration file" "TEXT" "EDITOR" "" -"Debug information file" "BIN" "NONE" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas RX Assembler" -"Renesas RX C/C++ Compiler" -"Renesas RX C/C++ Library Generator" -"Renesas RX Configurator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX Assembler" 1 -"Renesas OptLinker" 1 -"Renesas RX Configurator" 0 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas RX Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas RX C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas RX C/C++ Library Generator" "" 0 -"Renesas RX Configurator" "Configuration file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas RX Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas RX Assembler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "Renesas RX Assembler" "Renesas RX C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas RX C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas RX Assembler" -"Object file" "Renesas OptLinker" "Renesas RX C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "User" "C source file" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C source file" "C source file" -"C source file|Common demo tasks" "" -"C source file|FreeRTOS" "" -"C source file|FreeRTOS|Portable layer" "" -"C source file|FreeTCP (based on uIP)" "" -"C source file|FreeTCP (based on uIP)|webserver" "" -"C source file|FreeTCP (based on uIP)|webserver|Common" "" -"C source file|FreeTCP (based on uIP)|webserver|Port specific" "" -"C source file|Renesas Files" "" -[GENERAL_DATA_PROJECT] -"MAKEGEN_GENERATE_MAKEFILE_FOR" "0" -"MAKEGEN_MAKEFILE_FORMAT" "2" -"MAKEGEN_MAKEFILE_RELATIVITY" "1" -"MAKEGEN_SCAN_DEPENDENCIES_WHILST_BUILDING_MAKEFILE" "1" -"MAKEGEN_USE_STATIC_SUBCOMMAND_FILES" "1" -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\SimSessionRX600.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SimSessionRX600] -[OPTIONS_Blinky_Renesas OptLinker] -"Single Shot" "05140d424600dc10" 5 -[OPTIONS_Blinky_Renesas RX Assembler] -"Assembly source file" "05140d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "05140d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "05140d424600dc10" 4 -"Linkage symbol file" "05140d424600dc10" 4 -[OPTIONS_Blinky_Renesas RX C/C++ Compiler] -"C source file" "05140d424600dc10" 3 -"C++ source file" "05140d424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "05140d424600dc10" 3 -[OPTIONS_Blinky_Renesas RX C/C++ Library Generator] -"Single Shot" "05140d424600dc10" 1 -[OPTIONS_Blinky_Renesas RX Configurator] -"Single Shot" "05140d424600dc10" 6 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_Renesas OptLinker] -"Single Shot" "0ea704954600dc10" 5 -[OPTIONS_Debug_Renesas RX Assembler] -"Assembly source file" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0668bc424600dc10" 4 -"Linkage symbol file" "0668bc424600dc10" 4 -[OPTIONS_Debug_Renesas RX C/C++ Compiler] -"C source file" "0668bc424600dc10" 3 -"C++ source file" "0668bc424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "0668bc424600dc10" 3 -[OPTIONS_Debug_Renesas RX C/C++ Library Generator] -"Single Shot" "0668bc424600dc10" 1 -[OPTIONS_Debug_Renesas RX Configurator] -"Single Shot" "050ddc424600dc10" 6 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 4 -"[V|VERSION|1] [S|LANG|C99] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 1 -"[V|VERSION|6] [S|PRELINK|SKIP] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODALL|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] -" 5 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas OptLinker] -"Single Shot" "0668bc424600dc10" 5 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Assembler] -"Assembly source file" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0668bc424600dc10" 4 -"Linkage symbol file" "0668bc424600dc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Compiler] -"C source file" "06519c424600dc10" 3 -"C++ source file" "06519c424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "06519c424600dc10" 3 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Library Generator] -"Single Shot" "06519c424600dc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Configurator] -"Single Shot" "0668bc424600dc10" 6 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_Renesas OptLinker] -"Single Shot" "052b2d424600dc10" 5 -[OPTIONS_Debug_with_optimisation_Renesas RX Assembler] -"Assembly source file" "052b2d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "052b2d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "052b2d424600dc10" 4 -"Linkage symbol file" "052b2d424600dc10" 4 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Compiler] -"C source file" "05140d424600dc10" 3 -"C++ source file" "05140d424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "05140d424600dc10" 3 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Library Generator] -"Single Shot" "05140d424600dc10" 1 -[OPTIONS_Debug_with_optimisation_Renesas RX Configurator] -"Single Shot" "052b2d424600dc10" 6 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|SPACE|^"FF^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[OPTIONS_SimDebug_RX600_Renesas OptLinker] -"Single Shot" "05140d424600dc10" 5 -[OPTIONS_SimDebug_RX600_Renesas RX Assembler] -"Assembly source file" "050ddc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "050ddc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "050ddc424600dc10" 4 -"Linkage symbol file" "050ddc424600dc10" 4 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Compiler] -"C source file" "050ddc424600dc10" 3 -"C++ source file" "050ddc424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "050ddc424600dc10" 3 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Library Generator] -"Single Shot" "050ddc424600dc10" 1 -[OPTIONS_SimDebug_RX600_Renesas RX Configurator] -"Single Shot" "05140d424600dc10" 6 -[OPTIONS_SimDebug_RX600] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_SimDebug_RX600] -[LINKAGE_ORDER_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 8cb532f6e5b3875447f1b9258e68c7b43726a8a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219796 zcmbq+2b^P9bv|K>cfGy3tZl{xBiRP@-c!ebHIioLu``k^X?AuEK_1U&cPBf|8qIo_ zPJloHA^hnrkdQ_QX@r(QC;<|Z03jWckOoO0J)~Fu-#PbQN$*`9>5=TuezQC8JLjHz zzFW^NZ-?`Q+~4kg)T8zmCra(}E9>p8N8!(->487rqJF67;a00STP>b$73#&A)=aB) zJAS_d|E~fbK<+b0fS#m5m&2fITCGyESdP8pl+yAqVZfnQYo^((m0HDVpOQ;xP0L~6 zK?9s>5bh3*n+@ZR_Hm^`voMHlhOx+kN_-%n4}?LxTP?p_iT#k21A1Sp$KENu--Y+} z*xRMods?m8B3XGw=jd$M0QhjO(X7ROLQ;Wj)EdMYwA8hhXN0vNom!I+u13_ui0dJJ zHtkmYYN}N<-xy59%5=O!OXUfH9?8hYcqX;jQ zCmZGZ8RZF6G|z-J?N)W+2P8$ixS;*;h}S4*KPtW6NyY5@q_@|!<_fcu^HYZXd&0&s zV9K90j<*22T62?r#neyh^=`aA*DU9?v#s~gU#yo4%_m9#=r32NlA~VN>nZ6qk}sbv z&N|Y2XrG;&GDX3%4zDYdQyEDb##d|QO5yQi0QI}a02c0%0LTE`Q!?e*vJmg75%|dw z1UKvRmEsddB(UI@%1@HsBaaJpzgf;nfZeJdyj!whN1@n!suuo_aPitvC?(z_OO~9U zkzO7zR9b}+>Q>Wll;_HoW~*MFeymPsC%UFUuXGsb^4VIU((tPlLOxDHo&s{#ubghx z3iW0MRktwd&-%@CBy^`Fbg)oI^R&=BS1Y&5&6$TZ&JAaGFX8It+U&UpCCEMnxqrUg zXtpHK$;m>)FQW97$}Kc`&3bi~?7LOtt?Zu|z&DzO=6r+Tw@L7Wlf~K7t*Lq$R#b}T zOt#+@&dwgj&CSo6(SU_G_RytnVRp8U^a%tsxU($R38w&(7W_Ar26t zQf(?lrlGSG?eD>$%rwXr>KdTPb@%GjtR`<~u~138Ps;6~Vv(w*-)K_PQ=fi^R$~oh zb{32N)b~qoA6+b&YBt1xa(!x6GVh2Q=kq{H72BAGu7*9kS3zf+F*C}u2KxIIL@BzU z6Z#@I{l#jlUY&39z}eK5E{qJ+y8}xb>*rT46dD*VHe)Z;d9YfiTNJD~Q%3!qs@7Yo zrdH7lPN9umkmQbPx!Sy*#mzi$TEgC}u+wGqeT8PZMU5QSVd^&;XC$%fl$c*aGmqwL zezw#)=a*+orWLpHa!?Ck3Q#K56K|Ci2XW5#M#H&pi-z;wF5w=d>^ohqSIVia#Av5+I$_%HaX{w>B%?zb-5-ny^nOSJ-k@?-E7$$n3~Kpo zuT?O;f@STkN<g8hDKZBtMjVDZfFkQfB(69yCHl3OgrLGO*Aade4$w1xCDUn9G zQVJ$z+Ab?8-Oe?AG>_bP%{(wCrEx^%h_N)0uhu&fRF?u3(-<5bE=dwP&q^ZTriUbv zn~XgaI8h@t9)^|5wdTySBy~bdRhwWDfteaR*7QaejVBd+zEN&D>DHv*MAMFuwi!EG zc%2Wz7iQ4{RtilbzEJbusV%w*KLd1Y?pUN&o29`qO}RKn&BFB4$K-_M`VC0KjH)fm zbT_5o^A+^3(-;BF6>1ndmm8*zSk@iuJAk{YnQHa4FPWq%p)^qYF(+wF75v$9sYOx` zNK(3BvDAFCe74+}m!P`sBWSH&F3;7-RWlO$RNr>g!1;QEsF+hpoRx$IGR#GtOgB~4 za_ZrJ3S4v>i;`MhCCKt-y-+N}Gew>zn^C8w`_aYvl-6biF?JN|#Scltt36AdQhBy; zE_N@<8RqqmvPMtWEOpRE#NxXoz~QBiX@0onihW%|-Vj1!5?q~Y`Hgyv0+T~iKVU?t zp^Cj;(tL6d)>qpap%zm$>T;UpL~Ng=7OD4OPHevfgA<_%W6M9+99T|#bgA%RiGoAR z?ZxgzHQ1zv`$4VbSMU=l_W$fEl_%$?pM_tLtE}+Hqf5O>m^Dz|QJO89e%N}svxMQ) z&r9a*qPK~UjC}2UbmVLIVE#OH5teQH+nr94XF?QP;0}Z*REVnib@U>0<+*D8oS}wN36OaN;+3lII5DK2 zubB4Jf*uA`HE%~t>wQG0zEY-eGN$;;w?-Rc`2H^aX z1lT!+O7(edpB1@!^i;Vh*}iLPw$PaQw4`_+zsAG`BM}o)pc!1C_&~>;U%5*sVRgCt z5iqE6;ljG9QSwt^B|D~S2}8a`1YSC(09h~hPt^+GsnNtzVJ|jnS+TE&@+)Q#YJvKy z5Jxc$l!e+mRckD?R@PU#rb0dnU2DK4M-b6Qe5Kl;nE8}H-Oso+TG@~I2cnzJK-}`( zVfS2jp}qbvkHA_p{`5?5E@ZOuv9Q3&z5wDiJ-ivOTlgFL__=b)M>}n%TV|YPi454p z)*AuS`dR|}DGf9<+;o`fl7%`=>LDi>i}Z+OtV^Nu zw@Qd>{o-6L-6|Jns=uf)Rs(dnk5NlfpOTRK6%wru=2$f5BbF?EHz`!5jG8cs*koXF z?$eUgsgP8oiYcQ{zN%J!NfMe+LRg}wsb!-&U&joD7wssPSZ*|aHJT(w#M2mK4@!PU zk~~3a($J^bny+9t^ z!Q6>)Fppr~trF}IxtE4Q{7Cq3hz4~0H%0@x{+pr!J^#%T@UXG5ppAT3Bi|VAD?&)e z??gnp{#Hb!=XWI}7ik`Nw#t~v+@^6>1vy6fQ3FilbDPIbBd8*ZYdJXD@TGQry{{p z(-LgZYi>RY%6n22RPx>^sMM3Apwdr?g33HK3MzYF6jZJtp?W2wv4C20vjpR^J=dI1 zw3L@g4on7BU@u9T=p!j%)vNVuuQyoBR64}Ni!W1Pf`q9EZK zC-MAf$Vn&hf@sL1lXzh?WXVZ<`&gvYYEJv}j`QMZ$TN=fl4!^U$N3HkY04QAFCy`C zk#J|6vk`FQ^fQrglg`38oXhsP-x>*b#(hQv9PD!+h=iMTpFR%faXs}Oihx79-ZLZN zCcRc9T+w?l60YPej>9E6AIS?5aL7k;DH3inxf}^sOtvH8O3Cx%a4D`#sf&?tXHqMX za0{t#8;47?|I!-~aPVLHQY74DdNmTRm|ly7E2Y;X;mYaFNVuuA8KYXGKhwTsxc+9g z$LV9-nT#2Aj?xGJWz2|oG;T6u#=9ae%l2ijjjh2ozBljLc&hx=OQ6tr}N=xNa*~K zgyb1^y;1WMtws%5k4FOfe&U`;z`CEfD-y8jC+;2#bl67c@sWVO?<67t>%Q}ZNWiA= zJW&GfqgivkiG6jmb59!!D$dt3V?nigDJ_9`R?=|XLW$y7mC>*w$i;rD#P^PeQ9XIv zcoVEpC$HQP-`aR=eur2-G2ry{-841RtuI5}FyT#`a6?l0h++^Yv5{{b()>l2_ zC%#*PnPfSpTX0?(2{-9{kAySHIxQsYyh?(ZWI0A$aQ|N<+@$+z31^aZDOvY563isa zG3SE!+DN!b?{yN+Be8k67j#lZjR-fxu@qaeD-$!^k@%Bxi+n;^8MAE8$Gq zj!xUTGXj#+b{;1oP1;V2(sp7Jj@<(Y!Rm>bNHE8jU_2gODBM2x(T* zdwU10t(G?cH#?8b9Ggqc#jQ)z?JoVOEUvX*p%P_7yGC=q@f@npwGUabdCB z?#wNAE0U*;S0s^}O?sCpx#DVjaeaQX-rm~S?ku&po+XJL z4TzQ6tBY5kD`Bs*vGeQQmDT4+0>{Dv?QZ+31in51Hd$`8yN^f`#{&|L?XAuB`tq|S z^sNSM_$Y37I_-64a%ORTdA0o|EoyOjOIXwgn%u19UL0Ajv2?M$yuI4)pe%IT&zDTS zF_0ce++J%>bvD+pck{ziT6gwkR@T}bDx&nWwAfzTSnu2VGD&{-%K9p>-WHxoOgwFUc0j1y@35IjizI^NYNs6Al*L3 zHAhHCV7vz*PfPkEFv&#;bByf4(OPVw$9^Onuw5wE9~ue9-ik?Nv^u4>ADL5OR_X^y zbAQw6@+hSbPx*DM%##!On2tFD@@5DHTyq_iJ{;Jr!&W%ornN^Ea4$&$}^?o0{-)y6wT<@BFsTSy34O-b)Hpg=<4BN7`y0~@G>>d>$n~O{B zl4Q0d88DlNb0f4Z-Xnw9tum`m@7L3xv zu6)9n11uJ1&up>OqN`}k=09tj*M5U&VN;XYQfQ%e6RKP>2hyzfu!Y`}4zp*_!my5d z!)*Su-m{K+gLIf}gcfEewxcGVsy$-8-9v9l-jqoTLGsRhlKd`un=rz!MUx(A)%Wu2 zK|fg#*5H_;YQ1I+7{Zt8W{0T-VGXV+8`f*q;F1QzxdmYjo+;s4RGs zqvY93#*stilcwpi-ctJPBjZL3LFuPVTVuT?dG?TTqJ<#&w8_840LiDx!=}z!2$Ij3 z{9A8HK11@R<**PWpEdcn-jaNl7`M2JZe2(NzdtxE30RrQ@se2>}cQc@J zxAgw#YI|92a_3{5xV@xojD0<10(Jigu>Bz=6gP}tEa(A1`vXejehc>K*(p;rt!?JJ zXR(PF*Mn)xY1kOB=K9r@tu7Ad)#*kW#;S`%Vm~TL+)5I(4HcK{=usDqjp>#xwA(mf z5_^jz%898RtTg!T$;VzTN!(--t1i&pHo~IzFENi2c_16 z-<ROUoWENVI826B8ZDfv zSI6n!rIFtiCYOh;-@C#Iw}hGI&PwHa zvK)8LsM9VEU3`Um5ipT{jg;4*gxi;Rtt4@R(!lv_m4?ZO37lB@I7;wsOrZL$wP^?} zEUPALpe%f^WXZ8L9A)kI7bMho4TJ*q@F0QvHkbkOXTrEWbEP7m(R`v#*1CafCuZWY z>KiQ#QduN{wZUN;6q z+k4(P9^<@eG=}$^tV$SFIvdz*^3t&o=R3zj+?S7qc;7u1lKP&pko5nPAc}>?9J2JX z@fhd3#$()9jK_Gd9FIx8YCI}%+WB4SHKpu+Zq!@v*G9cf zety*3)US_voBoYaZ!^C+>TUM7M!n7b_NcdoFN}IS`9hvRqSb@vYGJX%!X#D(bi@cD8r>hK1No zh=sa|NL%lb1Ye9?7?H$6osuvEYD>lbDuwWMc)-jgAB4WZ9AY1#ba=qbP%Y4r0TAY# zh$=K&2=MXMmePH9-+PHPxJ zG1asrbp0?Px(OyTT4Eln#g+1Owdo_mRN)!1@v4>4U6jTQ%~GjMS+9@LYg|l@tKFvj za^0a@ac_?Zb_slk1ZKJr11p*Evz7KiN*n8Zh%VB-L8bw)aJvcDXx=5Iw3puV?dc{G zZmHOT{r|rwHNw|Y)CY0Xfoqn30%-+G_p!~5)zyb-LkLzS>$so*SEVg#gFYDsA7wBt zbNaY1kfWc=67~RN5dveC4@oeUeyv_D%@B!gFFOPhk z`^w1Ig+G&Cqny^&29ud5X~$EvF;Gr#-Q4KlDtLdo!k6`{tBzZnSImyG;v|(;Y6@-& ziyl^@xazewOP5wQOqr!p5lDpToBVUhP88`*mm0nn-PCWEi8^5|s3m}*hs8kyZSOiT zWSfP(&c^b^uNl}y0+t`x#NuB_Chj49xLc%d7ALI~k1%4kjPDf8Bj{P2jQyoH&T<^8 z8SFV-5Yy;-MN13njkJ4|QM zt>N+>Tr!FcRq(kHvU0}smcA;{dp+sYL&pBjrbaAoR@*nj`Cz(BxU-5kSkZE5TN|7V zL$77!)p;yLoz@tu^ss&9uSxcCYA7qMqF{Mdp^CcwL5j9K+ z57 zC7s~Y!qzdTQ-3LOx|h^riLKBi$)T+nYnc8kNy7wbpmpY6-QhiiaJO1OjlV=Iw(1c3 zdV01xi5i5KMbCq%5jO>%2EqX{xm=kc3SH`ET0&}x0!VJ&3=+T@ZG{CqNcJ0GV_`$% ztjeJk*5=g&E7pwwT&UJdG1F988o4X!H>uQlJ*bu5iJyV&aI;2T9PTG?YS1Si9RhI| zMxe%wKh<2)Fsm6-Id0$+To~uZ;(wrVrEr=(99HOOWAU$!#x>`uNMldJd5xnTK!H4P zS(~M6waf&^YM8l)o2^!+XSEW`Y5Qn6f#s5VwSPmO1!70gP3}BAHA|=#jN3$Yciw$E zJ{HAc;xWmDE@ENRJPM4`+_!Did1?B#@j!RQ< z?KN0Je~7*H7@^Vh@ZDO!RT0=6Oy#iQL47I-8&_iS7i#!=*c_dPf~%sS^Ad}j{>^H? zxsnruSrNC2fr8Mr=_UYRRUOynI^r)6HZlx5G z2JTdjht>jaK^qGRDn@3MWMz>{gz9LyOHz9QOy_E)&E)ddf+>7PjjDOZtv4FP&W<(79&XqOskWtTJ4FWPb&Nw6jHIa8or&hVEWh6;Edine?Q7N8=VDZ3C7b~WE-Dc-M#&tT)_!R@jJBfcfiNZG;b2HSVWoXwA-`T))=EAL+-GINcSwz zDue%`VJE}7kE)NkPNGk*#5T7e5PzG-T3>b5SbTh|QP$YMlCak)y^O_Wgg61Alqa<> zEak_Q0G(aH-d2siK|&u^XgYqO^p+*$5smDd5SO5*6jXntiavzZ(|^zJOBvPrX&#_V zx#v|9RA;eLUZ7lR!yA${8ciW(9O=>M|B!SaQ??TtJp=pX9`oG>%h%fGf$Y6U(tASb z<$ZrRnxr*@hcT->Z$VZsguiOIfNw zcjH?cRS(a3t_6zu?e@lC7G{saluITp3$c$7T(-J#Q^_pQUJWXjo+MdAdQ=(e#;L=i zI&JAW2oQ}r>606q-T0r4!Zonbw=_Rnj-8Jm(yp}hk)s;5!UC#W_nyy5+KvOIxm?FN z>(*lD!d9HdT|;d=3Uq+}?mZuqutyA56W_hZ^n{kFJ?O#=#`I*b*}rT-iCD4#{dQhT znR2drYWVRs$v>1A)%*4gOiNfwm9gcLSrW7?+rN3ahLP~x;wsv4GhVVfvg3oO!s^O} z_4ab?YdT%48$YmlWp2CMzB041y4>zik4Lmv?fe1k4=1z&X4{1H?W|F+;q7(RF^)lAhb=y8UI?xr`B0tA4(P7vIrrdBu25uq-s22^m_8JA9F-xy+4Fe86 zOksMbO zn5NG`sS^e?gl|bU9b*}lMI5tWVRO9KO5pean7?jJL-x8>ZTV%wLi-i^=xy)AT;^Px zC3#y|k^_u1p6|&vrBqLZWjRYGB4j1?m@qu_F|9LFIx2TPd-TD6K6Rtc_MVl^x?7Why$04> zleZw(8c6lD3Ex_neK_@wRc}5w;c16htKNGQsCwF!5IgFH(v*H_rEzV&bh>^v?N(Yd zM>NJdgLbOZURvAc`as2q=h&v@GhN~bAsndrx3CaJaqvZL?3f72E$PH8xq~dHK7NS~ zh!!ZQWwCGv7-!bhDbzC*b|b@R@!vARgf%SHhgoKzB{UHY3wex@%>`_Lq7NlXEla!juD`#RQs>vs zKS-~4;D)=eOD}iUo3m4<-_Vmx9-1;dh7k` zsJE$q8}&B*@6y}-h`i%&dMp%TGl@A(WEG};{WiOI0n4YuCGKz^6xVKntXv}kV@A{u`$iC#A#ipf8Q z#E>mam;YE2*u{JF|3j*Y{Mz}?k+0qV8u{A$?~$)l|1ggQ^hmg5p5P@d`YO z%=Z861CI9m(BS(X{F+=o5hm!E0&%%V7sgRDQ&24Mi6B^qlT7im;75aS8ZVmCWnm8~ zEQO~i_|wwavC-wJ9s&;STF0YlP z=j-=YxOKPsZd^>iw{~9d!h64Rr}Ub{k(tLy?+-TS@sTN9O~<3cUZ3#8zz0gij>dwM z)Jm)thlbgoJOuiEBN>x z4=&Ao{nMzYfvS3f*DZ98Sl2dK7K~RKc?Hk6?wfG8D?i{)`$pB z8NGDOtfs>0!BTaTAV>qym;m4RzY^qAh zsVpl(mCs{OlCU>$GJ{y7{;874pn6q(VlS1jhX>TtN>yw_LLM7Hno@X40xO3GimWkv zOOjC~HzZT9&hd8f=Sxzz+h+B4_?RSLBnc1Zo-4?bguHGb8A2M>7bJl}-jsmJidmDl zN|dUE$^iipli0JR#P+jw-2TPl|D)R!OTQweSvXx*3q@Ge#^q)WYEH~{2untl@?kQ@ zs0GQWBWx58{B?b9WTl#)6YZ!F!*sow&2fJBrmE=whkuySO$BxC{K;CH}^fV;)0}^(?cD11rF&b=_ zieD=UT;KOlPXM8VSp2Xgq1qhPk()7!Zrn<-Pe@Wa9kp3fk8HU4_>d%_v#lf$bU~5& z840W1I)Lrfh7U+Gs&Q8Nz>warqs#rM1m1xKF|+Jz&D0Ndw=VSpVmP|?aow6&VI2ah z-i79fh59EX;9&s$5-yuF1@O5VX-#X78l;*#Q>568(yZjK2ljNijxDV%OtC2rOW%3N zUF2rSW@$eF35s`}V{?B&GM9`{>Ei+}98pAQ_`?$R2w}}^n$><%g6^I#(H+shq2F8c zwd>|_>sdD8I;kWg(UobA{9>lLtpy$o2QRN55a5+UBhi&4_L4*apL1`X*saEamePIO zE1Rvwhp<~F7Jmm)q`{&EI?w}QhfMq$V1~l>adO4e6xQ4|I>Dt&r0FlD1P>`q6rRF# zzFe8qCEJRjt0ZeRobj7AQQtFR$0=>K8i!l4VR`x*Ap?gwSq-GZI3*zuvPU|bt(DD{ z^;mpfGw``^(g#^%9e0Uye4g%JAlF&>P$t&tqIX^mGwq56WQCLdG(|XkOs#an7VZEg zJXx<6O2tB>nbnTAVC+AXQp)TB38d1b6%(A6D%T&Da9rFtrha%N`%9}ETW$2lT8~xS zt|i-9PiaO{w4VrIMJPxAEotKHktR%TDw3+>oE)w3z!3D!r ztetNDiX_mto7M9YQ+aN3_S|nt5?pmS34Ct=dz`0VppjM%`?}SR3mj75gBgtnqe;+> zvE>RKGHYCrBu@26s^GF_N(UR(>lhiJG=W!#Rz)=^82wZ(Gdi{quR{hl|$%`}@e%t{b7YnVj@%h&zFiVm&`$6-;^ zM8GZZ{+?mzxn8Obu}~)mQM%yG&oy2t;SX~~-B@35EiQFeF1KUP(ruts?M>0A@=z|_ zC{@=(MqzuYOP$C+N|j$VN7YKDalh2;-od&$ZG4)hg>S)J!gkTc)fTpmu5T>2w_0mU zi`e@Ad8re)QC;mB z3fP?C9g2l|ZAurV&xM;_?uW1$j)8t{TEcN#)W@Ako1mMe@dP=CF2kO|sylWe%;Bt3 zVdi1Umt5OJ@Dj3Eb=JRW5qC=xVMm8jDK}~z3D2#22u~XiHoqBxnaP>znk2w2V<-h` zP0`G6NHW|*85vrVsTE4jGrt*hr6r-cAYdIxZGd-XrIHoIxpQN1XEEKRmUu-MEUSm$ z7K&Q;62ZPrf^qp{7z!aFUnU`yLU1)hRq5GceyP%5Xm^)8i_6QM*q>^3Rtw5)EpQh% zutHDBk4Z>wM1fpych|6V7yD}o$QJs=xf)yeBFREdc?HL-Ru)&+ws3OG!+3~>M3#*_ z;aFMU+{T2%4C^frkM34B)0~M6R5JE)3B^pUu<@;>wawT~5>Qc~fg77wWB)B>br8wyuSz`uwR+hj>S_==?^*&`&o>b6$B)|IG3JSBqze&P#i`3WqW(mh-AGkrK zZ;`+}E}z9Lo;FX^q&`fc{L1MT?nyQ6zSV zI=ME@&QeE5y_lH{Ta7x`;n`WPN=-e=w3KmwgPrrL#=TPV36E+q(~OyEmK9!8sj0bW zTuO~24VWI*n`g~Z%W#W;!QKnNUMx9mFBKK;`tBRqi0N&FdnF!uG``+`ga+ie`bArA zIg{IPOf%5YuP?8xUx+kXfATUqL@_E`$Kc`z`1UT%Fo_MJMf7M2G%HH`j< zbDH!&ODY@86CH&(Am#U3@*7nO6IgYCpVU%5F-AAwssbP5nt7?trQ>0Y69`NlB zhzwu=-;@d(7j6ZlG4+`UI2uYfBH*Z>@+I7WfrLxXO27dFX_x4NgyRaWGNOm>^AeQn zpn{@{d|Ct;ddSlfj1%Sv62-nK(0G?Fs#cxlnT&$sD>TzBYV^qK2}ytpq7pz2#Rll_ zlL{icsUOGsDG7I!+C9A>gfAXdO4Wt8N>!d~RtHz?;{M!N{G(C@cGKQMY(V^O z3B(qeVeAW~8p!Sh3UH8&+@_%#oO}dy`W-|co+BYNs*Z%G0 z&DKLJ>&vl+C4;&7gPwk<^nk=B`=6l{w7gz|@%WVzHobL>HlHDVd$P^r*FmW2K))#A zxm_T92j9>}thO!Xs+ajKe1JUmJPFpzJnwG7NTG6{L`X05Om0bn@yHn#(f|bk;FS%8 zEPs7ug@r?T$oT@P*mHTo##suIu1ZelhH$%cp%*88rIhFm7|`H?{8`*P%Gb(q*2`zm z7`#ZDkx=W8z$aIw`dMAzJ_l3qU;ht{(0ZsAYkZ-kk@)GKaDRrR@;G38y10V#RrRw< z>GLI}0d!NNUm&3=Q*_e?HzsE1xRog?%xZHeuB>9}&q>D8EISBQ_I|r$0maubw8Nqs z1`%l0=r%>Yyw{KtIk>&rM4+R*zTBk!m6a| zz0%v0+gI+V`w8aSTU(14+FJ{Y2&%1LSk?wxhV0Y$=GD#if(D%oTYG%_O1-_b-Pytd zOcB%T;>PxR*Az4h4HL)*xL>KVz4lPMQ$0`r+%oqbSSFn6;Tzq>rAsp_7cMSfMWr*h z*tuj(vV@K(p&I5Tot5rYBsMK&an~8F2*rN~>&i|N%Qw@PnXUgmMC;lK3 z%=wZ8Q>kigPU6p_;hevShI79f4d;C=8ZP;l(Qv81l5hd=_9nvo%{r{E-2m;SI{}lyD-v5ti zz)9yn#{ylp(fyXOnPK1=_fb)Ru+jaWC`nKIlkPXh0zEFC-tMtU1Bj%(M@IurdOM;4 zi{8#?z>>FXEHKHLN$!gRL}rrLL<3GH_e290lY659OUY};0#jVWQv0I;&!i4S11_Wv zjs>RKkLhDkfbe7bP&D9V`fxO0F?}Q&u#`R;4OmVej|QAdn{lo+9_%$K8Lrov8^&s6 z;F*jWxQ^5aKW5Chc?@teV@Ay~Fv~V(ZyswS1J7h{iUNd<*&Cw)C$p!<0&`rM(SVb=$3z1ba}&{krQEF&P>nP3;j~t@>^pZyg1PrZf_aaR1WP_af~k=O-%f_x zGs(P+D@BCIYWZiduBO0>lJHII* z_w%$ISIyxYXLEl$9#x#L{r-4VtzP;)38iK^d?74s7XsYGafgrmAM z839KXrxXPTeZ{djhwO985pYyrrXt{|vdl!mLErRPoJ;n(egqusbDtIg2m9RFC^+al zJr?JYecoII9PINd5pb~2t3|;`OJH;GnND7MCXb((@5; zurGZk0uJ`2&ql#P--3iwLpHitgrc&A#1o?dCld(?sA@WEte)``j)d!_%<<)d<3y_7j(U2s#;fRk=o0`^jNDP=b!;d&`^47}iFqX8$qoCNHp>`}^I zUc#x74y{wQN(sbYtBGHdn)E@a!_ZGlP?aCniie;0WeM2RiA&fxdFNN6KskBmS0!jK zd8b9mJD-t&%1giyuAcboXgKF@B%B)4E|jp?39tX11l!Bk($hCZE=p@%M|u!*BmLj# zC21@e2A3dDFqFP&f=%};TW$Vm$(A{lU@f>EyUgo~1$>qTpJbtHemhs!Br}c=0mr_s z(Uv9q6&l}e!Iq-7r1OMA&99qFhS?r-(9*K^_Ao7hK#rP%J){gTSPjHWN!)FjAZhM4u) zM!P#BA(egg_SW`V+g$Nv*>@wWgPOwTCXTw{0?Cbaa%yw&LQ_(#JcOKdy1W`+mw@|~ z@@<@lTVFQ!0azwzbqWPCXC-w<77F-qX{kC**L2Xg_)2fq&6P*(qAjB)qIUCHQ^?SC#$gI#=((wwwS#2L@5GS814)shbC3ygdS&E_w}$`5c2qiS~uEfxi#( z49UI6R0^89pw*UM?YJP%OOk4Bg+`O}9+aThYb#J}*xcT>5cBy1%anaeg3H8H^rk1v zeY)(J0`V3Jr#VAg(eB2+Br&U#q>RK~1~zGvjg{n4Wfy_y8({Q_;jaTY6ssMiiWL_^ z^L;E!t#(i!YLvfIQa)fv6CVttGW)06{g(C{`bKN4QNJju*9J8gFNGL;ro{2lE4_kC zZ3P{=HaFW?JzEeeZ8vqntBrZgy!24xh^cig)SDKlLRKh0=)vNC0{H_ z4p@f3J+VKQL=N>6V=pc0vSwxDWDsaLqf3^lyjl3`gZN$^V(*hu7%+uNc)uoh zlxhO@RUea7A3UqJ!08(cC$whkzTca8*B5OM3w6;m8ylC-Xeq0C*sr8`#1%WJZMY0H z{@VX@asY+O-$my|hxZ#2{;1x8#@(DMY?IJN&bBPLQDcXUEX=(umdp)CrnuedwAZ^d z5>a0fG`r#~5tRiLt;W*D_VV^>yF){)w%M*|;g6Uknk!3}xTaL392{q;zeQFw)bOOe zY%W5w6dz=?8g5|}W42aWxMNpn9M~ydTwK4(=9y6gs57{%zH@n6Dw9F2I? z-GBzrCl#7^)%w+0e^TM!CE-sg{N}~0t+kbv)+5+x*={A2&_|F*O62k3M1~4EO6VPu z(DnV4aP)U^?V;7SlK6LRo0SZXz^-?lbgMhjBKsh;9P9lGGekbq%HLoeYUOSH1PL4v zziWbaX~*dkazka4L0KA#SSjB#0rNZ;=51`!R3%Oyc^s-OWC=UDua7OEQ^x1(RFf8%|ec36{d9uqEyj|@q&yAgxw{DqI!?v72@gg+t`=Y;{ zUjgMC{BdkD-D==&V&4`w*3Yk8*zUAxa$H+k-%^PfVvdDvOXv(QU0m#Nj&Riw-7nW; zc(AD4HL(@{er>K*<_>fErR}w~t13*mFFXK@wmU|^u_ zUDC3ay{geKUs-Bz;)=G@Dy5{9(k*P0LQk!3AaJsNp|$~UDmnTr$WRL(Ga%R4##x~= zD_a{KeBW3LK2{POOmKdE85cR=!#(nu3wjQd1G|p%%Wu&ecWuQVc9XtHW96AZJg)q zGDRqHG*IO4L6F9q!&x2YxK4Lt%d+o-l6{#m_H}UdgK9Cs2AMEzzs1Bj?{$|pEoIM> ztTTD#!ikaTGRnljSuR~uFLt||%dE6b^|hi~CChVa*fF!%S$<@((?)O+?J;TY`P!;` zC%3s%zu4VaUyZ51UtU~|m-i^Pt#TE9K#F z3cPe-<-8s)PV{~gqbBXH3HlsxoMsP03#9IBmC*SuxDyNyN}7iATfzlz&{zo4{XNRq zhjdzasi@1?YXaBEC;Cw)WjF+Fn+Miu`qZu{dD45v)kicP7d?z<<6;y`!E3?_kJ zIi?R&iQ+eI+?5ooA(qnE&mdiGFtjczI5jS46P7kFD1ZE()@~K2Q>z>67baHAIG92Q zwWc;Yv$#f137ynw{5F2V^Zh@MS3uW*>14$ADqh4XhD4@* zDy-%n;$n4+VzvFg^_~e9-8g?98Q?+e1lv2VK3^n>+&*X)rL?$>=C6HW0}G9ynv2P6C1F!cHqrO< zt>07g6~5myw%NJtqq!%y-7|r2Z!dP>HM%D;Ud7Sep$;;A?NDXCASczLkj9_T=KU;w z23-CW-Okt=FZ22-23Nc+i7_ZGXJG;nu=MY=-Vgn6_0~EVA}(2aKmWhbTijUNg#TbM zD$m?v_u>%GzEJD^c-USuNf_b>r59?APPDfHCtT7>fA#;O)D0=65AjeL_&+K2LQ3hn z+W)iCWJoEU-yf>fjBSSbl;fjB&{jy>r?iQ`jGuv$nvzQ@x`nCL#jRn4U)1X8me+u~ zdu4Ss+^o}H9#!m3b^65rPODJpU#e}jw2sJnV;k3`E-&&S?T{x;M`?LdMYL)gkKiaX zF7KeVr&g_~+A%txOk`TK=#uuAYCb!covkh%Y{p`)KCxWc=&WIMcXbMFFcHi8?h4iv zx|o5qzX|^b*a&NP*O$L}?bNqL(vCeJ199%=2JcH~FVpgWj0-Cw)O3Cv-4t zEX3n_h->v)xD%H?|2ToG@SDZS2{h}7Li5H5{IjsW+@M3?{h^GS1#WNguS@OC?nUs1 z&H?wk;4^b{mn)pMeT837Zl6Ej?!=2y(ofJy8&ZlF+e?=)=sJT9Fq|DE&*fN=yP+NQ z&!8dT{wHcZ!SNPy!V2qGrdG~xz#xnal%kJo9<8C=J;Mx=O2b`Ri#4!7*p zn!vt_E$oXz-1Z|<;*Sd@u9h)Sgk!2;BLi3PulRpSu6{vC0WZH}fHb%P2W69a^w+tv zsfo+!T_7L;HKugv) zfSf~RT5I@oX~_R`vWDX1nZ?cu%@((Ub=0&wfr_Q-+U63?%?2tG73W@Io!Gu&7&JPr z%;D;z&eb|^@H6cjZcpL;egk^!ZY};QDNnD`c?zaY^PzQw^t)7v5ST6S{rKEYT;ZE= zxCNqjs&%7vWYtSk9p?IXl|;jD>35ZlN5a3xuzn5kHhLR3;}WY*no6%dX&b!7%|BO4 z9hOl|zn=H%mOAdDbWj1Yn*1s4iZKb$plXzUU(&x8Dn8^+DtZem-HR*h4a{m*+w9_R zx+xwgToX$T9vsBmQVU!Nn?Zw5Q`F4Jab(l>TB&KfFN*3>gVJ--urb^m&2BtmOdi?3 zy;_@UwQp(LRHJZI^G2U*pu+Ph{2v&$gKtWeOfqvJ zq!QDgCEVtudQ7f>ozSqmSE0E>4cA;rxVms7Q&=Le&2C&McRCxL{)8gf zC~YH&^>+M-R&9+0OgzfuidAdRNF6pQAs78Blm-f*S!oO?O=y+^9VIN< z=qzI%v)yh5+6Ot`3?Ar_!hUINY?E zCc@HchU*bjbYH4dYdh;;p-t_k`B{36!>ie?0-C5VOre1AO zt52KTOM067PD!1aO$QoIjQ$#nM6hn%?O7BzygX!HXk&5nk(DlOJdFRiPR44#!`-*u z8NJ@cq@VUYQ<>r^0LGPr(RUNvv%2rwLf&g&TWz6;U{VL|vYJfLw@ax2Sd)qHOr$}F zIHp!QYBZ*Ve^*yvS|tipU@Iq__r5*8p+=CPriuqqc}b2V)3D0|GJ z^)De)0eiyzD~n4-`DqeACOm9P748XUMYQAgAqttP&4s-cBXYsfk0R@$q}0mqoVZx&H{MO^LvqWxgl-eZ;m`IjhaTQDpBZ<=ar z$4ygtgFtEpOxU!;YA{FRMZbqQOgPZ>VZn+vS0Q%D`>SR&1y*Xet3U{+X71S6E0@~b zE&iG^6=_TOvC33FbvFmjHkM+P8rG|?EG%OAa+wbA#Ob6EiC@M4fkJe*7H7_B-H`b8 zOG8qD8h+8AWuuy*AO%4@jojF*p68bsTrR8cE>}xs$QOCplxzz% z3ub?rMY>1c<_(wh7qz8pfSC|2yc;2Yw`Rmzj=gzsTDA31=aTU$6M0ZOlLD0iXPW+n z`P{;GzZUOC6bjE){MA~KMe1#ohb~dkYI8(u*_2=Y}$a3};y z2`)~?Qabfax?J_tyh>7YD;EqSj_%D8r9J6XrYs9?4~p_d^x<^rjOS3{^nmb?R6*(B zmOuEZ-MNgdFGWdTF3>YhY%g(Rgp$rb)m5?x=?-a{-XS$jnUN|f7&2TT9Y~`*Tj7U0 zInTHkn6?*tZj3jDVn2b0TkUbMD!A$9^jqecTMPT6~up1 zN=N&jqy{&=s-3-tUfObO8Y7FJr|P=HDsaI#f1e0}BD!fjWGZ&PpadZ@r%3Nmlgr<( zr($O*KBZ8cTWn}bYx~&K=d`CSp<_Mn`@C;T;Ohrc*c?>vN)l>SluTO1WEB0j(!d!x zC6(a5(54D%a1EL`zq)uK{_~=cE&#lFoDxLmVFr*XNr(#-6F|+ojs=oO44>3+6Pu@X z49@bO+ATxrp>@M|nsL5>D=6yQ+jJSSWNzrY5!)IE{rI5dM}MHu(AD`=Uf6E>2L>71 zbmm@toed>@Xz}@il*E8lboIU3(anYDf+TWtukdWI+x#Asynais!PPs^XlGlU&Sr3O zX5qn_Xqic)b|1c@fe&jfUd2;e%iN>PbT{Hpk!-G;a$**}OpKj|+G?p6$E0}_)7Zr2 z?8dVO-kXpyWb!KZ+43wDF|xGO5ZsFhjE`{i-U*t@j&)w|@~-uf2*W6AMP9;cp6HiHHFdv893zsGNr zmRRl`sn&#u;fjE*Sm7nDzp1N(zD~R$qu6~1pYQ`|N zh`q4OeFg846sW=3paLC^#ftKp&!5lK#eIqY)xeR;^$YQY)@Mx@@3IWSY<_#Q$&--a z-pe;gHdSpMG~K8o8gqVi;}Oo);3i1rU3BMaPph$)38o#*KPM$Lp%T*PK4}z6c9NV9 zJD444KaX}C-1Yz5J19B0R|uQ8O*0X$@TPFYp9?+IeOnud)UlMy)E2gI&b$?v9Mji{ zNXlvx)mCDb;w64nWIm}AvEb@d2$lp_x@CORQK8={p*5d`R=2+}lPDbix*BiyqCIgs zNJ<9M8SsF!)a>Chg_!z!Vu2k9@uzCxWB3^mR@2##Fzv`t3g~Y%@uZ)gps83VaYCC0{SY;7(E2?G(zhGlGcIT*43wRSf#Oye$uTv^wFHS zIgV-NR`tmgdLwcMTuxr-(PZuO);ZE*sJ7Vt*DuZeo#MTU#=pA4!TI?8I!BgPog=Na zxp9FOMu#hozf4l1D@F}nDBRpT7_G{#8Q59@1T}@|U3A1~3O>aDNvC7QPIQAn>Ga*E z?mJRx(cyP0mLf+Uo-=)(`Xvo!x2)fyXTZmmcS*t?br!ztEAG2!4q^mBo$FA7(nX>*N*cNEz zpE{sfUoZ1bDSolethKiAlmW$*(+l*uAhm@(N>^=ylOGQod`CzxpD7tInO^r!mD4(3 zAiGZ*kRIG*9mS-l>#V*mtTZ#A^qa}!Gqpl%NBp4g2KH`8CA*{bTHCJmXcy!Aj%qW^ z?uXE*>r>$z4mv%!Bswr=d!bI&TK?4i8z@y&h<@aB;QCE&}8<)VacJ>zPz%rjZc$Z68Ee4>q`iQW9>S= zEG2nQAW58L33y0N9(b=hUd3;dwCEuS<=!5GG<4r(WmgZyloZ<8BKF|oQaXKB^ErD3 zFAXMkWu+UGdbuQ(>Sq)a(82A&SnRlf!_|6OE3g$f?trJER1MhP^D>dFI*FG{VtU3v zS*F49sHDwOq2)Fe{^QH`=2o`wxp`hIR0*Gw%IADP`?XbsZK~^7zhCdN5jxsIfA5#C z-fMd!RKH_?PjV(F3fpNtDKH*nO3F~H=9BihPrIoFfb?m#xx!Qq=aX+WLAw}I% z6DW=J zEqua&CF=62fHzG;tS_dD&r2Msc>CZ@oah8q+we>&?SZyTZEz`KcNTUxE3wB*Syf9T zm#Nk3jgHOa(Hb4At2!=Y1AL3PWYwXy?r+zl2rF!M_X<`S)a5z!w;_w&^lP=oZFWgm zYus+I;#?_o)Lp#@*zw2|N269&=~M@=8xtGx6MCp`4an1iE)J0C+3XN~zp3?EGnSOC z&l>03=H0GqyEUv&+UjTwrAPPbf-@_#AJN|bcz6uw4As^j&D(~3R2ycE>>qEdqOrJO z(X@7#HS`{0k>2$uG5IB(Icu~%q*Snu-k{sg-Mh6}p9(uFW9M$jINVnFfL3UY$%hyh z9Gcs@uGPA%k@%e<ac>G0Csq?o~V3;biZN?vJfB$mWN4J{IIyD3fFb*5M za#uAs2XqduhD9G2$^mIm(-qp0M^^zV1@F^oTTRgS=y6_15A$tZ=PSf$s9osw2Ks2- zhyjv%)nC}U^0aN7f5N#ZS|*^cAko;;3O&6slA*M-P_R;stAe(w=qP9Qn=!bELx;U% zd_O8#d^r#iQvXopgYR5KZhHl{A2bc}u#HVnxH4tjZe|^MWNiF;$)22O4-fYGHVlT^ zsHcyg*Tv5wr9Fa_VjUHoE`b*KP)wMkm?PXD{~&&|ux3TAv!^2~RRHDk0}1}jU*n&Fyz z{xMVV)vL-=e=nK%;s7D)AG(8AwWMDl!}-4e0-e|vBQfMd+W0sCu}ZchmF!mx z&nBm=t&CEkXCA4v>q-t+%3dEDrtS%Fi+^x=ntI6H2zlJ3>dGAX8b8q zBjJxvgAM{kNMc?};>w65bQL%1huMA)2W9Qy&oHf2OnL<)UeZ%ftJ=*EqszW!eJEYw zezdos82@{T$M6_ZtvK9Gcxe*Erlq}0E0;#-EXs;<-uc3r`p?CcQU&93Tz)}pqZ=td@d z8r#PSrb>=C;^69B`e0!m*|$wL{w@n@NSsoc@uwU5_<`%a?8|DUHz zmKE@PiWTT$Q!vGe5+{p)T~}F4@7)7AGT!eF+#{p%s%Aciq&TBp6k(US25eBnb0jnF z8d4geqZi#$F*719eye1~9i)RwpE^HJq(BAzf=BZz4?iyjsqP*vZQ3n1;WLtwd*wnM zy7=98S^RZU%xzBAs&=E0alLrD*~Tb@+vD$%>STOWG8DP(Mf%Q*`5!`~iuxM=4Hh>O zbkuR-uSog-z>qUjdR#lC5!hVf_Ey~p5h9i15$ckBAKy-dYh^+{hcF)(t~$Hx6qusNT&Qso=b7gzO!d05#P zJ5=je#(v*vBDhwL5`#rUG0xQ&{wOVC(-nV6YOpamrQ1qNQ#gF8Sli+s>i&&ku8Eu2 zl%?-c-F68Vgi&$#)Fm(L{gnN&W5>}2wpY(A6AXA}9Xlh3;Ote4Lw z^Vw8Bo6cvE+iX6Y%jXjLoRiPF`J9)}CG)vdK9|ntGWi^wLEeBn67WX?4oScx3AiKy zpCsUv1iX@fTN1#r+khj-k>|*D!le1CKgzsRN%naH<2ZI&iB4zdCTN1J62etpndWaIORI zI&iN8|2lB60}nfJu>&7FaIyn0J8-iDKRa-=15Z0}wF6%}aJB<)J8-uHe>-rv1CKj! zxdWd&aJmDpJ8-)LzdLZe1J65fy#wDnaJ~cYJ8-`P|2rVS0Rs*waKM2B5*)DLfCdLV zI3U6S6Aq|wz=Z=c9I)Yl4hMX=;KKzUF8FZ4hYLPj@Zo|F7ks$j!v!BM_;68RX~f)5vbxZuMDA1?TC!G{Yz zT=3z74;Os6;KKzUF8FZ4hYLPj@Zo|F7ks$j!v!BM_;A683qD-%;ernre7NAl1s^W> zaKVQQK3wqOf)5vbxZuMDA1?TC!G{YzT=3z74;Os6;KKzUF8FZ4hYLPj@Zo|F7ks$j z!v!BM_;A683qD-%;ernre7NAl1s^W>aKVQQK3wqOf)5vbxZuMDA1?TC!G{MvJn-Rx z4-b5J;KKtS9{BLUhX+19@Zo_E4}5sw!vh~4`0&7o2R=OT;eihie0bo)10NphhX+19 z@Zo_E4}5sw!vh~4wKUY!P+P-|4RF-lP?f_(+0}B=|^zk0kg= zf{!HlNP>?f_(+0}B=|^zk0kg=f{!HlNP>?f_(+0}B=|^zk0kg=f{!HlNP>?f_(+0} zBJd?dj~5_}}VM-qG_sSlt|fO-My2Dl#pj(P&>3aBrj&H#KQ!ABB&B*8}#d?dj~ z5_}}VM-qG_!ABB&B*8}#d?dj~5_}}VM-qG_!ABB&B*8}#d?dj~5_}}VM-qG_!ABB& zB*8}#d?dj~5_}}VM-qG_!ABB&B*8}#d?dj~5_}}VM-qG_!ABB&B*8}#d?dj~5_}}V zM-qG_!ABB&q`*fCe5Alf3Vfu%M+$tTz()#vq`*fCe5Alf3Vfu%M+$tTz()#vq`*fC ze5Alf3Vfu%M+$tTz()#vq`*fCe5Alf3Vfu%M+$tTz()#vq`*fCe5Alf3Vfu%M+$tT zz()#vq`*fCe5Alf3VftcKT_Z$1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY- zQs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;X zBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&6K2qQ#1wK;XBLzNE;3EY-Qs5&E zKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;% z;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL z4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_ z(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~ zBMm;%;3Ew_(%>TvKGNVL4L;J~BMm;%;3Ew_(%>TvKGNVL4L;J~BLhA%;3ES*GToBMUyV;3Eq@vfv{N zKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>oBMUyV z;3Eq@vfv{NKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8= z3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>oBMUyV;3Eq@ zvfv{NKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>oBMUyV;3Eq@vfv{NKC<8=3qG>o zBMUyV;3Eq@vfv{NKC<8=3qG>oBL_Zm;3EeNCG_KK@wmR50U_v zm?M(}*u;Y*z$YFg0Y>p432=%BNq|+%s7V66;z1H%77vmDw|I~Q*u{e+z%Sekbr)AkOXm#KlC68;#`FUh;tPbAkI}-fH>#C07nKmG{CU|4i0d1fWreEAK(B1 zM+i7Xz%c?25^$7&!vq{B;6MRK3OH22u>uYjaI}EK1spHnfB{DgIAp*v0}dK+)PTbV z95>*=0Y?rvbilC#4jypyfWrqIKi~iYM-VuKz%c|4B5)Le!w4Kl;6MUL5;&B=u>=k# za5RC#2^>%0fC5JpIHbTa1r923RDr_^99Q7L0!J1&w7{_i4lZzXfx`03BeEA`N(eL5elt0nRDffCo6Icmp2boFWe3jwFb43Oe9H5>(GA z?tlkL5a$$nz=I^Ho>TMz50apIP5}r!NP_A)#USt?399E5hQNa)sGd_K0uPd)dQQOz zJV=7-ImIJTgh+zwIfW$fAPK7H6qUe(B&eQKU;+=4pn6WR2|P%G>N$lc@E{4Q=MR;M50apIPGJi? zNP_A)MK16l399E5yugDbsGd{&0uPd)dQKq>JV=7-IYlw>APK7H6v)7XB&eQKECUq^ z5){qA0}>R^zylH#(ZB-|6w|;15){=y?IQ`|oB|tokOXl~u?;*(f;gw}1|B3qoKu7Y z50W6xDae5bNf750=fHy`h;s^c;6W0^xksE+xC0N8AkHb`fd@$t=M?n7gCvM^ihJNe z62v)$KJXw3;+&!%Xfa5FIHv#z9wb4WQw#(Tk|54041xzq5a$#L!Gk1-a|(vwK@!9{ z#Y6BQ3F4eWB6yGlaZXVYJV=5#r@#mvBte{0Yy=G#Nf7509>Ieoh;xdN;6W0^IR#1Z zAPM4};v{&G1aVHG5fg^if^EUsqSt zn3K|iKU9LooWvIVp%OIaq_^M?m7p;v$pwF?1dTbWE+^pcoEazM4;7(7C+P)$s0a-@ zsW13LMQG4TfWf_oDxpCq4F-Rx1PwaLF!)0yXwXTC!5=C?gHB=${!j@Tbkbw+hf2_( zlO%&bRDuSbR2lri5~R!E50)Th27j;wX*2kPB}kpYA1XnEP67@7Pzf4z(rEC9O3DSRDuSb zv>W`P5;W)}-{23Gpg|`E2Y;vp4LXT9_(LUV&`HO^A1XnEPErp3Pzf4zQgiT!O3sB9)*qCshf5s058U2}}4xC1}h^Tf!eKLFy9zU_-9*{Q06OXqSPH&zJ7{lZh zP+=yno&)Ok<3K;n7i=EhXY_}rFyN@?9d+AAvu~n*m|BNHWIpi}MlOQhGJ^|Gxh}dxJziI7(#oZ<=wqeug24<&$*~U8UCbgK}eK^cV z1(ddT+8{AyLLcX&)kCAr;iUtuM!T~( z+LzEQQ`700QBxUyE2`whOQle(W?f9NilO<<*_Qpja~7 zlqAMGD$r&3Jxad26TP+5pvYT#pRO^|qQ}-2HWsz|#(NdD?F~Lq;Ejl~k7HZ3`%jc0 zY9h5~dtXTKCPaFBNt+_t5zh;J$rQ8j4L3TikqOLLK#h5GZ3x%_A?8iA4^!`Vwtn7dD%X@$n`eG4!q&!e_TuM3xN`=eEZppUgKRyb2MIaBE`| zy(~=SNRQ4onq$KQgZN@@?=qEc=~iKI;nj#c&#Jw=)$=^1{@c1vY1jr!%aUZ=l&28S zf3ACEd};6Ub{{2>J?cwf73U})h;12e*n_O@D$4!!W69KlPe4Y*~Q3Obm#5V-40N#id>{~orl0Hm#8;PCroa zrrJ=GBo(bPy;fSURSX3?Ak^Nq`U;(P+9}@R2?*##7aI{fpP3Mizz2D#Rd4eM2GbDC zM&QhE88Ikq-Pm{}*H8D02RqjO*tmUUv?*tVnEe9(F~bD3CkFJMk!aQB2!?f-7)cUH zy`jNOMB7bI`|`Fi&uO=sBTF%<9nGy-^)Y~+%-N+vJC=-N_9totJ(E}m0OnNuifEkC zj8G%y*2jQ(h;g({Pn4<%!dLM9HWHTA&f&0Oe#LKJ*cx5JlzEr>7_cj1h>KJ(qf7fQ zrJlb%2rTS|uro?Vn^_e}vk|S@E{GQhuSM9BbD^vxM1*CeGmc?NgBUxMb}C=z6%JmH zaH7-|x!>CL?F?Y^nkyHMqA)}MPfeuW;13Jlh**v^4`0ab>u-z?HPx)%fe!vN-Ma04 zBf^^yQT7b0zN3-tn;2;=?88vRbo<`y6AgAiv_tg@uxeXBwhd zHpUa<`xgJ0@K(fh9OooeUexSBh9tkuHzG_!#1elvyMl-M+KtXcdmd!8hUwm*U`K>< z9O1F$eG}+U$taI!)(E``RnIvV7Z2!&SR_K@6fEIM1ctA-E$+pxT-uz#e_*a+@*e4> z!Z6T4?`zr|w-kHf$yQ?qOltG2K)|pQ0+(zsHvLR59aB4Jdxe8Jwc$D|JB{dlS!&%} zuW&HW3!FaQ-PtP~%tyGAC2ldYQQuALYd05B2kzn@6Lv*Rn^=(IHN$KS8%ggz`UHgC z5KxZ$s@Njb8#|3f6BFYDlfUHn?_R;pggvlO6>i9}1XS^!^)X;C#Mn`L2xgBy-qy5U zzqflCpode-&LK-?G0qJ7>V177!G8ANp-)}*cP|46V42>MK90V3!jp5G<&F0H2>;u#PQML-E>Drlj@ z?7*cmjbgp1Z)f=T5CN(=u*>j8cJGsL} z3cwH^Q1%b^ozzPA+ib6JFbClr6#!y4eeIFn=17La&h>`{^AM{V>zb2gT|0Y&g82v~ zR>kN@WM^8$`P(CNdWXlGYUYXzBizL^Anb~Oj;cg7o@Q0z?LN_fo``jvYjN*&&$Zn{ zxOA`wqRLKZ9N&^nqidsUE*y${wou5h7b4fAtX*x!%^6*by#oQmJ_u}cd~NMcOhbhL zFSSIi-ZvmP&~q;V<_GT9`-eh?0}$CW`N8%c7y=dEfvEoHGC7)ofZ<>S_Bxjb*ty46 z9}*B84n^<<+N;mEbt(7LbmM}UI|tS-2RU zi(pnqr};BBJ1?k>?+OA7$04jlp%l!7{MJV6i{<2oUpzP-@ni$8-oC`KLM+hJMcN?9 z(2L08l2>js$zV9}y=bu9x0u_eQZo*w=7e zNOVPS>Up{GBqN#7f8f}l@ah(V>axvWk4PeP9|*MQr#$FlcBYv{jgN3HwX1D;=~o7!Dg2BDN#|GWWL0 zywbJ6Su>2+0vCCQgdv11{;n;e+&(|e0|Yg(K~`0Gd{aJE*ZVj zcg7_lk{U%+8U0$QlE!Ex0H_*9P+9G@TH5Jv(?u6p>>X0Q8zF<}G_W9mFA0Yss2C?> zr)F1Fa+c0pkqJ{c+%Fy+fp`^&*`)1Eub(5mLBUZ7(SkUrSFp#N58D zQ>QnRu5*bMKG9&MpKsN7Z%*=y2k${VxqM^ScPYg-qHgJ3?_~d&@PCLYWXP_a?Xl&< zt(CcVj8E|n3GYQniO{xdCDRMTW!d+lWwpsG(q3U;z{zl>QxHgOp3zs07O)X0y2{>< z8Ko9e;xhO@e^}~d#M;YB4mNxsCMSyT{=<9x;HZ-jM}k-!`)Se8!bMmFuMv$lS4In# zo3}CutXhGvV)qd z9Ot2oL@Y-Q zjoO95^>ebp4U4=%!4N|2RJ_;4y~R1-q9m1g5_V$MlCT&{Rv4j0b36DHTqY&UusdxL62=g+gxP23cZtjSKCk{EydU92d$)5pyRu{G94JZQYE>v?_y8h{ zQL}4v(JjUg`o)6}Rltj^TFyPj5BtS~k09R8+Kd$TAKQ^+c+W>`6^D;uaXCFJtetCZ zq()EAw!}r$j|TvSPavqPoD%KtrW>E9dIW<{BA6IIyFR2DR*>BHH1Ck`DTI_w)V`I5 zkjhV?Cnz6mwD$SzQv!VwLBHy>Iu5Hq>c1!w_mloH)v1VCnOf-9P3Gd@3scC0J`n^~ zeH>v+4nFb+Dw**PKIRKaeH4*IQmH(7;@CX+h*voEVT7wp!DW0WbHc-ie4?ojBAVE0 z$DT_QMR{K60|7wQDg>=eX{8sFk&N(u|Cs81i0MO*gK^)UB`iV2k{hL2U)9bNYzG2{ z4g$Ny6kwu=r4#WRJri|G!%{5m#>JwGpUB0QRV@k2v7{uKH7>^t|BJGfM;8F1Fp3p5 z0bnHp?5+13ag4MBItD-46A=6#0tqd#>KpRO zavw1`#V;Pb7xC;IiGpV?`LpDiv`>5U^5ArYa&@?4Qr{hG@)?g{a0Y^j3S#fdngpRU z{b9jp5ldVfyLNRi1ARm2EU$3zIfN6h-L7@|RMniE_H6Hva1KJc(&0pC+UIK(hc8t4 zppwL{U-S+MUqVQ61now$%Q?sK(vRBT!5okKXsJES@r zA!|>UA$dmN5yhc~$d= zX_pF4_X?*zjc}FMj&S3Icm}7TFImDBV>4FZOX}&AnDCzr1guU)V7tj=(PB1np9lb| zKJK#%5_=DPED*5zC<4nBKAz8}P0gZj(?b}iGCy8G74 zSG~f)*AUK6b~N@4GK=NXz!kvPu>#jKOB#8@&7IZWpx`oua$PaWNVBdxhnIT>gewqG zETnl}W_MHbyV>;{#pi)k4?ASSPAmeA#Tqhs&`FM-OINNfmrtcv&!L zwHl!%c!xW#(C;d1b$pEY^-##_Qbcx5KT^`usYAQ3g~eB2MSMpdVea!pa6McS090L! zpp}nA&Gr|*;vZ98gqWh(70qHp1ivh4nz<-NT<8-`U4UrfPE~GOB2nJ?z7f@Vh$x$b zV;gy#lRWXu=q{J|cVrvBkQW{m;z89vNTSyS$BgujpA*jLW#HHUxYVA&$^1tgsb2J^}}` zZ(wNQNMoYa9_?+l8l928;mm`fSBJrcZy~O1Z+7iXsRdo>F|P5A2;W9Tk(%w=m^>iO zRSm8U1PtFnVAo&)Vrv*I(De@Hb^fs6`s!F+FU5S<9~RtzSaLpLH^O{mo0GKjM(>bt z6GA$M39$Jj>vAo6X#uzzZc5({g{-bYWJxQ?UsH=;COqM9g+y0ZBf4wK=n|fpJOKM< zPal>Po~9E7`ym=&8th%%7YYZ*FjSEJ_Z4ITo+r43Ccu4=_)TIbf!6imw(puPRQ$KvIE`s`Mwa;j`nj=dmS}Uj# zm(+$(7b8T4`7qGxn~2EKSL&5l7h(AdBhhJ%L@5HW6E3Wape{fJM|+>|{4;swyd!Xa zNOW}`qI(xD;5%r?Tz3&9*Mz6=qc%Bt&v!o&3lFUK+YHYP#l%$j_<^*FNQ?I?xV zcLP@dH(&+FYeMDi3nUwWx-oPOa1++xx|dtbAa%!%gs(0GIX7ackEwIlcUr@j&4XNXwF z;;q}*B%ey%gnPP!kIaIx_L1?_;l^qZ{ljC;#pt&^5qXtU-?5YOus~o=UYY3@+S;xUMlo##Nb!AyPjL017`tP%qq7 ztIu&FlK8QxpL=&2;TH%wM;q=!4#Ybfhj^%8Rxb;`!m<)sVpT6^1o(C3qVO9mDt?{0 z)}(96pRC;(b$eX|xWm2qoR{vmm5aiiSai3NanAknNjFB_RUZR>hZy2d+K&J$$LjYr z0pM-~5P#0T1-w5Z)A~bg2)L)>XK;9t`YAeuj#_KC&YHWI!fip})jBtKmI+pL9EHSY zZLQ*J4HkEx6kPk{9K`B>Qm?$a70Zj!HSWNf=o@5~^0@Q)9k$^6brIC}5JAk3bsG{Y4g3rtM19ML zNE}pjFMXY1O8q>n*8;yl`~c@F@&UgLTmk$FEAYY##jl&ZIiP+W3K@Qb$gX!Zj9#;} znV(y|Js33HfzXcUl4drWOpd318v+&XL{u+~R(d#l(dMq;Rlx7C3P(S}+~e{UiO3)I z`=Ib}H^O^nT>3jmQ~yI)e7MIKJ~I_u!f5u@C_V*8?f+vD2j0`Relx(A(5 zn-|WK^T8M~s^^2`HBo;+a95eN7<_ahlC5-j)!m_MP`}3-T(_peZ%CVV_+40hbr<5h zI*`WpGeOZ;l;O@`(CW7c?Rp$yY&FY0Nc!&ZkEw1)OtGijMHPa@^Cg_$1g}E<8mn+6 zM#kP|13S4svCn@M3R(Rek^Qk}_yxk%&hElCP^YR>zYGEke+=ty!o7&^YBY?jlUIZ` z8tT4a&~QIOyKXneR`WQfr!zVYe+pd#Jb*R0?#IR7kl2s^91tA-g5X{lDEEFUCzg6J zC_MZX;T@yE&3>`woejD5qaF&04u3;*xh%*_u6PqFoHKEzH}&^G!0-iLW;|XS0-it!S;!e%Z#1UQ1cirZ5ni0(I<05p#OCz5P{{Bf zM3w{wKH4k>_4#nv@L$CCyGoNL^+~kXJ8IF)s)!YW)3KaC7I{T2G~6aE^w z0`*{+3XmdAUWmEf8QYHLOmC} z3iuCJA$z~SuVACCo)26B{1+?e)sC>gFGx6Hs^^6PU3r*-=yOZHAQL|zrtbwc3d0Mr zut-&P`mW3PtrrX$UWCv)yY*M{mB6XBio^O?d{?*HBi<%&_H9rX0iMBK-t~HnahFeD zkAbJd;Hsw(*EM7=zrBM?hlh#I{yPM!dJ<8+dQb`04o?IGSC1pOtY$k;#@Ng3`)Qp7 z{uK;bJ%-S(0)JtvV?_!c4Fs$nLEvzb2s~Q>zHLg5Zuae-3knbaL3nW}>?WZ_>&3Hs zK5zx_U#vi!Q*U38@auX|84T>Qz!a=QXidS^9%oZCB$&WNs-4Npefq6&G`s2rp^)K) zh+LLRBzgJ4&}I(KQ0w`_f)^o{7}kQmOp2gJj+j1l$IhG@3>wx)XqNy!zDmN`nbih0 z0pP_5Ah%-c^qWLFsh0!*g$)tZ&x*{Aby6FJuLE9+by%G_Sg-nNn5SoGbRnG|sEtFS z!^;qTx}9SkT{guA^&s~PYN}xh)*woYx6MG);}?X*hZiEgs1)AXpCrfY1+M~LgjEC> zXHm!1)X+7+`dEW($TdcyYY*8V6f(RRk-f~Ge5?49;8nneScPl6t_Qv)$Ap(6 zrYoyAwlmG@)y83P;bn*$z}461hH4Y%9RW7QB5yC*M3OEfJ3Y9lqWrhGsccpo0$z>~ zvTo`)K4}h@Fj$)huL8EfDukKW`HIYhd_^E&cqIbMjI7gQ(KC~8QK>BhR{*cV3aU8m zeD7avRTBVST@iq9z^kom0>Cy1AmQo-qiF5K4v_b{Z4g*^4Z_wWt>YccO-N0o*g#ov zc0PiY7PjrRAKrcGytPy8L|DVCT)B2=%k2hl+ik(xDZ=xLnq7)4I#18c?HrmciNlQj zk-BQV@Al^nJa*XHDPk##np}dM?iks-dRE@}?vK87?G#tH)!6)WB?%>o$JN!nG1iiB zZ>FC3=w34pSUW|IS@OFmUWL4q#`#awmfLN5{tqf0w7WXRQKyj@<91Hy-0|(u_)I+N6nN zt7~!Q%BC;T9p8wbLG5|}ijCRj(Gd2&x<$Eu2X6Lc-37RiG;}89D z{L(d3Y%T;AV@~=R1i9zJ)2D2=#!oNs?3I->eZi#{lIgcuImIn*Qr6~aeeKEY(TDtC z+CGQ;c>RmB3JT$tZLH{Z`kEhG>&-dRDwYFqy z$fDwIS@y~s9DeYF5w!S+Rt@e9V2hh87moI2UX5FQ#X}LEyk~8Nm-7@EZ1nM4s=^uG z3ea$posU z%W!SW`@ZEchI2YjT#tx7kDqeu(qq>q_QOhu8Kb$u_U~PUM$_+M$iTG0&OqNpUu2f= zg$w_K+qkfZf@UXN%Cei4ddrF`dDYdczlGbC7!Y$M*(pHNb)+*sYvzpfin{8i|Lj4d z=ZZ&5%Jg8v^UpjL;fY1IYhU!xLVINLt-tJ(lW^ed$0Jl>ABCvw53#i&qkiA&ha!j_ z_1fWoYuYO0ip(i5wJ{pHdt`xb}xSc5-}TJti8f8 z=cMKOFIr&CVgeEl#e~DI?Rw^zEo@>&UU%}RqDAhi%{UPm-TELzMujCZDgcpDOk`|C z$b4FmjY^8P$&*id+0(0iQY6I`X`a;v!uErgFg5DF&98_&!(EFJlBZD&!*dl;E37EHAcnjHE`CQ-^}>9{GBONm32Za7?NU!GR8I2<#zm446 z9GRJR=$H|TLuWNKf zhW?Ajj$L3oVqj^x2s0^LU6csZ?nH$C(BRMtLQtKr9?Nu+gmbnws zM>p?cM+apfris&v9i4c^#}S}#`xSlqhKvNiic=}Wg6)qz^qm{8of4K)D&~~V{K>?O`BQlNo{Zqf<#p1~ z!_B*&STjYQpe*Vv!}4O}RK^kD6IIWoQZcFY&Tdps%x)@E5#@!7C=XObV^pLfim8a~ zm&Qqv>ldh5y#t-`A>79kM?m_Z!G@~aGt+7GBocIFQ;Fz(_eCeob3d1 zw)*gO+u=^%$ehmXS?NAF=7%>$p1&t1p_obdxmJ<8pFz*xSACr%ayQ1Jn6d1kw;QvI zlfibFZ1kMw$8&U;?iH72qSe^GJ96_^I%-xkte#3UADwR=8Wn8@`BPG!- z%qERzuPGq$(b~VvY2zjwyRin(Ow%Y1%b9iSdw19YPbuttZUbU2l~PQlTzz6=x94v| zvwrs6(G*lF%PGH4VizJys}$2JCkmweQy|3@C=gFk%u`&Kf-(3oJtm1rvUhLs>C0LN z*#%vUyNq5sD9=_XwiSLEmX1Y~$cX%-+MDA; zAKBuqQM8(#fGN3DmUVHPm<)J%U%Ndt*3ONif=A|G6VU~)L`8wCjlNi#>WNvJl?Uv;DWN&(+4p0c`~!6i*CUjO2M%EhuKwY^lUixjfq7tAH)PjP z96;86Aj(G{;+vW$b`~&~Z>iNW-x5n_hZr|;GRAG@igeVmj&T#=+74BpaLrUB8OXyQ zczr|+#oXILTAb4ZV~gpu!zNp22poisUf1J+#A@1Cg*!3<)gV?Yr_|!=?L3iEpUsnG zjWYLM%$O3cXz{fJd4&V`R9Ci*e3v2l4Mv)yzahgewZ~|)KbO{$%K~NX7JY+(1!fTy z^Gey~iV&sWjlGg~MHA7Nipigs&QDj9;4^&H(#yx>?{Uj++u_ygsxeu<0}Om?Pt3Yi zzjq&WaU%CGZhp>YTkKrn?vd%pDX)hWGe&3TQeI2<`J&B1QF09#$#0UDs?fAlJJ2?~ zx3uZn$cUkYMe`5*=5u?yU(L0M%+%CT2WHAXX*D^`Qeir^0q`kcWm>Aw>Pkq31xXQF zs=UxreRx-amh$N?ohSHVx4JbY!vBf2^!|sd? zPAna5HAed9&7L_ca}{ywrEiWD0NG;gKywrYRYy_44Ma=t@v*p^pPHLxN7dQK&4i%E zyHq$iKnHo3ndNxlayz5@Z#q*w?DDdIMA5gd{=Shua~;V;^+l&|e)uo(+*dYIqhHk3 z*~SWT*}q+=U!k6mOgsXdctm`e8m&&dGD7z;^UY*trLc5gd7%3`Nsm}_s}9Mf`-)fha%m>h1LB^ECS+ZOwi3MR!2weKK)pea3t6?t4xw3OwvmRk|2oz-`Fx(!BFP%9;rku?5)f`RWy|H6` zF6(6pq_-+MTZ{7&iJxiJt9)uTdB_CWLnaOsmJ>TG)MCGFvwuVf{~=TYeH~Ofxxo8! zTCPa%6cg(*m$QT{YP;2Q^vfQ2K0pePl(WGHJ9SvP^1{*;v-Bzv%84u!n(bG?N#q8E zEw4SOl4_uCj#Yyl?c|0fOIu4@qz|mv=E@U4|KD|`8F@-3(4^X+dV;A9swY+(T-h*L zX-btfYlbOR7I3;3u_u+5XJ=)np|AP$bgtW!q6%D_+8$dz+*+9zU=Dn0?_0UhG2yQ5 zEfyLytZRF_)K}UFlXqKK7$`G(*$ta{He{j<_-d|CF+i~xASVmu6N}vwA@BMmzY0v! zi~7j6(bd<08i1CNCB(Mii&JN5MXp+W%191HtTF6tXX3as6A$G9=TH)t)ZD~E4MBz0 z5EN?&A^{tnoLECJu>9m1st)b-tQjcQ3|twlQRzr)2Dkv?XR7&bM>k8 zVH|9>VBH(H!h~_6SR28z+Dtd8=efmnN1J|*KbCc7RfCxyr~5>bmc|6xnGu5i%P3ujl|LW@w>=1l1D@31V*ZMlNjwzg|YfX`% zoQ}85UoGKS+64VCNV-05slsRz%(xcAPB3G|%-E6ODkivAUTMDm5(U2WH5d2d055G$ z;6M7>Q7-FSwtU;vJMempD|ssBrHXlJ8F?z1Gt}%<#%Va@xS{*^$BfgmUd%3V32>6| zsxX9ChpEdMjJc`VwH*ZnwMV)m>A6$IWZD6Cdy|}MyD}*+Bf0v7y3A;pKAwzFhUDt} zQ}u|X+8`#9R?EqHH`XLilgR2MPv1{>&2nnwCA^*M7V2y(uHHf+e9HaSRe0flI)*kR zPt%OS2TxPMd76&;cXqE$9LmhobeB}--8}blQX+XJXUZ!%%jGqiJ~?;1$=4PaQ~yN= zkL+m9w$co^mnS80)R~s`oc7q=o80Dd?_Fbzw_1ydT5&*dD9)luu3J=gN(+lG3p<`C zlHWopcMQ?C{1Aa`uU4*j0VB~QM|MFYWQntqNc^Mc^P`c~u#mc!d_(0Igsc`qv75nJE zooU6+v@Z`;yZy3+%pIMbp!puE_M&C`H$&Qu9b3B0p2XU`>k&%is>cbux);{*&qlF& zR@0(%*6~8uxeHX*a4Ej_=mL`8_VFJeD=N+`StDTr| z-mb2~)g>@G)M8swAqNwGz4GUu#4vcr&*)bEb3Gf_YTM4KzsHvwO175lGV87)k!*mU z*AR1HHMrfF-3Kb3y;7Y3M=U^5Qw?WUY*~`ZEQcG~eSZO{p3s_GIp0+@IiRU?HkRy5 z)b7}H^XHC?FYR64#`_hmc85I2z4v(LwfCU+Y4geXTVYb3fu7%;(xGgP)%;<_{;((q z`6HWA@wE_$ANI_Te-{PvRe;etV8XMWU+ml`JwonkNv#$qqp9pX>nn}koM*+(bBU*$ z-S{JS+@y6eo(%)ZpGTQ{KZ(mZI-yfZgOdYcxLBlJbA6$(#C~QwpvZ&J5sr?&bdGDT z_+_*@zO)Wp^W$}-wFil{*M5NvPl4BwKLPk5XXv@U^GABRP5g`kyi#XOw&}@NEcJ1N zA74-4^)r^sZ;Jx!temj??#Lbkv_=QWX!mcwUQeAv0P{PJIyfz)>#h}7*|^OE>$dR1 zy6%d7YS~N*8_hdFcC+Pppt8do3nMmpH9dOO6MDA&_20ktF;h z_P#QT+45s37(Yu-bXQufjM9b8)$jvxObop^_Y9sPpPYNqOC4f5k_19Afe;BH-w854 zI+ixnu|G;zqvKcAOFW5asu+RO1B!@G9=Uq?-;jv7-aRq$sr20w*ktMX-#-#>w}s4PM3QxlalhoGA%6U<^gb_yO#9g~k_GM0XCO?- z6caL;UFCS3rX*S@_~{%}6^M1I&12SO8MHOg*I69pi&@n7ln=I+Q7`C@E3HdTD`MsG z=8uG#3o7PHY83MZgWM-K9yh&_!AuMm686KrWZd}j7 zsC6UF!JX91ozjc_$k~@Hc*QT0-h;VaNd}dpE+vSW@Ps0rc$)?1uFdeoT97RE$WS4`Tfxd}8x`@dykjeJu2%X+|G{Mw4Axa{% z@(Cs_AhOKV%B|-fbMJb{|GcqP#cWj!TdnWTX4e!OUj(b^nfW4)jM}7H2^$^z_q$DMk?S?Gsgub9yU#Khv@MMr}Y2xfvbKZ)^qB^0i%S4q2CaT*YUJrk2YVXUk z;R(Dnkx0L_{2NiKjS2^HrkgeVIC{yZnRT^ecAQT(b+Q!!F7Q7c$fnLvS%bB?UWH*+ zrGm05ovcw*_&Qx?T%9^4yf}~rbvT$5e%3O64njmbGraSB((h_}C57skm=wy9xw*Y1 zEQx|eqDw*%IsVQim%ae)swqogO z`(oX#-TE`v-B0}02N_mOhGn~O{PZ-%FvNXUc5c(iF)7wLC|#+g(b<>IjYD{t6uY7u zR|*>oCazj15XULMv*Vqg)o#h`eZ$5P`4k&!jS+`sAn_PDZlegqZq&81V6ryp)Dkeb z)BY#C3y)0g&Nd5>6Fd^;o`3w4??6yH#ijtXEB}a_grHVK+i(8t4J*}Z-#HUtA#%)rIr&tFX`iew5>5No3UBCluqnk`=SEQT&S#+#JMcnQX@ zBMNLzL`y$|J+71o5$Efvyp3_Uir2uBg7~cb-&k(C+)lnl!WRvW*N$Nkptcg`v(@zG zli1cc(TekoF*$2`o-~qyS~~5h^NcC3BROOEeyKQ}H9AW^BXQ2aHI!^rSvNhUwWwWU ztwnf$JZy^A3Ncp)tBP2=sc69-z8Asd`>(Y5>XR4JVfrHYDVP^I)+9aZoQs+7hP<8AIU zClN`ph*VYoQFq1qk8FJf%}RMortOtSI^iwpFezE##$C%!ZxJIB%N2^{iptJdHzaEc zm2Xt0cZ4pUCB~?zCk)C;8dv-<9S%KT?+E$GIb2%Z=z&Ws=F$>=WZe+00wN`EuX=eH zO0JlaS7;zB7!)?K;X}v2c*EbU^UCa%cV@3yspHzSWY!v94%PBUJ7GKW;j`?e#EC4i zl`J(u&rQGDcYQnpu@MRLeGGJ4Xy|)>@rKV{jryo~MOGhO#$dG>A~iicOV;P&p;)q> z9J0d~^^?Kc@n#ZF3T@=P5W%!5)lPey)iWq-)~SA+XOL;j)$=CBnsv$~FP$ZIq+Itn z{pY;mO((-?Q%+z^XvO&`nj$44g)~xlx9$eF3FbNtKK z3S@QF@o0^9Li@BLDf_EK+{HLOzJCQl2dxBF5H!1&J;2;g*;$iEl6CGQ@%HTiqorp~ za>g+iG7aq@^~^SMWL2Ld>t_i>G&Hv?=?3wpIhpAz5l${HU;#+NNi!?KVr1!z5aC%P za@}W)XM}>D*k>y1`Nk@^e-aE;XOM9{yD?TE-;kBlI3T=a*NBO*!6C}Ikm;GGYR9eQ zK4Nm#@xd%or09`Sbd$H-ZqtauRUldkCa9PRR)9(HHN||b0zsCXc`-p2V`kj1;_=ho zN;lh~aU>@3#XVng5ha-NO`ocJ%BF)n;|>V?`eljBlAI)l>paZRluw4Hn4#I|EctXV z8>Sp_zdN4W_cY{wvhQ0>0W4xOtRLXK8gLomVsPF?e?FuL&E8EZxvu6ypfV8^Flvu28{EOX~NP6Zt)FLuxlH=nZU zFnQSs>>z2@E}Gj>Gu6EG+3Q7TKN%&CmBbK*fNc15hVi{W|LfHhMeQ=E48lxJhd%q6 zc)~*_nVRO}t~-AT%SkY`%9^sV3hti-Q`6KWEK}2Q%B~)a@jH?p%;@!ZoPPvHE0^pt zwiHlb$lI$}g3ZTEWX;%i!55x53f)dG^CN9rSzc$-;Oc!C`!!t!n{Q3#Yq3|w?6n48 z)Ca0!q>Wo^IbW2VBQQSe7u(;t^V%uXiw8Wm(R@)17X9SA)}C|1?aQUEim9vXWHAPw zr$;gy+wPsksh|E%Kl5&%=8{@V2*D*a zxbrG9%|`x!#43splbui4i{KO9ke=w`u^VS#)?qK>!kWC*IX|4aB6HfuF}IG4u$T~Q znqA^hWxIe-&1s6xU3}HHn5M|FmBqYOKWQlw%}g({u7Ft*%Th{xnkO200eozVm{KMc z`)d!1NTmyjVVKGEb|m}9AhK&0v?bwcm_IeKcL1jzlh}+p$hn(GeCS%G6PTW>0Q6ij zJs0Vx;PY+v8@PJv53m0?s-I#$%!sDN)7KuEOt#Q{0IwsX#b(>#CW9`TW5WZ3L+w`Y zGL>fPkNoPg;hI?)|zPNQArHh1cYh&bbQ6`VxkPMs6Y)gd(!$AnQ) zOvpVDXceA7>-)a0E|;+%(k74zwANTE5NOPlI?=)zL<(gb!RwLys%qp{G5M8^!{{b; zZ@#AUv~;J@sl-J8FnuszxO2TMZDhpREna8&5?fv48w{dPy<=QXVG2F3pSvfWkBS-1 zZ)W};MGLgAJsE7<*y}B)9GiTkA|Ej2O_;`xjih$b^;~xjKs3P%Rg?fk;8!@kObe+Y zj=ov7-z{fS+B)&Jin_-TQo>!5o^ZHJ$V+-fW$Kz@w-zF+AM=` z-W)jcEq{mvQRh9uG`$(UYY|OfaA|a2X)`xc)~l$Ng!Kw6FzEGJ!iJN>WeD<#B`!4S z@nb3B7o{RdV)t zu~7x!v60HkAi9OJF&BW8wlK+9{wFes4uTLzuAu$-duFt)O=jJSqYGpos|<*}L3gBB zz7WsKjF?@TU3Nr=10|El9sa=Uqbtth7~7%eE&MpZKx~seT&@;!;OxgEEyT5rdFJGq zry{trRh8{f8{I~WLVk6d%J%_inDQPyk9)P6@}lY~FFNsl6~!c>yy%qnRd5o@iw;T= zLzeHc8DFzX`~Hce>@Bw&ylpq+E_RxZfxD!U(fP{cbGB=;j?*@0jZY=s*mwK$1|GwF z^o?TIxl2i~kY6+@((i}4x~3MD803l)C(Q0s5`x0i6Cd4c#sN;bk$LmfZbD6>HshtlziSR-r_`fmbGArpD`2-QwbOux}b6RSM10{orYKlcQ z@dAr_#<1nF5lKY>#M$V?ZOaGEUn&{W7Qd{dAOEsZF!I6k)Gc+3Z*|LX)SllPrM!!a z%G_o}$Hv|j_eYeUdm3vZhx}mLK8O8it)r|Ki*o9FbwoM+^tljT{_gJe8h;bdLoLeb zNB(Mva_WB~$|)Yg5>YG5a)>eHzq*KcZyS;=$G$4|L+DV}rs(%W>nkhn;8{br?(DZlEN4wjL{Y1de?AEsAio{yC* q@w4pl@+^q*tG4Nf8h6%OLSY+u$K|b=uCH>Gj_b{;eDO , "Project Includes" -******************************************************************************/ -#include -#include "iodefine.h" -#include "r_ether.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -void io_set_cpg(void); -void ConfigurePortPins(void); -void EnablePeripheralModules(void); - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - /* CPG setting */ - io_set_cpg(); - - /* Setup the port pins */ - ConfigurePortPins(); - - /* Enables peripherals */ - EnablePeripheralModules(); - -#if INCLUDE_LCD == 1 - /* Initialize display */ - InitialiseDisplay(); -#endif -} - -/****************************************************************************** -* Function Name: EnablePeripheralModules -* Description : Enables Peripheral Modules before use -* Arguments : none -* Return Value : none -******************************************************************************/ -void EnablePeripheralModules(void) -{ - /* Module standby clear */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */ - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */ -} - -/****************************************************************************** -* Function Name: ConfigurePortPins -* Description : Configures port pins. -* Arguments : none -* Return Value : none -******************************************************************************/ -void ConfigurePortPins(void) -{ -/* Port pins default to inputs. To ensure safe initialisation set the pin states -before changing the data direction registers. This will avoid any unintentional -state changes on the external ports. -Many peripheral modules will override the setting of the port registers. Ensure -that the state is safe for external devices if the internal peripheral module is -disabled or powered down. */ - - /* ==== MII/RMII Pins setting ==== */ - /*--------------------------------------*/ - /* Port Function Control Register */ - /*--------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x9A; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x82; -#endif /* ETH_MODE_SEL */ - /*-------------------------------------------*/ - /* Input Buffer Control Register (ICR) */ - /*-------------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set ET_ERXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set ET_ERXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set ET_RX_CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set ET_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set ET_CRS input */ - PORT8.ICR.BIT.B3 = 1; - /* PC0=1 Set ET_ERXD3 input */ - PORTC.ICR.BIT.B0 = 1; - /* PC1=1 Set ET_ERXD2 input */ - PORTC.ICR.BIT.B1 = 1; - /* PC2=1 Set ET_RX_DV input */ - PORTC.ICR.BIT.B2 = 1; - /* PC4=1 Set EX_TX_CLK input */ - PORTC.ICR.BIT.B4 = 1; - /* PC7=1 Set ET_COL input */ - PORTC.ICR.BIT.B7 = 1; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set RMII_RXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set RMII_RXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set REF50CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set RMII_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set RMII_CRS_DV input */ - PORT8.ICR.BIT.B3 = 1; -#endif /* ETH_MODE_SEL */ - - /* Configure LED 0-5 pin settings */ - PORT0.DR.BIT.B2 = 1; - PORT0.DR.BIT.B3 = 1; - PORT0.DR.BIT.B5 = 1; - PORT3.DR.BIT.B4 = 1; - PORT6.DR.BIT.B0 = 1; - PORT7.DR.BIT.B3 = 1; - PORT0.DDR.BIT.B2 = 1; - PORT0.DDR.BIT.B3 = 1; - PORT0.DDR.BIT.B5 = 1; - PORT3.DDR.BIT.B4 = 1; - PORT6.DDR.BIT.B0 = 1; - PORT7.DDR.BIT.B3 = 1; - - /* Configure SW 1-3 pin settings */ - PORT0.DDR.BIT.B0 = 0; - PORT0.DDR.BIT.B1 = 0; - PORT0.DDR.BIT.B7 = 0; - PORT0.ICR.BIT.B0 = 1; - PORT0.ICR.BIT.B1 = 1; - PORT0.ICR.BIT.B7 = 1; - -#if INCLUDE_LCD == 1 - /* Set LCD pins as outputs */ - /* LCD-RS */ - PORT8.DDR.BIT.B4 = 1; - /* LCD-EN */ - PORT8.DDR.BIT.B5 = 1; - /*LCD-data */ - PORT9.DDR.BYTE = 0xF0; -#endif -} - -/****************************************************************************** -* Function Name: io_set_cpg -* Description : Sets up operating speed -* Arguments : none -* Return Value : none -******************************************************************************/ -void io_set_cpg(void) -{ -/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require -changes to the debugger and flash kernel BRR settings. */ - - /* ==== CPG setting ==== */ - SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */ - /* I Clock = 96MHz, B Clock = 24MHz, */ - /* P Clock = 48MHz */ - -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c deleted file mode 100644 index b5ef3862f..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c +++ /dev/null @@ -1,53 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :intprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Interrupt Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : intprg.c -* -* Abstract : Interrupt Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include "vect.h" -#pragma section IntPRG - -// Exception(Supervisor Instruction) -void Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void Excep_UndefinedInst(void){/* brk(); */} - -// Exception(Floating Point) -void Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void Excep_BRK(void){ wait(); } - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src deleted file mode 100644 index 70330dadd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src +++ /dev/null @@ -1,120 +0,0 @@ - -; Comment out the orginal code - .IF 0 - -;------------------------------------------------------------------------ -; | -; FILE :lowlvl.src | -; DATE :Wed, Jun 16, 2010 | -; DESCRIPTION :Program of Low level | -; CPU TYPE :Other | -; | -; This file is generated by Renesas Project Generator (Ver.4.50). | -; NOTE:THIS IS A TYPICAL EXAMPLE. | -; | -;------------------------------------------------------------------------ - - - .GLB _charput - .GLB _charget - -SIM_IO .EQU 0h - - .SECTION P,CODE -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - MOV.L #IO_BUF,R2 - MOV.B R1,[R2] - MOV.L #1220000h,R1 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - MOV.L #1210000h,R1 - MOV.L #IO_BUF,R2 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - MOV.L #IO_BUF,R2 - MOVU.B [R2],R1 - RTS - -;----------------------------------------------------------------------- -; I/O Buffer -;----------------------------------------------------------------------- - .SECTION B,DATA,ALIGN=4 -PARM: .BLKL 1 - .SECTION B_1,DATA -IO_BUF: .BLKB 1 -; .END ; Commented out for conditional assembly - -; Code below is for debug console - .ELSE - -;----------------------------------------------------------------------- -; -; FILE :lowlvl.src -; DATE :Wed, Jul 01, 2009 -; DESCRIPTION :Program of Low level -; CPU TYPE :RX -; -;----------------------------------------------------------------------- - .GLB _charput - .GLB _charget - -FC2E0 .EQU 00084080h -FE2C0 .EQU 00084090h -DBGSTAT .EQU 000840C0h -RXFL0EN .EQU 00001000h -TXFL0EN .EQU 00000100h - - .SECTION P,CODE - -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - .STACK _charput = 00000000h -__C2ESTART: MOV.L #TXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__TXLOOP: MOV.L [R4],R5 - AND R3,R5 - BNZ __TXLOOP -__WRITEFC2E0: MOV.L #FC2E0,R2 - MOV.L R1,[R2] -__CHARPUTEXIT: RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - .STACK _charget = 00000000h -__E2CSTART: MOV.L #RXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__RXLOOP: MOV.L [R4],R5 - AND R3,R5 - BZ __RXLOOP -__READFE2C0: MOV.L #FE2C0,R2 - MOV.L [R2],R1 -__CHARGETEXIT: RTS - -;----------------------------------------------------------------------- - -; End of conditional code - .ENDIF - - .END - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c deleted file mode 100644 index 2d02ccad9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c +++ /dev/null @@ -1,329 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.c */ -/* DATE :Wed, Jun 16, 2010 */ -/* DESCRIPTION :Program of I/O Stream */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : lowsrc.c -* -* Abstract : Program of I/O Stream. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include -#include -#include "lowsrc.h" - -/* file number */ -#define STDIN 0 /* Standard input (console) */ -#define STDOUT 1 /* Standard output (console) */ -#define STDERR 2 /* Standard error output (console) */ - -#define FLMIN 0 /* Minimum file number */ -#define _MOPENR 0x1 -#define _MOPENW 0x2 -#define _MOPENA 0x4 -#define _MTRUNC 0x8 -#define _MCREAT 0x10 -#define _MBIN 0x20 -#define _MEXCL 0x40 -#define _MALBUF 0x40 -#define _MALFIL 0x80 -#define _MEOF 0x100 -#define _MERR 0x200 -#define _MLBF 0x400 -#define _MNBF 0x800 -#define _MREAD 0x1000 -#define _MWRITE 0x2000 -#define _MBYTE 0x4000 -#define _MWIDE 0x8000 -/* File Flags */ -#define O_RDONLY 0x0001 /* Read only */ -#define O_WRONLY 0x0002 /* Write only */ -#define O_RDWR 0x0004 /* Both read and Write */ -#define O_CREAT 0x0008 /* A file is created if it is not existed */ -#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */ -#define O_APPEND 0x0020 /* The position is set for next reading/writing */ - /* 0: Top of the file 1: End of file */ - -/* Special character code */ -#define CR 0x0d /* Carriage return */ -#define LF 0x0a /* Line feed */ - -#if defined( __RX ) -const long _nfiles = IOSTREAM; /* The number of files for input/output files */ -#else -const int _nfiles = IOSTREAM; /* The number of files for input/output files */ -#endif -char flmod[IOSTREAM]; /* The location for the mode of opened file. */ - -unsigned char sml_buf[IOSTREAM]; - -#define FPATH_STDIN "C:\\stdin" -#define FPATH_STDOUT "C:\\stdout" -#define FPATH_STDERR "C:\\stderr" - -/* H8 Normal mode ,SH and RX */ -#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -extern char fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* RX */ -#elif defined( __RX ) -/* Output one character to standard output */ -extern void charput(unsigned char); -/* Input one character from standard input */ -extern unsigned char charget(void); - -/* H8 Advanced mode */ -#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* H8300 and H8300L */ -#elif defined( __300__ ) || defined( __300L__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -/* Move the file offset */ -extern char __regparam3 fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); -#endif - -#include -FILE *_Files[IOSTREAM]; // structure for FILE -char *env_list[] = { // Array for environment variables(**environ) - "ENV1=temp01", - "ENV2=temp02", - "ENV9=end", - '\0' // Terminal for environment variables -}; - -char **environ = env_list; - -/****************************************************************************/ -/* _INIT_IOLIB */ -/* Initialize C library Functions, if necessary. */ -/* Define USES_SIMIO on Assembler Option. */ -/****************************************************************************/ -void _INIT_IOLIB( void ) -{ - /* A file for standard input/output is opened or created. Each FILE */ - /* structure members are initialized by the library. Each _Buf member */ - /* in it is re-set the end of buffer pointer. */ - - /* Standard Input File */ - if( freopen( FPATH_STDIN, "r", stdin ) == NULL ) - stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdin->_Mode = _MOPENR; /* Read only attribute */ - stdin->_Mode |= _MNBF; /* Non-buffering for data */ - stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */ - - /* Standard Output File */ - if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) - stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdout->_Mode |= _MNBF; /* Non-buffering for data */ - stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */ - - /* Standard Error File */ - if( freopen( FPATH_STDERR, "w", stderr ) == NULL ) - stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stderr->_Mode |= _MNBF; /* Non-buffering for data */ - stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */ -} - -/****************************************************************************/ -/* _CLOSEALL */ -/****************************************************************************/ -void _CLOSEALL( void ) -{ - long i; - - for( i=0; i < _nfiles; i++ ) - { - /* Checks if the file is opened or not */ - if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) ) - fclose( _Files[i] ); /* Closes the file */ - } -} - -/**************************************************************************/ -/* open:file open */ -/* Return value:File number (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long open(const char *name, /* File name */ - long mode, /* Open mode */ - long flg) /* Open flag */ -#else -int open(char *name, /* File name */ - int mode, /* Open mode */ - int flg) /* Open flag */ -#endif -{ - - - if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */ - { - if( ( mode & O_RDONLY ) == 0 ) return -1; - flmod[STDIN] = mode; - return STDIN; - } - else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDOUT] = mode; - return STDOUT; - } - else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDERR] = mode; - return STDERR; - } - else return -1; /*Others */ -} - -#if defined( __RX ) -long close( long fileno ) -#else -int close( int fileno ) -#endif -{ - return 1; -} - -/**************************************************************************/ -/* write:Data write */ -/* Return value:Number of write characters (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long write(long fileno, /* File number */ - const unsigned char *buf, /* The address of destination buffer */ - long count) /* The number of chacter to write */ -#else -int write(int fileno, /* File number */ - char *buf, /* The address of destination buffer */ - int count) /* The number of chacter to write */ -#endif -{ - long i; /* A variable for counter */ - unsigned char c; /* An output character */ - - /* Checking the mode of file , output each character */ - /* Checking the attribute for Write-Only, Read-Only or Read-Write */ - if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR) - { - if( fileno == STDIN ) return -1; /* Standard Input */ - else if( (fileno == STDOUT) || (fileno == STDERR) ) - /* Standard Error/output */ - { - for( i = count; i > 0; --i ) - { - c = *buf++; - charput(c); - } - return count; /*Return the number of written characters */ - } - else return -1; /* Incorrect file number */ - } - else return -1; /* An error */ -} - -#if defined( __RX ) -long read( long fileno, unsigned char *buf, long count ) -#else -int read( int fileno, char *buf, unsigned int count ) -#endif -{ - long i; - - /* Checking the file mode with the file number, each character is input and stored the buffer */ - - if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){ - for(i = count; i > 0; i--){ - *buf = charget(); - if(*buf==CR){ /* Replace the new line character */ - *buf = LF; - } - buf++; - } - return count; - } - else { - return -1; - } -} - -#if defined( __RX ) -long lseek( long fileno, long offset, long base ) -#else -long lseek( int fileno, long offset, int base ) -#endif -{ - return -1L; -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c deleted file mode 100644 index 0404ac406..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c +++ /dev/null @@ -1,129 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :resetprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Reset Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : resetprg.c -* -* Abstract : Reset Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include <_h_c_lib.h> -//#include // Remove the comment when you use errno -//#include // Remove the comment when you use rand() -#include "typedefine.h" -#include "stacksct.h" - -#pragma inline_asm Change_PSW_PM_to_UserMode -static void Change_PSW_PM_to_UserMode(void); - -#ifdef __cplusplus -extern "C" { -#endif -void PowerON_Reset_PC(void); -void main(void); -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus // Use SIM I/O -extern "C" { -#endif -extern void _INIT_IOLIB(void); -extern void _CLOSEALL(void); -#ifdef __cplusplus -} -#endif - -#define PSW_init 0x00010000 -#define FPSW_init 0x00000100 - -//extern void srand(_UINT); // Remove the comment when you use rand() -//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok() - -//#ifdef __cplusplus // Use Hardware Setup -//extern "C" { -//#endif -//extern void HardwareSetup(void); -//#ifdef __cplusplus -//} -//#endif - -//#ifdef __cplusplus // Remove the comment when you use global class object -//extern "C" { // Sections C$INIT and C$END will be generated -//#endif -//extern void _CALL_INIT(void); -//extern void _CALL_END(void); -//#ifdef __cplusplus -//} -//#endif - -#pragma section ResetPRG - -#pragma entry PowerON_Reset_PC - -void PowerON_Reset_PC(void) -{ - set_intb((unsigned long)__sectop("C$VECT")); - set_fpsw(FPSW_init); - - _INITSCT(); - -// _INIT_IOLIB(); // Remove the comment when you use SIM I/O - -// errno=0; // Remove the comment when you use errno -// srand((_UINT)1); // Remove the comment when you use rand() -// _s1ptr=NULL; // Remove the comment when you use strtok() - -// HardwareSetup(); // Use Hardware Setup - nop(); - -// _CALL_INIT(); // Remove the comment when you use global class object - - set_psw(PSW_init); // Set Ubit & Ibit for PSW -// Change_PSW_PM_to_UserMode(); // DO NOT CHANGE TO USER MODE IF USING FREERTOS! - ( void ) Change_PSW_PM_to_UserMode; // Just to avoid compiler warnings. - - main(); - -// _CLOSEALL(); // Use SIM I/O - -// _CALL_END(); // Remove the comment when you use global class object - - brk(); -} - -static void Change_PSW_PM_to_UserMode(void) -{ - MVFC PSW,R1 - OR #00100000h,R1 - PUSH.L R1 - MVFC PC,R1 - ADD #10,R1 - PUSH.L R1 - RTE - NOP - NOP -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c deleted file mode 100644 index 98e5bcbeb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#define HEAPSIZE 0x400 -signed char *sbrk( size_t size ); -union HEAP_TYPE -{ - signed long dummy; - signed char heap[HEAPSIZE]; -}; -static union HEAP_TYPE heap_area; - -/* End address allocated by sbrk */ -static signed char *brk = ( signed char * ) &heap_area; -signed char *sbrk( size_t size ) -{ - signed char *p; - if( brk + size > heap_area.heap + HEAPSIZE ) - { - p = ( signed char * ) - 1; - } - else - { - p = brk; - brk += size; - } - - return p; -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c deleted file mode 100644 index d2dec0b3b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c +++ /dev/null @@ -1,64 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vecttbl.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Initialize of Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vecttbl.c -* -* Abstract : Initialize of Vector Table. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "vect.h" - -#pragma section C FIXEDVECT - -void* const Fixed_Vectors[] = { -//;0xffffffd0 Exception(Supervisor Instruction) - (void*) Excep_SuperVisorInst, -//;0xffffffd4 Reserved - Dummy, -//;0xffffffd8 Reserved - Dummy, -//;0xffffffdc Exception(Undefined Instruction) - (void*) Excep_UndefinedInst, -//;0xffffffe0 Reserved - Dummy, -//;0xffffffe4 Exception(Floating Point) - (void*) Excep_FloatingPoint, -//;0xffffffe8 Reserved - Dummy, -//;0xffffffec Reserved - Dummy, -//;0xfffffff0 Reserved - Dummy, -//;0xfffffff4 Reserved - Dummy, -//;0xfffffff8 NMI - (void*) NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC -PowerON_Reset_PC -//;<> -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 2df9df16c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,464 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "108a|FFFFFFFF|00000000|1054|fff8cd9e|1050|fff8c484|88218|000870B4|000870AE|88204|88208|18b8" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "108a" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "000870B4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000CEC4" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000426E0000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "000000000001097C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000CEC4" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "00000000000130CC" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8C73C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8B130" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "000000000000000A" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000007" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000041380000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000004FD6" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "000000000000E6AC" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "207" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "182" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "116" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "89" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "pxCurrentRxDesc, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "*, 11, 0, C0000, Exp, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "status, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "size, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "bufsize, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "buf_p, 4, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "next, 4, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "1" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "108" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "84" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 228 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 374 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 0 0 1062 571 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 2 "0.39" 228 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.54" 277 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 228 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "0.87" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STACKTRACE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.50" 277 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 374 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 346 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 914 231 0 0 5 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 0 0 0 "0.00" 0 427 225 0 0 5 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 0 0 0 "0.00" 0 800 233 0 0 5 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000007_DEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"Unknown Options" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index ee7dfebda..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimDebug_RX600/SimDebug_RX600.hdp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimDebug_RX600/SimDebug_RX600.hdp deleted file mode 100644 index 9b8c90ecf6f19817df3558c65c495563ae4186fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4928 zcmc&&U2obj6h+!!*vsB{r(viM)7DLs+O(`_qUB3lw^>3?xFi-%;@J+Ae?ODKI*Vg z!9(4D?Kc{AKTDKbpdISw_q}>_nJtVCLHuvk<4*z;S`fYsz`Lv^S<1-9q*Jm*L5%!f zr^j-k##}29>jRF}6{$$LWS!LZbIR#-2!YJPnH33$@B@h9pe(kFHC`C9Ihw=)@B;e@ z<4PG8TdO9&uin&vfxp9XH{?wvH}UDVpAfg`_HU1Q`wZpes(klhmg|t1%CzNyB=*N9 z3sYR(29q=_$H6>#BdL){NQ1!F0Py~zbLxVTE^wqxnO&_E+y^7+0{b7-Z;$H{8I-jH z)lsmvKY7k#!O)Jd*H4u8pApGj70Jsxz43^f|Ja{JYL$+_tX87A1qFumoHSGM5(M_j zlf5>TLR+YZpFvyxd`81PK|7pNXl)?DEFIC7dYP1{T~soiJ+WVOUN4LU7#%Ao3^V*& z5yftXceJMAvT*%pNdAcY_IpIAx+@8Adz{kb#wlFiAInp`+q=7zba@)Fn7A6BgEV5g zv(6MzCEu67HC7l27pXVRC91Xe0O-1rZF;k_T8iN2Ur9CWs%>f}+;Whqe;ag^agzv$ zbVRq-6ehW)M-ZV8&~c|zU}w!v_;Nk)1A1yTt8Ty_goqmsr%Ua`>5v@ Oil*c>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 228 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 346 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 914 231 0 0 6 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000007_DEBUG} TOOLBAR 0" -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_Renesas\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 Simulator" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[V|VERSION|1] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,101 0x00080000,0x000FFFFF,I/O,32,101 0x00100000,0x00107FFF,ROM,32,101 0x007F8000,0x007F9FFF,RAM,32,101 0x007FC000,0x007FC4FF,I/O,32,101 0x007FFC00,0x007FFFFF,I/O,32,101 0x00E00000,0x00FFFFFF,ROM,32,101 0xFEFFE000,0xFEFFFFFF,ROM,32,101 0xFF7FC000,0xFF7FFFFF,ROM,32,101 0xFFE00000,0xFFFFFFFF,ROM,32,101^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W^"] [B|SIMIOF|0] [I|SIMIOADR|0x00000000] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"] [S|ROM_MODE|^"^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h deleted file mode 100644 index 7787987ee..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,7181 +0,0 @@ -/********************************************************************************/ -/* */ -/* Device : RX/RX600/RX62N */ -/* File Name : ioedfine.h */ -/* Abstract : Definition of I/O Register. */ -/* History : V2.0 (2010-08-21) [Hardware Manual Revision : 1.00] */ -/* Note : This is a typical example. */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX62N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=114) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX62NIODEFINE_HEADER__ -#define __RX62NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union { - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char :5; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - void *TDLAR; - char wk3[4]; - void *RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - void *RBWAR; - void *RDFAR; - char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk1[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk2[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk3[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk4[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk5[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk6[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk7[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk8[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[255]; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[255]; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - char wk5[112]; - unsigned char DMRSR0; - char wk6[3]; - unsigned char DMRSR1; - char wk7[3]; - unsigned char DMRSR2; - char wk8[3]; - unsigned char DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - char wk10[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char TMR1S:1; - unsigned char TMR0S:1; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk3[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk5[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_mtua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char SPRF:1; - unsigned char :1; - unsigned char SPTEF:1; - unsigned char :1; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk4[15]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - } BIT; - } SCKCR; - char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - } BIT; - } OSTDCR; - char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - } BIT; - } LVDCR; - char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMAC_DMAC0I=198,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=45,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=49,DTCE_RSPI1_SPTI1, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_MTU1_TGIA1=121,DTCE_MTU1_TGIB1, -DTCE_MTU2_TGIA2=125,DTCE_MTU2_TGIB2, -DTCE_MTU3_TGIA3=129,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_MTU4_TGIA4=134,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6, -DTCE_MTU7_TGIA7=149,DTCE_MTU7_TGIB7, -DTCE_MTU8_TGIA8=153,DTCE_MTU8_TGIB8, -DTCE_MTU9_TGIA9=157,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9, -DTCE_MTU10_TGIA10=162,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_TMR0_CMIA0=174,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=177,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=180,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=183,DTCE_TMR3_CMIB3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=215,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=219,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=223,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=227,DTCE_SCI3_TXI3, -DTCE_SCI5_RXI5=235,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=239,DTCE_SCI6_TXI6, -DTCE_RIIC0_ICRXI0=247,DTCE_RIIC0_ICTXI0, -DTCE_RIIC1_ICRXI1=251,DTCE_RIIC1_ICTXI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMAC_DMAC0I=0x70,IPR_DMAC_DMAC1I=0x71,IPR_DMAC_DMAC2I=0x72,IPR_DMAC_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define AD0 (*(volatile struct st_ad __evenaccess *)0x88040) -#define AD1 (*(volatile struct st_ad __evenaccess *)0x88060) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C288) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IOPORT (*(volatile struct st_ioport __evenaccess *)0x8C100) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88880) -#define MTU6 (*(volatile struct st_mtu0 __evenaccess *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 __evenaccess *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 __evenaccess *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 __evenaccess *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 __evenaccess *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 __evenaccess *)0x88C80) -#define MTUA (*(volatile struct st_mtua __evenaccess *)0x8860A) -#define MTUB (*(volatile struct st_mtua __evenaccess *)0x88A0A) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic __evenaccess *)0x88320) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci __evenaccess *)0x88240) -#define SCI1 (*(volatile struct st_sci __evenaccess *)0x88248) -#define SCI2 (*(volatile struct st_sci __evenaccess *)0x88250) -#define SCI3 (*(volatile struct st_sci __evenaccess *)0x88258) -#define SCI5 (*(volatile struct st_sci __evenaccess *)0x88268) -#define SCI6 (*(volatile struct st_sci __evenaccess *)0x88270) -#define SMCI0 (*(volatile struct st_smci __evenaccess *)0x88240) -#define SMCI1 (*(volatile struct st_smci __evenaccess *)0x88248) -#define SMCI2 (*(volatile struct st_smci __evenaccess *)0x88250) -#define SMCI3 (*(volatile struct st_smci __evenaccess *)0x88258) -#define SMCI5 (*(volatile struct st_smci __evenaccess *)0x88268) -#define SMCI6 (*(volatile struct st_smci __evenaccess *)0x88270) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb0 __evenaccess *)0xA0200) -#define WDT (*(volatile union un_wdt __evenaccess *)0x88028) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h deleted file mode 100644 index 4d2aabfc7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Header file of I/O Stream file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -/*Number of I/O Stream*/ -#define IOSTREAM 20 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h deleted file mode 100644 index 5077d7425..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h +++ /dev/null @@ -1,98 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RSKRX62N_H -#define RSKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#define LED_ON (0) -#define LED_OFF (1) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT0.DR.BIT.B0 -#define SW2 PORT0.DR.BIT.B1 -#define SW3 PORT0.DR.BIT.B7 -#define SW1_DDR PORT0.DDR.BIT.B0 -#define SW2_DDR PORT0.DDR.BIT.B1 -#define SW3_DDR PORT0.DDR.BIT.B7 -#define SW1_ICR PORT0.ICR.BIT.B0 -#define SW2_ICR PORT0.ICR.BIT.B1 -#define SW3_ICR PORT0.ICR.BIT.B7 - -/* LEDs */ -#define LED0 PORT0.DR.BIT.B2 -#define LED1 PORT0.DR.BIT.B3 -#define LED2 PORT0.DR.BIT.B5 -#define LED3 PORT3.DR.BIT.B4 -#define LED4 PORT6.DR.BIT.B0 -#define LED5 PORT7.DR.BIT.B3 -#define LED0_DDR PORT0.DDR.BIT.B2 -#define LED1_DDR PORT0.DDR.BIT.B3 -#define LED2_DDR PORT0.DDR.BIT.B5 -#define LED3_DDR PORT3.DDR.BIT.B4 -#define LED4_DDR PORT6.DDR.BIT.B0 -#define LED5_DDR PORT7.DDR.BIT.B3 - -/* 2x8 segment LCD */ -#define LCD_RS PORT8.DR.BIT.B4 -#define LCD_EN PORT8.DR.BIT.B5 -#define LCD_DATA PORT9.DR.BYTE -#define LCD_RS_DDR PORT8.DDR.BIT.B4 -#define LCD_EN_DDR PORT8.DDR.BIT.B5 -#define LCD_DATA_DDR PORT9.DDR.BYTE - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RSKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h deleted file mode 100644 index 1d5db830d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :stacksct.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of Stack area */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -#pragma stacksize su=0x300 -#pragma stacksize si=0x100 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h deleted file mode 100644 index d3ad67fec..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,41 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : typedefine.h -* -* Abstract : Aliases of Integer Type. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h deleted file mode 100644 index a6a48946b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h +++ /dev/null @@ -1,60 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vect.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Definition of Vector */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vect.h -* -* Abstract : Definition of Vector. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -// Exception(Supervisor Instruction) -#pragma interrupt (Excep_SuperVisorInst) -void Excep_SuperVisorInst(void); - -// Exception(Undefined Instruction) -#pragma interrupt (Excep_UndefinedInst) -void Excep_UndefinedInst(void); - -// Exception(Floating Point) -#pragma interrupt (Excep_FloatingPoint) -void Excep_FloatingPoint(void); - -// NMI -#pragma interrupt (NonMaskableInterrupt) -void NonMaskableInterrupt(void); - -// Dummy -#pragma interrupt (Dummy) -void Dummy(void); - -// BRK -#pragma interrupt (Excep_BRK(vect=0)) -void Excep_BRK(void); - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void); -//;<> - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c deleted file mode 100644 index 5fa0159c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c deleted file mode 100644 index 5fc055d80..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c +++ /dev/null @@ -1,639 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ); -static void prvRegTest2Implementation( void ); - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Flop"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest1"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest2"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest1Implementation -static void prvRegTest1Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #1, R1 - MOV.L #2, R2 - MOV.L #3, R3 - MOV.L #4, R4 - MOV.L #5, R5 - MOV.L #6, R6 - MOV.L #7, R7 - MOV.L #8, R8 - MOV.L #9, R9 - MOV.L #10, R10 - MOV.L #11, R11 - MOV.L #12, R12 - MOV.L #13, R13 - MOV.L #14, R14 - MOV.L #15, R15 - - ; Loop, checking each iteration that each register still contains the - ; expected value. -TestLoop1: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest1CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register. - MOV.L #1, R14 - MOV.L #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - ; Restore the clobbered registers. - POPM R14-R15 - - ; Now compare each register to ensure it still contains the value that was - ; set before this loop was entered. - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop1 - -RegTest1Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. - BRA RegTest1Error -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest2Implementation -static void prvRegTest2Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #10, R1 - MOV.L #20, R2 - MOV.L #30, R3 - MOV.L #40, R4 - MOV.L #50, R5 - MOV.L #60, R6 - MOV.L #70, R7 - MOV.L #80, R8 - MOV.L #90, R9 - MOV.L #100, R10 - MOV.L #110, R11 - MOV.L #120, R12 - MOV.L #130, R13 - MOV.L #140, R14 - MOV.L #150, R15 - - ; Loop, checking on each iteration that each register still contains the - ; expected value. -TestLoop2: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest2CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Restore the clobbered registers. - POPM R14-R15 - - CMP #10, R1 - BNE RegTest2Error - CMP #20, R2 - BNE RegTest2Error - CMP #30, R3 - BNE RegTest2Error - CMP #40, R4 - BNE RegTest2Error - CMP #50, R5 - BNE RegTest2Error - CMP #60, R6 - BNE RegTest2Error - CMP #70, R7 - BNE RegTest2Error - CMP #80, R8 - BNE RegTest2Error - CMP #90, R9 - BNE RegTest2Error - CMP #100, R10 - BNE RegTest2Error - CMP #110, R11 - BNE RegTest2Error - CMP #120, R12 - BNE RegTest2Error - CMP #130, R13 - BNE RegTest2Error - CMP #140, R14 - BNE RegTest2Error - CMP #150, R15 - BNE RegTest2Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop2 - -RegTest2Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. - BRA RegTest2Error -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index e4e483f36..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,536 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section _RX_DESC - volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section _TX_DESC - volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - struct - { - unsigned long ulAlignmentVariable; - char cBuffer[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - } xEthernetBuffers; -#pragma section - - - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers.cBuffer[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __LIT - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vEMAC_ISR_Handler( vect = VECT_ETHER_EINT, enable ) ) -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c deleted file mode 100644 index 8002fcb2e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h deleted file mode 100644 index 50415a7f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1F - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index 13157ab5c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - __evenaccess uint32_t status; -#if __LIT -/* Little endian */ - __evenaccess uint16_t size; - __evenaccess uint16_t bufsize; -#else -/* Big endian */ - __evenaccess uint16_t bufsize; - __evenaccess uint16_t size; - -#endif - int8_t *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -int32_t R_Ether_Close(uint32_t ch); -int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -int32_t R_Ether_Read(uint32_t ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const int8_t *name; - uint8_t open; - uint8_t Tx_act; - uint8_t Rx_act; - uint8_t txing; /* Transmit Active */ - uint8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uint8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - uint8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uint8_t mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 00f739647..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __LIT -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp deleted file mode 100644 index 0d3910dbc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp +++ /dev/null @@ -1,4 +0,0 @@ -[Setting] -ToolChain=0 -[Section] -WindowSize=726,544 diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws deleted file mode 100644 index 4ccef6ff2..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,49 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo.hws" "RX" "Renesas RX Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_2_0\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -"c:\program files\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hew_002\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hew_rx210\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hewrx200\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws deleted file mode 100644 index 52e92d1ce..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,17 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" 0 0 1326 678 0 0 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -4 -23 1326 696 1 1 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 4a7c75e6d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,106 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 289 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 206 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N_Renesas\RTOSDemo\RTOSDemo.c" -[TARGET_NAME] -"" "" 1229201492 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"0.000000" 0 0 "" 0 "" 0 0 "" 1 1 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 668c1fd2d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "platform.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( 96000000UL ) -#define configPERIPHERAL_CLOCK_HZ ( 48000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR _CMT0_CMI0 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() nop() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index b375463ba..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -static void prvTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( prvTimer2IntHandler( vect = _VECT( _CMT2_CMI2 ), enable ) ) -static void prvTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - nop(); - nop(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index f98185869..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT0_1InterruptHandler( vect = VECT_TMR0_CMIA0, enable ) ) -void vT0_1InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT2_3InterruptHandler( vect = VECT_TMR2_CMIA2, enable ) ) -void vT2_3InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c deleted file mode 100644 index ed7904b5b..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -#define partestNUM_LEDS ( 4 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED6 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED7 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf deleted file mode 100644 index 2d2b51bce..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf +++ /dev/null @@ -1,232 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8E876" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphCtrlViews" "0" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphWnd_Close_Count" "0" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphWnd_Mode" "1" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphWnd_Trace_Mode" "0" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckAfter" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckBefore" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpAfter" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpBefore" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}T_SESSION_IS_SAVED" "YES" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoRDK_Jlink" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.09" 182 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoRDK_Jlink" "WINDOW" 59421 0 0 "1.00" 381 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 182 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 330 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 1 "0.00" 0 914 231 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 3 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 3 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 3 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 3 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 3 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -[TARGET_NAME] -"RX600 Segger J-Link" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -"SBK_TAR_EMUE100|PC" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\renesas-files\resetprg.c" 137 0 1 "{00000000-0000-0000-C000-000000000046}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini deleted file mode 100644 index cccc6df80..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini +++ /dev/null @@ -1,38 +0,0 @@ -[Init_EmulatorSetting] -FirstStartUp=0 -FirstStartUpV10200=0 -HideNext=0 -ConnectionDlgAutoClose=1 -[Config_Property] -HideNext=0 -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX63N Group -Device=R5F563NA -McuFileDir=RX63NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -CommunicatonIF=0 -FineClock=2000000 -FineClockValue=2000000 -[CFG_MCU] -ProcessorMode=0 -LittleEndian=1 -OperatingMode=0 -PrevDevice=R5F563NA -EnableClockChange=0 -UseEXTAL=1 -EXTAL=12.0000 -WorkRam=1000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -DataFlashReWrite=0 -[CFG_FLASHCLEAR_R5F563NA_00] -AreaCount=0 diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 4bb18587f..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,477 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" "RX" "Renesas RX Standard" "Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas RX Standard Toolchain" "1.2.0.0" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Debug" -"Debug-with-optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Debug-with-optimisation" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas RX Assembler" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX Configurator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LST" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C source file" "C" -"C++ header file" "HPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Configuration file" "CFG" -"Debug information file" "DBG" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Configuration file" "TEXT" "EDITOR" "" -"Debug information file" "BIN" "NONE" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas RX Assembler" -"Renesas RX C/C++ Compiler" -"Renesas RX C/C++ Library Generator" -"Renesas RX Configurator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX Assembler" 1 -"Renesas OptLinker" 1 -"Renesas RX Configurator" 0 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas RX Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas RX C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas RX C/C++ Library Generator" "" 0 -"Renesas RX Configurator" "Configuration file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas RX Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas RX Assembler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "Renesas RX Assembler" "Renesas RX C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas RX C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas RX Assembler" -"Object file" "Renesas OptLinker" "Renesas RX C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCP (Based on uIP)|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCP (Based on uIP)|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCP (Based on uIP)|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCP (Based on uIP)|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCP (Based on uIP)|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCP (Based on uIP)|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "User" "C source file|FreeRTOS" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C header file" "C header file" -"C source file" "C source file" -"C source file|Common demo tasks" "" -"C source file|FreeRTOS" "" -"C source file|FreeRTOS|Portable layer" "" -"C source file|FreeTCP (Based on uIP)" "" -"C source file|FreeTCP (Based on uIP)|Common" "" -"C source file|FreeTCP (Based on uIP)|Port Specific" "" -"C source file|Renesas Files" "" -[GENERAL_DATA_PROJECT] -"FDT_AutoConnect" "0" -"FDT_BaseDevice" "" -"FDT_BaudRate" "" -"FDT_BlockLockConnect" "1" -"FDT_BlockLockDisconnect" "1" -"FDT_BootMode" "FALSE" -"FDT_CKM" "0" -"FDT_CKP" "0" -"FDT_ClockMode" "0" -"FDT_ClockSync" "00000000" -"FDT_Comments" "" -"FDT_ConnectionResetSuppression" "FFFFFFFF" -"FDT_Device" "" -"FDT_DoReadbackVerification" "" -"FDT_DoSecurityProtection" "" -"FDT_DoSecurityProtectionLevel" "" -"FDT_Frequency" "0.0000" -"FDT_Interface" "" -"FDT_InternalClock" "FALSE" -"FDT_KernelPath" "" -"FDT_KernelResident" "FALSE" -"FDT_McuId" "0" -"FDT_MessageLevel" "0" -"FDT_PinOutputs" "00000000" -"FDT_PinSettings" "00000000" -"FDT_Port" "" -"FDT_Protection" "0" -"FDT_Protocol" "" -"FDT_ReinterrogateGenericDevice" "" -"FDT_ResetOnDisconnect" "" -"FDT_ResetPinOutputs" "00000000" -"FDT_ResetPinSettings" "00000000" -"FDT_SerNumConfigString" "" -"FDT_SerNumDllFunction" "" -"FDT_SerNumDllLocation" "" -"FDT_SerNumEnabled" "FALSE" -"FDT_SerNumMemArea" "" -"FDT_UPMPinSettings" "00000000" -"FDT_UseDefaultBaudRate" "FALSE" -"FDT_UseInternalKernel" "TRUE" -"FDT_UserPinOutputs" "00000000" -"FDT_UserPinSettings" "00000000" -"MAKEGEN_GENERATE_MAKEFILE_FOR" "0" -"MAKEGEN_MAKEFILE_FORMAT" "2" -"MAKEGEN_MAKEFILE_RELATIVITY" "1" -"MAKEGEN_SCAN_DEPENDENCIES_WHILST_BUILDING_MAKEFILE" "1" -"MAKEGEN_USE_STATIC_SUBCOMMAND_FILES" "1" -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"RDK_Jlink" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\RDK_Jlink.hsf" 0 -[GENERAL_DATA_SESSION_RDK_Jlink] -[OPTIONS_Blinky_Renesas OptLinker] -"Single Shot" "0ffc161d9412dc10" 5 -[OPTIONS_Blinky_Renesas RX Assembler] -"Assembly source file" "0ffc161d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "0ffc161d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0ffc161d9412dc10" 4 -"Linkage symbol file" "0ffc161d9412dc10" 4 -[OPTIONS_Blinky_Renesas RX C/C++ Compiler] -"C source file" "02499bb90612dc10" 2 -"C++ source file" "02499bb90612dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "02499bb90612dc10" 2 -[OPTIONS_Blinky_Renesas RX C/C++ Library Generator] -"Single Shot" "0fe5f51d9412dc10" 1 -[OPTIONS_Blinky_Renesas RX Configurator] -"Single Shot" "0ffc161d9412dc10" 6 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|SI,SU,B_1,R_1,B_2,R_2,B,R(00)|C_1,C_2,C,C$*,L*,D*,P,W*(0FFF80000)|FIXEDVECT(0FFFFFF90)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1] " 5 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_Renesas OptLinker] -"Single Shot" "0f04461d9412dc10" 5 -[OPTIONS_Debug_Renesas RX Assembler] -"Assembly source file" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0f04461d9412dc10" 4 -"Linkage symbol file" "0f04461d9412dc10" 4 -[OPTIONS_Debug_Renesas RX C/C++ Compiler] -"C source file" "0ffc161d9412dc10" 2 -"C++ source file" "0ffc161d9412dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "0ffc161d9412dc10" 2 -[OPTIONS_Debug_Renesas RX C/C++ Library Generator] -"Single Shot" "0df08616c512dc10" 1 -[OPTIONS_Debug_Renesas RX Configurator] -"Single Shot" "0f04461d9412dc10" 6 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,SI,SU,B_1,R_1,B_2,R_2,B,R(00)|C_1,C_2,C,C$*,L*,D*,P,W*(0FFF80000)|FIXEDVECT(0FFFFFF90)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1] " 5 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug-with-optimisation_Renesas OptLinker] -"Single Shot" "06023eccf122dc10" 5 -[OPTIONS_Debug-with-optimisation_Renesas RX Assembler] -"Assembly source file" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0f04461d9412dc10" 4 -"Linkage symbol file" "0f04461d9412dc10" 4 -[OPTIONS_Debug-with-optimisation_Renesas RX C/C++ Compiler] -"C source file" "06023eccf122dc10" 2 -"C++ source file" "06023eccf122dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "06023eccf122dc10" 2 -[OPTIONS_Debug-with-optimisation_Renesas RX C/C++ Library Generator] -"Single Shot" "0df08616c512dc10" 1 -[OPTIONS_Debug-with-optimisation_Renesas RX Configurator] -"Single Shot" "0f04461d9412dc10" 6 -[OPTIONS_Debug-with-optimisation] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [B|MAPOPTIMIZATION|1] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [B|MAPOPTIMIZATION|1] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|SPACE|^"FF^"] [B|MAPOPTIMIZATION|1] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,SI,SU,B_1,R_1,B_2,R_2,B,R(00)|C_1,C_2,C,C$*,L*,D*,P,W*(0FFF80000)|FIXEDVECT(0FFFFFF90)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Debug-with-optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug-with-optimisation] -[GENERAL_DATA_CONFIGURATION_Debug-with-optimisation] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_RDK_Jlink] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_RDK_Jlink] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RDK_Jlink] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RDK_Jlink] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug-with-optimisation_RDK_Jlink] -[SESSION_DATA_CONFIGURATION_SESSION_Debug-with-optimisation_RDK_Jlink] -"MEMORY_MAPPING_OPTIONS" "" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 08fd8aa79cbd16e8f7ce5cf4d8fbe2dcf22aeaf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356583 zcmcG%2b^3izKRGWrd_enb6GzwfSA)44+WL^WATPgEzW z)$8%^>+t`rfOR3a86-dt(x6d4Xd{72kw3jfG5OvGACnFEo{xM{`n;)H%~aCa$a^IK z=(G9A=cLa&tJR50rI@LXm#Ho{XfbnsG55A{nPer|iOu`5sJG(Tp`1JXAk^D~U>}eK zqwmF1u|?qk8P<@P zpVfAT6jXJS8g+{w1+`9R)0N0aCAGppGuc!*TbfoiG)?!-ev!6SQ^|6+dc2e@PF$gj zdxRgffqUWSrNY)zC;XE1bz?P?%@-!0s+oVw&m7;WkG@Z$Ur$~1kEO4hs@c2HS~DAE z*{LUeP@>lTs=jUrdxAql4-rNT^ky9C)(olNFZQ{zJ# z@J+w|7%=YTOp~$zo5A5E%v?Gkm9do(#e$cw9F{N}s*@=%Z@Pe0$VPlVRmncMkCf?B zHd!$}*kZ7yI+>oTdin9ffadWde@!7mwlF>-6+xd%CDZw=0w7`bWI8w4hdh@WAM5iu zpBgug&f*R$6pGn=GA7Y$Knbmd2Ska(%mXC=DgX^;%wTCTz;|-BpOo4oB&d|8@@c0} z0W)4Edzl9lm7X%cSGjQn5rn{i{cRG7+Vo~XH44qnKlM%?n`SDfirH$mGI3htj`>H7Ercs&i@8&G zOOR~}a_3aGT&YT+t;wm3S3p0lmP|XbWZI@Mg{ew4_b|<03%G?%SiQ44VaBER`FZV85LF54TP^6j z{Lpo&a{8;1GuV?V7crMg=aQvtl|_4imdbLW>o8&XlKyzqas~KU9VZujTtja3LpC#H zDwn%mLhK+!zEDw&%&2KG+TMbJnHicb)Fz-v%VuD)eB}CcG9UYMNip=*`HOyE-M^H+ zZUb#~#vAvlm6O15N3>ebu5=o{^SD>8U^b1e{aOvQCiv^qX>a^B($~w<8RHUq)G%8b z&uL2Q>mIeJ<^_i8V#cFc>*_5EnyW<2s>WJXZ&wh-=&UYNL=~n=>Fgl+!3VTk>Lc3C0ov<}l8QT?_TN-*z{cz zZa1}2;Lrll*__zaQds2lVjz+`u;Waf3yYjSDN5yFj3oe77Vt_9&n ziQnkdBg5gQ7lLqO#BXf+yo6hqo~-Kfu-E% zNHASqy!uuNq057RLV58Qgn^~vFAM`q$6pi%mWjVuf@$dot8bSOT6%a*NI&?pFtF6% z%frCZgRck!%M89U3~YMvRT4~Ba;W-F385f@Pj4!L;-v)i+59Ej>o$7ih$- zX!3VL!BWqXV7k1q>hDVkT^>gC0w=*mq#c+r@I@4JM&Tz+WPry1v?4l z6EPD}v{?IqjtNW#0o~VyEIR&r33$1xRT1HV;sknmuH_X>6w?yoT1BF^9ZK1B)|*CH zpJMT*KN!*%`nM}|X@-n7Rw~Kk4+WA!t5#9ECPdeEAZ4>-Wx@3@rQlO} zc$?!`WKSX$rclb3P1Coe+t*eA4^-$W52IDp7e6rOqHnak}9Gb z7E?`CvM00UDG925A3=+yY<99ps+y3{N7}NZ2V!@eOfjj7I4KczRG6DOiEefmtP1aL zm%vT8JS(x)U4kU9l#=NzG?Vsn*tImfBo^<>(j}v4EB#?zx|IGqY2vgcT`sBZL$iZx zB^7KUNMU^3q_|iB=7C+aY{}%}SddNWN-0;JDVajP==Wp0NadJwO(IW?_VO}XH~oQL zK0Pi0FUusqF4mf}5sTPkeV``4%P-K*7KDcylN(~;cC~Tk32(e&v}6G{F>t2jN&@ei zugx~kwYOI9*1$i(&n_phA(Kr_9e3#ImN?rKYN{NmNAIs$ zz40<%Njoy*?DDFV!c@Ll!+zw~)n%F7?fRQF`CgaFrOgb$`nW!WiQG3ND{Y{!vA^&8 z+4*MQ&+b3;{T%<6^m!d}@4hX4+`x%>@0UJr$vV{u@AyO{N*067+CwX?6}<%;OjoDc7KytW?NPmd*b6tNoU?C{!z2 zT1{&aEQ(!J2IUs0a>~YqS-^t^SUL#@P=-S*V%ktP?$pBXHTVj0__z+`yd=ba!h$bN zc3O*#hxJ8+YZuxKt(F|j8|W?tnh~Qv+9=PA!xnlSGBp20vflP=zP*KfeE>@BAm0#x zQX9zkmry%UVtfDi#sC;^6-_yjFtBOorT`dk6ivBD!@#E9XaG!a9p5a$Hln6QFK_Zl zEbqA!-#d1eCnY`xr#F`KK{&myT##^N^VYWV?GlPg?bubmBM7HAl}`lW^qz7~!fELg zyJP@L?I@=LP-;Ut9e`5%$(aC@+D^^}pww>icmPUmCLa$#slDWh0F>HF_9PVbIz&Zz zgE%&QOoHuFu+~QMLqYfbEAL-xG}0UycI}#A?*Vzf zpjXw1w@u~ED#L>A22=$tIGHiqN*%P2J6lMaVx3A#h3{zL#*rGBl3;Ci90@k-TC3Pi zNPebGax?F;a`+UW)CxXZfX&1q=jBhBAe4n*7L%E@342=rW-*EUXfvC$5ZkGcNzda2 zpqZIjc2y`^B4W$m1U)U(4&qfZ%*@2if^7sWTT1_<)W$YuPtxr9pQP`b)c4qT0|3tV zB*6M{OkBULEo`NuZW>oP-cQp2E5#51&b=Pi0DE0Fo;CAwtM(hlbIJ0=_a)Ib^XF>1 zY}992Y==UqC|oOZchSFMKsi{4nu*jm{hzmEYo*9N4JQdrrtmvap{@?OZoC*XJ;AC8 zK02m1Ss%BL7n5iW7n&v* zVkIH(L0Ua_q6%d`80Q^tSKNy0Y#+zD6b|trE8FyOD<-lX`$@>O#uB|Fhx)C4B_29k ztKY*BEnZl*V#_8z`EftN!8QSwnJv7De_Hs<+xW?B#>1M=gs+YBu}C^(V(ATmi5OS} z+o=rrX7;uw{A{6i6RIVM?)* zvUW0}b-?7P=49be6gxRMD(-NWliTX0CySW0rzZ-Z)fmf_?rvk$S)b2H$n6RV--d`c zMc$~BTl}t6sC*Vto)n^%$qY7$q1Wsr<|Ut#sE+uk$^``QJu*lk|3?zhfFi=dR|@o( zIq957W8VMFmdk${jo7b4|?#MqENQQ9uyb`XwFG?Y$`$8HD%n~dEU46A_K{lmZ}V>boC9Grz8cOqe6 zlg`m#7-VyzVPKQa%|S4iWOI*&fla!%1j8Vk`+zX8N%w*MVVq?<>BV*j!JKM((sT9% z!CZp5dxKzcg2nequwB&NXnxMW#k@C#13KQD!vS6I_rd|=-diN#ZX;t-3wh5Ks+YYO z^M$S{gAeI=jgUy!TMdbfdrb++eVkWA)hxo}`=$Eqqxz^-kNy$!em^|e@!l$dS%Pt# zb07Dx8By9H;n>SCu9P|D?UZ2LINV1Aqe9`*@kfWkW#W$s!f{A{dhkghaC8XbaiMUj!N-Tfr3ar7 z3YQstVh~QBUwCpT-1N{>Lg8kHeoMl!yDJv5)k4;Do*o9}{;f2e_40^K#w6f2TA~oYVkwi6Kzj*Pc3cX6@DDFGE@4?fPPrgQ^R{3Z z`I&cwfPvfFB^Xy%WpI%Di2Z2@Ao-8j7s3FEZ(D(;Jz`*VOL9jt8bnt`0FcdoYp%5@|`@8WtI%(R5#z_mKRj_3mpr$06)24~I+F!r?M!f^hnFfTeJ_R6Pi%PygQ&4wq^K;q>YLwQ#u9g>bm^z2R_~ zixQ6g%v3oQt7c-@BPzrWgg`osJSZXACooU^=EV+4I8(Nx%XSWjKyum6O_;dqz;gkYsuG8D{7NwAIHIPK$OAF%haq;2?~$(Gz`r35@ri9 zNSLZbqDLgiP8{B=wld*bxqsH7(rv)yrYK1xoiPVx-r`S4y4-+P<|?zR=a1K#^dmpJ zRC}f_-{O0{Az8bqNy^RHx$_eXXV1;dHfxQ^*~a&7~Ve4y(6#oEs(7%?O^Ldy?GXw zruy+G>@)lQ_4}*3S21de695Lh2hSk#8kg(%_fkXP0UYf$2ST(zBK5%2GIwypII# zd5M4&!X==NCO7sO8fb2P`;98Dsa?)hOT3O>8@Jh<$c>FRU z-xQybZY*Zwa;& zH8mSe*fF?9vVp}gwrQT zual~Z07{)8-5-EbCrA$jpwtP{g8?XYg7i=TN}V7*9Dq_MNG}gSsS~7E1fbLj z(jyXzdR6-b>HkPga+iX&PLS@A`1yd-yMut-QE?IR_K?8oZ4yvdMKPSZUnto0ucaDm zZu$i2`T%YUHoYzY#yvkiy&(XmPmpd31)JU&0MjQ(FAD{m{*3^bK0&%U0H#lnZVd&S z-Vy-QCrEdOf=%xTfaw#YyCm3VuUx2}o~@tF>QVJ}Ozpa6cUuTCx4gJqH&^Rekc|YX zFQz3H+vxjB4GX+_)0`Txm~7Rch2?p3?}mk8SymTkSI?P41p;JccCKd5F<6lG-b|+Q zBS|Bh?#MfsbH~SYZLAZ2+wRC?bSdYOPBmpDwLn|(LLM&8h%C-U&CK(RrCE(xjhfm# z(Z7V*1_%cbz{iwj@u9L9v>Hump)E!`fWe(rQ23|PSZ!~^R-;CN7BeakXQPOd z2}M|(wrI?1)L7hN0|*YDYJhb+j{;O2(>f)9YaD|GVDn}3=9H)uzb>sOtKBx(o9jY^;m#A#wcfBt!ozDBpM(QS>+?HXhmi3?I7*L1et zAcX#0yxeE*xw3S_?FS&-c?Xy|!*9X3KngWZC3D8XS|Dy10Kw*7Wl+m*p}4=HlVqKn zB^|UN?y*2f9McJ23R#+LaiI$z0w6;V41^5F0wE(#AY{~7qPMtkj@gQd{#fpu8*-^^ zEN*@0hFmIBLpIBLt0A+IDl=I7!vv;FSZ!xL?*5CJ!Pw%lnZ8zwnbHYeUkgF>j&Zrx z*A4VFX5uVXHMa0)s)g}V&-V{n%)v2ZT5k^6A;^@YJ!_Z1!8HR|1@#Yo>vZX_|G((JKEwZI+hJEWR(Yr)H zsfDl*MBh4oX?-R7IMJIi(?SsaU`?tbeH}W}@9Xec=_{2zOxiJJTiPM+Bj@_jj}U!9 zBYM)0F7%@xC3-Ur=t)0jBA8YKA^FFM-W=(-=r;jD*F~DWA&bRE2IQ}kMBK4hn{Ph? zXj;J|{iD`iz|<8Kd>Jjh)@$Z%7WT5-xS6L|p|_1WoQKEL(^?#=dDk-F@Z!R16Vsg% zj&{R?0gF40@i1WI_ausIiGmJW<4I5*`lJ9gy}XPuANSToUM7)pVd|VVMW9>sk>^Sj zSDL~KGq_XSSI*ysr^;tfRl88DFuhIFO~C=#$kU`U_AkvY)YTOZceVoRuhZz)`kUAeLaY1W z(PrNv!49=yUAGaxS|Yfd2@nv*1&17?Z;4`*V~MhpNZP%^>@r!nYY2yJ3ourKtGyz+ zjk!=)D_|d0M z?~!PCGi|ww+N(>r-=dMf?H}B^HtoG6SerL1*uQ+dFZ<3d2y^SBb#*qk5QQujaI3o6 z%6W~%n&nXhd_#BZo(!1K%uvqxo9kh!ZU<4z=*HJuaxn!Sa8y^vU`$Tp<=`x~yorp=t0LQpirXMeXBLPSiu;-EU9y`Of=*&1}cQ z?ZB1$d^ZivugjylY-@tOh29Y_og9wm&CqP$r84QIO9kBWoo_u@ZVlh-u?-k0Y!-H^ z)=d`EKgQx`9i*^!igr%ojf|O6vWS-1u`PWyuw6s$^<6l)YTx7@`mZH~(px6^CJCVQMmI9NT7qolQV0@zO)$oJZ7{}tT`(s8`e01*!ADec zux@5hn!$z7Z|Kj3Z(9C_gi%~@aQP?w5xMEiKlevqcl1LNLYaW}Pd^+8aXu0VaX%Ue ziGM5*GWhX8$j~SHLyE=Yu@449oImUj!O#}_*FcE#GYO(vFCR|*S}?}>n_!Il(_l>e zUji`nzU|)yW1O!CW85G2$M9LXH%l1R`e<+YbAb@&Pb7%aGVeWqKN#cuFc{;0Q^K?) zc0V5oiGMK=GWg{{$k0~;A;W(j2pRdyK*;Dn213TZD?zjkCSl4y4#qftDq*&^b~m=;zYc4fW>oxy2u@S94G6 zqEP<4`fcg+`aCX(j_BoH#vjtyN6SnEfs$BiQ2>M%hr=3dtqnI9u&^p(-#)7mR+w~C zp_-DlboTYBD0FfU(3OC~U}yuX&t!g86DQ@N%FSY>W4 z;zcb4_PqS)gvMAAoprdp=iek3wUq*vi1gptzNPx@VAN%`eJjh0i}%nu0;JiLaB(aW zFlKdWpZ0_IGMLhKJiMyM@%niQyMwWa{xZwc5=@m}EEO_SX;c2)5_lK$)L~Lw<7^H! zSb{2GI|gX>$SvSO=Gabg*MiJR5^SK(ANz%*asKT5vhQd2-}`=!|3}}?gTLzgdFVg; zejfg>zMn__yYJ`G|LOaA?ALuiC+~->iJoCQw9}G0moV`lt@u2CcD2)MSC$*iWX?OD zr+b>K>OtV@%0+X~D4inP68kItq->PbZ%C!1p*EVd1zD|}DrQZXdfd+iZ67earH14e zBZV%}!XD~@rAJRkP$d%4svV1%zDyEvGx4M8z@${-9!4N7Enmg$-<5PK@&gUE)N!4G zmfA-u_?&NYtFavosCA2=qxj?A8XG^NALiMIGNDiMoY&VSg}L zp@v5dus4U}8zl|{#DVsDKN%2buFq%57$40~7kj?I!}+~??WakB$wG1x|K3jy&`p*mr9ZY&Uc z7kXEjhe4B9W5L)&`9d)gH6x`3xsvKdb5#u1-2b@gVFwVG%a>0`p5*{h6${)e)O(QR z<^EGE#c~epN3hX1jcpptvhfh^_cdn=${v|^@LN63=S8BAmQ>Fs0;zUY|13$vTEU~~ zrHV;ev9!VsNDcJ3FnFdiad-bh`RQO%K}o`~qvtI_^MFU>i4vAQPZt*Z!-Yzr^-_Ir zdHIYSr@lM zUm1@)R#(S5YPYM^u2n*^ai^9h_jLeG8!%&&1>OpS-+}c-$EK*Y@;S89xR9Kmr<1~! z*kO34U0?`5o8F1WBVQ?v-TG4TUM_mGqn@Xi5Z|&D&6e zT8MA?r?%UR71N-b(N&F_2S5DR{6%7PFd)rOi;Gtsd?I{`wl3(wG?J2j*KC<#TlGE&zvQ@L#9Omvr4rNxgFRW2rH z(A}EHz9@0q50tiL9hZSrXB%f%qw^AaFVJ1)Zyx)&gxzDX+VIU|6uu+JYKhu{&P-rN zMDm&hISWdLB?&NKCnR=Mb2UUmkJm~1p}MGHwsf^8L%yA4$vh6DuikKTr z&Mv}_o2h{{knQh8B^MXY)@$>Tf6?Vyv%k&7naNxcZO4T3tbu-uLLjP}(dw`uJ60}E zt~F~HCzcoIYYiGUsgBlQu><*@+3X45BWdpe6wVcQP{fFa(oo!`+D!`DTIRgm57>1NO=#Llu8+{1EL$FA zAZ3K+vxTWLUW($BUZZ&dPY<^tkU5n{MARGikgy~1zk>Ozr}B<_(^$grqi=i^OQPAw zG^&cob!K97BE}MEe+QV>5mgEul{9NhF9R0Z%O^{xFvL$Lk*inAn$sQ@<#m2aUUAcE zpha7eNet0QMX9P)mOgJr-qiWZZM_+Nn>EEiAK3r1y9xjrHcU&xz z!lsVts+M$nyP!xU%vVfnv9LQBJC#@M#q?3jhF6yGELKr3q%pLq1b;*`C_9lHBRK&p z9>1f6BYk*wROK_D)G%uuvc5dRbn0tJ+9$^VNwxnvr!faK z(TRf+HXq@0@Gd^1;+d}EnI8z;o4(J+Lo7|fL!CWH}y;eeO zq{IL(e@uV3assxN%4%=4-KDMl#|?ai%`VBj{Mp&v_p`f4`n;2vQwBpmpUqWcW;E@g z(oURnm#&b7gVw-r64x!5_^1Ral)YJr%QogxMsy&3;%*7F4o?v5mFl&=RLPB-X<854 z(#ybjY%yaRv^9u;LAiCH&0?^d;_KK9q4yg3Iqg9$rNw6hCv@%;<)mEB{r$c=2c)kX zID_-*zMq|I`hIo?q|fWY+&$RuYy42ZuY-sCeI2^I-`C+Q`h6Wa((mi&mHobsT_t_p zTF&sn3_QnecB`$HyRAKgYTc#zIT*fcDA?Twb?3Fb-j5tutu5h|t*&XNo|>sySyDGD ztBk#%^i7)66836f+al@7GaY(VWuzp!t3Zcjn$}dJb!8y$BpFBXhyF^DXqJ<2Rk&0_|WB?LpHBG9>X*B@ztGh9%UIGG3Afpol$V+ET)AlZdaE%h*pc zn?ARo33j!@{eGhHQu6pO0ik)Wg}&C0ra2vDPEmmsoLVjaR3bgpL5g@D7O0>_;@3AN zf(?|b9J^NPhy2;OPWrr2Wjf#7|GRUn|9AHR(swT2y}s|~_zitO58l7;=b;<>ejdK5 z@8^+7-_N7bzMsdAN}qSC4#K;n9Xli!(OSCN)i&TLwSt!UW>#|}5M7{s3dDUH(Etwe zqhM}(7WhCnSVzBak>Go~;j}W1N!VQqOVMrW`KMjtRPJY%yPJw6Sdi_DOK|YY{}3DPc}nS9U9Fo zbsgv?!BQoUfXas?IP0oiLV2ppN$QyoO9c04{#i^7;M*s%s7J3FnaHnIqisa4Hdmrg zmCD#uN#g`@`ow!R;HclxG9X>a8H@G?Ae;CPBo5oChyu1{Fob+C5HwjX8x2}T?J}GI zqG|Os6;RwOQ5<5aS`_0rA;Lwx>b?+A2~Uv-HuD7v zn1>mcc*d_tr5Sb40-j5v7aNu8P0Yj6%z8Ra7LyFRfzO%^N}q|?ar%9AUFj>acH?vv z8+j`$_DQVcap~*f=28ReoyjEonq(fiZtBX76IyqcX7+SYAeRq0PR6%d(A^zScB)2s z7IIe?vQRX8brx_NfF{swxE1}zI|z_6U99S~Pb--1*XPK1w;FHbvswifemz}8JS?e{ zzB(h)*A4VFc6;B?PEz_zyxq}$U*lu_z78h(eI0sGzpul$_WL^W;C^36Z|nDU>>>TW zCR6>srqa^aYnlyQB-;vnAPAy@GuV2_VyYE+0NfPym@Dyrm&dwNAf&ZWWJsbKU@AUe zmQ@aec3E1Hp-6O2qP(d;C89jojmsdJQDU&SlL7BkMob>8RkR(E;=h$?sP@s# z5=QampczYm-9){28ZjwWmMqsY-(ECErWvU?W!y*JDJZj|G693&DB2g|##3XiE%H7w2 zG);b0V%sUU2AirrTB1?iq^nQ0b7`L{QC)9~)uJ**K0_kztUdR}^AhqQmcp_EZ7$rC#LprcDYRH9K`suztB zsw$E0VWD`bs5{2Er!rC@7~1N1k#|cp$~Uns^ujgr`x3T8b{sjWPy!_O@FLNj z62alNhFSy&nMI=eB?{$p)ZETYTeZK+ME+Ew(&gY5Y6`fk$u7H(Pe~NI+KK|>3Yyf1 zB&=3z2e#E4J|@v9=d9|1Ri0PE`2I%{cpcJ4Ozwac+u7AzJ>Loh<7C_?^rY1aXA)42 zE)-QrmOdo`cLV5Ua##rHY{18Aq!kF+Ymo3{h*Hq*kD0hz#UBRtM7Bh`;0Vgl-b$4Y z_oE9*+;@ON4e2EACna&O0E}}Ha6M@@nVzUtN=dAf>8gM~(KJ7`M_kab%t&;~aTdde zCH{Mezlqtf<~}V!H%&ncIO_Zy4fuh7p#cDnsZZQxmYr6{#Kx%%y^{15&A9Gb#4 zeWNkg85+c%R{l8eAt55NrU|U;7Y=t2a2AiDXi5}Yh$5N7S)&6R)dbmMx@~P?r8;{W zskD*kYcCT(J6a&5&qg<4rcIM=n->?CK0%uZ8~PVGcb+(XS1NFq;zVIogq^bala$CC1Q!5GUL8yJd{;oW|;DhQzXvA8ebP|;dW5LsZt@C zNhiydQLShT#`;4mrCzr~0;w`-@3m0EHp)E`j+-0rVD0W}{kg^E)mkL_BFXw&Np|Lw znUEN5Cj&4ew4?u)IC1re6V`8eiPe5Cj&_To2*l>t0Cla{H~JgXzBan05%Q+gBP=j? zS>A}o#xOi4jt8qU%pQhC!FFQ`uQ)yY8OgkDnF*#s%jGXgXm&L%rh4sMJW(-D)oK=P zxtTp&cNweSRPNNDOGR+k;Ue&&9u7bqf4oLoHEi=%*^tPl!hQ+Pd)^(6g064Q=INYj z`K&~7q-CT$t~aN0aGI@z`3Q!q?`a~d(pOkS`7ENZaG&LGOEi~TG)OlX_fBTZ-;hYI zY?I(Mjd7Mv-@KA7e=V2_XY)9@eWFq+Vl9O5ZQ1NbS-NgFR$59!aY&CaJ2e(~drL5k zTu;@4Sg3=YDBbX;Cd&e2IkeM;c?aK;zIpA&XUY7R&l1JzC2%BtuD>Y;#}aDr9t3E ziMp|j6Ce#k|5b_piVphK<;8`$1yra?MMu6b(H!caS*zm(+qs1^3sA!sB!bOkFB;HB zC57_nK0n)>U94d!dy=G1Hhk;8Aa3Qff%9caw>+d_>jFo*y)xDhC#3Qfurk3X50a(g zxNb_l2UDc0Gtes@mvHQh+PLZA2?=?CltVYoPauB>`Aj&#P)$zUBk7WRyAPg06$?)N zK9jhs5(z8XS4y^AY)E+a?mj%FFsdNCG*Lr(l)YQ~C~+8+l0xR6O#w5U9b(CnOYG zYJr8X&MmD(u9Sev1RA)!aw+oPQdK*VZ2d)v=RRt9x^P0000{|vpaZZb+ZFdbstQzRS@ z$_uMiYCJrTsPaT2@}CmH{aIBV1U)AnAC<_DbdoR4&Z&Y=&#q!3ux_)^boX`<@yupG z!gdwlo0@!0lIn100iAP`KaeN}GzHJIs%J56LTj6+`4`WERwFk`0$wLm>d9ARSfbrS zw2N+aF4?U8G|L^$2P9wufd$c*L%P;GqgNWb_bW@#Nl=%h5nbqnKF?TTY$( za4yGPsiJ3@7Be1iaH>u9xMxW^;aM$Knh~?ivchYsG_@9uN~Lk60n5Wu<>aF!O|V43 zAV&zWCrhv`)KqxryS=Xy(@DEqBs=nKyk5JPCghRm-$}D^_TgA&V4$zhFVxRQ9x5T3 zAs&6jd#(#}5wmG#S%=+&f#IFmdOh-VT~`as6C9k?;+Q2Z`X42=4Ym^9Rf#F z>2e4hjZ>b4>kyD|!#N4qAt2>s&qz4#(5fPO>OLhwxy36ehR8cYz%W9dkYHReN02D? zMS;enx~W=ymRB+gil>f_SIOy-)?*R@H$+8%9*UzBua+7jtEnBwdZ&cjOMcI6o6mUp zOkw8bQkUnR)xd4LxJow?{g~7N*~yf$CnvqiHmN=Gys}ZdxJ0)XT_yE{O)OlcVD|nk z@5voywY5x(yS={S^{!dhQd*imm{`{ zs@iJ=HdZ@gb%oZfRbBQStIg$=Nc63e_IVsY565-VnQ~wC6QdQ(pxz^~;vp8pK(&;f z&Uhj(G7_P%Em^rkLa`~)yIiSpvD}mci$vMqkw7ewnZ`ar>Vd3Ipdi--2Iyxi7B^SN*0~RpcaYlk-7l49^P!dRbr(y zM~AD*C+?I$O8=GIOLQ}}#AX2e+OH)5_x`o{mFnq*`h4UbNnmz=;L{G3?vSj>`e!Hw zEe}gDp1)GTX0(ocT0^aV&hyt!s2V`OCgIsH5WZ1cT1Kq4Ce^A{`PCXK|C- z!Av24yJV17<=MCy3C1&LNJtYD1b`Qo5wiTVz8w|{=c zakdpFeU?<{<(Sam^7Up`7y1~8Jzw<;hv=&Nn ze1gQ0?9;xv=3x@c{ebcPA9=b571s@rn2(c~cA@EV0zyAtLQ|#a8ZLGw=7fV)DQe6r zOW8}S`kUjj7L-=m-B2aL6D0{KzK*FKHr+6ZfLEgzPxba*S<=YPwZ#eo9ohPPg;Gup z?rPxCG}^z`;bn-7l&-p-o{h-%`|6BKU$=s`nkh~dvq^JY?Wg{hz?kV2PSodbgh=Rp z_p>m&`MiCqfI~3qaL=t8X=O4TT)TKD-E=frTV0(!TU(u(MHsJsc3$JHs&CWy%B7Xs zj0PRV&o2G!U%ObU&8;<7vE`G-fxR&Sc7ZJ{9oX&u)+=GT@^*BXU0^w-sbB*Kvv zzTBLhJ3p~-_S_8ia2k`djq^q%OYS|2sECzNW1)Eog&mjpZy8jV? z!_$h@^rRR2n?RgHIOlHzaW3K9zYE0S*vq6B|GI?R&FzmKLag#@h~7O?llCDUuMraI zdaEIkajz*M_q621GbHqEqj%tl>QdG_iGHZ#9SjR~y+dK4aqqAMRh^#)*J>8Wvc4fH ze?M0$dy>_!e#E>rNd-O7j(0&qDLakoAqL|VSuHRUhH%jUS$7KnqCX{@^BW_yvyx4c8VXGTi@?!rO4q5SH{}haLxOC?S z;gBWI`Cd3=#dE$NjC8ql_s8LoCC~j~IAq0herr7$?~yC~sQW8>>3 zsbDAef-p#OEwLAcLK4px1|umn<2lZY!yu`2=cS>L#PcP=ND91oj{CAONGjcZMJOck ze7S^dSzJ~9Q6X?t^kc%{Q1GJzaa?Klu_16M*L_?V9GvuT2IAtR?D*qD;81S-iD7Wy z_k=*)AeB4#q!2iiJNT3^IPiONAa01t9r~>hIFvi|v@kgEdukwVn93b~dI%iK9ezd_ z9QgfqAZ~=p9eHL59LgPeRu~-k{Z1fml*%1_b_g8G9sS)fIPiN;Aa0Dx9eZvF9LgPg zei$71Jx{`^i7h<#Nxbahos3-`66jnJ66hWY35;LaA4nGsQRFrmn+gX^#ik{o@|Mi8 zFzv-=B%IO?a2$h9Iw!*cQ_d*~*ecn0CV*ecnjlHG?( zxK_y=Cr`#75e}G&S0!Mp5I9US4ksTF5}3LrBryHJ zkibkV5I90IjwDAy0#l=bz)|8jntV`5VCvRD;23cnOFkqdFm-!KU^*ERm`O=M<%1}# zqMC_eFRKvydueUi33V9yO$n;J1#`u3UhE$vV2dYi=;h*_Z-s$!@y@p;XsdV!k0Yc! z=Q|QmjV8blt`yrQX{j6MY?p9b`0X@$`0|{T0kNkAG0&#`n@)|gZl^lHPnL(k&n&BmoANsRqHz>!~Qv?a-Qg~kJ;NNuf2JP#<; zRK3Ba*BUI3Iq+}Ed$1=w@=HmGLl?@mrP-Bp%Z*x^PZp;Z>a&eYkws1LIsEKOmD$rK zP?ASXLYoCWbb<0>lJw>s(p~U`E-7%izM7Wmx|Ip|#no{Mv#X7nsy7!Fvl4Kd0Ybax zG>E0H{R~2KO=+!OK|UuEbegMoN-Vc9nx0=RN|4(y zm^rE30~cnHsZ`@KE6b_1GiPdzNc0;TZe4}5ZYEPXF6EVNn!zJ;c(G&EQ2Ue0HeJN~ zxp=bB7{bcG+kcT>T!dxGanM`4<%LJp%vo8hl801MS#l8+b(}t#LpoRu$zZ3Y%I^0Q zl%c~}3B9w0F5-d2$ousv!3FRspW17dRR+=2EpRCas|!ndRBYdrYP9jx9QwlOMSXk7*oGY!fjW~;3{g($k!#C z=_08jk*Dd=&nj}SVnrZ&rJWLaR6>U+Y=rk|<65G0uqI%e^*)L9&XXz=n@;BC)2FW2 zob5Ll7&md3nJ-!S%2#r(FeMfHhVY5y<@3{0Yuv7=ct#f4sfD}%H2&EBb+7{k@6g1! zMVHK!CH!8Ux6C7)p6-Dg^?u8PU7@i(W*+ALFpK7LLz7->G-~xG%~U3E;&ZWPa;Ys6 zRRy%Y^4z)F{MurzK~u1rNvpT;drT3Pg}L+GmGV*z_A}I5B`L~k`cj*}LqhLlw3?1# zmNO~g_FbfTVk3QSwtlu&>S)uvFdY0*8h%NFJ8kYh zsf>P);id>}1s3%ClDbc=@9sRe{7)1Sxbn5R=D^D8^4xj)$D{NWY}vB7 z0s?;o$x&sJm1aYKQh&$yD4hf%-OwGuU5)+T9z`~nBM=>{+FD~kDw!n2q;UyHR%$4& zh4;(R{y?&}1zM2=^0Yv#Rnh?(&f1Eo0jf4Bqg`qG+bY&}QCdXzth4Gyr`J}iwMJvP zQC(PVsBZLVP4QKbb!qA5PN9^muNLuEQgO11%U`BeadwC9JtLW;&(sa&AN))nWK_*o zn>%+NEB%NvA^vo10EYrso63;fwL0t@-Kd#H{q|FB8&^r9VbBdmN``Z~B9HUSaFs$f z;a_3E_Foj)V>H=|{A35vehH0>FX>Nb7SN`aqjb0wNZW(PbWP{Z%{I6yxIK@qOl>uW z&Q^7FU^V(0&B*K;$dU7V|}RL?9fBi>Ozi~ANJMB8d~&Wgmatad{O@#-4Rn_gI0 zC38c~ZR#P3y0hrD`aEs~s^fmUZsL?gJZNlPUtKs0x`9(3-!@c>>p0dEQR3W?ch0J9auoT|%bxVpNc zL{Z~cu&AmJ@wew7#WkACtCoBpkmMT)kgtJbebf~Q)@cdjp)E@UX|FlAVln$oNjg(k zZl;(&VqVNAob}0I-AT?hn=A9ov_@SeuRVdKxyv=1#{9jr4OEHUCjDD8qW*kgb}^dWtlFXFYz``KMfg?ixd?x|gjbGMRbX~y1-DZ!Do1lts>DqS zJa=~CjGomEwEiVR?&Rn|eRio9rAdCzuA;|8MRaBr`h_P4xFVL{k-rl)mT z7R5uz7q&`TM$|N-e0W>XV`czt!KmjSWe*yqm^M|yW^9@*jj}CDvGzc=NeIZ52mMBN4t2QS*tD5kV&F+u_PXG ziN~#7Jb1Wk&vm=l^pNaX64xs_xz4rJMUs3&Qu1hv2L5F3Y$s7$ADDjXxr?gl(Seod zm68+>)NQ-PxIJkmC1HxtW{kOS^kI@{M;4dsX9pIuI7vxozQ>mvIoyG({0lwXK-PH` ze(P#s4^TwK*+vEN5ri4=o>7@bqzJBjQzJDa))w(0`n$U9-|@3KhKdd>u2Srt{-owZ z#|D^m`OF#UidQxRbg5nRxE97*XzpSiEY0E$cKQ=PX+%=L#$TKnbr@f-UBn1I*H}P@ zWXXGv6J{=JjT36+SzoSK=}yF1tRdTzA){<-Ds>Z8Q+c?S6INAR!o*ko>CEEU=r^^- zth%c88#rM4Lvy$@joLkHwffv88mLtDKc#7{iSxBwZ``axy>tchD9aILHL2x@uH`A{ z${Z}sVIL@LZB<_tph|rw+DA{NkLdQGIS{$#lE(-X;qZ_OW)1M4E6do4ZCr}}BSH|w za1Z|PYI|xrO4pvOoP!z`t56*RTv&zF$qGuGw@5WP2n(=hqIG=RJyKwdO0!n}s<#su z3dW*0c4p0tz857LHHB!?oSR)dqr`fWL~?znSX9#N8fFKzv&+~{N3Y^`{d|eov}>{{ zzw9zTmFL^kBP)#y9;QR2^kV}n7tmj!bGnr}dM7SI>8V~b7wyTc70ah?@8kG(E#3$5 zv&&$&X;)=)yueukXve(yp2la6cS-sa&G$q9TfW5x8pxc*_sjnazUk$q73dEV zd-dkzZ1Y?X%|1c%{e)j$vvBR92gMg`4Npu*x|DEUGhKqsx|Dlgn7TfuX5R6CVjA}` zrN;rNVf~+&4*Hly#)Vv>CMmG zteybXEOWX{ZJx4HBHX&LF+!K!V3fjAx3WBg4X^0UddX%DQg||e z-l8ACTSJv}Y5=;y<_G8N;IGO0e3@>nX-}3^SYvIK|2b1zp=mM|itF$20ufzx52dYL zP~1%|6l0 zSh-ySaYxs;7FBAECFEQ2#b5-AZkFsc+>;gQqpz;AS~P2ldCbqxtn{)?bc-}Jm8B~_ zR0S!Su4e@&EiNmUG6-PPHjdKtMSi95s9rFvsGWSXexNE-C(|wEJ9;K{z~8~|rsK7=1E&4x_ z=^pQ6z!@i)EOn-wp_OvG@ao);)$*!iLW)A>W@w{Hsp{CkMZ!_h^b;#6-)g3^j0ZAw z0nw*Ql9@1fi(1Wn8y7I~&12c23R7+1aZ(#NuB+GOd(c@lkL<;jg+`5fHG8L)>W%C( zv#Z&qmFA`B^K=1LcTD;8*W0%;6UlX7u6bLoJJE|b();wVK>0fo&nIg)^cjC^H4{_Q z>q%b2kTWbKjvKW@`k0@i-&1yS>?h*CNFrYEtG3rlhpn!8MP=}BYhr72;HXHPsi}49 zazlGYPii#S-|6yT4@=w94z~ zNYtELjdft{qOqXiad8rtPBt!;IHlG2H{2q}8Ll0C>=85iT&Yga(RJ!B8-2;EW6P<@ zL!(zu^2wdH6Q`)&%F4*tfa?AG`k^6ef=W0ZbujGbEa}-T zYKou1|6RuQj}eo#`GvKmP%{2pl5xzZ&TgLl#EeK{&iGhjoi>L%GS&FY-MQggAGF*9 z56^x-pxs0CMqQxg1N>7+U7${9o!5Ru`|%%3T+9N*bVSXCJ7b~2aTgvhyPZ@o(c9jd zCq=D^#c8Q%e|KS*m7F83<(AK8DOaGq^67SQYbc^#i|)~^twwDkU8YvdT5Coc{y(U_ zi?yyX+v{D-IM-HKslHa?1h>>R>_VdD#yr+XYqe^Ze~|0V;EwUlub1-jT4Syjr9?&Q zO_pZPg%E+gdTUbZFCnA^CLCu;@L*d4b@MB`8x!f1tn@vt+xO#Vmz(f=$X1dmvqj9X z*+6IpLxIGZ1SOSOoK3XH*uR@I1$_E&y;>W>;%X-UZLVi2Sn7C7D~q)yWN&sXOX;yy z63tphnx(RziB!k$X=yA*f;4U~Y3A>vG_EAguOw-1u$lU)F z|5d%HTZ?I<0*lN9%G$bYt~Kg<4c6)nYTI{ZZB8$m-zZ68*5+M~6LZP(EE!mPcY967 zj+ZCkGqpyoeD6Y&5_6+()5Tb$fPeVbM+@prgb?V^0JSOB7iOuQ(KHiSeinOthhcS!c}PjvC#12gJ7(KTtAmV*65 z(Nvu>(M+g^?&bDP@P8(SRj&0Z=hQ-NalT72MhMGLIu%7_M^e5dveUW}2GP_gb29qx z+SFE>Sw;0RPOs#>H6c@t*HTjv*NW|65ePv_dAFV*Ci{Ehl%P0lu_{Y+XX zdYPVq)fY+)`H|#9+96&P&O&FJGa?M)EB%OgCX zoxlnED<*jR0tp2)DCs8EVq-FCEH-L?-H>Bsvq(=$5~w7}7Ae0a{cwI9Q&8FIzyHKrP zM1DOd2-KtR)*aWPRyl4=)_??!6_a{mQju=bQlGiQdmq1xWbrI&kYz6t9v*%6ASerl7SIbXcVQz!Lh2P=wFbpIS+K^bxN|@ga$$ z1NynC=sToxwEl^zGrLe;EbvAQKQW0I5j_^;6BSt`Xh8_^ zDWf;Y+eV))F+QSDTw5d&4r}>X)2AdNm5#?Wt<3Tj34FMtgq2SA^hQ+A%Br1PV!w!W zD28msfh%%EYQb%y6&26m9yD-farSKVBO;M*0DP{33dFc!=8i)W5jQF}0J(P^R3wEN zdy?ZOYo5^IH_MtT1&7LmcUxFlz|kA-py)oY)NRP3xxB4L>Z zu-x<)%rCU)Y)AFLE?Roe=JVH55gk&|>qYA50ymzs5{XIyr9#*0wtaU>TEDvGaCIIY z<@c57*b*0K7V*|%={i3hO^mbp9UMjbdbC1nh(CdEM)B=mDwDJ`$6qJBR#!QA(aw*f zYe9&Gl^ai49M)&R)XrT3Oum&}5s-QF^AXXNM@6W@rO>d~(iio&cBriPYdZZx>W`L&y5fB*!kqL|5%Hd* z^wXu1;$lgpIof#ae3wVHhQHO!tTcpd5Hr>;ZMn4`?Xi;qqu-Jg|KK3@B(j;S(4X}J zigOI3H%MDWxAtXgg40k%m#o;SMhVfs(7n;pg-QUw&~Z|kvhwJpvQpx=bW^s%H#bpl z9q1%fYnAa?q`%L%8GJ=zpyr0140IqEJL5|pKftb=`yBtRjKj|Lvr&3Oj{26hP*rK! zo%|3-SX-&^^2a2&t4h6JlBr--ikm_KaUh&cx|eI!nHH+Fi`j%qEH?78f$0##-$(@w zsDku~Y?=gp#IvN~*VffKYTRY7U@le!QKt`6y9YjdHQ#jD^7{YD9`?b%*)vL(?t zytbG<7>ZAGIU$)&9+-}J6*rk(fFS(^0q+hppeB? z+fQ??ET5$<+1`v>9m8UxJ4O*hDAe4#vOu+6Gq1Kn7itC5x}uEH6!wVzT&v%T+GvMB z<+RnNZYon{?bEKrqU_pOynwEb6T6qxE*iNM*n!+iON5R@YjbSP@-fF%qvdrp!m#ao z(7KnxCbi4w{nT2V+~4p<<*ThVvK~AbsjofgIUjg|G#|)yNQm~LisUIkw}`F$u$FJ+ zaE=Zfs6jaTR;iS(edXTQtaXX4{t}&(s;z>Mijh9iqE9LytJU1)(Z#VPKe_aFng{)9 zl@dJ{n$dZwG?Ra=R8_{tAMUFP*)+^qc&lk>kIF+U&5&@{);)a6gT1qAs>a7y@onA6 z%gbk)bb=9%Tpc^3ONrP+Y|xF|>QJ}qN>KR8?ANi;)sWe;t~m0Uw*Dc%mw!kHXMHo& zePaA%-J`8tjoUgHQ%%p(^N%VmKg>{V!lIw>3#<;AT)@PHT!q$PhsdnRztB?A4rAA# z)>&OR!|}!0)pKk*QKpM#Y7O{ml6eudGtyDr`%=$GXogl&ey9FAQryEDyrKD8 z+39-5%lc!rncNHC%9K3^p-)ZW=7fbamqMk{ zMgK}#{up^tYI?CYTc28i&*a6sw%cay2d%}wo(GV;oH_5?)ziL|KSkdJi&OKq)=8(@ zm1ZR0MA^m3WCUWXq*1%Du)KzcYR`*#HeP)WaeVB#N6$z_9_uO+XM4JItCk*o7yzH5 zH%MIc1cqvFPhh5`C98^eOtmbwcAUw{-w9JEA!x zBCd|@VyflV`?C{;!U;Tx#GAAf;4qhMMgKhZF-)_+Rez&hz;>h5kmz@%hJJO2*fdM?ts3`B z-a{|DsGdAc;Cprben=$&b<|fckJZ0(YQS@}KCO}PmJY$x^>|(F!VD?;>b&TT)Y{ax zN9SF_m4EVDnT7VzkmY`RZ=3e z_GKG95v_~dzZE{bc>$X}>ZStvQ;&25`e&78uuCsftSke!+XY-qHq>q72wd`16Q}4F z7U`4@Z{L$Oq6aiDYhf}h@S^5tR`osjeO2?bR&GN!KWn{Xi+8>DTh{Vs&}K*TNWIEY zS1?+Y{ixRdC-AeYr#n5lwO2K^U?0@g9un!iOUaU7*OjwY z96ee^_rk-j-CMO-pYbbd#I9YBwTR8|F3r$dm-G;>dwF8>+Nyb3tC1Uh!l^twwAV)0 zn&e4gP3NtuFt_rE{+{y*!jOE>%R(1T)Ic`@ogE*`aH2$xnKduLi_HE!ik1 zk}fM%4Bo5Dwp`G&^^DcWhwW|MH7>-e$S<^p8+}x=&s0x+YH#peykiaL*>H}Hwo87Y zb!~;M7u7!6vEpvE>#fdQ zt$vno_mTETNNgTCf2qw%&ISLqf1M)d|No@O|I$VN7z1Zlkr%}3@+G)1ZmXZl^=D{M z`n(P}Gd5~Ad#naCCd$LJ^tKG05muTxMbGHoX0f~>fF%!*j;6L0RO{1%(@)OJz26u zTI$8XG}}_hzPxfFTrZB!N}73kpcwtt(&<@z()8xs(vOL}EM8KY`l%%1le-L}{-S3? z|Npv_j)}U}FHFm}?D)*y)nvb_r3}-&l^#Ph^1dU;+x05Ik}})&i7la4X^qTssu3TJ zw_`Nu7^AQ@<_}RbnXuTuAXo_@TeQ(bxOQzRqib}ENu$%d!igKc<@c1jS0UsfXe*|D z@RR0C+yVO6WlgedTsbDwExKL_=(2A6{{HA|Bqx7s_n54iS`TaZn+*>tQFGCT)jICz zr3vloypE&DM&C-CUBc_88NE$%5?*i_bZ#v~5mQnT7yA^UySQQBOZH^ruqm@K3naHYM*!b*&j*sr#L^+$;Lzr7F@% z7hep_O5M>xFf#lvr`@+pPE|i-Pr_uW9rQk4As4yR60c=8hT}?KeB_ zXHs=l%f!7>c)2U?X5=#W;dOHOO-YQSJz68`)`~T%2qqaVdV?gz4a9?5pSnDPi~<() z54;vob@-SR(Yv`nweedl!WShbx5|y$_l}3HvgnJX0Oh32Ri!YIaII|=llv;{vP9n_ z^~q?zVkltW3X7f->)*qSD%fxI*V)`mgjR0{{F7Aw_xHF(OV4Y2IDwTp_P6Rf6rWKk zcvIvzPdq%A2S3%P(`>w1U7bpFTS_&|GTp)g{$5-sec+?l4-{z)#bq zU#%^NFX+Xvb+9t(R}-<-!6Eu1HC@$Q%_&oh#UJ!yVH~Hr0Y$lQ9jsEfsp%V5I%cl= zmIE)-?al`-7WjdS*+sqF?kX;Dj@Isl?LqVVS{vU*<`vrp?SE>5!j5?DUIA^n}9VL7<_;&~RdCBr!Ca7#d3q#}dO%V%SX# z#}mVYiDAe)oERQS438#;#}Xs4#E6p^aT6o)#K>S`WGFF$>Wm~tMiV1riP2bM)JcrG ziP3msbTBbGlo%aOjH0%qiP5pdSS&H-B*xstSUfQ{m>3&Mj14EoMiOIC25AH8h(RAQ zC?p1r#GsNGbP|J7V$ezqYKZ~IY6FfGN17wmk?u%&q&-p}^yff<4m9XMg${J+K#2~t z=s=AQ^yom54m9aNl@4_2K$#A-=|G(h^yxsM4m9dOr4DrJK&cM2>Oidy^y)yd4m9gP zwGMRaK)DXI>p;B@^y@&u4m9jQ#SV1rK*_E*9^z1;<4m9mR)edy+K-mto?LgfQ z^zA_54m9pSm#Q#6yzB@pZntp#zv3J4Vu-7{-c{_*# zB1Hv35l|MEz1_Xr<+icA2b`iJ_J)GJi(M2e*cE%>?(DrI`n4+-ua-UIl1 zd=v0hz;^*(2H>L!KAPa82|k+OqX|Bm;G+pXn&6`eKAPa82|k+OqX|Bm;G+pXn&6`e zKAPa82|k+OqX|Bm;G+pXn&6`eKAPa82|k+OqX|Bm;G+pXn&6`eKAPa82|k+OqX|Bm z;G+pXn&6`eKAPa82|k+OqX|Bm;G+pXn&6`eKAPa81wLBfqXj-%;G+dTTHvDvK3d?T z1wLBfqXj-%;G+dTTHvDvK3d?T1wLBfqXj-%;G+dTTHvDvK3d?T1wLBfqXj-%;G+dT zTHvDvK3d?T1wLBfqXj-%;G+dTTHvDvK3d?T1wLBfqXj-%;G>29(E=YW@X-PvE%4C- zA1(0F0v|2#(E=YW@X-PvE%4C-A1(0F0v|2#(E=YW@X-PvE%4C-A1(0F0v|2#(E=YW z@X-PvE%4C-A1(0F0v|2#(E=YW@X-PvE%4C-A1(0F0v|2#(E=YW@X-PvE%4C-A1(0F z0v|2#(E=YW@X-PvE%4C-A1(0F0v~Pg(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bz zZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_1|Mzk z(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_s zA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF z@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_1|Mzk(FPxF@X-bzZSc_sA8qi_ z1|Mzk(FPxF@X-bz9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu z9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk z(E%SF@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu9q`cs zA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk(E%SF z@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~0UsUk(E%SF@X-Mu9q`csA06<~ z0UurP(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-Yy zUGUKbA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T z(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyUGUKb zA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T(FGq} z@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyUGUKbA6@X#1s`4T(FGq}@X-YyJ@C;3A3gBV z10Ox`(E}en@X-SwJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10Ox`(E}en@X-Sw zJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10Ox` z(E}en@X-SwJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3 zA3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10Ox`(E}en z@X-SwJ@C;3A3gBV10Ox`(E}en@X-SwJ@C;3A3gBV10PrqVxh7bj3B{MWivQIg2l>a zu!023mCfJ<2^K7y!3HU=|4@ zz%3F+fL$bv0KZs&GXe}FVFWlv!U(X8gc0Bw2_wKXR_lxa*GL!vwvjLbd?R557)Qbg zatQ-k_sZNAQB5AwIGrUBE29I z3?juKk_;lvAQBBC)gY1$BHbVo4kG0sk`5y6AQBHE^&pZDBK;r|5F!O3k`N*dArcWH z6(N!lA{`+T5+Wrbk`f{@$B7Gqe7$Susk{BY5ArcuPl_8QDs55{LFi52V2^gf-fCQXVZ9oFf zsW%`2=TscP9V5s&MF%8|U_YnsfP@j`oYDglMzEh#eL%tp_HzmlNEpF>P7MMHBiPR= zLm*)U`#F^eB#dA`rx<~R5$xyGBhZ8x!G2Cj0tqA7ivVFdd*g$X2#U_YlefrJt4 z=aeUqFoOM@3I!5Iu%A<;K*9+2bLtdG7{Pu{sR9Wj*w3j}pd~Yc{hWdY5=O9}Q?o$A z2=;Tz7DyPueoo~A2_x9gDPAC91p7Jl3nYwSKc|F&gc0oLR56e+g8iIA1`>rL{Qa0?_&fxr?7#95#*fO1` zIj6{hgc0PNItLO)kaJ2MNEkuR8|0jF2NFh*b1EK47(vb{dLUs0Ij8P{gc0PN(gzYo zkaMaZ7%><@&MAN(VFWp+27-hUL^GULCz_qAYlYKr<#J1nGxiif(jBwkaKD(NEkuRDXSo11UaX&f`k#|yh+Zf zt{`CqIj6vagc0PN8VeFekaNl`NEkuRsk9(r1UaYJf`k#|oO%lqMv!w#E=U+b&Z)ZK zZNdn0PT>U!Bgi?m7bJ`z=agTNFoK*@fkDCua!wHj2_wikbr>X!Am@}~kT8OrQ;k8w z2y#wA1_>j`IW-x))DS^c1_>gl%OF7nl^G<6pf-a95maaJ24n;|r$B>*5#*d24H8C> zbILSG7(vdd)F5F5Ij2~Igc0PNdJPgrkaJ2lNEkuRsoEf61UaX0gM<;}oZ1au#Ec;4 zly8tQf}B&qLBa@fP7wzQBgi>*93+e&=ah1gFoK*@%|XHla!x@92_wikH60|3Am@~I zkT8OrQ`y0MfDz=J;tmoOPp3AcD#d5=2n@L4pXXKS&Tk{Rasmr~qLO!w7Ot5eNw* z$T@W&B#a>El!A~jf}B$gLc$1gPC*C>Bgi>5Ata0-=ahwzFoK*@8A8Gca!zpw2_wik z^&w297(vb{5g}m&Ij2g5gc0PNLJ<;1kaKE9NEkuRDHkDO1UaW-goF{~oT3pDMv!yr zMo1Vz&M6%sVFWp+dW0DrBgi=gBqWR==hTppFoK*@Mnb{}a!w@)2_wik#Uvz*Am`MR zkT8OrQ&K|02y#wU2?-;}IfW%8j3DRKmN2nI1l1)Zh@ifN1QAr2kRXB@6B0yFWx_0! z5#*dg6B0&{b81aU7(vb{Hz8pJIj7=;gc0PNq7xEEkaOxzNEkuRDLo-!1UaYrgoF{~ zoB|XQMv!xAP?!uef}B%^Lc$1gP9+KnBgi?$C?t#^=hUN+FoK*@l0w1=a!yqW2_wik zg()PAAm`MkkT8OrQ=US?2y#w^3UhKskaLPuNEkuRsZ$|g1UaWvg@h60oN5&kMv!v~ zR!A5@&Z$`;VFWp+Y=wjo?iY$T`IE)U%KSAtaq@7!qbe(kX~x z4aNwPPE8C6BS<=BF(iy2=~Tv$FoL9097Dngl1_aL2_r~4B{C$8An8=ekRXCO84^TL zDMNw?YGp_eLA4ACBS<<0GbD^4>D0`SFoL90HbcS)l1}9e2_r~4#WN&~AnDZ4kT8Oz zQ$oWclMy7HDjE_-kaP-ZNEkuVsih%d1WBiyhJ+C$or)R~Mv!!hYDgGC(y6NR2V?)9Sl1`Zo2_x9isk9+s1UaYJhJ+F1oO&A)Mv!w# zZb%qG&Z)W~VFWp+@P>pD;0nU*y0-PgZ1UN^+2yl*s5#SsNBfvQlMu2l9i~#3I7y-_aFan$- zVFWlw!U%AVgc0Bz2_wKc5=MY?B#Z#(NEiXmkuU;0nU*y0-PgZ1UN^6 z2numX5J4dh2_h)OAwdL%I3$Rm5Ql^j-2e$W$LgL5Bgi?H)l3*c&as|l!U%GXg(MS3kaMiym@tBzW9h_% z5#$_e79`{xD+?x!Am^CUGhqZd$6T5TBgi=>u}m02&M|vr!U%GXX&VzpkaNtJkdSlC zYM3yBoMSq{gc0N%?{OxKAm@02GGPQc$D4}@Bgi@47)%&J&M{OYA?FxSPdSC#{$%SP zcDzOZT!Ssa`{6&HG`0WunM*6%$ML0gTr9Y>YJZ&3-lR6E^dG0Ok8XSlI~|u6$8pp3 z%*x`-TJ(2t4e{La`0CEp@#s4CO|xg~O~608B!2%kp7FWGsren#Gvf=(J0{LtndC*e ztAJD+y+i5;0P@t5r7Wlg)=5+g8z)z$W?622rZ;pZ`hLh{zRHuVoP}X~0;$@(ablPPRpN6Ip^;F*Z;15pU4RG5^ z)@{^u3){9d2<&O!I=77#eb>?DrT6tvO{VRz=y$>RemtsaW_)_)3_Es5BRtM}PvM9> z{s%^I^x~+;qc3k9Q3V` z1LsEG+D_`#$s2nD;_H2Y?`0rZKRogh;V{tpmViFiN3HYYMjN-{TbMzjQEcFkJ)&F&>t}8tXsb6EvtBoqICF>gg-Qe!=4_R z$_#FDFx=kIGoZQ=0J*rV)%FrEbbVv*km@FYJfdzX%|uDx)FYU>8Nh0fE~`A+%?611 z;bx2mr{PhlCam(iGniyzSvelP_^`6Hv(Ym;n>IsOaGRYc2ggBgR2+O}17~MDmmXne zs)5Wneezq8tNl;1u5zqshR#8?ki&NG&yZ{kE3x6FJ=*+K2l;LB{(N{9#^$*osymWw zR1ev3lq%KYj0m_ew}_8L%#Y*KYOAwsT>E$P1J%l}^-%L`{*V!5q8@@w9_&;<`E|@|dun2+hXP~2 zqH-ANbsiUwliS0}$Ed>*b6`EO`T5gX%16{iP)7mbkfORY?Z%4Y3o{D~lZ)HNXJ;mtCo~Ik zv=42=e4JlAbrSGOsrq^4lh&Qo7{-IbtCIo$$l;?<(*MaT{p>XMuy;4J zhEMU2sV0C~%1p{Dr_{1&B#Qv%d|}8ioHbimU7o{M~GHX z(P!){Vnrzi`#dSv29^+ z^@AapQzDDjBJzqItVIg<#|W|gsVI8Vg8<0hSr>2%zx9e~1g)?G{bT9}0@F^593MQj z&0-CAsj+wmc!SdW1M2XSwU;VYq^_`7J%3ob3#_9`mMcC6Ni&I9J)NcN_(s%iAl76w zTE(GoEpJe|2`J9Qs`iJB4QSkY#jnXvt}L@A8=-U1bkzcEqO(@F3X89K7j=O0%O*gz zA8bq)2gEGj^C<Wv%@+w}=tf_l?gVOf^l$X5*@~+v5O<$O1 z*`1ts51fI%8!{-hU@h917PB7JT?2yaeF0udq$w)7-BPFS0uT04!@EFQ3WKOUIX$;+ zVI1GnT%4Gh8DE9@GN0Hes_zWgf)z|^UXe~XB6UZSWVYd`=~PEV2AePFaabdnQmL#W3B z;-D&}Secnx*n#gOv$HLd`}H=$c!r$Eqd7dfAR~=FFDWnUynUR>tiwYOarjK)fh@UKZ&tE?D6< zOsR);`zMY@mOgwk0j8vIlz&Y92w)yvrE1LR7^{G2|09a|aPN@%VStq7h~>@x$Uf$u z(uXiPSe}hs=_5UY=_3H1kEss>CT)kRK9%qsZ81O@ALftRA$Jn+{tgfx>m|B~dS>%30)d&QvHGo~_ z>+U7S)E9e`QDz<`4g;+>1KO9pul9pzUNCH=jgX}?C)ZFT%!_X?)2V@i?@?SyQ^0?y)WSWd-v)Xuj;ot7I1TB<>DgzyIB@_itM9CnVWhva$~pfMrxO#iMUp#dJ@I(`+T0X1kp6C%wJ=VjM#+Ba3 z`NdNwdBC%J1qE@xc5(9*&7# zCn)y|s#JRRO}D8_m(Bxnf$p__ILty8vkH5mpYI=2KM$Ct8%I_-lgs(owOZ=A!L!iM zK^CQl#NwxrtJ~DG!{X~_0iS0WOLfuW^2ctvduHey^fQn{spCbQ02Dt1ruO~YAJx+X zXP}>k3`$SHil1P0%gS~PlIp2J;q?T3=NYu2()$Yv*X^6yW~bGUlca2?VSU0dRo!fg&Fq3RxcnWY7H%<$W-`{*pT+q8%nH3lmcd z$^9kzLBJ}xTZQ|Pa(1g6=o3vp5NHJ(OO3d1&t015>`crrPwB>4sU1@Xcm~w_1F+g| zu1aw9KJZVWq$JUGszt^Ew6C8SspI2zl=Nm zVq41^Ug5L`T!of)2EGl9uec;OMJaDkdNZI3w8?Z2E!rWePW9`xt4ZLAS?96?!4%kf zv0LiJtEp=7)}fuQ7q4azPiu;6#1hYMht&0lt>qJddTTIfwGGg0?YCH0o_5M6ULh>79dVYkNsRd+Kr~M2*9jO<+L8&D` z$#vr;`l3{*>|I!{xBoz$j`*&jy=do<XjP7Y8An<5wR#|>BF&)kn#gQ@pqYC z^NXi;0I%$h5_1!!KBIc9Iuo(>>dB!e*$ekq31O+;cUI^e)K26eFWMq*rI5mL^ZQcN=b!zn|5MS zp?V5HDZ&?-nfa0s&veaCZR~$-ijC}C?~v+sfGoZDC(G;`cviCa=e2-#(L55{iiSh? zw?e7cghJM@266!R)?T!tUKKb4{YqpIz(XJ00H$6MItTr7_$w!bBH4f{*N;OZ9x*UJu(L3fXDno} z0T*^(Kz%MmvEiS*Aw5nr+LF;1xU20a7SL*nz=8+Jw z3qaE%wzZii*LrH}N^|q(&E2FhaWp{7T{s`UoIaa9m*EcUmdm@o;ZY`Y=G1^lS44eDzSDX!=l~ zJ#_eTJ*y*S+#c}|Ur728AQfB)k}i|I@j!LACi}s`9>MfM04wRz=DGOl1dNNG-$wTB zO4a1Vu=wh+z%R95I&WOJrA{1Jdt6X>brRr99YZQE{b19w9uJAGP6m3ZbyRWL&0)J! zLLsY(Fvw`LQi{oH2v@&Q8}6*_GMnW*i-GeLFDk02AZfK23@>vkD#f7ID! zZa&$$7&rs96f^_0sAVsLDd+ETzF%PxTBxIO4p-RT*v&oR?kIrrB-RLV?rf7&jW~hK0qq50dK@y1g_7kkD*>r^3Xp8|-BI9k5UBd~K=m@p4BCtMM^DCbd5hDcs{hG*HvvZ8 zA>#AvCm|cT(r)r&j#*f*=orzZ`M&%oGp98D00z{M=o+Rf^*#$ z-Y$`Uam>!q=BLj>es25fV{NPC^Vut9&KzN8`V3?yH+F<#E_T_>j*(`k*N~m;TnY7b z7>LX@G^?Y`O|Kv~*|`$x+2n$n(?^$=J`HYw%YwjpD70s=G3}ZQ2(D)VUf_bq*T@++ zAq+m8GBwLt;x^xidMgkMTuO&B&QGy)Gybsjv=^-9=zA1X{;>2GV0rP=mT?cj+E%p1 z>B*ICy!2@@6tbRx6J64`=Xv2ycl+j*gh8%P0aD4`3D#|I=!Mj_iIaVz>2aWy+zB9i zPSzcpS0{M{(~kpK!8nlKqrja2{NQ?XbLI!vAL|=Yp9sW)aUfkrwhp;1b
  • XEiwTqaITyS|5k#3Oj`QUxY|>9Q9~#Q2J4TqOURJ&`cInywPEPb#kG1R_d7j zv3~LNF~IY^-AbrU%XOFCF5=w(be!)+44+xHxg zo|k$Gz{(h-@fnurn=z;4T(5BIser3%jK)2Tr}@QGPY2$iPC`g$)8?T(k zdZnL8$@}^oEwzzmr=E}O>e~2nsh~d3Bba)D2QayiQNPfGx2Mhr$b{+HxhKdC{q4pg z=x;YvN%}7cpND!8@~E^8z!Lr9x(MneRS_(uFRhE9UIv6p7I^GFQvGrdAnFwWsbql< z?r+tvtdF5y1q|A3LpLOpY~f3=IQs|r^s9rytJeVD9*wMb!-3g*`C8wI>UBW0Gr@Xg zlvhaNmSz1BIA1P$W1&kY@bSZp9}WnvKjh1^laddPDt<5+wEh5~U2dv$u5WYsxVkhD zu)YMqrOpEsyU~O50P6iA(e?X)?qwfX*(ey`p`^D9v+gh3n@aoa`3w zPmk42p{vR_5z6-LfZ+OB0Qc{A=U>3^%+cnjpMm`3^tf}^C~wGtrl*f8C;c?!Bohhe zXDV!MBHQ3mo*FmO0lj{bA|TfYrhPUTjUs z?7^H!QFB!z^(-Pwnl!A7tYh5Uyg})$fU3aI!qnE5ZnTo#(TqPVJq@gq=F#fX*0mjr zGvf|0?><@u9ibMCF*pb7F^kE z^oK(KMRuU+75|uO6_^Ddw0A9M>=SZ&EeNdI0a#D2*5H~reMSgWbtX^?HfiM7Y*J3g z+0(OpqN$xgtIT@td{{p|2&{SnV0rv=$onk6CI>S?eYPJQ^+ezlyjAkclUj&A$sd+_ zGO*~_RjQ}hRXzHJ9xV%XKEUewVsWAR0>60bMZj~D0%E?HnZC>XDJEaP*ejfR3E}FZC+q z<+cbf^IUQn2i)LS2hKpf1{t^=+bHt{!i;=K^R=VMMZFHWOa*IY)=ki_5A5Nn3y}e* zYaVR4SX+8S2vqe(pz@@Zhq9(y&6|Qjt2YB$hEh*f{-AxlB_OzZE5JQlv@wTIzbz=d zdOP3`C~7UK9Z|8XVD&}y;?+A4UwD;#D*xnlx%!>8A=JfyD0}Wd+91UHdiA^NM5}ir zT5hVzZTV@D&~9Hkt8Fe{geRdt3Oj2aWERhx5f$x*arzMUmZiy+>2WzAJs#Ue`LPja zs6LJix%VsV6I!9-6C=$|T{e>Hj0pyppzZPg0*~(sX(r|z{rf}bpkD`XKsK4U_%7+L zv@o-yeE=_HxW%!yfxcb$=O~{XPG5lRWZZQbvy2K?u!T9Me5vz8=b&GR971nzQBQ_D;->GK z8I8s+-~J(*!Ks>c7t`n`0k))VMU!u8X?}X^+{(B*Ter@y&Z=%Z*=~$lDI>(bGp`HSu z%6@A0oI#)KA5%RQn4V4u8X*QV>!$?(RZj$vpug21Zh1J*-tw&kXr zbe?}q^#WiP>_f|E+LkVUMVo&8XvBSWA@T`l9LA;AH;gJL^+x0*n&0sGf8XRWuUDDS z#9rUWOOd z1W@k)fS8?q<(S_)metM~W&FY9!dNaIcxT`Y)Wyg^lq;`KfNe+pOSAO5f@h)LjVzMK zP(ASwQ`+C-%_UIp1(fV#sbM%o-z((%>V1Ck)TO|ij^<3!!_YaLMEA?Sy#XTf5_L1hd##R3t*)ywjOg<45UR?%w3h==giSPLR2>yKW?)Sw}=cvAf9Or^Rqs*xnq9X9V5v`UxaKpe3jy`q*HDceD(HG=BD3<+;~8x z)U&NSk-Wqfsov@jOTPtJqPz^(?_#aHu+C*`FbezTz!~T_Ap^I=BC#h()vO#AL3!Wk z6;8haaI)XprGC@)W40N7VF*{Kz zo7NAz)Kfiz>2m<)X8e@d>Y<+Eql_|nJJ%zadOE-gHlZZfeOWZi)C;fNXZXca&jenn zPqt*0Pnu!!NYJx_L91s2x?rzGx^LNuz5AZ(d_Y#V^hLe4-$>IJc!g6h0-Rf8%COI+5$#-=-j3_h>`UXt0YKGD z09yG7yp%L~yc{dEmxe%9F9T}9H4|;nh$`JQzk6`LG0IS@qrTzvd&R**kPQ4CrwcB6(W%i!%mZf?x@{mo=Ud>(WpS&-0 z4(k2Lfs;}$Kx;lj+%LH#2&}pku(Bn)W@(d}QCy(?zz8x?A4Dcx0(q$SNCirzlqh=+Rp2GpY?^LJ_n@! zjlQmB;??v+FQ|`o#m|RCS6={n-%#;Z_WZ8-#SvzvzJ$#B*B!Y&S*oSPy6WZru+%PK zbzFO*kvh#4xq5f?ShWYSwR(;m{nKCeg`~bx7fFtQ>aPa3&(znDMX8VX5^$j40bA%(^ps^UgBjB4O&QN^|8J-q(rx1HG5I1`tJXiY}NOWZTQw26Vbmv;tbUfkYTv}3({K6?ynz?Ff;X|kyK@D_t%d{ zoT2&&G7Pu-%W`LTe_aNvQ7-E#VT<;^#D(?6ClD_?zg^-ZO>_MmNbuCh{o?750Z)zt zIG3-`R*xT4Qy&eUh5m?#TCv~5gUkA1zj*pXz;nBmEoS`}*79Kci#e>QJ~*0u^aniD zPqfttM|0?EU+Nc6UjjUe-gP#y^gptN!oA-kn0}v!C$%@4qHyo^i>KcMydc}t)C*xa z2HIkw&IfjFUq80ozrZh^dJ*ubQ5Ky^HUqzy8&V>yPF`FWLA?YBe3LnrL3RXMmGq_c z;?>K_#Y-LZ^G6N5yk5L|1>zr6{`qB{$Q_oitPP=F1&H?WQlw6v+K+m^x^k#`O}TnJ^}n_@gnAty-0bI}yDs{lIgJi=l9bnbHtN)c04%u4BHwu)ypspt1JiHtji}xT zMDF!1>dcv+ydIRX{{e0NCZA~P%|NSsKwp|(Y7gC8{9~%O0@H2ZhHZ`;`TcOa(^0-- z8@mKbzbyc$dOJW*a$>unqyy&T7oh2j!s4rU0Kb%Irx&wpdQg6Ib;vtIA*+jlTyiU3 zQJLjRk#_}yR__LMsRInfHJ!fJ9nqdtR}O5U)Q**{ws zL46JgL5`}&B(%?m&qIBoYE4*s;EQz;)R%y8h-151URqh3+%k`^9<94=^l~pSY8PN+ z8+uLG--v~~eIu$pK$L4wa?9wnmtTL`8%H=;S1lN`NLWlqOh z<9GdGsqXk$N)Q^xAM_BhwJt=wLp1IUN_6DVX z0;vABU)TPaDpgEm)IS}q>7uSce&LS5i^&t;VfnLB=cukkj^U2L%QMO;s-KTCH}wnT zHaZI#;?)0*I79VIWEj9gUYOc}NgB4LjmJ+e{Az@msb3?rQir+nHrT98Y*}5N7@WHK zO(0%l{MDQmywU#6`(Q4IzOMu<>l4!NJ;9a8@H}b zPp(ZOC$(o(IqBWVsq|h4_h;h6>8~INWwSeezDJcGz!eQ$#0^98? zdsSN$3HZV&a?zhhF5HDwYJWkA{TwOHRef%>`RUIhzY4pac;`O1E~?Mei`Snfe+*f2Rv7vz;gR>Ry;UC_b&mQY$WewN+hXhw ze@(}%BGrdSo1cDthz$ekLZJ3f3OR08A9l%xY?0`1N5I7C4I$Ch8-ZS7BasM|DBqjv zBB(b5p~OZaarFC^8cOh%dhzP5h%d2`NAkCV7K-q;+7RmPfT+L(+Dmlw5QVs?E`oYT zwa2hKT~Ua4)`n0Q1ENBE=-YxQ!n^9lt9K)Qe~k1+dtuBRSlYwZd0bM4?B9byEv#j( z-is_e@87UXPCml>!s4s<1HXTjvGa&ov=;(XvW?V+So}+Z!mCRGUvj)JDt&Bk*9StP zs}BObltfXypTq3=`cNoj_0{_3uKF4&GWy0Y#A#vAa@J%XuU)CG$-=>PKwrhW;q{wEwAT<~=b{8x3N)vpoVpY%E8?Y1K( z(cpg*7GM1q__cNr$kLdb^nd3OO#L2U-Dtw^P_u?rk=yhiY6Po4RtOeRR9`i6hfDnl zS%yECA3438$p3ky*{Q!Ey8tG9$};3OG(6j1N0^!V2{dKyNaU2wMgKO9T$Z*A%R45{ zT!H5{v$D#v{}^zx3A6&7h|hphKk^2pe+Vej=lYOt(|xIfRY4BOMer2omlp{ z3R@X2AR$BF2nepf4sefFaC#HN%pyl@^|evtqQ8n|=Z`9Jc-}uw`qPEw24hsobevJ&o;M(Ke7#<)lB2oWhKb$xRfoJ>%+A zqt8=+5_yhtvxs_6Eptu17vUAWS}Rpy@$$af5bFJasNhicMLZPYl6vv#QpEGS)g>KD z;{u=nAE*hSJ_vvkJjg2{?f`tKHiY^xAWC@VQVQ9<03GQgbrIA@flz`ADTCnxMfg}v z0QGSIRN%t)36$XzwIS4H)gapf+6PG*#FRd{C zyh4!rMTsD*DE?oCAoWWGaWIS~V+GG7Vv5XX+su!<*jd)(YTPA-#G4uXS^;q>= z#L7*4xyF;>(w-e(e}2|}gZ+1Y@zn2uC(HTV^0{eXLf7E%%^w1St3Lv~l+7*8YVd-) zs)n$x{)AwT7fvTIQ&OqDUFpvrK-6CVQt2${`WpGGHz;*Apm^H8O8rRByQV&d`WrB~ zLqPj{MR3r`X8{k>AL<|0d}!hJ&Z-{=6WpvJYEHyXZJVQJ`lAtNsDJ3G%H+y4 z^#jj<`uhMByU^;?_Qw#xy0G2zWgE?KQSsj!MK1cg$Yt8Rd+a0FA9bE3+8nlJer|F5 zPPU`(j3^`hZDcfxz3=hR|OHL>MzB*Q!=uft=aD!_E1K%K8JdgTn!ztgVi!PXVHW*ga?< z`qOn0)MtQD!uXIzYTtgJtrxF8S1sP|p8kBjc=ZLuQ)?Vzyrfp4@EVq9S1^myU#uRh zzErK;@(R_L*Na!X5MSa*obVnUiGy~&yH>c`gYc5a#n$)5+^(*_928z%Ra?zee*y$I zD3_7A2SQ|xVD%RSmlgL#>}I3?YrS}NHR8*P`yxPHQ$1GwtxCBE>Vp1zy?FHx#GhQm zxSMz{QgCtutNv%`9Mr#%L*b>Yso^p$+WosehWZaMO4)x>W7Z)>L;kM^5cNNRlsc~_ zC9!AS$FOTWfbgg`0Jo|D9q;eg@`IzU4IJ(%auQhGqPA3vwj$!Hq?AdvaiY!L z*dLawhH`y@I;`FW^`g5i(YoUF!qs-+adA z56Eg1mz7z8OZ|S-IqKgbM;Vl?aB6=HQNB|Osu3yFZ~fxw-vG~t!aLZls($SqQvV8& zaHy`ei;f`{~wU$Hb+}j`@^lw>prugeh~sy{~V~|XWJs$ zAK7J%PdPH~*jcGrN3hw!qHoLC--#C08>L$peQmc~EvZLSB z1BkjAKq`$E_9oh!d(=VIEdX|KG%~v1QYB0d8v8AMps2lpQcDbvHU544VX0dItCsK_ zZ$!8D2&QfWFkTuHz|fL1%RXm)+tKBvZil>TSv9t^+};goo5@$~h9SLUcd*0g@`9#hxz z3a76NxI;^{jg(Vk-}ve}o`CdT0IJJpZ0fJB?H5m93wRvJT)nL+ItH%V z3=Zj2t^U{O^3wnGR9Dt_NBRHZA5;Gwm_DR+*`uxg<{405PqC`MQTqzgZ(Dm&%@%YUxcZl!I?Duf1z_wzeEna4xqNwp5y>i;{FHh z^sfSEpne@D1G}q5|0Zw->bJw{$21a)bEi+$pbps##8bsK0WItORn)x(I4-AXJj&?W_s%&^{hO)U5zg$#9A3RJX2= zp>6{VHu|BaQ%S`p=2hM{D7?BI;O&Gh@76ZA(wh$&+}<~$x&sj9zM7ghm}Pg(I|j}` z-3b}kooe-Jd3L(l>~uHN-MVuKRCO1i$}KjYYMWC^7I#5 zHtO!kroWZS!PGO|vE5k2SDM=mmHm}w(;e>-3R&F~$h>kQ00YT4=ez3O z6UDmgeL|wE`vSc`gY?#dWU!R(d%xgWsQV*}Q~fd^Phodg>IaM<6SWbU1R9@K*Cwa7 zul9%3O(V%hHIa?;1(azEg2j!lH;pb_Yj}gw8cK19=B96m+``-nH!%KZ*VdNp6Jlm{gVE=yua7*f-s!jz!^{(T zJUaSt()H?N=<5Qb>`Br17MqNdjIgIUU%gH!WW87Q=avurs%zKB(ANTnkIgi8I~;0l zgMUmt2FyyMU*S|YzPCvI4~|ROgGwvY+t**}mh_8a4)%YMLs@UrAqVSis{aJeK>xdf zE9LM6##2-O3JR~UssO)`#js3blgo-f0sgp1E^@w|GuvA?o}^d-5c>` zPjFf#SKp^jw7M^%?IqWFChbsdTi>rXgxU`fqL=hrK778x61THy^CmU!<^U#VMY4;g z1);jsCY{D&w!xSU-wq0|I)E=Vp>r#}ozUrS;0#m`8I+pzx;;T`(z}1?9Ml2Gq13ib zw`Z{1HXj%kUmXbiW6I15^2)z@=G@xU>5H%~aW9uO@X*Z&3OkfRY{LE~Rpts0`$$m5E3sp_X>{k!7Xt zhO9(f_4iaV{fbRu)LloFlin9OjldUFcY$Cc9)W#X+aKA&bgHe&HEL9!?+m!@#?G`T z_D42c*+vG@Z6mMKVJo}SX!Fx|M1EpD+Q+g#hCH7!E;2Mke&cQ#8x1B_*H(5+t>Isj zaKZ6xcNkq>`u51nPTm|f+K9K|&jqTMmZOKcUEmD#ZIMBk55W(HH~Wk9+-AfX>RTg2 z8Rl%0vp>AFy_v;nKH9BDm6P5FIe9)ZX1*E8=h!EDis(%&L1 zzP>r|J-4T9Pg30s2iHoieKb~XSz>B(E;u;ma#LhbR)EUPASpnpn}osDHwJFmYw$A5 zE61u~r`*UtroJICOHJbQh|9fnP~9MS7W(?gqU?2#nYAtMm0b6zt``bfUl+)w7Tb9> zpX@S&^Lgqzp>xoCAqOw5C;1GqC7`-?@GSJTkVPrUz>Nu!4Ah3O_<9WZ0b0^Pwo&)R zT7^0I-NP7HDDD?J2X%ksAQSuHYsiFor8Xij*+3KOxds~Krcvgm z_Cs!`Ikmg$oDG_}-W*uqRtgz#yc`_J^Q52;2-3l`Pz_{}yvNbgQ^crfhR;K_kcW(F zUi}Oi`E@&V4yuD3c+0nk78M_kyFp-853oE#Pfy-c@Jt6f z+Yx^8)RDj|wN%I}Uvl^zEIReWLg%0!jvPv9O>WOH(3&0*I0JPQGAOn4EAI&sJHL(& zfvO$})cuCHXyX={%`RxQ{7j$Am@`}^otj^o+P-meWoi~muRi)S8y|Y?=XY(Ol~vTc zhT~fKb?lIB=Wp2e@(uh1Qa#A|sg3>F6E$gpbr}bSmvmsRj4l7>r^^>zzM=HafGmv_ zuoKZ|$w1ZZpY?z7`z~DzF_1JNT-{cb~?%E*k+wettdy^XMqACy{Vn@w(fA-G{TfebuLz&$YaeGgA z9DHL?DyYUDhvmU1VU@s%742LLrlH9^RF12m?FyvW(aw;CM*(u@5cVJOq-c56hJwzcp$vow_faF)n@G8tx`UfS7XgvDe zx$n3Xom$$Sb!qL7A$F~EZpkABV>1!VAJ+~aoa_q2Y-~9J)y?g^FDv=&hVN-+*O7=|!mu~EZzkI{J@%Hn1 zR4etJM^4kOs+&H=f?i}q%ZCOsrDwX8r5vCUbXch(-zwU?2jQ`VcjUX z)Gw(a&hHm7ZBc!+hyES^G2R|jvhkX!di2TO7|c>h7`F{wL*AmMs>9@)d_N@KNoE8k z7ezDvm9r*z+$*}WXk~3_HF{=w4aBw#>aoVY2kq$XiUyKOpmx*Ixc$X-#HPz{b-RCI zfGT??E7RDPUN`tkUHiJLPrc@myEb@nK5fCr`{$9Tw#`w#`0k5-^Rj;+4=;}}$U`nW zzvBfTxpJ>#c9mNd<(aqfRnZ;0Ctg9|k_Y(KpZ?5fFG|{r|BrLprpRHTs41pK!T2TY z(aS<+f#mYb^j$@^gyu>nP#7)jLopG zd)l8KviZne8%k+mXgQe&K$GK5%*49$hn^9Q45id6w_FBl)!5EYocgSr?AlODP|C|B zAt)Vouh&oi`B>NPl`&c-D+ZG!bL+D70JkC+0>{+H+wQw{&x6Z%+-zQ@^O`xoiqlzo z##lJ#HiuOXvtqlMN|vFaE&W)7 z_|0X@cfaa@-HuD?Saqg`NBivuc?NnFYy|$QE8h3i#MqVR{O+6mH>YbhW^yOH^)o(t zZZA2Lr*J!f5UZBLR>*RsXh?T6c7Lt7}_DYc6mh@or@<}zq>6yv3SzyEk+kOC!A?67K0Tm{KL{H2-NNKC4d4mLXa` z)+mFFP+aB6b0nK`#&g7*vOJ8;=wb#z^3;DG4lgGjdPTA1VD&yD;y)C0x!=K?+kega zmjZ8Pv@9K`7NESZF~V3CtLs`q(`oE|PGgr{>(4L7fO@zqKo-9;RFPj(Wq~fPjj5jM zoX_3v_3xbDy&?E*zar?CT7u_!!GqaT^3fR z-ZRcCrUmn;8J+$3oBiXRmv1P2JwsMAvJG?`qKiH0IrfyZZc3ljuN`megi`SkqT<6( zMxB^5XZ^E|TI~2zx>jDxl2?tHFY%pdUN)ST6&2a49(nNjD(nS!{rpjnK@;xZQ$74* zpVXTyauz4-!fvns-uX+%@3m(`sf(Cc;MI&9)1*GKhGe((N*Oaza$8^f{w>~tU$4cl zuWIp1vHME`wi&bO!fllmtD)5RYgbuzk>O_pfQ1vwX86K+eF0_p5>puML)XQOi=R@F z+tK-oSKhI57A^{Nd!nryH_@j|p2;`1h(30N8Id_}_rOS{+EumvF~qMctXSy`3A`I=|W@Ud2$us}$n0uOk>?ilWcx3jq7W-OcJNr=fN2RCBeE0A3fs3!gyWfZT99v`9 zDZLNe*kZ`y1~av_nA$S#*gCgAiYs5nGqE~kf#cIBwpBqVr;KEslt3&@7{7MNxM&uA zT)dPiel(dY95(XCMq?7QSr*T}GTe#5^w$2Of+c=#saai~TWOJv;cBk9#>)Me7w^0G zwP1minwu79V?0+ao@=Q^m4?H~LG@kwJd4lQ=8+f!#WxMV|)ZFo?pt=#87pFOIyk?rJ% zY4O8oq887T%E;%jqiE{W&zia5Kd=wvMK^rjSSA;F7s)clPQ%=0{$;X?HJWmpJ7bxo zmSBUuKxXFewv@;R6pPDNgSZ0zYCLXn>97`;eG0b)(fVqUN#*(lQ6=w2_Tt(#3pJYP zoi^0FDSU~=TGrS#i=XGV;iQ!A=q-uV8grL~|6IGK%4^oTLUv7%bTBfCn-ci4+=I%l zkQVu=uh=z3c41pSkDmdp4AkVe$%|FI{;v*R+^xrE5BCNLp9Zb{-JQyR&bs z`k%v<_qoi~{Vhxf&YTiwZUk1NZRKto8DqXr%CwV3V9W<}Qv>oL#aOiK=tIofWq76c z0aKH2yI;&qm}@}U?QaH36nK|X#i#SKNQ$|M_DSnv#YQSeK_cF)j1oU0Gfj(`CaRw`R_u>rhb3bhM~1zn$BeyIDXT(#Ch_js z{=wTne@cQvrHCGroZXQEr|kGa=lA9?&ucWrQ!_=mU;>(-uHj19g+ zO7O70=vJ9ia-?YEa7Z)C%VE-QU;dhCdB)+hRzYOgffOkY3+0|7%#=PZa<*DIckifN zZgpSAUeRK&REEx-KdL_*_=lHXUEz3U<_Wby!?(XEV2L9c)WFeV;P{`l#TtrlSH(^S zuT8Wumm4GZy zF`$~Rg6&sHm$Bf zBdt*mW{Z{OMYK=8H?4zfHid;WMr@lbwWM-$U*bcjd6bg&ix&IEOD)@ZX#5C>bzeqj zjp(rvTO(Sm5$;YcTGC)#?r%iP)1L>`82d1vNb{Tp73Gi;678E2uMlxx_#!F^gZHAC zH zrglusEpA#DXKu=Cx_dn?-$H_|V^~`Ik z>jrJJ-0|-4XmNN-U)7ye%Yz=aJiC+IG>&|Wx`L;sN^|IB$Jlp3={g?F5w5r2oziB8&`unN}^R#1=NfYbam(IcyxPpH0FQ! ztruPEZI?&Ke9PpKnz&2JB1lv0@Q#HR$Aa(4GNm^Y`BEMhW(}#mX?`sWdp%mI`E{O| zAgxI>0I@8zSQajZx|x1uw4sz!wGrQromZer{3y?7tcIm*M>l5ix#uRpCh6xIU-sdks9uW7Wbm80hZ|lBq@n& z!p*Pz`vl(g=HJQC;$(0me$fgb(|=qy1#5os$@jf4jyQ4HE=II&TK1`y0lNK#G1i{e zD%%w@>pgF*u=eKuW_TU`;_tf*Dcemn?~xf5c8h@seO(CfPDPWiwDa?O?@m-23Cmt}AOt$+9xnTQeQb zuG$u678WKKw~f!vOfFC8_z9cjk*17_N%dVE;98#TpGz^F_dusdPIZRz zlE*;7_#>VNv(!9Ys)FEjk0KVlj<&TcnQMNC=4np0NL^J1GMM^kIM z8%L+qT(zukWFI7$abeFC)H5#Zv5^Wev8jL`|HBr>r~jdA`ycxMi~nKGw$j>pmNGBn zj`csZ_#fO}>%1<^^DB~FEoJJ6n!z`d@pL?yF802<(gr|Q9mz|`Oz!M#$O{2>y*w@- zWccQB_j}1H@J50-FIt=z&Pa;rH8Tm>=8vlz%{@DIJ80?pbud`$7+Ff0$Qy};y#8L| z#-iCv{K@l9{qZzz4ld1M)&s2TMC!R8|HYNhxb~iCTThjFMf7Qu=q1aGwe1FzLqQs6 zRTabna{`oLW@anjqjCXrTVF|C$2T~gbej*p^~-zjuKgWDd&VR-k99j^65Cdqni|_P zCNa#qHW^-i;@ZnHxb7*U{syU78D-HroVl_NmtAJ~KeV;3gJ^NM+yu8WZd&q{vwmkV zx5X6qq3Ssfmd$pp!f8vi7?OIZ;J3+Q(C(7+;SI(ctFgnpdV_X-70?^hW8S?%TWm4r zEnoIWrGrz6`)}3Q_3!oMS$vL`SEN;K9r9|nqa&Ry!=!wa)t1@*7*hB`^)U8@Cz}&J zsH#tp;o9|0Kt9O{H~YnZ;n9uMH?`9b7wggPYRYp4vtEg_2R!Wk|2}k=(?!4Ljg?VL z`QD}u=51>6HcRc`%&VK+k=lHWsnkl`EfZOCV5_+psQsH(hVS!=(Y*f1m+WqR^**n- z<*oMLwV{GhX|ExZuYL996z4)^n{xTy${Bm^dxzaHD$CYzrZ1PIaZtlbz9Z%3VUoGT zTvsiwt2b*@i#1wm1%?KgSv`XVp4s~*=w2${jxURAkrugb1BKgscKsY#-Yhaj;BajA zYE}1Htu-eS|L_@X!m5=gwTIWuGRBXA>Z4@#guW@6ojv&UVr8_EGeV(#Si34ndQ5q) zVB!2B*^gtR#n?-BL?0QeYPVVjscb~Ek)hR|S_;Zd4YrXdy_USkO`!}-Ti?|ttzWcN z+s~y_dbdb*Sc}xEXnb7`r7LB*Osy>KSesi+IP84G3^4MHF}%ggoW?^{%cmBN&B_tm zdp2T!+6u9=>8SlyewbuSi4ET}_Exu7ZR4(NujX{tyoXJ9v!(g@)8iWrlAYBNWnhfj z=dp|5dQ~s?cYX2fr||QGp}bJrVv=1bPkD|M;`$u8DfqqcsgjX=GV*j)GTF4cJv>o_jV}I@n*48(_Zi2`*n$I zU-sb=*%$OkTp}$lk(*Vrezhw64OH?{SDWPn+LuFYTcbzY$<937mgzB9A~hw74WF_i za4Tj$WNag*T@}^Elu2ncj2VjRJ~}Xs<7R8qtq1fUJvBE%Mam99Q$DvgnO~1$-`Ubt z1(ZRs-^gP#`jMGvcE%}(riSY`u{tT#1*ByR#D7!$qx0+R)A_L0;vLe=ihSCD)}rzO zI@qpiO6sEm;@#4~N>8^&l>L$INTs@_?DvfZ4+Cj6whGp2#-u3W(CI)9o#oDl^Jn)k z#Fj(6{Uy>V%2Y~W4;@V8jF2tYdi zNxNMb6lD?HXrskd3~9~TBYgb@x3fQ$Yno{frkNg%X{JYFn&Dx#?s+hd<#B8%UO;AC zv^eOd{rfqmw$1TG#CKoxo0t6qr&5D>TGlZu+qyFyGwDFF)~#mG-{(L)-9) zM{GV{IIJZNiI}lyx9`Yn%Q?@KUL|kB*!^ZAG`c{Vx1hZJ#`90R)Ud(?J$knq|4M}7 z5``4%(qF2n0cCHB7=f#1XMnucX`u9HxIcyzxwcjIR0cN5aPLvyB&+3d*@Z|_HqUs< zxLhjKN^6eoM@*h4%EKw_i8hD9ms-@=C9ioKw~r4> z110zG$talXM7d?qw_Eg>v0IW&C8OA>=gw*>(|B}uf1;$ZXf1qm;%Fq+i`~}d$9l0- z^8QS)qVj$=k9Oaz2OtlNU(d4rJ(Y~rUc3X(SscH!&UeN~2i)~|Ts2@d53!F8*aQUovUu(~XzMbp1hR$oM(al3!=I0i- zNB8ROHF?CvQ#g0D&Ahr@rtan?i#gS>FQv%iq*M)4V{VdmY+07FFT}U8bE&$314+}! z$ZkGXImLQve#i98czl^EK9<{(F_v4ZK4M)rfSqG&*`u9fF@1P17R+r$+pove>szLs zQOB-n<;Y}RoEKX@*>yL(pC!sCuknn#2C36r_xl&U;J5fvw_68T--4v5c1yXmAGck* ziK5!ot*Jg)5V$<8+o-~+J0AMZmwn+^+$j~_RK{Q+xOqF-#_kh`QQ`U(iPo`-Cu`tA#3W?vrS^_U^F&~ zy^ou#-QrorP(?R(KlS{(ufFZ~j@q>$oMmBedMq_*%(E<#lik6Fz{b7@?da{=Q0hJm zjje|>i!-Z}tK%zcORLdPBlDAW(=EA4lJBJ<)o*;Q>&U~;hRC!6cphgs#w~0(xgWF^0tAyL!Vux+{$jx^+0dBPbaS_~3d ziPY56Na(|6P^biC8%fNAO_G~YqSS(N-B*9i zu+mNRuwoqXS!~CbWmQe;$)kHjMt-ZO{|YWiOWgW zcYC!?-lHe2G{?w#yH;Kc@#swL|Nz8xNo=jy2W|jt5`DZb1*@Bt;HB>_O zm0m9sif9dG3NO>l;j6p^oGit%1#j(J@U}C~>Vmh0keQjw)0#o6z((t@&a?>La&p5e zqxMI(vg?+K5E$JeDBh--#z=dx8QCA%Ii`kkyD7qGvo+!D-UtIHa)>RI{gGWdxB9R) zb^JStO1ylY4=pW)7cQ6wdD>sm3*>f}yz|l%`(NECovEAtuE+f7?{=bU_sz+G;6h4% zS^GW#7nmPi{pr&mwQED2BP^mG4YtvlmgH4!*P^z&y_PeiQ|Xc^{Y1X96HsEeGJY_L z-F~dehs3T&A+g&!@gjxWThYpTF++F1r#4y`PoUJosz_~*-KuZkLu>6?w04mt{k>UN z&zxJEnw^P0?)B=^Pu}`#h@bL08JKI(|PX`gQM$_a4hHfV-`zoP|y;LZ=85E>pi$ z#l{W<*^ech25Puo9}XAWj#)U9l-{2nv8@|UKgKo7)Du|2U7R_$+DOQDQa+LIBK5+k zfNpc#Ot^Hbl@bc1)fViJY~?5Q#0k#KD`RBhntkc9F;`V}q`ni^?wBX>fh+AS;?dwr zv#@n-e>hdTbt3)1SwqsmmEEG7Y7*;Ont_!?p?y~SBm1FiXpGk78>Pl*GhM3E8VkoQ zD`$@P4`8i792H0})FJdjD{_Wu70GwLJ=0~hc$b+<=Et06tXMDLP)i*$g)nV-h(H;4 zPvuGxw|Ddq(4^|=@7v-S(^7k8AMW)0W;&6zk2tpTpeL?p8)o)n#AqZvq9TBIzVAB`rP^{%r>s2ImxXX}qHo!`B|lh7xd z?5VGs4{m$Xh3tE~k}kBqDVe!p--mNmnWFth!*)z2>h`MhFMPtqs9R3Do%a33CD}x? z<=y92%BoZW0w=EoQfRQZcVq0}7!^Egm9x4120+gt;{O)W*4rli5>o1JJdA`4d7|0jExEJkN|F;Xir z_z~t#)$fmO+w{i&?cPv9nvA<6@+cKx;^V$3oG$b5e8nuT80yg|hT4l_s6{a>wfi7n z;p-oVPhO#|K6%YO4x;fAL`Br1B9=OYmUoxJu)(V8=IDejby@!+8BtwaCYY(76oa!4 zk|<{`a9OVuapU+-G4n^7MaA>SDr#q9-C%FnJ1tm#GV2sc-_Fw9rn9j}OpU6s;mB5- z2gTNw&#jSUN~|%(*21|pl1#Xij%Fcgiui3LiRseB*p=t-0Gt1|kvnJj_x!DAHskIE zsVplD+8@~p;jm6>CYC-FT)Qgc{s51-(nm1Qu(;Aa?33Fc*;SA=u*k$i%Ia6owM8AV z%xUFS(FttL*dN7JlyUWR>f)n~t7|Km`$gNC#twV-&3_LY@>J8~Y)1CSkQ@sIT^awe zF2Abzw5g+UZ{svLAlxv=cooqDm>v>OG zxzB$-i$^%lsb+>qzB2ENOW)@__j`Z6!JT$RuY%%g9|~^2B4_qka%imuIp{e$yhN=< zqAuG~GB>xTTFT9LT==QuaI5o?PF0d=Fr>B>Tyxwz&-^Xg-Z51XlkF|``FQhD;!N^HOc(4Ny{F{N^oudZ3 z8nswci~aM*-emsd$QPfZjJ@EmpW8XNdjmZoud;gTwI@rgN@l?NA;&B(Yk4)Y37yT} z;MFSKU??+a{kNny664~7_UqNyr7B;6?#&>jIN4WA%>1bZnCQBuQp5W{cI6e+|IyvC-zgJrWn#)6I9 zv2Wa@jTi@oy(*cdl{Tz@DP6(p@%Bd@VP5)jY#C~Va%s6X8~bBOeyJX9+!;GJwX1l? zTOMSII=Q;Nzd|)LNKUw-C2~0&+muXQ^D?K+o5%T|qm{Ek7jEqX+aJYGUdnXQqcUBz zm@c#p%2Zr@ekDsd*^FqHT%&bz>`St;t0IlYUSg=$UVd)p{?Lg18X#H>5Eu8r^qk`M z!>^S@t##oqhg|nboboB&@fjSbVrd2!)7 z8g{s+GwX1GjL0#kNQ+ZM^=!zpp!kjXmLI(*I&Ztl3CP}(f7a92cE15z>Pjti^Nb16 z805>iO8k^kQ}#Uc{tvAa` zOBEN~o@1oz3=<5#?nHDH4^rD5yC+_;7oOU;|7E}Y`>5fqGryDrg3?RRV_v-P-q%8z zOI}cveL!W9O~%I(yqr&2|B5>L<8OK9mB)HI#Uo=((zml`rrhS!v7;R&C$|H0+0Jgo zRT;i8D3fLCvo92qiq{DJ49qxchd;4??4iTD_nfDdbz^c>vfsqSv&+Mz#gbuhWlid= zP8)NO>+! zL0WC@)0m;EtQTnYh(a$ai%aVT+FCE|1==S}@|EG&Iq;Qi))^S_hY-^GPJC>?aI#rD zqR3n$lBrBDs{~~GM@*dJVaI4ORqt?=JaOXuimMl#s{W)GX;~bV7pX_&MOs0@^MmCt zRlL}XgQ40e4W7(TTOGBmx>#SafE1nF&BVx07`2KBQ7=37nTjY6&c^l^547T}xBj<{~l5 zID4h5D63oKR8jhJ>4Mo`hS~?5w2x5HOb@#%PuX#95 z0dZh&Si>$RQZ@iI3kj z!YH-aMW@L;mX#j6ttV9$-N~BMVXQeV)|?yb884jVd@JUJ$eYK9MW@B0tNa?XBlGwS zG<+`c?s&mRuB7Yd-<;E8&XpX{vfJ7ElCRu$Vc`|HoGzI6XFuKINA#Q zYGfR2eKM;&w*`0%uyBf-`goVyQZ&=HOsM~UD_SNFN&i?~be$b{zY2F-@YF@reDWlk zDofMB+uV2~9Ed#R691;l*azNx!GG`ofs9_ej6bBP=w^*MZ1tAuW|en)ZJCm`m?Mz9 z)FTbhlxVZ#!wn=8b7GF?G=>tIGP~?|;!M1B#+q)djCpqaRbzX-q4j$-i?Ri@U!F4s zl+K)6z|;fA%x~M7MOVtjaO+z}=NtRt*-zmGILW@0XRa3dJ6V0nzO?GOq{*>8J`o@L z+lTIbE|grW;|$FxHKL;d+pmCRw%?4pFf6TWze#%Y17-BgqPLb;p3|2zN)lf?NO5dm zj#=DxA~3X03)_Wcky>b)fjpd#ZeRS#tsWT_lInTpP&B1>(|7xmM{g%VW0vCBc^6Id zLY!F)e;&Qoe33%D?1No1OjSj}|(I{XpN z*g|s59Ohey=q=JjYx%!3t21&r`pSiePMm_XaqMYB^oCSZiVcBEeCtv&W}XL{IpWyi z;H2S&G_TNtsu?Ua6Bn$E1-C-2S0eZK<<136ZQE(2d5Plh$E;8-RwxBG*L6aQ$K<{v zJ7~_7Ky;h82(JnK+tc|&nG3|;e^SFPep{+aV%KO|vr=ZLE^u!3(Vxd@Uw*CFt9B+K za~hWtn+lM5k;RZzw-piWk8Cd}RgtmRjR(g{8qi>Wp#imvR+;}7lrlbr$~d*dZ(MQH z{Nze>uzT#Vy`Fdi)Uz;lsuX#!WI5&^=l}bWm{g3+PSs+kdN(TVTc2;yXniP;>%vf> z;F3Lz+b?&I#>lkKC?lqQH2WjFuN1Vx)P;}s?AUeoyMorYFWc1K5f{qiw4PU~$w8if zH=sP`aoW>*r6vc(S=h|racc26T}1wTj}xVi1edSf<0Y3s*XB!V$ds#~iP&RUW0!s7 zuO6%0;fLHMg~djN3_9M~kb&4(*zunZg?xjioj+nw@2bu!ijVJ}GDC zc^QRM!RjQrVfgh`h|jXrh&6l&;#okG)&Yb88#S_mns%r558f1F{Yj zB`bI^-8S{huI;>(a?4{qiEe9!nB|c5AcG3hQbD7%mh6GMky=Yytff*LMe~iJ__CM1 z;_uDxe-I}+D;rn#z@^KwEnn2(C*G#`HNNPq`d#O5d?RQv_4dM3gI=DT+CG8ryzH1- zo0wUQ4tH%i?~9W^xz27U^)J7?M&M>?FIjx{onCZ{^uDi*SG3!BC_`6&9nx6r-|VSA zdETi%p2q0w&8D(1O%Yw4*L#I42YG~;O=Vy5Y$mSjsJM1#F=rOmW>)(*Z<@6rK*!bm`X6d}DX38$>_0oSj;_Ezj4Va?H}_WO-f}GcKtK zW|@lof5n|!jAlg<$Ipb#CYqSI(U=7{vXNvTNXG2fg4v)61OjRzC=mr^*^7H&28NyC zTM4Wh-FOSp1Rf;OL^K+G!ioFB5WEhFD-dRf1ReyuOahUYU0GM+5X5WuIaU8teWv?# z_c?t&-@ccxy1Tl%yQ+R&eWc}ZKkMoMmKZnJ{*j|pfCb)0mI!QtA1(YMxSWtf-z^?o zD$aj+ap|U^J|xA~%(++RQw3(tVSxDI9%<9E`Fo{6KgL5y5h!Pvdy7PoaQ93WyRTec z(^)$!N^jwtB0rRpNDLlQL}B%Nn-it5iYe?c)VE$0T%*ArzIkE4>y$fKc9SBO@M(V6 z%U{#*X_8PD?_(V7GQQw0W51gKlVtAz>l;7Z3tg_u2xV5!d8&etY>dYzxX!e*8j81r zCV@+ebbM%&h0_c2iv6=aum0|vhdvTl5a(a9PFs8KU)S8HZ7l~iRYg{6szc$5nq~ph zcA(mP4l*~G1;;X8Ky(1?Dq%D$$7~7@Uis!9|4~;ic0h=H&T27=8D|GE!fjGaB25A? zG(0j$_LTT4m>$#C?ORHo85h7u!#+UfD!UW9rslzO)l0qU z;cSMt5)meiijLLn&Iamnh?^exFeM+$`QkqJ0xsx+B43S)X|I|6B+2^frp^)J6`Re! zf9U=*x-um$GVlY&jgdiI{1T9;o#xV4ps=m4OnA5A!*_kCBoYAj7tcEL!g56(zH4r- z95j{I*!aOGoAw`G5d3bA2S50v1YI1KA5)0YyAf+u(-IgOJ0Yg;gq`H~#K>mN8C1H` ztw63ZeYBj)?BY*0?R2kt}c6Ni8{26}vC)@UF%?t_Xs1KX}*L8+qSAXkVo6J?KGTC*?K zj?ONhw`?B5;YAfaJle=avWk5!sI0F{nMY%@i%T*H#WebfBm;UGXM28$j2|H|ZhiX& zio73>n%6h7{`k?7{tp^potUbLCh*2EA5`N7+uT;*>1GCyS>*~=2)V{F%}BY76Hsrp zM}NNM6e#&h1>d2YP?mP2~yG5LfP4Th7F z_32LW39m@38vJlCA8LX-E*}VBKbX_Dkc1y@k#SB#y&{RG!p_WXw-hbKwP!~w!tTIWV&Rf!cD!&|m5~m~^xD5-Dw>oW@;wb}FW&loc1{v#x6wrF)d$x@6YYSo zoG{d&_+20S?)oS6{f8<6*+G^Kbny|^qD+V3S4_Zb>B~? zb&S3lT;L<&bdNdil5o|pHm{S!nJvON5D8skC$@^t&9P3hY^dl1tu8&?DS7$;*cvsC zHn0qIkq64p2O+oDNeVL#SeS8CO5d$t(J=SYg5Owjh=uYrA~H*8A~@|0Gc09@+wWvO zJ<&GQYWDwHtv)6lq{#M8CIT5k{ zIIwXkrb?+h)I&yrI!MyDxCvAT-DDxvi5SZ)gEK7d2`IiNFbI@a4COmhYurQVO06Ma zBGejSrE)+cW~{MASox9V3fNasON1;J0k>?Og4|vLh0P-e(2LP?6rKyI*M}AjHw&Q0 zSd+YL9}c$nSb??`qwOrsv{dtxZjyo#-)KZI0yW*PH|9_{ics4K?hdz6#@ZV{E5^^p zUk&xXai}mi8{Kg6TIz#I*1>eANh81U#2-o_m$rALv3u|Xz$5zKh7YwUA>kZbJaM}0PfT`=)as!6&GJ|6PL0d5$&<&=-D(P8W3p?0@y$vF zQ^;ZVq@P|pUe^izq_Ed#&^*zz^STIj_Q)aA!13v|sinD7z=j!EJlvxRuy}aGMnSOw zRa{D)9<}GkP?_AtL~L;lU^I1{BoK|6z42_B%$ixiXUxUjrxkd`}g zne50j5Ne+l(P>(Nf_Br3{m?pI`H6&dja{%AX3Q^cs^y!)vc>_CV@I> z@~z!E*r)LEA<|s?%sB7jF^A&y zfB*BoFRhecIM3LE_W8=x)$G3aF6vUgi857O&73TIRKu`G*g)rpEqRx3-UJzaZuabf zKdnEN_H}z-ooG!47G{na$K}f(Jo&&|HFv14EQbIIo-TE}`nB}>0?lad#QN43u3edm z@f#6L`1;RU0+j`Dh{1w>ztKcL=2dW$+}eHB#b5kX-xqurj+$3vjJS(-U1{oM<4P3+ z3U-jKq|3m5wMySf_xiOP7Vkczi$-tJTUtx_KptA4*LI*RzKX%0S4<?P>^6wN0<~u#u!;$6Qj)?4Hf556iD{hwYau1}e{tV7 z50-+s3|I=XY_JeuJ{$dUPp&>vPMLT#cnfa5onlWBqp$Im`yr*+I|)MGQb35E>~;AV z(T1Rh67n_!2@Hh~9!^X`A^rFfrrGX{gE+__fv36ZjL^lf^awF-r_M4xg68ara}3!x zakl9={wQ_D6DM-$=s_nzutD)j8piDzco8hZT#k#X&?7aqu&8p~5s1hDHGpG!F$ily zD00rkAmEMnq6YO+r{0+>nNc&sZc+OaqimTL`W_W@)ilYk^Ck7|V8Uz^G?Zb<1oUs# zMYJE}8w7tAbKj#E{#kz(GbvK>$#h04{CL?owb#kmqbiu2U-<0o{E?&O>U{S5k36|` zb;>w1A%#&C!{)=xLgio!?F-H zBnwePvk=8BB+29V!4~21k1n|P^J}NJt(FwWWWn0A)#7qnFvZ^ZVjCal(G4_~Bnq_* zdTLxL=_-@A@)Bo}OmqGwDWcKOIulL;_eTj793ZG!-lh1}Gk$g_E^2d93%GBb!fjWn z=q(MO-DeTF^DObLwrG(-1&EZ*xd%V=+fVAUhq!6;_q&=l;r1I&AGQM_FxYE5FCgwV zjCcaG@*Ow~%<7Pg#}9W_o;)obyv5WW!wAX8nkBuV5&X!}n&iX9d%iyX^ud*>ocsz( z%fzoBuhS&7AIOduuZs(gFMUtvSqGygdY>4Ony7-PNuMd@orq&&_~)ssOGdmb6v-P% zH6dkJe8f`arb)rXd>65Owjf%*M)M(Od3=wfK!gt^aUU4fUD*MS8WiBD!2yoS3UC;) z*Iz|_-{zxVdF`VsQ>i&~=Vh}xu9M$?9zFl9)8GDwZX?Mh^}!P9l5X2|(~FxlKFdX) zR9^a|2BJ^M>L+C>dxdBCzM>850izr5ilqFT<* zN1iQM)U$5get7kAy)AM$1-}|U`Z(B>5PV?A-@kK@4yR_cU5BHelyrbSE+(%Cee&O7 zv>OzPJiWYd(K-DBWd1v#8xP`ly!6l|ujsbo!fFesvO{&p!d-js9_vfEhsM>tTS9Gn zX^OnpV&mdCTTNnxb5Pn7mLjuY1FirXWY3r%zCp^z#!Hb>fJOR3S8)VjTsCrZ^r(T{ z0HZivdMf4|69 zjH7RHit+!kO)<9BI%LS`js@{4DpHK*hE*Bf^-~SEfNTlX40eKPJdgF_prA1?-UO2D zMG!f*H9DOj^TSoheWiyMTO<~=ah^!wmktRRkw3~v{ZuhD^}_>Slc#>FAnG?)&U@tL jOCKq*5692U?;juBtz+cUN_GpEV*A=(-*n--SEv35zA+TF diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index 2d000eaee..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,33 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"RDK_Jlink" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug-with-optimisation" -[CURRENT_CONFIGURATION] -"Debug" -[CURRENT_SESSION] -"RDK_Jlink" -[GENERAL_DATA_PROJECT] -"FDT_UserBootAreaFiles" "" -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Blinky] -"RDK_Jlink" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"RDK_Jlink" -[GENERAL_DATA_CONFIGURATION_Debug-with-optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug-with-optimisation] -"RDK_Jlink" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug-with-optimisation_RDK_Jlink] -[GENERAL_DATA_SESSION_RDK_Jlink] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_RDK_Jlink] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RDK_Jlink] -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c deleted file mode 100644 index b92493a47..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c +++ /dev/null @@ -1,83 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : dbsct.c -* Device(s) : RX -* Description : Defines the structure of the ROM and RAM areas. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Defines type structures used in this file */ -#include - -/* Preprocessor directive */ -#pragma unpack - -/* Section start */ -#pragma section C C$DSEC - -/* MCU ROM and RAM structure definition */ -extern const struct { - uint8_t *rom_s; /* Start address of the initialized data section in ROM */ - uint8_t *rom_e; /* End address of the initialized data section in ROM */ - uint8_t *ram_s; /* Start address of the initialized data section in RAM */ -} _DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") }, - { __sectop("D_2"), __secend("D_2"), __sectop("R_2") }, - { __sectop("D_1"), __secend("D_1"), __sectop("R_1") } -}; - -/* Section start */ -#pragma section C C$BSEC - -/* MCU ROM and RAM structure definition */ -extern const struct { - uint8_t *b_s; /* Start address of non-initialized data section */ - uint8_t *b_e; /* End address of non-initialized data section */ -} _BTBL[] = { - { __sectop("B"), __secend("B") }, - { __sectop("B_2"), __secend("B_2") }, - { __sectop("B_1"), __secend("B_1") } -}; - -/* Section start */ -#pragma section - -/* CTBL prevents excessive output of L1100 messages when linking. - Even if CTBL is deleted, the operation of the program does not change. */ -uint8_t * const _CTBL[] = { - __sectop("C_1"), __sectop("C_2"), __sectop("C"), - __sectop("W_1"), __sectop("W_2"), __sectop("W") -}; - -/* Preprocessor directive */ -#pragma packoption - -/* This is to ensure compatibility with new L section in version 1.1 and up of the RXC compiler. Do not remove! */ -#pragma section C L -const unsigned long deadSpace = 0xDEADDEAD; -#pragma section - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c deleted file mode 100644 index a6be182d0..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c +++ /dev/null @@ -1,124 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : flash_options.c -* Device(s) : RX63x -* Description : Some options of the RX63x are set through registers that are found in ROM. These registers and options -* are defined in the 'Option-Setting Memory' section of the HW Manual. These memory locations are defined -* below with descriptions of what is being set. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 31.10.2011 1.00 First Release -* : 13.03.2012 1.10 USER_BOOT_ENABLE macro from r_bsp_config.h is now used to set Option-Setting Memory -* area to boot into User Boot Mode. -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Used for fixed-width typedefs. */ -#include -/* Determines whether user boot is used or not. */ -#include "platform.h" - -/* The UB Code A, UB Code B, and Endian select register B (MDEB) are located in the User Boot space. Immediately - following the MDEB register is the User Boot Reset Vector so it is defined below as well. These settings will only - be used when the MCU is reset in User Boot Mode. In order for the MCU to start up in User Boot Mode the following - conditions must be met: - 1) UB code A is 55736572h and 426F6F74h. - 2) UB code B is FFFF FF07h and 0008 C04Ch. - 3) The low level is being input on the MD pin. - 4) The high level is being input on the PC7 pin. - Please see the Option-Setting Memory section of your MCU's HW manual for more information. */ - -/* 0xFF7FFFE8 - 0xFF7FFFEF : UB Code A register - 0xFF7FFFF0 - 0xFF7FFFF7 : UB Code B register - 0xFF7FFFF8 - 0xFF7FFFFB : MDEB register - 0xFF7FFFFC - 0xFF7FFFFF : User Boot Reset Vector */ - -#pragma address user_boot_settings = 0xFF7FFFE8 - -#if USER_BOOT_ENABLE == 1 -extern void PowerON_Reset_PC(void); - -/* Use this array if you are using User Boot. Make sure to fill in valid address for UB Reset Vector. */ -const uint32_t user_boot_settings[6] = -{ - 0x55736572, //Required setting for UB Code A to get into User Boot - 0x426f6f74, //Required setting for UB Code A to get into User Boot - 0xffffff07, //Required setting for UB Code B to get into User Boot - 0x0008c04c, //Required setting for UB Code B to get into User Boot - /* Choose endian for user application code - MDEB Register - Endian Select Register B - b31:b3 Reserved (set to 1) - b2:b0 MDE - Endian Select (0 = Big Endian, 7 = Little Endian) */ - 0xFFFFFFFF, //Select Little Endian for User Boot Code - (uint32_t) PowerON_Reset_PC //This is the User Boot Reset Vector. When using User Boot put in the reset address here -}; -#endif - -/* The Endian select register S (MDES), Option function select register 1 (OFS1), and Option function select register 0 - (OFS0) are located in User ROM. */ - -/* 0xFFFFFF80 - 0xFFFFFF83 : MDES register - 0xFFFFFF84 - 0xFFFFFF87 : Reserved space (0xFF's) - 0xFFFFFF88 - 0xFFFFFF8B : OFS1 register - 0xFFFFFF8C - 0xFFFFFF8F : OFS0 register */ - -#pragma address flash_options = 0xFFFFFF80 - -const uint32_t flash_options[] = -{ - /* Choose endian for user application code - MDES Register - Endian Select Register S - b31:b3 Reserved (set to 1) - b2:b0 MDE - Endian Select (0 = Big Endian, 7 = Little Endian) */ - 0xFFFFFFFF, //Little Endian chosen for User Application - 0xFFFFFFFF, //Reserved space - /* Configure whether voltage detection 0 circuit and HOCO are enabled after reset. - OFS1 - Option Function Select Register 1 - b31:b9 Reserved (set to 1) - b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable) - b7:b3 Reserved (set to 1) - b2 LVDAS - Choose to enable/disable Voltage Detection 0 Circuit after a reset (0=enable, 1=disable) - b1:b0 Reserved (set to 1) */ - 0xFFFFFFFF, //Both are disabled. - /* Configure WDT and IWDT settings. - OFS0 - Option Function Select Register 0 - b31:b29 Reserved (set to 1) - b28 WDTRSTIRQS - WDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU) - b27:b26 WDTRPSS - WDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use) - b25:b24 WDTRPES - WDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use) - b23:b20 WDTCKS - WDT Clock Frequency Division Ratio - (1=/4, 4=/64, 0xF=/128, 6=/512, 7=/2048, 8=/8192) - b19:b18 WDTTOPS - WDT Timeout Period Select - (0=1024 cycles, 1=4096, 2=8192, 3=16384) - b17 WDTSTRT - WDT Start Mode Select - (0=auto-start after reset, halt after reset) - b16:b15 Reserved (set to 1) - b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes) - b13 Reserved (set to 1) - b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU) - b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use) - b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use) - b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256) - b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=1024 cycles, 1=4096, 2=8192, 3=16384) - b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, halt after reset) - b0 Reserved (set to 1) */ - 0xFFFFFFFF -}; - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c deleted file mode 100644 index 3871c679e..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c +++ /dev/null @@ -1,173 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : hwsetup.c -* Device(s) : RX -* H/W Platform : YRDKRX63N -* Description : Defines the initialisation routines used each time the MCU is restarted. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -#include -/* I/O Register and board definitions */ -#include "platform.h" - -/*********************************************************************************************************************** -Private global variables and functions -***********************************************************************************************************************/ -/* MCU I/O port configuration function delcaration */ -static void output_ports_configure(void); - -/* Interrupt configuration function delcaration */ -static void interrupts_configure(void); - -/* MCU peripheral module configuration function declaration */ -static void peripheral_modules_enable(void); - - -/*********************************************************************************************************************** -* Function name: hardware_setup -* Description : Contains setup functions called at device restart -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void hardware_setup(void) -{ - output_ports_configure(); - interrupts_configure(); - peripheral_modules_enable(); -} - -/*********************************************************************************************************************** -* Function name: output_ports_configure -* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void output_ports_configure(void) -{ - SYSTEM.PRCR.WORD = 0xA50B; /* Protect off */ - MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */ - MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */ - - MSTP(EDMAC) = 0 ; /* Power up ethernet block */ - - /* Port 0 - DAC & ethernet IRQ */ - PORT0.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT0.PDR.BYTE = 0x10 ; /* DA1 is an ouput, all others are inputs */ - - /* Port 1 - I2C and USB over-current & pull-up control */ - PORT1.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT1.PDR.BYTE = 0x80 ; /* AUD_R (P1.7) is an output, all others are inputs (I2C lines setup by - * I2C driver later */ - - /* Port 2 - USB control and some expansion signals */ - PORT2.PODR.BYTE = 0x02 ; /* All outputs low to start except backlight enable */ - PORT2.PDR.BYTE = 0x02 ; /* All inputs except backlight enable - some will be overridden by USB driver later */ - - /* Port 3 - Serial port & JTAG */ - PORT3.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT3.PDR.BIT.B2 = 0x01 ; /* Transmit line for SCI6/ CAN 0 TxD is an output */ - - /* Port 4 - */ - PORT4.PODR.BYTE = 0x00 ; /* These are all inputs */ - PORT4.PDR.BYTE = 0x00 ; /* Analog inputs and switches, all inputs */ - PORT4.PMR.BYTE = 0x00 ; - - /* Port 5 - */ - PORT5.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT5.PDR.BYTE = 0x13 ; /* SCI 2 TxD, LCD_RS, PWMLP_OUT are outputs */ - MPC.P50PFS.BYTE = 0x0A ; /* P50 is TXD2. */ - MPC.P52PFS.BYTE = 0x0A ; /* P52 is RXD2. */ - PORT5.PMR.BYTE = 0x05 ; /* P50 and P52 are used for SCI2. */ - - /* Port A - Ethernet MDIO */ - PORTA.PODR.BYTE = 0x00 ; /* */ - PORTA.PMR.BYTE = 0x00 ; /* All GPIO for now */ - MPC.PA3PFS.BYTE = 0x11 ; /* PA3 is RMII MDIO */ - MPC.PA4PFS.BYTE = 0x11 ; /* PA4 is RMII MDC */ - MPC.PA5PFS.BYTE = 0x11 ; /* PA5 is RMII LINK_STA */ - PORTA.PMR.BYTE = 0x38 ; /* PA3-5 are used by Ethernet peripheral */ - PORTA.PDR.BYTE = 0xFF ; /* */ - - /* Port B - Ethernet signals */ - PORTB.PODR.BYTE = 0x00 ; /* */ - PORTB.PMR.BYTE = 0x00 ; /* All GPIO for now */ - MPC.PB0PFS.BYTE = 0x12 ; /* PB0 is RMII_RXD1 */ - MPC.PB1PFS.BYTE = 0x12 ; /* PB1 is RMII_RXD0 */ - MPC.PB2PFS.BYTE = 0x12 ; /* PB2 is REF50CK */ - MPC.PB3PFS.BYTE = 0x12 ; /* PB3 is RMI_RX_ERR */ - MPC.PB4PFS.BYTE = 0x12 ; /* PB4 is RMII_TXD_EN */ - MPC.PB5PFS.BYTE = 0x12 ; /* PB5 is RMII_TXD0 */ - MPC.PB6PFS.BYTE = 0x12 ; /* PB6 is RMII_TXD1 */ - MPC.PB7PFS.BYTE = 0x12 ; /* PB7 is RMII_CRS_DV */ - PORTB.PMR.BYTE = 0xFF ; /* All pins assigned to peripheral */ - PORTB.PDR.BYTE = 0xF0 ; /* */ - - /* Port C - SPI signals, chip selects, peripheral reset */ - PORTC.PODR.BYTE = 0x00 ; /* */ - PORTC.PMR.BYTE = 0x00 ; /* All GPIO for now */ - MPC.PC5PFS.BYTE = 0x0D ; /* PC5 is RSPCKA */ - MPC.PC6PFS.BYTE = 0x0D ; /* PC6 is MOSIA */ - MPC.PC7PFS.BYTE = 0x0D ; /* PC7 is MISOA */ - PORTC.PMR.BYTE = 0xE0 ; /* PC5-7 assigned to SPI peripheral */ - PORTC.PODR.BYTE = 0x17 ; /* All outputs low to start */ - PORTC.PDR.BYTE = 0x7F ; /* All outputs except MISO */ - - - /* Port D - LED's */ - PORTD.PODR.BYTE = 0xFF ; /* All outputs LED's off */ - PORTD.PDR.BYTE = 0xFF ; /* All outputs */ - - /* Port E - LED's, WiFi & PMOD control */ - PORTE.PODR.BYTE = 0xFF ; /* All LED's off, all chip selects inactive */ - PORTE.PDR.BYTE = 0x7F ; /* All outputs except PMOD_MISO */ - - /* Port J - WiFi chip select */ - PORTJ.PODR.BYTE = 0x04 ; /* WiFi CS de-asserted at power up */ - PORTJ.PDR.BYTE = 0x04 ; /* WiFi CS is an output */ -} - -/*********************************************************************************************************************** -* Function name: interrupts_configure -* Description : Configures interrupts used -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void interrupts_configure(void) -{ - /* Add code here to setup additional interrupts */ -} - -/*********************************************************************************************************************** -* Function name: peripheral_modules_enable -* Description : Enables and configures peripheral devices on the MCU -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void peripheral_modules_enable(void) -{ - /* Add code here to enable peripherals used by the application */ -} diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h deleted file mode 100644 index b32dca7dc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h +++ /dev/null @@ -1,42 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : hwsetup.h -* Description : Hardware setup header file.. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ -/* Multiple inclusion prevention macro */ -#ifndef HWSETUP_H -#define HWSETUP_H - -/*********************************************************************************************************************** -Exported global functions (to be accessed by other files) -***********************************************************************************************************************/ -/* Hardware setup funtion declaration */ -void hardware_setup(void); - -/* End of multiple inclusion prevention macro */ -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src deleted file mode 100644 index a75845e40..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src +++ /dev/null @@ -1,54 +0,0 @@ -;----------------------------------------------------------------------- -; -; FILE :lowlvl.src -; DATE :Wed, Jul 01, 2009 -; DESCRIPTION :Program of Low level -; CPU TYPE :RX -; -;----------------------------------------------------------------------- - .GLB _charput - .GLB _charget - -FC2E0 .EQU 00084080h -FE2C0 .EQU 00084090h -DBGSTAT .EQU 000840C0h -RXFL0EN .EQU 00001000h -TXFL0EN .EQU 00000100h - - .SECTION P,CODE - -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - .STACK _charput = 00000000h -__C2ESTART: MOV.L #TXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__TXLOOP: MOV.L [R4],R5 - AND R3,R5 - BNZ __TXLOOP -__WRITEFC2E0: MOV.L #FC2E0,R2 - MOV.L R1,[R2] -__CHARPUTEXIT: RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - .STACK _charget = 00000000h -__E2CSTART: MOV.L #RXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__RXLOOP: MOV.L [R4],R5 - AND R3,R5 - BZ __RXLOOP -__READFE2C0: MOV.L #FE2C0,R2 - MOV.L [R2],R1 -__CHARGETEXIT: RTS - -;----------------------------------------------------------------------- - -; End of conditional code - .END - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c deleted file mode 100644 index ad9f32ce4..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c +++ /dev/null @@ -1,332 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : lowsrc.c -* Description : Functions to support stream I/O -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -#include -#include -#include - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ -/*Number of I/O Stream*/ -#define IOSTREAM 20 - -/* file number */ -#define STDIN 0 /* Standard input (console) */ -#define STDOUT 1 /* Standard output (console) */ -#define STDERR 2 /* Standard error output (console) */ - -#define FLMIN 0 /* Minimum file number */ -#define _MOPENR 0x1 -#define _MOPENW 0x2 -#define _MOPENA 0x4 -#define _MTRUNC 0x8 -#define _MCREAT 0x10 -#define _MBIN 0x20 -#define _MEXCL 0x40 -#define _MALBUF 0x40 -#define _MALFIL 0x80 -#define _MEOF 0x100 -#define _MERR 0x200 -#define _MLBF 0x400 -#define _MNBF 0x800 -#define _MREAD 0x1000 -#define _MWRITE 0x2000 -#define _MBYTE 0x4000 -#define _MWIDE 0x8000 -/* File Flags */ -#define O_RDONLY 0x0001 /* Read only */ -#define O_WRONLY 0x0002 /* Write only */ -#define O_RDWR 0x0004 /* Both read and Write */ -#define O_CREAT 0x0008 /* A file is created if it is not existed */ -#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */ -#define O_APPEND 0x0020 /* The position is set for next reading/writing */ - /* 0: Top of the file 1: End of file */ - -/* Special character code */ -#define CR 0x0d /* Carriage return */ -#define LF 0x0a /* Line feed */ - -#if defined( __RX ) -const long _nfiles = IOSTREAM; /* The number of files for input/output files */ -#else -const int _nfiles = IOSTREAM; /* The number of files for input/output files */ -#endif -char flmod[IOSTREAM]; /* The location for the mode of opened file. */ - -unsigned char sml_buf[IOSTREAM]; - -#define FPATH_STDIN "C:\\stdin" -#define FPATH_STDOUT "C:\\stdout" -#define FPATH_STDERR "C:\\stderr" - -/* H8 Normal mode ,SH and RX */ -#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -extern char fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* RX */ -#elif defined( __RX ) -/* Output one character to standard output */ -extern void charput(unsigned char); -/* Input one character from standard input */ -extern unsigned char charget(void); - -/* H8 Advanced mode */ -#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* H8300 and H8300L */ -#elif defined( __300__ ) || defined( __300L__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -/* Move the file offset */ -extern char __regparam3 fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); -#endif - -#include -FILE *_Files[IOSTREAM]; // structure for FILE -char *env_list[] = { // Array for environment variables(**environ) - "ENV1=temp01", - "ENV2=temp02", - "ENV9=end", - '\0' // Terminal for environment variables -}; - -char **environ = env_list; - -/****************************************************************************/ -/* _INIT_IOLIB */ -/* Initialize C library Functions, if necessary. */ -/* Define USES_SIMIO on Assembler Option. */ -/****************************************************************************/ -void _INIT_IOLIB( void ) -{ - /* A file for standard input/output is opened or created. Each FILE */ - /* structure members are initialized by the library. Each _Buf member */ - /* in it is re-set the end of buffer pointer. */ - - /* Standard Input File */ - if( freopen( FPATH_STDIN, "r", stdin ) == NULL ) - stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdin->_Mode = _MOPENR; /* Read only attribute */ - stdin->_Mode |= _MNBF; /* Non-buffering for data */ - stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */ - - /* Standard Output File */ - if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) - stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdout->_Mode |= _MNBF; /* Non-buffering for data */ - stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */ - - /* Standard Error File */ - if( freopen( FPATH_STDERR, "w", stderr ) == NULL ) - stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stderr->_Mode |= _MNBF; /* Non-buffering for data */ - stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */ -} - -/****************************************************************************/ -/* _CLOSEALL */ -/****************************************************************************/ -void _CLOSEALL( void ) -{ - long i; - - for( i=0; i < _nfiles; i++ ) - { - /* Checks if the file is opened or not */ - if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) ) - fclose( _Files[i] ); /* Closes the file */ - } -} - -/**************************************************************************/ -/* open:file open */ -/* Return value:File number (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long open(const char *name, /* File name */ - long mode, /* Open mode */ - long flg) /* Open flag */ -#else -int open(char *name, /* File name */ - int mode, /* Open mode */ - int flg) /* Open flag */ -#endif -{ - - - if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */ - { - if( ( mode & O_RDONLY ) == 0 ) return -1; - flmod[STDIN] = mode; - return STDIN; - } - else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDOUT] = mode; - return STDOUT; - } - else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDERR] = mode; - return STDERR; - } - else return -1; /*Others */ -} - -#if defined( __RX ) -long close( long fileno ) -#else -int close( int fileno ) -#endif -{ - return 1; -} - -/**************************************************************************/ -/* write:Data write */ -/* Return value:Number of write characters (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long write(long fileno, /* File number */ - const unsigned char *buf, /* The address of destination buffer */ - long count) /* The number of chacter to write */ -#else -int write(int fileno, /* File number */ - char *buf, /* The address of destination buffer */ - int count) /* The number of chacter to write */ -#endif -{ - long i; /* A variable for counter */ - unsigned char c; /* An output character */ - - /* Checking the mode of file , output each character */ - /* Checking the attribute for Write-Only, Read-Only or Read-Write */ - if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR) - { - if( fileno == STDIN ) return -1; /* Standard Input */ - else if( (fileno == STDOUT) || (fileno == STDERR) ) - /* Standard Error/output */ - { - for( i = count; i > 0; --i ) - { - c = *buf++; - charput(c); - } - return count; /*Return the number of written characters */ - } - else return -1; /* Incorrect file number */ - } - else return -1; /* An error */ -} - -#if defined( __RX ) -long read( long fileno, unsigned char *buf, long count ) -#else -int read( int fileno, char *buf, unsigned int count ) -#endif -{ - long i; - - /* Checking the file mode with the file number, each character is input and stored the buffer */ - - if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){ - for(i = count; i > 0; i--){ - *buf = charget(); - if(*buf==CR){ /* Replace the new line character */ - *buf = LF; - } - buf++; - } - return count; - } - else { - return -1; - } -} - -#if defined( __RX ) -long lseek( long fileno, long offset, long base ) -#else -long lseek( int fileno, long offset, int base ) -#endif -{ - return -1L; -} - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h deleted file mode 100644 index 5702209bc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h +++ /dev/null @@ -1,59 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : mcu_info.h -* Device(s) : RX -* H/W Platform : YRDKRX63N -* Description : Information about the MCU on this board (RDKRX63N). -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 13.03.2012 1.10 System clock speeds are now calculated from macros in r_bsp_config.h. -***********************************************************************************************************************/ - -#ifndef _MCU_INFO -#define _MCU_INFO - -/* MCU that is used. */ -#define MCU_RX63N (1) - -/* Package. */ -#define PACKAGE_LQFP100 (1) - -/* Memory size of your MCU. */ -#define ROM_SIZE_BYTES (1048576) -#define RAM_SIZE_BYTES (131072) -#define DF_SIZE_BYTES (32768) - -/* System clock speed in Hz. */ -#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) -/* Peripheral Module Clock A speed in Hz. Used for ETHERC and EDMAC. */ -#define PCLKA_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKA_DIV) -/* Peripheral Module Clock B speed in Hz. */ -#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) -/* External bus clock speed in Hz. */ -#define BCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / BCK_DIV) -/* FlashIF clock speed in Hz. */ -#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) -/* USB clock speed in Hz. */ -#define UCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / UCK_DIV) - -#endif /* _MCU_INFO */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h deleted file mode 100644 index 4958b20eb..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h +++ /dev/null @@ -1,54 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : r_bsp.h -* H/W Platform : RDKRX63N -* Description : Has the header files that should be included for this platform. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 13.01.2012 1.00 First Release -* : 12.03.2012 1.10 Added locking.h and r_bsp_config.h #includes. Removed sbrk.h since heap size is not -* defined in r_bsp_config.h. -***********************************************************************************************************************/ - -#ifndef PLATFORM_BOARD_RDKRX63N -#define PLATFORM_BOARD_RDKRX63N - -/* Make sure that no other platforms have already been defined. Do not touch this! */ -#ifdef PLATFORM_DEFINED -#error "Error - Multiple platforms defined in platform.h!" -#else -#define PLATFORM_DEFINED -#endif - -/*********************************************************************************************************************** -INCLUDE APPROPRIATE MCU AND BOARD FILES -***********************************************************************************************************************/ -#include "r_bsp_config.h" -#include ".\mcu\rx63n\iodefine.h" -#include ".\board\rdkrx63n\yrdkrx63n.h" -#include ".\board\rdkrx63n\mcu_info.h" -#include ".\board\rdkrx63n\hwsetup.h" -/* #include ".\board\rdkrx63n\lcd.h" The LCD is not used yet. */ -/* #include ".\board\rdkrx63n\locking.h" Locking is not used. */ - -#endif /* PLATFORM_BOARD_RDKRX63N */ - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h deleted file mode 100644 index 0b00618ef..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h +++ /dev/null @@ -1,149 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : r_bsp_config_reference.c -* Device(s) : RX63x -* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included -* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h) -* is just a reference file that the user can use to make their own r_bsp_config.h file. -************************************************************************************************************************ -* History : DD.MM.YYYY Version Description -* : 13.03.2012 1.00 First Release -***********************************************************************************************************************/ -#ifndef R_BSP_CONFIG_REF_HEADER_FILE -#define R_BSP_CONFIG_REF_HEADER_FILE - -/*********************************************************************************************************************** -Configuration Options -***********************************************************************************************************************/ -/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a - '#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */ -#if defined(BSP_DECLARE_STACK) -/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize su=0x1000 -/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize si=0x400 -#endif - -/* Heap size in bytes. */ -#define HEAP_BYTES (0x400) - -/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information - on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual. - 0 = Stay in Supervisor mode. - 1 = Switch to User mode. -*/ -#define RUN_IN_USER_MODE (0) - -/* To get into User Boot Mode the user must control some pins on the MCU and also set some values in ROM. These values - in ROM are described in the Option-Setting Memory section of the hardware manual. This macro sets these values so - that User Boot Mode can be used. The user is still responsible for setting the MCU pins appropriately. - 0 = Single-Chip or USB Boot Mode - 1 = User Boot Mode -*/ -#define USER_BOOT_ENABLE (0) - -/* Set your desired ID code. NOTE, leave at the default (all 0xFF's) if you do not wish to use an ID code. If you set - this value and program it into the MCU then you will need to remember the ID code because the debugger will ask for - it when trying to connect. Note that the E1/E20 will ignore the ID code when programming the MCU during debugging. - If you set this value and then forget it then you can clear the ID code by connecting up in serial boot mode using - FDT. The ID Code is 16 bytes long. The macro below define the ID Code in 4-byte sections. */ -/* Lowest 4-byte section, address 0xFFFFFFA0. From MSB to LSB: Control Code, ID code 1, ID code 2, ID code 3. */ -#define ID_CODE_LONG_1 (0xFFFFFFFF) -/* 2nd ID Code section, address 0xFFFFFFA4. From MSB to LSB: ID code 4, ID code 5, ID code 6, ID code 7. */ -#define ID_CODE_LONG_2 (0xFFFFFFFF) -/* 3rd ID Code section, address 0xFFFFFFA8. From MSB to LSB: ID code 8, ID code 9, ID code 10, ID code 11. */ -#define ID_CODE_LONG_3 (0xFFFFFFFF) -/* 4th ID Code section, address 0xFFFFFFAC. From MSB to LSB: ID code 12, ID code 13, ID code 14, ID code 15. */ -#define ID_CODE_LONG_4 (0xFFFFFFFF) - -/* This macro lets other modules no if a RTOS is being used. - 0 = RTOS is not used. - 1 = RTOS is used. -*/ -#define RTOS_USED (0) - -/* Clock source select (CKSEL). - 0 = Low Speed On-Chip Oscillator (LOCO) - 1 = High Speed On-Chip Oscillator (HOCO) - 2 = Main Clock Oscillator - 3 = Sub-Clock Oscillator - 4 = PLL Circuit -*/ -#define CLOCK_SOURCE (4) - -/* Clock configuration options. - The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The - multiplier settings are used to set the clock registers in resetprg.c. If a 12MHz clock is used and the - ICLK is 96MHz, PCLKA is 48MHz, PCLKB is 48MHz, FCLK is 48MHz, USB Clock is 48MHz, and BCLK is 12MHz then the - settings would be: - - XTAL_HZ = 12000000 - PLL_DIV = 1 (no division) - PLL_MUL = 16 (12MHz x 16 = 192MHz) - ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 96MHz - PCKA_DIV = 4 : Peripheral Clock A (PCLKA) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKA_DIV) = 48MHz - PCKB_DIV = 4 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 48MHz - FCK_DIV = 4 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 48MHz - BCK_DIV = 8 : External Bus Clock (BCK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / BCK_DIV) = 24MHz - UCK_DIV = 4 : USB Clock (UCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / UCK_DIV) = 48MHz -*/ -/* XTAL - Input clock frequency in Hz */ -#define XTAL_HZ (12000000) -/* PLL Input Frequency Divider Select (PLIDIV). - Available divisors = /1 (no division), /2, /4 -*/ -#define PLL_DIV (1) -/* PLL Frequency Multiplication Factor Select (STC). - Available multipliers = x8, x10, x12, x16, x20, x24, x25, x50 -*/ -#define PLL_MUL (16) -/* System Clock Divider (ICK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define ICK_DIV (2) -/* Peripheral Module Clock A Divider (PCKA). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKA_DIV (4) -/* Peripheral Module Clock B Divider (PCKB). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKB_DIV (4) -/* External Bus Clock Divider (BCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define BCK_DIV (8) -/* Flash IF Clock Divider (FCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define FCK_DIV (4) -/* IEBUS Clock Divider Select. - Available divisors = /1 (no division), /2, /4, /6, /8, /16, /32, /64 -*/ -#define IEBCK_DIV (8) -/* USB Clock Divider Select. - Available divisors = /3, /4 -*/ -#define UCK_DIV (4) - -#endif /* R_BSP_CONFIG_REF_HEADER_FILE */ - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c deleted file mode 100644 index a8d08b9c0..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c +++ /dev/null @@ -1,409 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : resetprg.c -* Device(s) : RX63x -* Description : Defines post-reset routines that are used to configure the MCU prior to the main program starting. -* This is were the program counter starts on power-up or reset. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 13.03.2012 1.10 Stack sizes are now defined in r_bsp_config.h. Because of this the #include for -* stacksct.h was removed. Settings for SCKCR are now set in r_bsp_config.h and used here -* to setup clocks based on user settings. -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Defines machine level functions used in this file */ -#include -/* Defines MCU configuration functions used in this file */ -#include <_h_c_lib.h> -/* Defines standard variable types used in this file */ -#include -#include - -/* This macro is here so that the stack will be declared here. This is used to prevent multiplication of stack size. */ -#define BSP_DECLARE_STACK -/* Define the target platform */ -#include "platform.h" - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ -#define PSW_init (0x00030000) -#define FPSW_init (0x00000100) - -/*********************************************************************************************************************** -Pre-processor Directives -***********************************************************************************************************************/ -/* Declare the contents of the function 'Change_PSW_PM_to_UserMode' as - assembler to the compiler */ -#pragma inline_asm Change_PSW_PM_to_UserMode - -/* Set this as the entry point from a power-on reset */ -#pragma entry PowerON_Reset_PC - -/*********************************************************************************************************************** -External function Prototypes -***********************************************************************************************************************/ -/* Functions to setup I/O library */ -extern void _INIT_IOLIB(void); -extern void _CLOSEALL(void); - -/*********************************************************************************************************************** -Private global variables and functions -***********************************************************************************************************************/ -/* Power-on reset function declaration */ -void PowerON_Reset_PC(void); - -#if RUN_IN_USER_MODE==1 - #if __RENESAS_VERSION__ < 0x01010000 - /* MCU usermode switcher function declaration */ - static void Change_PSW_PM_to_UserMode(void); - #endif -#endif - -/* Main program function delcaration */ -void main(void); -static void operating_frequency_set(void); - -/*********************************************************************************************************************** -* Function name: PowerON_Reset_PC -* Description : This function is the MCU's entry point from a power-on reset. -* The following steps are taken in the startup code: -* 1. The User Stack Pointer (USP) and Interrupt Stack Pointer (ISP) are both set immediately after entry -* to this function. The USP and ISP stack sizes are set in the file stacksct.h. -* Default sizes are USP=4K and ISP=1K. -* 2. The interrupt vector base register is set to point to the beginning of the relocatable interrupt -* vector table. -* 3. The MCU is setup for floating point operations by setting the initial value of the Floating Point -* Status Word (FPSW). -* 4. The MCU operating frequency is set by configuring the Clock Generation Circuit (CGC) in -* operating_frequency_set. -* 5. Calls are made to functions to setup the C runtime environment which involves initializing all -* initialed data, zeroing all uninitialized variables, and configuring STDIO if used -* (calls to _INITSCT and _INIT_IOLIB). -* 6. Board-specific hardware setup, including configuring I/O pins on the MCU, in hardware_setup. -* 7. Global interrupts are enabled by setting the I bit in the Program Status Word (PSW), and the stack -* is switched from the ISP to the USP. The initial Interrupt Priority Level is set to zero, enabling -* any interrupts with a priority greater than zero to be serviced. -* 8. The processor is optionally switched to user mode. To run in user mode, set the macro -* RUN_IN_USER_MODE above to a 1. -* 9. The bus error interrupt is enabled to catch any accesses to invalid or reserved areas of memory. -* -* Once this initialization is complete, the user's main() function is called. It should not return. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void PowerON_Reset_PC(void) -{ - /* Stack pointers are setup prior to calling this function - see comments above */ - - /* Initialise the MCU processor word */ -#if __RENESAS_VERSION__ >= 0x01010000 - set_intb((void *)__sectop("C$VECT")); -#else - set_intb((unsigned long)__sectop("C$VECT")); -#endif - - /* Initialize FPSW for floating-point operations */ -#ifdef __ROZ -#define _ROUND 0x00000001 /* Let FPSW RMbits=01 (round to zero) */ -#else -#define _ROUND 0x00000000 /* Let FPSW RMbits=00 (round to nearest) */ -#endif -#ifdef __DOFF -#define _DENOM 0x00000100 /* Let FPSW DNbit=1 (denormal as zero) */ -#else -#define _DENOM 0x00000000 /* Let FPSW DNbit=0 (denormal as is) */ -#endif - set_fpsw(FPSW_init | _ROUND | _DENOM); - - /* Switch to high-speed operation */ - operating_frequency_set(); - - /* Initialize C runtime environment */ - _INITSCT(); - - /* Comment this out if not using I/O lib - _INIT_IOLIB(); */ - - /* Configure the MCU and YRDK hardware */ - hardware_setup(); - - /* Change the MCU's usermode from supervisor to user */ - nop(); - set_psw(PSW_init); -#if RUN_IN_USER_MODE==1 - /* Use chg_pmusr() intrinsic if possible. */ - #if __RENESAS_VERSION__ >= 0x01010000 - chg_pmusr() ; - #else - Change_PSW_PM_to_UserMode(); - #endif -#endif - - - /* Enable the bus error interrupt to catch accesses to illegal/reserved areas of memory */ - /* The ISR for this interrupt can be found in vecttbl.c in the function "bus_error_isr" */ - /* Clear any pending interrupts */ - IR(BSC,BUSERR) = 0; - /* Make this the highest priority interrupt (adjust as necessary for your application */ - IPR(BSC,BUSERR) = 0x0F; - /* Enable the interrupt in the ICU*/ - IEN(BSC,BUSERR) = 1; - /* Enable illegal address interrupt in the BSC */ - BSC.BEREN.BIT.IGAEN = 1; - - /* Call the main program function (should not return) */ - main(); - - /* Comment this out if not using I/O lib - cleans up open files */ - _CLOSEALL(); - - while(1) - { - /* Infinite loop. Put a breakpoint here if you want to catch an exit of main(). */ - } -} - -/*********************************************************************************************************************** -* Function name: operating_frequency_set -* Description : Configures the clock settings for each of the device clocks -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void operating_frequency_set(void) -{ - /* Used for constructing value to write to SCKCR register. */ - uint32_t temp_clock = 0; - - /* - Clock Description Frequency - ---------------------------------------- - Input Clock Frequency............ 12 MHz - PLL frequency (x16).............. 192 MHz - Internal Clock Frequency......... 96 MHz - Peripheral Clock Frequency....... 48 MHz - USB Clock Frequency.............. 48 MHz - External Bus Clock Frequency..... 24 MHz */ - - volatile unsigned int i; - - /* Protect off. */ - SYSTEM.PRCR.WORD = 0xA50B; - - /* Uncomment if not using sub-clock */ - //SYSTEM.SOSCCR.BYTE = 0x01; /* stop sub-clock */ - SYSTEM.SOSCCR.BYTE = 0x00; /* Enable sub-clock for RTC */ - - /* Wait 131,072 cycles * 12 MHz = 10.9 ms */ - SYSTEM.MOSCWTCR.BYTE = 0x0D; - - /* PLL wait is 4,194,304 cycles (default) * 192 MHz (12 MHz * 16) = 20.1 ms*/ - SYSTEM.PLLWTCR.BYTE = 0x0F; - - /* Set PLL Input Divisor. */ - SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1; - - /* Set PLL Multiplier. */ - SYSTEM.PLLCR.BIT.STC = PLL_MUL - 1; - - /* EXTAL ON */ - SYSTEM.MOSCCR.BYTE = 0x00; - - /* PLL ON */ - SYSTEM.PLLCR2.BYTE = 0x00; - - for(i = 0;i< 0x168;i++) - { - /* Wait over 12ms */ - nop() ; - } - - /* Figure out setting for FCK bits. */ -#if FCK_DIV == 1 - /* Do nothing since FCK bits should be 0. */ -#elif FCK_DIV == 2 - temp_clock |= 0x10000000; -#elif FCK_DIV == 4 - temp_clock |= 0x20000000; -#elif FCK_DIV == 8 - temp_clock |= 0x30000000; -#elif FCK_DIV == 16 - temp_clock |= 0x40000000; -#elif FCK_DIV == 32 - temp_clock |= 0x50000000; -#elif FCK_DIV == 64 - temp_clock |= 0x60000000; -#else - #error "Error! Invalid setting for FCK_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for ICK bits. */ -#if ICK_DIV == 1 - /* Do nothing since ICK bits should be 0. */ -#elif ICK_DIV == 2 - temp_clock |= 0x01000000; -#elif ICK_DIV == 4 - temp_clock |= 0x02000000; -#elif ICK_DIV == 8 - temp_clock |= 0x03000000; -#elif ICK_DIV == 16 - temp_clock |= 0x04000000; -#elif ICK_DIV == 32 - temp_clock |= 0x05000000; -#elif ICK_DIV == 64 - temp_clock |= 0x06000000; -#else - #error "Error! Invalid setting for ICK_DIV in r_bsp_config.h" -#endif - - /* SDCLK Pin Output and BCLK Pin Output are disabled by default. */ - temp_clock |= 0x00C00000; - - /* Figure out setting for BCK bits. */ -#if BCK_DIV == 1 - /* Do nothing since BCK bits should be 0. */ -#elif BCK_DIV == 2 - temp_clock |= 0x00010000; -#elif BCK_DIV == 4 - temp_clock |= 0x00020000; -#elif BCK_DIV == 8 - temp_clock |= 0x00030000; -#elif BCK_DIV == 16 - temp_clock |= 0x00040000; -#elif BCK_DIV == 32 - temp_clock |= 0x00050000; -#elif BCK_DIV == 64 - temp_clock |= 0x00060000; -#else - #error "Error! Invalid setting for BCK_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for PCKA bits. */ -#if PCKA_DIV == 1 - /* Do nothing since PCKA bits should be 0. */ -#elif PCKA_DIV == 2 - temp_clock |= 0x00001000; -#elif PCKA_DIV == 4 - temp_clock |= 0x00002000; -#elif PCKA_DIV == 8 - temp_clock |= 0x00003000; -#elif PCKA_DIV == 16 - temp_clock |= 0x00004000; -#elif PCKA_DIV == 32 - temp_clock |= 0x00005000; -#elif PCKA_DIV == 64 - temp_clock |= 0x00006000; -#else - #error "Error! Invalid setting for PCKA_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for PCKB bits. */ -#if PCKB_DIV == 1 - /* Do nothing since PCKB bits should be 0. */ -#elif PCKB_DIV == 2 - temp_clock |= 0x00000100; -#elif PCKB_DIV == 4 - temp_clock |= 0x00000200; -#elif PCKB_DIV == 8 - temp_clock |= 0x00000300; -#elif PCKB_DIV == 16 - temp_clock |= 0x00000400; -#elif PCKB_DIV == 32 - temp_clock |= 0x00000500; -#elif PCKB_DIV == 64 - temp_clock |= 0x00000600; -#else - #error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h" -#endif - - /* Bottom byte of SCKCR register must be set to 0x11 */ - temp_clock |= 0x00000011; - - /* Set SCKCR register. */ - SYSTEM.SCKCR.LONG = temp_clock; - - /* Re-init temp_clock to use to set SCKCR2. */ - temp_clock = 0; - - /* Figure out setting for IEBCK bits. */ -#if IEBCK_DIV == 2 - temp_clock |= 0x00000001; -#elif IEBCK_DIV == 4 - temp_clock |= 0x00000002; -#elif IEBCK_DIV == 6 - temp_clock |= 0x0000000C; -#elif IEBCK_DIV == 8 - temp_clock |= 0x00000003; -#elif IEBCK_DIV == 16 - temp_clock |= 0x00000004; -#elif IEBCK_DIV == 32 - temp_clock |= 0x00000005; -#elif IEBCK_DIV == 64 - temp_clock |= 0x00000006; -#else - #error "Error! Invalid setting for IEBCK_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for UCK bits. */ -#if UCK_DIV == 3 - temp_clock |= 0x00000020; -#elif UCK_DIV == 4 - temp_clock |= 0x00000030; -#else - #error "Error! Invalid setting for UCK_DIV in r_bsp_config.h" -#endif - - /* Set SCKCR2 register. */ - SYSTEM.SCKCR2.WORD = (uint16_t)temp_clock; - - /* Choose clock source. Default for r_bsp_config.h is PLL. */ - SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8; - - /* Protect on. */ - SYSTEM.PRCR.WORD = 0xA500; -} - -/*********************************************************************************************************************** -* Function name: Change_PSW_PM_to_UserMode -* Description : Assembler function, used to change the MCU's usermode from supervisor to user. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -#if RUN_IN_USER_MODE==1 - #if __RENESAS_VERSION__ < 0x01010000 -static void Change_PSW_PM_to_UserMode(void) -{ - MVFC PSW,R1 - OR #00100000h,R1 - PUSH.L R1 - MVFC PC,R1 - ADD #10,R1 - PUSH.L R1 - RTE - NOP - NOP -} - #endif -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c deleted file mode 100644 index ef29b3190..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c +++ /dev/null @@ -1,96 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : sbrk.c -* Device(s) : RX -* Description : Configures the MCU heap memory. The size of the heap is defined by the macro HEAPSIZE below. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 12.03.2012 1.10 Heap size is now defined in r_bsp_config.h, not sbrk.h. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Provides standard definitions used in this file */ -#include -/* Defines standard input/output functions used in this file */ -#include -/* Defines standard variable types used in this file */ -#include -/* Used for getting HEAP_BYTES macro. */ -#include "platform.h" - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Function Prototypes -***********************************************************************************************************************/ -/* Memory allocation function prototype declaration */ -int8_t *sbrk(size_t size); - -/*********************************************************************************************************************** -Global Variables -***********************************************************************************************************************/ -//const size_t _sbrk_size= /* Specifies the minimum unit of */ -/* the defined heap area */ -extern int8_t *_s1ptr; - -union HEAP_TYPE -{ - int32_t dummy; /* Dummy for 4-byte boundary */ - int8_t heap[HEAP_BYTES]; /* Declaration of the area managed by sbrk*/ -}; -/* Declare memory heap area */ -static union HEAP_TYPE heap_area; -/* End address allocated by sbrk */ -static int8_t *brk=(int8_t *)&heap_area; - -/*********************************************************************************************************************** -* Function name: sbrk -* Description : This function configures MCU memory area allocation. -* Arguments : size - -* assigned area size -* Return value : Start address of allocated area (pass) -* -1 (failure) -***********************************************************************************************************************/ -int8_t *sbrk(size_t size) -{ - int8_t *p; - - if (brk+size > heap_area.heap+HEAP_BYTES) - { - /* Empty area size */ - p = (int8_t *)-1; - } - else - { - /* Area assignment */ - p = brk; - - /* End address update */ - brk += size; - } - - /* Return result */ - return p; -} diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c deleted file mode 100644 index e528b1fd5..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c +++ /dev/null @@ -1,186 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : vecttbl.c -* Device(s) : RX -* Description : Definition of the fixed vector table -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 17.02.2012 1.10 Made function names compliant with CS v4.0 -* : 13.03.2012 1.20 ID Code is now specified in r_bsp_config.h. It is still used here in Fixed_Vectors[]. -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -#include -#include -#include "platform.h" - -/*********************************************************************************************************************** -* Function name: PowerON_Reset_PC -* Description : The reset vector points to this function. Code execution starts in this function after reset. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -extern void PowerON_Reset_PC(void); - -/*********************************************************************************************************************** -* Function name: excep_supervisor_inst_isr -* Description : Supervisor Instruction Violation ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (excep_supervisor_inst_isr) -void excep_supervisor_inst_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: excep_undefined_inst_isr -* Description : Undefined instruction exception ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (excep_undefined_inst_isr) -void excep_undefined_inst_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: excep_floating_point_isr -* Description : Floating point exception ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (excep_floating_point_isr) -void excep_floating_point_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: non_maskable_isr -* Description : Non-maskable interrupt ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (non_maskable_isr) -void non_maskable_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: undefined_interrupt_source_isr -* Description : All undefined interrupt vectors point to this function. -* Set a breakpoint in this function to determine which source is creating unwanted interrupts. -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (undefined_interrupt_source_isr) -void undefined_interrupt_source_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: bus_error_isr -* Description : By default, this demo code enables the Bus Error Interrupt. This interrupt will fire if the user tries -* to access code or data from one of the reserved areas in the memory map, including the areas covered -* by disabled chip selects. A nop() statement is included here as a convenient place to set a breakpoint -* during debugging and development, and further handling should be added by the user for their -* application. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -#pragma interrupt (bus_error_isr(vect=VECT(BSC,BUSERR))) -void bus_error_isr (void) -{ - /* - To find the address that was accessed when the bus error occured, read the register BSC.BERSR2.WORD. The upper - 13 bits of this register contain the upper 13-bits of the offending address (in 512K byte units) - */ - - /* Add your own code here to handle this interrupt */ - nop(); -} - -/*********************************************************************************************************************** -* The following array fills in the fixed vector table and the code -* protecction ID bytes. -***********************************************************************************************************************/ -#pragma section C FIXEDVECT - -void* const Fixed_Vectors[] = { - -/* 0xffffff90 through 0xffffff9f: Reserved area - must be all 0xFF */ - (void *)0xFFFFFFFF, /* 0xffffff90 - Reserved */ - (void *)0xFFFFFFFF, /* 0xffffff94 - Reserved */ - (void *)0xFFFFFFFF, /* 0xffffff98 - Reserved */ - -/* The 32-bit area immediately below (0xffffff9c through 0xffffff9f) is a special area that allows the ROM to be - protected from reading or writing by a parallel programmer. Please refer to the HW manual for appropriate settings. - The default (all 0xff) places no restrictions and therefore allows reads and writes by a parallel programmer. */ - (void *)0xFFFFFFFF, /* 0xffffff9C - ROM Code Protection */ - -/* The memory are immediately below (0xffffffa0 through 0xffffffaf) is a special area that allows the on-chip firmware - to be protected. See the section "ID Code Protection" in the HW manual for details on how to enable protection. - Setting the four long words below to non-0xFF values will enable protection. Do this only after carefully review - the HW manual */ - -/* 0xffffffA0 through 0xffffffaf: ID Code Protection. The ID code is specified using macros in r_bsp_config.h. */ - (void *) ID_CODE_LONG_1, /* 0xffffffA0 - Control code and ID code */ - (void *) ID_CODE_LONG_2, /* 0xffffffA4 - ID code (cont.) */ - (void *) ID_CODE_LONG_3, /* 0xffffffA8 - ID code (cont.) */ - (void *) ID_CODE_LONG_4, /* 0xffffffAC - ID code (cont.) */ - -/* 0xffffffB0 through 0xffffffcf: Reserved area */ - (void *) 0xFFFFFFFF, /* 0xffffffB0 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffB4 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffB8 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffBC - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffC0 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffC4 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffC8 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffCC - Reserved */ - -/* Fixed vector table */ - (void *) excep_supervisor_inst_isr, /* 0xffffffd0 Exception(Supervisor Instruction) */ - (void *) undefined_interrupt_source_isr, /* 0xffffffd4 Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xffffffd8 Reserved */ - (void *) excep_undefined_inst_isr, /* 0xffffffdc Exception(Undefined Instruction) */ - (void *) undefined_interrupt_source_isr, /* 0xffffffe0 Reserved */ - (void *) excep_floating_point_isr, /* 0xffffffe4 Exception(Floating Point) */ - (void *) undefined_interrupt_source_isr, /* 0xffffffe8 Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xffffffec Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xfffffff0 Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xfffffff4 Reserved */ - (void *) non_maskable_isr, /* 0xfffffff8 NMI */ - (void *) PowerON_Reset_PC /* 0xfffffffc RESET */ -}; diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h deleted file mode 100644 index f1b693efc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h +++ /dev/null @@ -1,118 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http:/*www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : yrdkrx63n.h -* H/W Platform : YRDKRX63N -* Description : Board specific definitions for the RDKRX63N. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 30.11.2011 1.00 First Release -***********************************************************************************************************************/ - -#ifndef RDK_RX63N_H -#define RDK_RX63N_H - - -/* Local defines */ -#define LED_ON (0) -#define LED_OFF (1) - -/* I/0 port 1 */ -#define USB_VBUSEN PORT1.PODR.BIT.B6 -#define AUDIO_OUT_R PORT1.PODR.BIT.B7 - -/* I/0 port 2 */ -#define BL_ENA PORT2.PODR.BIT.B1 -#define USB_DPUPEA PORT2.PODR.BIT.B3 - -/* I/O port 3 */ -#define CAN_WIFI_TX PORT3.PODR.BIT.B2 - -/* I/O port 4: switches and various peripherals */ -#define SW_ACTIVE (0) -#define SW1 PORT4.PIDR.BIT.B0 -#define SW1_PMR PORT4.PMR.BIT.B0 -#define SW1_PDR PORT4.PDR.BIT.B0 -#define SW2 PORT4.PIDR.BIT.B1 -#define SW2_PMR PORT4.PMR.BIT.B1 -#define SW2_PDR PORT4.PDR.BIT.B1 -#define POTENTIOMETER PORT4.PODR.BIT.B2 -#define JN1_AN3 PORT4.PODR.BIT.B3 -#define SW3 PORT4.PIDR.BIT.B4 -#define SW3_PMR PORT4.PMR.BIT.B4 -#define SW3_PDR PORT4.PDR.BIT.B4 -#define MICROPHONE PORT4.PODR.BIT.B5 -#define AUDIO_IN_R PORT4.PODR.BIT.B6 -#define PWMLP_IN PORT4.PODR.BIT.B7 - -/* I/O port 5 */ -#define LCD_RS PORT5.PODR.BIT.B1 -#define BCLK PORT5.PODR.BIT.B3 -#define PWMLP_OUT PORT5.PODR.BIT.B4 - -/* I/O port A: Extension slot (JN2) and E/N pins */ -#define JN2_SSLA1_B PORTA.PODR.BIT.B0 -#define PMOD1_PIN8 PORTA.PODR.BIT.B1 -#define AMP_SHDN PORTA.PODR.BIT.B2 -#define ETH_MDIO PORTA.PODR.BIT.B3 -#define ETH_MDC PORTA.PODR.BIT.B4 -#define ETH_LINK PORTA.PODR.BIT.B5 - -/* I/O port B: Ethernet I/O pins definitions */ -#define RMII_RXD1 PORTB.PODR.BIT.B0 -#define RMII_RXD0 PORTB.PODR.BIT.B1 -#define ETH_CLK PORTB.PODR.BIT.B2 -#define RMII_RX_ER PORTB.PODR.BIT.B3 -#define RMII_TX_EN PORTB.PODR.BIT.B4 -#define RMII_TXD0 PORTB.PODR.BIT.B5 -#define RMII_TXD1 PORTB.PODR.BIT.B6 -#define ETH_CRS PORTB.PODR.BIT.B7 - -/* I/O port C: RSPI and peripheral I/O pins definitions */ -#define RSPI_CHANNEL_0 0 -#define RSPI_CHANNEL_1 1 -#define FLASH_CS PORTC.PODR.BIT.B0 /* SSL 1 */ -#define AUDIO_OUT_L PORTC.PODR.BIT.B1 -#define LCD_CS PORTC.PODR.BIT.B2 /* SSL 3 */ -#define LCD_RESET PORTC.PODR.BIT.B3 -#define SDMICRO_CS PORTC.PODR.BIT.B4 /* SSL 0 */ -#define RSPI_SCLOCK PORTC.PODR.BIT.B5 -#define RSPI_MOSI PORTC.PODR.BIT.B6 -#define RSPI_MISO PORTC.PODR.BIT.B7 - -/* I/O ports D & E: LEDs */ -#define LED4 PORTD.PODR.BIT.B5 -#define LED5 PORTE.PODR.BIT.B3 -#define LED6 PORTD.PODR.BIT.B2 -#define LED7 PORTE.PODR.BIT.B0 -#define LED8 PORTD.PODR.BIT.B4 -#define LED9 PORTE.PODR.BIT.B2 -#define LED10 PORTD.PODR.BIT.B1 -#define LED11 PORTD.PODR.BIT.B7 -#define LED12 PORTD.PODR.BIT.B3 -#define LED13 PORTE.PODR.BIT.B1 -#define LED14 PORTD.PODR.BIT.B0 -#define LED15 PORTD.PODR.BIT.B6 - -/* WiFi chip select */ -#define WIFI_CS PORTJ.PODR.BIT.B3 - -#endif /* RDK_RX63N_H */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h deleted file mode 100644 index a543fba63..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h +++ /dev/null @@ -1,12106 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :iodefine.h */ -/* DATE :Mon, Jul 11, 2011 */ -/* DESCRIPTION :Definition of I/O Register */ -/* CPU TYPE :RX63N */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.52). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -/************************************************************************ -* -* Device : RX/RX600/RX63N -* -* File Name : ioedfine.h -* -* Abstract : Definition of I/O Register. -* -* History : 0.50 (2011-03-28) [Hardware Manual Revision : 0.50] -* : 0.02 (2010-11-01) [Hardware Manual Revision : 0.01] -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright (C) 2010(2011) Renesas Electronics Corporation -* and Renesas Solutions Corp. -* -************************************************************************/ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX63N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(TPU0,TGI0A) = 0; expands to : */ -/* ICU.IR[126].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(TPU0,TGI0A) = 2; expands to : */ -/* IPR(TPU0,TGI ) = 2; // TGI0A,TGI0B,TGI0C,TGI0D share IPR level. */ -/* ICU.IPR[126].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,RXI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[214].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=142) */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=VECT(TPU0,TGI0A)) expands to : */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=126) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTU,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(TPU4) = 0; // TPU0,TPU1,TPU2,TPU3,TPU4,TPU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA13 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX63NIODEFINE_HEADER__ -#define __RX63NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :2; - unsigned char CH:3; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char EXOEN:1; - unsigned char EXSEL:2; - } BIT; - } ADCR2; - unsigned char ADSSTR; - char wk0[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[4]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short BPEB:2; - unsigned short BPFB:2; - unsigned short BPHB:2; - unsigned short BPGB:2; - unsigned short BPIB:2; - unsigned short BPRO:2; - unsigned short BPRA:2; - } BIT; - } BUSPRI; - char wk4[7408]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk11[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk12[1926]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk27[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk28[4]; - union { - unsigned short WORD; - struct { - unsigned short RCVENM7:1; - unsigned short RCVENM6:1; - unsigned short RCVENM5:1; - unsigned short RCVENM4:1; - unsigned short RCVENM3:1; - unsigned short RCVENM2:1; - unsigned short RCVENM1:1; - unsigned short RCVENM0:1; - unsigned short RCVEN7:1; - unsigned short RCVEN6:1; - unsigned short RCVEN5:1; - unsigned short RCVEN4:1; - unsigned short RCVEN3:1; - unsigned short RCVEN2:1; - unsigned short RCVEN1:1; - unsigned short RCVEN0:1; - } BIT; - } CSRECEN; - char wk29[894]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk30[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk32[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk33[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk34[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk35[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk36[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - unsigned short DLC; - unsigned char DATA[8]; - unsigned short TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MKIVLR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :7; - unsigned long CCLKS:1; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; - union { - unsigned char BYTE; - struct { - unsigned char DAADST:1; - } BIT; - } DAADSCR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - unsigned long DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - unsigned long TDLAR; - char wk3[4]; - unsigned long RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long ELB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - unsigned long RBWAR; - unsigned long RDFAR; - char wk14[4]; - unsigned long TBRAR; - unsigned long TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk0[7799147]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBW006:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :3; - unsigned short FENTRY3:1; - unsigned short FENTRY2:1; - unsigned short FENTRY1:1; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :4; - unsigned short BCADR:11; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[252]; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[254]; - char wk5[2]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR0; - char wk6[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR1; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR2; - char wk8[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN7:1; - unsigned char FLTEN6:1; - unsigned char FLTEN5:1; - unsigned char FLTEN4:1; - unsigned char FLTEN3:1; - unsigned char FLTEN2:1; - unsigned char FLTEN1:1; - unsigned char FLTEN0:1; - } BIT; - } IRQFLTE0; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN15:1; - unsigned char FLTEN14:1; - unsigned char FLTEN13:1; - unsigned char FLTEN12:1; - unsigned char FLTEN11:1; - unsigned char FLTEN10:1; - unsigned char FLTEN9:1; - unsigned char FLTEN8:1; - } BIT; - } IRQFLTE1; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL7:2; - unsigned short FCLKSEL6:2; - unsigned short FCLKSEL5:2; - unsigned short FCLKSEL4:2; - unsigned short FCLKSEL3:2; - unsigned short FCLKSEL2:2; - unsigned short FCLKSEL1:2; - unsigned short FCLKSEL0:2; - } BIT; - } IRQFLTC0; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL15:2; - unsigned short FCLKSEL14:2; - unsigned short FCLKSEL13:2; - unsigned short FCLKSEL12:2; - unsigned short FCLKSEL11:2; - unsigned short FCLKSEL10:2; - unsigned short FCLKSEL9:2; - unsigned short FCLKSEL8:2; - } BIT; - } IRQFLTC1; - char wk11[104]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2ST:1; - unsigned char LVD1ST:1; - unsigned char IWDTST:1; - unsigned char WDTST:1; - unsigned char OSTST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2EN:1; - unsigned char LVD1EN:1; - unsigned char IWDTEN:1; - unsigned char WDTEN:1; - unsigned char OSTEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2CLR:1; - unsigned char LVD1CLR:1; - unsigned char IWDTCLR:1; - unsigned char WDTCLR:1; - unsigned char OSTCLR:1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; - char wk12[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char NFLTEN:1; - } BIT; - } NMIFLTE; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char NFCLKSEL:2; - } BIT; - } NMIFLTC; - char wk14[19819]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long IS15:1; - unsigned long IS14:1; - unsigned long IS13:1; - unsigned long IS12:1; - unsigned long IS11:1; - unsigned long IS10:1; - unsigned long IS9:1; - unsigned long IS8:1; - unsigned long IS7:1; - unsigned long IS6:1; - unsigned long IS5:1; - unsigned long IS4:1; - unsigned long IS3:1; - unsigned long IS2:1; - unsigned long IS1:1; - unsigned long IS0:1; - } BIT; - } GRP[13]; - char wk15[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long EN15:1; - unsigned long EN14:1; - unsigned long EN13:1; - unsigned long EN12:1; - unsigned long EN11:1; - unsigned long EN10:1; - unsigned long EN9:1; - unsigned long EN8:1; - unsigned long EN7:1; - unsigned long EN6:1; - unsigned long EN5:1; - unsigned long EN4:1; - unsigned long EN3:1; - unsigned long EN2:1; - unsigned long EN1:1; - unsigned long EN0:1; - } BIT; - } GEN[13]; - char wk16[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long CLR15:1; - unsigned long CLR14:1; - unsigned long CLR13:1; - unsigned long CLR12:1; - unsigned long CLR11:1; - unsigned long CLR10:1; - unsigned long CLR9:1; - unsigned long CLR8:1; - unsigned long CLR7:1; - unsigned long CLR6:1; - unsigned long CLR5:1; - unsigned long CLR4:1; - unsigned long CLR3:1; - unsigned long CLR2:1; - unsigned long CLR1:1; - unsigned long CLR0:1; - } BIT; - } GCR[13]; - char wk17[12]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long CN5:1; - unsigned long CN4:1; - unsigned long CN3:1; - unsigned long CN2:1; - unsigned long CN1:1; - unsigned long CN0:1; - } BIT; - } SEL; -}; - -struct st_ieb { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char IOL:1; - unsigned char DEE:1; - unsigned char :1; - unsigned char RE:1; - } BIT; - } IECTR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMD:3; - } BIT; - } IECMR; - union { - unsigned char BYTE; - struct { - unsigned char SS:1; - unsigned char RN:3; - unsigned char CTL:4; - } BIT; - } IEMCR; - union { - unsigned char BYTE; - struct { - unsigned char IARL4:4; - unsigned char IMD:2; - unsigned char :1; - unsigned char STE:1; - } BIT; - } IEAR1; - union { - unsigned char BYTE; - struct { - unsigned char IARU8:8; - } BIT; - } IEAR2; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IESA1; - union { - unsigned char BYTE; - struct { - unsigned char ISAU8:8; - } BIT; - } IESA2; - union { - unsigned char BYTE; - struct { - unsigned char IBFL:8; - } BIT; - } IETBFL; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IEMA1; - union { - unsigned char BYTE; - struct { - unsigned char IMAU8:8; - } BIT; - } IEMA2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RCTL:4; - } BIT; - } IERCTL; - union { - unsigned char BYTE; - struct { - unsigned char RBFL:8; - } BIT; - } IERBFL; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char ILAL8:8; - } BIT; - } IELA1; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ILAU4:4; - } BIT; - } IELA2; - union { - unsigned char BYTE; - struct { - unsigned char CMX:1; - unsigned char MRQ:1; - unsigned char SRQ:1; - unsigned char SRE:1; - unsigned char LCK:1; - unsigned char :1; - unsigned char RSS:1; - unsigned char GG:1; - } BIT; - } IEFLG; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXS:1; - unsigned char TXF:1; - unsigned char :1; - unsigned char TXEAL:1; - unsigned char TXETTME:1; - unsigned char TXERO:1; - unsigned char TXEACK:1; - } BIT; - } IETSR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXSE:1; - unsigned char TXFE:1; - unsigned char :1; - unsigned char TXEALE:1; - unsigned char TXETTMEE:1; - unsigned char TXEROE:1; - unsigned char TXEACKE:1; - } BIT; - } IEIET; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char RXBSY:1; - unsigned char RXS:1; - unsigned char RXF:1; - unsigned char RXEDE:1; - unsigned char RXEOVE:1; - unsigned char RXERTME:1; - unsigned char RXEDLE:1; - unsigned char RXEPE:1; - } BIT; - } IERSR; - union { - unsigned char BYTE; - struct { - unsigned char RXBSYE:1; - unsigned char RXSE:1; - unsigned char RXFE:1; - unsigned char RXEDEE:1; - unsigned char RXEOVEE:1; - unsigned char RXERTMEE:1; - unsigned char RXEDLEE:1; - unsigned char RXEPEE:1; - } BIT; - } IEIER; - char wk3[2]; - union { - unsigned char BYTE; - struct { - unsigned char FLT:1; - unsigned char FCKS:2; - unsigned char CKS3:1; - unsigned char SRSTP:1; - unsigned char CKS:3; - } BIT; - } IECKSR; - char wk4[230]; - unsigned char IETB[33]; - char wk5[223]; - unsigned char IERB[33]; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } IWDTRCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char SLCSTP:1; - } BIT; - } IWDTCSTPR; -}; - -struct st_mpc { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PFCSE; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PFCSS0; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PFCSS1; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char A9E:1; - unsigned char A8E:1; - } BIT; - } PFAOE0; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PFAOE1; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char ADRLE:1; - } BIT; - } PFBCR0; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char ALEOE:1; - unsigned char WAITS:2; - } BIT; - } PFBCR1; - char wk1[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PHYMODE:1; - } BIT; - } PFENET; - char wk2[5]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB1; - char wk3[9]; - union { - unsigned char BYTE; - struct { - unsigned char B0WI:1; - unsigned char PFSWE:1; - } BIT; - } PWPR; - char wk4[32]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P00PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P01PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P02PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P03PFS; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P05PFS; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P07PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P10PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P11PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P12PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P13PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P14PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P15PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P16PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P17PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P20PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P21PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P22PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P23PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P24PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P25PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P26PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P27PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P30PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P31PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P32PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P33PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P34PFS; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P40PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P41PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P42PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P43PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P44PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P45PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P46PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P47PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P50PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P51PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P52PFS; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P54PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P55PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P56PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P57PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P60PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P61PFS; - char wk9[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P66PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P67PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P70PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P71PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P72PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P73PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P74PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P75PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P76PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P77PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P80PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P81PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P82PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P83PFS; - char wk10[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P86PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P87PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P90PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P91PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P92PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P93PFS; - char wk11[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF2PFS; - char wk12[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PF5PFS; - char wk13[21]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PJ3PFS; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[111]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk1[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[238]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk3[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[365]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk8[90]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; - char wk11[72]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char :1; - unsigned char NFWEN:1; - unsigned char NFVEN:1; - unsigned char NFUEN:1; - } BIT; - } NFCR; - char wk1[490]; - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk3[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk5[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - char wk0[4]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE2:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char P1CZEA:1; - unsigned char P2CZEA:1; - unsigned char P3CZEA:1; - } BIT; - } POECR2; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short OSTSTF:1; - unsigned short :2; - unsigned short OSTSTE:1; - } BIT; - } ICSR3; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[62]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[32]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[61]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[33]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[60]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - } BIT; - } DSCR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[34]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[59]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[35]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[58]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[36]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[57]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[37]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[56]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[38]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[55]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[39]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[54]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[40]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[53]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[41]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[52]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[42]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[51]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[43]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[50]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[44]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[49]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[45]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[48]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[46]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[47]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[47]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[46]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porth { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portj { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PMR; - char wk3[49]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[44]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic0 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_riic1 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSL3P:1; - unsigned char SSL2P:1; - unsigned char SSL1P:1; - unsigned char SSL0P:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - //unsigned long SPDR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAYW:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAYW:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char PES:4; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char HR24:1; - unsigned char AADJP:1; - unsigned char AADJE:1; - unsigned char RTCOE:1; - unsigned char ADJ30:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; - char wk15[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RTCEN:1; - } BIT; - } RCR3; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RCKSEL:1; - } BIT; - } RCR4; - char wk17[1]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RFC:1; - } BIT; - } RFRH; - union { - unsigned short WORD; - struct { - unsigned short RFC:16; - } BIT; - } RFRL; - union { - unsigned char BYTE; - struct { - unsigned char PMADJ:2; - unsigned char ADJ:6; - } BIT; - } RADJ; - char wk18[17]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR1; - char wk20[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR2; - char wk21[13]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP0; - char wk22[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP0; - char wk23[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP0; - char wk24[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP0; - char wk25[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP0; - char wk26[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP1; - char wk27[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP1; - char wk28[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP1; - char wk29[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP1; - char wk30[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP1; - char wk31[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP2; - char wk32[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP2; - char wk33[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP2; - char wk34[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP2; - char wk35[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS0:16; - } BIT; - } ADANS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ANS1:5; - } BIT; - } ADANS1; - union { - unsigned short WORD; - struct { - unsigned short ADS0:16; - } BIT; - } ADADS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ADS1:5; - } BIT; - } ADADS1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OCS:1; - unsigned short TSS:1; - unsigned short :6; - unsigned short OCSAD:1; - unsigned short TSSAD:1; - } BIT; - } ADEXICR; - char wk3[6]; - unsigned short ADTSDR; - unsigned short ADOCDR; - char wk4[2]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; - unsigned short ADDR8; - unsigned short ADDR9; - unsigned short ADDR10; - unsigned short ADDR11; - unsigned short ADDR12; - unsigned short ADDR13; - unsigned short ADDR14; - unsigned short ADDR15; - unsigned short ADDR16; - unsigned short ADDR17; - unsigned short ADDR18; - unsigned short ADDR19; - unsigned short ADDR20; - char wk5[38]; - union { - unsigned short WORD; - struct { - unsigned short SST2:8; - } BIT; - } ADSSTR23; -}; - -struct st_sci0 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci7 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci12 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; - char wk0[18]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ESME:1; - } BIT; - } ESMER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char BRME:1; - unsigned char RXDSF:1; - unsigned char SFSF:1; - } BIT; - } CR0; - union { - unsigned char BYTE; - struct { - unsigned char PIBS:3; - unsigned char PIBE:1; - unsigned char CF1DS:2; - unsigned char CF0RE:1; - unsigned char BFE:1; - } BIT; - } CR1; - union { - unsigned char BYTE; - struct { - unsigned char RTS:2; - unsigned char BCCS:2; - unsigned char :1; - unsigned char DFCS:3; - } BIT; - } CR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SDST:1; - } BIT; - } CR3; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SHARPS:1; - unsigned char :2; - unsigned char RXDXPS:1; - unsigned char TXDXPS:1; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDIE:1; - unsigned char BCDIE:1; - unsigned char PIBDIE:1; - unsigned char CF1MIE:1; - unsigned char CF0MIE:1; - unsigned char BFDIE:1; - } BIT; - } ICR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDF:1; - unsigned char BCDF:1; - unsigned char PIBDF:1; - unsigned char CF1MF:1; - unsigned char CF0MF:1; - unsigned char BFDF:1; - } BIT; - } STR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDCL:1; - unsigned char BCDCL:1; - unsigned char PIBDCL:1; - unsigned char CF1MCL:1; - unsigned char CF0MCL:1; - unsigned char BFDCL:1; - } BIT; - } STCR; - unsigned char CF0DR; - union { - unsigned char BYTE; - struct { - unsigned char CF0CE7:1; - unsigned char CF0CE6:1; - unsigned char CF0CE5:1; - unsigned char CF0CE4:1; - unsigned char CF0CE3:1; - unsigned char CF0CE2:1; - unsigned char CF0CE1:1; - unsigned char CF0CE0:1; - } BIT; - } CF0CR; - unsigned char CF0RR; - unsigned char PCF1DR; - unsigned char SCF1DR; - union { - unsigned char BYTE; - struct { - unsigned char CF1CE7:1; - unsigned char CF1CE6:1; - unsigned char CF1CE5:1; - unsigned char CF1CE4:1; - unsigned char CF1CE3:1; - unsigned char CF1CE2:1; - unsigned char CF1CE1:1; - unsigned char CF1CE0:1; - } BIT; - } CF1CR; - unsigned char CF1RR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCST:1; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TCSS:3; - unsigned char TWRC:1; - unsigned char :1; - unsigned char TOMS:2; - } BIT; - } TMR; - unsigned char TPRE; - unsigned char TCNT; -}; - -struct st_smci0 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_smci7 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short MD:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :10; - unsigned short UBTS:1; - unsigned short BOTS:1; - unsigned short :2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long MSTPA27:1; - unsigned long :2; - unsigned long MSTPA24:1; - unsigned long MSTPA23:1; - unsigned long :3; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long MSTPA13:1; - unsigned long MSTPA12:1; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long :3; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long MSTPB27:1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long MSTPB24:1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :6; - unsigned long MSTPB8:1; - unsigned long :3; - unsigned long MSTPB4:1; - unsigned long :1; - unsigned long MSTPB2:1; - unsigned long MSTPB1:1; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPC27:1; - unsigned long MSTPC26:1; - unsigned long MSTPC25:1; - unsigned long MSTPC24:1; - unsigned long :1; - unsigned long MSTPC22:1; - unsigned long :2; - unsigned long MSTPC19:1; - unsigned long MSTPC18:1; - unsigned long MSTPC17:1; - unsigned long MSTPC16:1; - unsigned long :14; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long FCK:4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long PCKA:4; - unsigned long PCKB:4; - } BIT; - } SCKCR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short UCK:4; - unsigned short IEBCK:4; - } BIT; - } SCKCR2; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short CKSEL:3; - } BIT; - } SCKCR3; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short STC:6; - unsigned short :6; - unsigned short PLIDIV:2; - } BIT; - } PLLCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PLLEN:1; - } BIT; - } PLLCR2; - char wk4[5]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOSTP:1; - } BIT; - } MOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SOSTP:1; - } BIT; - } SOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char LCSTP:1; - } BIT; - } LOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ILCSTP:1; - } BIT; - } ILOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HCSTP:1; - } BIT; - } HOCOCR; - char wk6[9]; - union { - unsigned char BYTE; - struct { - unsigned char OSTDE:1; - unsigned char :6; - unsigned char OSTDIE:1; - } BIT; - } OSTDCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char OSTDF:1; - } BIT; - } OSTDSR; - char wk7[94]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char OPCMTSF:1; - unsigned char :1; - unsigned char OPCM:3; - } BIT; - } OPCCR; - union { - unsigned char BYTE; - struct { - unsigned char RSTCKEN:1; - unsigned char :4; - unsigned char RSTCKSEL:3; - } BIT; - } RSTCKCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MSTS:5; - } BIT; - } MOSCWTCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SSTS:5; - } BIT; - } SOSCWTCR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSTS:5; - } BIT; - } PLLWTCR; - char wk9[25]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SWRF:1; - unsigned char WDTRF:1; - unsigned char IWTDRF:1; - } BIT; - } RSTSR2; - char wk10[1]; - unsigned short SWRR; - char wk11[28]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1IDTSEL:2; - } BIT; - } LVD1CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1MON:1; - unsigned char LVD1DET:1; - } BIT; - } LVD1SR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2IDTSEL:2; - } BIT; - } LVD2CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2MON:1; - unsigned char LVD2DET:1; - } BIT; - } LVD2SR; - char wk12[794]; - union { - unsigned short WORD; - struct { - unsigned short PRKEY:8; - unsigned short :4; - unsigned short PRC3:1; - unsigned short :1; - unsigned short PRC1:1; - unsigned short PRC0:1; - } BIT; - } PRCR; - char wk13[48768]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char :4; - unsigned char DEEPCUT:2; - } BIT; - } DPSBYCR; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7E:1; - unsigned char DIRQ6E:1; - unsigned char DIRQ5E:1; - unsigned char DIRQ4E:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15E:1; - unsigned char DIRQ14E:1; - unsigned char DIRQ13E:1; - unsigned char DIRQ12E:1; - unsigned char DIRQ11E:1; - unsigned char DIRQ10E:1; - unsigned char DIRQ9E:1; - unsigned char DIRQ8E:1; - } BIT; - } DPSIER1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIE:1; - unsigned char DIICCIE:1; - unsigned char DIICDIE:1; - unsigned char DNMIE:1; - unsigned char DRTCAIE:1; - unsigned char DRTCIIE:1; - unsigned char DLVD2IE:1; - unsigned char DLVD1IE:1; - } BIT; - } DPSIER2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIE:1; - } BIT; - } DPSIER3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7F:1; - unsigned char DIRQ6F:1; - unsigned char DIRQ5F:1; - unsigned char DIRQ4F:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15F:1; - unsigned char DIRQ14F:1; - unsigned char DIRQ13F:1; - unsigned char DIRQ12F:1; - unsigned char DIRQ11F:1; - unsigned char DIRQ10F:1; - unsigned char DIRQ9F:1; - unsigned char DIRQ8F:1; - } BIT; - } DPSIFR1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIF:1; - unsigned char DIICCIF:1; - unsigned char DIICDIF:1; - unsigned char DNMIF:1; - unsigned char DRTCAIF:1; - unsigned char DRTCIIF:1; - unsigned char DLVD2IF:1; - unsigned char DLVD1IF:1; - } BIT; - } DPSIFR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIF:1; - } BIT; - } DPSIFR3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7EG:1; - unsigned char DIRQ6EG:1; - unsigned char DIRQ5EG:1; - unsigned char DIRQ4EG:1; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15EG:1; - unsigned char DIRQ14EG:1; - unsigned char DIRQ13EG:1; - unsigned char DIRQ12EG:1; - unsigned char DIRQ11EG:1; - unsigned char DIRQ10EG:1; - unsigned char DIRQ9EG:1; - unsigned char DIRQ8EG:1; - } BIT; - } DPSIEGR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DIICCEG:1; - unsigned char DIICDEG:1; - unsigned char DNMIEG:1; - unsigned char :2; - unsigned char DLVD2EG:1; - unsigned char DLVD1EG:1; - } BIT; - } DPSIEGR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIEG:1; - } BIT; - } DPSIEGR3; - char wk15[2]; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :3; - unsigned char LVD2RF:1; - unsigned char LVD1RF:1; - unsigned char LVD0RF:1; - unsigned char PORF:1; - } BIT; - } RSTSR0; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CWSF:1; - } BIT; - } RSTSR1; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOFXIN:1; - } BIT; - } MOFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HOCOPCNT:1; - } BIT; - } HOCOPCR; - char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char LVD2E:1; - unsigned char LVD1E:1; - } BIT; - } LVCMPCR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2LVL:4; - unsigned char LVD1LVL:4; - } BIT; - } LVDLVLR; - char wk18[1]; - union { - unsigned char BYTE; - struct { - unsigned char LVD1RN:1; - unsigned char LVD1RI:1; - unsigned char LVD1FSAMP:2; - unsigned char :1; - unsigned char LVD1CMPE:1; - unsigned char LVD1DFDIS:1; - unsigned char LVD1RIE:1; - } BIT; - } LVD1CR0; - union { - unsigned char BYTE; - struct { - unsigned char LVD2RN:1; - unsigned char LVD2RI:1; - unsigned char LVD2FSAMP:2; - unsigned char :1; - unsigned char LVD2CMPE:1; - unsigned char LVD2DFDIS:1; - unsigned char LVD2RIE:1; - } BIT; - } LVD2CR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMNSEL:1; - } BIT; - } VBATTMNSELR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMON:1; - } BIT; - } VBATTMONR; - char wk20[1]; - unsigned char DPSBKR[32]; - char wk21[1472]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK1; - char wk22[15]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK2; -}; - -struct st_temps { - union { - unsigned char BYTE; - struct { - unsigned char TSEN:1; - unsigned char :2; - unsigned char TSOE:1; - } BIT; - } TSCR; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_tpu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[7]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[22]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[37]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu3 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[52]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu4 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[67]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[82]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST5:1; - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC5:1; - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; -}; - -struct st_tpub { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST11:1; - unsigned char CST10:1; - unsigned char CST9:1; - unsigned char CST8:1; - unsigned char CST7:1; - unsigned char CST6:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC11:1; - unsigned char SYNC10:1; - unsigned char SYNC9:1; - unsigned char SYNC8:1; - unsigned char SYNC7:1; - unsigned char SYNC6:1; - } BIT; - } TSYR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :5; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :5; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :5; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - //ORIG: unsigned short CFIFO; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - //ENDORIG - char wk3[2]; - //ORIG: unsigned short D0FIFO; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - //ENDORIG - char wk4[2]; - //ORIG: unsigned short D1FIFO; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - //ENDORIG - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_usb1 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - unsigned short CFIFO; - char wk3[2]; - unsigned short D0FIFO; - char wk4[2]; - unsigned short D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - char wk7[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - char wk9[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_wdt { - unsigned char WDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } WDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } WDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } WDTRCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_RSPI2_SPRI2,IR_RSPI2_SPTI2,IR_RSPI2_SPII2, -IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_CAN1_RXF1,IR_CAN1_TXF1,IR_CAN1_RXM1,IR_CAN1_TXM1, -IR_CAN2_RXF2,IR_CAN2_TXF2,IR_CAN2_RXM2,IR_CAN2_TXM2, -IR_RTC_COUNTUP=62, -IR_ICU_IRQ0=64,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALARM,IR_RTC_PRD, -IR_AD0_ADI0=98, -IR_S12AD0_S12ADI0=102, -IR_ICU_GROUPE0=106,IR_ICU_GROUPE1,IR_ICU_GROUPE2,IR_ICU_GROUPE3,IR_ICU_GROUPE4,IR_ICU_GROUPE5,IR_ICU_GROUPE6,IR_ICU_GROUPL0=114, -IR_SCIX_SCIX0=122,IR_SCIX_SCIX1,IR_SCIX_SCIX2,IR_SCIX_SCIX3, -IR_TPU0_TGI0A,IR_TPU0_TGI0B,IR_TPU0_TGI0C,IR_TPU0_TGI0D, -IR_TPU1_TGI1A,IR_TPU1_TGI1B, -IR_TPU2_TGI2A,IR_TPU2_TGI2B, -IR_TPU3_TGI3A,IR_TPU3_TGI3B,IR_TPU3_TGI3C,IR_TPU3_TGI3D, -IR_TPU4_TGI4A,IR_TPU4_TGI4B, -IR_TPU5_TGI5A,IR_TPU5_TGI5B, -IR_TPU6_TGI6A,IR_TPU6_TGI6B,IR_TPU6_TGI6C,IR_TPU6_TGI6D, -IR_MTU0_TGIA0=142,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_TPU7_TGI7A,IR_TPU7_TGI7B, -IR_MTU1_TGIA1=148,IR_MTU1_TGIB1, -IR_TPU8_TGI8A,IR_TPU8_TGI8B, -IR_MTU2_TGIA2=150,IR_MTU2_TGIB2, -IR_TPU9_TGI9A,IR_TPU9_TGI9B,IR_TPU9_TGI9C,IR_TPU9_TGI9D, -IR_MTU3_TGIA3=152,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3, -IR_TPU10_TGI10A,IR_TPU10_TGI10B, -IR_MTU4_TGIA4=156,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_TPU11_TGI11A,IR_TPU11_TGI11B, -IR_POE_OEI1,IR_POE_OEI2, -IR_TMR0_CMIA0=170,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_RIIC0_EEI0,IR_RIIC0_RXI0,IR_RIIC0_TXI0,IR_RIIC0_TEI0, -IR_RIIC1_EEI1,IR_RIIC1_RXI1,IR_RIIC1_TXI1,IR_RIIC1_TEI1, -IR_RIIC2_EEI2,IR_RIIC2_RXI2,IR_RIIC2_TXI2,IR_RIIC2_TEI2, -IR_RIIC3_EEI3,IR_RIIC3_RXI3,IR_RIIC3_TXI3,IR_RIIC3_TEI3, -IR_DMAC_DMAC0I,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_RXI0=214,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI4_RXI4,IR_SCI4_TXI4,IR_SCI4_TEI4, -IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_SCI7_RXI7,IR_SCI7_TXI7,IR_SCI7_TEI7, -IR_SCI8_RXI8,IR_SCI8_TXI8,IR_SCI8_TEI8, -IR_SCI9_RXI9,IR_SCI9_TXI9,IR_SCI9_TEI9, -IR_SCI10_RXI10,IR_SCI10_TXI10,IR_SCI10_TEI10, -IR_SCI11_RXI11,IR_SCI11_TXI11,IR_SCI11_TEI11, -IR_SCI12_RXI12,IR_SCI12_TXI12,IR_SCI12_TEI12, -IR_IEB_IEBINT -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=33,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=36,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=39,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=42,DTCE_RSPI1_SPTI1, -DTCE_RSPI2_SPRI2=45,DTCE_RSPI2_SPTI2, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_S12AD0_S12ADI0=102, -DTCE_TPU0_TGI0A=126,DTCE_TPU0_TGI0B,DTCE_TPU0_TGI0C,DTCE_TPU0_TGI0D, -DTCE_TPU1_TGI1A,DTCE_TPU1_TGI1B, -DTCE_TPU2_TGI2A,DTCE_TPU2_TGI2B, -DTCE_TPU3_TGI3A,DTCE_TPU3_TGI3B,DTCE_TPU3_TGI3C,DTCE_TPU3_TGI3D, -DTCE_TPU4_TGI4A,DTCE_TPU4_TGI4B, -DTCE_TPU5_TGI5A,DTCE_TPU5_TGI5B, -DTCE_TPU6_TGI6A,DTCE_TPU6_TGI6B,DTCE_TPU6_TGI6C,DTCE_TPU6_TGI6D, -DTCE_MTU0_TGIA0=142,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_TPU7_TGI7A=148,DTCE_TPU7_TGI7B, -DTCE_MTU1_TGIA1=148,DTCE_MTU1_TGIB1, -DTCE_TPU8_TGI8A,DTCE_TPU8_TGI8B, -DTCE_MTU2_TGIA2=150,DTCE_MTU2_TGIB2, -DTCE_TPU9_TGI9A,DTCE_TPU9_TGI9B,DTCE_TPU9_TGI9C,DTCE_TPU9_TGI9D, -DTCE_MTU3_TGIA3=152,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_TPU10_TGI10A,DTCE_TPU10_TGI10B, -DTCE_MTU4_TGIA4=156,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_TPU11_TGI11A,DTCE_TPU11_TGI11B, -DTCE_TMR0_CMIA0=170,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=173,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=176,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=179,DTCE_TMR3_CMIB3, -DTCE_RIIC0_RXI0=183,DTCE_RIIC0_TXI0, -DTCE_RIIC1_RXI1=187,DTCE_RIIC1_TXI1, -DTCE_RIIC2_RXI2=191,DTCE_RIIC2_TXI2, -DTCE_RIIC3_RXI3=195,DTCE_RIIC3_TXI3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=214,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=217,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=220,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=223,DTCE_SCI3_TXI3, -DTCE_SCI4_RXI4=226,DTCE_SCI4_TXI4, -DTCE_SCI5_RXI5=229,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=232,DTCE_SCI6_TXI6, -DTCE_SCI7_RXI7=235,DTCE_SCI7_TXI7, -DTCE_SCI8_RXI8=238,DTCE_SCI8_TXI8, -DTCE_SCI9_RXI9=241,DTCE_SCI9_TXI9, -DTCE_SCI10_RXI10=244,DTCE_SCI10_TXI10, -DTCE_SCI11_RXI11=247,DTCE_SCI11_TXI11, -DTCE_SCI12_RXI12=250,DTCE_SCI12_TXI12 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x04,IER_USB1_D1FIFO1=0x04,IER_USB1_USBI1=0x04, -IER_RSPI0_SPRI0=0x04,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPRI1=0x05,IER_RSPI1_SPTI1=0x05,IER_RSPI1_SPII1=0x05, -IER_RSPI2_SPRI2=0x05,IER_RSPI2_SPTI2=0x05,IER_RSPI2_SPII2=0x05, -IER_CAN0_RXF0=0x06,IER_CAN0_TXF0=0x06,IER_CAN0_RXM0=0x06,IER_CAN0_TXM0=0x06, -IER_CAN1_RXF1=0x06,IER_CAN1_TXF1=0x06,IER_CAN1_RXM1=0x06,IER_CAN1_TXM1=0x06, -IER_CAN2_RXF2=0x07,IER_CAN2_TXF2=0x07,IER_CAN2_RXM2=0x07,IER_CAN2_TXM2=0x07, -IER_RTC_COUNTUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALARM=0x0B,IER_RTC_PRD=0x0B, -IER_AD0_ADI0=0x0C, -IER_S12AD0_S12ADI0=0x0C, -IER_ICU_GROUPE0=0x0D,IER_ICU_GROUPE1=0x0D,IER_ICU_GROUPE2=0x0D,IER_ICU_GROUPE3=0x0D,IER_ICU_GROUPE4=0x0D,IER_ICU_GROUPE5=0x0D,IER_ICU_GROUPE6=0x0E,IER_ICU_GROUPL0=0x0E, -IER_SCIX_SCIX0=0x0F,IER_SCIX_SCIX1=0x0F,IER_SCIX_SCIX2=0x0F,IER_SCIX_SCIX3=0x0F, -IER_TPU0_TGI0A=0x0F,IER_TPU0_TGI0B=0x0F,IER_TPU0_TGI0C=0x10,IER_TPU0_TGI0D=0x10, -IER_TPU1_TGI1A=0x10,IER_TPU1_TGI1B=0x10, -IER_TPU2_TGI2A=0x10,IER_TPU2_TGI2B=0x10, -IER_TPU3_TGI3A=0x10,IER_TPU3_TGI3B=0x10,IER_TPU3_TGI3C=0x11,IER_TPU3_TGI3D=0x11, -IER_TPU4_TGI4A=0x11,IER_TPU4_TGI4B=0x11, -IER_TPU5_TGI5A=0x11,IER_TPU5_TGI5B=0x11, -IER_TPU6_TGI6A=0x11,IER_TPU6_TGI6B=0x11,IER_TPU6_TGI6C=0x12,IER_TPU6_TGI6D=0x12, -IER_MTU0_TGIA0=0x11,IER_MTU0_TGIB0=0x11,IER_MTU0_TGIC0=0x12,IER_MTU0_TGID0=0x12,IER_MTU0_TGIE0=0x12,IER_MTU0_TGIF0=0x12, -IER_TPU7_TGI7A=0x12,IER_TPU7_TGI7B=0x12, -IER_MTU1_TGIA1=0x12,IER_MTU1_TGIB1=0x12, -IER_TPU8_TGI8A=0x12,IER_TPU8_TGI8B=0x12, -IER_MTU2_TGIA2=0x12,IER_MTU2_TGIB2=0x12, -IER_TPU9_TGI9A=0x13,IER_TPU9_TGI9B=0x13,IER_TPU9_TGI9C=0x13,IER_TPU9_TGI9D=0x13, -IER_MTU3_TGIA3=0x13,IER_MTU3_TGIB3=0x13,IER_MTU3_TGIC3=0x13,IER_MTU3_TGID3=0x13, -IER_TPU10_TGI10A=0x13,IER_TPU10_TGI10B=0x13, -IER_MTU4_TGIA4=0x13,IER_MTU4_TGIB4=0x13,IER_MTU4_TGIC4=0x13,IER_MTU4_TGID4=0x13,IER_MTU4_TCIV4=0x14, -IER_MTU5_TGIU5=0x14,IER_MTU5_TGIV5=0x14,IER_MTU5_TGIW5=0x14, -IER_TPU11_TGI11A=0x14,IER_TPU11_TGI11B=0x14, -IER_POE_OEI1=0x14,IER_POE_OEI2=0x14, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x15, -IER_TMR1_CMIA1=0x15,IER_TMR1_CMIB1=0x15,IER_TMR1_OVI1=0x15, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x16,IER_TMR3_OVI3=0x16, -IER_RIIC0_EEI0=0x16,IER_RIIC0_RXI0=0x16,IER_RIIC0_TXI0=0x17,IER_RIIC0_TEI0=0x17, -IER_RIIC1_EEI1=0x17,IER_RIIC1_RXI1=0x17,IER_RIIC1_TXI1=0x17,IER_RIIC1_TEI1=0x17, -IER_RIIC2_EEI2=0x17,IER_RIIC2_RXI2=0x17,IER_RIIC2_TXI2=0x18,IER_RIIC2_TEI2=0x18, -IER_RIIC3_EEI3=0x18,IER_RIIC3_RXI3=0x18,IER_RIIC3_TXI3=0x18,IER_RIIC3_TEI3=0x18, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1A,IER_SCI0_TEI0=0x1B, -IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1B,IER_SCI2_TEI2=0x1B, -IER_SCI3_RXI3=0x1B,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI4_RXI4=0x1C,IER_SCI4_TXI4=0x1C,IER_SCI4_TEI4=0x1C, -IER_SCI5_RXI5=0x1C,IER_SCI5_TXI5=0x1C,IER_SCI5_TEI5=0x1C, -IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1D,IER_SCI6_TEI6=0x1D, -IER_SCI7_RXI7=0x1D,IER_SCI7_TXI7=0x1D,IER_SCI7_TEI7=0x1D, -IER_SCI8_RXI8=0x1D,IER_SCI8_TXI8=0x1D,IER_SCI8_TEI8=0x1E, -IER_SCI9_RXI9=0x1E,IER_SCI9_TXI9=0x1E,IER_SCI9_TEI9=0x1E, -IER_SCI10_RXI10=0x1E,IER_SCI10_TXI10=0x1E,IER_SCI10_TEI10=0x1E, -IER_SCI11_RXI11=0x1E,IER_SCI11_TXI11=0x1F,IER_SCI11_TEI11=0x1F, -IER_SCI12_RXI12=0x1F,IER_SCI12_TXI12=0x1F,IER_SCI12_TEI12=0x1F, -IER_IEB_IEBINT=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0, -IPR_FCU_FIFERR=1,IPR_FCU_FRDYI=2, -IPR_ICU_SWINT=3, -IPR_CMT0_CMI0=4, -IPR_CMT1_CMI1=5, -IPR_CMT2_CMI2=6, -IPR_CMT3_CMI3=7, -IPR_ETHER_EINT=32, -IPR_USB0_D0FIFO0=33,IPR_USB0_D1FIFO0=34,IPR_USB0_USBI0=35, -IPR_USB1_D0FIFO1=36,IPR_USB1_D1FIFO1=37,IPR_USB1_USBI1=38, -IPR_RSPI0_SPRI0=39,IPR_RSPI0_SPTI0=39,IPR_RSPI0_SPII0=39, -IPR_RSPI1_SPRI1=42,IPR_RSPI1_SPTI1=42,IPR_RSPI1_SPII1=42, -IPR_RSPI2_SPRI2=45,IPR_RSPI2_SPTI2=45,IPR_RSPI2_SPII2=45, -IPR_CAN0_RXF0=48,IPR_CAN0_TXF0=48,IPR_CAN0_RXM0=48,IPR_CAN0_TXM0=48, -IPR_CAN1_RXF1=52,IPR_CAN1_TXF1=52,IPR_CAN1_RXM1=52,IPR_CAN1_TXM1=52, -IPR_CAN2_RXF2=56,IPR_CAN2_TXF2=56,IPR_CAN2_RXM2=56,IPR_CAN2_TXM2=56, -IPR_RTC_COUNTUP=62, -IPR_ICU_IRQ0=64,IPR_ICU_IRQ1=65,IPR_ICU_IRQ2=66,IPR_ICU_IRQ3=67,IPR_ICU_IRQ4=68,IPR_ICU_IRQ5=69,IPR_ICU_IRQ6=70,IPR_ICU_IRQ7=71,IPR_ICU_IRQ8=72,IPR_ICU_IRQ9=73,IPR_ICU_IRQ10=74,IPR_ICU_IRQ11=75,IPR_ICU_IRQ12=76,IPR_ICU_IRQ13=77,IPR_ICU_IRQ14=78,IPR_ICU_IRQ15=79, -IPR_USB_USBR0=90,IPR_USB_USBR1=91, -IPR_RTC_ALARM=92,IPR_RTC_PRD=93, -IPR_AD0_ADI0=98, -IPR_S12AD0_S12ADI0=102, -IPR_ICU_GROUPE0=106,IPR_ICU_GROUPE1=107,IPR_ICU_GROUPE2=108,IPR_ICU_GROUPE3=109,IPR_ICU_GROUPE4=110,IPR_ICU_GROUPE5=111,IPR_ICU_GROUPE6=112,IPR_ICU_GROUPL0=114, -IPR_SCIX_SCIX0=122,IPR_SCIX_SCIX1=122,IPR_SCIX_SCIX2=122,IPR_SCIX_SCIX3=122, -IPR_TPU0_TGI0A=126,IPR_TPU0_TGI0B=126,IPR_TPU0_TGI0C=126,IPR_TPU0_TGI0D=126, -IPR_TPU1_TGI1A=130,IPR_TPU1_TGI1B=130, -IPR_TPU2_TGI2A=132,IPR_TPU2_TGI2B=132, -IPR_TPU3_TGI3A=134,IPR_TPU3_TGI3B=134,IPR_TPU3_TGI3C=134,IPR_TPU3_TGI3D=134, -IPR_TPU4_TGI4A=138,IPR_TPU4_TGI4B=138, -IPR_TPU5_TGI5A=140,IPR_TPU5_TGI5B=140, -IPR_TPU6_TGI6A=142,IPR_TPU6_TGI6B=142,IPR_TPU6_TGI6C=142,IPR_TPU6_TGI6D=142, -IPR_MTU0_TGIA0=142,IPR_MTU0_TGIB0=142,IPR_MTU0_TGIC0=142,IPR_MTU0_TGID0=142,IPR_MTU0_TGIE0=146,IPR_MTU0_TGIF0=146, -IPR_TPU7_TGI7A=148,IPR_TPU7_TGI7B=148, -IPR_MTU1_TGIA1=148,IPR_MTU1_TGIB1=148, -IPR_TPU8_TGI8A=150,IPR_TPU8_TGI8B=150, -IPR_MTU2_TGIA2=150,IPR_MTU2_TGIB2=150, -IPR_TPU9_TGI9A=152,IPR_TPU9_TGI9B=152,IPR_TPU9_TGI9C=152,IPR_TPU9_TGI9D=152, -IPR_MTU3_TGIA3=152,IPR_MTU3_TGIB3=152,IPR_MTU3_TGIC3=152,IPR_MTU3_TGID3=152, -IPR_TPU10_TGI10A=156,IPR_TPU10_TGI10B=156, -IPR_MTU4_TGIA4=156,IPR_MTU4_TGIB4=156,IPR_MTU4_TGIC4=156,IPR_MTU4_TGID4=156,IPR_MTU4_TCIV4=160, -IPR_MTU5_TGIU5=161,IPR_MTU5_TGIV5=161,IPR_MTU5_TGIW5=161, -IPR_TPU11_TGI11A=164,IPR_TPU11_TGI11B=164, -IPR_POE_OEI1=166,IPR_POE_OEI2=166, -IPR_TMR0_CMIA0=170,IPR_TMR0_CMIB0=170,IPR_TMR0_OVI0=170, -IPR_TMR1_CMIA1=173,IPR_TMR1_CMIB1=173,IPR_TMR1_OVI1=173, -IPR_TMR2_CMIA2=176,IPR_TMR2_CMIB2=176,IPR_TMR2_OVI2=176, -IPR_TMR3_CMIA3=179,IPR_TMR3_CMIB3=179,IPR_TMR3_OVI3=179, -IPR_RIIC0_EEI0=182,IPR_RIIC0_RXI0=183,IPR_RIIC0_TXI0=184,IPR_RIIC0_TEI0=185, -IPR_RIIC1_EEI1=186,IPR_RIIC1_RXI1=187,IPR_RIIC1_TXI1=188,IPR_RIIC1_TEI1=189, -IPR_RIIC2_EEI2=190,IPR_RIIC2_RXI2=191,IPR_RIIC2_TXI2=192,IPR_RIIC2_TEI2=193, -IPR_RIIC3_EEI3=194,IPR_RIIC3_RXI3=195,IPR_RIIC3_TXI3=196,IPR_RIIC3_TEI3=197, -IPR_DMAC_DMAC0I=198,IPR_DMAC_DMAC1I=199,IPR_DMAC_DMAC2I=200,IPR_DMAC_DMAC3I=201, -IPR_EXDMAC_EXDMAC0I=202,IPR_EXDMAC_EXDMAC1I=203, -IPR_SCI0_RXI0=214,IPR_SCI0_TXI0=214,IPR_SCI0_TEI0=214, -IPR_SCI1_RXI1=217,IPR_SCI1_TXI1=217,IPR_SCI1_TEI1=217, -IPR_SCI2_RXI2=220,IPR_SCI2_TXI2=220,IPR_SCI2_TEI2=220, -IPR_SCI3_RXI3=223,IPR_SCI3_TXI3=223,IPR_SCI3_TEI3=223, -IPR_SCI4_RXI4=226,IPR_SCI4_TXI4=226,IPR_SCI4_TEI4=226, -IPR_SCI5_RXI5=229,IPR_SCI5_TXI5=229,IPR_SCI5_TEI5=229, -IPR_SCI6_RXI6=232,IPR_SCI6_TXI6=232,IPR_SCI6_TEI6=232, -IPR_SCI7_RXI7=235,IPR_SCI7_TXI7=235,IPR_SCI7_TEI7=235, -IPR_SCI8_RXI8=238,IPR_SCI8_TXI8=238,IPR_SCI8_TEI8=238, -IPR_SCI9_RXI9=241,IPR_SCI9_TXI9=241,IPR_SCI9_TEI9=241, -IPR_SCI10_RXI10=244,IPR_SCI10_TXI10=244,IPR_SCI10_TEI10=244, -IPR_SCI11_RXI11=247,IPR_SCI11_TXI11=247,IPR_SCI11_TEI11=247, -IPR_SCI12_RXI12=250,IPR_SCI12_TXI12=250,IPR_SCI12_TEI12=250, -IPR_IEB_IEBINT=253, -IPR_BSC_=0, -IPR_CMT0_=4, -IPR_CMT1_=5, -IPR_CMT2_=6, -IPR_CMT3_=7, -IPR_ETHER_=32, -IPR_RSPI0_=39, -IPR_RSPI1_=42, -IPR_RSPI2_=45, -IPR_CAN0_=48, -IPR_CAN1_=52, -IPR_CAN2_=56, -IPR_AD0_=98, -IPR_S12AD0_=102, -IPR_SCIX_=122, -IPR_SCIX_SCI=122, -IPR_TPU0_=126, -IPR_TPU0_TGI=126, -IPR_TPU1_=130, -IPR_TPU1_TGI=130, -IPR_TPU2_=132, -IPR_TPU2_TGI=132, -IPR_TPU3_=134, -IPR_TPU3_TGI=134, -IPR_TPU4_=138, -IPR_TPU4_TGI=138, -IPR_TPU5_=140, -IPR_TPU5_TGI=140, -IPR_MTU5_=161, -IPR_MTU5_TGI=161, -IPR_TPU11_=164, -IPR_TPU11_TGI=164, -IPR_POE_=166, -IPR_POE_OEI=166, -IPR_TMR0_=170, -IPR_TMR1_=173, -IPR_TMR2_=176, -IPR_TMR3_=179, -IPR_SCI0_=214, -IPR_SCI1_=217, -IPR_SCI2_=220, -IPR_SCI3_=223, -IPR_SCI4_=226, -IPR_SCI5_=229, -IPR_SCI6_=232, -IPR_SCI7_=235, -IPR_SCI8_=238, -IPR_SCI9_=241, -IPR_SCI10_=244, -IPR_SCI11_=247, -IPR_SCI12_=250, -IPR_IEB_=253 -}; - -enum enum_grp { -GRP_CAN0_ERS0=0,GRP_CAN1_ERS1=0,GRP_CAN2_ERS2=0, -GRP_MTU0_TCIV0=1,GRP_MTU1_TCIV1=1,GRP_MTU1_TCIU1=1, -GRP_MTU2_TCIV2=2,GRP_MTU2_TCIU2=2,GRP_MTU3_TCIV3=2, -GRP_TPU0_TCI0V=3,GRP_TPU1_TCI1V=3,GRP_TPU1_TCI1U=3,GRP_TPU5_TCI5V=3,GRP_TPU5_TCI5U=3, -GRP_TPU2_TCI2V=4,GRP_TPU2_TCI2U=4,GRP_TPU3_TCI3V=4,GRP_TPU4_TCI4V=4,GRP_TPU4_TCI4U=4, -GRP_TPU6_TCI6V=5,GRP_TPU7_TCI7V=5,GRP_TPU7_TCI7U=5,GRP_TPU11_TCI11V=5,GRP_TPU11_TCI11U=5, -GRP_TPU8_TCI8V=6,GRP_TPU8_TCI8U=6,GRP_TPU9_TCI9V=6,GRP_TPU10_TCI10V=6,GRP_TPU10_TCI10U=6, -GRP_SCI0_ERI0=12,GRP_SCI1_ERI1=12,GRP_SCI2_ERI2=12,GRP_SCI3_ERI3=12,GRP_SCI4_ERI4=12,GRP_SCI5_ERI5=12,GRP_SCI6_ERI6=12, -GRP_SCI7_ERI7=12,GRP_SCI8_ERI8=12,GRP_SCI9_ERI9=12,GRP_SCI10_ERI10=12,GRP_SCI11_ERI11=12,GRP_SCI12_ERI12=12, -GRP_RSPI0_SPEI0=12,GRP_RSPI1_SPEI1=12,GRP_RSPI2_SPEI2=12 -}; - -enum enum_gen { -GEN_CAN0_ERS0=0,GEN_CAN1_ERS1=0,GEN_CAN2_ERS2=0, -GEN_MTU0_TCIV0=1,GEN_MTU1_TCIV1=1,GEN_MTU1_TCIU1=1, -GEN_MTU2_TCIV2=2,GEN_MTU2_TCIU2=2,GEN_MTU3_TCIV3=2, -GEN_TPU0_TCI0V=3,GEN_TPU1_TCI1V=3,GEN_TPU1_TCI1U=3,GEN_TPU5_TCI5V=3,GEN_TPU5_TCI5U=3, -GEN_TPU2_TCI2V=4,GEN_TPU2_TCI2U=4,GEN_TPU3_TCI3V=4,GEN_TPU4_TCI4V=4,GEN_TPU4_TCI4U=4, -GEN_TPU6_TCI6V=5,GEN_TPU7_TCI7V=5,GEN_TPU7_TCI7U=5,GEN_TPU11_TCI11V=5,GEN_TPU11_TCI11U=5, -GEN_TPU8_TCI8V=6,GEN_TPU8_TCI8U=6,GEN_TPU9_TCI9V=6,GEN_TPU10_TCI10V=6,GEN_TPU10_TCI10U=6, -GEN_SCI0_ERI0=12,GEN_SCI1_ERI1=12,GEN_SCI2_ERI2=12,GEN_SCI3_ERI3=12,GEN_SCI4_ERI4=12,GEN_SCI5_ERI5=12,GEN_SCI6_ERI6=12, -GEN_SCI7_ERI7=12,GEN_SCI8_ERI8=12,GEN_SCI9_ERI9=12,GEN_SCI10_ERI10=12,GEN_SCI11_ERI11=12,GEN_SCI12_ERI12=12, -GEN_RSPI0_SPEI0=12,GEN_RSPI1_SPEI1=12,GEN_RSPI2_SPEI2=12 -}; - -enum enum_gcr { -GCR_CAN0_ERS0=0,GCR_CAN1_ERS1=0,GCR_CAN2_ERS2=0, -GCR_MTU0_TCIV0=1,GCR_MTU1_TCIV1=1,GCR_MTU1_TCIU1=1, -GCR_MTU2_TCIV2=2,GCR_MTU2_TCIU2=2,GCR_MTU3_TCIV3=2, -GCR_TPU0_TCI0V=3,GCR_TPU1_TCI1V=3,GCR_TPU1_TCI1U=3,GCR_TPU5_TCI5V=3,GCR_TPU5_TCI5U=3, -GCR_TPU2_TCI2V=4,GCR_TPU2_TCI2U=4,GCR_TPU3_TCI3V=4,GCR_TPU4_TCI4V=4,GCR_TPU4_TCI4U=4, -GCR_TPU6_TCI6V=5,GCR_TPU7_TCI7V=5,GCR_TPU7_TCI7U=5,GCR_TPU11_TCI11V=5,GCR_TPU11_TCI11U=5, -GCR_TPU8_TCI8V=6,GCR_TPU8_TCI8U=6,GCR_TPU9_TCI9V=6,GCR_TPU10_TCI10V=6,GCR_TPU10_TCI10U=6, -GCR_SCI0_ERI0=12,GCR_SCI1_ERI1=12,GCR_SCI2_ERI2=12,GCR_SCI3_ERI3=12,GCR_SCI4_ERI4=12,GCR_SCI5_ERI5=12,GCR_SCI6_ERI6=12, -GCR_SCI7_ERI7=12,GCR_SCI8_ERI8=12,GCR_SCI9_ERI9=12,GCR_SCI10_ERI10=12,GCR_SCI11_ERI11=12,GCR_SCI12_ERI12=12, -GCR_RSPI0_SPEI0=12,GCR_RSPI1_SPEI1=12,GCR_RSPI2_SPEI2=12 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN1 -#define IEN_USB0_D1FIFO0 IEN2 -#define IEN_USB0_USBI0 IEN3 -#define IEN_USB1_D0FIFO1 IEN4 -#define IEN_USB1_D1FIFO1 IEN5 -#define IEN_USB1_USBI1 IEN6 -#define IEN_RSPI0_SPRI0 IEN7 -#define IEN_RSPI0_SPTI0 IEN0 -#define IEN_RSPI0_SPII0 IEN1 -#define IEN_RSPI1_SPRI1 IEN2 -#define IEN_RSPI1_SPTI1 IEN3 -#define IEN_RSPI1_SPII1 IEN4 -#define IEN_RSPI2_SPRI2 IEN5 -#define IEN_RSPI2_SPTI2 IEN6 -#define IEN_RSPI2_SPII2 IEN7 -#define IEN_CAN0_RXF0 IEN0 -#define IEN_CAN0_TXF0 IEN1 -#define IEN_CAN0_RXM0 IEN2 -#define IEN_CAN0_TXM0 IEN3 -#define IEN_CAN1_RXF1 IEN4 -#define IEN_CAN1_TXF1 IEN5 -#define IEN_CAN1_RXM1 IEN6 -#define IEN_CAN1_TXM1 IEN7 -#define IEN_CAN2_RXF2 IEN0 -#define IEN_CAN2_TXF2 IEN1 -#define IEN_CAN2_RXM2 IEN2 -#define IEN_CAN2_TXM2 IEN3 -#define IEN_RTC_COUNTUP IEN6 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALARM IEN4 -#define IEN_RTC_PRD IEN5 -#define IEN_AD0_ADI0 IEN2 -#define IEN_S12AD0_S12ADI0 IEN6 -#define IEN_ICU_GROUPE0 IEN2 -#define IEN_ICU_GROUPE1 IEN3 -#define IEN_ICU_GROUPE2 IEN4 -#define IEN_ICU_GROUPE3 IEN5 -#define IEN_ICU_GROUPE4 IEN6 -#define IEN_ICU_GROUPE5 IEN7 -#define IEN_ICU_GROUPE6 IEN0 -#define IEN_ICU_GROUPL0 IEN2 -#define IEN_SCIX_SCIX0 IEN2 -#define IEN_SCIX_SCIX1 IEN3 -#define IEN_SCIX_SCIX2 IEN4 -#define IEN_SCIX_SCIX3 IEN5 -#define IEN_TPU0_TGI0A IEN6 -#define IEN_TPU0_TGI0B IEN7 -#define IEN_TPU0_TGI0C IEN0 -#define IEN_TPU0_TGI0D IEN1 -#define IEN_TPU1_TGI1A IEN2 -#define IEN_TPU1_TGI1B IEN3 -#define IEN_TPU2_TGI2A IEN4 -#define IEN_TPU2_TGI2B IEN5 -#define IEN_TPU3_TGI3A IEN6 -#define IEN_TPU3_TGI3B IEN7 -#define IEN_TPU3_TGI3C IEN0 -#define IEN_TPU3_TGI3D IEN1 -#define IEN_TPU4_TGI4A IEN2 -#define IEN_TPU4_TGI4B IEN3 -#define IEN_TPU5_TGI5A IEN4 -#define IEN_TPU5_TGI5B IEN5 -#define IEN_TPU6_TGI6A IEN6 -#define IEN_TPU6_TGI6B IEN7 -#define IEN_TPU6_TGI6C IEN0 -#define IEN_TPU6_TGI6D IEN1 -#define IEN_MTU0_TGIA0 IEN6 -#define IEN_MTU0_TGIB0 IEN7 -#define IEN_MTU0_TGIC0 IEN0 -#define IEN_MTU0_TGID0 IEN1 -#define IEN_MTU0_TGIE0 IEN2 -#define IEN_MTU0_TGIF0 IEN3 -#define IEN_TPU7_TGI7A IEN4 -#define IEN_TPU7_TGI7B IEN5 -#define IEN_MTU1_TGIA1 IEN4 -#define IEN_MTU1_TGIB1 IEN5 -#define IEN_TPU8_TGI8A IEN6 -#define IEN_TPU8_TGI8B IEN7 -#define IEN_MTU2_TGIA2 IEN6 -#define IEN_MTU2_TGIB2 IEN7 -#define IEN_TPU9_TGI9A IEN0 -#define IEN_TPU9_TGI9B IEN1 -#define IEN_TPU9_TGI9C IEN2 -#define IEN_TPU9_TGI9D IEN3 -#define IEN_MTU3_TGIA3 IEN0 -#define IEN_MTU3_TGIB3 IEN1 -#define IEN_MTU3_TGIC3 IEN2 -#define IEN_MTU3_TGID3 IEN3 -#define IEN_TPU10_TGI10A IEN4 -#define IEN_TPU10_TGI10B IEN5 -#define IEN_MTU4_TGIA4 IEN4 -#define IEN_MTU4_TGIB4 IEN5 -#define IEN_MTU4_TGIC4 IEN6 -#define IEN_MTU4_TGID4 IEN7 -#define IEN_MTU4_TCIV4 IEN0 -#define IEN_MTU5_TGIU5 IEN1 -#define IEN_MTU5_TGIV5 IEN2 -#define IEN_MTU5_TGIW5 IEN3 -#define IEN_TPU11_TGI11A IEN4 -#define IEN_TPU11_TGI11B IEN5 -#define IEN_POE_OEI1 IEN6 -#define IEN_POE_OEI2 IEN7 -#define IEN_TMR0_CMIA0 IEN2 -#define IEN_TMR0_CMIB0 IEN3 -#define IEN_TMR0_OVI0 IEN4 -#define IEN_TMR1_CMIA1 IEN5 -#define IEN_TMR1_CMIB1 IEN6 -#define IEN_TMR1_OVI1 IEN7 -#define IEN_TMR2_CMIA2 IEN0 -#define IEN_TMR2_CMIB2 IEN1 -#define IEN_TMR2_OVI2 IEN2 -#define IEN_TMR3_CMIA3 IEN3 -#define IEN_TMR3_CMIB3 IEN4 -#define IEN_TMR3_OVI3 IEN5 -#define IEN_RIIC0_EEI0 IEN6 -#define IEN_RIIC0_RXI0 IEN7 -#define IEN_RIIC0_TXI0 IEN0 -#define IEN_RIIC0_TEI0 IEN1 -#define IEN_RIIC1_EEI1 IEN2 -#define IEN_RIIC1_RXI1 IEN3 -#define IEN_RIIC1_TXI1 IEN4 -#define IEN_RIIC1_TEI1 IEN5 -#define IEN_RIIC2_EEI2 IEN6 -#define IEN_RIIC2_RXI2 IEN7 -#define IEN_RIIC2_TXI2 IEN0 -#define IEN_RIIC2_TEI2 IEN1 -#define IEN_RIIC3_EEI3 IEN2 -#define IEN_RIIC3_RXI3 IEN3 -#define IEN_RIIC3_TXI3 IEN4 -#define IEN_RIIC3_TEI3 IEN5 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_RXI0 IEN6 -#define IEN_SCI0_TXI0 IEN7 -#define IEN_SCI0_TEI0 IEN0 -#define IEN_SCI1_RXI1 IEN1 -#define IEN_SCI1_TXI1 IEN2 -#define IEN_SCI1_TEI1 IEN3 -#define IEN_SCI2_RXI2 IEN4 -#define IEN_SCI2_TXI2 IEN5 -#define IEN_SCI2_TEI2 IEN6 -#define IEN_SCI3_RXI3 IEN7 -#define IEN_SCI3_TXI3 IEN0 -#define IEN_SCI3_TEI3 IEN1 -#define IEN_SCI4_RXI4 IEN2 -#define IEN_SCI4_TXI4 IEN3 -#define IEN_SCI4_TEI4 IEN4 -#define IEN_SCI5_RXI5 IEN5 -#define IEN_SCI5_TXI5 IEN6 -#define IEN_SCI5_TEI5 IEN7 -#define IEN_SCI6_RXI6 IEN0 -#define IEN_SCI6_TXI6 IEN1 -#define IEN_SCI6_TEI6 IEN2 -#define IEN_SCI7_RXI7 IEN3 -#define IEN_SCI7_TXI7 IEN4 -#define IEN_SCI7_TEI7 IEN5 -#define IEN_SCI8_RXI8 IEN6 -#define IEN_SCI8_TXI8 IEN7 -#define IEN_SCI8_TEI8 IEN0 -#define IEN_SCI9_RXI9 IEN1 -#define IEN_SCI9_TXI9 IEN2 -#define IEN_SCI9_TEI9 IEN3 -#define IEN_SCI10_RXI10 IEN4 -#define IEN_SCI10_TXI10 IEN5 -#define IEN_SCI10_TEI10 IEN6 -#define IEN_SCI11_RXI11 IEN7 -#define IEN_SCI11_TXI11 IEN0 -#define IEN_SCI11_TEI11 IEN1 -#define IEN_SCI12_RXI12 IEN2 -#define IEN_SCI12_TXI12 IEN3 -#define IEN_SCI12_TEI12 IEN4 -#define IEN_IEB_IEBINT IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 33 -#define VECT_USB0_D1FIFO0 34 -#define VECT_USB0_USBI0 35 -#define VECT_USB1_D0FIFO1 36 -#define VECT_USB1_D1FIFO1 37 -#define VECT_USB1_USBI1 38 -#define VECT_RSPI0_SPRI0 39 -#define VECT_RSPI0_SPTI0 40 -#define VECT_RSPI0_SPII0 41 -#define VECT_RSPI1_SPRI1 42 -#define VECT_RSPI1_SPTI1 43 -#define VECT_RSPI1_SPII1 44 -#define VECT_RSPI2_SPRI2 45 -#define VECT_RSPI2_SPTI2 46 -#define VECT_RSPI2_SPII2 47 -#define VECT_CAN0_RXF0 48 -#define VECT_CAN0_TXF0 49 -#define VECT_CAN0_RXM0 50 -#define VECT_CAN0_TXM0 51 -#define VECT_CAN1_RXF1 52 -#define VECT_CAN1_TXF1 53 -#define VECT_CAN1_RXM1 54 -#define VECT_CAN1_TXM1 55 -#define VECT_CAN2_RXF2 56 -#define VECT_CAN2_TXF2 57 -#define VECT_CAN2_RXM2 58 -#define VECT_CAN2_TXM2 59 -#define VECT_RTC_COUNTUP 62 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALARM 92 -#define VECT_RTC_PRD 93 -#define VECT_AD0_ADI0 98 -#define VECT_S12AD0_S12ADI0 102 -#define VECT_ICU_GROUPE0 106 -#define VECT_ICU_GROUPE1 107 -#define VECT_ICU_GROUPE2 108 -#define VECT_ICU_GROUPE3 109 -#define VECT_ICU_GROUPE4 110 -#define VECT_ICU_GROUPE5 111 -#define VECT_ICU_GROUPE6 112 -#define VECT_ICU_GROUPL0 114 -#define VECT_SCIX_SCIX0 122 -#define VECT_SCIX_SCIX1 123 -#define VECT_SCIX_SCIX2 124 -#define VECT_SCIX_SCIX3 125 -#define VECT_TPU0_TGI0A 126 -#define VECT_TPU0_TGI0B 127 -#define VECT_TPU0_TGI0C 128 -#define VECT_TPU0_TGI0D 129 -#define VECT_TPU1_TGI1A 130 -#define VECT_TPU1_TGI1B 131 -#define VECT_TPU2_TGI2A 132 -#define VECT_TPU2_TGI2B 133 -#define VECT_TPU3_TGI3A 134 -#define VECT_TPU3_TGI3B 135 -#define VECT_TPU3_TGI3C 136 -#define VECT_TPU3_TGI3D 137 -#define VECT_TPU4_TGI4A 138 -#define VECT_TPU4_TGI4B 139 -#define VECT_TPU5_TGI5A 140 -#define VECT_TPU5_TGI5B 141 -#define VECT_TPU6_TGI6A 142 -#define VECT_TPU6_TGI6B 143 -#define VECT_TPU6_TGI6C 144 -#define VECT_TPU6_TGI6D 145 -#define VECT_MTU0_TGIA0 142 -#define VECT_MTU0_TGIB0 143 -#define VECT_MTU0_TGIC0 144 -#define VECT_MTU0_TGID0 145 -#define VECT_MTU0_TGIE0 146 -#define VECT_MTU0_TGIF0 147 -#define VECT_TPU7_TGI7A 148 -#define VECT_TPU7_TGI7B 149 -#define VECT_MTU1_TGIA1 148 -#define VECT_MTU1_TGIB1 149 -#define VECT_TPU8_TGI8A 150 -#define VECT_TPU8_TGI8B 151 -#define VECT_MTU2_TGIA2 150 -#define VECT_MTU2_TGIB2 151 -#define VECT_TPU9_TGI9A 152 -#define VECT_TPU9_TGI9B 153 -#define VECT_TPU9_TGI9C 154 -#define VECT_TPU9_TGI9D 155 -#define VECT_MTU3_TGIA3 152 -#define VECT_MTU3_TGIB3 153 -#define VECT_MTU3_TGIC3 154 -#define VECT_MTU3_TGID3 155 -#define VECT_TPU10_TGI10A 156 -#define VECT_TPU10_TGI10B 157 -#define VECT_MTU4_TGIA4 156 -#define VECT_MTU4_TGIB4 157 -#define VECT_MTU4_TGIC4 158 -#define VECT_MTU4_TGID4 159 -#define VECT_MTU4_TCIV4 160 -#define VECT_MTU5_TGIU5 161 -#define VECT_MTU5_TGIV5 162 -#define VECT_MTU5_TGIW5 163 -#define VECT_TPU11_TGI11A 164 -#define VECT_TPU11_TGI11B 165 -#define VECT_POE_OEI1 166 -#define VECT_POE_OEI2 167 -#define VECT_TMR0_CMIA0 170 -#define VECT_TMR0_CMIB0 171 -#define VECT_TMR0_OVI0 172 -#define VECT_TMR1_CMIA1 173 -#define VECT_TMR1_CMIB1 174 -#define VECT_TMR1_OVI1 175 -#define VECT_TMR2_CMIA2 176 -#define VECT_TMR2_CMIB2 177 -#define VECT_TMR2_OVI2 178 -#define VECT_TMR3_CMIA3 179 -#define VECT_TMR3_CMIB3 180 -#define VECT_TMR3_OVI3 181 -#define VECT_RIIC0_EEI0 182 -#define VECT_RIIC0_RXI0 183 -#define VECT_RIIC0_TXI0 184 -#define VECT_RIIC0_TEI0 185 -#define VECT_RIIC1_EEI1 186 -#define VECT_RIIC1_RXI1 187 -#define VECT_RIIC1_TXI1 188 -#define VECT_RIIC1_TEI1 189 -#define VECT_RIIC2_EEI2 190 -#define VECT_RIIC2_RXI2 191 -#define VECT_RIIC2_TXI2 192 -#define VECT_RIIC2_TEI2 193 -#define VECT_RIIC3_EEI3 194 -#define VECT_RIIC3_RXI3 195 -#define VECT_RIIC3_TXI3 196 -#define VECT_RIIC3_TEI3 197 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_RXI0 214 -#define VECT_SCI0_TXI0 215 -#define VECT_SCI0_TEI0 216 -#define VECT_SCI1_RXI1 217 -#define VECT_SCI1_TXI1 218 -#define VECT_SCI1_TEI1 219 -#define VECT_SCI2_RXI2 220 -#define VECT_SCI2_TXI2 221 -#define VECT_SCI2_TEI2 222 -#define VECT_SCI3_RXI3 223 -#define VECT_SCI3_TXI3 224 -#define VECT_SCI3_TEI3 225 -#define VECT_SCI4_RXI4 226 -#define VECT_SCI4_TXI4 227 -#define VECT_SCI4_TEI4 228 -#define VECT_SCI5_RXI5 229 -#define VECT_SCI5_TXI5 230 -#define VECT_SCI5_TEI5 231 -#define VECT_SCI6_RXI6 232 -#define VECT_SCI6_TXI6 233 -#define VECT_SCI6_TEI6 234 -#define VECT_SCI7_RXI7 235 -#define VECT_SCI7_TXI7 236 -#define VECT_SCI7_TEI7 237 -#define VECT_SCI8_RXI8 238 -#define VECT_SCI8_TXI8 239 -#define VECT_SCI8_TEI8 240 -#define VECT_SCI9_RXI9 241 -#define VECT_SCI9_TXI9 242 -#define VECT_SCI9_TEI9 243 -#define VECT_SCI10_RXI10 244 -#define VECT_SCI10_TXI10 245 -#define VECT_SCI10_TEI10 246 -#define VECT_SCI11_RXI11 247 -#define VECT_SCI11_TXI11 248 -#define VECT_SCI11_TEI11 249 -#define VECT_SCI12_RXI12 250 -#define VECT_SCI12_TXI12 251 -#define VECT_SCI12_TEI12 252 -#define VECT_IEB_IEBINT 253 - -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_TPU0 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU1 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU2 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU3 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU4 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU5 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU6 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU7 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU8 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU9 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU10 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU11 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTU SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SMCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_SMCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_TEMPS SYSTEM.MSTPCRB.BIT.MSTPB8 -#define MSTP_SCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_SMCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_CAN2 SYSTEM.MSTPCRB.BIT.MSTPB2 -#define MSTP_CAN1 SYSTEM.MSTPCRB.BIT.MSTPB1 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_SCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SMCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SMCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SMCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_SMCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_RSPI2 SYSTEM.MSTPCRC.BIT.MSTPC22 -#define MSTP_LVD SYSTEM.MSTPCRC.BIT.MSTPC20 -#define MSTP_IEB SYSTEM.MSTPCRC.BIT.MSTPC18 -#define MSTP_RIIC2 SYSTEM.MSTPCRC.BIT.MSTPC17 -#define MSTP_RIIC3 SYSTEM.MSTPCRC.BIT.MSTPC16 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define IS_CAN0_ERS0 IS0 -#define IS_CAN1_ERS1 IS1 -#define IS_CAN2_ERS2 IS2 -#define IS_MTU0_TCIV0 IS0 -#define IS_MTU1_TCIV1 IS1 -#define IS_MTU1_TCIU1 IS2 -#define IS_MTU2_TCIV2 IS0 -#define IS_MTU2_TCIU2 IS1 -#define IS_MTU3_TCIV3 IS2 -#define IS_TPU0_TCI0V IS0 -#define IS_TPU1_TCI1V IS1 -#define IS_TPU1_TCI1U IS2 -#define IS_TPU5_TCI5V IS3 -#define IS_TPU5_TCI5U IS4 -#define IS_TPU2_TCI2V IS0 -#define IS_TPU2_TCI2U IS1 -#define IS_TPU3_TCI3V IS2 -#define IS_TPU4_TCI4V IS3 -#define IS_TPU4_TCI4U IS4 -#define IS_TPU6_TCI6V IS0 -#define IS_TPU7_TCI7V IS1 -#define IS_TPU7_TCI7U IS2 -#define IS_TPU11_TCI11V IS3 -#define IS_TPU11_TCI11U IS4 -#define IS_TPU8_TCI8V IS0 -#define IS_TPU8_TCI8U IS1 -#define IS_TPU9_TCI9V IS2 -#define IS_TPU10_TCI10V IS3 -#define IS_TPU10_TCI10U IS4 -#define IS_SCI0_ERI0 IS0 -#define IS_SCI1_ERI1 IS1 -#define IS_SCI2_ERI2 IS2 -#define IS_SCI3_ERI3 IS3 -#define IS_SCI4_ERI4 IS4 -#define IS_SCI5_ERI5 IS5 -#define IS_SCI6_ERI6 IS6 -#define IS_SCI7_ERI7 IS7 -#define IS_SCI8_ERI8 IS8 -#define IS_SCI9_ERI9 IS9 -#define IS_SCI10_ERI10 IS10 -#define IS_SCI11_ERI11 IS11 -#define IS_SCI12_ERI12 IS12 -#define IS_RSPI0_SPEI0 IS13 -#define IS_RSPI1_SPEI1 IS14 -#define IS_RSPI2_SPEI2 IS15 - -#define EN_CAN0_ERS0 EN0 -#define EN_CAN1_ERS1 EN1 -#define EN_CAN2_ERS2 EN2 -#define EN_MTU0_TCIV0 EN0 -#define EN_MTU1_TCIV1 EN1 -#define EN_MTU1_TCIU1 EN2 -#define EN_MTU2_TCIV2 EN0 -#define EN_MTU2_TCIU2 EN1 -#define EN_MTU3_TCIV3 EN2 -#define EN_TPU0_TCI0V EN0 -#define EN_TPU1_TCI1V EN1 -#define EN_TPU1_TCI1U EN2 -#define EN_TPU5_TCI5V EN3 -#define EN_TPU5_TCI5U EN4 -#define EN_TPU2_TCI2V EN0 -#define EN_TPU2_TCI2U EN1 -#define EN_TPU3_TCI3V EN2 -#define EN_TPU4_TCI4V EN3 -#define EN_TPU4_TCI4U EN4 -#define EN_TPU6_TCI6V EN0 -#define EN_TPU7_TCI7V EN1 -#define EN_TPU7_TCI7U EN2 -#define EN_TPU11_TCI11V EN3 -#define EN_TPU11_TCI11U EN4 -#define EN_TPU8_TCI8V EN0 -#define EN_TPU8_TCI8U EN1 -#define EN_TPU9_TCI9V EN2 -#define EN_TPU10_TCI10V EN3 -#define EN_TPU10_TCI10U EN4 -#define EN_SCI0_ERI0 EN0 -#define EN_SCI1_ERI1 EN1 -#define EN_SCI2_ERI2 EN2 -#define EN_SCI3_ERI3 EN3 -#define EN_SCI4_ERI4 EN4 -#define EN_SCI5_ERI5 EN5 -#define EN_SCI6_ERI6 EN6 -#define EN_SCI7_ERI7 EN7 -#define EN_SCI8_ERI8 EN8 -#define EN_SCI9_ERI9 EN9 -#define EN_SCI10_ERI10 EN10 -#define EN_SCI11_ERI11 EN11 -#define EN_SCI12_ERI12 EN12 -#define EN_RSPI0_SPEI0 EN13 -#define EN_RSPI1_SPEI1 EN14 -#define EN_RSPI2_SPEI2 EN15 - -#define CLR_CAN0_ERS0 CLR0 -#define CLR_CAN1_ERS1 CLR1 -#define CLR_CAN2_ERS2 CLR2 -#define CLR_MTU0_TCIV0 CLR0 -#define CLR_MTU1_TCIV1 CLR1 -#define CLR_MTU1_TCIU1 CLR2 -#define CLR_MTU2_TCIV2 CLR0 -#define CLR_MTU2_TCIU2 CLR1 -#define CLR_MTU3_TCIV3 CLR2 -#define CLR_TPU0_TCI0V CLR0 -#define CLR_TPU1_TCI1V CLR1 -#define CLR_TPU1_TCI1U CLR2 -#define CLR_TPU5_TCI5V CLR3 -#define CLR_TPU5_TCI5U CLR4 -#define CLR_TPU2_TCI2V CLR0 -#define CLR_TPU2_TCI2U CLR1 -#define CLR_TPU3_TCI3V CLR2 -#define CLR_TPU4_TCI4V CLR3 -#define CLR_TPU4_TCI4U CLR4 -#define CLR_TPU6_TCI6V CLR0 -#define CLR_TPU7_TCI7V CLR1 -#define CLR_TPU7_TCI7U CLR2 -#define CLR_TPU11_TCI11V CLR3 -#define CLR_TPU11_TCI11U CLR4 -#define CLR_TPU8_TCI8V CLR0 -#define CLR_TPU8_TCI8U CLR1 -#define CLR_TPU9_TCI9V CLR2 -#define CLR_TPU10_TCI10V CLR3 -#define CLR_TPU10_TCI10U CLR4 -#define CLR_SCI0_ERI0 CLR0 -#define CLR_SCI1_ERI1 CLR1 -#define CLR_SCI2_ERI2 CLR2 -#define CLR_SCI3_ERI3 CLR3 -#define CLR_SCI4_ERI4 CLR4 -#define CLR_SCI5_ERI5 CLR5 -#define CLR_SCI6_ERI6 CLR6 -#define CLR_SCI7_ERI7 CLR7 -#define CLR_SCI8_ERI8 CLR8 -#define CLR_SCI9_ERI9 CLR9 -#define CLR_SCI10_ERI10 CLR10 -#define CLR_SCI11_ERI11 CLR11 -#define CLR_SCI12_ERI12 CLR12 -#define CLR_RSPI0_SPEI0 CLR13 -#define CLR_RSPI1_SPEI1 CLR14 -#define CLR_RSPI2_SPEI2 CLR15 - -#define CN_TPU6_TGI6A CN0 -#define CN_TPU6_TGI6B CN0 -#define CN_TPU6_TGI6C CN0 -#define CN_TPU6_TGI6D CN0 -#define CN_MTU0_TGIA0 CN0 -#define CN_MTU0_TGIB0 CN0 -#define CN_MTU0_TGIC0 CN0 -#define CN_MTU0_TGID0 CN0 -#define CN_MTU0_TGIE0 CN0 -#define CN_MTU0_TGIF0 CN0 -#define CN_TPU7_TGI7A CN1 -#define CN_TPU7_TGI7B CN1 -#define CN_MTU1_TGIA1 CN1 -#define CN_MTU1_TGIB1 CN1 -#define CN_TPU8_TGI8A CN2 -#define CN_TPU8_TGI8B CN2 -#define CN_MTU2_TGIA2 CN2 -#define CN_MTU2_TGIB2 CN2 -#define CN_TPU9_TGI9A CN3 -#define CN_TPU9_TGI9B CN3 -#define CN_TPU9_TGI9C CN3 -#define CN_TPU9_TGI9D CN3 -#define CN_MTU3_TGIA3 CN3 -#define CN_MTU3_TGIB3 CN3 -#define CN_MTU3_TGIC3 CN3 -#define CN_MTU3_TGID3 CN3 -#define CN_TPU10_TGI10A CN4 -#define CN_TPU10_TGI10B CN4 -#define CN_MTU4_TGIA4 CN4 -#define CN_MTU4_TGIB4 CN4 -#define CN_MTU4_TGIC4 CN4 -#define CN_MTU4_TGID4 CN4 -#define CN_MTU4_TGIV4 CN4 -#define CN_TPU11_TGI11A CN5 -#define CN_TPU11_TGI11B CN5 -#define CN_MTU5_TGIU5 CN5 -#define CN_MTU5_TGIV5 CN5 -#define CN_MTU5_TGIW5 CN5 -#define CN_TPU6_ CN0 -#define CN_MTU0_ CN0 -#define CN_TPU7_ CN1 -#define CN_MTU1_ CN1 -#define CN_TPU8_ CN2 -#define CN_MTU2_ CN2 -#define CN_TPU9_ CN3 -#define CN_MTU3_ CN3 -#define CN_TPU10_ CN4 -#define CN_MTU4_ CN4 -#define CN_TPU11_ CN5 -#define CN_MTU5_ CN5 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define __IS( x ) ICU.GRP[ GRP ## x ].BIT.IS ## x -#define _IS( x ) __IS( x ) -#define IS( x , y ) _IS( _ ## x ## _ ## y ) -#define __EN( x ) ICU.GEN[ GEN ## x ].BIT.EN ## x -#define _EN( x ) __EN( x ) -#define EN( x , y ) _EN( _ ## x ## _ ## y ) -#define __CLR( x ) ICU.GCR[ GCR ## x ].BIT.CLR ## x -#define _CLR( x ) __CLR( x ) -#define CLR( x , y ) _CLR( _ ## x ## _ ## y ) -#define __CN( x ) ICU.SEL.BIT.CN ## x -#define _CN( x ) __CN( x ) -#define CN( x , y ) _CN( _ ## x ## _ ## y ) - -#define AD (*(volatile struct st_ad __evenaccess *)0x89800) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CAN1 (*(volatile struct st_can __evenaccess *)0x91200) -#define CAN2 (*(volatile struct st_can __evenaccess *)0x92200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C296) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IEB (*(volatile struct st_ieb __evenaccess *)0x8A800) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MPC (*(volatile struct st_mpc __evenaccess *)0x8C100) -#define MTU (*(volatile struct st_mtu __evenaccess *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88690) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88690) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88692) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88694) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PORTH (*(volatile struct st_porth __evenaccess *)0x8C0D1) -#define PORTJ (*(volatile struct st_portj __evenaccess *)0x8C012) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic0 __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic1 __evenaccess *)0x88320) -#define RIIC2 (*(volatile struct st_riic1 __evenaccess *)0x88340) -#define RIIC3 (*(volatile struct st_riic1 __evenaccess *)0x88360) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RSPI2 (*(volatile struct st_rspi __evenaccess *)0x883C0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci0 __evenaccess *)0x8A000) -#define SCI1 (*(volatile struct st_sci0 __evenaccess *)0x8A020) -#define SCI2 (*(volatile struct st_sci0 __evenaccess *)0x8A040) -#define SCI3 (*(volatile struct st_sci0 __evenaccess *)0x8A060) -#define SCI4 (*(volatile struct st_sci0 __evenaccess *)0x8A080) -#define SCI5 (*(volatile struct st_sci0 __evenaccess *)0x8A0A0) -#define SCI6 (*(volatile struct st_sci0 __evenaccess *)0x8A0C0) -#define SCI7 (*(volatile struct st_sci7 __evenaccess *)0x8A0E0) -#define SCI8 (*(volatile struct st_sci0 __evenaccess *)0x8A100) -#define SCI9 (*(volatile struct st_sci0 __evenaccess *)0x8A120) -#define SCI10 (*(volatile struct st_sci0 __evenaccess *)0x8A140) -#define SCI11 (*(volatile struct st_sci0 __evenaccess *)0x8A160) -#define SCI12 (*(volatile struct st_sci12 __evenaccess *)0x8B300) -#define SMCI0 (*(volatile struct st_smci0 __evenaccess *)0x8A000) -#define SMCI1 (*(volatile struct st_smci0 __evenaccess *)0x8A020) -#define SMCI2 (*(volatile struct st_smci0 __evenaccess *)0x8A040) -#define SMCI3 (*(volatile struct st_smci0 __evenaccess *)0x8A060) -#define SMCI4 (*(volatile struct st_smci0 __evenaccess *)0x8A080) -#define SMCI5 (*(volatile struct st_smci0 __evenaccess *)0x8A0A0) -#define SMCI6 (*(volatile struct st_smci0 __evenaccess *)0x8A0C0) -#define SMCI7 (*(volatile struct st_smci7 __evenaccess *)0x8A0E0) -#define SMCI8 (*(volatile struct st_smci0 __evenaccess *)0x8A100) -#define SMCI9 (*(volatile struct st_smci0 __evenaccess *)0x8A120) -#define SMCI10 (*(volatile struct st_smci0 __evenaccess *)0x8A140) -#define SMCI11 (*(volatile struct st_smci0 __evenaccess *)0x8A160) -#define SMCI12 (*(volatile struct st_smci0 __evenaccess *)0x8B300) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TEMPS (*(volatile struct st_temps __evenaccess *)0x8C500) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define TPU0 (*(volatile struct st_tpu0 __evenaccess *)0x88108) -#define TPU1 (*(volatile struct st_tpu1 __evenaccess *)0x88108) -#define TPU2 (*(volatile struct st_tpu2 __evenaccess *)0x8810A) -#define TPU3 (*(volatile struct st_tpu3 __evenaccess *)0x8810A) -#define TPU4 (*(volatile struct st_tpu4 __evenaccess *)0x8810C) -#define TPU5 (*(volatile struct st_tpu5 __evenaccess *)0x8810C) -#define TPU6 (*(volatile struct st_tpu0 __evenaccess *)0x88178) -#define TPU7 (*(volatile struct st_tpu1 __evenaccess *)0x88178) -#define TPU8 (*(volatile struct st_tpu2 __evenaccess *)0x8817A) -#define TPU9 (*(volatile struct st_tpu3 __evenaccess *)0x8817A) -#define TPU10 (*(volatile struct st_tpu4 __evenaccess *)0x8817C) -#define TPU11 (*(volatile struct st_tpu5 __evenaccess *)0x8817C) -#define TPUA (*(volatile struct st_tpua __evenaccess *)0x88100) -#define TPUB (*(volatile struct st_tpub __evenaccess *)0x88170) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb1 __evenaccess *)0xA0200) -#define WDT (*(volatile struct st_wdt __evenaccess *)0x88020) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain deleted file mode 100644 index d1f3cfc4d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain +++ /dev/null @@ -1,12063 +0,0 @@ -/************************************************************************ -* -* Device : RX/RX600/RX63N -* -* File Name : ioedfine.h -* -* Abstract : Definition of I/O Register. -* -* History : 0.50 (2011-03-28) [Hardware Manual Revision : 0.50] -* : 0.02 (2010-11-01) [Hardware Manual Revision : 0.01] -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright (C) 2010(2011) Renesas Electronics Corporation -* and Renesas Solutions Corp. -* -************************************************************************/ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX63N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(TPU0,TGI0A) = 0; expands to : */ -/* ICU.IR[126].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(TPU0,TGI0A) = 2; expands to : */ -/* IPR(TPU0,TGI ) = 2; // TGI0A,TGI0B,TGI0C,TGI0D share IPR level. */ -/* ICU.IPR[126].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,RXI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[214].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=142) */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=VECT(TPU0,TGI0A)) expands to : */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=126) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTU,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(TPU4) = 0; // TPU0,TPU1,TPU2,TPU3,TPU4,TPU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA13 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX63NIODEFINE_HEADER__ -#define __RX63NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :2; - unsigned char CH:3; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char EXOEN:1; - unsigned char EXSEL:2; - } BIT; - } ADCR2; - unsigned char ADSSTR; - char wk0[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[4]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short BPEB:2; - unsigned short BPFB:2; - unsigned short BPHB:2; - unsigned short BPGB:2; - unsigned short BPIB:2; - unsigned short BPRO:2; - unsigned short BPRA:2; - } BIT; - } BUSPRI; - char wk4[7408]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk11[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk12[1926]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk27[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk28[4]; - union { - unsigned short WORD; - struct { - unsigned short RCVENM7:1; - unsigned short RCVENM6:1; - unsigned short RCVENM5:1; - unsigned short RCVENM4:1; - unsigned short RCVENM3:1; - unsigned short RCVENM2:1; - unsigned short RCVENM1:1; - unsigned short RCVENM0:1; - unsigned short RCVEN7:1; - unsigned short RCVEN6:1; - unsigned short RCVEN5:1; - unsigned short RCVEN4:1; - unsigned short RCVEN3:1; - unsigned short RCVEN2:1; - unsigned short RCVEN1:1; - unsigned short RCVEN0:1; - } BIT; - } CSRECEN; - char wk29[894]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk30[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk32[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk33[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk34[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk35[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk36[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - unsigned short DLC; - unsigned char DATA[8]; - unsigned short TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MKIVLR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :7; - unsigned long CCLKS:1; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; - union { - unsigned char BYTE; - struct { - unsigned char DAADST:1; - } BIT; - } DAADSCR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - unsigned long DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - unsigned long TDLAR; - char wk3[4]; - unsigned long RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long ELB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - unsigned long RBWAR; - unsigned long RDFAR; - char wk14[4]; - unsigned long TBRAR; - unsigned long TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk0[7799147]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBW006:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :3; - unsigned short FENTRY3:1; - unsigned short FENTRY2:1; - unsigned short FENTRY1:1; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :4; - unsigned short BCADR:11; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[252]; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[254]; - char wk5[2]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR0; - char wk6[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR1; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR2; - char wk8[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN7:1; - unsigned char FLTEN6:1; - unsigned char FLTEN5:1; - unsigned char FLTEN4:1; - unsigned char FLTEN3:1; - unsigned char FLTEN2:1; - unsigned char FLTEN1:1; - unsigned char FLTEN0:1; - } BIT; - } IRQFLTE0; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN15:1; - unsigned char FLTEN14:1; - unsigned char FLTEN13:1; - unsigned char FLTEN12:1; - unsigned char FLTEN11:1; - unsigned char FLTEN10:1; - unsigned char FLTEN9:1; - unsigned char FLTEN8:1; - } BIT; - } IRQFLTE1; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL7:2; - unsigned short FCLKSEL6:2; - unsigned short FCLKSEL5:2; - unsigned short FCLKSEL4:2; - unsigned short FCLKSEL3:2; - unsigned short FCLKSEL2:2; - unsigned short FCLKSEL1:2; - unsigned short FCLKSEL0:2; - } BIT; - } IRQFLTC0; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL15:2; - unsigned short FCLKSEL14:2; - unsigned short FCLKSEL13:2; - unsigned short FCLKSEL12:2; - unsigned short FCLKSEL11:2; - unsigned short FCLKSEL10:2; - unsigned short FCLKSEL9:2; - unsigned short FCLKSEL8:2; - } BIT; - } IRQFLTC1; - char wk11[104]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2ST:1; - unsigned char LVD1ST:1; - unsigned char IWDTST:1; - unsigned char WDTST:1; - unsigned char OSTST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2EN:1; - unsigned char LVD1EN:1; - unsigned char IWDTEN:1; - unsigned char WDTEN:1; - unsigned char OSTEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2CLR:1; - unsigned char LVD1CLR:1; - unsigned char IWDTCLR:1; - unsigned char WDTCLR:1; - unsigned char OSTCLR:1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; - char wk12[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char NFLTEN:1; - } BIT; - } NMIFLTE; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char NFCLKSEL:2; - } BIT; - } NMIFLTC; - char wk14[19819]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long IS15:1; - unsigned long IS14:1; - unsigned long IS13:1; - unsigned long IS12:1; - unsigned long IS11:1; - unsigned long IS10:1; - unsigned long IS9:1; - unsigned long IS8:1; - unsigned long IS7:1; - unsigned long IS6:1; - unsigned long IS5:1; - unsigned long IS4:1; - unsigned long IS3:1; - unsigned long IS2:1; - unsigned long IS1:1; - unsigned long IS0:1; - } BIT; - } GRP[13]; - char wk15[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long EN15:1; - unsigned long EN14:1; - unsigned long EN13:1; - unsigned long EN12:1; - unsigned long EN11:1; - unsigned long EN10:1; - unsigned long EN9:1; - unsigned long EN8:1; - unsigned long EN7:1; - unsigned long EN6:1; - unsigned long EN5:1; - unsigned long EN4:1; - unsigned long EN3:1; - unsigned long EN2:1; - unsigned long EN1:1; - unsigned long EN0:1; - } BIT; - } GEN[13]; - char wk16[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long CLR15:1; - unsigned long CLR14:1; - unsigned long CLR13:1; - unsigned long CLR12:1; - unsigned long CLR11:1; - unsigned long CLR10:1; - unsigned long CLR9:1; - unsigned long CLR8:1; - unsigned long CLR7:1; - unsigned long CLR6:1; - unsigned long CLR5:1; - unsigned long CLR4:1; - unsigned long CLR3:1; - unsigned long CLR2:1; - unsigned long CLR1:1; - unsigned long CLR0:1; - } BIT; - } GCR[13]; - char wk17[12]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long CN5:1; - unsigned long CN4:1; - unsigned long CN3:1; - unsigned long CN2:1; - unsigned long CN1:1; - unsigned long CN0:1; - } BIT; - } SEL; -}; - -struct st_ieb { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char IOL:1; - unsigned char DEE:1; - unsigned char :1; - unsigned char RE:1; - } BIT; - } IECTR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMD:3; - } BIT; - } IECMR; - union { - unsigned char BYTE; - struct { - unsigned char SS:1; - unsigned char RN:3; - unsigned char CTL:4; - } BIT; - } IEMCR; - union { - unsigned char BYTE; - struct { - unsigned char IARL4:4; - unsigned char IMD:2; - unsigned char :1; - unsigned char STE:1; - } BIT; - } IEAR1; - union { - unsigned char BYTE; - struct { - unsigned char IARU8:8; - } BIT; - } IEAR2; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IESA1; - union { - unsigned char BYTE; - struct { - unsigned char ISAU8:8; - } BIT; - } IESA2; - union { - unsigned char BYTE; - struct { - unsigned char IBFL:8; - } BIT; - } IETBFL; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IEMA1; - union { - unsigned char BYTE; - struct { - unsigned char IMAU8:8; - } BIT; - } IEMA2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RCTL:4; - } BIT; - } IERCTL; - union { - unsigned char BYTE; - struct { - unsigned char RBFL:8; - } BIT; - } IERBFL; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char ILAL8:8; - } BIT; - } IELA1; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ILAU4:4; - } BIT; - } IELA2; - union { - unsigned char BYTE; - struct { - unsigned char CMX:1; - unsigned char MRQ:1; - unsigned char SRQ:1; - unsigned char SRE:1; - unsigned char LCK:1; - unsigned char :1; - unsigned char RSS:1; - unsigned char GG:1; - } BIT; - } IEFLG; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXS:1; - unsigned char TXF:1; - unsigned char :1; - unsigned char TXEAL:1; - unsigned char TXETTME:1; - unsigned char TXERO:1; - unsigned char TXEACK:1; - } BIT; - } IETSR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXSE:1; - unsigned char TXFE:1; - unsigned char :1; - unsigned char TXEALE:1; - unsigned char TXETTMEE:1; - unsigned char TXEROE:1; - unsigned char TXEACKE:1; - } BIT; - } IEIET; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char RXBSY:1; - unsigned char RXS:1; - unsigned char RXF:1; - unsigned char RXEDE:1; - unsigned char RXEOVE:1; - unsigned char RXERTME:1; - unsigned char RXEDLE:1; - unsigned char RXEPE:1; - } BIT; - } IERSR; - union { - unsigned char BYTE; - struct { - unsigned char RXBSYE:1; - unsigned char RXSE:1; - unsigned char RXFE:1; - unsigned char RXEDEE:1; - unsigned char RXEOVEE:1; - unsigned char RXERTMEE:1; - unsigned char RXEDLEE:1; - unsigned char RXEPEE:1; - } BIT; - } IEIER; - char wk3[2]; - union { - unsigned char BYTE; - struct { - unsigned char FLT:1; - unsigned char FCKS:2; - unsigned char CKS3:1; - unsigned char SRSTP:1; - unsigned char CKS:3; - } BIT; - } IECKSR; - char wk4[230]; - unsigned char IETB[33]; - char wk5[223]; - unsigned char IERB[33]; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } IWDTRCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char SLCSTP:1; - } BIT; - } IWDTCSTPR; -}; - -struct st_mpc { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PFCSE; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PFCSS0; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PFCSS1; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char A9E:1; - unsigned char A8E:1; - } BIT; - } PFAOE0; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PFAOE1; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char ADRLE:1; - } BIT; - } PFBCR0; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char ALEOE:1; - unsigned char WAITS:2; - } BIT; - } PFBCR1; - char wk1[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PHYMODE:1; - } BIT; - } PFENET; - char wk2[5]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB1; - char wk3[9]; - union { - unsigned char BYTE; - struct { - unsigned char B0WI:1; - unsigned char PFSWE:1; - } BIT; - } PWPR; - char wk4[32]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P00PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P01PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P02PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P03PFS; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P05PFS; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P07PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P10PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P11PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P12PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P13PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P14PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P15PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P16PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P17PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P20PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P21PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P22PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P23PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P24PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P25PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P26PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P27PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P30PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P31PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P32PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P33PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P34PFS; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P40PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P41PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P42PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P43PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P44PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P45PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P46PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P47PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P50PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P51PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P52PFS; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P54PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P55PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P56PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P57PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P60PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P61PFS; - char wk9[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P66PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P67PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P70PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P71PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P72PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P73PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P74PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P75PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P76PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P77PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P80PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P81PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P82PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P83PFS; - char wk10[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P86PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P87PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P90PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P91PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P92PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P93PFS; - char wk11[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF2PFS; - char wk12[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PF5PFS; - char wk13[21]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PJ3PFS; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[111]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk1[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[238]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk3[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[365]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk8[90]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; - char wk11[72]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char :1; - unsigned char NFWEN:1; - unsigned char NFVEN:1; - unsigned char NFUEN:1; - } BIT; - } NFCR; - char wk1[490]; - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk3[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk5[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - char wk0[4]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE2:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char P1CZEA:1; - unsigned char P2CZEA:1; - unsigned char P3CZEA:1; - } BIT; - } POECR2; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short OSTSTF:1; - unsigned short :2; - unsigned short OSTSTE:1; - } BIT; - } ICSR3; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[62]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[32]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[61]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[33]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[60]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - } BIT; - } DSCR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[34]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[59]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[35]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[58]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[36]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[57]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[37]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[56]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[38]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[55]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[39]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[54]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[40]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[53]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[41]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[52]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[42]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[51]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[43]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[50]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[44]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[49]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[45]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[48]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[46]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[47]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[47]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[46]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porth { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portj { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PMR; - char wk3[49]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[44]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic0 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_riic1 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSL3P:1; - unsigned char SSL2P:1; - unsigned char SSL1P:1; - unsigned char SSL0P:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - unsigned long SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAYW:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAYW:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char PES:4; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char HR24:1; - unsigned char AADJP:1; - unsigned char AADJE:1; - unsigned char RTCOE:1; - unsigned char ADJ30:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; - char wk15[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RTCEN:1; - } BIT; - } RCR3; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RCKSEL:1; - } BIT; - } RCR4; - char wk17[1]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RFC:1; - } BIT; - } RFRH; - union { - unsigned short WORD; - struct { - unsigned short RFC:16; - } BIT; - } RFRL; - union { - unsigned char BYTE; - struct { - unsigned char PMADJ:2; - unsigned char ADJ:6; - } BIT; - } RADJ; - char wk18[17]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR1; - char wk20[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR2; - char wk21[13]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP0; - char wk22[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP0; - char wk23[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP0; - char wk24[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP0; - char wk25[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP0; - char wk26[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP1; - char wk27[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP1; - char wk28[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP1; - char wk29[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP1; - char wk30[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP1; - char wk31[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP2; - char wk32[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP2; - char wk33[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP2; - char wk34[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP2; - char wk35[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS0:16; - } BIT; - } ADANS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ANS1:5; - } BIT; - } ADANS1; - union { - unsigned short WORD; - struct { - unsigned short ADS0:16; - } BIT; - } ADADS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ADS1:5; - } BIT; - } ADADS1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OCS:1; - unsigned short TSS:1; - unsigned short :6; - unsigned short OCSAD:1; - unsigned short TSSAD:1; - } BIT; - } ADEXICR; - char wk3[6]; - unsigned short ADTSDR; - unsigned short ADOCDR; - char wk4[2]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; - unsigned short ADDR8; - unsigned short ADDR9; - unsigned short ADDR10; - unsigned short ADDR11; - unsigned short ADDR12; - unsigned short ADDR13; - unsigned short ADDR14; - unsigned short ADDR15; - unsigned short ADDR16; - unsigned short ADDR17; - unsigned short ADDR18; - unsigned short ADDR19; - unsigned short ADDR20; - char wk5[38]; - union { - unsigned short WORD; - struct { - unsigned short SST2:8; - } BIT; - } ADSSTR23; -}; - -struct st_sci0 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci7 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci12 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; - char wk0[18]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ESME:1; - } BIT; - } ESMER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char BRME:1; - unsigned char RXDSF:1; - unsigned char SFSF:1; - } BIT; - } CR0; - union { - unsigned char BYTE; - struct { - unsigned char PIBS:3; - unsigned char PIBE:1; - unsigned char CF1DS:2; - unsigned char CF0RE:1; - unsigned char BFE:1; - } BIT; - } CR1; - union { - unsigned char BYTE; - struct { - unsigned char RTS:2; - unsigned char BCCS:2; - unsigned char :1; - unsigned char DFCS:3; - } BIT; - } CR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SDST:1; - } BIT; - } CR3; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SHARPS:1; - unsigned char :2; - unsigned char RXDXPS:1; - unsigned char TXDXPS:1; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDIE:1; - unsigned char BCDIE:1; - unsigned char PIBDIE:1; - unsigned char CF1MIE:1; - unsigned char CF0MIE:1; - unsigned char BFDIE:1; - } BIT; - } ICR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDF:1; - unsigned char BCDF:1; - unsigned char PIBDF:1; - unsigned char CF1MF:1; - unsigned char CF0MF:1; - unsigned char BFDF:1; - } BIT; - } STR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDCL:1; - unsigned char BCDCL:1; - unsigned char PIBDCL:1; - unsigned char CF1MCL:1; - unsigned char CF0MCL:1; - unsigned char BFDCL:1; - } BIT; - } STCR; - unsigned char CF0DR; - union { - unsigned char BYTE; - struct { - unsigned char CF0CE7:1; - unsigned char CF0CE6:1; - unsigned char CF0CE5:1; - unsigned char CF0CE4:1; - unsigned char CF0CE3:1; - unsigned char CF0CE2:1; - unsigned char CF0CE1:1; - unsigned char CF0CE0:1; - } BIT; - } CF0CR; - unsigned char CF0RR; - unsigned char PCF1DR; - unsigned char SCF1DR; - union { - unsigned char BYTE; - struct { - unsigned char CF1CE7:1; - unsigned char CF1CE6:1; - unsigned char CF1CE5:1; - unsigned char CF1CE4:1; - unsigned char CF1CE3:1; - unsigned char CF1CE2:1; - unsigned char CF1CE1:1; - unsigned char CF1CE0:1; - } BIT; - } CF1CR; - unsigned char CF1RR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCST:1; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TCSS:3; - unsigned char TWRC:1; - unsigned char :1; - unsigned char TOMS:2; - } BIT; - } TMR; - unsigned char TPRE; - unsigned char TCNT; -}; - -struct st_smci0 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_smci7 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short MD:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :10; - unsigned short UBTS:1; - unsigned short BOTS:1; - unsigned short :2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long MSTPA27:1; - unsigned long :2; - unsigned long MSTPA24:1; - unsigned long MSTPA23:1; - unsigned long :3; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long MSTPA13:1; - unsigned long MSTPA12:1; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long :3; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long MSTPB27:1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long MSTPB24:1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :6; - unsigned long MSTPB8:1; - unsigned long :3; - unsigned long MSTPB4:1; - unsigned long :1; - unsigned long MSTPB2:1; - unsigned long MSTPB1:1; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPC27:1; - unsigned long MSTPC26:1; - unsigned long MSTPC25:1; - unsigned long MSTPC24:1; - unsigned long :1; - unsigned long MSTPC22:1; - unsigned long :2; - unsigned long MSTPC19:1; - unsigned long MSTPC18:1; - unsigned long MSTPC17:1; - unsigned long MSTPC16:1; - unsigned long :14; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long FCK:4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long PCKA:4; - unsigned long PCKB:4; - } BIT; - } SCKCR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short UCK:4; - unsigned short IEBCK:4; - } BIT; - } SCKCR2; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short CKSEL:3; - } BIT; - } SCKCR3; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short STC:6; - unsigned short :6; - unsigned short PLIDIV:2; - } BIT; - } PLLCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PLLEN:1; - } BIT; - } PLLCR2; - char wk4[5]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOSTP:1; - } BIT; - } MOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SOSTP:1; - } BIT; - } SOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char LCSTP:1; - } BIT; - } LOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ILCSTP:1; - } BIT; - } ILOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HCSTP:1; - } BIT; - } HOCOCR; - char wk6[9]; - union { - unsigned char BYTE; - struct { - unsigned char OSTDE:1; - unsigned char :6; - unsigned char OSTDIE:1; - } BIT; - } OSTDCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char OSTDF:1; - } BIT; - } OSTDSR; - char wk7[94]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char OPCMTSF:1; - unsigned char :1; - unsigned char OPCM:3; - } BIT; - } OPCCR; - union { - unsigned char BYTE; - struct { - unsigned char RSTCKEN:1; - unsigned char :4; - unsigned char RSTCKSEL:3; - } BIT; - } RSTCKCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MSTS:5; - } BIT; - } MOSCWTCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SSTS:5; - } BIT; - } SOSCWTCR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSTS:5; - } BIT; - } PLLWTCR; - char wk9[25]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SWRF:1; - unsigned char WDTRF:1; - unsigned char IWTDRF:1; - } BIT; - } RSTSR2; - char wk10[1]; - unsigned short SWRR; - char wk11[28]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1IDTSEL:2; - } BIT; - } LVD1CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1MON:1; - unsigned char LVD1DET:1; - } BIT; - } LVD1SR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2IDTSEL:2; - } BIT; - } LVD2CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2MON:1; - unsigned char LVD2DET:1; - } BIT; - } LVD2SR; - char wk12[794]; - union { - unsigned short WORD; - struct { - unsigned short PRKEY:8; - unsigned short :4; - unsigned short PRC3:1; - unsigned short :1; - unsigned short PRC1:1; - unsigned short PRC0:1; - } BIT; - } PRCR; - char wk13[48768]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char :4; - unsigned char DEEPCUT:2; - } BIT; - } DPSBYCR; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7E:1; - unsigned char DIRQ6E:1; - unsigned char DIRQ5E:1; - unsigned char DIRQ4E:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15E:1; - unsigned char DIRQ14E:1; - unsigned char DIRQ13E:1; - unsigned char DIRQ12E:1; - unsigned char DIRQ11E:1; - unsigned char DIRQ10E:1; - unsigned char DIRQ9E:1; - unsigned char DIRQ8E:1; - } BIT; - } DPSIER1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIE:1; - unsigned char DIICCIE:1; - unsigned char DIICDIE:1; - unsigned char DNMIE:1; - unsigned char DRTCAIE:1; - unsigned char DRTCIIE:1; - unsigned char DLVD2IE:1; - unsigned char DLVD1IE:1; - } BIT; - } DPSIER2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIE:1; - } BIT; - } DPSIER3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7F:1; - unsigned char DIRQ6F:1; - unsigned char DIRQ5F:1; - unsigned char DIRQ4F:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15F:1; - unsigned char DIRQ14F:1; - unsigned char DIRQ13F:1; - unsigned char DIRQ12F:1; - unsigned char DIRQ11F:1; - unsigned char DIRQ10F:1; - unsigned char DIRQ9F:1; - unsigned char DIRQ8F:1; - } BIT; - } DPSIFR1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIF:1; - unsigned char DIICCIF:1; - unsigned char DIICDIF:1; - unsigned char DNMIF:1; - unsigned char DRTCAIF:1; - unsigned char DRTCIIF:1; - unsigned char DLVD2IF:1; - unsigned char DLVD1IF:1; - } BIT; - } DPSIFR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIF:1; - } BIT; - } DPSIFR3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7EG:1; - unsigned char DIRQ6EG:1; - unsigned char DIRQ5EG:1; - unsigned char DIRQ4EG:1; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15EG:1; - unsigned char DIRQ14EG:1; - unsigned char DIRQ13EG:1; - unsigned char DIRQ12EG:1; - unsigned char DIRQ11EG:1; - unsigned char DIRQ10EG:1; - unsigned char DIRQ9EG:1; - unsigned char DIRQ8EG:1; - } BIT; - } DPSIEGR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DIICCEG:1; - unsigned char DIICDEG:1; - unsigned char DNMIEG:1; - unsigned char :2; - unsigned char DLVD2EG:1; - unsigned char DLVD1EG:1; - } BIT; - } DPSIEGR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIEG:1; - } BIT; - } DPSIEGR3; - char wk15[2]; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :3; - unsigned char LVD2RF:1; - unsigned char LVD1RF:1; - unsigned char LVD0RF:1; - unsigned char PORF:1; - } BIT; - } RSTSR0; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CWSF:1; - } BIT; - } RSTSR1; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOFXIN:1; - } BIT; - } MOFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HOCOPCNT:1; - } BIT; - } HOCOPCR; - char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char LVD2E:1; - unsigned char LVD1E:1; - } BIT; - } LVCMPCR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2LVL:4; - unsigned char LVD1LVL:4; - } BIT; - } LVDLVLR; - char wk18[1]; - union { - unsigned char BYTE; - struct { - unsigned char LVD1RN:1; - unsigned char LVD1RI:1; - unsigned char LVD1FSAMP:2; - unsigned char :1; - unsigned char LVD1CMPE:1; - unsigned char LVD1DFDIS:1; - unsigned char LVD1RIE:1; - } BIT; - } LVD1CR0; - union { - unsigned char BYTE; - struct { - unsigned char LVD2RN:1; - unsigned char LVD2RI:1; - unsigned char LVD2FSAMP:2; - unsigned char :1; - unsigned char LVD2CMPE:1; - unsigned char LVD2DFDIS:1; - unsigned char LVD2RIE:1; - } BIT; - } LVD2CR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMNSEL:1; - } BIT; - } VBATTMNSELR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMON:1; - } BIT; - } VBATTMONR; - char wk20[1]; - unsigned char DPSBKR[32]; - char wk21[1472]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK1; - char wk22[15]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK2; -}; - -struct st_temps { - union { - unsigned char BYTE; - struct { - unsigned char TSEN:1; - unsigned char :2; - unsigned char TSOE:1; - } BIT; - } TSCR; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_tpu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[7]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[22]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[37]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu3 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[52]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu4 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[67]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[82]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST5:1; - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC5:1; - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; -}; - -struct st_tpub { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST11:1; - unsigned char CST10:1; - unsigned char CST9:1; - unsigned char CST8:1; - unsigned char CST7:1; - unsigned char CST6:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC11:1; - unsigned char SYNC10:1; - unsigned char SYNC9:1; - unsigned char SYNC8:1; - unsigned char SYNC7:1; - unsigned char SYNC6:1; - } BIT; - } TSYR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :5; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :5; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :5; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - unsigned short CFIFO; - char wk3[2]; - unsigned short D0FIFO; - char wk4[2]; - unsigned short D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_usb1 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - unsigned short CFIFO; - char wk3[2]; - unsigned short D0FIFO; - char wk4[2]; - unsigned short D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - char wk7[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - char wk9[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_wdt { - unsigned char WDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } WDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } WDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } WDTRCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_RSPI2_SPRI2,IR_RSPI2_SPTI2,IR_RSPI2_SPII2, -IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_CAN1_RXF1,IR_CAN1_TXF1,IR_CAN1_RXM1,IR_CAN1_TXM1, -IR_CAN2_RXF2,IR_CAN2_TXF2,IR_CAN2_RXM2,IR_CAN2_TXM2, -IR_RTC_COUNTUP=62, -IR_ICU_IRQ0=64,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALARM,IR_RTC_PRD, -IR_AD0_ADI0=98, -IR_S12AD0_S12ADI0=102, -IR_ICU_GROUPE0=106,IR_ICU_GROUPE1,IR_ICU_GROUPE2,IR_ICU_GROUPE3,IR_ICU_GROUPE4,IR_ICU_GROUPE5,IR_ICU_GROUPE6,IR_ICU_GROUPL0=114, -IR_SCIX_SCIX0=122,IR_SCIX_SCIX1,IR_SCIX_SCIX2,IR_SCIX_SCIX3, -IR_TPU0_TGI0A,IR_TPU0_TGI0B,IR_TPU0_TGI0C,IR_TPU0_TGI0D, -IR_TPU1_TGI1A,IR_TPU1_TGI1B, -IR_TPU2_TGI2A,IR_TPU2_TGI2B, -IR_TPU3_TGI3A,IR_TPU3_TGI3B,IR_TPU3_TGI3C,IR_TPU3_TGI3D, -IR_TPU4_TGI4A,IR_TPU4_TGI4B, -IR_TPU5_TGI5A,IR_TPU5_TGI5B, -IR_TPU6_TGI6A,IR_TPU6_TGI6B,IR_TPU6_TGI6C,IR_TPU6_TGI6D, -IR_MTU0_TGIA0=142,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_TPU7_TGI7A,IR_TPU7_TGI7B, -IR_MTU1_TGIA1=148,IR_MTU1_TGIB1, -IR_TPU8_TGI8A,IR_TPU8_TGI8B, -IR_MTU2_TGIA2=150,IR_MTU2_TGIB2, -IR_TPU9_TGI9A,IR_TPU9_TGI9B,IR_TPU9_TGI9C,IR_TPU9_TGI9D, -IR_MTU3_TGIA3=152,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3, -IR_TPU10_TGI10A,IR_TPU10_TGI10B, -IR_MTU4_TGIA4=156,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_TPU11_TGI11A,IR_TPU11_TGI11B, -IR_POE_OEI1,IR_POE_OEI2, -IR_TMR0_CMIA0=170,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_RIIC0_EEI0,IR_RIIC0_RXI0,IR_RIIC0_TXI0,IR_RIIC0_TEI0, -IR_RIIC1_EEI1,IR_RIIC1_RXI1,IR_RIIC1_TXI1,IR_RIIC1_TEI1, -IR_RIIC2_EEI2,IR_RIIC2_RXI2,IR_RIIC2_TXI2,IR_RIIC2_TEI2, -IR_RIIC3_EEI3,IR_RIIC3_RXI3,IR_RIIC3_TXI3,IR_RIIC3_TEI3, -IR_DMAC_DMAC0I,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_RXI0=214,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI4_RXI4,IR_SCI4_TXI4,IR_SCI4_TEI4, -IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_SCI7_RXI7,IR_SCI7_TXI7,IR_SCI7_TEI7, -IR_SCI8_RXI8,IR_SCI8_TXI8,IR_SCI8_TEI8, -IR_SCI9_RXI9,IR_SCI9_TXI9,IR_SCI9_TEI9, -IR_SCI10_RXI10,IR_SCI10_TXI10,IR_SCI10_TEI10, -IR_SCI11_RXI11,IR_SCI11_TXI11,IR_SCI11_TEI11, -IR_SCI12_RXI12,IR_SCI12_TXI12,IR_SCI12_TEI12, -IR_IEB_IEBINT -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=33,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=36,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=39,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=42,DTCE_RSPI1_SPTI1, -DTCE_RSPI2_SPRI2=45,DTCE_RSPI2_SPTI2, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_S12AD0_S12ADI0=102, -DTCE_TPU0_TGI0A=126,DTCE_TPU0_TGI0B,DTCE_TPU0_TGI0C,DTCE_TPU0_TGI0D, -DTCE_TPU1_TGI1A,DTCE_TPU1_TGI1B, -DTCE_TPU2_TGI2A,DTCE_TPU2_TGI2B, -DTCE_TPU3_TGI3A,DTCE_TPU3_TGI3B,DTCE_TPU3_TGI3C,DTCE_TPU3_TGI3D, -DTCE_TPU4_TGI4A,DTCE_TPU4_TGI4B, -DTCE_TPU5_TGI5A,DTCE_TPU5_TGI5B, -DTCE_TPU6_TGI6A,DTCE_TPU6_TGI6B,DTCE_TPU6_TGI6C,DTCE_TPU6_TGI6D, -DTCE_MTU0_TGIA0=142,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_TPU7_TGI7A=148,DTCE_TPU7_TGI7B, -DTCE_MTU1_TGIA1=148,DTCE_MTU1_TGIB1, -DTCE_TPU8_TGI8A,DTCE_TPU8_TGI8B, -DTCE_MTU2_TGIA2=150,DTCE_MTU2_TGIB2, -DTCE_TPU9_TGI9A,DTCE_TPU9_TGI9B,DTCE_TPU9_TGI9C,DTCE_TPU9_TGI9D, -DTCE_MTU3_TGIA3=152,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_TPU10_TGI10A,DTCE_TPU10_TGI10B, -DTCE_MTU4_TGIA4=156,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_TPU11_TGI11A,DTCE_TPU11_TGI11B, -DTCE_TMR0_CMIA0=170,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=173,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=176,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=179,DTCE_TMR3_CMIB3, -DTCE_RIIC0_RXI0=183,DTCE_RIIC0_TXI0, -DTCE_RIIC1_RXI1=187,DTCE_RIIC1_TXI1, -DTCE_RIIC2_RXI2=191,DTCE_RIIC2_TXI2, -DTCE_RIIC3_RXI3=195,DTCE_RIIC3_TXI3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=214,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=217,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=220,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=223,DTCE_SCI3_TXI3, -DTCE_SCI4_RXI4=226,DTCE_SCI4_TXI4, -DTCE_SCI5_RXI5=229,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=232,DTCE_SCI6_TXI6, -DTCE_SCI7_RXI7=235,DTCE_SCI7_TXI7, -DTCE_SCI8_RXI8=238,DTCE_SCI8_TXI8, -DTCE_SCI9_RXI9=241,DTCE_SCI9_TXI9, -DTCE_SCI10_RXI10=244,DTCE_SCI10_TXI10, -DTCE_SCI11_RXI11=247,DTCE_SCI11_TXI11, -DTCE_SCI12_RXI12=250,DTCE_SCI12_TXI12 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x04,IER_USB1_D1FIFO1=0x04,IER_USB1_USBI1=0x04, -IER_RSPI0_SPRI0=0x04,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPRI1=0x05,IER_RSPI1_SPTI1=0x05,IER_RSPI1_SPII1=0x05, -IER_RSPI2_SPRI2=0x05,IER_RSPI2_SPTI2=0x05,IER_RSPI2_SPII2=0x05, -IER_CAN0_RXF0=0x06,IER_CAN0_TXF0=0x06,IER_CAN0_RXM0=0x06,IER_CAN0_TXM0=0x06, -IER_CAN1_RXF1=0x06,IER_CAN1_TXF1=0x06,IER_CAN1_RXM1=0x06,IER_CAN1_TXM1=0x06, -IER_CAN2_RXF2=0x07,IER_CAN2_TXF2=0x07,IER_CAN2_RXM2=0x07,IER_CAN2_TXM2=0x07, -IER_RTC_COUNTUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALARM=0x0B,IER_RTC_PRD=0x0B, -IER_AD0_ADI0=0x0C, -IER_S12AD0_S12ADI0=0x0C, -IER_ICU_GROUPE0=0x0D,IER_ICU_GROUPE1=0x0D,IER_ICU_GROUPE2=0x0D,IER_ICU_GROUPE3=0x0D,IER_ICU_GROUPE4=0x0D,IER_ICU_GROUPE5=0x0D,IER_ICU_GROUPE6=0x0E,IER_ICU_GROUPL0=0x0E, -IER_SCIX_SCIX0=0x0F,IER_SCIX_SCIX1=0x0F,IER_SCIX_SCIX2=0x0F,IER_SCIX_SCIX3=0x0F, -IER_TPU0_TGI0A=0x0F,IER_TPU0_TGI0B=0x0F,IER_TPU0_TGI0C=0x10,IER_TPU0_TGI0D=0x10, -IER_TPU1_TGI1A=0x10,IER_TPU1_TGI1B=0x10, -IER_TPU2_TGI2A=0x10,IER_TPU2_TGI2B=0x10, -IER_TPU3_TGI3A=0x10,IER_TPU3_TGI3B=0x10,IER_TPU3_TGI3C=0x11,IER_TPU3_TGI3D=0x11, -IER_TPU4_TGI4A=0x11,IER_TPU4_TGI4B=0x11, -IER_TPU5_TGI5A=0x11,IER_TPU5_TGI5B=0x11, -IER_TPU6_TGI6A=0x11,IER_TPU6_TGI6B=0x11,IER_TPU6_TGI6C=0x12,IER_TPU6_TGI6D=0x12, -IER_MTU0_TGIA0=0x11,IER_MTU0_TGIB0=0x11,IER_MTU0_TGIC0=0x12,IER_MTU0_TGID0=0x12,IER_MTU0_TGIE0=0x12,IER_MTU0_TGIF0=0x12, -IER_TPU7_TGI7A=0x12,IER_TPU7_TGI7B=0x12, -IER_MTU1_TGIA1=0x12,IER_MTU1_TGIB1=0x12, -IER_TPU8_TGI8A=0x12,IER_TPU8_TGI8B=0x12, -IER_MTU2_TGIA2=0x12,IER_MTU2_TGIB2=0x12, -IER_TPU9_TGI9A=0x13,IER_TPU9_TGI9B=0x13,IER_TPU9_TGI9C=0x13,IER_TPU9_TGI9D=0x13, -IER_MTU3_TGIA3=0x13,IER_MTU3_TGIB3=0x13,IER_MTU3_TGIC3=0x13,IER_MTU3_TGID3=0x13, -IER_TPU10_TGI10A=0x13,IER_TPU10_TGI10B=0x13, -IER_MTU4_TGIA4=0x13,IER_MTU4_TGIB4=0x13,IER_MTU4_TGIC4=0x13,IER_MTU4_TGID4=0x13,IER_MTU4_TCIV4=0x14, -IER_MTU5_TGIU5=0x14,IER_MTU5_TGIV5=0x14,IER_MTU5_TGIW5=0x14, -IER_TPU11_TGI11A=0x14,IER_TPU11_TGI11B=0x14, -IER_POE_OEI1=0x14,IER_POE_OEI2=0x14, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x15, -IER_TMR1_CMIA1=0x15,IER_TMR1_CMIB1=0x15,IER_TMR1_OVI1=0x15, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x16,IER_TMR3_OVI3=0x16, -IER_RIIC0_EEI0=0x16,IER_RIIC0_RXI0=0x16,IER_RIIC0_TXI0=0x17,IER_RIIC0_TEI0=0x17, -IER_RIIC1_EEI1=0x17,IER_RIIC1_RXI1=0x17,IER_RIIC1_TXI1=0x17,IER_RIIC1_TEI1=0x17, -IER_RIIC2_EEI2=0x17,IER_RIIC2_RXI2=0x17,IER_RIIC2_TXI2=0x18,IER_RIIC2_TEI2=0x18, -IER_RIIC3_EEI3=0x18,IER_RIIC3_RXI3=0x18,IER_RIIC3_TXI3=0x18,IER_RIIC3_TEI3=0x18, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1A,IER_SCI0_TEI0=0x1B, -IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1B,IER_SCI2_TEI2=0x1B, -IER_SCI3_RXI3=0x1B,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI4_RXI4=0x1C,IER_SCI4_TXI4=0x1C,IER_SCI4_TEI4=0x1C, -IER_SCI5_RXI5=0x1C,IER_SCI5_TXI5=0x1C,IER_SCI5_TEI5=0x1C, -IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1D,IER_SCI6_TEI6=0x1D, -IER_SCI7_RXI7=0x1D,IER_SCI7_TXI7=0x1D,IER_SCI7_TEI7=0x1D, -IER_SCI8_RXI8=0x1D,IER_SCI8_TXI8=0x1D,IER_SCI8_TEI8=0x1E, -IER_SCI9_RXI9=0x1E,IER_SCI9_TXI9=0x1E,IER_SCI9_TEI9=0x1E, -IER_SCI10_RXI10=0x1E,IER_SCI10_TXI10=0x1E,IER_SCI10_TEI10=0x1E, -IER_SCI11_RXI11=0x1E,IER_SCI11_TXI11=0x1F,IER_SCI11_TEI11=0x1F, -IER_SCI12_RXI12=0x1F,IER_SCI12_TXI12=0x1F,IER_SCI12_TEI12=0x1F, -IER_IEB_IEBINT=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0, -IPR_FCU_FIFERR=1,IPR_FCU_FRDYI=2, -IPR_ICU_SWINT=3, -IPR_CMT0_CMI0=4, -IPR_CMT1_CMI1=5, -IPR_CMT2_CMI2=6, -IPR_CMT3_CMI3=7, -IPR_ETHER_EINT=32, -IPR_USB0_D0FIFO0=33,IPR_USB0_D1FIFO0=34,IPR_USB0_USBI0=35, -IPR_USB1_D0FIFO1=36,IPR_USB1_D1FIFO1=37,IPR_USB1_USBI1=38, -IPR_RSPI0_SPRI0=39,IPR_RSPI0_SPTI0=39,IPR_RSPI0_SPII0=39, -IPR_RSPI1_SPRI1=42,IPR_RSPI1_SPTI1=42,IPR_RSPI1_SPII1=42, -IPR_RSPI2_SPRI2=45,IPR_RSPI2_SPTI2=45,IPR_RSPI2_SPII2=45, -IPR_CAN0_RXF0=48,IPR_CAN0_TXF0=48,IPR_CAN0_RXM0=48,IPR_CAN0_TXM0=48, -IPR_CAN1_RXF1=52,IPR_CAN1_TXF1=52,IPR_CAN1_RXM1=52,IPR_CAN1_TXM1=52, -IPR_CAN2_RXF2=56,IPR_CAN2_TXF2=56,IPR_CAN2_RXM2=56,IPR_CAN2_TXM2=56, -IPR_RTC_COUNTUP=62, -IPR_ICU_IRQ0=64,IPR_ICU_IRQ1=65,IPR_ICU_IRQ2=66,IPR_ICU_IRQ3=67,IPR_ICU_IRQ4=68,IPR_ICU_IRQ5=69,IPR_ICU_IRQ6=70,IPR_ICU_IRQ7=71,IPR_ICU_IRQ8=72,IPR_ICU_IRQ9=73,IPR_ICU_IRQ10=74,IPR_ICU_IRQ11=75,IPR_ICU_IRQ12=76,IPR_ICU_IRQ13=77,IPR_ICU_IRQ14=78,IPR_ICU_IRQ15=79, -IPR_USB_USBR0=90,IPR_USB_USBR1=91, -IPR_RTC_ALARM=92,IPR_RTC_PRD=93, -IPR_AD0_ADI0=98, -IPR_S12AD0_S12ADI0=102, -IPR_ICU_GROUPE0=106,IPR_ICU_GROUPE1=107,IPR_ICU_GROUPE2=108,IPR_ICU_GROUPE3=109,IPR_ICU_GROUPE4=110,IPR_ICU_GROUPE5=111,IPR_ICU_GROUPE6=112,IPR_ICU_GROUPL0=114, -IPR_SCIX_SCIX0=122,IPR_SCIX_SCIX1=122,IPR_SCIX_SCIX2=122,IPR_SCIX_SCIX3=122, -IPR_TPU0_TGI0A=126,IPR_TPU0_TGI0B=126,IPR_TPU0_TGI0C=126,IPR_TPU0_TGI0D=126, -IPR_TPU1_TGI1A=130,IPR_TPU1_TGI1B=130, -IPR_TPU2_TGI2A=132,IPR_TPU2_TGI2B=132, -IPR_TPU3_TGI3A=134,IPR_TPU3_TGI3B=134,IPR_TPU3_TGI3C=134,IPR_TPU3_TGI3D=134, -IPR_TPU4_TGI4A=138,IPR_TPU4_TGI4B=138, -IPR_TPU5_TGI5A=140,IPR_TPU5_TGI5B=140, -IPR_TPU6_TGI6A=142,IPR_TPU6_TGI6B=142,IPR_TPU6_TGI6C=142,IPR_TPU6_TGI6D=142, -IPR_MTU0_TGIA0=142,IPR_MTU0_TGIB0=142,IPR_MTU0_TGIC0=142,IPR_MTU0_TGID0=142,IPR_MTU0_TGIE0=146,IPR_MTU0_TGIF0=146, -IPR_TPU7_TGI7A=148,IPR_TPU7_TGI7B=148, -IPR_MTU1_TGIA1=148,IPR_MTU1_TGIB1=148, -IPR_TPU8_TGI8A=150,IPR_TPU8_TGI8B=150, -IPR_MTU2_TGIA2=150,IPR_MTU2_TGIB2=150, -IPR_TPU9_TGI9A=152,IPR_TPU9_TGI9B=152,IPR_TPU9_TGI9C=152,IPR_TPU9_TGI9D=152, -IPR_MTU3_TGIA3=152,IPR_MTU3_TGIB3=152,IPR_MTU3_TGIC3=152,IPR_MTU3_TGID3=152, -IPR_TPU10_TGI10A=156,IPR_TPU10_TGI10B=156, -IPR_MTU4_TGIA4=156,IPR_MTU4_TGIB4=156,IPR_MTU4_TGIC4=156,IPR_MTU4_TGID4=156,IPR_MTU4_TCIV4=160, -IPR_MTU5_TGIU5=161,IPR_MTU5_TGIV5=161,IPR_MTU5_TGIW5=161, -IPR_TPU11_TGI11A=164,IPR_TPU11_TGI11B=164, -IPR_POE_OEI1=166,IPR_POE_OEI2=166, -IPR_TMR0_CMIA0=170,IPR_TMR0_CMIB0=170,IPR_TMR0_OVI0=170, -IPR_TMR1_CMIA1=173,IPR_TMR1_CMIB1=173,IPR_TMR1_OVI1=173, -IPR_TMR2_CMIA2=176,IPR_TMR2_CMIB2=176,IPR_TMR2_OVI2=176, -IPR_TMR3_CMIA3=179,IPR_TMR3_CMIB3=179,IPR_TMR3_OVI3=179, -IPR_RIIC0_EEI0=182,IPR_RIIC0_RXI0=183,IPR_RIIC0_TXI0=184,IPR_RIIC0_TEI0=185, -IPR_RIIC1_EEI1=186,IPR_RIIC1_RXI1=187,IPR_RIIC1_TXI1=188,IPR_RIIC1_TEI1=189, -IPR_RIIC2_EEI2=190,IPR_RIIC2_RXI2=191,IPR_RIIC2_TXI2=192,IPR_RIIC2_TEI2=193, -IPR_RIIC3_EEI3=194,IPR_RIIC3_RXI3=195,IPR_RIIC3_TXI3=196,IPR_RIIC3_TEI3=197, -IPR_DMAC_DMAC0I=198,IPR_DMAC_DMAC1I=199,IPR_DMAC_DMAC2I=200,IPR_DMAC_DMAC3I=201, -IPR_EXDMAC_EXDMAC0I=202,IPR_EXDMAC_EXDMAC1I=203, -IPR_SCI0_RXI0=214,IPR_SCI0_TXI0=214,IPR_SCI0_TEI0=214, -IPR_SCI1_RXI1=217,IPR_SCI1_TXI1=217,IPR_SCI1_TEI1=217, -IPR_SCI2_RXI2=220,IPR_SCI2_TXI2=220,IPR_SCI2_TEI2=220, -IPR_SCI3_RXI3=223,IPR_SCI3_TXI3=223,IPR_SCI3_TEI3=223, -IPR_SCI4_RXI4=226,IPR_SCI4_TXI4=226,IPR_SCI4_TEI4=226, -IPR_SCI5_RXI5=229,IPR_SCI5_TXI5=229,IPR_SCI5_TEI5=229, -IPR_SCI6_RXI6=232,IPR_SCI6_TXI6=232,IPR_SCI6_TEI6=232, -IPR_SCI7_RXI7=235,IPR_SCI7_TXI7=235,IPR_SCI7_TEI7=235, -IPR_SCI8_RXI8=238,IPR_SCI8_TXI8=238,IPR_SCI8_TEI8=238, -IPR_SCI9_RXI9=241,IPR_SCI9_TXI9=241,IPR_SCI9_TEI9=241, -IPR_SCI10_RXI10=244,IPR_SCI10_TXI10=244,IPR_SCI10_TEI10=244, -IPR_SCI11_RXI11=247,IPR_SCI11_TXI11=247,IPR_SCI11_TEI11=247, -IPR_SCI12_RXI12=250,IPR_SCI12_TXI12=250,IPR_SCI12_TEI12=250, -IPR_IEB_IEBINT=253, -IPR_BSC_=0, -IPR_CMT0_=4, -IPR_CMT1_=5, -IPR_CMT2_=6, -IPR_CMT3_=7, -IPR_ETHER_=32, -IPR_RSPI0_=39, -IPR_RSPI1_=42, -IPR_RSPI2_=45, -IPR_CAN0_=48, -IPR_CAN1_=52, -IPR_CAN2_=56, -IPR_AD0_=98, -IPR_S12AD0_=102, -IPR_SCIX_=122, -IPR_SCIX_SCI=122, -IPR_TPU0_=126, -IPR_TPU0_TGI=126, -IPR_TPU1_=130, -IPR_TPU1_TGI=130, -IPR_TPU2_=132, -IPR_TPU2_TGI=132, -IPR_TPU3_=134, -IPR_TPU3_TGI=134, -IPR_TPU4_=138, -IPR_TPU4_TGI=138, -IPR_TPU5_=140, -IPR_TPU5_TGI=140, -IPR_MTU5_=161, -IPR_MTU5_TGI=161, -IPR_TPU11_=164, -IPR_TPU11_TGI=164, -IPR_POE_=166, -IPR_POE_OEI=166, -IPR_TMR0_=170, -IPR_TMR1_=173, -IPR_TMR2_=176, -IPR_TMR3_=179, -IPR_SCI0_=214, -IPR_SCI1_=217, -IPR_SCI2_=220, -IPR_SCI3_=223, -IPR_SCI4_=226, -IPR_SCI5_=229, -IPR_SCI6_=232, -IPR_SCI7_=235, -IPR_SCI8_=238, -IPR_SCI9_=241, -IPR_SCI10_=244, -IPR_SCI11_=247, -IPR_SCI12_=250, -IPR_IEB_=253 -}; - -enum enum_grp { -GRP_CAN0_ERS0=0,GRP_CAN1_ERS1=0,GRP_CAN2_ERS2=0, -GRP_MTU0_TCIV0=1,GRP_MTU1_TCIV1=1,GRP_MTU1_TCIU1=1, -GRP_MTU2_TCIV2=2,GRP_MTU2_TCIU2=2,GRP_MTU3_TCIV3=2, -GRP_TPU0_TCI0V=3,GRP_TPU1_TCI1V=3,GRP_TPU1_TCI1U=3,GRP_TPU5_TCI5V=3,GRP_TPU5_TCI5U=3, -GRP_TPU2_TCI2V=4,GRP_TPU2_TCI2U=4,GRP_TPU3_TCI3V=4,GRP_TPU4_TCI4V=4,GRP_TPU4_TCI4U=4, -GRP_TPU6_TCI6V=5,GRP_TPU7_TCI7V=5,GRP_TPU7_TCI7U=5,GRP_TPU11_TCI11V=5,GRP_TPU11_TCI11U=5, -GRP_TPU8_TCI8V=6,GRP_TPU8_TCI8U=6,GRP_TPU9_TCI9V=6,GRP_TPU10_TCI10V=6,GRP_TPU10_TCI10U=6, -GRP_SCI0_ERI0=12,GRP_SCI1_ERI1=12,GRP_SCI2_ERI2=12,GRP_SCI3_ERI3=12,GRP_SCI4_ERI4=12,GRP_SCI5_ERI5=12,GRP_SCI6_ERI6=12, -GRP_SCI7_ERI7=12,GRP_SCI8_ERI8=12,GRP_SCI9_ERI9=12,GRP_SCI10_ERI10=12,GRP_SCI11_ERI11=12,GRP_SCI12_ERI12=12, -GRP_RSPI0_SPEI0=12,GRP_RSPI1_SPEI1=12,GRP_RSPI2_SPEI2=12 -}; - -enum enum_gen { -GEN_CAN0_ERS0=0,GEN_CAN1_ERS1=0,GEN_CAN2_ERS2=0, -GEN_MTU0_TCIV0=1,GEN_MTU1_TCIV1=1,GEN_MTU1_TCIU1=1, -GEN_MTU2_TCIV2=2,GEN_MTU2_TCIU2=2,GEN_MTU3_TCIV3=2, -GEN_TPU0_TCI0V=3,GEN_TPU1_TCI1V=3,GEN_TPU1_TCI1U=3,GEN_TPU5_TCI5V=3,GEN_TPU5_TCI5U=3, -GEN_TPU2_TCI2V=4,GEN_TPU2_TCI2U=4,GEN_TPU3_TCI3V=4,GEN_TPU4_TCI4V=4,GEN_TPU4_TCI4U=4, -GEN_TPU6_TCI6V=5,GEN_TPU7_TCI7V=5,GEN_TPU7_TCI7U=5,GEN_TPU11_TCI11V=5,GEN_TPU11_TCI11U=5, -GEN_TPU8_TCI8V=6,GEN_TPU8_TCI8U=6,GEN_TPU9_TCI9V=6,GEN_TPU10_TCI10V=6,GEN_TPU10_TCI10U=6, -GEN_SCI0_ERI0=12,GEN_SCI1_ERI1=12,GEN_SCI2_ERI2=12,GEN_SCI3_ERI3=12,GEN_SCI4_ERI4=12,GEN_SCI5_ERI5=12,GEN_SCI6_ERI6=12, -GEN_SCI7_ERI7=12,GEN_SCI8_ERI8=12,GEN_SCI9_ERI9=12,GEN_SCI10_ERI10=12,GEN_SCI11_ERI11=12,GEN_SCI12_ERI12=12, -GEN_RSPI0_SPEI0=12,GEN_RSPI1_SPEI1=12,GEN_RSPI2_SPEI2=12 -}; - -enum enum_gcr { -GCR_CAN0_ERS0=0,GCR_CAN1_ERS1=0,GCR_CAN2_ERS2=0, -GCR_MTU0_TCIV0=1,GCR_MTU1_TCIV1=1,GCR_MTU1_TCIU1=1, -GCR_MTU2_TCIV2=2,GCR_MTU2_TCIU2=2,GCR_MTU3_TCIV3=2, -GCR_TPU0_TCI0V=3,GCR_TPU1_TCI1V=3,GCR_TPU1_TCI1U=3,GCR_TPU5_TCI5V=3,GCR_TPU5_TCI5U=3, -GCR_TPU2_TCI2V=4,GCR_TPU2_TCI2U=4,GCR_TPU3_TCI3V=4,GCR_TPU4_TCI4V=4,GCR_TPU4_TCI4U=4, -GCR_TPU6_TCI6V=5,GCR_TPU7_TCI7V=5,GCR_TPU7_TCI7U=5,GCR_TPU11_TCI11V=5,GCR_TPU11_TCI11U=5, -GCR_TPU8_TCI8V=6,GCR_TPU8_TCI8U=6,GCR_TPU9_TCI9V=6,GCR_TPU10_TCI10V=6,GCR_TPU10_TCI10U=6, -GCR_SCI0_ERI0=12,GCR_SCI1_ERI1=12,GCR_SCI2_ERI2=12,GCR_SCI3_ERI3=12,GCR_SCI4_ERI4=12,GCR_SCI5_ERI5=12,GCR_SCI6_ERI6=12, -GCR_SCI7_ERI7=12,GCR_SCI8_ERI8=12,GCR_SCI9_ERI9=12,GCR_SCI10_ERI10=12,GCR_SCI11_ERI11=12,GCR_SCI12_ERI12=12, -GCR_RSPI0_SPEI0=12,GCR_RSPI1_SPEI1=12,GCR_RSPI2_SPEI2=12 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN1 -#define IEN_USB0_D1FIFO0 IEN2 -#define IEN_USB0_USBI0 IEN3 -#define IEN_USB1_D0FIFO1 IEN4 -#define IEN_USB1_D1FIFO1 IEN5 -#define IEN_USB1_USBI1 IEN6 -#define IEN_RSPI0_SPRI0 IEN7 -#define IEN_RSPI0_SPTI0 IEN0 -#define IEN_RSPI0_SPII0 IEN1 -#define IEN_RSPI1_SPRI1 IEN2 -#define IEN_RSPI1_SPTI1 IEN3 -#define IEN_RSPI1_SPII1 IEN4 -#define IEN_RSPI2_SPRI2 IEN5 -#define IEN_RSPI2_SPTI2 IEN6 -#define IEN_RSPI2_SPII2 IEN7 -#define IEN_CAN0_RXF0 IEN0 -#define IEN_CAN0_TXF0 IEN1 -#define IEN_CAN0_RXM0 IEN2 -#define IEN_CAN0_TXM0 IEN3 -#define IEN_CAN1_RXF1 IEN4 -#define IEN_CAN1_TXF1 IEN5 -#define IEN_CAN1_RXM1 IEN6 -#define IEN_CAN1_TXM1 IEN7 -#define IEN_CAN2_RXF2 IEN0 -#define IEN_CAN2_TXF2 IEN1 -#define IEN_CAN2_RXM2 IEN2 -#define IEN_CAN2_TXM2 IEN3 -#define IEN_RTC_COUNTUP IEN6 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALARM IEN4 -#define IEN_RTC_PRD IEN5 -#define IEN_AD0_ADI0 IEN2 -#define IEN_S12AD0_S12ADI0 IEN6 -#define IEN_ICU_GROUPE0 IEN2 -#define IEN_ICU_GROUPE1 IEN3 -#define IEN_ICU_GROUPE2 IEN4 -#define IEN_ICU_GROUPE3 IEN5 -#define IEN_ICU_GROUPE4 IEN6 -#define IEN_ICU_GROUPE5 IEN7 -#define IEN_ICU_GROUPE6 IEN0 -#define IEN_ICU_GROUPL0 IEN2 -#define IEN_SCIX_SCIX0 IEN2 -#define IEN_SCIX_SCIX1 IEN3 -#define IEN_SCIX_SCIX2 IEN4 -#define IEN_SCIX_SCIX3 IEN5 -#define IEN_TPU0_TGI0A IEN6 -#define IEN_TPU0_TGI0B IEN7 -#define IEN_TPU0_TGI0C IEN0 -#define IEN_TPU0_TGI0D IEN1 -#define IEN_TPU1_TGI1A IEN2 -#define IEN_TPU1_TGI1B IEN3 -#define IEN_TPU2_TGI2A IEN4 -#define IEN_TPU2_TGI2B IEN5 -#define IEN_TPU3_TGI3A IEN6 -#define IEN_TPU3_TGI3B IEN7 -#define IEN_TPU3_TGI3C IEN0 -#define IEN_TPU3_TGI3D IEN1 -#define IEN_TPU4_TGI4A IEN2 -#define IEN_TPU4_TGI4B IEN3 -#define IEN_TPU5_TGI5A IEN4 -#define IEN_TPU5_TGI5B IEN5 -#define IEN_TPU6_TGI6A IEN6 -#define IEN_TPU6_TGI6B IEN7 -#define IEN_TPU6_TGI6C IEN0 -#define IEN_TPU6_TGI6D IEN1 -#define IEN_MTU0_TGIA0 IEN6 -#define IEN_MTU0_TGIB0 IEN7 -#define IEN_MTU0_TGIC0 IEN0 -#define IEN_MTU0_TGID0 IEN1 -#define IEN_MTU0_TGIE0 IEN2 -#define IEN_MTU0_TGIF0 IEN3 -#define IEN_TPU7_TGI7A IEN4 -#define IEN_TPU7_TGI7B IEN5 -#define IEN_MTU1_TGIA1 IEN4 -#define IEN_MTU1_TGIB1 IEN5 -#define IEN_TPU8_TGI8A IEN6 -#define IEN_TPU8_TGI8B IEN7 -#define IEN_MTU2_TGIA2 IEN6 -#define IEN_MTU2_TGIB2 IEN7 -#define IEN_TPU9_TGI9A IEN0 -#define IEN_TPU9_TGI9B IEN1 -#define IEN_TPU9_TGI9C IEN2 -#define IEN_TPU9_TGI9D IEN3 -#define IEN_MTU3_TGIA3 IEN0 -#define IEN_MTU3_TGIB3 IEN1 -#define IEN_MTU3_TGIC3 IEN2 -#define IEN_MTU3_TGID3 IEN3 -#define IEN_TPU10_TGI10A IEN4 -#define IEN_TPU10_TGI10B IEN5 -#define IEN_MTU4_TGIA4 IEN4 -#define IEN_MTU4_TGIB4 IEN5 -#define IEN_MTU4_TGIC4 IEN6 -#define IEN_MTU4_TGID4 IEN7 -#define IEN_MTU4_TCIV4 IEN0 -#define IEN_MTU5_TGIU5 IEN1 -#define IEN_MTU5_TGIV5 IEN2 -#define IEN_MTU5_TGIW5 IEN3 -#define IEN_TPU11_TGI11A IEN4 -#define IEN_TPU11_TGI11B IEN5 -#define IEN_POE_OEI1 IEN6 -#define IEN_POE_OEI2 IEN7 -#define IEN_TMR0_CMIA0 IEN2 -#define IEN_TMR0_CMIB0 IEN3 -#define IEN_TMR0_OVI0 IEN4 -#define IEN_TMR1_CMIA1 IEN5 -#define IEN_TMR1_CMIB1 IEN6 -#define IEN_TMR1_OVI1 IEN7 -#define IEN_TMR2_CMIA2 IEN0 -#define IEN_TMR2_CMIB2 IEN1 -#define IEN_TMR2_OVI2 IEN2 -#define IEN_TMR3_CMIA3 IEN3 -#define IEN_TMR3_CMIB3 IEN4 -#define IEN_TMR3_OVI3 IEN5 -#define IEN_RIIC0_EEI0 IEN6 -#define IEN_RIIC0_RXI0 IEN7 -#define IEN_RIIC0_TXI0 IEN0 -#define IEN_RIIC0_TEI0 IEN1 -#define IEN_RIIC1_EEI1 IEN2 -#define IEN_RIIC1_RXI1 IEN3 -#define IEN_RIIC1_TXI1 IEN4 -#define IEN_RIIC1_TEI1 IEN5 -#define IEN_RIIC2_EEI2 IEN6 -#define IEN_RIIC2_RXI2 IEN7 -#define IEN_RIIC2_TXI2 IEN0 -#define IEN_RIIC2_TEI2 IEN1 -#define IEN_RIIC3_EEI3 IEN2 -#define IEN_RIIC3_RXI3 IEN3 -#define IEN_RIIC3_TXI3 IEN4 -#define IEN_RIIC3_TEI3 IEN5 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_RXI0 IEN6 -#define IEN_SCI0_TXI0 IEN7 -#define IEN_SCI0_TEI0 IEN0 -#define IEN_SCI1_RXI1 IEN1 -#define IEN_SCI1_TXI1 IEN2 -#define IEN_SCI1_TEI1 IEN3 -#define IEN_SCI2_RXI2 IEN4 -#define IEN_SCI2_TXI2 IEN5 -#define IEN_SCI2_TEI2 IEN6 -#define IEN_SCI3_RXI3 IEN7 -#define IEN_SCI3_TXI3 IEN0 -#define IEN_SCI3_TEI3 IEN1 -#define IEN_SCI4_RXI4 IEN2 -#define IEN_SCI4_TXI4 IEN3 -#define IEN_SCI4_TEI4 IEN4 -#define IEN_SCI5_RXI5 IEN5 -#define IEN_SCI5_TXI5 IEN6 -#define IEN_SCI5_TEI5 IEN7 -#define IEN_SCI6_RXI6 IEN0 -#define IEN_SCI6_TXI6 IEN1 -#define IEN_SCI6_TEI6 IEN2 -#define IEN_SCI7_RXI7 IEN3 -#define IEN_SCI7_TXI7 IEN4 -#define IEN_SCI7_TEI7 IEN5 -#define IEN_SCI8_RXI8 IEN6 -#define IEN_SCI8_TXI8 IEN7 -#define IEN_SCI8_TEI8 IEN0 -#define IEN_SCI9_RXI9 IEN1 -#define IEN_SCI9_TXI9 IEN2 -#define IEN_SCI9_TEI9 IEN3 -#define IEN_SCI10_RXI10 IEN4 -#define IEN_SCI10_TXI10 IEN5 -#define IEN_SCI10_TEI10 IEN6 -#define IEN_SCI11_RXI11 IEN7 -#define IEN_SCI11_TXI11 IEN0 -#define IEN_SCI11_TEI11 IEN1 -#define IEN_SCI12_RXI12 IEN2 -#define IEN_SCI12_TXI12 IEN3 -#define IEN_SCI12_TEI12 IEN4 -#define IEN_IEB_IEBINT IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 33 -#define VECT_USB0_D1FIFO0 34 -#define VECT_USB0_USBI0 35 -#define VECT_USB1_D0FIFO1 36 -#define VECT_USB1_D1FIFO1 37 -#define VECT_USB1_USBI1 38 -#define VECT_RSPI0_SPRI0 39 -#define VECT_RSPI0_SPTI0 40 -#define VECT_RSPI0_SPII0 41 -#define VECT_RSPI1_SPRI1 42 -#define VECT_RSPI1_SPTI1 43 -#define VECT_RSPI1_SPII1 44 -#define VECT_RSPI2_SPRI2 45 -#define VECT_RSPI2_SPTI2 46 -#define VECT_RSPI2_SPII2 47 -#define VECT_CAN0_RXF0 48 -#define VECT_CAN0_TXF0 49 -#define VECT_CAN0_RXM0 50 -#define VECT_CAN0_TXM0 51 -#define VECT_CAN1_RXF1 52 -#define VECT_CAN1_TXF1 53 -#define VECT_CAN1_RXM1 54 -#define VECT_CAN1_TXM1 55 -#define VECT_CAN2_RXF2 56 -#define VECT_CAN2_TXF2 57 -#define VECT_CAN2_RXM2 58 -#define VECT_CAN2_TXM2 59 -#define VECT_RTC_COUNTUP 62 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALARM 92 -#define VECT_RTC_PRD 93 -#define VECT_AD0_ADI0 98 -#define VECT_S12AD0_S12ADI0 102 -#define VECT_ICU_GROUPE0 106 -#define VECT_ICU_GROUPE1 107 -#define VECT_ICU_GROUPE2 108 -#define VECT_ICU_GROUPE3 109 -#define VECT_ICU_GROUPE4 110 -#define VECT_ICU_GROUPE5 111 -#define VECT_ICU_GROUPE6 112 -#define VECT_ICU_GROUPL0 114 -#define VECT_SCIX_SCIX0 122 -#define VECT_SCIX_SCIX1 123 -#define VECT_SCIX_SCIX2 124 -#define VECT_SCIX_SCIX3 125 -#define VECT_TPU0_TGI0A 126 -#define VECT_TPU0_TGI0B 127 -#define VECT_TPU0_TGI0C 128 -#define VECT_TPU0_TGI0D 129 -#define VECT_TPU1_TGI1A 130 -#define VECT_TPU1_TGI1B 131 -#define VECT_TPU2_TGI2A 132 -#define VECT_TPU2_TGI2B 133 -#define VECT_TPU3_TGI3A 134 -#define VECT_TPU3_TGI3B 135 -#define VECT_TPU3_TGI3C 136 -#define VECT_TPU3_TGI3D 137 -#define VECT_TPU4_TGI4A 138 -#define VECT_TPU4_TGI4B 139 -#define VECT_TPU5_TGI5A 140 -#define VECT_TPU5_TGI5B 141 -#define VECT_TPU6_TGI6A 142 -#define VECT_TPU6_TGI6B 143 -#define VECT_TPU6_TGI6C 144 -#define VECT_TPU6_TGI6D 145 -#define VECT_MTU0_TGIA0 142 -#define VECT_MTU0_TGIB0 143 -#define VECT_MTU0_TGIC0 144 -#define VECT_MTU0_TGID0 145 -#define VECT_MTU0_TGIE0 146 -#define VECT_MTU0_TGIF0 147 -#define VECT_TPU7_TGI7A 148 -#define VECT_TPU7_TGI7B 149 -#define VECT_MTU1_TGIA1 148 -#define VECT_MTU1_TGIB1 149 -#define VECT_TPU8_TGI8A 150 -#define VECT_TPU8_TGI8B 151 -#define VECT_MTU2_TGIA2 150 -#define VECT_MTU2_TGIB2 151 -#define VECT_TPU9_TGI9A 152 -#define VECT_TPU9_TGI9B 153 -#define VECT_TPU9_TGI9C 154 -#define VECT_TPU9_TGI9D 155 -#define VECT_MTU3_TGIA3 152 -#define VECT_MTU3_TGIB3 153 -#define VECT_MTU3_TGIC3 154 -#define VECT_MTU3_TGID3 155 -#define VECT_TPU10_TGI10A 156 -#define VECT_TPU10_TGI10B 157 -#define VECT_MTU4_TGIA4 156 -#define VECT_MTU4_TGIB4 157 -#define VECT_MTU4_TGIC4 158 -#define VECT_MTU4_TGID4 159 -#define VECT_MTU4_TCIV4 160 -#define VECT_MTU5_TGIU5 161 -#define VECT_MTU5_TGIV5 162 -#define VECT_MTU5_TGIW5 163 -#define VECT_TPU11_TGI11A 164 -#define VECT_TPU11_TGI11B 165 -#define VECT_POE_OEI1 166 -#define VECT_POE_OEI2 167 -#define VECT_TMR0_CMIA0 170 -#define VECT_TMR0_CMIB0 171 -#define VECT_TMR0_OVI0 172 -#define VECT_TMR1_CMIA1 173 -#define VECT_TMR1_CMIB1 174 -#define VECT_TMR1_OVI1 175 -#define VECT_TMR2_CMIA2 176 -#define VECT_TMR2_CMIB2 177 -#define VECT_TMR2_OVI2 178 -#define VECT_TMR3_CMIA3 179 -#define VECT_TMR3_CMIB3 180 -#define VECT_TMR3_OVI3 181 -#define VECT_RIIC0_EEI0 182 -#define VECT_RIIC0_RXI0 183 -#define VECT_RIIC0_TXI0 184 -#define VECT_RIIC0_TEI0 185 -#define VECT_RIIC1_EEI1 186 -#define VECT_RIIC1_RXI1 187 -#define VECT_RIIC1_TXI1 188 -#define VECT_RIIC1_TEI1 189 -#define VECT_RIIC2_EEI2 190 -#define VECT_RIIC2_RXI2 191 -#define VECT_RIIC2_TXI2 192 -#define VECT_RIIC2_TEI2 193 -#define VECT_RIIC3_EEI3 194 -#define VECT_RIIC3_RXI3 195 -#define VECT_RIIC3_TXI3 196 -#define VECT_RIIC3_TEI3 197 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_RXI0 214 -#define VECT_SCI0_TXI0 215 -#define VECT_SCI0_TEI0 216 -#define VECT_SCI1_RXI1 217 -#define VECT_SCI1_TXI1 218 -#define VECT_SCI1_TEI1 219 -#define VECT_SCI2_RXI2 220 -#define VECT_SCI2_TXI2 221 -#define VECT_SCI2_TEI2 222 -#define VECT_SCI3_RXI3 223 -#define VECT_SCI3_TXI3 224 -#define VECT_SCI3_TEI3 225 -#define VECT_SCI4_RXI4 226 -#define VECT_SCI4_TXI4 227 -#define VECT_SCI4_TEI4 228 -#define VECT_SCI5_RXI5 229 -#define VECT_SCI5_TXI5 230 -#define VECT_SCI5_TEI5 231 -#define VECT_SCI6_RXI6 232 -#define VECT_SCI6_TXI6 233 -#define VECT_SCI6_TEI6 234 -#define VECT_SCI7_RXI7 235 -#define VECT_SCI7_TXI7 236 -#define VECT_SCI7_TEI7 237 -#define VECT_SCI8_RXI8 238 -#define VECT_SCI8_TXI8 239 -#define VECT_SCI8_TEI8 240 -#define VECT_SCI9_RXI9 241 -#define VECT_SCI9_TXI9 242 -#define VECT_SCI9_TEI9 243 -#define VECT_SCI10_RXI10 244 -#define VECT_SCI10_TXI10 245 -#define VECT_SCI10_TEI10 246 -#define VECT_SCI11_RXI11 247 -#define VECT_SCI11_TXI11 248 -#define VECT_SCI11_TEI11 249 -#define VECT_SCI12_RXI12 250 -#define VECT_SCI12_TXI12 251 -#define VECT_SCI12_TEI12 252 -#define VECT_IEB_IEBINT 253 - -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_TPU0 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU1 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU2 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU3 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU4 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU5 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU6 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU7 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU8 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU9 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU10 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU11 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTU SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SMCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_SMCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_TEMPS SYSTEM.MSTPCRB.BIT.MSTPB8 -#define MSTP_SCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_SMCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_CAN2 SYSTEM.MSTPCRB.BIT.MSTPB2 -#define MSTP_CAN1 SYSTEM.MSTPCRB.BIT.MSTPB1 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_SCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SMCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SMCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SMCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_SMCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_RSPI2 SYSTEM.MSTPCRC.BIT.MSTPC22 -#define MSTP_LVD SYSTEM.MSTPCRC.BIT.MSTPC20 -#define MSTP_IEB SYSTEM.MSTPCRC.BIT.MSTPC18 -#define MSTP_RIIC2 SYSTEM.MSTPCRC.BIT.MSTPC17 -#define MSTP_RIIC3 SYSTEM.MSTPCRC.BIT.MSTPC16 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define IS_CAN0_ERS0 IS0 -#define IS_CAN1_ERS1 IS1 -#define IS_CAN2_ERS2 IS2 -#define IS_MTU0_TCIV0 IS0 -#define IS_MTU1_TCIV1 IS1 -#define IS_MTU1_TCIU1 IS2 -#define IS_MTU2_TCIV2 IS0 -#define IS_MTU2_TCIU2 IS1 -#define IS_MTU3_TCIV3 IS2 -#define IS_TPU0_TCI0V IS0 -#define IS_TPU1_TCI1V IS1 -#define IS_TPU1_TCI1U IS2 -#define IS_TPU5_TCI5V IS3 -#define IS_TPU5_TCI5U IS4 -#define IS_TPU2_TCI2V IS0 -#define IS_TPU2_TCI2U IS1 -#define IS_TPU3_TCI3V IS2 -#define IS_TPU4_TCI4V IS3 -#define IS_TPU4_TCI4U IS4 -#define IS_TPU6_TCI6V IS0 -#define IS_TPU7_TCI7V IS1 -#define IS_TPU7_TCI7U IS2 -#define IS_TPU11_TCI11V IS3 -#define IS_TPU11_TCI11U IS4 -#define IS_TPU8_TCI8V IS0 -#define IS_TPU8_TCI8U IS1 -#define IS_TPU9_TCI9V IS2 -#define IS_TPU10_TCI10V IS3 -#define IS_TPU10_TCI10U IS4 -#define IS_SCI0_ERI0 IS0 -#define IS_SCI1_ERI1 IS1 -#define IS_SCI2_ERI2 IS2 -#define IS_SCI3_ERI3 IS3 -#define IS_SCI4_ERI4 IS4 -#define IS_SCI5_ERI5 IS5 -#define IS_SCI6_ERI6 IS6 -#define IS_SCI7_ERI7 IS7 -#define IS_SCI8_ERI8 IS8 -#define IS_SCI9_ERI9 IS9 -#define IS_SCI10_ERI10 IS10 -#define IS_SCI11_ERI11 IS11 -#define IS_SCI12_ERI12 IS12 -#define IS_RSPI0_SPEI0 IS13 -#define IS_RSPI1_SPEI1 IS14 -#define IS_RSPI2_SPEI2 IS15 - -#define EN_CAN0_ERS0 EN0 -#define EN_CAN1_ERS1 EN1 -#define EN_CAN2_ERS2 EN2 -#define EN_MTU0_TCIV0 EN0 -#define EN_MTU1_TCIV1 EN1 -#define EN_MTU1_TCIU1 EN2 -#define EN_MTU2_TCIV2 EN0 -#define EN_MTU2_TCIU2 EN1 -#define EN_MTU3_TCIV3 EN2 -#define EN_TPU0_TCI0V EN0 -#define EN_TPU1_TCI1V EN1 -#define EN_TPU1_TCI1U EN2 -#define EN_TPU5_TCI5V EN3 -#define EN_TPU5_TCI5U EN4 -#define EN_TPU2_TCI2V EN0 -#define EN_TPU2_TCI2U EN1 -#define EN_TPU3_TCI3V EN2 -#define EN_TPU4_TCI4V EN3 -#define EN_TPU4_TCI4U EN4 -#define EN_TPU6_TCI6V EN0 -#define EN_TPU7_TCI7V EN1 -#define EN_TPU7_TCI7U EN2 -#define EN_TPU11_TCI11V EN3 -#define EN_TPU11_TCI11U EN4 -#define EN_TPU8_TCI8V EN0 -#define EN_TPU8_TCI8U EN1 -#define EN_TPU9_TCI9V EN2 -#define EN_TPU10_TCI10V EN3 -#define EN_TPU10_TCI10U EN4 -#define EN_SCI0_ERI0 EN0 -#define EN_SCI1_ERI1 EN1 -#define EN_SCI2_ERI2 EN2 -#define EN_SCI3_ERI3 EN3 -#define EN_SCI4_ERI4 EN4 -#define EN_SCI5_ERI5 EN5 -#define EN_SCI6_ERI6 EN6 -#define EN_SCI7_ERI7 EN7 -#define EN_SCI8_ERI8 EN8 -#define EN_SCI9_ERI9 EN9 -#define EN_SCI10_ERI10 EN10 -#define EN_SCI11_ERI11 EN11 -#define EN_SCI12_ERI12 EN12 -#define EN_RSPI0_SPEI0 EN13 -#define EN_RSPI1_SPEI1 EN14 -#define EN_RSPI2_SPEI2 EN15 - -#define CLR_CAN0_ERS0 CLR0 -#define CLR_CAN1_ERS1 CLR1 -#define CLR_CAN2_ERS2 CLR2 -#define CLR_MTU0_TCIV0 CLR0 -#define CLR_MTU1_TCIV1 CLR1 -#define CLR_MTU1_TCIU1 CLR2 -#define CLR_MTU2_TCIV2 CLR0 -#define CLR_MTU2_TCIU2 CLR1 -#define CLR_MTU3_TCIV3 CLR2 -#define CLR_TPU0_TCI0V CLR0 -#define CLR_TPU1_TCI1V CLR1 -#define CLR_TPU1_TCI1U CLR2 -#define CLR_TPU5_TCI5V CLR3 -#define CLR_TPU5_TCI5U CLR4 -#define CLR_TPU2_TCI2V CLR0 -#define CLR_TPU2_TCI2U CLR1 -#define CLR_TPU3_TCI3V CLR2 -#define CLR_TPU4_TCI4V CLR3 -#define CLR_TPU4_TCI4U CLR4 -#define CLR_TPU6_TCI6V CLR0 -#define CLR_TPU7_TCI7V CLR1 -#define CLR_TPU7_TCI7U CLR2 -#define CLR_TPU11_TCI11V CLR3 -#define CLR_TPU11_TCI11U CLR4 -#define CLR_TPU8_TCI8V CLR0 -#define CLR_TPU8_TCI8U CLR1 -#define CLR_TPU9_TCI9V CLR2 -#define CLR_TPU10_TCI10V CLR3 -#define CLR_TPU10_TCI10U CLR4 -#define CLR_SCI0_ERI0 CLR0 -#define CLR_SCI1_ERI1 CLR1 -#define CLR_SCI2_ERI2 CLR2 -#define CLR_SCI3_ERI3 CLR3 -#define CLR_SCI4_ERI4 CLR4 -#define CLR_SCI5_ERI5 CLR5 -#define CLR_SCI6_ERI6 CLR6 -#define CLR_SCI7_ERI7 CLR7 -#define CLR_SCI8_ERI8 CLR8 -#define CLR_SCI9_ERI9 CLR9 -#define CLR_SCI10_ERI10 CLR10 -#define CLR_SCI11_ERI11 CLR11 -#define CLR_SCI12_ERI12 CLR12 -#define CLR_RSPI0_SPEI0 CLR13 -#define CLR_RSPI1_SPEI1 CLR14 -#define CLR_RSPI2_SPEI2 CLR15 - -#define CN_TPU6_TGI6A CN0 -#define CN_TPU6_TGI6B CN0 -#define CN_TPU6_TGI6C CN0 -#define CN_TPU6_TGI6D CN0 -#define CN_MTU0_TGIA0 CN0 -#define CN_MTU0_TGIB0 CN0 -#define CN_MTU0_TGIC0 CN0 -#define CN_MTU0_TGID0 CN0 -#define CN_MTU0_TGIE0 CN0 -#define CN_MTU0_TGIF0 CN0 -#define CN_TPU7_TGI7A CN1 -#define CN_TPU7_TGI7B CN1 -#define CN_MTU1_TGIA1 CN1 -#define CN_MTU1_TGIB1 CN1 -#define CN_TPU8_TGI8A CN2 -#define CN_TPU8_TGI8B CN2 -#define CN_MTU2_TGIA2 CN2 -#define CN_MTU2_TGIB2 CN2 -#define CN_TPU9_TGI9A CN3 -#define CN_TPU9_TGI9B CN3 -#define CN_TPU9_TGI9C CN3 -#define CN_TPU9_TGI9D CN3 -#define CN_MTU3_TGIA3 CN3 -#define CN_MTU3_TGIB3 CN3 -#define CN_MTU3_TGIC3 CN3 -#define CN_MTU3_TGID3 CN3 -#define CN_TPU10_TGI10A CN4 -#define CN_TPU10_TGI10B CN4 -#define CN_MTU4_TGIA4 CN4 -#define CN_MTU4_TGIB4 CN4 -#define CN_MTU4_TGIC4 CN4 -#define CN_MTU4_TGID4 CN4 -#define CN_MTU4_TGIV4 CN4 -#define CN_TPU11_TGI11A CN5 -#define CN_TPU11_TGI11B CN5 -#define CN_MTU5_TGIU5 CN5 -#define CN_MTU5_TGIV5 CN5 -#define CN_MTU5_TGIW5 CN5 -#define CN_TPU6_ CN0 -#define CN_MTU0_ CN0 -#define CN_TPU7_ CN1 -#define CN_MTU1_ CN1 -#define CN_TPU8_ CN2 -#define CN_MTU2_ CN2 -#define CN_TPU9_ CN3 -#define CN_MTU3_ CN3 -#define CN_TPU10_ CN4 -#define CN_MTU4_ CN4 -#define CN_TPU11_ CN5 -#define CN_MTU5_ CN5 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define __IS( x ) ICU.GRP[ GRP ## x ].BIT.IS ## x -#define _IS( x ) __IS( x ) -#define IS( x , y ) _IS( _ ## x ## _ ## y ) -#define __EN( x ) ICU.GEN[ GEN ## x ].BIT.EN ## x -#define _EN( x ) __EN( x ) -#define EN( x , y ) _EN( _ ## x ## _ ## y ) -#define __CLR( x ) ICU.GCR[ GCR ## x ].BIT.CLR ## x -#define _CLR( x ) __CLR( x ) -#define CLR( x , y ) _CLR( _ ## x ## _ ## y ) -#define __CN( x ) ICU.SEL.BIT.CN ## x -#define _CN( x ) __CN( x ) -#define CN( x , y ) _CN( _ ## x ## _ ## y ) - -#define AD (*(volatile struct st_ad __evenaccess *)0x89800) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CAN1 (*(volatile struct st_can __evenaccess *)0x91200) -#define CAN2 (*(volatile struct st_can __evenaccess *)0x92200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C296) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IEB (*(volatile struct st_ieb __evenaccess *)0x8A800) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MPC (*(volatile struct st_mpc __evenaccess *)0x8C100) -#define MTU (*(volatile struct st_mtu __evenaccess *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88690) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88690) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88692) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88694) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PORTH (*(volatile struct st_porth __evenaccess *)0x8C0D1) -#define PORTJ (*(volatile struct st_portj __evenaccess *)0x8C012) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic0 __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic1 __evenaccess *)0x88320) -#define RIIC2 (*(volatile struct st_riic1 __evenaccess *)0x88340) -#define RIIC3 (*(volatile struct st_riic1 __evenaccess *)0x88360) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RSPI2 (*(volatile struct st_rspi __evenaccess *)0x883C0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci0 __evenaccess *)0x8A000) -#define SCI1 (*(volatile struct st_sci0 __evenaccess *)0x8A020) -#define SCI2 (*(volatile struct st_sci0 __evenaccess *)0x8A040) -#define SCI3 (*(volatile struct st_sci0 __evenaccess *)0x8A060) -#define SCI4 (*(volatile struct st_sci0 __evenaccess *)0x8A080) -#define SCI5 (*(volatile struct st_sci0 __evenaccess *)0x8A0A0) -#define SCI6 (*(volatile struct st_sci0 __evenaccess *)0x8A0C0) -#define SCI7 (*(volatile struct st_sci7 __evenaccess *)0x8A0E0) -#define SCI8 (*(volatile struct st_sci0 __evenaccess *)0x8A100) -#define SCI9 (*(volatile struct st_sci0 __evenaccess *)0x8A120) -#define SCI10 (*(volatile struct st_sci0 __evenaccess *)0x8A140) -#define SCI11 (*(volatile struct st_sci0 __evenaccess *)0x8A160) -#define SCI12 (*(volatile struct st_sci12 __evenaccess *)0x8B300) -#define SMCI0 (*(volatile struct st_smci0 __evenaccess *)0x8A000) -#define SMCI1 (*(volatile struct st_smci0 __evenaccess *)0x8A020) -#define SMCI2 (*(volatile struct st_smci0 __evenaccess *)0x8A040) -#define SMCI3 (*(volatile struct st_smci0 __evenaccess *)0x8A060) -#define SMCI4 (*(volatile struct st_smci0 __evenaccess *)0x8A080) -#define SMCI5 (*(volatile struct st_smci0 __evenaccess *)0x8A0A0) -#define SMCI6 (*(volatile struct st_smci0 __evenaccess *)0x8A0C0) -#define SMCI7 (*(volatile struct st_smci7 __evenaccess *)0x8A0E0) -#define SMCI8 (*(volatile struct st_smci0 __evenaccess *)0x8A100) -#define SMCI9 (*(volatile struct st_smci0 __evenaccess *)0x8A120) -#define SMCI10 (*(volatile struct st_smci0 __evenaccess *)0x8A140) -#define SMCI11 (*(volatile struct st_smci0 __evenaccess *)0x8A160) -#define SMCI12 (*(volatile struct st_smci0 __evenaccess *)0x8B300) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TEMPS (*(volatile struct st_temps __evenaccess *)0x8C500) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define TPU0 (*(volatile struct st_tpu0 __evenaccess *)0x88108) -#define TPU1 (*(volatile struct st_tpu1 __evenaccess *)0x88108) -#define TPU2 (*(volatile struct st_tpu2 __evenaccess *)0x8810A) -#define TPU3 (*(volatile struct st_tpu3 __evenaccess *)0x8810A) -#define TPU4 (*(volatile struct st_tpu4 __evenaccess *)0x8810C) -#define TPU5 (*(volatile struct st_tpu5 __evenaccess *)0x8810C) -#define TPU6 (*(volatile struct st_tpu0 __evenaccess *)0x88178) -#define TPU7 (*(volatile struct st_tpu1 __evenaccess *)0x88178) -#define TPU8 (*(volatile struct st_tpu2 __evenaccess *)0x8817A) -#define TPU9 (*(volatile struct st_tpu3 __evenaccess *)0x8817A) -#define TPU10 (*(volatile struct st_tpu4 __evenaccess *)0x8817C) -#define TPU11 (*(volatile struct st_tpu5 __evenaccess *)0x8817C) -#define TPUA (*(volatile struct st_tpua __evenaccess *)0x88100) -#define TPUB (*(volatile struct st_tpub __evenaccess *)0x88170) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb1 __evenaccess *)0xA0200) -#define WDT (*(volatile struct st_wdt __evenaccess *)0x88020) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h deleted file mode 100644 index 6a525384b..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h +++ /dev/null @@ -1,75 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : platform.h -* Version : 1.20 -* Description : The user chooses which MCU and board they are developing for in this file. If the board you are using -* is not listed below, please add your own or use the default 'User Board'. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 30.11.2011 1.00 First Release -* : 13.01.2012 1.10 Moved from having platform defined using macro defintion, to having platform defined -* by choosing an include path. This makes this file simpler and cleans up the issue -* where HEW shows all header files for all platforms under 'Dependencies'. -* : 14.02.2012 1.20 Added RX210 BSP. -***********************************************************************************************************************/ - -#ifndef _PLATFORM_H_ -#define _PLATFORM_H_ - -/*********************************************************************************************************************** -DEFINE YOUR SYSTEM - UNCOMMENT THE INCLUDE PATH FOR THE PLATFORM YOU ARE USING. -***********************************************************************************************************************/ -/* RSKRX610 */ -//#include "./board/rskrx610/r_bsp.h" - -/* RSKRX62N */ -//#include "./board/rskrx62n/r_bsp.h" - -/* RSKRX62T */ -//#include "./board/rskrx62t/r_bsp.h" - -/* RDKRX62N */ -//#include "./board/rdkrx62n/r_bsp.h" - -/* RSKRX630 */ -//#include "./board/rskrx630/r_bsp.h" - -/* RSKRX63N */ -//#include "./board/rskrx63n/r_bsp.h" - -/* RDKRX63N */ -#include "./board/rdkrx63n/r_bsp.h" - -/* RSKRX210 */ -//#include "./board/rskrx210/r_bsp.h" - -/* User Board - Define your own board here. */ -//#include "./board/user/r_bsp.h" - -/*********************************************************************************************************************** -MAKE SURE AT LEAST ONE PLATFORM WAS DEFINED - DO NOT EDIT BELOW THIS POINT -***********************************************************************************************************************/ -#ifndef PLATFORM_DEFINED -#error "Error - No platform defined in platform.h!" -#endif - -#endif /* _PLATFORM_H_ */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf deleted file mode 100644 index fc1ca0381..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf +++ /dev/null @@ -1,290 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_ACCESS_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_CYCLE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_DATA_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_REGISTER_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_SEQUENCE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_PC_BREAK_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BUSCYCLEOCCUR_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_CPU_FREQUENCY" "100000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_ENDIAN" "LITTLE" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_PCLOCKRATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_ROUND" "RM_NEAR" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_EXEC_EXEC_MODE" "STOP" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_EXEC_STEP_RATE" "40000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_FILEIOPORT_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_FILEIOVARIALBE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_INST_DECODE_CACHE_ENABLE_FLAG" "OFF" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_IODLL_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_AUTO_ALLOC_RESOURCE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_BUS_WIDTH" "32" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0" "0x00000000,0x0001FFFF,32, 1,RAM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1" "0x00080000,0x000FFFFF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2" "0x00100000,0x00107FFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3" "0x007F8000,0x007F9FFF,32, 1,RAM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4" "0x007FC000,0x007FC4FF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5" "0x007FFC00,0x007FFFFF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6" "0x00E00000,0x00FFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7" "0xFEFFE000,0xFEFFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8" "0xFF7FC000,0xFF7FFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9" "0xFFE00000,0xFFFFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MEMORY_MAP_COUNT" "10" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MEMORY_MODE" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_PRG_WIDTH" "-1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMORY_RESOURCE_COUNT" "5" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES0" "0x00000000,0x0001FFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES1" "0x00080000,0x000FFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES2" "0x007FC000,0x007FC4FF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES3" "0x007FFC00,0x007FFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES4" "0xFFFF8000,0xFFFFFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SESSION_IS_SAVED" "YES" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_Interrupt_Exception" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_SYSTEM_CALL_ADDRESS" "0x00000000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_SYSTEM_CALL_FLAG" "OFF" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_TRACE2_TRACE2_ACQUISITION" "0,65536,0,0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageCtrlViews" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageCtrlViewsFromDiffFile" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageFileName" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Cov_SL" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Open_End" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Open_Start" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Src_Open" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlPAState" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlChartMultiOpen" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlEnable" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{7FA2E460-7EC0-11D5-8EB6-00004CC34E9D}SimIOCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{85AC95E0-0CE6-11D6-8EB6-00004CC34E9D}TriggerCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}ECX_GuiIO_SAMPLING_RATE" "1000" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}PDGuiIOCtrlPDGuiIOLastSaveDirectory" "" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}PDGuiIOCtrlViews" "0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 228 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 228 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 346 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 914 231 0 0 6 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000007_DEBUG} TOOLBAR 0" -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_Renesas\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 Simulator" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[V|VERSION|1] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,101 0x00080000,0x000FFFFF,I/O,32,101 0x00100000,0x00107FFF,ROM,32,101 0x007F8000,0x007F9FFF,RAM,32,101 0x007FC000,0x007FC4FF,I/O,32,101 0x007FFC00,0x007FFFFF,I/O,32,101 0x00E00000,0x00FFFFFF,ROM,32,101 0xFEFFE000,0xFEFFFFFF,ROM,32,101 0xFF7FC000,0xFF7FFFFF,ROM,32,101 0xFFE00000,0xFFFFFFFF,ROM,32,101^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W^"] [B|SIMIOF|0] [I|SIMIOADR|0x00000000] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"] [S|ROM_MODE|^"^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"0.000000" 0 0 "" 0 "" 0 0 "" 1 1 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c deleted file mode 100644 index ac412f11d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks, one queue, and one - * software timer. For a much more complete and complex example select either - * the Debug or Debug_with_optimisation build configurations within the HEW, - * which build main_full.c in place of this file. - * - * One task (the queue receive task) blocks on the queue to wait for data to - * arrive, toggling LED0 each time '100' is received. The other task (the - * queue send task) repeatedly blocks for a fixed period before sending '100' - * to the queue (causing the first task to toggle the LED). - * - * The software timer is configured to auto-reload. The timer callback - * function periodically toggles LED1. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_PERIOD_MS ( 500 / portTICK_PERIOD_MS ) - -/* The period of the software timer, specified in milliseconds. */ -#define mainSOFTWARE_TIMER_PERIOD_MS ( 150 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LEDs toggle by the task and timer respectively. */ -#define mainTASK_LED ( 0 ) -#define mainTIMER_LED ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The callback function used by the software timer. - */ -static void prvBlinkyTimerCallback( TimerHandle_t xTimer ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -TimerHandle_t xTimer; - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create the software timer, as described at the top of this file. */ - xTimer = xTimerCreate( "BlinkyTimer", /* Just a text name to make debugging easier - not used by the scheduler. */ - mainSOFTWARE_TIMER_PERIOD_MS, /* The timer period. */ - pdTRUE, /* Set to pdTRUE for periodic timer, or pdFALSE for one-shot timer. */ - NULL, /* The timer ID is not required. */ - prvBlinkyTimerCallback ); /* The function executed when the timer expires. */ - - if( xTimer != NULL ) - { - /* Start the timer - it will not actually start running until the - scheduler has started. The block time is set to 0, although, because - xTimerStart() is being called before the scheduler has been started, - the any block time specified would be ignored anyway. */ - xTimerStart( xTimer, 0UL ); - } - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */ - "Rx", /* Just a text name to make debugging easier - not used by the scheduler. */ - configMINIMAL_STACK_SIZE, /* The size of the task stack, in words. */ - NULL, /* The task parameter is not used. */ - configQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task when it is created. */ - NULL ); /* The task handle is not used. */ - - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_PERIOD_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_LED ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvBlinkyTimerCallback( TimerHandle_t xTimer ) -{ - /* The software timer does nothing but toggle an LED. */ - vParTestToggleLED( mainTIMER_LED ); -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c deleted file mode 100644 index 98571157c..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c +++ /dev/null @@ -1,672 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. The Blinky - * configuration builds main-blinky.c in place of this file. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" timer - The check software timer period is initially set to five - * seconds. The callback function associated with the check software timer - * checks that all the standard demo tasks, and the register check tasks, are - * not only still executing, but are executing without reporting any errors. If - * the check software timer discovers that a task has either stalled, or - * reported an error, then it changes its own execution period from the initial - * five seconds, to just 200ms. The check software timer callback function - * also toggles LED3 each time it is called. This provides a visual indication - * of the system status: If LED3 toggles every five seconds, then no issues - * have been discovered. If the LED toggles every 200ms, then an issue has been - * discovered with at least one task. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED3 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). - * - * * -*/ - -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "semphr.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash_timer.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check timer. */ -#define mainCHECK_LED ( 3 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check timer as described at the top of this -file. */ -#define mainNO_ERROR_CHECK_TIMER_PERIOD_MS ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check timer as described at the top of -this file. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200 / portTICK_PERIOD_MS ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0UL ) - -/* A set of timers are created, each of which toggles and LED. This specifies -the number of timers to create. */ -#define mainNUMBER_OF_LEDS_TO_FLASH ( 3 ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ); -static void prvRegTest2Implementation( void ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -TimerHandle_t xCheckTimer; -extern void HardwareSetup( void ); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* Create the timers used to toggle the LEDs. */ - vStartLEDFlashTimers( mainNUMBER_OF_LEDS_TO_FLASH ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainNO_ERROR_CHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - if( xCheckTimer != NULL ) - { - xTimerStart( xCheckTimer, mainDONT_BLOCK ); - } - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ -static long lChangedTimerPeriodAlready = pdFALSE; -static unsigned long ulLastRegTest1CycleCount = 0, ulLastRegTest2CycleCount = 0; -long lErrorFound = pdFALSE; - - /* If this is being executed then the kernel has been started. Start the - high frequency timer test as described at the top of this file. This is - only included in the optimised build configuration - otherwise it takes up - too much CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: Flop"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: RegTest1"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: RegTest2"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainNO_ERROR_CHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in lErrorFound? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( lErrorFound != pdFALSE ) - { - if( lChangedTimerPeriodAlready == pdFALSE ) - { - lChangedTimerPeriodAlready = pdTRUE; - - /* This call to xTimerChangePeriod() uses a zero block time. - Functions called from inside of a timer callback function must - *never* attempt to block. */ - xTimerChangePeriod( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest1Implementation -static void prvRegTest1Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #1, R1 - MOV.L #2, R2 - MOV.L #3, R3 - MOV.L #4, R4 - MOV.L #5, R5 - MOV.L #6, R6 - MOV.L #7, R7 - MOV.L #8, R8 - MOV.L #9, R9 - MOV.L #10, R10 - MOV.L #11, R11 - MOV.L #12, R12 - MOV.L #13, R13 - MOV.L #14, R14 - MOV.L #15, R15 - - ; Loop, checking each iteration that each register still contains the - ; expected value. -TestLoop1: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest1CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register. - MOV.L #1, R14 - MOV.L #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - ; Restore the clobbered registers. - POPM R14-R15 - - ; Now compare each register to ensure it still contains the value that was - ; set before this loop was entered. - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop1 - -RegTest1Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. - BRA RegTest1Error -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest2Implementation -static void prvRegTest2Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #10, R1 - MOV.L #20, R2 - MOV.L #30, R3 - MOV.L #40, R4 - MOV.L #50, R5 - MOV.L #60, R6 - MOV.L #70, R7 - MOV.L #80, R8 - MOV.L #90, R9 - MOV.L #100, R10 - MOV.L #110, R11 - MOV.L #120, R12 - MOV.L #130, R13 - MOV.L #140, R14 - MOV.L #150, R15 - - ; Loop, checking on each iteration that each register still contains the - ; expected value. -TestLoop2: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest2CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Restore the clobbered registers. - POPM R14-R15 - - CMP #10, R1 - BNE RegTest2Error - CMP #20, R2 - BNE RegTest2Error - CMP #30, R3 - BNE RegTest2Error - CMP #40, R4 - BNE RegTest2Error - CMP #50, R5 - BNE RegTest2Error - CMP #60, R6 - BNE RegTest2Error - CMP #70, R7 - BNE RegTest2Error - CMP #80, R8 - BNE RegTest2Error - CMP #90, R9 - BNE RegTest2Error - CMP #100, R10 - BNE RegTest2Error - CMP #110, R11 - BNE RegTest2Error - CMP #120, R12 - BNE RegTest2Error - CMP #130, R13 - BNE RegTest2Error - CMP #140, R14 - BNE RegTest2Error - CMP #150, R15 - BNE RegTest2Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop2 - -RegTest2Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. - BRA RegTest2Error -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h deleted file mode 100644 index cc008c554..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h +++ /dev/null @@ -1,149 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : r_bsp_config_reference.c -* Device(s) : RX63x -* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included -* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h) -* is just a reference file that the user can use to make their own r_bsp_config.h file. -************************************************************************************************************************ -* History : DD.MM.YYYY Version Description -* : 13.03.2012 1.00 First Release -***********************************************************************************************************************/ -#ifndef R_BSP_CONFIG_REF_HEADER_FILE -#define R_BSP_CONFIG_REF_HEADER_FILE - -/*********************************************************************************************************************** -Configuration Options -***********************************************************************************************************************/ -/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a - '#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */ -#if defined(BSP_DECLARE_STACK) -/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize su=0x1000 -/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize si=0x400 -#endif - -/* Heap size in bytes. */ -#define HEAP_BYTES (0x4) - -/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information - on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual. - 0 = Stay in Supervisor mode. - 1 = Switch to User mode. -*/ -#define RUN_IN_USER_MODE (0) - -/* To get into User Boot Mode the user must control some pins on the MCU and also set some values in ROM. These values - in ROM are described in the Option-Setting Memory section of the hardware manual. This macro sets these values so - that User Boot Mode can be used. The user is still responsible for setting the MCU pins appropriately. - 0 = Single-Chip or USB Boot Mode - 1 = User Boot Mode -*/ -#define USER_BOOT_ENABLE (0) - -/* Set your desired ID code. NOTE, leave at the default (all 0xFF's) if you do not wish to use an ID code. If you set - this value and program it into the MCU then you will need to remember the ID code because the debugger will ask for - it when trying to connect. Note that the E1/E20 will ignore the ID code when programming the MCU during debugging. - If you set this value and then forget it then you can clear the ID code by connecting up in serial boot mode using - FDT. The ID Code is 16 bytes long. The macro below define the ID Code in 4-byte sections. */ -/* Lowest 4-byte section, address 0xFFFFFFA0. From MSB to LSB: Control Code, ID code 1, ID code 2, ID code 3. */ -#define ID_CODE_LONG_1 (0xFFFFFFFF) -/* 2nd ID Code section, address 0xFFFFFFA4. From MSB to LSB: ID code 4, ID code 5, ID code 6, ID code 7. */ -#define ID_CODE_LONG_2 (0xFFFFFFFF) -/* 3rd ID Code section, address 0xFFFFFFA8. From MSB to LSB: ID code 8, ID code 9, ID code 10, ID code 11. */ -#define ID_CODE_LONG_3 (0xFFFFFFFF) -/* 4th ID Code section, address 0xFFFFFFAC. From MSB to LSB: ID code 12, ID code 13, ID code 14, ID code 15. */ -#define ID_CODE_LONG_4 (0xFFFFFFFF) - -/* This macro lets other modules no if a RTOS is being used. - 0 = RTOS is not used. - 1 = RTOS is used. -*/ -#define RTOS_USED (0) - -/* Clock source select (CKSEL). - 0 = Low Speed On-Chip Oscillator (LOCO) - 1 = High Speed On-Chip Oscillator (HOCO) - 2 = Main Clock Oscillator - 3 = Sub-Clock Oscillator - 4 = PLL Circuit -*/ -#define CLOCK_SOURCE (4) - -/* Clock configuration options. - The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The - multiplier settings are used to set the clock registers in resetprg.c. If a 12MHz clock is used and the - ICLK is 96MHz, PCLKA is 48MHz, PCLKB is 48MHz, FCLK is 48MHz, USB Clock is 48MHz, and BCLK is 12MHz then the - settings would be: - - XTAL_HZ = 12000000 - PLL_DIV = 1 (no division) - PLL_MUL = 16 (12MHz x 16 = 192MHz) - ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 96MHz - PCKA_DIV = 4 : Peripheral Clock A (PCLKA) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKA_DIV) = 48MHz - PCKB_DIV = 4 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 48MHz - FCK_DIV = 4 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 48MHz - BCK_DIV = 8 : External Bus Clock (BCK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / BCK_DIV) = 24MHz - UCK_DIV = 4 : USB Clock (UCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / UCK_DIV) = 48MHz -*/ -/* XTAL - Input clock frequency in Hz */ -#define XTAL_HZ (12000000) -/* PLL Input Frequency Divider Select (PLIDIV). - Available divisors = /1 (no division), /2, /4 -*/ -#define PLL_DIV (1) -/* PLL Frequency Multiplication Factor Select (STC). - Available multipliers = x8, x10, x12, x16, x20, x24, x25, x50 -*/ -#define PLL_MUL (16) -/* System Clock Divider (ICK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define ICK_DIV (2) -/* Peripheral Module Clock A Divider (PCKA). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKA_DIV (2) /* WAS 4 for 48MHz, attempting to make it equal ICLK by setting it to 2. */ -/* Peripheral Module Clock B Divider (PCKB). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKB_DIV (4) -/* External Bus Clock Divider (BCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define BCK_DIV (8) -/* Flash IF Clock Divider (FCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define FCK_DIV (4) -/* IEBUS Clock Divider Select. - Available divisors = /1 (no division), /2, /4, /6, /8, /16, /32, /64 -*/ -#define IEBCK_DIV (8) -/* USB Clock Divider Select. - Available divisors = /3, /4 -*/ -#define UCK_DIV (4) - -#endif /* R_BSP_CONFIG_REF_HEADER_FILE */ - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 1a733061a..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "r_ether.h" -#include "phy.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section _RX_DESC - volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section _TX_DESC - volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - struct - { - unsigned long ulAlignmentVariable; - char cBuffer[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - } xEthernetBuffers; -#pragma section - - - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - configASSERT( phy_init() == R_PHY_OK ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers.cBuffer[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __LIT - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vEMAC_ISR_Handler( vect = VECT_ETHER_EINT, enable ) ) -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "
  • \r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


    Refresh count = %d


    %s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

    ", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


    Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


    Max high frequency timer jitter = %d peripheral clock periods.


    ", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

    Run time stats are only available in the debug_with_optimisation build configuration.

    " ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

    -

    404 - file not found

    -

    Go here instead.

    -
    - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -

    -

    Task statistics

    -Page will refresh every 2 seconds.

    -

    Task          State  Priority  Stack	#
    ************************************************
    -%! rtos-stats -
    -
    - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -LED and LCD IO
    - -

    - -Use the check box to turn on or off LED 4, then click "Update IO". - - -

    -
    -%! led-io -

    - - -

    - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -

    -

    Run-time statistics

    -Page will refresh every 2 seconds.

    -

    Task            Abs Time      % Time
    ****************************************
    -%! run-time -
    -
    - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -

    -

    Network statistics

    -
    LocalRemoteStateRetransmissionsTimerFlags
    %d%u.%u.%u.%u:%u%s%u%u%c %c
    -
    -IP           Packets received
    -             Packets sent
    -             Forwaded
    -             Dropped
    -IP errors    IP version/header length
    -             IP length, high byte
    -             IP length, low byte
    -             IP fragments
    -             Header checksum
    -             Wrong protocol
    -ICMP	     Packets received
    -             Packets sent
    -             Packets dropped
    -             Type errors
    -             Checksum errors
    -TCP          Packets received
    -             Packets sent
    -             Packets dropped
    -             Checksum errors
    -             Data packets without ACKs
    -             Resets
    -             Retransmissionsa
    -             Syn to closed port
    -UDP          Packets dropped
    -             Packets received
    -             Packets sent
    -             Packets chkerr
    -	     No connection avaliable
    -
    %! net-stats
    -
    - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -
    -

    Network connections

    -

    - - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c deleted file mode 100644 index e260ed51e..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "FreeRTOS.h" -#include "task.h" - -#include "r_ether.h" -#include "phy.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h deleted file mode 100644 index 48a172510..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index 13157ab5c..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - __evenaccess uint32_t status; -#if __LIT -/* Little endian */ - __evenaccess uint16_t size; - __evenaccess uint16_t bufsize; -#else -/* Big endian */ - __evenaccess uint16_t bufsize; - __evenaccess uint16_t size; - -#endif - int8_t *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -int32_t R_Ether_Close(uint32_t ch); -int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -int32_t R_Ether_Read(uint32_t ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const int8_t *name; - uint8_t open; - uint8_t Tx_act; - uint8_t Rx_act; - uint8_t txing; /* Transmit Active */ - uint8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uint8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - uint8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uint8_t mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 00f739647..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __LIT -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws deleted file mode 100644 index b679a05d4..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,41 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo.hws" "SuperH RISC engine" "Renesas SuperH Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\sh\9_3_2\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws deleted file mode 100644 index 2f08700ff..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,15 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -4 -23 1316 554 1 0 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 33f315388..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#include "iodefine.h" - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 1 /* Must be set to one for the timer interrupt to be cleared. */ -#define configCPU_CLOCK_HZ ( 200000000UL ) -#define configPERIPHERAL_CLOCK_HZ ( 50000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 36 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 1 /* Must be set to one for floating point support in this port. */ - -#define configMAX_PRIORITIES ( 5 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -void vSetupClockForRunTimeStats( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vSetupClockForRunTimeStats() - -extern unsigned long ulRunTime; -#define portGET_RUN_TIME_COUNTER_VALUE() ulRunTime - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c deleted file mode 100644 index a27722c8d..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -#define partestNUM_LEDS ( 6 ) -#define partestALL_LEDS ( usLEDMasks[ 0 ] | usLEDMasks[ 1 ] | usLEDMasks[ 2 ] | usLEDMasks[ 3 ] | usLEDMasks[ 4 ] | usLEDMasks[ 5 ] ) - -static const unsigned short usLEDMasks[ partestNUM_LEDS ] = { ( 1 << 9 ), ( 1 << 11 ), ( 1 << 12 ), ( 1 << 13 ), ( 1 << 14 ), ( 1 << 15 ) }; -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Select port functions for PE9 to PE15. */ - PFC.PECRL3.WORD &= ( unsigned short ) ~partestALL_LEDS; - - /* Turn all LEDs off. */ - PE.DR.WORD &= ( unsigned short ) ~partestALL_LEDS; - - /* Set all LEDs to output. */ - PFC.PEIORL.WORD |= ( unsigned short ) partestALL_LEDS; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partestNUM_LEDS ) - { - if( xValue ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - PE.DR.WORD |= usLEDMasks[ uxLED ]; - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ]; - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( ( PE.DR.WORD & usLEDMasks[ uxLED ] ) != 0x00 ) - { - PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ]; - } - else - { - PE.DR.WORD |= usLEDMasks[ uxLED ]; - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( void ) -{ - /* Returns the state of the fifth LED. */ - return !( PE.DR.WORD & usLEDMasks[ 4 ] ); -} -/*-----------------------------------------------------------*/ - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c deleted file mode 100644 index 03891c5c2..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c +++ /dev/null @@ -1,15 +0,0 @@ - -void main(void); - -void main(void) -{ -volatile unsigned long ul; - - for( ;; ) - { - ul++; - ul++; - } -} - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 885525df7..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,239 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RTOSDemo.hwp" "SuperH RISC engine" "Renesas SuperH Standard" "Application" "SH2A-FPU" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas SuperH RISC engine Standard Toolchain" "9.3.2.0" -[CONFIGURATIONS] -"Debug_SH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\Debug_SH7216_E10A-USB_SYSTEM__SH" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas SH Assembler" 1 -"Renesas SH C/C++ Compiler" 1 -"Renesas SH C/C++ Library Generator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LIS" -"Assembly source file" "ASM" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C list file" "LST" -"C source file" "C" -"C++ header file" "HPP" -"C++ list file" "LPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Debug information file" "DBG" -"Expanded assembly source file" "EXP" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Profile file" "PRO" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C list file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ list file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Debug information file" "BIN" "NONE" "" -"Expanded assembly source file" "TEXT" "EDITOR" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Profile file" "BIN" "NONE" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas SH Assembler" -"Renesas SH C/C++ Compiler" -"Renesas SH C/C++ Library Generator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas SH C/C++ Library Generator" 1 -"Renesas SH C/C++ Compiler" 1 -"Renesas SH Assembler" 1 -"Renesas OptLinker" 1 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas SH Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas SH C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas SH C/C++ Library Generator" "" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas SH Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas SH C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas SH C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas SH Assembler" 1 -[SCRAP] -"Project Generator Setup File" "$(PROJDIR)\RTOSDemo.pgs" -[MAPPINGS] -"Assembly source file" "Renesas SH Assembler" "Renesas SH C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas SH C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas SH Assembler" -"Object file" "Renesas OptLinker" "Renesas SH C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "User" "C source file|RenesasCode" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C header file" "C header file" -"C source file" "C source file" -"C source file|FreeRTOS" "" -"C source file|FreeTCPIP" "" -"C source file|RenesasCode" "" -"C source file|Standard Demo Tasks" "" -[GENERAL_DATA_PROJECT] -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"SessionSH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\SessionSH7216_E10A-USB_SYSTEM__SH.hsf" 0 -[GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH] -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas OptLinker] -"Single Shot" "02ce8974bdcaac10" 5 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH Assembler] -"Assembly source file" "099e0cfb35eaac10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "099e0cfb35eaac10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "099e0cfb35eaac10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "099e0cfb35eaac10" 3 -"Linkage symbol file" "05db08d6f178ac10" 4 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Compiler] -"C source file" "0e01c1b7cefaac10" 2 -"C++ source file" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0e01c1b7cefaac10" 2 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Library Generator] -"Single Shot" "0a60f44dc2baac10" 1 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH] -"" 0 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1] -" 3 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)] [S|CRC|NONE|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [I|CACHESIZE|000000008] [I|CACHELINE|000000020] [S|START|DVECTTBL,DINTTBL(00)|PResetPRG,PIntPRG(0800)|P,C,C$BSEC,C$DSEC,D(01000)|B,R(0FFF80000)|BTX_DESCR(0FFF91100)|BRX_DESCR(0FFF91200)|B_ETHERNET_BUFFERS(0FFF93100)|S(0FFF9FC00)] [B|SKIPDEPENDENCY|1] -" 5 -"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\RenesasCode^"] [S|DEFINE|PACK_STRUCT_END=UNPACK] [S|NOMESSAGE|5|6|8] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|ALIGN4|ALL] [S|ASSEMBLY|^"[V|VERSION|1]] [S|OUTPUTPATH|^"^"$(CONFIGDIR)\$(FILELEAF).obj^"^"]] [S|LITERAL|POOL|BRANCH|JUMP|RETURN]] [S|DISPSIZE|12]] [I|TAB|8]] [B|CHGINCPATH|1]] [S|CPU|SH2AFPU]] [S|ENDIAN|BIG]] [S|ROUND|NEAREST]] [B|DENORMALIZE|0]]^"] [B|TBR|0] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|MXGEN_MEM0|00000000] [S|MXGEN_MEM1|00000000] [B|LIST|0] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [S|FPSCR|SAFE] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|CHGINCPATH|1] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|7] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDARG|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|REENT|1] [S|ALIGN4|ALL] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [B|SAVE_CONT_REG|1] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|SKIPDEPENDENCY|1] -" 1 -[EXCLUDED_FILES_Debug_SH7216_E10A-USB_SYSTEM__SH] -[LINKAGE_ORDER_Debug_SH7216_E10A-USB_SYSTEM__SH] -[GENERAL_DATA_CONFIGURATION_Debug_SH7216_E10A-USB_SYSTEM__SH] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 80227188621decce3a84923292cf2d09109c5a22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112731 zcmchA34CK$b$60klFUAnnaO0uA%RGf1;49Zgb~wi#PiBzZEE zh7$Irv;_(jC?BPTQc8hRpzNiTQYb036lhBqC|g^)Q9ep(X(@dFbMC!QdhhDWlKuS6 zFL|EvJLlYU&;QV* z=2&^CkQptHmdiKe_nYwlFvvWV+chPKo~($r`H6Oy%cG@Iez=@Dnj>k0itu(n;Vw-$ zQY5-t6y2SEx_vFW;i1w{JMCS5T4*Q>Z>vVM15v(66$a4>RqCM*M5Ww#wm?MpDxw{J zB2-~2moH}~Cq{@aspyXQ>8_M?Ac-rI{eF@iOfs1-k)R<(wZ~5d}Bf0F@aIrjIJW?LX6^f;DPRTv)C*M)dO%7*AauZn;e}|%aHGYDy_2=?( zF?WBqTzU?EMGd6n7qe+7Q#!0(PWWGL9vaRJUc5@O8nWrF^RVshuAxG{JbI#ZDxWQ9 zOQUC08CUqrxRU4!+5Fh42W%wUCCPnLSs27dwB^W=Q>E-jAiiTgx4^jN!II)O%)qam zDckF<#O(~~!VPx$-g%%qznJd+KBA3eksqDu&L5lY{yu)T`}@RP_xH*9?(b6zw)bpa zaoqNr%_jz*(fz%1uKRnj*!_KEsr&ora`*SKTKD(y2fM#d)Vse=lEd%Vc%^+(P1}1m zZ$vxB&aEdhxME{x@e${|?LCW+p6vQMcB<>^`2Ag9C!W^zb@C^=zD_;e_WG(b=bA%f zW0NO_j*Ml?<3oj`xrzG}@rUpe-lFwqCy0k9CrafbG`1G;g1|7y4uC9Q$U)dCNm-^* zCvPJs6*M`1P8M>dQzJIw-5`dWo645QvJ*#3qZ2m5Js>PhO_XyJ!@0~*X|kX_TSs+^ zS&VnXq_EaNkBv2rn6 zDrz_P0q}Sb*v+)X(hx>^8n?8+GzhO`h|2esM-!^tcl%}Sl_XM08aQ0iclt@U9hn>| z43{T{#zfhc8{c^9w%ks$N)Wq;n zMRL$jas`u2jg8%7qu5Cl6O$z=C}ktt;gUg^j(m*bE(aAE|5hc&j0$L={cH8sFvadn z2E+N$T(N|B2OaJWiqMF#wq!D+Lj?k(qtDx%$>c`5a_7WUKw?B@F@FKNC`3m?<*zgSSh5tnh|#IkR(!&9(oO`O_}jh)z-8& z zK#-c7$c#-5XNSW|oI!l!%yRYY!dzxFi~c_{Stv_SFp0={1U_7c4=?qru}|^kr_{7) z^nPu0gZ2hVdo(+dEew^iWpbkIBT!bUr~^QQ?P|%E8^$mK_c%2+Ts}pix^{a8!!E^; zFAoh57X}|ybzX(ed3JAfLdWx~$csGJCU3XYZ+s{t6}-?Rp>wfELh*2qgpr@@kuds5 zkA$&j+6W(~Ykd+kK(~RbK{1yt>NvwN>;4vFi~6*!7}Z+Fhfc~tk46?6(e-d@h(Dyn z=Oz$WjHz}{PI%l_gu-tkTS8bs1j^{Peg`<@1;&pC6-OE;k96M6pt7 z=;-}6)l^N0uho)^MH{(tdy;%=0)G7{Lb36oJVL!}@ijK>u4);8UEk>By(XaZyVQCDSHy3nvGO-LaIc*kj;+g$y7RQGQha5CAg5yOcja* z#ked&Pn8U&whD8DBGq#?eN?X{eM*I)OcwRc&bv2erqOA!P7q}iAL~rc_z$IH25A@qgIEW&qcmLe(f zTASp9?PM*nXS#^R?2HDVQg$%3%O)13yJSviw~g!ykd=lCrO-brBn=zwo~=wb=VgpX z9{vGE_=orjsjWX-hO=aUrdV-DHNviC7s3U zObw|XY8|RtsXYeNaYT1&Z9F~GGN`v?CrX7=deUq3wkK5T^$bsrC>g;q0MD_q_f6#r z2n5EnWNfH7irEI@E}a~E1BgAA-ZU~c`~tgbW0OOrp94e30d@!G;&}!Mi-5X> z&zL3T2lc9yq2s2JymPy)0^3IN=xpU&b)k8+qPgBLeeVe3zd~uU$P0P7qvcVZfiOa@ z9hmAPQCRY%0N>^pc=cSR`XC2~<HQ8!Pj=l37+GaPI&AT{CA>lvOwe@%;iJUg6& z|Iw*fJ)1CC+H_*=HA7xm#bDS$WuOCbm(VjugK7^^wI`XiM>8ll9i5npsKSh7&B6J~ zbZwj_tmI31HM)Her}pV-a#xP#DD(|o2;Z$l8jXJIXlZg{EcD6EvgPduzefbWFNXfW z_I|HiNXFtc{QC%|9>qg@rKr38qISBZg~`d%K^xgsE*V8d$Z6&>#V0ED@AS*uJUTU; zdx@=A9T+`^KGwQ+jCR(Z~ha&)O(=NJ@Ab%pyN;qq<&FO=Qubjv$*iG>k+ZjF=tADDpWQ z*L6Ow;v^=;IkNub#Glxh1|$>K;%V|+oSZ6PHa3=77MdxXirmg5dvXNg- zaxtF#rJZ1y1`J0Jx5nzngsYnRBBHbMq&ro0aFQLiP-!f$)MqMFuA@?3Ai3VLEiea88n&uY|VE!O(l+E?nK$c zw&3ioelgn?s?9m9Viik{o^*WFP9yZTmo7As2f$C&>OvEpw$WTg`eaY$vzZdY)}e{w ziEKf)3_~CjV}L(`icXHmy6RSH5bq+%trUZ9pa$LM++=R}-8N{pV8___$UQ1?V)$*m zhIiH5Cye~W6}jSM`OI{6PEULU%JIN@B~i>QFD_TLdo)P45=nJ2qfBVL-%jsq75IZ{ zQ@e44XqzHhSf16M+@N7y8jI77dF{(BB(>?8%CJqHP1wqoR4wG#Zb4m5j}V7C^@Pv*zs*lSIBsKIZde0I~`lmTbW>D(Dr`cVr5oN&3KXG$WYPU zGxB=yc-q5W(6(AQ1Q+$Z!XVuV(pLMPP^BAWTgMQ*mPd6O;FbOo4=pYBR(t<9aHCI3`bE@s;{6R$zva)u5Duj!k;t zn#i6kDXtH9)h@@=!_p8Iv4_hia;4GSMCk8q9Q#N+t~uB^RS^1R8!cOllAw~F>dtiv zJ--hQX|12Naa=hzspd;Me`$;un<>vdhnCZEJlVfAy-<}Cv-{l1=Bre37(%>FZYNR8 zm3OqaU$K#0-6G>9Dm^Ftc^ktu%z*G1xigvB(JZgFv9RJuiGd+=DuV@gTA!yGJ5|$A zoHddi%cIdR*cc9yMs5znwahQt=yx-H;XdRf7_y(U5ne}xoNeG8Tpn#+XJcafw2#}a zLa(*4aE&p|_nSy})y^i8GyeSK*qB?wD{LhkpqgNwCbK3QFzT8eA=pRcD;OhNj_8+c zv@DuvJ?7Cq!%%(u_|UN|Ek=c=Z`Xd^=m%FVVI866FG;eyMoY6@k8j;Y#4SbhN>PJu z(|D#R)JtPJy%~v*(3vZwJ&br@*En{foG1+CvGUy(hQsOi*XJAdji#nRe1Y5@Oc5tTaYiG9WYf*!q9*RlDo zuZs(|*ITJ##mFt@#WM$2xp4MB_azyZ??&_7(YzTvvM&EY)$mz8n3+gSu!WcY-(xEQuQ86qY}`IjivPeS9|XL!K)d!%CMXq4h0oXoKm%I2 z&vns&SMHy0BY+L%%Kc6o1&SaO-eh}!S$_CYE5fx|+OKktQon|u5Yzf|Ilaf4%~S9z z0?;JLON8};ylJ4?Y<{R%)H5GLz}DJqsW6qj%T~Zvxi5p}CLLSQW%=y0ZMD1B*oB2W z7h-~m%&7@go-yaSEI;xbo4if=k<25umse2An)l?YJ@^hR}DgL8JGl}qaaV3?Blzp~TvejZMkrYdMuHIS12^_S@>MVyr zvY9q14ca==mOQ0{-fw?Ro^;Xvng)8^9tBDHr5yG=@(gCyM!S<~F|}ZkXKZA${Cr_@cnVwX zCGi6`;@vD$&OT^?u-u)n6`4QXMtG1Va!rbK{zNGq9A$N3w7P7RO2JO`*EpOFLKq9$sLx(Gffr1F#eGQS1 zXNs}x5SGXFt`U~m+THbOrFzt_dWd;(>@|0Esvzgo1>R)u-2op8SCxd9`XyY)640%% zNp-9|frT&HMViBA)y$EXC?-SYL&P+kE3*AvrHi5P3vC?Rn1i<{YJX!$W!p-J+Oh`eY0@ z+#+%!S-qTfJLG%X+5sh(rqz>$p`$o>fbOH)hCx0+CuhtiIE z_D#oaWQ@kdWIhz0wvk*<^`NNz#Xv3#pLfn3MwxYzBX&A~m|& zO+-rRLASm8I%)V1lx_wqtIu(`9zP6g?P2MBM($`~@1Dbs_1!NjhRlQ<(&6B$}}59y4aLCa3SLrYG(G#S$ANP~kb z$vdz)TRvWVz=kG9gL-qSNUo?oo$_o&ZzNr|6Fu+U3WfEukx@K5048dAR=pBv5Od3r z#L8%TC^AUd4M|d&kEXK$ud%hGP1xnGQ#{5Z%1*RJI;)D4e@NB4tp&31U+d51Og0jF zSlPo^o!afT>ESY6)^I@)8iu>7jZi~gw-IjxzV~8U-ir80)qgAi4bG%=V+_86#T z1;3`qLVnp><=*%2srN?cxIO6)%OkoJvR$FP#%um-tGvVu%4n~4=Oa3^fY;U!dv7>fA z55GS?y@*b$-M-=C_P0|FEiTMeE3={3E1AYvy(Le%rt57*?yOxHUujk@j4m(EVl#<068l?M~)VG0EhrI^%PNvoyQgtrKAd}^{??@d*ji@OZq_yw^r~xs*4m z*H1p-H`4A0X|QSC_n;F@20#aykQUn}vXfIq?6~7aRc#{+J#C1^G=6FVc^OKc3~Nmd z`fFLf+;pTquE->3}NH#Puj9B*VQXCODk-63M4&ilX_zFUI_Pe$s3tTr`!y_8KsQDw~P5` zD#J6hc^lnMrqkJ&MH|_*Oh#!VLxqZsXAkqV^`mn(%Bz^NbOOgR=zuLxzLspn2Ym-E zeNOGo;PY5;Yhi>A_YW$02DF}e5sN3A#dDF+&rr6aisx_PF>)9&eqz(Mvg z%Gd`^pEu0dXm13qUp#L}lI~4=4x@}4z=zdGx7)ir5IJLVN)`7${Pa|xRO3ZU91*1> zzsSx!V57ZB(oSGkx}_NHe2rpuD^?^bct?XyG#Z3^Bw;Ias)r4Oat9?P=omZ25xQ#_ zjUH`4QXwRWsEQdxJDG?wp(IN;bAwElNMsPE=duRX7WPE{rphwnzw5BRQ3QW}Xo7P# zc#LCeTr48#@Q;9o8jx}C-hMyR2y$ruX`{Z$PfhNbRb9m=?6HKf5H9oDplAK)=jSw;gnpil#_|vUOyKgOKDAc9kUJ z)`x(E=X+1G5g+gptH}~gXFJN?=Ow54i}vM)9=jzi-vFjw{?_1-}Ae9;h}IPdI5+g3(9tQt0Iimb6KDo>*@VuY8YJ6`Cx&>!f)iMA zRfy5kHWg15Uu>(!R;j*@sL3CB)IZcjCZ|)X|2I`}2FKOJ(IJihK^wz<$>2@n>z#gv z_^X)Oo5ufDo9J7JSl+p5yMQPZ)Q^h>GTXy)PHu+Cr`F!(R*gHW#_!prxJ2W{;_ustc56u>qKVNT z*a&xM!imYrJWWx_HyVm@)sWBA_;)726|W!eDxr94;zL~trV2-O6EKR{#@CXB$`{Jv zrzjzLzmwb}uP$jFNjz+$d|b1RE&py9gOEl>atQkQii__nMhXTzj^TO>BPYdvWaAoO zt_-|4#yFlS(fr1Z^FrZUPzagcDDT$poa$PdP&i~0u&-SJPp(50Uvw<&T7%Y=zu(5Q zjd{>wL*cL6sxReo2rP30?%XPL$R_tDmfML(>!h<)hRtM^C7{ygA)SviXr*fHv|7BI zi#K@MhHDH4eb>xAHWt|nr2%9aibWTu)4m4c zJGd|&1w-M#>E6ss*ySy=SlIfb?rI7R*mT;_SqjbD z7~0gqYzljcLNyzy>^rQEBz4sJQPpl} zmW*;*f7*a`8896Pg`Wi)0@mQzgq?ABsh4IthBjV4tlm;<@)Wka**ND;pxUnAGNu7U zD7_nIS|HRzw?ViMgz_>;_p)1^2Q_F9fmUt1K(dS`y>!0;jz8+HBSx&a6C5<_ImJro z*vSxlEy#FF7LH=k`E_-R8S;o(9o85;q&WICUC^1sHgMVt^&Vw5gLW^`>Nu5E(Xoy} zx`#F>V6F?$y_bXO^xiY#dh-#}IB|DDB)T z`-dTP`^rMCJbebMWTEgcUuGfN=@MaOEW8yRjry7?i;K$~quKudZm|)uteJBp>F;d? z?v|4H9>qz_c<35oDw5(cPaoaRg!w%7rj6-j$US}{DJ`GpEJVIkxaV?;3I`ee1&1C zSV}4b8f0u2v`y;hJ8eX=OiI&XMKfD?&_>72h*L;cbZtg6i_48lDEw+0s@q6+mNR^h zP0$W%9xMp$D@#>LcEwWwW-tk{UTE7C?X z?4jTrKj9O(jI@n|abu2L{&-x^G7a2XIun_k!59BT2{owMg}6f1#4LZT^q7sIr8kS` z#ASB;$k?eb+BmpNa1mpZN3j9r=p(iowq(miu89d8?5E9j5A?=Cr)sgK3C^mhm+B3W zu5&?}7>-ll!_pL19dW&9q4+IZ6|Oay^yM_gZ`gRQF?f)A9?9XJ(y!Q9u5Ynqv2&ia zBM*&?b+-7It8-!RR0g!_yEwQAd%UPKe})}ejg=Ca@`j?9t0D~I9j;;+ubyk8I@nI7 z8s5}+@g+9;J={^3tJU)KOmpFUC3I1_He*=OO`qCBc6gtyyYAKkD>JxLBozLxt@BHF zG&wO*ywB!MZ(&(=+%#D!FD_KiVf)AQVj0^&s>`#LMtNyw8vC|BZFBBVv~ky$v9+VF z`9EXhzqXCPvAno2vw#Yfsp!zxZ9G@E@vKyF@5#)<*#(&4lQxDc2rn9_25koAQG0f} zIlWk^hQiOWnUjHc&*E__r$pH2Y_{bg4O>jGe>PV{#GbL0e}FWkQ~RS>P{H~W?j0@< zjXuLxA?|WMa=K?}(wXa#48$G*NA3d!pE%d`MdSrC+tc`))ldlAM z3IEY~8xIc?nuqeBIOyq|=!bgZq>Y-R0wiDMU7XIa4PGyu$gV@bl%!$!sf5|d$@2vNSsMkxgXE4mkPqG_!!^}M-CbGAM`J6jKZO^Gwy7&|=B%`anB zh$waX+Mr}l2FhxsxrB6j=$~yOSwp&}i#2@2rXiQSfDNh((~CXXVe%~f)7nwy-l~znkY(%O^B632{+-%XljY@=G z-UC%6^s7BkMMEF7Q87{rtbBQ9sTSIABa{#*!sXh<&<|}@ZKq`PXKgaCk`^YTl!=lQ z5H{iiZN#-Yz7%+Y$dfkmcG=D4@`EeWv!P$Gsm#$dF6*am(y%o`cKf-!+ghJ*BV@mT zTXQo~;ImhuLrlU2|CEi6N5+Llne9Y_d6`G^(D!T%PheBEF?1aL-*02TuALnh_R50K zOgAtZ|Io&?&%?yw#Wh!0nz^R{UwrU+TLFjK3uq4z-e%(%P#hfWl;;q;pg+%25X7NK zBlI|%f{(Xzst73bBpdHu;$0Nw#YlM`?HZxS%WVoCY>_UYF>Cr)*y!0KwdDT1jgH$s z=-P$8(nid|G49UA#l@LpqqZ?jQqj$lxNG8L%AFh2G43L5)0n5*La4nI8R3%wC0uhO z=ljDpncSPk#%Q3U?x|;_rsrpoW89TWD%3L+rouztQ@c7bwRPoE8;%?jS1S)uR2&Nb zwJjuOAC6cb1ATRNp*k13-$uy-aRD3dR$G_}Rc%8qy9Z5%JKw6+(2H!e9N^%fGA9IS z=B*Rd2Aqr&Z2{e4tM4|l8y%btg%8^d$K8r(q+YMiY(*#jMg(qlc)@#UvBx;6!gE}pd!wkb$Elkzq??$EL#Ds-Q)k#dWd zq!=PIJ&<999JY~h!JNjS1QaE>5~`^heU@i3l9aFTC8tMLe~OKP8=_=D55?ZLH+FSW ztz^=>Y;^m`N$Ew{6ZneZR zmgtDr^|pR+IV)G1Y}hp7j?!=^3V)<(X}Dtc9-wn43cq2aQ}-T9pLV5E#A3CW=Q+c=vK4 zb9{KnDvNASR9I{-9kEd{Lg+NK3=JvnKyr0q8R@{!b?vY)C`XbPZOxwB z3pSxq0#YyU8%AeGxKf{UbC5q{EfjGI9pvPklRn`#0*m9n)*s5N%8$5V+`_l@=ps?I ztW#1g&fwX?mrLpRv*Z`KYh|&7sdu(ITcT}lMJ0x|%6f|4IyFJJvFR&9jH>}RO%;zk z*S=27%e9*z5ulq#B@eD#xQ~vdjaM3t>A6bd#57Vp)wx-lGTRk>>0+&-D<1M|ynp3F zp)#{lZy-0H!K5#R3JOx-1NlC(wRzq@+|$cF=gI&qTI_UuRyiLGfmqefFe4~;U1&asU158Q>z>!~DXjJ%w zcS9#2japoFp1~Tz8FrjspTi08`bB*<${^m~fjIO9rL>{R4oQuJ?zmRHVyoH#Ni|ii zbLo{j>!TMo4HXV{BoBSjro`3fi}+4aZGO34$?yuwk%j7X{bEQTMf;@RepmDT^h0#U z7V9mzj)APQTy11*71+iMe4Ky8Mzgy`!#C1rZG_u3Axx%c(S{B7GZ7kGVWnEafQd%i zZ0MUY4C*VHn$Gs;ZKdvE65WzW(D4Z8h)h9U;;X&dz}mpYF#+o9jwEWQ0F{07~_VK6LYIQ?96^|hpnOp}^ zwy~*7O5uDU{Bxshd*KC*e*F3zqpE34Ez+% z8oZyk(J5i1V(3xT#0_ElWQjziJ|hwOClwePw5sY7Ty6?_kFY_is@@{i!ry2U-lj+i zSDR4F(fisA>DRQBRw4G#1Rnwr~rvhId5mdlq)8JY~+hLg2k+so|uhBfl$7xR5 zijh^ou;%?J%_$rGUR^|KVdfk+XFY{7wAs(3xdsIn>hn64*?Vn*cQLh$T@VuJQ)7nI z?U{j*l`79H8<2I$W_sWc8e{9vDWvjnm~vnxS#A!TSvgzA|D1;hMk_PTfm#DsCDAVr z)7#qzR`Bud<^UFu@K>-LK0H9wwPsztlK;m0a1n)U!T$$sk4?0y)oJ;T5qxFJxZ7EcmQO$TgPApdsyG$m8GSN zvdkT57i=zYc$!F5o2%O3i+=_hnD{gY@U_HBopz6%U0AG?iKfAV4i8M%=fdPfNE+Rp z<&h>#B~QjRz(eD;+jI{vDz zX1IEDxnbz{9-DrNRrISPc|om-$l8(knoZzp)@#nx3}HWM6Q=9Rt!kdXEXGMel}uC3 za=zKD&9cx6HBPz=t)t}*u0#a7#e8$Qx)_pwKR>+~K6QnpH#*-z*?Wn;p?WgWmu&Qh zq?)YFbghP+kBhPs&=}ZJqg$owGjj`Pl^ch4R2lpxM7{CwKy`Yl5~cy5WAnPbtw`|D zmI>|DTtQ`04SwgFVoP})`2&L-?Htldgr zY?XCJm1S@|6<-xob^*gOK1~;r&a`Er+x3v*Dn$O{@Blr-BUZt>@zc2Da-vny7N7Pa z@GD1qa9JpRBf@m22N~4RSh{T~u~oqr*qXsXwm;o3iO)t14d(`Bv!VE(#2>)_9=!bY zj->yLjsAL9{*h^H;U`XU0o8Sx!{d z-l$EB0mNX)sp`-qt7G-AbxX+L%P+_WVzpBGrtpn6ty+~CUO2xnTPdHpSiZkfUzWPv zX=A(5ElRO@Z8vD+lRb(M<47Cdr6go2bhy1I7L=k` z=q}TaEZ4RA8Sdfn_UQo|m@Pk$rCwIfqQ5EENnfDuSkP5&LG<}(S&@*f06A1qFQ)I< zmM4aeDULt4iEsHb<|v$0477;ZQ6FCs#Zq2ze9^|?E25ND41d!rgVyPQ3wcFP z#L5%AvL|BIp4{i%uh-d#Tf-QAvWxao4wg$tbAv+?RJv54W9zi>9g%#r zF3=ZWM)J{34t?maCsh6DYKOk~RQ=BO%ctr`+d}&)Pt|X+cfJVKFQV$# z?3Yi~?|i>}svpta6g}2Y>Z$q>-AvsVpR&s%z4JxME>UF{+Fsmad6G}rMNgQF(8u&k zl26%%w)pl{p0dkJ`sGu0d1>!_F|tccwa-`f%cshFb-#QkWPg8+jc>q>iujX`G(be~ z&6HNleslkv3d6Vb#+YyX@I$G7#*sVw{UJ~*RnA>GE`+drqW(EIx5R2KR`|D4J~ zAL^e|S?D8uaK_j|y0w3ze@<2AC;R7AE&dN}ocr7sKQXQX=*Qclr~NK1f5uGqrMLG+ zt>V;o_C~D&)pzwqts>QT_eQNk)%W&Btzy;p^+p|+Hu*qr)GAv2kd3-EC!%k+l_%X4 z#p`WonjFfKZ|I#vS@SbCj#d&)-fljKi_(i_HEH=9TU|`9$>Rmh^%WaeD_f<@DvS?0 zn(eDLHnXrI4mv3nzi#7dO(^NEv60+}ikd%eV`ya&=)UeUZpJLAF7y?f@eCGsX8hHj zSxS21`gI#itNyrl8y{E75k@-k_Ah;KK|5u&Z}-84skq|$Za-XZS>NfI%b|KH*YdqS zxKJ;}_5D7$P%p*x-~Dj8W&KyrT!QMQy6zAA;6l9=*N^((LcJ8%Wk|1g3>b|Th53wI z7A56-~HBlOcN`4hd;E0prR(yKw4 zHk@{BcYb};uuMByd!knZ^YLEklXBRn{WLwvPf7awd!&ylZ%R8DdyyYiUP|v0Fs6+@ z`$QGK5A-Tu;d`c6dWG+7uk;Gvv%S(QeCK+RUpgh3=ti)P zj>}(Av{g{j#^Wz2)>cs3#?*@KNjrSEQ$g~%o*5J-pSLlzBKs+PrLlYjyF|~)+TUU` zbIT3mh(Z}(f{^rg*^0Psak)A-u$aXfADz$|S+0-aHWJBnrDA#-eqvZ}{kc&x<)`Z< zY(~YNPJHIONIR<}pKinSH3JXdZl3HfO)pd>;lG1`Fx>Aa+(o-mT6BM<=;%v_9)Wl0 zO(x!rZcEs)TdviYXRvpn(%`ZV57fdRQ(}xgI#22%rqiCPU$hC5ZEt+Kx`Ks0Y%#@d zw!F$G>4D@r@OtVXGa$$cmdB^@Z9r+6|5c_pETgx8u_ddO3)n6I$z?^)~o!@RgTGUsyV`s9KzENCw+s#Wux<6$hYb0jF;YmAR1m%}N9RplvSU&nQq0 z8Mpe11_KERsc$_F)K(h9=mufhI7zM95D+s3;8c{M!R-UGTTRyJq*QpTP23YracugQ zz+vnu4(p9^hC2JGbFn4RJ|)Z-ZFN70PtA=@93%1~w+>1FCL8@VKHW;wj%pEfTBM_O zOqTl<%d(9{Z~WAakE`Da)Y}JKnAs*@v+1q76@5{euld%W1rE_Sa%UGS)IV+?z(+Nw z>)13%7bb@PeXFd|%@FEo<66Cr!rTKOD4ak|k-Iqk@45b!8>mmQ=$ZlbBoc7sSmPxtSw zL8=9y7pkfoQoB^WxPrSqXQ%lHxzCcXQsN9t%J?b2{16UV<5mpMz;~}=G6p`~sM#IW z@swL!4-eqt2k(Z^v&;3RY5eZ|G%h~HMt^KqZ-k$zsT3FDa*FR_4oMp_yC+C zj?D0pX#8`iI$NZJ@*!N^)_%@lrNO@*uGFYL)Vpwn3$EFxi}4YMtz6*ONBEF!__LQ= zyr>bB@#qK*_`B(a3nL3>mmvrdiyV{a-Vv&U5v|_V@U#cXPmY55pis-Hhaazm81ar{ z6QVCRC{^l9I8)9SQBcbZ(;arCk1;&l?iaOOJ-aZsQmqzL(Zg?OE&huO zHq-eAiSsQPR6jyiNqC8^8-K`W{5A=hBgd!f3)7gMG`uZU_dZYaQvGvg0)b^)b0WXl z>Mbi5GzeP8g>hWXQ^$OU?xoPZ9M_}pH5F}gU31qN$KZRfg<4s_xkKo zt$9(6jMA-)^7$e334R~`8C#DY>8*f~6&&x8cIhbpO*Z*UK2Qiq0`$Z}bAF*(#Q3*Z zq2DRt9vr%N^ET3fnIexn;eWH)(ck39mLJmab?rm1P|eloLveq-S^~RuA)5Pj>_UFe zFyxka~-uFJ|spoHV*ft$I$55_&s^5h>_c zzok=irCwD7jA#78ptdrjB7&b)${6DOZChRQP;DY`p$i;nUTa2Hjj*2K813fqzSbXjMJfT`oMw8=kYHA4jm>B|Ch3baWK3j zmEaTSd@!!Au2RzH_u9o^6yYO~XE+LP8!l*mB7ez8vPYHmjM8qF0SlL=FQ4_Q+X(;2 zrs@-hJ z5yy(lwaK&m62a&!=Xo-d!&&fWa0mnQOBEEiC3$9*4!8Mr(9;t(Ljwov%LJPJSobTG zAj6QuWbsC|MiW&`H#I6gNcaq>9{MFw`)u@&m2_i%_#~F@5pGNj+XelBP0-^>5FJ;p zmn#=)3w0b}S8($$4-Yi?dv)Z$=uS8fUU#%k%L8I51Q!cp9e})-U(Cyt3Wk`QxYcNO zN?!U|^=i4ndb5|6?_c#Z(|uIb)OeM3zUl7~@DW zHbU?X3LdT{hA7S zjfRGo?)MO?ZU#P2Rqc{R;Brg8@*c4;-E!$u6$?M4jTT!cj~9NeP4IQHZEg8XxzdfwPO# zbKy^0nN$Pdn_8$qEFkHV%|~oZ+^84;^6+ZXKnBxzl2ar!%W9r)pea`bsXTa&h1$Zb zsv)}1TWtONnwA-{`q*yA1)CjnZH7P-}y3SFt1_|k389X-^IZcwUHDzrMyOKx1;KPkHz!Pw*dd=$QC)h(#f zKg3WVm1!j9+5U&K?@l-mv3TXQ))VykaKw=ta((sOT8gwvLErymC( z#TssA)u?E4Ij$oHXObfqaaGAZwgghntt@qx_Cx_kpT28XRY@Hu)Bn9m+Qi8H<@+i^ z-`3S-+P>8m{6?%Lk>w~Q)_#Gjgz|Mtm;q&WHDPRB%4?l~_pguRLZlGi38g}H{=0h< zi6Q>3uHy9+8ajJ~B2kH&gukxZydm{*)U*fAw_P1ZtB!Pan5^wjt2SrMVs14UWk5YL zjq5pPTLPYA6Ck6T_L8xfL^~&t7+uQoXO~pFoZ){Jc^M)6ZPg32kc&#S{v0+G;)zv> zLdP7%M)j4N8sGJ~9-~ruQwD|f`hp0qRU2d++rzvVwB$yIE;pp~U4u+I#x_ zpzez9O5vycQsoZx^EAAabHzegI)J+Dar;zPHHH~^0S$A>eHWygyB=te%l$o^V9w&p zOH%kRtBM-ba-wpca+Iz4Y{;|Z5Pqs+euBR~w@E8`nP~||3ZTDHSD~No{c?toRJ#yt zJA)r1fy78Z)%u5)HBotpizAT_+VoQBNxeuU2IZcm>K)C7qHVP;$Xn`JL9H46q|2=7 z{`&CSY^uo+g*qwat=de^pdM9h#!j{gX(Yu42Zs#<_Lhj3u50qP(hJ9@7gs9blC7Mm zr<~IA9ObW9DJopGNmK1TkAMLPxEC?XCixY`Wn?g+MJ|XP3lJse;%eNM*U|fU z4Nr4aTAYI@8LAxY=IKsHcL48D)kKx2_|nnjue*Xrg`9RRa6Bw$b$- zr3@u%bef+nCI^eveZI!m*z)w$Hp%M3<-PP6_&l(N5wpPn9?XcO9xmS>beV`y)$ecNuQUg6Tm4vdXTDn3KVUT-o^ zdL79ZG5nsthPSlU(7OuL7H>RTRmWIyQ6m-?+uE_mfy(M_uc4$G+xSjPok#(_ji&Ww z0nc=SgWJ;bIKIGk_M%Svc3tre(`QY{;TTg3<&CM-%wlD_I#t8U#_~!XF~01DFHoMr z;8Y_laq@=^LNs_$d`utd7`Q-xYm}DxRrps`xMT=9)v7d8@|O=hlJw#=()jht`Gw^b z?5R0dArCJ1jI@`yRLNCmkUOqao8gnTBIV7E{DlDRVW|%8QVjir^~OfT@IjjtHChs} zIa)r^Hv3coh2+9)Cxh<_;Nu7Cw#t97P3PMSyRgvoa(&;%6>HfR6HbqR_05FZcCduM z(Sz=;mC5+BnT*+*iJI|Il_|u-QqEkpGOHGtJge&AH`|JqIX#AKd;z=mXWNGVZ`d~4 zPPM9^Uqn7-vWi8~YLk^vX$bmzt9`kz&4$HInT|k&>61epJCgEoR8Kv(7+z>BRIzId zw+DOXqq6kc1zx8fU0%fXj^WSRP*fhiU2d*dq3^H>oourWzT^lEFJdrm*Af9e71_4X zMBTeRlZ4=2S2X-zwrRJmhwQjsQAkjEMR_=vyr$kq5Zj8sZg{+^dfZ?RSN&bF$`PoQ|LDB&+Ht1HvP z(>6tA4!iw>D;T|`PjGDgxy=n0A6mc;+zfVAU|*YL+heok;j0cyvrLYO9RR{9jfY8S!EVD7|5$X)Ap%(eFW~r&%OS zwK_zSra*n3(TFNLDCZ3>OI&Upof9A&RMRsMFlw*T#y2zcxOdHmI!O-Uxt3Dj=$yR@x>NW;< zr3?0%0vrr|zRLo;1YGah?}BppM`~a;ioe)P@p>)KQ&D$|zh8?^5-DArSuS8J$3nGo zV)-1_$SW#NF;rUWBw#?6ohkI#3u-;K|L})wmU;22YIHYCd!O`a(^;}>A3g0|yeKV| zvsvn;odt16Q&B-L4Ja7z7FF@0f#<7M*Rn@YwW2||w%@mP$anXqZtviC)Vfn4)Jgcv zMqN*{C_3aeV2mpsH~nLqo4%{l&}V)u&hK8>Z-r?ws^f5VZzttd2W>wRpiLwV(8+m( zUu)}qxz)>{Qvp2`K_4mXSd9x^icsA~i|?enEjH*Rm5_C@41dbjQ>Hq>WqwbtBV2y( z?=E|U^;N4z$ISbRBMmJdEHlF{UH!Hd?eKS%qq-SGw6GPO3Jy(oRqcx z9T1QSJ=b5hTCVbZZp!b^Z1un7$4@@sJR;JObTl1H$J2>)GM!30gK5V}J0k5w(oQt( z#L`YY?IhApGVP?&VlXY7v=C_#NsDM&#L^<37KyY-rbQ|p8B9lpIy#t+I_aoLM^R!l9gU@<@pLqijwaL5R5~`8jydU=NXH`S7!-=7WASt> zk&Y$Pu~a%fn2tN?xJbt%>3B39hraQ2Jdutk)A3X~F_=y`>4ZopBI!glort9qs7@lC zNTw61baF7Abka$YPDawnXgV27C*$cPYMV?aQ|Z)TI_0EOBAtq)Q_*xPmQKafsYE&j zV~{mqjzQRC5C$29MFwG#LD*yvMj3=v24R*#(6QM-M}{NIk?F{GWIVDSnGg1JU_b{J zbYMaUHgsS_2Uc`oMhA9uU`Pj+bYMycwsc@j2iA08P6zgMU{D7Zbzo8lHg#ZB2Uc}p zRtI)uU~mT(cVKb{Hg{lj2Ud4rb_aHMV0Z_XcVK!4ws&BB2iA9Beh2n< z0DuDo96;az0|y{DK*0eF4sdV)gaafTK;Zxj2Vgir!vP!)@DRX501p8?1n>~RLjVr} zJOuC%z(W8J0XziSu>c+dcnIJjfQJAc0(c1EA*el5gXR_uI%?C@sHs&`v!-@U4I6j} z;30sA03HH(2;d=rhX5V|cnIJjfQJAc0(c1EA%KSf9s+m>;30sA03HH(2;d=rhX5V| zcnIJjfQJAc0(c1EA%KSf9s+m>;30sA03HH(2;d=rhX5V|cnIJjfQJAc0(c1EA%KSf z9s+m>;30sA03HH(2;d=rhX5V|cnIJjfQJAc0(c1EA%KSf9s+m>;30sA03HH(2;d=r zM+A68fJX#)M1V&Gctn6l1b9S%M+A68fJX#)M1V&Gctn6l1b9S%M+A68fJX#)M1V&G zctn6l1pOldJR-m&0z4wXBLX}kz#~GQhFlH#8g@3IBX>joh8zxg9CA6pBLX}kz#{@Y zBETa8JR-m&0z4wXBLX}kz#{@YBETa8JR-m&0z4wXBLX}kz#{@YBETa8JR-m&0z4wX zBLX}kz#{@YBETa8JR-m&0z4wXBLX}kz#{@YBETa8JR-m&0z4wXBLX}kz#{@YBETa8 zJR-m&0z4wXBLX}kz#{@YBETa8JR-m&0z4wXBLX}kz#{@YBETaGJfgrO3Ou5~BMLmC zz#|GgqQD~xJfgrO3Ou5~BMLmCz#|GgqQD~xJfgrO3Ou5~BMLmCz#|GgqQD~xJfgrO z3Ou5~BMLmCz#|GgqQD~xJfi3yQQ#2;9#P;C1s+l05v4JJ1_2rcXc*ve0CY4G&`>~Q z0SyMgBMLmCz#|GgqQD~xJfgrO3Ou5~BMLmCz#|GgqQD~xJfgrO3Ou5~BMLmCz#|Gg zqQD~xJfgrO3Ou5~BMLmCz#|GgqQD~xJfgrO3Ou5~BMLmCz#|GgqQD~xJfgrO3Ou5~ zBMLmCz#|GgqQD~xJfgrO3Ou5~BMLmCz#|4cV!$H?JYv8j20UWGBL+NTz#|4cV!$H? zJYv8j20UWGBL+NTz#|4cV!$H?JYv8j20UWGBL+NTz#|4cV!$H?JYv8j20UWGBL+NT zz#|4cV!$H?JYv8j20UWGBL+NTz#|4cV!$H?JYv8jhW-%)9x>n%10FHp5d$7E;1L5J zG2jsc9x>n%10FHp5d$7E;1L5JG2jsc9x>n%10FHp5d$7E;1L5JG2jsc9x>n%10FHp z5d$7E;1L5JG2jsc9x>n%10FHp5d$7E;1L5JG2jsc9x>n%10FHp5d$7E;1L5JG2jsc z9x>n%10FHp5d$7E;1L5Jao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV| z;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i z2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHN zao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y z5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL9&z9i2Oe?Y5eFV|;1LHNao`aL z9&z9i2ObIFkpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%)03He8kpLbE z;E@0x3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%) z03He8kpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0x z3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%)03He8 zkpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0x3E+_c9tq%)03He8kpLbE;E@0xN#KzL z9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl1RhD?kpvz| z;E@C#N#KzL9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl z1RhD?kpvz|;E@C#N#KzL9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl1RhD?kpvz|;E@C# zN#KzL9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl1RhD?kpvz|;E@C#N#KzL9!cPl1RhD? zkpvz|;E@C#N#KzL9!cPl1Rlwhcsd@DN0I;}2|$tnBnd#003-=OQUD|cKvDoC1wc{& zBn3cH03-!KQUD|cKvDoC1wc{&Bn3cH03-!KQUD|cKvDoC1wc{&Bn3cH03-!KQUD|c zKvDoC1wc{&Bn3cH03-!KQUD|cKvDoC1wc{&Bn3cH03-!KQUD|cKvDoC1wc{&Bn3cH z03-!KQUD|cKvDoC1wc{&Bn3cH03-!KQUD|cKvDoC1wc{&Bn3cH03-!KQUD|cKvDoC z1wc{&Bn3cH03-!KQUD|cKvDoC1wc{&Bn3cH03-!KQUD|cKvDoC1wc{&Bn3cH03-!K zQUD|cKvDoC1wc~hASrZ^6!1s^j}-7o0gn{$NC6K_2r*L`1R{7~t}+Nr@W5gvK_G+aBXIy5JctA6;6WU~2M^)^LU<4dFv4V$IDir!!~vY}APyjf2XO!^ zJct8mVQNYozzYxJ0AhF$2Qb5fIDi@+!~xtektGfwhX-*0J3NR3=;1*ezz+}N0D_qI z5(hBEgE)X99>f70@gNQ$i3f22OH7i918Cww9KaI~;sBy}5C<^DgE)XHrqsj%T=5_d zAd3fa09!nW1L)#G9KaV7aN+>Mcn}9L#)CM3G9JVMobezIAdTrdaR6&Phy!TjK^(vv z58?pgcn}9+4jkzL4p^HW;DAl&0S;(R4{$&}J&1!a#~*qS2VpLA0))BD3J~TpFF=@c zW`I)zoEzZe0A~j{J;3<^P7rX0fKvpVBj6+fX9+k>zWqc)XypXfCq6hWYoRScD z5C`>h%0u8m9MsP#6@dqFP(P<^1Rlge{hSgKXhOt6{hV?Vcn}Bmb4p9#K^)Z2DKmiw zaZo>}a#5;6WVJ&nZiR2XRn8r$hxF#6kU>aus+G2laDGSD+;m z2laExSl~e%)Xyntfd_F=Kc~C}9>hWYoKhEf5C`>h%3k0>9MsP#fq@5cP(P;}1|Gyg z{hZPmcn}BmbIN4kK^)Z2DVc!|1rADQ-~kRwXy5@3N@?H$4oYg^k$n2oX}v|SxnSXr z|D48O9*6%YX40oCr)MkYPoKqs<9c(sar&Xqnvk_9oAxK?6+I-m%8T0Bu#fgIuH?l5EO3h{-acB=`FrvhMh#Fm& zR@CWmQvzA+ssM!vI*hyi-a&UbOxI`TNxi*6OB8hR*|8w3w_IzIh7fnjR1fkRE4b!i zzTB9{ls%3ML8_I;bmKI+OZJfNU$70aR-e0b<`F>-cS9sQSS7pUM1VSLur>5 zhjv<&0@Qo zIN8p2$UYUIwVODcFpmR?$(%+|Jd( z$`c16Z*2W-(w%=f2Lcu-=<2ZmIw9R;AxGM{{yi*(y3tpy(LgxCClD?3BmNboQgj7M- z;78DNB>EQJW5w}Cg(f%~iNxR0pm@c2K zt#H*yAv$dwkSuW+vhH4+UIYTE6JECn5rT+2d(z@Tx~Pmwr4vB?v4|&v<&K_8S;W;U zRLB$hA(a`Xk{K%H`%aOWuye!6?7;T45d;&8v!mG&_F z-5Xqh^HdZND6(!{$oP|x9z+}~S7>H%Lhp35jtiei_CzqIQ3DCfo_|QMilYE$e1i)R zW5E~Toy8y9-~z-5HapJ`r8r}_QeFmFLwZ-W(r)vu{B3hnp;HO8T^OT?^in}1O&p@v+iz?4t zoU2YRdbN9UaI!=ivQ`<`J0Y>usNpcnSsX&~s+I~=oJc}kp?i<@YgfakuV)wLmQLeV z!)m!wIo(*or<=T5CN@N@h(qjCdeU~GI!8ZpJ54Bq(l2Bds&C>xgFpmXEQYJ)72^)Az0iG!K-+NUS=LO{`wr2&~WoN zZFF+zj>HX+D^5agz!6rxagO$HVN(b>+7laGfH;lTsq^8^u|UO%dm(O>Js1Aijc_=RBZL*`hWxRsSuQY9ViclQi5vV{Ek88fgs1Y_ ztzEsN!OIjQYpXIg$)_CeI){@DOq3Xgs6OM{_IP}Lrs4P^@l4PX#SuvC6JbxUIJ?-G z$5AFv*BA<3rnm<(1It)AWk}0*A1D0nnr0p*BI4-82-3s9J#uQ08$lf$o>if~SQmgZbvb}C?jg1-IR=Xl4NuMXp#b0Rod z;y7gW*}i!k?wFBtrh=3v=(|&WqN;3`C@2Qktl&Pss7L=(dL^lj9yXro_ru+v6ArxCP7L7(mGv+q-DqtMY993Bi#mZ(8i zpQC0grgDA`+;{ag^W!~YJhkDV>}UHf9(gkUQUVRyKeHZg@ltRHu+pH{E@=^KVUE=L z=?xMrUb4Die=ugGqTFOfdp_#L8zfk~2!i|Un)T&}7AqG|+gA5q7_>z30!UnCbN&9&9y!5Ti7NGiN*ef-XE zfq#`@s8io$D=-Z2UZ()(JrK}`chDn*>m4viym#FqoZp6sKKiBBLi=eb@xJv+aNZ9I zePE$=P*^~P53Eyw^Fat$0~T(dfDRv8w+QFMYZKx6Cus4Jb&GI*2O`$cBDAN55+7Z! z1m|}lp${LaTZHtH(BMzN|McFYFMWcCF4d#|?{MxMJk95o-IGbiHAEj*IHRAN=v|CQ@^LJp#Gmz$ezs>ihv%6MdBmPg9%c0N|5r=XE{>-ZeBR84AMM zf4Dw==hNU%cdvK*aHAXa*~R4=%?2J@7rXOE{jqDnxpa)RpIH~X^I5R3vLTS`zRJv9 z+v1M{73cgd#BG49a8G;!y{~L=5y%&OdBckke}f`=*~{!dJ+O*T)wi$x^@fTUe+BVR z>%9Z^IwH)fYmc43+*tYIOOW5oUhICYk67CIi;a^l{v5J5s?{KO_h%a_UVIVaH>}k_ z{V!~+eDQh6-;h=V-T!psWQ)&1_69iR_G{n%4MnW7(A+*EcXSBk+V~b>@oh+3WtFEV zX^^PyCH~i-C5nH6#8oyj^`ztC%pHw~7Mk*c=YQS+q2iw)w3mpXo3m5H4jt0?$3Vr2 zZ$aED8#{WkBa$h|Y(c+&2w0%_`+x+xx1axAzyifLA+VPueh&!au5pTyoo@s#QhXgE zH_{DZ?ETt?7a_j7F-5dRxXzDJM8M;uJM*S&-;W?a$mRmW|8L+T#SbBJl~WWwIR>~c z_X7R@30|i7Z^#VJfx(tP2w0%_uYd&dS!D`w|1)5L;`@i)XwaC$fL!!$A z6ehMp*zg)MC@oZ>83k%v0um%PL(nQ4uU4^@8-i~NOq93`qI!u{R!MilSo&5F=hDDM zic27J10yzvmgLU%&{|fpLi^1JmNWR`oAvDH|N8BZUAjJ(Lsy%)!`=LC-}vV*|Jq}h zZp?a8QNAcowq&i zPrvw{M z0rb6q+<+?+*v+J@SK6CzUk6jw@^}!e$7r%1%JH8WW+ZVd+_pt`77mW0#N+|Z3 zzk46IfDP$ELieEl_U#iq^rsw@n^?01|BB$JzfP?`9>C-3?_A5>bCr(Nm#-1p*YxEng!UAxsM1%T7P?OdfUT#K ztR;ZgW3js>6miWHM?c7Id<`Rp-oXbc_2<5qrL3d33EkTQu#~44h>h+ALid7zXYsFp z*MD3}GmABMF7XM~xq4aBU&TYav0(d`v9zNOpyKUcLeOISn45NJ+9HsqE!NSr_4ZQd zJ751EcaH$<)RyKEx`AvEysnE0KbgWg zrEmWbaa^FouDg7Sx_|eBhu`$S@C+OCrD5mvmK)wlxuJCdBs4&$x`*q%45#ke?rHaL z6g%8`=DzoT7iI{ceWF`w_{2uTCp3KhIrjEr{Fi-x7e`G2WJ_Gf-kOJK|GP2GOX%j+ zN3fvXyFSk2hAnH`k?wr{n>VrjHmq$5-8N4L+4}hdsrtJ!SQ&ZCH{QPZ;~poB_W0hj zc=nZNy@@0GUectigbbd(Iy>>KEM>^o+~$RD^Q(9z-ysD5UH#8^+M$i>IquLFK)Z7L zr6=rnbl(gzy{EtL^uD>rvEL6M8|fFhhEUF3AAqOVv-vfMag&A+^R8cbYripr-}AUp z<=Q-t(4Hp%ztFzY;k~E)lQSQ=iV}F%U9LlD*Rf%p z+jSos(78qMo!b?;hF;m$x!01a)4ft3a(0)G)}Tt8gAm$5B)X5Rk8l2>UP{9@(=A_-_zfGIC%UYZl+-@fHu$?#`ITHKKJ5p{njR|M+M+( zjSrl>@#UYI_`&0PQ@r2qC4%T)Vk5hk2&#LDwRJC{yH^11#*M=D#u+yN52DdyZ-GpI zknd~E@Xc2`z+c6CGM{QYdf|#kvIl9)-1qPQOuvDy7NU+EwoiU&=*R#$x`1{*KK;L6_RSylJ&|v_ zR@}L9;D(@vcB6Z`A#@OJszdj5<@XV2>Yn8;yP@g-=*k~*=UPuM7XkEgvEjX3=w2Rh zK-=2gNvYtEz5lXrd@1-XH9+cH50Ad{e-SGN(HBLqeNn8tFACik14yB_U6AKo@=G6f zUhvLO_p?z<_Y!@ho%68xCU=qb^)#V-+A4GZPUERw;6^L>`iK9Ol?fmE5wQPyRp>ej&wH_nJ<6r*vwJw= z@0%a{^~>J+*rn?`(LkGYVF>aIdv4CY;~0AHMmis%olh^TF?K^3vuPD2U2@|W|K-=e z|LLH23*w#;?b`ahB)8)}KZ@tR`Gse_>`TAV>ui|5Xw)FKH@|t?t1IsaWEro0bHY~# zmyX@?!a&5fxi%4iYZKbFt;;8g;C+(VXrClD*e8kLeUb>;CkgG7HpE>B?Jm|A?z<=X z&wf7gHCkd^pGT(Ub#?6i(U<&X;@2>0#Cl4Z>FlV!=XlQ#4)ENeKW_c;w26<+{qfG1 zKXz$A4o|Gj;falLctSh8HLR=aD{P&Qe)Ko{otJ2cRQ925nQaa3O>gkQuyAtmN32RO zS)4vbRsOV<^YxECo|n1*{~S4U^pUe*I;9A@Q;KzUO0lj^DRigo , "Project Includes" -******************************************************************************/ - -#include "typedefine.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -typedef struct Discript -{ - uint32_t status; - ushort16_t bufsize; - ushort16_t size; - char8_t *buf_p; - struct Discript *next; -} ethfifo; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 -#define ENTRY 8 - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define ITF 0x00000010 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -extern int32_t R_Ether_Close(uint32_t ch); -extern int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -extern int32_t R_Ether_Read(uint32_t ch, void *buf); - -/* Added for the FreeRTOS demo project. */ -unsigned long ulEMACRead( void ); -void vEMACWrite( void ); -void vInitEmac( void ); -long lEMACWaitForLink( void ); - -/* Extension of the API functions added to allow PnP link */ - -/* R_Ether_OpenEx opens irrispective of link status */ -extern int32_t R_Ether_OpenEx(uint32_t ch, uint8_t mac_addr[]); -/* Enables/disables operation for the current link */ -extern int32_t R_Ether_EnableEx(uint32_t ch, int iEnable); - -#ifdef __cplusplus -} -#endif - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const char8_t *name; - uchar8_t open; - uchar8_t Tx_act; - uchar8_t Rx_act; - uchar8_t txing; /* Transmit Active */ - uchar8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uchar8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discriptor */ - ethfifo *txcurrent; /* current transmit discriptor */ - uchar8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uchar8_t mac_addr[6]; -}; - -#endif /* HWETHERNET_H_INCLUDED */ - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h deleted file mode 100644 index d3255ee36..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h +++ /dev/null @@ -1,91 +0,0 @@ -/****************************************************************************** -* File Name : hwEthernetPhy.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Hardware driver for the LAN8700 PHY -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef HWETHERNETPHY_H_INCLUDED -#define HWETHERNETPHY_H_INCLUDED - -/***************************************************************************** -Enumerated Types -******************************************************************************/ - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/***************************************************************************** -Public Functions -******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************** -Function Name: phyReset -Description: Executes software reset of PHY and sets to auto negotiate link -Parameters: None -Return value: 0 for success -1 on error -******************************************************************************/ - -extern int phyReset(void); - -/***************************************************************************** -Function Name: phyStatus -Description: Function to reurn the type of physical link -Parameters: none -Return value: The link type -*****************************************************************************/ - -extern NETLNK phyStatus(void); - -#ifdef __cplusplus -} -#endif - -#endif /* HWETHERNETPHY_H_INCLUDED */ - -/***************************************************************************** -End Of File -******************************************************************************/ \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c deleted file mode 100644 index f9d198699..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c +++ /dev/null @@ -1,435 +0,0 @@ -/****************************************************************************** -* File Name : hwEthernetPhy.c -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Hardware driver for the LAN8700 PHY -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -/***************************************************************************** -System Includes -******************************************************************************/ - -#include -/* Header file for sleep() and nop() functions */ -#include - -/***************************************************************************** -User Includes -******************************************************************************/ - -/* Defines for I/O registers */ -#include "iodefine.h" -/* rsk7216def.h provides common defines for widely used items. */ -#include "rsk7216def.h" -/* Physical layer functions */ -#include "hwEthernetPhy.h" -#include "Trace.h" - -#include "FreeRTOS.h" -#include "task.h" - -/***************************************************************************** -Constant Macros -******************************************************************************/ - -/* Preamble */ -#define PHY_ST 0x0001 -/* Operation to be executed on PHY registers */ -#define PHY_READ 0x0002 -#define PHY_WRITE 0x0001 -/* Physical address of PHY device */ -#define PHY_ADDR 0x001F - -/* Description of PHY data registers */ -#define PHY_BASIC_MODE_CONTROL 0x0000 -#define PHY_BASIC_MODE_STATUS 0x0001 -#define PHY_IDENTIFIER1 0x0002 -#define PHY_IDENTIFIER2 0x0003 -#define PHY_AN_ADVERTISEMENT 0x0004 -#define PHY_AN_LINK_PARTNER_ABILITY 0x0005 - -/* Definitions of some configuration bits */ -#define PHY_RESET 0x8000 -#define PHY_AN_ENABLE 0x1200 -/* Bits for auto negotiation for 100, 10 half and full duplex set */ -#define PHY_AN_10_100_F_H 0xDE1 -/* Link partner ability register bits for establising the result of the - auto negotiation */ -#define PHY_AN_100F BIT_8 -#define PHY_AN_100H BIT_7 -#define PHY_AN_10F BIT_6 -#define PHY_AN_10H BIT_5 - -/***************************************************************************** -Function Prototypes -******************************************************************************/ - -static USHORT phyReadReg(USHORT usRegAddr); -static void phyWriteReg(USHORT usRegAddr, USHORT usData); -static void phyPreamble(void); -static void phyMiiWrite1(void); -static void phyMiiWrite0(void); -static void phyRegSet(USHORT usRegAddr, long lOption); -static void phyRegRead(PUSHORT pusData); -static void phyRegWrite(USHORT usData); -static void phyTaZ0(void); -static void phyTa10(void); -static void phyDelay(void); - -/***************************************************************************** -Public Functions -******************************************************************************/ - -/***************************************************************************** -Function Name: phyReset -Description: Executes software reset of PHY and sets to auto negotiate link -Parameters: None -Return value: 0 for success -1 on error -******************************************************************************/ -int phyReset(void) -{ - /* One second of attempting to reset the PHY */ - int iCount = 1000; - /* Set software reset */ - phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_RESET); - while (iCount--) - { - USHORT usData; - - vTaskDelay( 2 / portTICK_PERIOD_MS ); - - /* Read the status of the PHY */ - usData = phyReadReg(PHY_BASIC_MODE_CONTROL); - /* Wait for the reset flag to be cleared */ - if ((usData & PHY_RESET) == 0) - { - /* Set auto negoatiation for 10,100 full and half duplex */ - phyWriteReg(PHY_AN_ADVERTISEMENT, PHY_AN_10_100_F_H); - /* Set auto negotiate and restart auto negotiate bits */ - phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_AN_ENABLE); - - /* Auto negotiation will now take place wait for two seconds */ - vTaskDelay( 2000 / portTICK_PERIOD_MS ); - - /* Success */ - return 0; - } - } - /* Phy did not respond to software reset */ - return -1; -} -/***************************************************************************** -End of function phyReset - ******************************************************************************/ - -/***************************************************************************** -Function Name: phyStatus -Description: Function to reurn the type of physical link -Parameters: none -Return value: The link type -*****************************************************************************/ -NETLNK phyStatus(void) -{ - /* The state of this flag depens on the hardware connection to the MAC */ - if (!EtherC.PSR.BIT.LMON) - { - /* Read the auto negotiation link partner ability register to establish - the type of link */ - USHORT usData = phyReadReg(PHY_AN_LINK_PARTNER_ABILITY); - if (usData & PHY_AN_100F) - { - return PHY_LINK_100F; - } - if (usData & PHY_AN_100H) - { - return PHY_LINK_100H; - } - if (usData & PHY_AN_10F) - { - return PHY_LINK_10F; - } - if (usData & PHY_AN_10H) - { - return PHY_LINK_10H; - } - } - return PHY_NO_LINK; -} -/***************************************************************************** -End of function phyStatus -******************************************************************************/ - -/***************************************************************************** -Private Functions -******************************************************************************/ - -/***************************************************************************** -Function Name: phyReadReg -Description: Reads data from a register with the address usRegAddr -Parameters: (USHORT) usRegAddr - address to be read; -Return value: (USHORT) - value from read register; -******************************************************************************/ -static USHORT phyReadReg(USHORT usRegAddr) -{ - USHORT usData; - phyPreamble(); - phyRegSet(usRegAddr, PHY_READ); - phyTaZ0(); - phyRegRead(&usData); - phyTaZ0(); - return usData; -} -/***************************************************************************** -End of function phyReadReg -******************************************************************************/ - -/***************************************************************************** -Function Name: phyWriteReg -Description: Write data to register with the address usRegAddr -Parameters: (USHORT) usRegAddr - address of register where to be written; - (USHORT) usData - value to write; -Return value: None -******************************************************************************/ -static void phyWriteReg(USHORT usRegAddr, USHORT usData) -{ - phyPreamble(); - phyRegSet(usRegAddr, PHY_WRITE); - phyTa10(); - phyRegWrite(usData); - phyTaZ0(); -} -/***************************************************************************** -End of function phyWriteReg -******************************************************************************/ - -/***************************************************************************** -Function Name: phyPreamble -Description: Writing 32 bits of '1' -Parameters: None -Return value: None -******************************************************************************/ -static void phyPreamble(void) -{ - int iCount = 32; - while (iCount--) - { - phyMiiWrite1(); - } -} -/***************************************************************************** -End of function phyPreamble -******************************************************************************/ - -/***************************************************************************** -Function Name: phyRegSet -Description: Sets the address of register -Parameters: (USHORT) usRegAddr - address to be set; - (long) lOption - PHY_READ or PHY_WRITE; -Return value: None -******************************************************************************/ -static void phyRegSet(USHORT usRegAddr, long lOption) -{ - int iBit = 14; - USHORT usData; - - /* Format of PHY Address Set Transmission */ - /* ST R/W PAddress Address */ - /* 1 10 11111 xxxx 00 */ //Read - /* 1 01 11111 xxxx 00 */ //Write - - usData = 0; - /* ST code */ - usData = (PHY_ST << 14); - if (lOption == PHY_READ) - { - /* Option code (RD) */ - usData |= (PHY_READ << 12); - } - else - { - /* Option code (WT) */ - usData |= (PHY_WRITE << 12); - } - /* PHY Address */ - usData |= ((BYTE)PHY_ADDR << 7); - /* Reg Address */ - usData |= (USHORT)(usRegAddr << 2); - - while (iBit--) - { - if ((usData & 0x8000) == 0) - { - phyMiiWrite0(); - } - else - { - phyMiiWrite1(); - } - usData <<= 1; - } -} -/***************************************************************************** -End of function phyRegSet -******************************************************************************/ - -/***************************************************************************** -Function Name: phyRegRead -Description: Read data from register -Parameters: IN pusDest - value to be read; -Return value: None -******************************************************************************/ -static void phyRegRead(PUSHORT pusDest) -{ - USHORT usData = 0; - int iBit = 16; - while (iBit--) - { - EtherC.PIR.LONG = 0x00UL; - EtherC.PIR.LONG = 0x01UL; - usData <<= 1; - - /* MDI read */ - usData |= (USHORT)((EtherC.PIR.LONG & 0x08UL) >> 3); - - EtherC.PIR.LONG = 0x01UL; - EtherC.PIR.LONG = 0x00UL; - } - *pusDest = usData; -} -/***************************************************************************** -End of function phyRegRead -******************************************************************************/ - -/***************************************************************************** -Function Name: phyRegWrite -Description: Write 2 bytes (16 bit) to MII -Parameters: IN usData - value to be written; -Return value: None -******************************************************************************/ -static void phyRegWrite(USHORT usData) -{ - int iBit = 16; - while (iBit--) - { - if ((usData & 0x8000) == 0) - { - phyMiiWrite0(); - } - else - { - phyMiiWrite1(); - } - usData <<= 1; - } -} -/***************************************************************************** -End of function phyRegWrite -******************************************************************************/ - -/***************************************************************************** -Function Name: phyTaZ0 -Description: Set bus to high Z -Parameters: None -Return value: None -******************************************************************************/ -static void phyTaZ0(void) -{ - EtherC.PIR.LONG = 0x00UL; - EtherC.PIR.LONG = 0x01UL; - EtherC.PIR.LONG = 0x01UL; - EtherC.PIR.LONG = 0x00UL; -} -/***************************************************************************** -End of function phyTaZ0 -******************************************************************************/ - -/***************************************************************************** -Function Name: phyTa10 -Description: Set bus to output -Parameters: None -Return value: None -******************************************************************************/ -static void phyTa10(void) -{ - EtherC.PIR.LONG = 0x06UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x06UL; - EtherC.PIR.LONG = 0x02UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x02UL; -} -/***************************************************************************** -End of function phyTa10 -******************************************************************************/ - -/***************************************************************************** -Function Name: phyMiiWrite1 -Description: Write 1 to MII -Parameters: None -Return value: None -******************************************************************************/ -static void phyMiiWrite1(void) -{ - EtherC.PIR.LONG = 0x06UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x06UL; -} -/***************************************************************************** -End of function phyMiiWrite1 -******************************************************************************/ - -/***************************************************************************** -Function Name: phyMiiWrite0 -Description: Write 0 to MII -Parameters: None -Return value: None -******************************************************************************/ -static void phyMiiWrite0(void) -{ - EtherC.PIR.LONG = 0x02UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x02UL; -} -/***************************************************************************** -End of function phyMiiWrite0 -******************************************************************************/ - -/***************************************************************************** -End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h deleted file mode 100644 index e827b288d..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h +++ /dev/null @@ -1,106 +0,0 @@ -/****************************************************************************** -* File Name : rsk7670def.h -* Version : 1.0 -* Device(s) : SH2A/7670 -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : RSK+SH7670 -* Description : Defines for RSK2+SH7670 kit. -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef RSK7216DEF_H -#define RSK7216DEF_H - -/****************************************************************************** -Macro Defines -******************************************************************************/ - -/* General Values */ -#define LED_ON (1) -#define LED_OFF (0) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE - -#define SW1 PORT.PDDRL.BIT.PD16DR //"IRQ0" PD16 -#define SW2 PORT.PADRL.BIT.PA20DR //"IRQ6" PA20 - - -/* LEDs */ -#define LED0 PE.DR.BIT.B9 -#define LED1 PE.DR.BIT.B11 -#define LED2 PE.DR.BIT.B12 -#define LED3 PE.DR.BIT.B13 -#define LED4 PE.DR.BIT.B14 -#define LED5 PE.DR.BIT.B15 - -#define ID_LED1 1 -#define ID_LED2 2 -#define ID_LED3 4 -#define ID_LED4 8 -#define ID_LED5 16 -#define ID_LED6 32 -#define ID_LED_ALL (ID_LED1 | ID_LED2 | ID_LED3 | ID_LED4 | ID_LED5 | ID_LED6) - -#define PERIPHERAL_CLOCK_FREQUENCY 50000000UL - -/****************************************************************************** -Constant Macros -******************************************************************************/ - -#define BOARD_NAME "SH7216 CPU BOARD" - -/****************************************************************************** -Public Functions -******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -extern void led_init(void); -extern void led_on(unsigned short ledno); -extern void led_off(unsigned short ledno); - -#ifdef __cplusplus -} -#endif - -#endif /* RSK7216DEF_H */ - -/****************************************************************************** -End Of File -******************************************************************************/ \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h deleted file mode 100644 index 2a2998bc1..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** -* File Name : trace.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Debug formatted output routine -* TRACE print function enabled with define _TRACE_ON_ -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef TRACE_H_INCLUDED -#define TRACE_H_INCLUDED - -/****************************************************************************** -User Includes -******************************************************************************/ - -#include "types.h" - -/****************************************************************************** -Function Macros -******************************************************************************/ - -/* Some function macros for TRACE output - NOTE: debugging TRACE statements require double braces - so the debug strings can be removed from the output load module: - TRACE(("My Variable = %u\r\n", uiMyVariable)); - See ANSI C formatted output for more detail on the format specifiers */ - -#ifdef _TRACE_ON_ /* Trace ON */ -#define TRACE(_x_) Trace _x_ -#else /* _NO_TRACE_ON_ */ -#define TRACE(_x_) /* TRACE REMOVED */ -#endif /* _TRACE_ON_ */ - -/****************************************************************************** -Public Functions -******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** -Function Name: Trace -Description: Function to perform a formatted print output for debugging -Parameters: IN pszFormat - Pointer to a null terminated format string - I/O ... - The parameters -Return value: The number of chars output -******************************************************************************/ -#ifdef _TRACE_ON_ /* Trace ON */ -extern int Trace(const char *pszFormat, ...); -#endif - -/****************************************************************************** -Function Name: dbgPrintBuffer -Description: Function to print a data buffer in hex format -Parameters: IN pbyBuffer - Pointer to the buffer - IN stLength - The length of the buffer -Return value: none -******************************************************************************/ -#ifdef _TRACE_ON_ /* Trace ON */ -extern void dbgPrintBuffer(PBYTE pbyBuffer, size_t stLength); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* TRACE_H_INCLUDED */ - -/****************************************************************************** -End Of File -******************************************************************************/ \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h deleted file mode 100644 index 836e402b4..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h +++ /dev/null @@ -1,56 +0,0 @@ -/****************************************************************************** -* File Name : typedefine.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Type Definition File -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef _TYPE_DEFINE_H_ -#define _TYPE_DEFINE_H_ - -#include - -typedef unsigned char Bool; - -// type defs for API standard - -typedef signed char char8_t; -typedef unsigned char uchar8_t; -typedef signed short short16_t; -typedef unsigned short ushort16_t; -typedef signed long long32_t; -typedef unsigned long ulong32_t; - -#endif /* TYPEDEFINE_H */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h deleted file mode 100644 index 0d76ab53a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h +++ /dev/null @@ -1,476 +0,0 @@ -/****************************************************************************** -* File Name : types.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : User Defined Type Definition File -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef TYPES_H_INCLUDED -#define TYPES_H_INCLUDED - -/****************************************************************************** -User Includes -******************************************************************************/ - -#include "Compiler.h" - -/****************************************************************************** -Function Macros -******************************************************************************/ - -#ifndef SWAPWORD -#define SWAPWORD(x) (WORD)((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF)) -#endif - -#ifndef LOBYTE -#define LOBYTE(x) (BYTE)(x) -#endif - -#ifndef HIBYTE -#define HIBYTE(x) (BYTE)((x) >> 8) -#endif - -#ifndef MAKEWORD -#define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) |\ - ((WORD) ((BYTE) (b))) << 8)) -#endif - -/****************************************************************************** -Typedefs -******************************************************************************/ - -/* Generic definitions */ -#ifndef NULL /* set null ((void *)0) */ -#define NULL 0 -#endif - -#ifndef PNULL -#define PNULL ((PVOID)0) -#endif - -#ifndef BIT_0 /* set bits */ -#define BIT_0 0x1 -#define BIT_1 0x2 -#define BIT_2 0x4 -#define BIT_3 0x8 -#define BIT_4 0x10 -#define BIT_5 0x20 -#define BIT_6 0x40 -#define BIT_7 0x80 - -#define BIT_8 0x100 -#define BIT_9 0x200 -#define BIT_10 0x400 -#define BIT_11 0x800 -#define BIT_12 0x1000 -#define BIT_13 0x2000 -#define BIT_14 0x4000 -#define BIT_15 0x8000 - -#define BIT_16 0x10000L -#define BIT_17 0x20000L -#define BIT_18 0x40000L -#define BIT_19 0x80000L -#define BIT_20 0x100000L -#define BIT_21 0x200000L -#define BIT_22 0x400000L -#define BIT_23 0x800000L - -#define BIT_24 0x1000000L -#define BIT_25 0x2000000L -#define BIT_26 0x4000000L -#define BIT_27 0x8000000L -#define BIT_28 0x10000000L -#define BIT_29 0x20000000L -#define BIT_30 0x40000000L -#define BIT_31 0x80000000L -#endif - -#ifndef TRUE /* true and false */ -#define TRUE (BOOL)1 -#endif - -#ifndef FALSE -#define FALSE (BOOL)0 -#endif - -#if defined(WIN32_SH4) && defined(__cplusplus) -#define _SIZE_T -#else -#ifndef _SIZE_T -#define _SIZE_T -typedef unsigned long size_t; -#endif -#endif - -#ifndef BOOL -#define BOOL BOOL -typedef unsigned char BOOL; -#endif - -#ifndef PBOOL -#define PBOOL PBOOL -typedef unsigned char *PBOOL; -#endif - -#ifndef TCHAR -#define TCHAR TCHAR -typedef char TCHAR; -#endif - -#ifndef PTCHAR -#define PTCHAR PTCHAR -typedef char *PTCHAR; -#endif - -#ifndef PCTCHAR -#define PCTCHAR PCTCHAR -typedef char *const PCTCHAR; -#endif - -#ifndef CPCTCHAR -#define CPCTCHAR CPCTCHAR -typedef const char *const CPCTCHAR; -#endif - -#ifndef CHAR -#define CHAR CHAR -typedef char CHAR; -#endif - -#ifndef CCHAR -#define CCHAR CCHAR -typedef const char CCHAR; -#endif - -#ifndef PCHAR -#define PCHAR PCHAR -typedef char *PCHAR; -#endif - -#ifndef CPCHAR -#define CPCHAR CPCHAR -typedef const char *CPCHAR; -#endif - -#ifndef PCCHAR -#define PCCHAR PCCHAR -typedef char *const PCCHAR; -#endif - -#ifndef CPCCHAR -#define CPCCHAR CPCCHAR -typedef const char *const CPCCHAR; -#endif - -#ifndef PTSTR -#define PTSTR PTSTR -typedef const char *PTSTR; -#endif - -#ifndef PCTSTR -#define PCTSTR PCTSTR -typedef char *const PCTSTR; -#endif - -#ifndef PCTSTR -#define PCTSTR PCTSTR -typedef const char *PCTSTR; -#endif - -#ifndef PTSTR -#define PTSTR PTSTR -typedef char *PTSTR; -#endif - -#ifndef BYTE -#define BYTE BYTE -typedef unsigned char BYTE; -#endif - -#ifndef PBYTE -#define PBYTE PBYTE -typedef unsigned char *PBYTE; -#endif - -#ifndef PCBYTE -#define PCBYTE PCBYTE -typedef unsigned char *const PCBYTE; -#endif - -#ifndef CPBYTE -#define CPBYTE CPBYTE -typedef const unsigned char *CPBYTE; -#endif - -#ifndef SHORT -#define SHORT SHORT -typedef short SHORT; -#endif - -#ifndef PSHORT -#define PSHORT PSHORT -typedef short *PSHORT; -#endif - -#ifndef PCSHORT -#define PCSHORT PCSHORT -typedef short *const PCSHORT; -#endif - -#ifndef CPSHORT -#define CPSHORT CPSHORT -typedef const short *CPSHORT; -#endif - -#ifndef USHORT -#define USHORT USHORT -typedef unsigned short USHORT; -#endif - -#ifndef PUSHORT -#define PUSHORT PUSHORT -typedef unsigned short *PUSHORT; -#endif - -#ifndef PCUSHORT -#define PCUSHORT PCUSHORT -typedef unsigned short *const PCUSHORT; -#endif - -#ifndef CPUSHORT -#define CPUSHORT CPUSHORT -typedef const unsigned short *CPUSHORT; -#endif - -#ifndef WORD -#define WORD WORD -typedef unsigned short WORD; -#endif - -#ifndef PWORD -#define PWORD PWORD -typedef unsigned short *PWORD; -#endif - -#ifndef PCWORD -#define PCWORD PCWORD -typedef unsigned short *const PCWORD; -#endif - -#ifndef INT -#define INT INT -typedef int INT; -#endif - -#ifndef CINT -#define CINT CINT -typedef const int CINT; -#endif - -#ifndef PINT -#define PINT PINT -typedef int *PINT; -#endif - -#ifndef PCINT -#define PCINT PCINT -typedef int *const PCINT; -#endif - -#ifndef CPINT -#define CPINT CPINT -typedef const int *CPINT; -#endif - -#ifndef UINT -#define UINT UINT -typedef unsigned int UINT; -#endif - -#ifndef PUINT -#define PUINT PUINT -typedef unsigned int *PUINT; -#endif - -#ifndef PCUINT -#define PCUINT PCUINT -typedef unsigned int *const PCUINT; -#endif - -#ifndef CPUINT -#define CPUINT CPUINT -typedef const unsigned int *CPUINT; -#endif - -#ifndef DWORD -#define DWORD DWORD -typedef unsigned long DWORD; -#endif - -#ifndef PDWORD -#define PDWORD PDWORD -typedef unsigned long *PDWORD; -#endif - -#ifndef PCDWORD -#define PCDWORD PCDWORD -typedef unsigned long *const PCDWORD; -#endif - -#ifndef CPDWORD -#define CPDWORD CPDWORD -typedef const unsigned long *CPDWORD; -#endif - -#ifndef LONG -#define LONG LONG -typedef long LONG; -#endif - -#ifndef PLONG -#define PLONG PLONG -typedef long *PLONG; -#endif - -#ifndef PCLONG -#define PCLONG PCLONG -typedef long *const PCLONG; -#endif - -#ifndef CPLONG -#define CPLONG CPLONG -typedef const long *CPLONG; -#endif - -#ifndef ULONG -#define ULONG ULONG -typedef unsigned long ULONG; -#endif - -#ifndef PULONG -#define PULONG PULONG -typedef unsigned long *PULONG; -#endif - -#ifndef PCULONG -#define PCULONG PCULONG -typedef unsigned long *const PCULONG; -#endif - -#ifndef CPULONG -#define CPULONG CPULONG -typedef const unsigned long *CPULONG; -#endif - -#ifndef FLOAT -#define FLOAT FLOAT -typedef float FLOAT; -#endif - -#ifndef DOUBLE -#define DOUBLE DOUBLE -typedef long double DOUBLE; -#endif - -#ifndef PDOUBLE -#define PDOUBLE PDOUBLE -typedef long double *PDOUBLE; -#endif - -#ifndef CPDOUBLE -#define CPDOUBLE CPDOUBLE -typedef const long double *CPDOUBLE; -#endif - -#ifndef PCDOUBLE -#define PCDOUBLE PCDOUBLE -typedef long double *const PCDOUBLE; -#endif - -#ifndef PVOID -#define PVOID PVOID -typedef void *PVOID; -#endif - -#ifndef VOID -#define VOID VOID -typedef void VOID; -#endif - -#ifndef IOID -#define IOID IOID -typedef unsigned short IOID; -#endif - -#ifndef PIOID -#define PIOID PIOID -typedef unsigned short *PIOID; -#endif - -#ifndef BBYTE -#define BBYTE BBYTE -typedef union { - unsigned char BYTE; /*lint -e46 */ - /* this is correct */ - struct { - #ifdef _BITFIELDS_MSB_FIRST_ - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - #else - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - #endif - } BIT; -} BBYTE; -#endif - -#endif /* TYPES_H_INCLUDED */ - -/****************************************************************************** -End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf deleted file mode 100644 index c9e996a3c..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf +++ /dev/null @@ -1,527 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|FFFE4305|fff80300|fff80688" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlLabelAddress" "" -"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlMonitorLastSaveLogDirectory" "" -"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSCT" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSYM" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth0" "124" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth1" "156" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth2" "132" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth3" "129" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth4" "84" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp0" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp1" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp10" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp11" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp12" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp13" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp14" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp15" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp16" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp17" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp18" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp19" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp2" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp20" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp21" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp3" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp4" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp5" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp6" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp7" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp8" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp9" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollHorz" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollVert" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWndInstanceKey0" "{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "1" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ColWidth0" "224" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ColWidth1" "152" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ScrollHorz" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ScrollVert" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ColWidth0" "160" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ColWidth1" "512" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ScrollHorz" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ScrollVert" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ColWidth0" "80" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ColWidth1" "360" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ScrollHorz" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ScrollVert" "0" -"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlSaveFileDir" "" -"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlSaveFileName" "" -"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "FFFE4305" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlChartMultiOpen" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlEnable" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlViews" "0" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,171,144" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "82" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "50,456,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "82" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SHViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "175" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "341" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "us, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "xCurrentRxDesc, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "uip_len, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "uip_buf[21], 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "xEventListItem, 11, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "uxPriority, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "pxStack, 4, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007" "pcTaskName, 6, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0008" "uxCriticalNesting, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0009" "uxTCBNumber, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0010" "uxBasePriority, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0011" "pxTaskTag, 9, 0, C0001, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0012" "ulRunTimeCounter, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "1" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_AUDCLOCK" "2 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_AUDINIT_PININFO" "00000000" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_EEPROM_MODE" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_0" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_1" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_2" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_3" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_4" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_5" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_6" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_7" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_INFO" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FCU_ERROR" "0 1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FLASHMODE" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FLO_INFO" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FM_FILE" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FM_LOAD" "0 0 3 0 0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_GOOPTION" "0 0 0 1 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_MEMORYAREA" "0 0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_RECOVERY" "0 0 0 0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ROUND" "RM_ZERO" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_RW_ON_THE_FLY" "1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_SBSTK_INFO" "1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_START_FUNC" "0, H'0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_STEPOPTION" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_STOP_FUNC" "0, H'0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC10_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC10_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC11_1" "0,0,1,0,0,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_1" "0,0,1,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_2" "1,0,0,0,0,0,0,1,1," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_3" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_1" "0,0,1,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_2" "1,0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_3" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC3_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC3_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC4_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC4_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC5_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC5_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC6_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC6_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC7_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC7_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC8_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC8_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC9_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC9_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_SEQPTOP_0" "0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_PERFORM_PERFORM_SET" "0,0,0,0,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_PROFILE_PROFILE_SELECT" "0,0,0,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_SESSION_IS_SAVED" "YES" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION" "0,0,1,0,0,0,2,0,0,0,0,2,0,0,0,2,0,1,1,1,1,1,1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION2" "1,0,1,1,1,1,1,0,0,0,0,0,0" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_DENORMAL_MODE" "16777216" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_ROUND_MODE" "768" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "0000000000000001" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "00000000FFFE771B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_10" "00000000FFFFFFFD" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_11" "0000000092492493" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "0000000000039447" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "00000000FFFE771B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF83C38" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "00000000000065FE" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_17" "0000000000000001" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_18" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_19" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "000000000000007B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_20" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_21" "0000000000049AB0" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_22" "00000000491CE5CE" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_23" "0000000000003760" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_24" "0000000000000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "0000000000040001" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_26" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_27" "000000000000000C" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "000000000000000D" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "000000000000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "0000000000000003" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "000000000000000F" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "0000000000000010" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000000000011" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "0000000000000012" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "0000000000000013" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "000000000000006E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_36" "000000000000006F" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_37" "0000000000000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "0000000000000071" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "0000000000000072" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "00000000000394C2" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "000000000000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_42" "000000000000000C" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "0000000D0000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "0000000F00000010" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "0000001100000012" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "000000130000006E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_47" "0000006F00000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "0000007100000072" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "0000000E00000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "00000000FFF541BA" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "00000000FFFE771B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "00000000FFF541BA" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_8" "00000000000065FC" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_9" "000000000000661E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_COUNT" "50" -"{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "381" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -"{FB0C49C2-C2FE-4E92-BCC1-56FE7254C804}CacheCtrlCacheLastSaveDirectory" "" -"{FB0C49C2-C2FE-4E92-BCC1-56FE7254C804}CacheCtrlViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.23" 220 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.08" 324 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 892 659 9 0 "" "0.0" -"{WK_00000001_EVENT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 292 0 0 350 200 2065 0 "32774|32775|32777|<>|32780|<>" "0.0" -"{WK_00000001_IO}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 3 "0.31" 324 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.86" 316 0 0 350 200 2065 0 "32812|<>|32813|32814|<>|32816|<>|32822|32821|<>|32796|32797|<>|32833|<>|32825|32829|<>|32852" "31.7" -"{WK_00000001_MEMORY}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.85" 391 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.55" 324 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 360 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STACKTRACE}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 219 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 324 0 0 350 200 17 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.45" 324 0 0 350 200 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811|32831" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 340 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -[TARGET_NAME] -"SH7216 E10A-USB SYSTEM (SH2A-FPU)" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[B|SIMIOF|1] [I|SIMIOADR|0x00000000] [S|ROM_MODE|^"^"] [S|MAP|^"^"] [S|RESOURCE|^"^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"TRUE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\superh_sh7216_renesas\rtosdemo\main.c" 221 0 1 "{00000000-0000-0000-C000-000000000046}" "" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini deleted file mode 100644 index 4f273cfef..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini +++ /dev/null @@ -1,4 +0,0 @@ -[E10A USB Cpu Select] -FREQUENCY=12.50 -[Key] -Key=1 diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini deleted file mode 100644 index b82cebe4b..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini +++ /dev/null @@ -1,3 +0,0 @@ -[E10A USB Cpu Select] -CPU Select=5 -FREQUENCY=12.50 diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c deleted file mode 100644 index 5ee520579..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c +++ /dev/null @@ -1,30 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :dbsct.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Setting of B,R Section */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include "typedefine.h" - -#pragma section $DSEC -static const struct { - _UBYTE *rom_s; /* Start address of the initialized data section in ROM */ - _UBYTE *rom_e; /* End address of the initialized data section in ROM */ - _UBYTE *ram_s; /* Start address of the initialized data section in RAM */ -} DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") } -}; -#pragma section $BSEC -static const struct { - _UBYTE *b_s; /* Start address of non-initialized data section */ - _UBYTE *b_e; /* End address of non-initialized data section */ -} BTBL[] = { - { __sectop("B"), __secend("B") } -}; diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c deleted file mode 100644 index 409ee1f02..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c +++ /dev/null @@ -1,323 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * Creates eight tasks, each of which loops continuously performing a floating - * point calculation and in so doing test the floating point context switching. - * This file also demonstrates the use of the xPortUsesFloatingPoint() function - * which informs the kernel that the task requires its floating point context - * saved on each switch. - * - * All the tasks run at the idle priority and never block or yield. This causes - * all eight tasks to time slice with the idle task. Running at the idle - * priority means that these tasks will get pre-empted any time another task is - * ready to run or a time slice occurs. More often than not the pre-emption - * will occur mid calculation, creating a good test of the schedulers context - * switch mechanism - a calculation producing an unexpected result could be a - * symptom of a corruption in the context of a task. - */ - -#include -#include - -/* Scheduler include files. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo program include files. */ -#include "flop.h" - -#define mathSTACK_SIZE configMINIMAL_STACK_SIZE -#define mathNUMBER_OF_TASKS ( 8 ) - -/* Four tasks, each of which performs a different floating point calculation. -Each of the four is created twice. */ -static void vCompetingMathTask1( void *pvParameters ); -static void vCompetingMathTask2( void *pvParameters ); -static void vCompetingMathTask3( void *pvParameters ); -static void vCompetingMathTask4( void *pvParameters ); - -/* These variables are used to check that all the tasks are still running. If a -task gets a calculation wrong it will stop incrementing its check variable, -otherwise the check variable will get incremented on each iteration of the -tasks execution. */ -static volatile unsigned short usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 }; - -/*-----------------------------------------------------------*/ - -void vStartMathTasks( unsigned portBASE_TYPE uxPriority ) -{ -TaskHandle_t xCreatedTask; - - /* Create one of the floating point tasks... */ - xTaskCreate( vCompetingMathTask1, "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, &xCreatedTask ); - - /* ... then enable floating point support for the created task so its flop - flop registers are maintained in a consistent state. */ - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask2, "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask3, "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask4, "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask1, "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask2, "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask3, "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask4, "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask1( void *pvParameters ) -{ -volatile double d1, d2, d3, d4; -volatile unsigned short *pusTaskCheckVariable; -volatile double dAnswer; -short sError = pdFALSE; - - d1 = 123.4567; - d2 = 2345.6789; - d3 = -918.222; - - /* Calculate the expected answer. */ - dAnswer = ( d1 + d2 ) * d3; - - /* The variable this task increments to show it is still running is passed in - as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Keep performing a calculation and checking the result against a constant. */ - for(;;) - { - /* Perform the calculation. */ - d1 = 123.4567; - d2 = 2345.6789; - d3 = -918.222; - - d4 = ( d1 + d2 ) * d3; - - /* If the calculation does not match the expected constant, stop the - increment of the check variable. */ - if( fabs( d4 - dAnswer ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask2( void *pvParameters ) -{ -volatile double d1, d2, d3, d4; -volatile unsigned short *pusTaskCheckVariable; -volatile double dAnswer; -short sError = pdFALSE; - - d1 = -389.38; - d2 = 32498.2; - d3 = -2.0001; - - /* Calculate the expected answer. */ - dAnswer = ( d1 / d2 ) * d3; - - - /* The variable this task increments to show it is still running is passed in - as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Keep performing a calculation and checking the result against a constant. */ - for( ;; ) - { - /* Perform the calculation. */ - d1 = -389.38; - d2 = 32498.2; - d3 = -2.0001; - - d4 = ( d1 / d2 ) * d3; - - /* If the calculation does not match the expected constant, stop the - increment of the check variable. */ - if( fabs( d4 - dAnswer ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know - this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask3( void *pvParameters ) -{ -volatile double *pdArray, dTotal1, dTotal2, dDifference; -volatile unsigned short *pusTaskCheckVariable; -const size_t xArraySize = 10; -size_t xPosition; -short sError = pdFALSE; - - /* The variable this task increments to show it is still running is passed - in as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Allocate memory for use as an array. */ - pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) ); - - /* Keep filling an array, keeping a running total of the values placed in - the array. Then run through the array adding up all the values. If the two - totals do not match, stop the check variable from incrementing. */ - for( ;; ) - { - dTotal1 = 0.0; - dTotal2 = 0.0; - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - pdArray[ xPosition ] = ( double ) xPosition + 5.5; - dTotal1 += ( double ) xPosition + 5.5; - } - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - dTotal2 += pdArray[ xPosition ]; - } - - dDifference = dTotal1 - dTotal2; - if( fabs( dDifference ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask4( void *pvParameters ) -{ -volatile double *pdArray, dTotal1, dTotal2, dDifference; -volatile unsigned short *pusTaskCheckVariable; -const size_t xArraySize = 10; -size_t xPosition; -short sError = pdFALSE; - - /* The variable this task increments to show it is still running is passed in - as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Allocate RAM for use as an array. */ - pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) ); - - /* Keep filling an array, keeping a running total of the values placed in the - array. Then run through the array adding up all the values. If the two totals - do not match, stop the check variable from incrementing. */ - for( ;; ) - { - dTotal1 = 0.0; - dTotal2 = 0.0; - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - pdArray[ xPosition ] = ( double ) xPosition * 12.123; - dTotal1 += ( double ) xPosition * 12.123; - } - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - dTotal2 += pdArray[ xPosition ]; - } - - dDifference = dTotal1 - dTotal2; - if( fabs( dDifference ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -/* This is called to check that all the created tasks are still running. */ -portBASE_TYPE xAreMathsTaskStillRunning( void ) -{ -/* Keep a history of the check variables so we know if they have been -incremented since the last call. */ -static unsigned short usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 }; -portBASE_TYPE xReturn = pdTRUE, xTask; - - /* Check the maths tasks are still running by ensuring their check variables - are still incrementing. */ - for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ ) - { - if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] ) - { - /* The check has not incremented so an error exists. */ - xReturn = pdFALSE; - } - - usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ]; - } - - return xReturn; -} - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c deleted file mode 100644 index 00d268536..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c +++ /dev/null @@ -1,526 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :intprg.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Interrupt Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include -#include "vect.h" -#pragma section IntPRG - -// 4 Illegal code -void INT_Illegal_code(void){for( ;; ); /* sleep(); */} - -// 5 Reserved - -// 6 Illegal slot -void INT_Illegal_slot(void){for( ;; ); /* sleep(); */} -// 7 Reserved - -// 8 Reserved - -// 9 CPU Address error -void INT_CPU_Address(void){for( ;; ); /* sleep(); */} -// 10 DMAC Address error -void INT_DMAC_Address(void){for( ;; ); /* sleep(); */} -// 11 NMI -void INT_NMI(void){for( ;; ); /* sleep(); */} -// 12 User breakpoint trap -void INT_User_Break(void){for( ;; ); /* sleep(); */} -// 13 Reserved - -// 14 H-UDI -void INT_HUDI(void){for( ;; ); /* sleep(); */} -// 15 Register bank over -void INT_Bank_Overflow(void){for( ;; ); /* sleep(); */} -// 16 Register bank under -void INT_Bank_Underflow(void){for( ;; ); /* sleep(); */} -// 17 ZERO DIV -void INT_Divide_by_Zero(void){for( ;; ); /* sleep(); */} -// 18 OVER DIV -void INT_Divide_Overflow(void){for( ;; ); /* sleep(); */} -// 19 Reserved - -// 20 Reserved - -// 21 Reserved - -// 22 Reserved - -// 23 Reserved - -// 24 Reserved - -// 25 Reserved - -// 26 Reserved - -// 27 Reserved - -// 28 Reserved - -// 29 Reserved - -// 30 Reserved - -// 31 Reserved - -// 32 TRAPA (User Vecter) -void INT_TRAPA32(void){ for( ;; ); /* sleep(); */ } -// 33 TRAPA (User Vecter) -void INT_TRAPA33(void){for( ;; ); /* sleep(); */} -// 34 TRAPA (User Vecter) -void INT_TRAPA34(void){for( ;; ); /* sleep(); */} -// 35 TRAPA (User Vecter) -void INT_TRAPA35(void){for( ;; ); /* sleep(); */} -// 36 TRAPA (User Vecter) -void INT_TRAPA36(void){for( ;; ); /* sleep(); */} -// 37 TRAPA (User Vecter) -void INT_TRAPA37(void){for( ;; ); /* sleep(); */} -// 38 TRAPA (User Vecter) -void INT_TRAPA38(void){for( ;; ); /* sleep(); */} -// 39 TRAPA (User Vecter) -void INT_TRAPA39(void){for( ;; ); /* sleep(); */} -// 40 TRAPA (User Vecter) -void INT_TRAPA40(void){for( ;; ); /* sleep(); */} -// 41 TRAPA (User Vecter) -void INT_TRAPA41(void){for( ;; ); /* sleep(); */} -// 42 TRAPA (User Vecter) -void INT_TRAPA42(void){for( ;; ); /* sleep(); */} -// 43 TRAPA (User Vecter) -void INT_TRAPA43(void){for( ;; ); /* sleep(); */} -// 44 TRAPA (User Vecter) -void INT_TRAPA44(void){for( ;; ); /* sleep(); */} -// 45 TRAPA (User Vecter) -void INT_TRAPA45(void){for( ;; ); /* sleep(); */} -// 46 TRAPA (User Vecter) -void INT_TRAPA46(void){for( ;; ); /* sleep(); */} -// 47 TRAPA (User Vecter) -void INT_TRAPA47(void){for( ;; ); /* sleep(); */} -// 48 TRAPA (User Vecter) -void INT_TRAPA48(void){for( ;; ); /* sleep(); */} -// 49 TRAPA (User Vecter) -void INT_TRAPA49(void){for( ;; ); /* sleep(); */} -// 50 TRAPA (User Vecter) -void INT_TRAPA50(void){for( ;; ); /* sleep(); */} -// 51 TRAPA (User Vecter) -void INT_TRAPA51(void){for( ;; ); /* sleep(); */} -// 52 TRAPA (User Vecter) -void INT_TRAPA52(void){for( ;; ); /* sleep(); */} -// 53 TRAPA (User Vecter) -void INT_TRAPA53(void){for( ;; ); /* sleep(); */} -// 54 TRAPA (User Vecter) -void INT_TRAPA54(void){for( ;; ); /* sleep(); */} -// 55 TRAPA (User Vecter) -void INT_TRAPA55(void){for( ;; ); /* sleep(); */} -// 56 TRAPA (User Vecter) -void INT_TRAPA56(void){for( ;; ); /* sleep(); */} -// 57 TRAPA (User Vecter) -void INT_TRAPA57(void){for( ;; ); /* sleep(); */} -// 58 TRAPA (User Vecter) -void INT_TRAPA58(void){for( ;; ); /* sleep(); */} -// 59 TRAPA (User Vecter) -void INT_TRAPA59(void){for( ;; ); /* sleep(); */} -// 60 TRAPA (User Vecter) -void INT_TRAPA60(void){for( ;; ); /* sleep(); */} -// 61 TRAPA (User Vecter) -void INT_TRAPA61(void){for( ;; ); /* sleep(); */} -// 62 TRAPA (User Vecter) -void INT_TRAPA62(void){for( ;; ); /* sleep(); */} -// 63 TRAPA (User Vecter) -void INT_TRAPA63(void){for( ;; ); /* sleep(); */} -// 64 Interrupt IRQ0 -void INT_IRQ0(void){for( ;; ); /* sleep(); */} -// 65 Interrupt IRQ1 -void INT_IRQ1(void){for( ;; ); /* sleep(); */} -// 66 Interrupt IRQ2 -void INT_IRQ2(void){for( ;; ); /* sleep(); */} -// 67 Interrupt IRQ3 -void INT_IRQ3(void){for( ;; ); /* sleep(); */} -// 68 Interrupt IRQ4 -void INT_IRQ4(void){for( ;; ); /* sleep(); */} -// 69 Interrupt IRQ5 -void INT_IRQ5(void){for( ;; ); /* sleep(); */} -// 70 Interrupt IRQ6 -void INT_IRQ6(void){for( ;; ); /* sleep(); */} -// 71 Interrupt IRQ7 -void INT_IRQ7(void){for( ;; ); /* sleep(); */} -// 72 Reserved - -// 73 Reserved - -// 74 Reserved - -// 75 Reserved - -// 76 Reserved - -// 77 Reserved - -// 78 Reserved - -// 79 Reserved - -// 80 Interrupt PINT0 -void INT_PINT0(void){for( ;; ); /* sleep(); */} -// 81 Interrupt PINT1 -void INT_PINT1(void){for( ;; ); /* sleep(); */} -// 82 Interrupt PINT2 -void INT_PINT2(void){for( ;; ); /* sleep(); */} -// 83 Interrupt PINT3 -void INT_PINT3(void){for( ;; ); /* sleep(); */} -// 84 Interrupt PINT4 -void INT_PINT4(void){for( ;; ); /* sleep(); */} -// 85 Interrupt PINT5 -void INT_PINT5(void){for( ;; ); /* sleep(); */} -// 86 Interrupt PINT6 -void INT_PINT6(void){for( ;; ); /* sleep(); */} -// 87 Interrupt PINT7 -void INT_PINT7(void){for( ;; ); /* sleep(); */} -// 88 Reserved - -// 89 Reserved - -// 90 Reserved - -// 91 ROM FIFE -void INT_ROM_FIFE(void){for( ;; ); /* sleep(); */} -// 92 A/D ADI0 -void INT_AD_ADI0(void){for( ;; ); /* sleep(); */} -// 93 Reserved - -// 94 Reserved - -// 95 Reserved - -// 96 A/D ADI1 -void INT_AD_ADI1(void){for( ;; ); /* sleep(); */} -// 97 Reserved - -// 98 Reserved - -// 99 Reserved - -// 100 Reserved - -// 101 Reserved - -// 102 Reserved - -// 103 Reserved - -// 104 RCANET0 ERS_0 -void INT_RCANET0_ERS_0(void){for( ;; ); /* sleep(); */} -// 105 RCANET0 OVR_0 -void INT_RCANET0_OVR_0(void){for( ;; ); /* sleep(); */} -// 106 RCANET0 RM01_0 -void INT_RCANET0_RM01_0(void){for( ;; ); /* sleep(); */} -// 107 RCANET0 SLE_0 -void INT_RCANET0_SLE_0(void){for( ;; ); /* sleep(); */} -// 108 DMAC0 DEI0 -void INT_DMAC0_DEI0(void){for( ;; ); /* sleep(); */} -// 109 DMAC0 HEI0 -void INT_DMAC0_HEI0(void){for( ;; ); /* sleep(); */} -// 110 Reserved - -// 111 Reserved - -// 112 DMAC1 DEI1 -void INT_DMAC1_DEI1(void){for( ;; ); /* sleep(); */} -// 113 DMAC1 HEI1 -void INT_DMAC1_HEI1(void){for( ;; ); /* sleep(); */} -// 114 Reserved - -// 115 Reserved - -// 116 DMAC2 DEI2 -void INT_DMAC2_DEI2(void){for( ;; ); /* sleep(); */} -// 117 DMAC2 HEI2 -void INT_DMAC2_HEI2(void){for( ;; ); /* sleep(); */} -// 118 Reserved - -// 119 Reserved - -// 120 DMAC3 DEI3 -void INT_DMAC3_DEI3(void){for( ;; ); /* sleep(); */} -// 121 DMAC3 HEI3 -void INT_DMAC3_HEI3(void){for( ;; ); /* sleep(); */} -// 122 Reserved - -// 123 Reserved - -// 124 DMAC4 DEI4 -void INT_DMAC4_DEI4(void){for( ;; ); /* sleep(); */} -// 125 DMAC4 HEI4 -void INT_DMAC4_HEI4(void){for( ;; ); /* sleep(); */} -// 126 Reserved - -// 127 Reserved - -// 128 DMAC5 DEI5 -void INT_DMAC5_DEI5(void){for( ;; ); /* sleep(); */} -// 129 DMAC5 HEI5 -void INT_DMAC5_HEI5(void){for( ;; ); /* sleep(); */} -// 130 Reserved - -// 131 Reserved - -// 132 DMAC6 DEI6 -void INT_DMAC6_DEI6(void){for( ;; ); /* sleep(); */} -// 133 DMAC6 HEI6 -void INT_DMAC6_HEI6(void){for( ;; ); /* sleep(); */} -// 134 Reserved - -// 135 Reserved - -// 136 DMAC7 DEI7 -void INT_DMAC7_DEI7(void){for( ;; ); /* sleep(); */} -// 137 DMAC7 HEI7 -void INT_DMAC7_HEI7(void){for( ;; ); /* sleep(); */} -// 138 Reserved - -// 139 Reserved - -// 140 CMT CMI0 -//void INT_CMT_CMI0(void){for( ;; ); /* sleep(); */} -// 141 Reserved - -// 142 Reserved - -// 143 Reserved - -// 144 CMT CMI1 -void INT_CMT_CMI1(void){for( ;; ); /* sleep(); */} -// 145 Reserved - -// 146 Reserved - -// 147 Reserved - -// 148 BSC CMTI -void INT_BSC_CMTI(void){for( ;; ); /* sleep(); */} -// 149 Reserved - -// 150 USB EP4FULL -void INT_USB_EP4FULL(void){for( ;; ); /* sleep(); */} -// 151 USB EP5EMPTY -void INT_USB_EP5EMPTY(void){for( ;; ); /* sleep(); */} -// 152 WDT ITI -void INT_WDT_ITI(void){for( ;; ); /* sleep(); */} -// 153 E-DMAC EINT0 -void INT_EDMAC_EINT0(void){for( ;; ); /* sleep(); */} -// 154 USB EP1FULL -void INT_USB_EP1FULL(void){for( ;; ); /* sleep(); */} -// 155 USB EP2EMPTY -void INT_USB_EP2EMPTY(void){for( ;; ); /* sleep(); */} -// 156 MTU2 MTU0 TGI0A -void INT_MTU2_MTU0_TGI0A(void){for( ;; ); /* sleep(); */} -// 157 MTU2 MTU0 TGI0B -void INT_MTU2_MTU0_TGI0B(void){for( ;; ); /* sleep(); */} -// 158 MTU2 MTU0 TGI0C -void INT_MTU2_MTU0_TGI0C(void){for( ;; ); /* sleep(); */} -// 159 MTU2 MTU0 TGI0D -void INT_MTU2_MTU0_TGI0D(void){for( ;; ); /* sleep(); */} -// 160 MTU2 MTU0 TGI0V -void INT_MTU2_MTU0_TGI0V(void){for( ;; ); /* sleep(); */} -// 161 MTU2 MTU0 TGI0E -void INT_MTU2_MTU0_TGI0E(void){for( ;; ); /* sleep(); */} -// 162 MTU2 MTU0 TGI0F -void INT_MTU2_MTU0_TGI0F(void){for( ;; ); /* sleep(); */} -// 163 Reserved - -// 164 MTU2 MTU1 TGI1A -void INT_MTU2_MTU1_TGI1A(void){for( ;; ); /* sleep(); */} -// 165 MTU2 MTU1 TGI1B -void INT_MTU2_MTU1_TGI1B(void){for( ;; ); /* sleep(); */} -// 166 Reserved - -// 167 Reserved - -// 168 MTU2 MTU1 TGI1V -void INT_MTU2_MTU1_TGI1V(void){for( ;; ); /* sleep(); */} -// 169 MTU2 MTU1 TGI1U -void INT_MTU2_MTU1_TGI1U(void){for( ;; ); /* sleep(); */} -// 170 Reserved - -// 171 Reserved - -// 172 MTU2 MTU2 TGI2A -void INT_MTU2_MTU2_TGI2A(void){for( ;; ); /* sleep(); */} -// 173 MTU2 MTU2 TGI2B -void INT_MTU2_MTU2_TGI2B(void){for( ;; ); /* sleep(); */} -// 174 Reserved - -// 175 Reserved - -// 176 MTU2 MTU2 TGI2V -void INT_MTU2_MTU2_TGI2V(void){for( ;; ); /* sleep(); */} -// 177 MTU2 MTU2 TGI2U -void INT_MTU2_MTU2_TGI2U(void){for( ;; ); /* sleep(); */} -// 178 Reserved - -// 179 Reserved - -// 180 MTU2 MTU3 TGI3A -void INT_MTU2_MTU3_TGI3A(void){for( ;; ); /* sleep(); */} -// 181 MTU2 MTU3 TGI3B -void INT_MTU2_MTU3_TGI3B(void){for( ;; ); /* sleep(); */} -// 182 MTU2 MTU3 TGI3C -void INT_MTU2_MTU3_TGI3C(void){for( ;; ); /* sleep(); */} -// 183 MTU2 MTU3 TGI3D -void INT_MTU2_MTU3_TGI3D(void){for( ;; ); /* sleep(); */} -// 184 MTU2 MTU3 TGI3V -void INT_MTU2_MTU3_TGI3V(void){for( ;; ); /* sleep(); */} -// 185 Reserved - -// 186 Reserved - -// 187 Reserved - -// 188 MTU2 MTU4 TGI4A -void INT_MTU2_MTU4_TGI4A(void){for( ;; ); /* sleep(); */} -// 189 MTU2 MTU4 TGI4B -void INT_MTU2_MTU4_TGI4B(void){for( ;; ); /* sleep(); */} -// 190 MTU2 MTU4 TGI4C -void INT_MTU2_MTU4_TGI4C(void){for( ;; ); /* sleep(); */} -// 191 MTU2 MTU4 TGI4D -void INT_MTU2_MTU4_TGI4D(void){for( ;; ); /* sleep(); */} -// 192 MTU2 MTU4 TGI4V -void INT_MTU2_MTU4_TGI4V(void){for( ;; ); /* sleep(); */} -// 193 Reserved - -// 194 Reserved - -// 195 Reserved - -// 196 MTU2 MTU5 TGI5U -void INT_MTU2_MTU5_TGI5U(void){for( ;; ); /* sleep(); */} -// 197 MTU2 MTU5 TGI5V -void INT_MTU2_MTU5_TGI5V(void){for( ;; ); /* sleep(); */} -// 198 MTU2 MTU5 TGI5W -void INT_MTU2_MTU5_TGI5W(void){for( ;; ); /* sleep(); */} -// 199 Reserved - -// 200 POE2 OEI1 -void INT_POE2_OEI1(void){for( ;; ); /* sleep(); */} -// 201 POE2 OEI2 -void INT_POE2_OEI2(void){for( ;; ); /* sleep(); */} -// 202 Reserved - -// 203 Reserved - -// 204 MTU2S MTU3S TGI3A -void INT_MTU2S_MTU3S_TGI3A(void){for( ;; ); /* sleep(); */} -// 205 MTU2S MTU3S TGI3B -void INT_MTU2S_MTU3S_TGI3B(void){for( ;; ); /* sleep(); */} -// 206 MTU2S MTU3S TGI3C -void INT_MTU2S_MTU3S_TGI3C(void){for( ;; ); /* sleep(); */} -// 207 MTU2S MTU3S TGI3D -void INT_MTU2S_MTU3S_TGI3D(void){for( ;; ); /* sleep(); */} -// 208 MTU2S MTU3S TGI3V -void INT_MTU2S_MTU3S_TGI3V(void){for( ;; ); /* sleep(); */} -// 209 Reserved - -// 210 Reserved - -// 211 Reserved - -// 212 MTU2S MTU4S TGI4A -void INT_MTU2S_MTU4S_TGI4A(void){for( ;; ); /* sleep(); */} -// 213 MTU2S MTU4S TGI4B -void INT_MTU2S_MTU4S_TGI4B(void){for( ;; ); /* sleep(); */} -// 214 MTU2S MTU4S TGI4C -void INT_MTU2S_MTU4S_TGI4C(void){for( ;; ); /* sleep(); */} -// 215 MTU2S MTU4S TGI4D -void INT_MTU2S_MTU4S_TGI4D(void){for( ;; ); /* sleep(); */} -// 216 MTU2S MTU4S TGI4V -void INT_MTU2S_MTU4S_TGI4V(void){for( ;; ); /* sleep(); */} -// 217 Reserved - -// 218 Reserved - -// 219 Reserved - -// 220 MTU2S MTU5S TGI5U -void INT_MTU2S_MTU5S_TGI5U(void){for( ;; ); /* sleep(); */} -// 221 MTU2S MTU5S TGI5V -void INT_MTU2S_MTU5S_TGI5V(void){for( ;; ); /* sleep(); */} -// 222 MTU2S MTU5S TGI5W -void INT_MTU2S_MTU5S_TGI5W(void){for( ;; ); /* sleep(); */} -// 223 Reserved - -// 224 POE2 OEI3 -void INT_POE2_OEI3(void){for( ;; ); /* sleep(); */} -// 225 Reserved - -// 226 USB USI0 -void INT_USB_USI0(void){for( ;; ); /* sleep(); */} -// 227 USB USI1 -void INT_USB_USI1(void){for( ;; ); /* sleep(); */} -// 228 IIC3 STPI -void INT_IIC3_STPI(void){for( ;; ); /* sleep(); */} -// 229 IIC3 NAKI -void INT_IIC3_NAKI(void){for( ;; ); /* sleep(); */} -// 230 IIC3 RXI -void INT_IIC3_RXI(void){for( ;; ); /* sleep(); */} -// 231 IIC3 TXI -void INT_IIC3_TXI(void){for( ;; ); /* sleep(); */} -// 232 IIC3 TEI -void INT_IIC3_TEI(void){for( ;; ); /* sleep(); */} -// 233 RSPI SPERI -void INT_RSPI_SPERI(void){for( ;; ); /* sleep(); */} -// 234 RSPI SPRXI -void INT_RSPI_SPRXI(void){for( ;; ); /* sleep(); */} -// 235 RSPI SPTXI -void INT_RSPI_SPTXI(void){for( ;; ); /* sleep(); */} -// 236 SCI SCI4 ERI4 -void INT_SCI_SCI4_ERI4(void){for( ;; ); /* sleep(); */} -// 237 SCI SCI4 RXI4 -void INT_SCI_SCI4_RXI4(void){for( ;; ); /* sleep(); */} -// 238 SCI SCI4 TXI4 -void INT_SCI_SCI4_TXI4(void){for( ;; ); /* sleep(); */} -// 239 SCI SCI4 TEI4 -void INT_SCI_SCI4_TEI4(void){for( ;; ); /* sleep(); */} -// 240 SCI SCI0 ERI0 -void INT_SCI_SCI0_ERI0(void){for( ;; ); /* sleep(); */} -// 241 SCI SCI0 RXI0 -void INT_SCI_SCI0_RXI0(void){for( ;; ); /* sleep(); */} -// 242 SCI SCI0 TXI0 -void INT_SCI_SCI0_TXI0(void){for( ;; ); /* sleep(); */} -// 243 SCI SCI0 TEI0 -void INT_SCI_SCI0_TEI0(void){for( ;; ); /* sleep(); */} -// 244 SCI SCI1 ERI1 -void INT_SCI_SCI1_ERI1(void){for( ;; ); /* sleep(); */} -// 245 SCI SCI1 RXI1 -void INT_SCI_SCI1_RXI1(void){for( ;; ); /* sleep(); */} -// 246 SCI SCI1 TXI1 -void INT_SCI_SCI1_TXI1(void){for( ;; ); /* sleep(); */} -// 247 SCI SCI1 TEI1 -void INT_SCI_SCI1_TEI1(void){for( ;; ); /* sleep(); */} -// 248 SCI SCI2 ERI2 -void INT_SCI_SCI2_ERI2(void){for( ;; ); /* sleep(); */} -// 249 SCI SCI2 RXI2 -void INT_SCI_SCI2_RXI2(void){for( ;; ); /* sleep(); */} -// 250 SCI SCI2 TXI2 -void INT_SCI_SCI2_TXI2(void){for( ;; ); /* sleep(); */} -// 251 SCI SCI2 TEI2 -void INT_SCI_SCI2_TEI2(void){for( ;; ); /* sleep(); */} -// 252 SCIF SCIF3 BRI3 -void INT_SCIF_SCIF3_BRI3(void){for( ;; ); /* sleep(); */} -// 253 SCIF SCIF3 ERI3 -void INT_SCIF_SCIF3_ERI3(void){for( ;; ); /* sleep(); */} -// 254 SCIF SCIF3 RXI3 -void INT_SCIF_SCIF3_RXI3(void){for( ;; ); /* sleep(); */} -// 255 SCIF SCIF3 TXI3 -void INT_SCIF_SCIF3_TXI3(void){for( ;; ); /* sleep(); */} -// Dummy -void Dummy(void){ for( ;; ); sleep(); } - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h deleted file mode 100644 index 2b9032979..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h +++ /dev/null @@ -1,5006 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************** -* Copyright (C) 2009. Renesas Technology Corp., All Rights Reserved. -*""FILE COMMENT""*********** Technical reference data ************************** -* System Name : SH7216 Sample Program -* File Name : iodefine.h -* Abstract : SH7216 IO register definition -* Version : 0.05.00 -* Device : SH7216 -* Tool-Chain : High-performance Embedded Workshop (Ver.4.05.01). -* : C/C++ compiler package for the SuperH RISC engine family -* : (Ver.9.03 Release00). -* OS : None -* H/W Platform: R0K572167 (CPU board) -* Description : -******************************************************************************** -* History : Mar.10,2009 Ver.0.05.00 -*""FILE COMMENT END""**********************************************************/ -#ifndef _IODEFINE_H_ -#define _IODEFINE_H_ - -struct st_cpg { /* struct CPG */ - union { /* FRQCR *///FFFE0010 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 5; /* */ - unsigned short STC : 3; /* STC */ - unsigned short : 1; /* */ - unsigned short IFC : 3; /* IFC */ - unsigned short : 1; /* */ - unsigned short _PFC : 3; /* PFC */ - } BIT; /* */ - } FRQCR; /* */ - char wk1[10]; /* *///FFFE001C-FFFE0010-2 - union { /* OSCCR *///FFFE001C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char OSCSTOP : 1; /* OSCSTOP */ - unsigned char : 1; /* */ - unsigned char OSCERS : 1; /* OSCERS */ - } BIT; /* */ - } OSCCR; /* */ - char wk2[1011]; /* *///FFFE0410-FFFE001C-1 - union { /* MCLKCR *///FFFE0410 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char : 4; /* */ - unsigned char MSDIVS : 2; /* MSDIVS */ - } BIT; /* */ - } MCLKCR; /* */ - char wk3[3]; /* *///FFFE0414-FFFE0410-1 - union { /* ACLKCR *///FFFE0414 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char : 4; /* */ - unsigned char ASDIVS : 2; /* ASDIVS */ - } BIT; /* */ - } ACLKCR; /* */ -}; /* */ -struct st_intc { /* struct INTC */ - union { /* ICR0 *///FFFE0800 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short NMIL : 1; /* NMIL */ - unsigned short : 6; /* */ - unsigned short NMIE : 1; /* NMIE */ - } BIT; /* */ - } ICR0; /* */ - union { /* ICR1 *///FFFE0802 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short IRQ7S : 2; /* IRQ7S */ - unsigned short IRQ6S : 2; /* IRQ6S */ - unsigned short IRQ5S : 2; /* IRQ5S */ - unsigned short IRQ4S : 2; /* IRQ4S */ - unsigned short IRQ3S : 2; /* IRQ3S */ - unsigned short IRQ2S : 2; /* IRQ2S */ - unsigned short IRQ1S : 2; /* IRQ1S */ - unsigned short IRQ0S : 2; /* IRQ0S */ - } BIT; /* */ - } ICR1; /* */ - char wk1[2]; /* *///FFFE0806-FFFE0802-2 - union { /* IRQRR *///FFFE0806 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short IRQ7F : 1; /* IRQ7F */ - unsigned short IRQ6F : 1; /* IRQ6F */ - unsigned short IRQ5F : 1; /* IRQ5F */ - unsigned short IRQ4F : 1; /* IRQ4F */ - unsigned short IRQ3F : 1; /* IRQ3F */ - unsigned short IRQ2F : 1; /* IRQ2F */ - unsigned short IRQ1F : 1; /* IRQ1F */ - unsigned short IRQ0F : 1; /* IRQ0F */ - } BIT; /* */ - } IRQRR; /* */ - char wk2[4]; /* *///FFFE080C-FFFE0806-2 - union { /* IBCR *///FFFE080C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short E15 : 1; /* E15 */ - unsigned short E14 : 1; /* E14 */ - unsigned short E13 : 1; /* E13 */ - unsigned short E12 : 1; /* E12 */ - unsigned short E11 : 1; /* E11 */ - unsigned short E10 : 1; /* E10 */ - unsigned short E9 : 1; /* E9 */ - unsigned short E8 : 1; /* E8 */ - unsigned short E7 : 1; /* E7 */ - unsigned short E6 : 1; /* E6 */ - unsigned short E5 : 1; /* E5 */ - unsigned short E4 : 1; /* E4 */ - unsigned short E3 : 1; /* E3 */ - unsigned short E2 : 1; /* E2 */ - unsigned short E1 : 1; /* E1 */ - } BIT; /* */ - } IBCR; /* */ - union { /* IBNR *///FFFE080E - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short BE : 2; /* BE */ - unsigned short BOVE : 1; /* BOVE */ - unsigned short : 9; /* */ - unsigned short BN : 4; /* BN */ - } BIT; /* */ - } IBNR; /* */ - char wk3[8]; /* *///FFFE0818-FFFE080C-4 - union { /* IPR01 *///FFFE0818 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _IRQ0 : 4; /* IRQ0 */ - unsigned short _IRQ1 : 4; /* IRQ1 */ - unsigned short _IRQ2 : 4; /* IRQ2 */ - unsigned short _IRQ3 : 4; /* IRQ3 */ - } BIT; /* */ - } IPR01; /* */ - union { /* IPR02 *///FFFE081A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _IRQ4 : 4; /* IRQ4 */ - unsigned short _IRQ5 : 4; /* IRQ5 */ - unsigned short _IRQ6 : 4; /* IRQ6 */ - unsigned short _IRQ7 : 4; /* IRQ7 */ - } BIT; /* */ - } IPR02; /* */ - char wk4[4]; /* *///FFFE0820-FFFE081A-2 - union { /* IPR05 *///FFFE0820 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 4; /* */ - unsigned short : 4; /* */ - unsigned short _AD0 : 4; /* AD0 */ - unsigned short _AD1 : 4; /* AD1 */ - } BIT; /* */ - } IPR05; /* */ - char wk5[990]; /* *///FFFE0C00-FFFE0820-2 - union { /* IPR06 *///FFFE0C00 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _DMAC0 : 4; /* DMAC0 */ - unsigned short _DMAC1 : 4; /* DMAC1 */ - unsigned short _DMAC2 : 4; /* DMAC2 */ - unsigned short _DMAC3 : 4; /* DMAC3 */ - } BIT; /* */ - } IPR06; /* */ - union { /* IPR07 *///FFFE0C02 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _DMAC4 : 4; /* DMAC4 */ - unsigned short _DMAC5 : 4; /* DMAC5 */ - unsigned short _DMAC6 : 4; /* DMAC6 */ - unsigned short _DMAC7 : 4; /* DMAC7 */ - } BIT; /* */ - } IPR07; /* */ - union { /* IPR08 *///FFFE0C04 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _CMT0 : 4; /* CMT0 */ - unsigned short _CMT1 : 4; /* CMT1 */ - unsigned short _BSC : 4; /* BSC */ - unsigned short _WDT : 4; /* WDT */ - } BIT; /* */ - } IPR08; /* */ - union { /* IPR09 *///FFFE0C06 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU20G : 4; /* MTU20 TGI */ - unsigned short _MTU20C : 4; /* MTU20 TCI */ - unsigned short _MTU21G : 4; /* MTU21 TGI */ - unsigned short _MTU21C : 4; /* MTU21 TCI */ - } BIT; /* */ - } IPR09; /* */ - union { /* IPR10 *///FFFE0C08 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU22G : 4; /* MTU22 TGI */ - unsigned short _MTU22C : 4; /* MTU22 TCI */ - unsigned short _MTU23G : 4; /* MTU23 TGI */ - unsigned short _MTU23C : 4; /* MTU23 TCI */ - } BIT; /* */ - } IPR10; /* */ - union { /* IPR11 *///FFFE0C0A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU24G : 4; /* MTU24 TGI */ - unsigned short _MTU24C : 4; /* MTU24 TCI */ - unsigned short _MTU25 : 4; /* MTU25 */ - unsigned short _POE2 : 4; /* POE2 */ - } BIT; /* */ - } IPR11; /* */ - union { /* IPR12 *///FFFE0C0C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU2S3G : 4; /* MTU2S3 TGI*/ - unsigned short _MTU2S3C : 4; /* MTU2S3 TCI*/ - unsigned short _MTU2S4G : 4; /* MTU2S4 TGI*/ - unsigned short _MTU2S4C : 4; /* MTU2S4 TCI*/ - } BIT; /* */ - } IPR12; /* */ - union { /* IPR13 *///FFFE0C0E - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU2S5 : 4; /* MTU2S5 */ - unsigned short _POE2 : 4; /* POE2 */ - unsigned short _IIC3 : 4; /* IIC3 */ - } BIT; /* */ - } IPR13; /* */ - union { /* IPR14 *///FFFE0C10 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 4; /* */ - unsigned short : 4; /* */ - unsigned short : 4; /* */ - unsigned short _SCIF3 : 4; /* SCIF3 */ - } BIT; /* */ - } IPR14; /* */ - union { /* IPR15 *///FFFE0C12 - unsigned short WORD; /* Word Access */ - } IPR15; /* */ - union { /* IPR16 *///FFFE0C14 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _SCI0 : 4; /* SCI0 */ - unsigned short _SCI1 : 4; /* SCI1 */ - unsigned short _SCI2 : 4; /* SCI2 */ - } BIT; /* */ - } IPR16; /* */ - union { /* IPR17 *///FFFE0C16 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _RSPI : 4; /* RSPI */ - unsigned short _SCI4 : 4; /* SCI4 */ - } BIT; /* */ - } IPR17; /* */ - union { /* IPR18 *///FFFE0C18 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _USB : 4; /* USB */ - unsigned short _RCAN : 4; /* RCAN */ - unsigned short _EP1FULL : 4; /* EP1FULL */ - unsigned short _EP2EMPTY : 4; /* EP2EMPTY */ - } BIT; /* */ - } IPR18; /* */ - union { /* IPR19 *///FFFE0C1A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _EP4FULL : 4; /* EP4FULL */ - unsigned short _EP5EMPTY : 4; /* EP5EMPTY */ - unsigned short _EDMAC : 4; /* E-DMAC */ - } BIT; /* */ - } IPR19; /* */ - char wk6[52]; /* *///FFFE0C50-FFFE0C1A-2 - union { /* USDTENDRR *///FFFE0C50 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _RXF0 : 1; /* RXF0 */ - unsigned short _TXF0 : 1; /* TXF0 */ - unsigned short _RXF1 : 1; /* RXF1 */ - unsigned short _TXF1 : 1; /* TXF1 */ - } BIT; /* */ - } USDTENDRR; /* */ -}; /* */ -struct st_ubc { /* struct UBC */ - union { /* BRCR *///FFFC04C0 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :14; /* */ - unsigned int CKS : 2; /* CKS */ - unsigned int SCMFC0 : 1; /* SCMFC0 */ - unsigned int SCMFC1 : 1; /* SCMFC1 */ - unsigned int SCMFC2 : 1; /* SCMFC2 */ - unsigned int SCMFC3 : 1; /* SCMFC3 */ - unsigned int SCMFD0 : 1; /* SCMFD0 */ - unsigned int SCMFD1 : 1; /* SCMFD1 */ - unsigned int SCMFD2 : 1; /* SCMFD2 */ - unsigned int SCMFD3 : 1; /* SCMFD3 */ - unsigned int PCB3 : 1; /* PCB3 */ - unsigned int PCB2 : 1; /* PCB2 */ - unsigned int PCB1 : 1; /* PCB1 */ - unsigned int PCB0 : 1; /* PCB0 */ - } BIT; /* */ - } BRCR; /* */ -}; /* */ -struct st_ubc0 { /* struct UBC0/1*///FFFC0400/FFFC0410 - void *BAR; /* BAR */ - unsigned int BAMR; /* BAMR */ - char wk1[152]; /* *///FFFC04A0-FFFC0400-8 - union { /* BBR *///FFFC04A0 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short UBID : 1; /* UBID */ - unsigned short : 2; /* */ - unsigned short CP : 3; /* CP */ - unsigned short CD : 2; /* CD */ - unsigned short ID : 2; /* ID */ - unsigned short RW : 2; /* RW */ - unsigned short SZ : 2; /* SZ */ - } BIT; /* */ - } BBR; /* */ -}; /* */ -struct st_ubc2 { /* struct UBC2/3*///FFFC0420/FFFC0430 - void *BAR; /* BAR */ - unsigned int BAMR; /* BAMR */ - char wk1[124]; /* *///FFFC04A4-FFFC0424-4 - union { /* BBR *///FFFC04A4 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short UBID : 1; /* UBID */ - unsigned short : 2; /* */ - unsigned short CP : 3; /* CP */ - unsigned short CD : 2; /* CD */ - unsigned short ID : 2; /* ID */ - unsigned short RW : 2; /* RW */ - unsigned short SZ : 2; /* SZ */ - } BIT; /* */ - } BBR; /* */ -}; /* */ -struct st_dtc { /* struct DTC */ - union { /* DTCERA *///FFFE6000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char IRQ0 : 1; /* IRQ0 */ - unsigned char IRQ1 : 1; /* IRQ1 */ - unsigned char IRQ2 : 1; /* IRQ2 */ - unsigned char IRQ3 : 1; /* IRQ3 */ - unsigned char IRQ4 : 1; /* IRQ4 */ - unsigned char IRQ5 : 1; /* IRQ5 */ - unsigned char IRQ6 : 1; /* IRQ6 */ - unsigned char IRQ7 : 1; /* IRQ7 */ - unsigned char ADI0 : 1; /* ADI0 */ - unsigned char ADI1 : 1; /* ADI1 */ - unsigned char : 1; /* */ - unsigned char RM0 : 1; /* RM0(RCAN) */ - unsigned char CMI0 : 1; /* CMI0 */ - unsigned char CMI1 : 1; /* CMI1 */ - unsigned char USBRXI0 : 1; /* USBRXI0 *///USB EP1FULL - unsigned char USBTXI0 : 1; /* USBTXI0 *///USB EP2EMPTY - } BIT; /* */ - } DTCERA; /* */ - union { /* DTCERB *///FFFE6002 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char TGIA0 : 1; /* TGIA0 *///MTU2 - unsigned char TGIB0 : 1; /* TGIB0 */ - unsigned char TGIC0 : 1; /* TGIC0 */ - unsigned char TGID0 : 1; /* TGID0 */ - unsigned char TGIA1 : 1; /* TGIA1 */ - unsigned char TGIB1 : 1; /* TGIB1 */ - unsigned char TGIA2 : 1; /* TGIA2 */ - unsigned char TGIB2 : 1; /* TGIB2 */ - unsigned char TGIA3 : 1; /* TGIA3 */ - unsigned char TGIB3 : 1; /* TGIB3 */ - unsigned char TGIC3 : 1; /* TGIC3 */ - unsigned char TGID3 : 1; /* TGID3 */ - unsigned char TGIA4 : 1; /* TGIA4 */ - unsigned char TGIB4 : 1; /* TGIB4 */ - unsigned char TGIC4 : 1; /* TGIC4 */ - unsigned char TGID4 : 1; /* TGID4 */ - } BIT; /* */ - } DTCERB; /* */ - union { /* DTCERC *///FFFE6004 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char TCIV4 : 1; /* TCIV4 */ - unsigned char TGIU5 : 1; /* TGIU5 */ - unsigned char TGIV5 : 1; /* TGIV5 */ - unsigned char TGIW5 : 1; /* TGIW5 *///MTU2 - unsigned char : 4; /* */ - unsigned char : 4; /* */ - unsigned char TGIA3S : 1; /* TGIA3S *///MTU2S - unsigned char TGIB3S : 1; /* TGIB3S */ - unsigned char TGIC3S : 1; /* TGIC3S */ - unsigned char TGID3S : 1; /* TGID3S */ - } BIT; /* */ - } DTCERC; /* */ - union { /* DTCERD *///FFFE6006 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char TGIA4S : 1; /* TGIA4S */ - unsigned char TGIB4S : 1; /* TGIB4S */ - unsigned char TGIC4S : 1; /* TGIC4S */ - unsigned char TGID4S : 1; /* TGID4S */ - unsigned char TCIV4S : 1; /* TCIV4S */ - unsigned char TGIU5S : 1; /* TGIU5S */ - unsigned char TGIV5S : 1; /* TGIV5S */ - unsigned char TGIW5S : 1; /* TGIW5S *///MTU2S - unsigned char RXI : 1; /* RXI *///IIC3 - unsigned char TXI : 1; /* TXI *///IIC3 - unsigned char SPRXI : 1; /* SPRXI *///RSPI - unsigned char SPTXI : 1; /* SPTXI *///RSPI - unsigned char RXI4 : 1; /* RXI4 *///SCI4 - unsigned char TXI4 : 1; /* TXI4 *///SCI4 - } BIT; /* */ - } DTCERD; /* */ - union { /* DTCERE *///FFFE6008 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char RXI0 : 1; /* RXI0 *///SCI0 - unsigned char TXI0 : 1; /* TXI0 *///SCI0 - unsigned char RXI1 : 1; /* RXI1 *///SCI1 - unsigned char TXI1 : 1; /* TXI1 *///SCI1 - unsigned char RXI2 : 1; /* RXI2 *///SCI2 - unsigned char TXI2 : 1; /* TXI2 *///SCI2 - unsigned char RXI3 : 1; /* RXIF3 *///SCIF3 - unsigned char TXI3 : 1; /* TXIF3 *///SCIF3 - unsigned char USBRXI1 : 1; /* USBRXI1 *///USB EP4FULL - unsigned char USBTXI1 : 1; /* USBTXI1 *///USB EP5EMPTY - } BIT; /* */ - } DTCERE; /* */ - char wk1[6]; /* *///FFFE6010-FFFE6008-2 - union { /* DTCCR *///FFFE6010 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char RRS : 1; /* RRS */ - unsigned char RCHNE : 1; /* RCHNE */ - unsigned char : 2; /* */ - unsigned char ERR : 1; /* ERR */ - } BIT; /* */ - } DTCCR; /* */ - char wk2[3]; /* *///FFFE6014-FFFE6010-1 - unsigned int DTCVBR; /* DTCVBR *///FFFE6014 -}; /* */ -struct st_bsc { /* struct BSC */ - union { /* CMNCR *///FFFC0000 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :20; /* */ - unsigned int BLOCK : 1; /* BLOCK */ - unsigned int DPRTY : 2; /* DPRTY */ - unsigned int DMAIW : 3; /* DMAIW */ - unsigned int DMAIWA : 1; /* DMAIWA */ - unsigned int : 2; /* */ - unsigned int HIZCKIO : 1; /* HIZCKIO */ - unsigned int HIZMEM : 1; /* HIZMEM */ - unsigned int HIZCNT : 1; /* HIZCNT */ - } BIT; /* */ - } CMNCR; /* */ - union { /* CS0BCR *///FFFC0004 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS0BCR; /* */ - union { /* CS1BCR *///FFFC0008 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS1BCR; /* */ - union { /* CS2BCR *///FFFC000C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS2BCR; /* */ - union { /* CS3BCR *///FFFC0010 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS3BCR; /* */ - union { /* CS4BCR *///FFFC0014 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS4BCR; /* */ - union { /* CS5BCR *///FFFC0018 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS5BCR; /* */ - union { /* CS6BCR *///FFFC001C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS6BCR; /* */ - union { /* CS7BCR *///FFFC0020 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS7BCR; /* */ - char wk1[4]; /* *///FFFC0028-FFFC0020-4 - unsigned int CS0WCR; /* CS0WCR *///FFFC0028 - unsigned int CS1WCR; /* CS1WCR *///FFFC002C - unsigned int CS2WCR; /* CS2WCR *///FFFC0030 - unsigned int CS3WCR; /* CS3WCR *///FFFC0034 - unsigned int CS4WCR; /* CS4WCR *///FFFC0038 - unsigned int CS5WCR; /* CS5WCR *///FFFC003C - unsigned int CS6WCR; /* CS6WCR *///FFFC0040 - unsigned int CS7WCR; /* CS7WCR *///FFFC0044 - char wk2[4]; /* *///FFFC004C-FFFC0044-4 - union { /* SDCR *///FFFC004C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :11; /* */ - unsigned int A2ROW : 2; /* A2ROW */ - unsigned int : 1; /* */ - unsigned int A2COL : 2; /* A2COL */ - unsigned int : 2; /* */ - unsigned int DEEP : 1; /* DEEP */ - unsigned int SLOW : 1; /* SLOW */ - unsigned int RFSH : 1; /* RFSH */ - unsigned int RMODE : 1; /* RMODE */ - unsigned int PDOWN : 1; /* PDOWN */ - unsigned int BACTV : 1; /* BACTV */ - unsigned int : 3; /* */ - unsigned int A3ROW : 2; /* A3ROW */ - unsigned int : 1; /* */ - unsigned int A3COL : 2; /* A3COL */ - } BIT; /* */ - } SDCR; /* */ - union { /* RTCSR *///FFFC0050 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :24; /* */ - unsigned int CMF : 1; /* CMF */ - unsigned int CMIE : 1; /* CMIE */ - unsigned int CKS : 3; /* CKS */ - unsigned int RRC : 3; /* RRC */ - } BIT; /* */ - } RTCSR; /* */ - unsigned int RTCNT; /* RTCNT *///FFFC0054 - unsigned int RTCOR; /* RTCOR *///FFFC0058 - char wk3[146366]; /* *///FFFE3C1A-FFFC0058-4 - union { /* BSCEHR *///FFFE3C1A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short DTLOCK : 1; /* DTLOCK */ - unsigned short : 3; /* */ - unsigned short DTBST : 1; /* DTBST */ - unsigned short DTSA : 1; /* DTSA */ - unsigned short : 1; /* */ - unsigned short DTPR : 1; /* DTPR */ - } BIT; /* */ - } BSCEHR; /* */ -}; /* */ -struct st_dmac { /* struct DMAC */ - union { /* DMAOR *///FFFE1200 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char CMS : 2; /* CMS */ - unsigned char : 2; /* */ - unsigned char PR : 2; /* PR */ - unsigned char : 5; /* */ - unsigned char AE : 1; /* AE */ - unsigned char NMIF : 1; /* NMIF */ - unsigned char DME : 1; /* DME */ - } BIT; /* */ - } DMAOR; /* */ - char wk1[254]; /* *///FFFE1300-FFFE1200-2 - union { /* DMARS0 *///FFFE1300 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C1MID : 6; /* C1MID */ - unsigned short C1RID : 2; /* C1RID */ - unsigned short C0MID : 6; /* C0MID */ - unsigned short C0RID : 2; /* C0RID */ - } BIT; /* */ - } DMARS0; /* */ - char wk2[2]; /* *///FFFE1304-FFFE1300-2 - union { /* DMARS1 *///FFFE1304 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C3MID : 6; /* C3MID */ - unsigned short C3RID : 2; /* C3RID */ - unsigned short C2MID : 6; /* C2MID */ - unsigned short C2RID : 2; /* C2RID */ - } BIT; /* */ - } DMARS1; /* */ - char wk3[2]; /* *///FFFE1308-FFFE1304-2 - union { /* DMARS2 *///FFFE1308 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C5MID : 6; /* C5MID */ - unsigned short C5RID : 2; /* C5RID */ - unsigned short C4MID : 6; /* C4MID */ - unsigned short C4RID : 2; /* C4RID */ - } BIT; /* */ - } DMARS2; /* */ - char wk4[2]; /* *///FFFE130C-FFFE1308-2 - union { /* DMARS3 *///FFFE130C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C7MID : 6; /* C7MID */ - unsigned short C7RID : 2; /* C7RID */ - unsigned short C6MID : 6; /* C6MID */ - unsigned short C6RID : 2; /* C6RID */ - } BIT; /* */ - } DMARS3; /* */ -}; /* */ -struct st_dmac0 { /* struct DMAC0 *///FFFE1000 - /* struct DMAC1 *///FFFE1010 - void *SAR; /* SAR *///FFFE1000 - void *DAR; /* DAR *///FFFE1004 - unsigned int DMATCR; /* DMATCR *///FFFE1008 - union { /* CHCR *///FFFE100C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High Word */ - unsigned short L; /* Low Word */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned char TC : 1; /* TC */ - unsigned char : 2; /* */ - unsigned char RLD : 1; /* RLD */ - unsigned char : 4; /* */ - unsigned char DO : 1; /* DO */ - unsigned char TL : 1; /* TL */ - unsigned char : 2; /* */ - unsigned char HE : 1; /* HE */ - unsigned char HIE : 1; /* HIE */ - unsigned char AM : 1; /* AM */ - unsigned char AL : 1; /* AL */ - unsigned char DM : 2; /* DM */ - unsigned char SM : 2; /* SM */ - unsigned char RS : 4; /* RS */ - unsigned char DL : 1; /* DL */ - unsigned char DS : 1; /* DS */ - unsigned char TB : 1; /* TB */ - unsigned char TS : 2; /* TS */ - unsigned char IE : 1; /* IE */ - unsigned char TE : 1; /* TE */ - unsigned char DE : 1; /* DE */ - } BIT; /* */ - } CHCR; /* */ - char wk1[240]; /* *///FFFE1100-FFFE100C-4 - void *RSAR; /* RSAR *///FFFE1100 - void *RDAR; /* RDAR *///FFFE1104 - unsigned int RDMATCR; /* RDMATCR *///FFFE1108 -}; /* */ -struct st_dmac2 { /* struct DMAC2 *///FFFE1020 - /* struct DMAC3 *///FFFE1030 - void *SAR; /* SAR *///FFFE1020 - void *DAR; /* DAR *///FFFE1024 - unsigned int DMATCR; /* DMATCR *///FFFE1028 - union { /* CHCR *///FFFE102C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High Word */ - unsigned short L; /* Low Word */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned char TC : 1; /* TC */ - unsigned char : 2; /* */ - unsigned char RLD : 1; /* RLD */ - unsigned char : 4; /* */ - unsigned char DO : 1; /* DO */ - unsigned char : 3; /* */ - unsigned char HE : 1; /* HE */ - unsigned char HIE : 1; /* HIE */ - unsigned char AM : 1; /* AM */ - unsigned char AL : 1; /* AL */ - unsigned char DM : 2; /* DM */ - unsigned char SM : 2; /* SM */ - unsigned char RS : 4; /* RS */ - unsigned char DL : 1; /* DL */ - unsigned char DS : 1; /* DS */ - unsigned char TB : 1; /* TB */ - unsigned char TS : 2; /* TS */ - unsigned char IE : 1; /* IE */ - unsigned char TE : 1; /* TE */ - unsigned char DE : 1; /* DE */ - } BIT; /* */ - } CHCR; /* */ - char wk1[240]; /* *///FFFE1120-FFFE102C-4 - void *RSAR; /* RSAR *///FFFE1120 - void *RDAR; /* RDAR *///FFFE1124 - unsigned int RDMATCR; /* RDMATCR *///FFFE1128 -}; /* */ -struct st_dmac4 { /* struct DMAC4 *///FFFE1040 - /* struct DMAC5 *///FFFE1050 - /* struct DMAC6 *///FFFE1060 - /* struct DMAC7 *///FFFE1070 - void *SAR; /* SAR *///FFFE1040 - void *DAR; /* DAR *///FFFE1044 - unsigned int DMATCR; /* DMATCR *///FFFE1048 - union { /* CHCR *///FFFE104C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High Word */ - unsigned short L; /* Low Word */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned char TC : 1; /* TC */ - unsigned char : 2; /* */ - unsigned char RLD : 1; /* RLD */ - unsigned char : 4; /* */ - unsigned char : 4; /* */ - unsigned char HE : 1; /* HE */ - unsigned char HIE : 1; /* HIE */ - unsigned char : 2; /* */ - unsigned char DM : 2; /* DM */ - unsigned char SM : 2; /* SM */ - unsigned char RS : 4; /* RS */ - unsigned char : 2; /* */ - unsigned char TB : 1; /* TB */ - unsigned char TS : 2; /* TS */ - unsigned char IE : 1; /* IE */ - unsigned char TE : 1; /* TE */ - unsigned char DE : 1; /* DE */ - } BIT; /* */ - } CHCR; /* */ - char wk1[240]; /* *///FFFE1140-FFFE104C-4 - void *RSAR; /* RSAR *///FFFE1140 - void *RDAR; /* RDAR *///FFFE1144 - unsigned int RDMATCR; /* RDMATCR *///FFFE1148 -}; /* */ -struct st_mtu2 { /* struct MTU2 */ - union { /* TOER *///FFFE420A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OE4D : 1; /* OE4D */ - unsigned char OE4C : 1; /* OE4C */ - unsigned char OE3D : 1; /* OE3D */ - unsigned char OE4B : 1; /* OE4B */ - unsigned char OE4A : 1; /* OE4A */ - unsigned char OE3B : 1; /* OE3B */ - } BIT; /* */ - } TOER; /* */ - char wk1[2]; /* *///FFFE420D-FFFE420A-1 - union { /* TGCR *///FFFE420D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char BDC : 1; /* BDC */ - unsigned char N : 1; /* N */ - unsigned char P : 1; /* P */ - unsigned char FB : 1; /* FB */ - unsigned char WF : 1; /* WF */ - unsigned char VF : 1; /* VF */ - unsigned char UF : 1; /* UF */ - } BIT; /* */ - } TGCR; /* */ - union { /* TOCR1 *///FFFE420E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PSYE : 1; /* PSYE */ - unsigned char : 2; /* */ - unsigned char TOCL : 1; /* TOCL */ - unsigned char TOCS : 1; /* TOCS */ - unsigned char OLSN : 1; /* OLSN */ - unsigned char OLSP : 1; /* OLSP */ - } BIT; /* */ - } TOCR1; /* */ - union { /* TOCR2 *///FFFE420F - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BF : 2; /* BF */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOCR2; /* */ - char wk2[4]; /* *///FFFE4214-FFFE420F-1 - unsigned short TCDR; /* TCDR *///FFFE4214 - unsigned short TDDR; /* TDDR *///FFFE4216 - char wk3[8]; /* *///FFFE4220-FFFE4216-2 - unsigned short TCNTS; /* TCNTS *///FFFE4220 - unsigned short TCBR; /* TCBR *///FFFE4222 - char wk4[12]; /* *///FFFE4230-FFFE4222-2 - union { /* TITCR *///FFFE4230 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char T3AEN : 1; /* T3AEN */ - unsigned char T3ACOR : 3; /* T3ACOR */ - unsigned char T4VEN : 1; /* T4VEN */ - unsigned char T4VCOR : 3; /* T4VCOR */ - } BIT; /* */ - } TITCR; /* */ - union { /* TITCNT *///FFFE4231 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char T3ACNT : 3; /* T3ACNT */ - unsigned char : 1; /* */ - unsigned char T4VCNT : 3; /* T4VCNT */ - } BIT; /* */ - } TITCNT; /* */ - union { /* TBTER *///FFFE4232 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char BTE : 2; /* BTE */ - } BIT; /* */ - } TBTER; /* */ - char wk5[1]; /* *///FFFE4234-FFFE4232-1 - union { /* TDER *///FFFE4234 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char TDER : 1; /* TDER */ - } BIT; /* */ - } TDER; /* */ - char wk6[1]; /* *///FFFE4236-FFFE4234-1 - union { /* TOLBR *///FFFE4236 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOLBR; /* */ - char wk7[41]; /* *///FFFE4260-FFFE4236-1 - union { /* TWCR *///FFFE4260 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCE : 1; /* CCE */ - unsigned char : 5; /* */ - unsigned char : 1; /* */ - unsigned char WRE : 1; /* WRE */ - } BIT; /* */ - } TWCR; /* */ - char wk8[31]; /* *///FFFE4280-FFFE4260-1 - union { /* TSTR *///FFFE4280 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CST4 : 1; /* CST4 */ - unsigned char CST3 : 1; /* CST3 */ - unsigned char : 3; /* */ - unsigned char CST2 : 1; /* CST2 */ - unsigned char CST1 : 1; /* CST1 */ - unsigned char CST0 : 1; /* CST0 */ - } BIT; /* */ - } TSTR; /* */ - union { /* TSYR *///FFFE4281 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SYNC4 : 1; /* SYNC4 */ - unsigned char SYNC3 : 1; /* SYNC3 */ - unsigned char : 3; /* */ - unsigned char SYNC2 : 1; /* SYNC2 */ - unsigned char SYNC1 : 1; /* SYNC1 */ - unsigned char SYNC0 : 1; /* SYNC0 */ - } BIT; /* */ - } TSYR; /* */ - union { /* TCSYSTR *///FFFE4282 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SCH0 : 1; /* SCH0 */ - unsigned char SCH1 : 1; /* SCH1 */ - unsigned char SCH2 : 1; /* SCH2 */ - unsigned char SCH3 : 1; /* SCH3 */ - unsigned char SCH4 : 1; /* SCH4 */ - unsigned char : 1; /* */ - unsigned char SCH3S : 1; /* SCH3S */ - unsigned char SCH4S : 1; /* SCH4S */ - } BIT; /* */ - } TCSYSTR; /* */ - char wk9[1]; /* *///FFFE4284-FFFE4282-1 - union { /* TRWER *///FFFE4284 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char RWE : 1; /* RWE */ - } BIT; /* */ - } TRWER; /* */ -}; /* */ -struct st_mtu20 { /* struct MTU20 */ - union { /* TCR *///FFFE4300 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCLR : 3; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - union { /* TMDR *///FFFE4301 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char BFE : 1; /* BFE */ - unsigned char BFB : 1; /* BFB */ - unsigned char BFA : 1; /* BFA */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - union { /* TIOR *///FFFE4302 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* TIORH */ - unsigned char L; /* TIORL */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - unsigned char IOD : 4; /* IOD */ - unsigned char IOC : 4; /* IOC */ - } BIT; /* */ - } TIOR; /* */ - union { /* TIER *///FFFE4304 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 2; /* */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char TGIED : 1; /* TGIED */ - unsigned char TGIEC : 1; /* TGIEC */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - union { /* TSR *///FFFE4305 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char TGFD : 1; /* TGFD */ - unsigned char TGFC : 1; /* TGFC */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - unsigned short TCNT; /* TCNT *///FFFE4306 - unsigned short TGRA; /* TGRA *///FFFE4308 - unsigned short TGRB; /* TGRB *///FFFE430A - unsigned short TGRC; /* TGRC *///FFFE430C - unsigned short TGRD; /* TGRD *///FFFE430E - char wk1[16]; /* *///FFFE4320-FFFE430E-2 - unsigned short TGRE; /* TGRE *///FFFE4320 - unsigned short TGRF; /* TGRF *///FFFE4322 - union { /* TIER2 *///FFFE4324 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE2 : 1; /* TTGE2 */ - unsigned char : 5; /* */ - unsigned char TGIEF : 1; /* TGIEF */ - unsigned char TGIEE : 1; /* TGIEE */ - } BIT; /* */ - } TIER2; /* */ - union { /* TSR2 *///FFFE4325 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TGFF : 1; /* TGFF */ - unsigned char TGFE : 1; /* TGFE */ - } BIT; /* */ - } TSR2; /* */ - union { /* TBTM *///FFFE4326 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char TTSE : 1; /* TTSE */ - unsigned char TTSB : 1; /* TTSB */ - unsigned char TTSA : 1; /* TTSA */ - } BIT; /* */ - } TBTM; /* */ -}; /* */ -struct st_mtu21 { /* struct MTU21 */ - union { /* TCR *///FFFE4380 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char CCLR : 2; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - union { /* TMDR *///FFFE4381 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - union { /* TIOR *///FFFE4382 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - } BIT; /* */ - } TIOR; /* */ - char wk1[1]; /* *///FFFE4384-FFFE4382-1 - union { /* TIER *///FFFE4384 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 1; /* */ - unsigned char TCIEU : 1; /* TCIEU */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char : 2; /* */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - union { /* TSR *///FFFE4385 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 1; /* */ - unsigned char TCFU : 1; /* TCFU */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char : 2; /* */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - unsigned short TCNT; /* TCNT *///FFFE4386 - unsigned short TGRA; /* TGRA *///FFFE4388 - unsigned short TGRB; /* TGRB *///FFFE438A - char wk2[4]; /* *///FFFE4390-FFFE438A-2 - union { /* TICCR *///FFFE4390 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char I2BE : 1; /* I2BE */ - unsigned char I2AE : 1; /* I2AE */ - unsigned char I1BE : 1; /* I1BE */ - unsigned char I1AE : 1; /* I1AE */ - } BIT; /* */ - } TICCR; /* */ -}; /* */ -struct st_mtu22 { /* struct MTU22 */ - union { /* TCR *///FFFE4000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char CCLR : 2; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - union { /* TMDR *///FFFE4001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - union { /* TIOR *///FFFE4002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - } BIT; /* */ - } TIOR; /* */ - char wk1[1]; /* *///FFFE4004-FFFE4002-1 - union { /* TIER *///FFFE4004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 1; /* */ - unsigned char TCIEU : 1; /* TCIEU */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char : 2; /* */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - union { /* TSR *///FFFE4005 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 1; /* */ - unsigned char TCFU : 1; /* TCFU */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char : 2; /* */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - unsigned short TCNT; /* TCNT *///FFFE4006 - unsigned short TGRA; /* TGRA *///FFFE4008 - unsigned short TGRB; /* TGRB *///FFFE400A -}; /* */ -struct st_mtu23 { /* struct MTU23 */ - union { /* TCR *///FFFE4200 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCLR : 3; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - char wk1[1]; /* *///FFFE4202-FFFE4200-1 - union { /* TMDR *///FFFE4202 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char BFB : 1; /* BFB */ - unsigned char BFA : 1; /* BFA */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - char wk2[1]; /* *///FFFE4204-FFFE4202-1 - union { /* TIOR *///FFFE4204 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* TIORH */ - unsigned char L; /* TIORL */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - unsigned char IOD : 4; /* IOD */ - unsigned char IOC : 4; /* IOC */ - } BIT; /* */ - } TIOR; /* */ - char wk3[2]; /* *///FFFE4208-FFFE4204-2 - union { /* TIER *///FFFE4208 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 2; /* */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char TGIED : 1; /* TGIED */ - unsigned char TGIEC : 1; /* TGIEC */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - char wk4[7]; /* *///FFFE4210-FFFE4208-1 - unsigned short TCNT; /* TCNT *///FFFE4210 - char wk5[6]; /* *///FFFE4218-FFFE4210-2 - unsigned short TGRA; /* TGRA *///FFFE4218 - unsigned short TGRB; /* TGRB *///FFFE421A - char wk6[8]; /* *///FFFE4224-FFFE421A-2 - unsigned short TGRC; /* TGRC *///FFFE4224 - unsigned short TGRD; /* TGRD *///FFFE4226 - char wk7[4]; /* *///FFFE422C-FFFE4226-2 - union { /* TSR *///FFFE422C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 2; /* */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char TGFD : 1; /* TGFD */ - unsigned char TGFC : 1; /* TGFC */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - char wk8[11]; /* *///FFFE4238-FFFE422C-1 - union { /* TBTM *///FFFE4238 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TTSB : 1; /* TTSB */ - unsigned char TTSA : 1; /* TTSA */ - } BIT; /* */ - } TBTM; /* */ -}; /* */ -struct st_mtu24 { /* struct MTU24 */ - char wk1[1]; /* *///FFFE4200 - union { /* TCR *///FFFE4201 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCLR : 3; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - char wk2[1]; /* *///FFFE4203-FFFE4201-1 - union { /* TMDR *///FFFE4203 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char BFB : 1; /* BFB */ - unsigned char BFA : 1; /* BFA */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - char wk3[2]; /* *///FFFE4206-FFFE4203-1 - union { /* TIOR *///FFFE4206 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* TIORH */ - unsigned char L; /* TIORL */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - unsigned char IOD : 4; /* IOD */ - unsigned char IOC : 4; /* IOC */ - } BIT; /* */ - } TIOR; /* */ - char wk4[1]; /* *///FFFE4209-FFFE4206-2 - union { /* TIER *///FFFE4209 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char TTGE2 : 1; /* TTGE2 */ - unsigned char : 1; /* */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char TGIED : 1; /* TGIED */ - unsigned char TGIEC : 1; /* TGIEC */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - char wk5[8]; /* *///FFFE4212-FFFE4209-1 - unsigned short TCNT; /* TCNT *///FFFE4212 - char wk6[8]; /* *///FFFE421C-FFFE4212-2 - unsigned short TGRA; /* TGRA *///FFFE421C - unsigned short TGRB; /* TGRB *///FFFE421E - char wk7[8]; /* *///FFFE4228-FFFE421E-2 - unsigned short TGRC; /* TGRC *///FFFE4228 - unsigned short TGRD; /* TGRD *///FFFE422A - char wk8[1]; /* *///FFFE422D-FFFE422A-2 - union { /* TSR *///FFFE422D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 2; /* */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char TGFD : 1; /* TGFD */ - unsigned char TGFC : 1; /* TGFC */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - char wk9[11]; /* *///FFFE4239-FFFE422D-1 - union { /* TBTM *///FFFE4239 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TTSB : 1; /* TTSB */ - unsigned char TTSA : 1; /* TTSA */ - } BIT; /* */ - } TBTM; /* */ - char wk10[6]; /* *///FFFE4240-FFFE4239-1 - union { /* TADCR *///FFFE4240 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short BF : 2; /* BF */ - unsigned short : 6; /* */ - unsigned short UT4AE : 1; /* UT4AE */ - unsigned short DT4AE : 1; /* DT4AE */ - unsigned short UT4BE : 1; /* UT4BE */ - unsigned short DT4BE : 1; /* DT4BE */ - unsigned short ITA3AE : 1; /* ITA3AE */ - unsigned short ITA4VE : 1; /* ITA4VE */ - unsigned short ITB3AE : 1; /* ITB3AE */ - unsigned short ITB4VE : 1; /* ITB4VE */ - } BIT; /* */ - } TADCR; /* */ - char wk11[2]; /* *///FFFE4244-FFFE4240-2 - unsigned short TADCORA; /* TADCORA *///FFFE4244 - unsigned short TADCORB; /* TADCORB *///FFFE4246 - unsigned short TADCOBRA; /* TADCOBRA *///FFFE4248 - unsigned short TADCOBRB; /* TADCOBRB *///FFFE424A -}; /* */ -struct st_mtu25 { /* struct MTU25 */ - unsigned short TCNTU; /* TCNTU *///FFFE4080 - unsigned short TGRU; /* TGRU *///FFFE4082 - union { /* TCRU *///FFFE4084 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TPSC : 2; /* TPSC */ - } BIT; /* */ - } TCRU; /* */ - char wk1[1]; /* *///FFFE4086-FFFE4084-1 - union { /* TIORU *///FFFE4086 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char IOC : 5; /* IOC */ - } BIT; /* */ - } TIORU; /* */ - char wk2[9]; /* *///FFFE4090-FFFE4086-1 - unsigned short TCNTV; /* TCNTV *///FFFE4090 - unsigned short TGRV; /* TGRV *///FFFE4092 - union { /* TCRV *///FFFE4094 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TPSC : 2; /* TPSC */ - } BIT; /* */ - } TCRV; /* */ - char wk3[1]; /* *///FFFE4096-FFFE4094-1 - union { /* TIORV *///FFFE4096 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char IOC : 5; /* IOC */ - } BIT; /* */ - } TIORV; /* */ - char wk4[9]; /* *///FFFE40A0-FFFE4096-1 - unsigned short TCNTW; /* TCNTW *///FFFE40A0 - unsigned short TGRW; /* TGRW *///FFFE40A2 - union { /* TCRW *///FFFE40A4 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TPSC : 2; /* TPSC */ - } BIT; /* */ - } TCRW; /* */ - char wk5[1]; /* *///FFFE40A6-FFFE40A4-1 - union { /* TIORW *///FFFE40A6 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char IOC : 5; /* IOC */ - } BIT; /* */ - } TIORW; /* */ - char wk6[9]; /* *///FFFE40B0-FFFE40A6-1 - union { /* TSR *///FFFE40B0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char CMFU : 1; /* CMFU */ - unsigned char CMFV : 1; /* CMFV */ - unsigned char CMFW : 1; /* CMFW */ - } BIT; /* */ - } TSR; /* */ - char wk7[1]; /* *///FFFE40B2-FFFE40B0-1 - union { /* TIER *///FFFE40B2 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char TGIEU : 1; /* TGIEU */ - unsigned char TGIEV : 1; /* TGIEV */ - unsigned char TGIEW : 1; /* TGIEW */ - } BIT; /* */ - } TIER; /* */ - char wk8[1]; /* *///FFFE40B4-FFFE40B2-1 - union { /* TSTR *///FFFE40B4 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char CSTU : 1; /* CSTU */ - unsigned char CSTV : 1; /* CSTV */ - unsigned char CSTW : 1; /* CSTW */ - } BIT; /* */ - } TSTR; /* */ - char wk9[1]; /* *///FFFE40B6-FFFE40B4-1 - union { /* TCNTCMPCLR *///FFFE40B6 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char CLRU : 1; /* CLRU */ - unsigned char CLRV : 1; /* CLRV */ - unsigned char CLRW : 1; /* CLRW */ - } BIT; /* */ - } TCNTCMPCLR; /* */ -}; /* */ -struct st_mtu2s { /* struct MTU2S */ - union { /* TOERS *///FFFE4A0A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OE4D : 1; /* OE4D */ - unsigned char OE4C : 1; /* OE4C */ - unsigned char OE3D : 1; /* OE3D */ - unsigned char OE4B : 1; /* OE4B */ - unsigned char OE4A : 1; /* OE4A */ - unsigned char OE3B : 1; /* OE3B */ - } BIT; /* */ - } TOER; /* */ - char wk1[2]; /* *///FFFE4A0D-FFFE4A0A-1 - union { /* TGCRS *///FFFE4A0D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char BDC : 1; /* BDC */ - unsigned char N : 1; /* N */ - unsigned char P : 1; /* P */ - unsigned char FB : 1; /* FB */ - unsigned char WF : 1; /* WF */ - unsigned char VF : 1; /* VF */ - unsigned char UF : 1; /* UF */ - } BIT; /* */ - } TGCR; /* */ - union { /* TOCR1S *///FFFE4A0E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PSYE : 1; /* PSYE */ - unsigned char : 2; /* */ - unsigned char TOCL : 1; /* TOCL */ - unsigned char TOCS : 1; /* TOCS */ - unsigned char OLSN : 1; /* OLSN */ - unsigned char OLSP : 1; /* OLSP */ - } BIT; /* */ - } TOCR1; /* */ - union { /* TOCR2S *///FFFE4A0F - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BF : 2; /* BF */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOCR2; /* */ - char wk2[4]; /* *///FFFE4A14-FFFE4A0F-1 - unsigned short TCDR; /* TCDRS *///FFFE4A14 - unsigned short TDDR; /* TDDRS *///FFFE4A16 - char wk3[8]; /* *///FFFE4A20-FFFE4A16-2 - unsigned short TCNTS; /* TCNTS *///FFFE4A20 - unsigned short TCBR; /* TCBRS *///FFFE4A22 - char wk4[12]; /* *///FFFE4A30-FFFE4A22-2 - union { /* TITCRS *///FFFE4A30 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char T3AEN : 1; /* T3AEN */ - unsigned char T3ACOR : 3; /* T3ACOR */ - unsigned char T4VEN : 1; /* T4VEN */ - unsigned char T4VCOR : 3; /* T4VCOR */ - } BIT; /* */ - } TITCR; /* */ - union { /* TITCNTS *///FFFE4A31 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char T3ACNT : 3; /* T3ACNT */ - unsigned char : 1; /* */ - unsigned char T4VCNT : 3; /* T4VCNT */ - } BIT; /* */ - } TITCNT; /* */ - union { /* TBTERS *///FFFE4A32 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char BTE : 2; /* BTE */ - } BIT; /* */ - } TBTER; /* */ - char wk5[1]; /* *///FFFE4A34-FFFE4A32-1 - union { /* TDER *///FFFE4A34 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char TDER : 1; /* TDER */ - } BIT; /* */ - } TDER; /* */ - char wk6[1]; /* *///FFFE4A36-FFFE4A34-1 - union { /* TOLBR *///FFFE4A36 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOLBR; /* */ - char wk7[25]; /* *///FFFE4A50-FFFE4A36-1 - union { /* TSYCRS *///FFFE4A50 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CE0A : 1; /* CE0A */ - unsigned char CE0B : 1; /* CE0B */ - unsigned char CE0C : 1; /* CE0C */ - unsigned char CE0D : 1; /* CE0D */ - unsigned char CE1A : 1; /* CE1A */ - unsigned char CE1B : 1; /* CE1B */ - unsigned char CE2A : 1; /* CE2A */ - unsigned char CE2B : 1; /* CE2B */ - } BIT; /* */ - } TSYCRS; /* */ - char wk8[15]; /* *///FFFE4A60-FFFE4A50-1 - union { /* TWCRS *///FFFE4A60 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCE : 1; /* CCE */ - unsigned char : 5; /* */ - unsigned char SCC : 1; /* SCC */ - unsigned char WRE : 1; /* WRE */ - } BIT; /* */ - } TWCR; /* */ - char wk9[31]; /* *///FFFE4A80-FFFE4A60-1 - union { /* TSTRS *///FFFE4A80 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CST4 : 1; /* CST4 */ - unsigned char CST3 : 1; /* CST3 */ - unsigned char : 3; /* */ - unsigned char CST2 : 1; /* CST2 */ - unsigned char CST1 : 1; /* CST1 */ - unsigned char CST0 : 1; /* CST0 */ - } BIT; /* */ - } TSTR; /* */ - union { /* TSYRS *///FFFE4A81 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SYNC4 : 1; /* SYNC4 */ - unsigned char SYNC3 : 1; /* SYNC3 */ - unsigned char : 3; /* */ - unsigned char SYNC2 : 1; /* SYNC2 */ - unsigned char SYNC1 : 1; /* SYNC1 */ - unsigned char SYNC0 : 1; /* SYNC0 */ - } BIT; /* */ - } TSYR; /* */ - char wk10[2]; /* *///FFFE4A84-FFFE4A81-1 - union { /* TRWERS *///FFFE4A84 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char RWE : 1; /* RWE */ - } BIT; /* */ - } TRWER; /* */ -}; /* */ -struct st_poe2 { /* struct POE2 */ - union { /* ICSR1 *///FFFE5000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short POE3F : 1; /* POE3F */ - unsigned short POE2F : 1; /* POE2F */ - unsigned short POE1F : 1; /* POE1F */ - unsigned short POE0F : 1; /* POE0F */ - unsigned short : 3; /* */ - unsigned short PIE1 : 1; /* PIE1 */ - unsigned short POE3M : 2; /* POE3M */ - unsigned short POE2M : 2; /* POE2M */ - unsigned short POE1M : 2; /* POE1M */ - unsigned short POE0M : 2; /* POE0M */ - } BIT; /* */ - } ICSR1; /* */ - union { /* OCSR1 *///FFFE5002 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short OSF1 : 1; /* OSF1 */ - unsigned short : 5; /* */ - unsigned short OCE1 : 1; /* OCE1 */ - unsigned short OIE1 : 1; /* OIE1 */ - } BIT; /* */ - } OCSR1; /* */ - union { /* ICSR2 *///FFFE5004 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short POE4F : 1; /* POE4F */ - unsigned short : 3; /* */ - unsigned short PIE2 : 1; /* PIE2 */ - unsigned short : 6; /* */ - unsigned short POE4M : 2; /* POE4M */ - } BIT; /* */ - } ICSR2; /* */ - union { /* OCSR2 *///FFFE5006 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short OSF2 : 1; /* OSF2 */ - unsigned short : 5; /* */ - unsigned short OCE2 : 1; /* OCE2 */ - unsigned short OIE2 : 1; /* OIE2 */ - } BIT; /* */ - } OCSR2; /* */ - union { /* ICSR3 *///FFFE5008 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short POE8F : 1; /* POE8F */ - unsigned short : 2; /* */ - unsigned short POE8E : 1; /* POE8E */ - unsigned short PIE3 : 1; /* PIE3 */ - unsigned short : 6; /* */ - unsigned short POE8M : 2; /* POE8M */ - } BIT; /* */ - } ICSR3; /* */ - union { /* SPOER *///FFFE500A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char MTU2SHIZ : 1; /* MTU2SHIZ */ - unsigned char MTU2CH0HIZ : 1; /* MTU2CH0HIZ*/ - unsigned char MTU2CH34HIZ : 1; /* MTU2CH34HI*/ - } BIT; /* */ - } SPOER; /* */ - union { /* POECR1 *///FFFE500B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char MTU2PB4ZE : 1; /* MTU2PB4ZE */ - unsigned char MTU2PB3ZE : 1; /* MTU2PB3ZE */ - unsigned char MTU2PB2ZE : 1; /* MTU2PB2ZE */ - unsigned char MTU2PB1ZE : 1; /* MTU2PB1ZE */ - unsigned char MTU2PE3ZE : 1; /* MTU2PE3ZE */ - unsigned char MTU2PE2ZE : 1; /* MTU2PE2ZE */ - unsigned char MTU2PE1ZE : 1; /* MTU2PE1ZE */ - unsigned char MTU2PE0ZE : 1; /* MTU2PE0ZE */ - } BIT; /* */ - } POECR1; /* */ - union { /* POECR2 *///FFFE500C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 1; /* */ - unsigned short MTU2P1CZE : 1; /* MTU2P1CZE */ - unsigned short MTU2P2CZE : 1; /* MTU2P2CZE */ - unsigned short MTU2P3CZE : 1; /* MTU2P3CZE */ - unsigned short : 1; /* */ - unsigned short MTU2SP1CZE : 1; /* MTU2SP1CZE*/ - unsigned short MTU2SP2CZE : 1; /* MTU2SP2CZE*/ - unsigned short MTU2SP3CZE : 1; /* MTU2SP3CZE*/ - unsigned short : 1; /* */ - unsigned short MTU2SP4CZE : 1; /* MTU2SP4CZE*/ - unsigned short MTU2SP5CZE : 1; /* MTU2SP5CZE*/ - unsigned short MTU2SP6CZE : 1; /* MTU2SP6CZE*/ - unsigned short : 1; /* */ - unsigned short MTU2SP7CZE : 1; /* MTU2SP7CZE*/ - unsigned short MTU2SP8CZE : 1; /* MTU2SP8CZE*/ - unsigned short MTU2SP9CZE : 1; /* MTU2SP9CZE*/ - } BIT; /* */ - } POECR2; /* */ -}; /* */ -struct st_cmt { /* struct CMT */ - union { /* CMSTR *///FFFEC000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short :14; /* */ - unsigned short STR1 : 1; /* STR1 */ - unsigned short STR0 : 1; /* STR0 */ - } BIT; /* */ - } CMSTR; /* */ -}; /* */ -struct st_cmt0 { /* struct CMT0 */ - union { /* CMCSR *///FFFEC002/FFFEC008 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short CMF : 1; /* CMF */ - unsigned short CMIE : 1; /* CMIE */ - unsigned short : 4; /* */ - unsigned short CKS : 2; /* CKS */ - } BIT; /* */ - } CMCSR; /* */ - unsigned short CMCNT; /* CMCNT *///FFFEC004/FFFEC00A - unsigned short CMCOR; /* CMCOR *///FFFEC006/FFFEC00C -}; /* */ -union un_wdt { /* union WDT */ - struct { /* Read Access */ - union { /* WTCSR *///FFFE0000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char IOVF : 1; /* IOVF */ - unsigned char WTIT : 1; /* WT/IT */ - unsigned char TME : 1; /* TME */ - unsigned char : 2; /* */ - unsigned char CKS : 3; /* CKS */ - } BIT; /* */ - } WTCSR; /* */ - char wk1[1]; /* *///FFFE0002-FFFE0000-1 - unsigned char WTCNT; /* WTCNT *///FFFE0002 - char wk2[1]; /* *///FFFE0004-FFFE0002-1 - union { /* WRCSR *///FFFE0004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char WOVF : 1; /* WOVF */ - unsigned char RSTE : 1; /* RSTE */ - unsigned char RSTS : 1; /* RSTS */ - } BIT; /* */ - } WRCSR; /* */ - } READ; /* */ - struct { /* Write Access */ - unsigned short WTCSR; /* WTCSR *///FFFE0000 - unsigned short WTCNT; /* WTCNT *///FFFE0002 - unsigned short WRCSR; /* WRCSR *///FFFE0004 - } WRITE; /* */ -}; /* */ -struct st_sci { /* struct SCI */ - union { /* SCSMR *///FFFF8000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CA : 1; /* C/A */ - unsigned char CHR : 1; /* CHR */ - unsigned char _PE : 1; /* PE */ - unsigned char OE : 1; /* O/E */ - unsigned char STOP : 1; /* STOP */ - unsigned char MP : 1; /* MP */ - unsigned char CKS : 2; /* CKS */ - } BIT; /* */ - } SCSMR; /* */ - char wk1[1]; /* *///FFFF8002-FFFF8000-1 - unsigned char SCBRR; /* SCBRR *///FFFF8002 - char wk2[1]; /* *///FFFF8004-FFFF8002-1 - union { /* SCSCR *///FFFF8004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TIE : 1; /* TIE */ - unsigned char RIE : 1; /* RIE */ - unsigned char TE : 1; /* TE */ - unsigned char RE : 1; /* RE */ - unsigned char MPIE : 1; /* MPIE */ - unsigned char TEIE : 1; /* TEIE */ - unsigned char CKE : 2; /* CKE */ - } BIT; /* */ - } SCSCR; /* */ - char wk3[1]; /* *///FFFF8006-FFFF8004-1 - unsigned char SCTDR; /* SCTDR *///FFFF8006 - char wk4[1]; /* *///FFFF8008-FFFF8006-1 - union { /* SCSSR *///FFFF8008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TDRE : 1; /* TDRE */ - unsigned char RDRF : 1; /* RDRF */ - unsigned char ORER : 1; /* ORER */ - unsigned char FER : 1; /* FER */ - unsigned char PER : 1; /* PER */ - unsigned char TEND : 1; /* TEND */ - unsigned char MPB : 1; /* MPB */ - unsigned char MPBT : 1; /* MPBT */ - } BIT; /* */ - } SCSSR; /* */ - char wk5[1]; /* *///FFFF800A-FFFF8008-1 - unsigned char SCRDR; /* SCRDR *///FFFF800A - char wk6[1]; /* *///FFFF800C-FFFF800A-1 - union { /* SCSDCR *///FFFF800C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char DIR : 1; /* DIR */ - } BIT; /* */ - } SCSDCR; /* */ - char wk7[1]; /* *///FFFF800E-FFFF800C-1 - union { /* SCSPTR *///FFFF800E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char EIO : 1; /* EIO */ - unsigned char : 3; /* */ - unsigned char SPB1IO : 1; /* SPB1IO */ - unsigned char SPB1DT : 1; /* SPB1DT */ - unsigned char : 1; /* */ - unsigned char SPB0DT : 1; /* SPB0DT */ - } BIT; /* */ - } SCSPTR; /* */ -}; /* */ -struct st_scif { /* struct SCIF */ - union { /* SCSMR *///FFFE9800 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short CA : 1; /* C/A */ - unsigned short CHR : 1; /* CHR */ - unsigned short _PE : 1; /* PE */ - unsigned short OE : 1; /* O/E */ - unsigned short STOP : 1; /* STOP */ - unsigned short : 1; /* */ - unsigned short CKS : 2; /* CKS */ - } BIT; /* */ - } SCSMR; /* */ - char wk1[2]; /* *///FFFE9804-FFFE9800-2 - unsigned char SCBRR; /* SCBRR *///FFFE9804 - char wk2[3]; /* *///FFFE9808-FFFE9804-1 - union { /* SCSCR *///FFFE9808 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short TIE : 1; /* TIE */ - unsigned short RIE : 1; /* RIE */ - unsigned short TE : 1; /* TE */ - unsigned short RE : 1; /* RE */ - unsigned short REIE : 1; /* REIE */ - unsigned short : 1; /* */ - unsigned short CKE : 2; /* CKE */ - } BIT; /* */ - } SCSCR; /* */ - char wk3[2]; /* *///FFFE980C-FFFE9808-2 - unsigned char SCFTDR; /* SCFTDR *///FFFE980C - char wk4[3]; /* *///FFFE9810-FFFE980C-1 - union { /* SCFSR *///FFFE9810 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short PERC : 4; /* PER3-0 */ - unsigned short FERC : 4; /* FER3-0 */ - unsigned short ER : 1; /* ER */ - unsigned short TEND : 1; /* TEND */ - unsigned short TDFE : 1; /* TDFE */ - unsigned short BRK : 1; /* BRK */ - unsigned short FER : 1; /* FER */ - unsigned short PER : 1; /* PER */ - unsigned short RDF : 1; /* RDF */ - unsigned short DR : 1; /* DR */ - } BIT; /* */ - } SCFSR; /* */ - char wk5[2]; /* *///FFFE9814-FFFE9810-2 - unsigned char SCFRDR; /* SCFRDR *///FFFE9814 - char wk6[3]; /* *///FFFE9818-FFFE9814-1 - union { /* SCFCR *///FFFE9818 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short RTRG : 2; /* RTRG */ - unsigned short TTRG : 2; /* TTRG */ - unsigned short : 1; /* */ - unsigned short TFRST : 1; /* TFRST */ - unsigned short RFRST : 1; /* RFRST */ - unsigned short LOOP : 1; /* LOOP */ - } BIT; /* */ - } SCFCR; /* */ - char wk7[2]; /* *///FFFE981C-FFFE9818-2 - union { /* SCFDR *///FFFE981C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short T : 5; /* T */ - unsigned short : 3; /* */ - unsigned short R : 5; /* R */ - } BIT; /* */ - } SCFDR; /* */ - char wk8[2]; /* *///FFFE9820-FFFE981C-2 - union { /* SCSPTR *///FFFE9820 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short : 4; /* */ - unsigned short SCKIO : 1; /* SCKIO */ - unsigned short SCKDT : 1; /* SCKDT */ - unsigned short SPB2IO : 1; /* SPB2IO */ - unsigned short SPB2DT : 1; /* SPB2DT */ - } BIT; /* */ - } SCSPTR; /* */ - char wk9[2]; /* *///FFFE9824-FFFE9820-2 - union { /* SCLSR *///FFFE9824 - unsigned short WORD; /* Word Access */ - struct { /* Bit Accesss */ - unsigned short :15; /* */ - unsigned short ORER : 1; /* ORER */ - } BIT; /* */ - } SCLSR; /* */ - char wk10[218]; /* *///FFFE9900-FFFE9824-2 - union { /* SCSEMR *///FFFE9900 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ABCS : 1; /* ABCS */ - } BIT; /* */ - } SCSEMR; /* */ -}; /* */ -struct st_rspi { /* struct RSPI */ - union { /* SPCR *///FFFFB000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SPRIE : 1; /* SPRIE */ - unsigned char SPE : 1; /* SPE */ - unsigned char SPTIE : 1; /* SPTIE */ - unsigned char SPEIE : 1; /* SPEIE */ - unsigned char MSTR : 1; /* MSTR */ - unsigned char MODFEN : 1; /* MODFEN */ - unsigned char : 1; /* */ - unsigned char SPMS : 1; /* SPMS */ - } BIT; /* */ - } SPCR; /* */ - union { /* SSLP *///FFFFB0001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char SSL3P : 1; /* SSL3P */ - unsigned char SSL2P : 1; /* SSL2P */ - unsigned char SSL1P : 1; /* SSL1P */ - unsigned char SSL0P : 1; /* SSL0P */ - } BIT; /* */ - } SSLP; /* */ - union { /* SPPCR *///FFFFB002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char MOIFE : 1; /* MOIFE */ - unsigned char MOIFV : 1; /* MOIFV */ - unsigned char : 1; /* */ - unsigned char SPOM : 1; /* SPOM */ - unsigned char : 1; /* */ - unsigned char SPLP : 1; /* SPLP */ - } BIT; /* */ - } SPPCR; /* */ - union { /* SPSR *///FFFFB003 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SPRF : 1; /* SPRF */ - unsigned char : 1; /* */ - unsigned char SPTEF : 1; /* SPTEF */ - unsigned char : 2; /* */ - unsigned char MODF : 1; /* MODF */ - unsigned char MIDLE : 1; /* MIDLE */ - unsigned char OVRF : 1; /* OVRF */ - } BIT; /* */ - } SPSR; /* */ - union { /* SPDR *///FFFFB004 - unsigned int LONG; /* Long Access */ - unsigned short WORD; /* Word Access */ - } SPDR; /* */ - union { /* SPSCR *///FFFFB008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SPSLN : 3; /* SPSLN */ - } BIT; /* */ - } SPSCR; /* */ - union { /* SPSSR *///FFFFB009 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char SPECM : 2; /* SPECM */ - unsigned char : 2; /* */ - unsigned char SPCP : 2; /* SPCP */ - } BIT; /* */ - } SPSSR; /* */ - union { /* SPBR *///FFFFB00A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SPR : 8; /* SPR */ - } BIT; /* */ - } SPBR; /* */ - union { /* SPDCR *///FFFFB00B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char SPLW : 1; /* SPLW */ - unsigned char SPRDTD : 1; /* SPRDTD */ - unsigned char : 2; /* */ - unsigned char SPFC : 2; /* SPFC */ - } BIT; /* */ - } SPDCR; /* */ - union { /* SPCKD *///FFFFB00C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SCKDL : 3; /* SCKDL */ - } BIT; /* */ - } SPCKD; /* */ - union { /* SSLND *///FFFFB00D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SLNDL : 3; /* SLNDL */ - } BIT; /* */ - } SSLND; /* */ - union { /* SPND *///FFFFB00E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SPNDL : 3; /* SPNDL */ - } BIT; /* */ - } SPND; /* */ - unsigned char wk1[1]; /* *///FFFFB010-FFFFB00E-1 - union { /* SPCMD0 *///FFFFB010 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD0; /* */ - union { /* SPCMD1 *///FFFFB012 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD1; /* */ - union { /* SPCMD2 *///FFFFB014 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD2; /* */ - union { /* SPCMD3 *///FFFFB016 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD3; /* */ -}; /* */ -struct st_iic3 { /* struct IIC3 */ - union { /* ICCR1 *///FFFEE000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ICE : 1; /* ICE */ - unsigned char RCVD : 1; /* RCVD */ - unsigned char MST : 1; /* MST */ - unsigned char TRS : 1; /* TRS */ - unsigned char CKS : 4; /* CKS */ - } BIT; /* */ - } ICCR1; /* */ - union { /* ICCR2 *///FFFEE001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BBSY : 1; /* BBSY */ - unsigned char SCP : 1; /* SCP */ - unsigned char SDAO : 1; /* SDAO */ - unsigned char SDAOP : 1; /* SDAOP */ - unsigned char SCLO : 1; /* SCLO */ - unsigned char : 1; /* */ - unsigned char IICRST : 1; /* IICRST */ - } BIT; /* */ - } ICCR2; /* */ - union { /* ICMR *///FFFEE002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char MLS : 1; /* MLS */ - unsigned char : 3; /* */ - unsigned char BCWP : 1; /* BCWP */ - unsigned char BC : 3; /* BC */ - } BIT; /* */ - } ICMR; /* */ - union { /* ICIER *///FFFEE003 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TIE : 1; /* TIE */ - unsigned char TEIE : 1; /* TEIE */ - unsigned char RIE : 1; /* RIE */ - unsigned char NAKIE : 1; /* NAKIE */ - unsigned char STIE : 1; /* STIE */ - unsigned char ACKE : 1; /* ACKE */ - unsigned char ACKBR : 1; /* ACKBR */ - unsigned char ACKBT : 1; /* ACKBT */ - } BIT; /* */ - } ICIER; /* */ - union { /* ICSR *///FFFEE0040 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TDRE : 1; /* TDRE */ - unsigned char TEND : 1; /* TEND */ - unsigned char RDRF : 1; /* RDRF */ - unsigned char NACKF : 1; /* NACKF */ - unsigned char STOP : 1; /* STOP */ - unsigned char ALOVE : 1; /* ALOVE */ - unsigned char AAS : 1; /* AAS */ - unsigned char ADZ : 1; /* ADZ */ - } BIT; /* */ - } ICSR; /* */ - union { /* SAR *///FFFEE005 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SVA : 7; /* SVA */ - unsigned char FS : 1; /* FS */ - } BIT; /* */ - } SAR; /* */ - unsigned char ICDRT; /* ICDRT *///FFFEE006 - unsigned char ICDRR; /* ICDRR *///FFFEE007 - union { /* NF2CYC *///FFFEE008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char NF2CYC : 1; /* NF2CYC */ - } BIT; /* */ - } NF2CYC; /* */ -}; /* */ -struct st_adc0 { /* struct ADC0 */ - union { /* ADCR *///FFFFE800 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ADST : 1; /* ADST */ - unsigned char ADCS : 1; /* ADCS */ - unsigned char ACE : 1; /* ACE */ - unsigned char ADIE : 1; /* ADIE */ - unsigned char : 2; /* */ - unsigned char TRGE : 1; /* TRGE */ - unsigned char EXTRG : 1; /* EXTRG */ - } BIT; /* */ - } ADCR; /* */ - char wk1[1]; /* *///FFFFE802-FFFFE800-1 - union { /* ADSR *///FFFFE802 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char ADF : 1; /* ADF */ - } BIT; /* */ - } ADSR; /* */ - char wk2[25]; /* *///FFFFE81C-FFFFE802-1 - union { /* ADSTRGR *///FFFFE81C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char STR6 : 1; /* STR6 */ - unsigned char STR5 : 1; /* STR5 */ - unsigned char STR4 : 1; /* STR4 */ - unsigned char STR3 : 1; /* STR3 */ - unsigned char STR2 : 1; /* STR2 */ - unsigned char STR1 : 1; /* STR1 */ - unsigned char STR0 : 1; /* STR0 */ - } BIT; /* */ - } ADSTRGR; /* */ - char wk3[3]; /* *///FFFFE820-FFFFE81C-1 - union { /* ADANSR *///FFFFE820 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char ANS3 : 1; /* ANS3 */ - unsigned char ANS2 : 1; /* ANS2 */ - unsigned char ANS1 : 1; /* ANS1 */ - unsigned char ANS0 : 1; /* ANS0 */ - } BIT; /* */ - } ADANSR; /* */ - char wk4[15]; /* *///FFFFE830-FFFFE820-1 - union { /* ADBYPSCR *///FFFFE830 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char : 1; /* */ - unsigned char SH : 1; /* SH */ - } BIT; /* */ - } ADBYPSCR; /* */ - char wk5[15]; /* *///FFFFE840-FFFFE830-1 - unsigned short ADDR0; /* ADDR0 *///FFFFE840 - unsigned short ADDR1; /* ADDR1 *///FFFFE842 - unsigned short ADDR2; /* ADDR2 *///FFFFE844 - unsigned short ADDR3; /* ADDR3 *///FFFFE846 -}; /* */ -struct st_adc1 { /* struct ADC1 */ - union { /* ADCR *///FFFFEC00 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ADST : 1; /* ADST */ - unsigned char ADCS : 1; /* ADCS */ - unsigned char ACE : 1; /* ACE */ - unsigned char ADIE : 1; /* ADIE */ - unsigned char : 2; /* */ - unsigned char TRGE : 1; /* TRGE */ - unsigned char EXTRG : 1; /* EXTRG */ - } BIT; /* */ - } ADCR; /* */ - char wk1; /* *///FFFFEC02-FFFFEC00-1 - union { /* ADSR *///FFFFEC02 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char ADF : 1; /* ADF */ - } BIT; /* */ - } ADSR; /* */ - char wk2[25]; /* *///FFFFEC1C-FFFFEC02-1 - union { /* ADSTRGR *///FFFFEC1C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char STR6 : 1; /* STR6 */ - unsigned char STR5 : 1; /* STR5 */ - unsigned char STR4 : 1; /* STR4 */ - unsigned char STR3 : 1; /* STR3 */ - unsigned char STR2 : 1; /* STR2 */ - unsigned char STR1 : 1; /* STR1 */ - unsigned char STR0 : 1; /* STR0 */ - } BIT; /* */ - } ADSTRGR; /* */ - char wk3[3]; /* *///FFFFEC20-FFFFEC1C-1 - union { /* ADANSR *///FFFFEC20 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char ANS3 : 1; /* ANS3 */ - unsigned char ANS2 : 1; /* ANS2 */ - unsigned char ANS1 : 1; /* ANS1 */ - unsigned char ANS0 : 1; /* ANS0 */ - } BIT; /* */ - } ADANSR; /* */ - char wk4[15]; /* *///FFFFEC30-FFFFEC20-1 - union { /* ADBYPSCR *///FFFFEC30 - unsigned char BYTE; /* Byte Access */ - } ADBYPSCR; /* */ - char wk5[15]; /* *///FFFFEC40-FFFFEC30-1 - unsigned short ADDR4; /* ADDR4 *///FFFFEC40 - unsigned short ADDR5; /* ADDR5 *///FFFFEC42 - unsigned short ADDR6; /* ADDR6 *///FFFFEC44 - unsigned short ADDR7; /* ADDR7 *///FFFFEC46 -}; /* */ -struct st_rcanet { /* structRCAN-ET*/ - union { /* MCR *///FFFFD000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short IDR : 1; /* IDR */ - unsigned short AHBO : 1; /* AHBO */ - unsigned short : 3; /* */ - unsigned short TST : 3; /* TST */ - unsigned short AWM : 1; /* AWM */ - unsigned short HDBO : 1; /* HDBO */ - unsigned short SLPM : 1; /* SLPM */ - unsigned short : 2; /* */ - unsigned short MTP : 1; /* MTP */ - unsigned short HLTRQ : 1; /* HLTRQ */ - unsigned short RSTRQ : 1; /* RSTRQ */ - } BIT; /* */ - } MCR; /* */ - union { /* GSR *///FFFFD002 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short :10; /* */ - unsigned short EPSB : 1; /* EPSB */ - unsigned short HSSB : 1; /* HSSB */ - unsigned short RSB : 1; /* RSB */ - unsigned short MTPF : 1; /* MTPF */ - unsigned short TRWF : 1; /* TRWF */ - unsigned short BOF : 1; /* BOF */ - } BIT; /* */ - } GSR; /* */ - union { /* BCR1 *///FFFFD004 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short TSG1 : 4; /* TSG1 */ - unsigned short : 1; /* */ - unsigned short TSG2 : 3; /* TSG2 */ - unsigned short : 2; /* */ - unsigned short SJW : 2; /* SJW */ - unsigned short : 3; /* */ - unsigned short BSP : 1; /* BSP */ - } BIT; /* */ - } BCR1; /* */ - union { /* BCR0 *///FFFFD006 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short BRP : 8; /* BRP */ - } BIT; /* */ - } BCR0; /* */ - union { /* IRR */ - unsigned short WORD; /* Word Access *///FFFFD008 - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short MEIF : 1; /* MEIF */ - unsigned short BASMIF : 1; /* BASMIF */ - unsigned short : 2; /* */ - unsigned short MOOIF : 1; /* MOOIF */ - unsigned short MBEIF : 1; /* MBEIF */ - unsigned short OLFIF : 1; /* OLFIF */ - unsigned short BOFIF : 1; /* BOFIF */ - unsigned short EPIF : 1; /* EPIF */ - unsigned short RECWIF : 1; /* RECWIF */ - unsigned short TECWIF : 1; /* TECWIF */ - unsigned short RFRIF : 1; /* RFRIF */ - unsigned short DFRIF : 1; /* DFRIF */ - unsigned short RSTIF : 1; /* RSTIF */ - } BIT; /* */ - } IRR; /* */ - union { /* IMR *///FFFFD00A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short MEIM : 1; /* MEIM */ - unsigned short BASMIM : 1; /* BASMIM */ - unsigned short : 2; /* */ - unsigned short MOOIM : 1; /* MOOIM */ - unsigned short MBEIM : 1; /* MBEIM */ - unsigned short OLFIM : 1; /* OLFIM */ - unsigned short BOFIM : 1; /* BOFIM */ - unsigned short EPIM : 1; /* EPIM */ - unsigned short RECWIM : 1; /* RECWIM */ - unsigned short TECWIM : 1; /* TECWIM */ - unsigned short RFRIM : 1; /* RFRIM */ - unsigned short DFRIM : 1; /* DFRIM */ - unsigned short RSTIM : 1; /* RSTIM */ - } BIT; /* */ - } IMR; /* */ - union { /* TECREC *///FFFFD00C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short TEC : 8; /* TEC */ - unsigned short REC : 8; /* REC */ - } BIT; /* */ - } TECREC; /* */ - char wk1[18]; /* *///FFFFD020-FFFFD00C-2 - union { /* TXPR1,0 *///FFFFD020 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int MB31 : 1; /* MB31 */ - unsigned int MB30 : 1; /* MB30 */ - unsigned int MB29 : 1; /* MB29 */ - unsigned int MB28 : 1; /* MB28 */ - unsigned int MB27 : 1; /* MB27 */ - unsigned int MB26 : 1; /* MB26 */ - unsigned int MB25 : 1; /* MB25 */ - unsigned int MB24 : 1; /* MB24 */ - unsigned int MB23 : 1; /* MB23 */ - unsigned int MB22 : 1; /* MB22 */ - unsigned int MB21 : 1; /* MB21 */ - unsigned int MB20 : 1; /* MB20 */ - unsigned int MB19 : 1; /* MB19 */ - unsigned int MB18 : 1; /* MB18 */ - unsigned int MB17 : 1; /* MB17 */ - unsigned int MB16 : 1; /* MB16 */ - unsigned int MB15 : 1; /* MB15 */ - unsigned int MB14 : 1; /* MB14 */ - unsigned int MB13 : 1; /* MB13 */ - unsigned int MB12 : 1; /* MB12 */ - unsigned int MB11 : 1; /* MB11 */ - unsigned int MB10 : 1; /* MB10 */ - unsigned int MB9 : 1; /* MB9 */ - unsigned int MB8 : 1; /* MB8 */ - unsigned int MB7 : 1; /* MB7 */ - unsigned int MB6 : 1; /* MB6 */ - unsigned int MB5 : 1; /* MB5 */ - unsigned int MB4 : 1; /* MB4 */ - unsigned int MB3 : 1; /* MB3 */ - unsigned int MB2 : 1; /* MB2 */ - unsigned int MB1 : 1; /* MB1 */ - } BIT; /* */ - } TXPR10; /* */ - char wk2[6]; /* */ - union { /* TXCR0 *///FFFFD02A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - } BIT; /* */ - } TXCR0; /* */ - char wk3[6]; /* */ - union { /* TXACK0 *///FFFFD032 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - } BIT; /* */ - } TXACK0; /* */ - char wk4[6]; /* */ - union { /* ABACK0 *///FFFFD03A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - } BIT; /* */ - } ABACK0; /* */ - char wk5[6]; /* */ - union { /* RXPR0 *///FFFFD042 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } RXPR0; /* */ - char wk6[6]; /* */ - union { /* RFPR0 *///FFFFD04A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } RFPR0; /* */ - char wk7[6]; /* */ - union { /* MBIMR0 *///FFFFD052 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } MBIMR0; /* */ - char wk8[6]; /* */ - union { /* UMSR0 *///FFFFD05A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } UMSR0; /* */ - char wk9[164]; /* */ - struct { /* MB */ - union { /* CTRL0 *///FFFFD100 - unsigned int LONG; /* Long Access*/ - struct { /* Word Access*/ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned int IDE : 1; /* IDE */ - unsigned int RTR : 1; /* RTR */ - unsigned int : 1; /* */ - unsigned int STDID :11; /* STDID */ - unsigned int EXDID :18; /* EXDID */ - } BIT; /* */ - } CTRL0; /* */ - union { /* LAFM *///FFFFD104 - unsigned int LONG; /* Long Access*/ - struct { /* Word Access*/ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned int IDE : 1; /* IDE */ - unsigned int : 2; /* */ - unsigned int STDID :11; /* STDID */ - unsigned int EXDID :18; /* EXDID */ - } BIT; /* */ - } LAFM; /* */ - unsigned char MSG_DATA[8]; /* MSG_DATA *///FFFFD108 - union { /* CTRL1 *///FFFFD110 - unsigned short WORD; /* Word Access*/ - struct { /* Byte Access*/ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char NMC : 1; /* NMC */ - unsigned char ATX : 1; /* ATX */ - unsigned char DART : 1; /* DART */ - unsigned char MBC : 3; /* MBC */ - unsigned char : 4; /* */ - unsigned char DLC : 4; /* DLC */ - } BIT; /* */ - } CTRL1; /* */ - char wk[14]; /* *///FFFFD120-FFFFD110-2 - } MB[16]; /* *///FFFFD120 -}; /* */ -struct st_pfc { /* struct PFC */ - union { /* PAIORH *///FFFE3804 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - } BIT; /* */ - } PAIORH; /* */ - union { /* PAIORL *///FFFE3806 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PAIORL; /* */ - char wk1[4]; /* *///FFFE380C-FFFE3806-2 - union { /* PACRH2 *///FFFE380C - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char : 3; /* */ - unsigned char : 1; /* */ - unsigned char : 3; /* */ - unsigned char : 1; /* */ - unsigned char PA21MD : 3; /* PA21MD */ - unsigned char : 1; /* */ - unsigned char PA20MD : 3; /* PA20MD */ - } BIT; /* */ - } PACRH2; /* */ - union { /* PACRH1 *///FFFE380E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA19MD : 3; /* PA19MD */ - unsigned char : 1; /* */ - unsigned char PA18MD : 3; /* PA18MD */ - unsigned char : 1; /* */ - unsigned char PA17MD : 3; /* PA17MD */ - unsigned char : 1; /* */ - unsigned char PA16MD : 3; /* PA16MD */ - } BIT; /* */ - } PACRH1; /* */ - union { /* PACRL4 *///FFFE3810 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA15MD : 3; /* PA15MD */ - unsigned char : 1; /* */ - unsigned char PA14MD : 3; /* PA14MD */ - unsigned char : 1; /* */ - unsigned char PA13MD : 3; /* PA13MD */ - unsigned char : 1; /* */ - unsigned char PA12MD : 3; /* PA12MD */ - } BIT; /* */ - } PACRL4; /* */ - union { /* PACRL3 *///FFFE3812 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA11MD : 3; /* PA11MD */ - unsigned char : 1; /* */ - unsigned char PA10MD : 3; /* PA10MD */ - unsigned char : 1; /* */ - unsigned char PA9MD : 3; /* PA9MD */ - unsigned char : 1; /* */ - unsigned char PA8MD : 3; /* PA8MD */ - } BIT; /* */ - } PACRL3; /* */ - union { /* PACRL2 *///FFFE3814 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA7MD : 3; /* PA7MD */ - unsigned char : 1; /* */ - unsigned char PA6MD : 3; /* PA6MD */ - unsigned char : 1; /* */ - unsigned char PA5MD : 3; /* PA5MD */ - unsigned char : 1; /* */ - unsigned char PA4MD : 3; /* PA4MD */ - } BIT; /* */ - } PACRL2; /* */ - union { /* PACRL1 *///FFFE3816 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA3MD : 3; /* PA3MD */ - unsigned char : 1; /* */ - unsigned char PA2MD : 3; /* PA2MD */ - unsigned char : 1; /* */ - unsigned char PA1MD : 3; /* PA1MD */ - unsigned char : 1; /* */ - unsigned char PA0MD : 3; /* PA0MD */ - } BIT; /* */ - } PACRL1; /* */ - char wk2[16]; /* *///FFFE3828-FFFE3810-8 - union { /* PAPCRH *///FFFE3828 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char PA21PCR : 1; /* PA21PCR */ - unsigned char PA20PCR : 1; /* PA20PCR */ - unsigned char PA19PCR : 1; /* PA19PCR */ - unsigned char PA18PCR : 1; /* PA18PCR */ - unsigned char PA17PCR : 1; /* PA17PCR */ - unsigned char PA16PCR : 1; /* PA16PCR */ - } BIT; /* */ - } PAPCRH; /* */ - union { /* PAPCRL *///FFFE382A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PA15PCR : 1; /* PA15PCR */ - unsigned char PA14PCR : 1; /* PA14PCR */ - unsigned char PA13PCR : 1; /* PA13PCR */ - unsigned char PA12PCR : 1; /* PA12PCR */ - unsigned char PA11PCR : 1; /* PA11PCR */ - unsigned char PA10PCR : 1; /* PA10PCR */ - unsigned char PA9PCR : 1; /* PA9PCR */ - unsigned char PA8PCR : 1; /* PA8PCR */ - unsigned char PA7PCR : 1; /* PA7PCR */ - unsigned char PA6PCR : 1; /* PA6PCR */ - unsigned char PA5PCR : 1; /* PA5PCR */ - unsigned char PA4PCR : 1; /* PA4PCR */ - unsigned char PA3PCR : 1; /* PA3PCR */ - unsigned char PA2PCR : 1; /* PA2PCR */ - unsigned char PA1PCR : 1; /* PA1PCR */ - unsigned char PA0PCR : 1; /* PA0PCR */ - } BIT; /* */ - } PAPCRL; /* */ - char wk3[90]; /* *///FFFE3886-FFFE3828-4 - union { /* PBIORL *///FFFE3886 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PBIORL; /* */ - char wk4[8]; /* *///FFFE3890-FFFE3884-4 - union { /* PBCRL4 *///FFFE3890 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB15MD : 3; /* PB15MD */ - unsigned char : 1; /* */ - unsigned char PB14MD : 3; /* PB14MD */ - unsigned char : 1; /* */ - unsigned char PB13MD : 3; /* PB13MD */ - unsigned char : 1; /* */ - unsigned char PB12MD : 3; /* PB12MD */ - } BIT; /* */ - } PBCRL4; /* */ - union { /* PBCRL3 *///FFFE3892 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB11MD : 3; /* PB11MD */ - unsigned char : 1; /* */ - unsigned char PB10MD : 3; /* PB10MD */ - unsigned char : 1; /* */ - unsigned char PB9MD : 3; /* PB9MD */ - unsigned char : 1; /* */ - unsigned char PB8MD : 3; /* PB8MD */ - } BIT; /* */ - } PBCRL3; /* */ - union { /* PBCRL2 *///FFFE3894 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB7MD : 3; /* PB7MD */ - unsigned char : 1; /* */ - unsigned char PB6MD : 3; /* PB6MD */ - unsigned char : 1; /* */ - unsigned char PB5MD : 3; /* PB5MD */ - unsigned char : 1; /* */ - unsigned char PB4MD : 3; /* PB4MD */ - } BIT; /* */ - } PBCRL2; /* */ - union { /* PBCRL1 *///FFFE3896 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB3MD : 3; /* PB3MD */ - unsigned char : 1; /* */ - unsigned char PB2MD : 3; /* PB2MD */ - unsigned char : 1; /* */ - unsigned char PB1MD : 3; /* PB1MD */ - unsigned char : 1; /* */ - unsigned char PB0MD : 3; /* PB0MD */ - } BIT; /* */ - } PBCRL1; /* */ - char wk5[18]; /* *///FFFE38AA-FFFE3896-2 - union { /* PBPCRL *///FFFE38AA - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PB15PCR : 1; /* PB15PCR */ - unsigned char PB14PCR : 1; /* PB14PCR */ - unsigned char PB13PCR : 1; /* PB13PCR */ - unsigned char PB12PCR : 1; /* PB12PCR */ - unsigned char PB11PCR : 1; /* PB11PCR */ - unsigned char PB10PCR : 1; /* PB10PCR */ - unsigned char PB9PCR : 1; /* PB9PCR */ - unsigned char PB8PCR : 1; /* PB8PCR */ - unsigned char PB7PCR : 1; /* PB7PCR */ - unsigned char PB6PCR : 1; /* PB6PCR */ - unsigned char PB5PCR : 1; /* PB5PCR */ - unsigned char PB4PCR : 1; /* PB4PCR */ - unsigned char PB3PCR : 1; /* PB3PCR */ - unsigned char PB2PCR : 1; /* PB2PCR */ - unsigned char PB1PCR : 1; /* PB1PCR */ - unsigned char PB0PCR : 1; /* PB0PCR */ - } BIT; /* */ - } PBPCRL; /* */ - char wk6[90]; /* *///FFFE3906-FFFE38A8-4 - union { /* PCIORL *///FFFE3906 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PCIORL; /* */ - char wk7[8]; /* *///FFFE3910-FFFE3906-2 - union { /* PCCRL4 *///FFFE3910 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC15MD : 3; /* PC15MD */ - unsigned char : 1; /* */ - unsigned char PC14MD : 3; /* PC14MD */ - unsigned char : 1; /* */ - unsigned char PC13MD : 3; /* PC13MD */ - unsigned char : 1; /* */ - unsigned char PC12MD : 3; /* PC12MD */ - } BIT; /* */ - } PCCRL4; /* */ - union { /* PCCRL3 *///FFFE3912 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC11MD : 3; /* PC11MD */ - unsigned char : 1; /* */ - unsigned char PC10MD : 3; /* PC10MD */ - unsigned char : 1; /* */ - unsigned char PC9MD : 3; /* PC9MD */ - unsigned char : 1; /* */ - unsigned char PC8MD : 3; /* PC8MD */ - } BIT; /* */ - } PCCRL3; /* */ - union { /* PCCRL2 *///FFFE3914 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC7MD : 3; /* PC7MD */ - unsigned char : 1; /* */ - unsigned char PC6MD : 3; /* PC6MD */ - unsigned char : 1; /* */ - unsigned char PC5MD : 3; /* PC5MD */ - unsigned char : 1; /* */ - unsigned char PC4MD : 3; /* PC4MD */ - } BIT; /* */ - } PCCRL2; /* */ - union { /* PCCRL1 *///FFFE3916 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC3MD : 3; /* PC3MD */ - unsigned char : 1; /* */ - unsigned char PC2MD : 3; /* PC2MD */ - unsigned char : 1; /* */ - unsigned char PC1MD : 3; /* PC1MD */ - unsigned char : 1; /* */ - unsigned char PC0MD : 3; /* PC0MD */ - } BIT; /* */ - } PCCRL1; /* */ - char wk8[18]; /* *///FFFE392A-FFFE3916-2 - union { /* PCPCRL *///FFFE392A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PC15PCR : 1; /* PC15PCR */ - unsigned char PC14PCR : 1; /* PC14PCR */ - unsigned char PC13PCR : 1; /* PC13PCR */ - unsigned char PC12PCR : 1; /* PC12PCR */ - unsigned char PC11PCR : 1; /* PC11PCR */ - unsigned char PC10PCR : 1; /* PC10PCR */ - unsigned char PC9PCR : 1; /* PC9PCR */ - unsigned char PC8PCR : 1; /* PC8PCR */ - unsigned char PC7PCR : 1; /* PC7PCR */ - unsigned char PC6PCR : 1; /* PC6PCR */ - unsigned char PC5PCR : 1; /* PC2PCR */ - unsigned char PC4PCR : 1; /* PC1PCR */ - unsigned char PC3PCR : 1; /* PC0PCR */ - unsigned char PC2PCR : 1; /* PC2PCR */ - unsigned char PC1PCR : 1; /* PC1PCR */ - unsigned char PC0PCR : 1; /* PC0PCR */ - } BIT; /* */ - } PCPCRL; /* */ - char wk9[88]; /* *///FFFE3984-FFFE392A-2 - union { /* PDIORH *///FFFE3984 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B31 : 1; /* Bit 31 */ - unsigned char B30 : 1; /* Bit 30 */ - unsigned char B29 : 1; /* Bit 29 */ - unsigned char B28 : 1; /* Bit 28 */ - unsigned char B27 : 1; /* Bit 27 */ - unsigned char B26 : 1; /* Bit 26 */ - unsigned char B25 : 1; /* Bit 25 */ - unsigned char B24 : 1; /* Bit 24 */ - unsigned char B23 : 1; /* Bit 23 */ - unsigned char B22 : 1; /* Bit 22 */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - } BIT; /* */ - } PDIORH; /* */ - union { /* PDIORL *///FFFE3986 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PDIORL; /* */ - union { /* PDCRH4 *///FFFE3988 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD31MD : 3; /* PD31MD */ - unsigned char : 1; /* */ - unsigned char PD30MD : 3; /* PD30MD */ - unsigned char : 1; /* */ - unsigned char PD29MD : 3; /* PD29MD */ - unsigned char : 1; /* */ - unsigned char PD28MD : 3; /* PD28MD */ - } BIT; /* */ - } PDCRH4; /* */ - union { /* PDCRH3 *///FFFE398A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD27MD : 3; /* PD27MD */ - unsigned char : 1; /* */ - unsigned char PD26MD : 3; /* PD26MD */ - unsigned char : 1; /* */ - unsigned char PD25MD : 3; /* PD25MD */ - unsigned char : 1; /* */ - unsigned char PD24MD : 3; /* PD24MD */ - } BIT; /* */ - } PDCRH3; /* */ - union { /* PDCRH2 *///FFFE398C - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD23MD : 3; /* PD23MD */ - unsigned char : 1; /* */ - unsigned char PD22MD : 3; /* PD22MD */ - unsigned char : 1; /* */ - unsigned char PD21MD : 3; /* PD21MD */ - unsigned char : 1; /* */ - unsigned char PD20MD : 3; /* PD20MD */ - } BIT; /* */ - } PDCRH2; /* */ - union { /* PDCRH1 *///FFFE398E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD19MD : 3; /* PD19MD */ - unsigned char : 1; /* */ - unsigned char PD18MD : 3; /* PD18MD */ - unsigned char : 1; /* */ - unsigned char PD17MD : 3; /* PD17MD */ - unsigned char : 1; /* */ - unsigned char PD16MD : 3; /* PD16MD */ - } BIT; /* */ - } PDCRH1; /* */ - union { /* PDCRL4 *///FFFE3990 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD15MD : 3; /* PD15MD */ - unsigned char : 1; /* */ - unsigned char PD14MD : 3; /* PD14MD */ - unsigned char : 1; /* */ - unsigned char PD13MD : 3; /* PD13MD */ - unsigned char : 1; /* */ - unsigned char PD12MD : 3; /* PD12MD */ - } BIT; /* */ - } PDCRL4; /* */ - union { /* PDCRL3 *///FFFE3992 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD11MD : 3; /* PD11MD */ - unsigned char : 1; /* */ - unsigned char PD10MD : 3; /* PD10MD */ - unsigned char : 1; /* */ - unsigned char PD9MD : 3; /* PD9MD */ - unsigned char : 1; /* */ - unsigned char PD8MD : 3; /* PD8MD */ - } BIT; /* */ - } PDCRL3; /* */ - union { /* PDCRL2 *///FFFE3994 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD7MD : 3; /* PD7MD */ - unsigned char : 1; /* */ - unsigned char PD6MD : 3; /* PD6MD */ - unsigned char : 1; /* */ - unsigned char PD5MD : 3; /* PD5MD */ - unsigned char : 1; /* */ - unsigned char PD4MD : 3; /* PD4MD */ - } BIT; /* */ - } PDCRL2; /* */ - union { /* PDCRL1 *///FFFE3996 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD3MD : 3; /* PD3MD */ - unsigned char : 1; /* */ - unsigned char PD2MD : 3; /* PD2MD */ - unsigned char : 1; /* */ - unsigned char PD1MD : 3; /* PD1MD */ - unsigned char : 1; /* */ - unsigned char PD0MD : 3; /* PD0MD */ - } BIT; /* */ - } PDCRL1; /* */ - char wk10[16]; /* *///FFFE39A8-FFFE3996-2 - union { /* PDPCRH *///FFFE39A8 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PD31PCR : 1; /* PD31PCR */ - unsigned char PD30PCR : 1; /* PD30PCR */ - unsigned char PD29PCR : 1; /* PD29PCR */ - unsigned char PD28PCR : 1; /* PD28PCR */ - unsigned char PD27PCR : 1; /* PD27PCR */ - unsigned char PD26PCR : 1; /* PD26PCR */ - unsigned char PD25PCR : 1; /* PD25PCR */ - unsigned char PD24PCR : 1; /* PD24PCR */ - unsigned char PD23PCR : 1; /* PD23PCR */ - unsigned char PD22PCR : 1; /* PD22PCR */ - unsigned char PD21PCR : 1; /* PD21PCR */ - unsigned char PD20PCR : 1; /* PD20PCR */ - unsigned char PD19PCR : 1; /* PD19PCR */ - unsigned char PD18PCR : 1; /* PD18PCR */ - unsigned char PD17PCR : 1; /* PD17PCR */ - unsigned char PD16PCR : 1; /* PD16PCR */ - } BIT; /* */ - } PDPCRH; /* */ - union { /* PDPCRL *///FFFE39AA - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PD15PCR : 1; /* PD15PCR */ - unsigned char PD14PCR : 1; /* PD14PCR */ - unsigned char PD13PCR : 1; /* PD13PCR */ - unsigned char PD12PCR : 1; /* PD12PCR */ - unsigned char PD11PCR : 1; /* PD11PCR */ - unsigned char PD10PCR : 1; /* PD10PCR */ - unsigned char PD9PCR : 1; /* PD9PCR */ - unsigned char PD8PCR : 1; /* PD8PCR */ - unsigned char PD7PCR : 1; /* PD7PCR */ - unsigned char PD6PCR : 1; /* PD6PCR */ - unsigned char PD5PCR : 1; /* PD5PCR */ - unsigned char PD4PCR : 1; /* PD4PCR */ - unsigned char PD3PCR : 1; /* PD3PCR */ - unsigned char PD2PCR : 1; /* PD2PCR */ - unsigned char PD1PCR : 1; /* PD1PCR */ - unsigned char PD0PCR : 1; /* PD0PCR */ - } BIT; /* */ - } PDPCRL; /* */ - char wk11[90]; /* *///FFFE3A06-FFFE39AA-2 - union { /* PEIORL *///FFFE3A06 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PEIORL; /* */ - char wk12[8]; /* *///FFFE3A10-FFFE3A06-2 - union { /* PECRL4 *///FFFE3A10 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE15MD : 3; /* PE15MD */ - unsigned char : 1; /* */ - unsigned char PE14MD : 3; /* PE14MD */ - unsigned char : 1; /* */ - unsigned char PE13MD : 3; /* PE13MD */ - unsigned char : 1; /* */ - unsigned char PE12MD : 3; /* PE12MD */ - } BIT; /* */ - } PECRL4; /* */ - union { /* PECRL3 *///FFFE3A12 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE11MD : 3; /* PE11MD */ - unsigned char : 1; /* */ - unsigned char PE10MD : 3; /* PE10MD */ - unsigned char : 1; /* */ - unsigned char PE9MD : 3; /* PE9MD */ - unsigned char : 1; /* */ - unsigned char PE8MD : 3; /* PE8MD */ - } BIT; /* */ - } PECRL3; /* */ - union { /* PECRL2 *///FFFE3A14 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE7MD : 3; /* PE7MD */ - unsigned char : 1; /* */ - unsigned char PE6MD : 3; /* PE6MD */ - unsigned char : 1; /* */ - unsigned char PE5MD : 3; /* PE5MD */ - unsigned char : 1; /* */ - unsigned char PE4MD : 3; /* PE4MD */ - } BIT; /* */ - } PECRL2; /* */ - union { /* PECRL1 *///FFFE3A16 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE3MD : 3; /* PE3MD */ - unsigned char : 1; /* */ - unsigned char PE2MD : 3; /* PE2MD */ - unsigned char : 1; /* */ - unsigned char PE1MD : 3; /* PE1MD */ - unsigned char : 1; /* */ - unsigned char PE0MD : 3; /* PE0MD */ - } BIT; /* */ - } PECRL1; /* */ - char wk13[8]; /* *///FFFE3A20-FFFE3A16-2 - union { /* HCPCR *///FFFE3A20 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 4; /* */ - unsigned char MZIZDH : 1; /* MZIZDH */ - unsigned char MZIZDL : 1; /* MZIZDL */ - unsigned char MZIZEH : 1; /* MZIZEH */ - unsigned char MZIZEL : 1; /* MZIZEL */ - } BIT; /* */ - } HCPCR; /* */ - union { /* IFCR *///FFFE3A22 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 4; /* */ - unsigned char IRQMD32 : 2; /* IRQMD3/2 */ - unsigned char IRQMD10 : 2; /* IRQMD1/0 */ - } BIT; /* */ - } IFCR; /* */ - char wk14[6]; /* *///FFFE3A2A-FFFE3A22-2 - union { /* PEPCRL *///FFFE3A2A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PE15PCR : 1; /* PE15PCR */ - unsigned char PE14PCR : 1; /* PE14PCR */ - unsigned char PE13PCR : 1; /* PE13PCR */ - unsigned char PE12PCR : 1; /* PE12PCR */ - unsigned char PE11PCR : 1; /* PE11PCR */ - unsigned char PE10PCR : 1; /* PE10PCR */ - unsigned char PE9PCR : 1; /* PE9PCR */ - unsigned char PE8PCR : 1; /* PE8PCR */ - unsigned char PE7PCR : 1; /* PE7PCR */ - unsigned char PE6PCR : 1; /* PE6PCR */ - unsigned char PE5PCR : 1; /* PE5PCR */ - unsigned char PE4PCR : 1; /* PE4PCR */ - unsigned char PE3PCR : 1; /* PE3PCR */ - unsigned char PE2PCR : 1; /* PE2PCR */ - unsigned char PE1PCR : 1; /* PE1PCR */ - unsigned char PE0PCR : 1; /* PE0PCR */ - } BIT; /* */ - } PEPCRL; /* */ - union { /* PDACKCR *///FFFE3A2C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 4; /* */ - unsigned char DACK3TMG : 1; /* DACK3TMG */ - unsigned char DACK2TMG : 1; /* DACK2TMG */ - unsigned char DACK1TMG : 1; /* DACK1TMG */ - unsigned char DACK0TMG : 1; /* DACK0TMG */ - } BIT; /* */ - } PDACKCR; /* */ -}; /* */ -struct st_pa { /* struct PA */ - union { /* PADR *///FFFE3800 - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk1[24]; /* *///FFFE381C-FFFEE3800-4 - union { /* PAPR *///FFFE381C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pb { /* struct PB */ - char wk1[2]; /* *///FFFE3800 - union { /* PBDR *///FFFE3882 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk2[26]; /* *///FFFE389E-FFFE3882-2 - union { /* PBPR *///FFFE389E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* High */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pc { /* struct PC */ - char wk1[2]; /* *///FFFE3900 - union { /* PCDR *///FFFE3902 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk2[26]; /* *///FFFE391E-FFFE3902-2 - union { /* PCPR *///FFFE391E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pd { /* struct PD */ - union { /* PDDR *///FFFE3980 - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B31 : 1; /* Bit 31 */ - unsigned char B30 : 1; /* Bit 30 */ - unsigned char B29 : 1; /* Bit 29 */ - unsigned char B28 : 1; /* Bit 28 */ - unsigned char B27 : 1; /* Bit 27 */ - unsigned char B26 : 1; /* Bit 26 */ - unsigned char B25 : 1; /* Bit 25 */ - unsigned char B24 : 1; /* Bit 24 */ - unsigned char B23 : 1; /* Bit 23 */ - unsigned char B22 : 1; /* Bit 22 */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk1[24]; /* *///FFFE399C-FFFE3980-4 - union { /* PDPR *///FFFE399C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B31 : 1; /* Bit 31 */ - unsigned char B30 : 1; /* Bit 30 */ - unsigned char B29 : 1; /* Bit 29 */ - unsigned char B28 : 1; /* Bit 28 */ - unsigned char B27 : 1; /* Bit 27 */ - unsigned char B26 : 1; /* Bit 26 */ - unsigned char B25 : 1; /* Bit 25 */ - unsigned char B24 : 1; /* Bit 24 */ - unsigned char B23 : 1; /* Bit 23 */ - unsigned char B22 : 1; /* Bit 22 */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pe { /* struct PE */ - char wk1[2]; /* *///FFFE3A00 - union { /* PEDR *///FFFE3A02 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk2[26]; /* *///FFFE3A1E-FFFE3A02-2 - union { /* PEPR *///FFFE3A1E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pf { /* struct PF */ - char wk1[2]; /* *///FFFE3A80 - union { /* PFDR *///FFFE3A82 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - char wk2[1]; /* */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ -}; /* */ -struct st_usb { /* struct USB */ - union { /* USBIFR0 *///FFFE7000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BRST : 1; /* BRST */ - unsigned char CFDN : 1; /* CFDN */ - unsigned char : 2; /* */ - unsigned char SETC : 1; /* SETC */ - unsigned char SETI : 1; /* SETI */ - unsigned char VBUSMN : 1; /* VBUSMN */ - unsigned char VBUSF : 1; /* VBUSF */ - } BIT; /* */ - } USBIFR0; /* */ - union { /* USBIFR1 *///FFFE7001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char SOF : 1; /* SOF */ - unsigned char SETUPTS : 1; /* SETUPTS */ - unsigned char EP0oTS : 1; /* EP0oTS */ - unsigned char EP0iTR : 1; /* EP0iTR */ - unsigned char EP0iTS : 1; /* EP0iTS */ - } BIT; /* */ - } USBIFR1; /* */ - union { /* USBIFR2 *///FFFE7002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP3TR : 1; /* EP3TR */ - unsigned char EP3TS : 1; /* EP3TS */ - unsigned char EP2TR : 1; /* EP2TR */ - unsigned char EP2EMPTY : 1; /* EP2EMPTY */ - unsigned char EP2ALLEMP : 1; /* EP2ALLEMP */ - unsigned char EP1FULL : 1; /* EP1FULL */ - } BIT; /* */ - } USBIFR2; /* */ - union { /* USBIFR3 *///FFFE7003 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP6TR : 1; /* EP6TR */ - unsigned char EP6TS : 1; /* EP6TS */ - unsigned char EP5TR : 1; /* EP5TR */ - unsigned char EP5EMPTY : 1; /* EP5EMPTY */ - unsigned char EP5ALLEMP : 1; /* EP5ALLEMP */ - unsigned char EP4FULL : 1; /* EP4FULL */ - } BIT; /* */ - } USBIFR3; /* */ - union { /* USBIFR4 *///FFFE7004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP9TR : 1; /* EP9TR */ - unsigned char EP9TS : 1; /* EP9TS */ - unsigned char EP8TR : 1; /* EP8TR */ - unsigned char EP8EMPTY : 1; /* EP8EMPTY */ - unsigned char : 1; /* */ - unsigned char EP7FULL : 1; /* EP7FULL */ - } BIT; /* */ - } USBIFR4; /* */ - char wk1[3]; /* *///FFFE7008-FFFE7004-1 - union { /* USBIER0 *///FFFE7008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BRSTE : 1; /* BRSTE */ - unsigned char CFDFN : 1; /* CFDFN */ - unsigned char : 2; /* */ - unsigned char SETCE : 1; /* SETCE */ - unsigned char SETIE : 1; /* SETIE */ - unsigned char : 1; /* */ - unsigned char VBUSFE : 1; /* VBUSFE */ - } BIT; /* */ - } USBIER0; /* */ - union { /* USBIER1 *///FFFE7009 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char SOFE : 1; /* SOFE */ - unsigned char SETUPTSE : 1; /* SETUPTSE */ - unsigned char EP0oTSE : 1; /* EP0oTSE */ - unsigned char EP0iTRE : 1; /* EP0iTRE */ - unsigned char EP0iTSE : 1; /* EP0iTSE */ - } BIT; /* */ - } USBIER1; /* */ - union { /* USBIER2 *///FFFE700A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP3TRE : 1; /* EP3TRE */ - unsigned char EP3TSE : 1; /* EP3TSE */ - unsigned char EP2TRE : 1; /* EP2TRE */ - unsigned char EP2EMPTYE : 1; /* EP2EMPTYE */ - unsigned char EP2ALLEMPE : 1; /* EP2ALLEMPE*/ - unsigned char EP1FULLE : 1; /* EP1FULLE */ - } BIT; /* */ - } USBIER2; /* */ - union { /* USBIER3 *///FFFE700B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP6TRE : 1; /* EP6TRE */ - unsigned char EP6TSE : 1; /* EP6TSE */ - unsigned char EP5TRE : 1; /* EP5TRE */ - unsigned char EP5EMPTYE : 1; /* EP5EMPTYE */ - unsigned char EP5ALLEMPE : 1; /* EP5ALLEMPE*/ - unsigned char EP4FULLE : 1; /* EP4FULLE */ - } BIT; /* */ - } USBIER3; /* */ - union { /* USBIER4 *///FFFE700C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP9TRE : 1; /* EP9TRE */ - unsigned char EP9TSE : 1; /* EP9TSE */ - unsigned char EP8TRE : 1; /* EP8TRE */ - unsigned char EP8EMPTYE : 1; /* EP8EMPTYE */ - unsigned char : 1; /* */ - unsigned char EP7FULLE : 1; /* EP7FULLE */ - } BIT; /* */ - } USBIER4; /* */ - char wk2[3]; /* *///FFFE7010-FFFE700C-1 - union { /* USBISR0 *///FFFE7010 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BRSTS : 1; /* BRSTS */ - unsigned char CFDNS : 1; /* CFDNS */ - unsigned char : 2; /* */ - unsigned char SETCS : 1; /* SETCS */ - unsigned char SETIS : 1; /* SETIS */ - unsigned char : 1; /* */ - unsigned char VBUSFS : 1; /* VBUSFS */ - } BIT; /* */ - } USBISR0; /* */ - union { /* USBISR1 *///FFFE7011 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char SOFS : 1; /* SOFS */ - unsigned char SETUPTSS : 1; /* SETUPTSS */ - unsigned char EP0oTSS : 1; /* EP0oTSS */ - unsigned char EP0iTRS : 1; /* EP0iTRS */ - unsigned char EP0iTSS : 1; /* EP0iTSS */ - } BIT; /* */ - } USBISR1; /* */ - union { /* USBISR2 *///FFFE7012 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP3TRS : 1; /* EP3TRS */ - unsigned char EP3TSS : 1; /* EP3TSS */ - unsigned char EP2TRS : 1; /* EP2TRS */ - unsigned char EP2EMPTYS : 1; /* EP2EMPTYS */ - unsigned char EP2ALLEMPS : 1; /* EP2ALLEMPS*/ - unsigned char EP1FULLS : 1; /* EP1FULLS */ - } BIT; /* */ - } USBISR2; /* */ - union { /* USBISR3 *///FFFE7013 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP6TRS : 1; /* EP6TRS */ - unsigned char EP6TSS : 1; /* EP6TSS */ - unsigned char EP5TRS : 1; /* EP5TRS */ - unsigned char EP5EMPTYS : 1; /* EP5EMPTYS */ - unsigned char EP5ALLEMPS : 1; /* EP5ALLEMPS*/ - unsigned char EP4FULLE : 1; /* EP4FULLS */ - } BIT; /* */ - } USBISR3; /* */ - union { /* USBISR4 *///FFFE7014 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP9TRS : 1; /* EP9TRS */ - unsigned char EP9TSS : 1; /* EP9TSS */ - unsigned char EP8TRS : 1; /* EP8TRS */ - unsigned char EP8EMPTYS : 1; /* EP8EMPTYS */ - unsigned char : 1; /* */ - unsigned char EP7FULLS : 1; /* EP7FULLS */ - } BIT; /* */ - } USBISR4; /* */ - char wk3[11]; /* *///FFFE7020-FFFE7014-1 - unsigned char USBEPDR0i; /* USBEPDR0i *///FFFE7020 - char wk4[3]; /* *///FFFE7024-FFFE7020-1 - unsigned char USBEPDR0o; /* USBEPDR0o *///FFFE7024 - char wk5[3]; /* *///FFFE7028-FFFE7024-1 - unsigned char USBEPDR0s; /* USBEPDR0s *///FFFE7028 - char wk6[7]; /* *///FFFE7030-FFFE7028-1 - unsigned char USBEPDR1; /* USBEPDR1 *///FFFE7030 - char wk7[3]; /* *///FFFE7034-FFFE7030-1 - unsigned char USBEPDR2; /* USBEPDR2 *///FFFE7034 - char wk8[3]; /* *///FFFE7038-FFFE7034-1 - unsigned char USBEPDR3; /* USBEPDR3 *///FFFE7038 - char wk9[7]; /* *///FFFE7040-FFFE7038-1 - unsigned char USBEPDR4; /* USBEPDR4 *///FFFE7040 - char wk10[3]; /* *///FFFE7044-FFFE7040-1 - unsigned char USBEPDR5; /* USBEPDR5 *///FFFE7044 - char wk11[3]; /* *///FFFE7048-FFFE7044-1 - unsigned char USBEPDR6; /* USBEPDR6 *///FFFE7048 - char wk12[7]; /* *///FFFE7050-FFFE7048-1 - unsigned char USBEPDR7; /* USBEPDR7 *///FFFE7050 - char wk13[3]; /* *///FFFE7054-FFFE7050-1 - unsigned char USBEPDR8; /* USBEPDR8 *///FFFE7054 - char wk14[3]; /* *///FFFE7058-FFFE7054-1 - unsigned char USBEPDR9; /* USBEPDR9 *///FFFE7058 - char wk15[39]; /* *///FFFE7080-FFFE7058-1 - unsigned char USBEPSZ0o; /* USBEPSZ0o *///FFFE7080 - unsigned char USBEPSZ1; /* USBEPSZ1 *///FFFE7081 - unsigned char USBEPSZ4; /* USBEPSZ4 *///FFFE7082 - unsigned char USBEPSZ7; /* USBEPSZ7 *///FFFE7083 - char wk16[4]; /* *///FFFE7088-FFFE7083-1 - union { /* USBDASTS0 *///FFFE7088 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char EP0iDE : 1; /* EP0iDE */ - } BIT; /* */ - } USBDASTS0; /* */ - union { /* USBDASTS1 *///FFFE7089 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP3DE : 1; /* EP3DE */ - unsigned char EP2DE : 1; /* EP2DE */ - unsigned char : 1; /* */ - } BIT; /* */ - } USBDASTS1; /* */ - union { /* USBDASTS2 *///FFFE708A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP6DE : 1; /* EP6DE */ - unsigned char EP5DE : 1; /* EP5DE */ - unsigned char : 1; /* */ - } BIT; /* */ - } USBDASTS2; /* */ - union { /* USBDASTS3 *///FFFE708B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP9DE : 1; /* EP9DE */ - unsigned char EP8DE : 1; /* EP8DE */ - unsigned char : 1; /* */ - } BIT; /* */ - } USBDASTS3; /* */ - char wk17[4]; /* *///FFFE7090-FFFE708B-1 - union { /* USBTRG0 *///FFFE7090 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP0sRDFN : 1; /* EP0SRDFN */ - unsigned char EP0oRDFN : 1; /* EP0ORDFN */ - unsigned char EP0iPKTE : 1; /* EP0IPKTE */ - } BIT; /* */ - } USBTRG0; /* */ - union { /* USBTRG1 *///FFFE7091 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP3PKTE : 1; /* EP3PKTE */ - unsigned char EP2PKTE : 1; /* EP2PKTE */ - unsigned char EP1RDFN : 1; /* EP1RDFN */ - } BIT; /* */ - } USBTRG1; /* */ - union { /* USBTRG2 *///FFFE7092 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP6PKTE : 1; /* EP6PKTE */ - unsigned char EP5PKTE : 1; /* EP5PKTE */ - unsigned char EP4RDFN : 1; /* EP4RDFN */ - } BIT; /* */ - } USBTRG2; /* */ - union { /* USBTRG3 *///FFFE7093 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP9PKTE : 1; /* EP9PKTE */ - unsigned char EP8PKTE : 1; /* EP8PKTE */ - unsigned char EP7RDFN : 1; /* EP7RDFN */ - } BIT; /* */ - } USBTRG3; /* */ - char wk18[4]; /* *///FFFE7098-FFFE7093-1 - union { /* USBFCLR0 *///FFFE7098 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char EP0oCLR : 1; /* EP0oCLR */ - unsigned char EP0iCLR : 1; /* EP0iCLR */ - } BIT; /* */ - } USBFCLR0; /* */ - union { /* USBFCLR1 *///FFFE7099 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP3CLR : 1; /* EP3CLR */ - unsigned char EP2CLR : 1; /* EP2CLR */ - unsigned char EP1CLR : 1; /* EP1CLR */ - } BIT; /* */ - } USBFCLR1; /* */ - union { /* USBFCLR2 *///FFFE709A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP6CLR : 1; /* EP6CLR */ - unsigned char EP5CLR : 1; /* EP5CLR */ - unsigned char EP4CLR : 1; /* EP4CLR */ - } BIT; /* */ - } USBFCLR2; /* */ - union { /* USBFCLR3 *///FFFE709B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP9CLR : 1; /* EP9CLR */ - unsigned char EP8CLR : 1; /* EP8CLR */ - unsigned char EP7CLR : 1; /* EP7CLR */ - } BIT; /* */ - } USBFCLR3; /* */ - char wk19[4]; /* *///FFFE70A0-FFFE709B-1 - union { /* USBEPSTL0 *///FFFE70A0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char EP0STLC : 1; /* EP0STLC */ - unsigned char : 3; /* */ - unsigned char EP0STLS : 1; /* EP0STLS */ - } BIT; /* */ - } USBEPSTL0; /* */ - union { /* USBEPSTL1 *///FFFE70A1 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP3STLC : 1; /* EP3STLC */ - unsigned char EP2STLC : 1; /* EP2STLC */ - unsigned char EP1STLC : 1; /* EP1STLC */ - unsigned char : 1; /* */ - unsigned char EP3STLS : 1; /* EP3STLS */ - unsigned char EP2STLS : 1; /* EP2STLS */ - unsigned char EP1STLS : 1; /* EP1STLS */ - } BIT; /* */ - } USBEPSTL1; /* */ - union { /* USBEPSTL2 *///FFFE70A2 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP6STLC : 1; /* EP6STLC */ - unsigned char EP5STLC : 1; /* EP5STLC */ - unsigned char EP4STLC : 1; /* EP4STLC */ - unsigned char : 1; /* */ - unsigned char EP6STLS : 1; /* EP6STLS */ - unsigned char EP5STLS : 1; /* EP5STLS */ - unsigned char EP4STLS : 1; /* EP4STLS */ - } BIT; /* */ - } USBEPSTL2; /* */ - union { /* USBEPSTL3 *///FFFE70A3 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP9STLC : 1; /* EP9STLC */ - unsigned char EP8STLC : 1; /* EP8STLC */ - unsigned char EP7STLC : 1; /* EP7STLC */ - unsigned char : 1; /* */ - unsigned char EP9STLS : 1; /* EP9STLS */ - unsigned char EP8STLS : 1; /* EP8STLS */ - unsigned char EP7STLS : 1; /* EP7STLS */ - } BIT; /* */ - } USBEPSTL3; /* */ - char wk20[5]; /* *///FFFE70A9-FFFE70A3-1 - union { /* USBSTLSR1 *///FFFE70A9 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP3ASCE : 1; /* EP3ASCE */ - unsigned char EP2ASCE : 1; /* EP2ASCE */ - unsigned char EP1ASCE : 1; /* EP1ASCE */ - unsigned char : 1; /* */ - unsigned char EP3STLST : 1; /* EP3STLST */ - unsigned char EP2STLST : 1; /* EP2STLST */ - unsigned char EP1STLST : 1; /* EP1STLST */ - } BIT; /* */ - } USBSTLSR1; /* */ - union { /* USBSTLSR2 *///FFFE70AA - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP6ASCE : 1; /* EP6ASCE */ - unsigned char EP5ASCE : 1; /* EP5ASCE */ - unsigned char EP4ASCE : 1; /* EP4ASCE */ - unsigned char : 1; /* */ - unsigned char EP6STLST : 1; /* EP6STLST */ - unsigned char EP5STLST : 1; /* EP5STLST */ - unsigned char EP4STLST : 1; /* EP4STLST */ - } BIT; /* */ - } USBSTLSR2; /* */ - union { /* USBSTLSR3 *///FFFE70AB - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP9ASCE : 1; /* EP9ASCE */ - unsigned char EP8ASCE : 1; /* EP8ASCE */ - unsigned char EP7ASCE : 1; /* EP7ASCE */ - unsigned char : 1; /* */ - unsigned char EP9STLST : 1; /* EP9STLST */ - unsigned char EP8STLST : 1; /* EP8STLST */ - unsigned char EP7STLST : 1; /* EP7STLST */ - } BIT; /* */ - } USBSTLSR3; /* */ - char wk21[4]; /* *///FFFE70B0-FFFE70AB-1 - union { /* USBDMAR *///FFFE70B0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char EP5DMAE : 1; /* EP5DMAE */ - unsigned char EP4DMAE : 1; /* EP4DMAE */ - unsigned char : 1; /* */ - unsigned char EP2DMAE : 1; /* EP2DMAE */ - unsigned char EP1DMAE : 1; /* EP1DMAE */ - } BIT; /* */ - } USBDMAR; /* */ - char wk22[3]; /* *///FFFE70B4-FFFE70B0-1 - union { /* USBCVR *///FFFE70B4 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CNFV : 2; /* CNFV */ - unsigned char INTV : 2; /* INTV */ - unsigned char : 1; /* */ - unsigned char ALTV : 3; /* ALTV */ - } BIT; /* */ - } USBCVR; /* */ - char wk23[3]; /* *///FFFE70B8-FFFE70B4-1 - union { /* USBCTLR *///FFFE70B8 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char EP0ASCE : 1; /* EP0ASCE */ - unsigned char PRTRST : 1; /* PRTRST */ - } BIT; /* */ - } USBCTLR; /* */ - char wk24[7]; /* *///FFFE70C0-FFFE70B8-1 - unsigned char USBEPIR; /* USBEPIR *///FFFE70C0 - char wk25[15]; /* *///FFFE70D0-FFFE70C0-1 - union { /* USBTRNTREG0 *///FFFE70D0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char PTSTE : 1; /* PTSTE */ - unsigned char : 3; /* */ - unsigned char SUSPEND : 1; /* SUSPEND */ - unsigned char txenl : 1; /* txenl */ - unsigned char txse0 : 1; /* txse0 */ - unsigned char txdata : 1; /* txdata */ - } BIT; /* */ - } USBTRNTREG0; /* */ - union { /* USBTRNTREG1 *///FFFE70D1 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char xver_data : 1; /* xver_data */ - unsigned char dpls : 1; /* dpls */ - unsigned char dmns : 1; /* dmns */ - } BIT; /* */ - } USBTRNTREG1; /* */ -}; /* */ -struct st_etherc { /* struct EtherC*/ - union { /* ECMR *///FFFC3100 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :11; /* */ - unsigned int TPC : 1; /* TPC */ - unsigned int ZPF : 1; /* ZPF */ - unsigned int PFR : 1; /* PFR */ - unsigned int RXF : 1; /* RXF */ - unsigned int TXF : 1; /* TXF */ - unsigned int : 3; /* */ - unsigned int PRCEF : 1; /* PRCEF */ - unsigned int : 2; /* */ - unsigned int MPDE : 1; /* MPDE */ - unsigned int : 2; /* */ - unsigned int RE : 1; /* RE */ - unsigned int TE : 1; /* TE */ - unsigned int : 1; /* */ - unsigned int ILB : 1; /* ILB */ - unsigned int ELB : 1; /* ELB */ - unsigned int DM : 1; /* DM */ - unsigned int PRM : 1; /* PRM */ - } BIT; /* */ - } ECMR; /* */ - char wk1[4]; /* *///FFFC3108-FFFC3100-4 - union { /* RFLR *///FFFC3108 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :20; /* */ - unsigned int RFL :12; /* RFL */ - } BIT; /* */ - } RFLR; /* */ - char wk2[4]; /* *///FFFC3110-FFFC3108-4 - union { /* ECSR *///FFFC3110 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :26; /* */ - unsigned int BFR : 1; /* BFR */ - unsigned int PSRTO : 1; /* PSRTO */ - unsigned int : 1; /* */ - unsigned int LCHNG : 1; /* LCHNG */ - unsigned int MPD : 1; /* MPD */ - unsigned int ICD : 1; /* ICD */ - } BIT; /* */ - } ECSR; /* */ - char wk3[4]; /* *///FFFC3118-FFFC3110-4 - union { /* ECSIPR *///FFFC3118 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :26; /* */ - unsigned int BFSIPR : 1; /* BFSIPR */ - unsigned int PSRTOIP : 1; /* PSRTOIP */ - unsigned int : 1; /* */ - unsigned int LCHNGIP : 1; /* LCHNGIP */ - unsigned int MPDIP : 1; /* MPDIP */ - unsigned int ICDIP : 1; /* ICDIP */ - } BIT; /* */ - } ECSIPR; /* */ - char wk4[4]; /* *///FFFC3120-FFFC3118-4 - union { /* PIR *///FFFC3120 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :28; /* */ - unsigned int MDI : 1; /* MDI */ - unsigned int MDO : 1; /* MDO */ - unsigned int MMD : 1; /* MMD */ - unsigned int MDC : 1; /* MDC */ - } BIT; /* */ - } PIR; /* */ - char wk5[4]; /* *///FFFC3128-FFFC3120-4 - union { /* PSR *///FFFC3128 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int LMON : 1; /* LMON */ - } BIT; /* */ - } PSR; /* */ - char wk6[20]; /* *///FFFC3140-FFFC3128-4 - union { /* RDMLR *///FFFC3140 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :12; /* */ - unsigned int RMD :20; /* RMD */ - } BIT; /* */ - } RDMLR; /* */ - char wk7[12]; /* *///FFFC3150-FFFC3140-4 - union { /* IPGR *///FFFC3150 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :27; /* */ - unsigned int IPG : 5; /* IPG */ - } BIT; /* */ - } IPGR; /* */ - union { /* APR *///FFFC3154 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int AP :16; /* AP */ - } BIT; /* */ - } APR; /* */ - union { /* MPR *///FFFC3158 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int MP :16; /* MP */ - } BIT; /* */ - } MPR; /* */ - char wk8[4]; /* *///FFFC3160-FFFC3158-4 - union { /* RFCF *///FFFC3160 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :24; /* */ - unsigned int RPAUSE : 8; /* RPAUSE */ - } BIT; /* */ - } RFCF; /* */ - union { /* TPAUSER *///FFFC3164 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int TPAUSE :16; /* TPAUSE */ - } BIT; /* */ - } TPAUSER; /* */ - union { /* TPAUSECR *///FFFC3168 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :24; /* */ - unsigned int TXP : 8; /* TXP */ - } BIT; /* */ - } TPAUSECR; /* */ - union { /* BCFRR *///FFFC316C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int BCF :16; /* BCF */ - } BIT; /* */ - } BCFRR; /* */ - char wk9[80]; /* *///FFFC31C0-FFFC316C-4 - unsigned int MAHR; /* MAHR *///FFFC31C0 - char wk10[4]; /* *///FFFC31C8-FFFC31C0-4 - union { /* MALR *///FFFC31C8 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int MA :16; /* MA */ - } BIT; /* */ - } MALR; /* */ - char wk11[4]; /* *///FFFC31D0-FFFC31C8-4 - unsigned int TROCR; /* TROCR *///FFFC31D0 - unsigned int CDCR; /* CDCR *///FFFC31D4 - unsigned int LCCR; /* LCCR *///FFFC31D8 - unsigned int CNDCR; /* CNDCR *///FFFC31DC - char wk12[4]; /* *///FFFC31E4-FFFC31DC-4 - unsigned int CEFCR; /* CEFCR *///FFFC31E4 - unsigned int FRECR; /* FRECR *///FFFC31E8 - unsigned int TSFRCR; /* TSFRCR *///FFFC31EC - unsigned int TLFRCR; /* TLFRCR *///FFFC31F0 - unsigned int RFCR; /* RFCR *///FFFC31F4 - unsigned int MAFCR; /* MAFCR *///FFFC31F8 -}; /* */ -struct st_edmac { /* struct EDMAC */ - union { /* EDMR *///FFFC3000 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :25; /* */ - unsigned int DE : 1; /* DE */ - unsigned int DL : 2; /* DL */ - unsigned int : 3; /* */ - unsigned int SWR : 1; /* SWR */ - } BIT; /* */ - } EDMR; /* */ - char wk1[4]; /* *///FFFC3008-FFFC3004-4 - union { /* EDTRR *///FFFC3008 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int TR : 1; /* TR */ - } BIT; /* */ - } EDTRR; /* */ - char wk2[4]; /* *///FFFC3010-FFFC3008-4 - union { /* EDRRR *///FFFC3008 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int RR : 1; /* RR */ - } BIT; /* */ - } EDRRR; /* */ - char wk3[4]; /* *///FFFC3018-FFFC3008-4 - void *TDLAR; /* TDLAR *///FFFC3018 - char wk4[4]; /* *///FFFC3020-FFFC3018-4 - void *RDLAR; /* RDLAR *///FFFC3020 - char wk5[4]; /* *///FFFC3028-FFFC3020-4 - union { /* EESR *///FFFC3028 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int TWB : 1; /* TWB */ - unsigned int : 3; /* */ - unsigned int TABT : 1; /* TABT */ - unsigned int RABT : 1; /* RABT */ - unsigned int RFCOF : 1; /* RFCOF */ - unsigned int ADE : 1; /* ADE */ - unsigned int ECI : 1; /* ECI */ - unsigned int TC : 1; /* TC */ - unsigned int TDE : 1; /* TDE */ - unsigned int TFUF : 1; /* TFUF */ - unsigned int FR : 1; /* FR */ - unsigned int RDE : 1; /* RDE */ - unsigned int RFOF : 1; /* RFOF */ - unsigned int : 4; /* */ - unsigned int CND : 1; /* CND */ - unsigned int DLC : 1; /* DLC */ - unsigned int CD : 1; /* CD */ - unsigned int TRO : 1; /* TRO */ - unsigned int RMAF : 1; /* RMAF */ - unsigned int : 2; /* */ - unsigned int RRF : 1; /* RRF */ - unsigned int RTLF : 1; /* RTLF */ - unsigned int RTSF : 1; /* RTSF */ - unsigned int PRE : 1; /* PRE */ - unsigned int CERF : 1; /* CERF */ - } BIT; /* */ - } EESR; /* */ - char wk6[4]; /* *///FFFC3030-FFFC3028-4 - union { /* EESIPR *///FFFC3030 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int TWBIP : 1; /* TWBIP */ - unsigned int : 3; /* */ - unsigned int TABTIP : 1; /* TABTIP */ - unsigned int RABTIP : 1; /* RABTIP */ - unsigned int RFCOFIP : 1; /* RFCOFIP */ - unsigned int ADEIP : 1; /* ADEIP */ - unsigned int ECIIP : 1; /* ECIIP */ - unsigned int TCIP : 1; /* TCIP */ - unsigned int TDEIP : 1; /* TDEIP */ - unsigned int TFUFIP : 1; /* TFUFIP */ - unsigned int FRIP : 1; /* FRIP */ - unsigned int RDEIP : 1; /* RDEIP */ - unsigned int RFOFIP : 1; /* RFOFIP */ - unsigned int : 4; /* */ - unsigned int CNDIP : 1; /* CNDIP */ - unsigned int DLCIP : 1; /* DLCIP */ - unsigned int CDIP : 1; /* CDIP */ - unsigned int TROIP : 1; /* TROIP */ - unsigned int RMAFIP : 1; /* RMAFIP */ - unsigned int : 2; /* */ - unsigned int RRFIP : 1; /* RRFIP */ - unsigned int RTLFIP : 1; /* RTLFIP */ - unsigned int RTSFIP : 1; /* RTSFIP */ - unsigned int PREIP : 1; /* PREIP */ - unsigned int CERFIP : 1; /* CERFIP */ - } BIT; /* */ - } EESIPR; /* */ - char wk7[4]; /* *///FFFC3038-FFFC3030-4 - union { /* TRSCER *///FFFC3038 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :20; /* */ - unsigned int CNDCE : 1; /* CNDCE */ - unsigned int DLCCE : 1; /* DLCCE */ - unsigned int CDCE : 1; /* CDCE */ - unsigned int TROCE : 1; /* TROCE */ - unsigned int RMAFCE : 1; /* RMAFCE */ - unsigned int : 2; /* */ - unsigned int RRFCE : 1; /* RRFCE */ - unsigned int RTLFCE : 1; /* RTLFCE */ - unsigned int RTSFCE : 1; /* RTSFCE */ - unsigned int PRECE : 1; /* PRECE */ - unsigned int CERFCE : 1; /* CERFCE */ - } BIT; /* */ - } TRSCER; /* */ - char wk8[4]; /* *///FFFC3040-FFFC3038-4 - union { /* RMFCR *///FFFC3040 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned short :16; /* */ - unsigned short MFC :16; /* MFC */ - } BIT; /* */ - } RMFCR; /* */ - char wk9[4]; /* *///FFFC3048-FFFC3040-4 - union { /* TFTR *///FFFC3048 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :21; /* */ - unsigned int TFT :11; /* TFT */ - } BIT; /* */ - } TFTR; /* */ - char wk10[4]; /* *///FFFC3050-FFFC3048-4 - union { /* FDR *///FFFC3050 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :19; /* */ - unsigned int TFD : 5; /* TFD */ - unsigned int : 3; /* */ - unsigned int RFD : 5; /* RFD */ - } BIT; /* */ - } FDR; /* */ - char wk11[4]; /* *///FFFC3058-FFFC3050-4 - union { /* RMCR *///FFFC3058 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :30; /* */ - unsigned int RNC : 1; /* RNC */ - unsigned int RNR : 1; /* RNR */ - } BIT; /* */ - } RMCR; /* */ - char wk12[8]; /* *///FFFC3064-FFFC3058-4 - union { /* TFUCR *///FFFC3064 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int UNDER :16; /* UNDER */ - } BIT; /* */ - } TFUCR; /* */ - union { /* RFOCR *///FFFC3068 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int OVER :16; /* OVER */ - } BIT; /* */ - } RFOCR; /* */ - union { /* IOSR *///FFFC306C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int ELB : 1; /* ELB */ - } BIT; /* */ - } IOSR; /* */ - union { /* FCFTR *///FFFC3070 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :13; /* */ - unsigned int RFFO : 3; /* RFFO */ - unsigned int :13; /* */ - unsigned int RFDO : 3; /* RFDO */ - } BIT; /* */ - } FCFTR; /* */ - char wk13[8]; /* *///FFFC307C-FFFC3070-4 - union { /* TRIMD *///FFFC307C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :27; /* */ - unsigned int TIM : 1; /* TIM */ - unsigned int : 3; /* */ - unsigned int TIS : 1; /* TIS */ - } BIT; /* */ - } TRIMD; /* */ - char wk14[72]; /* *///FFFC30C8-FFFC307C-4 - unsigned int RBWAR; /* RBWAR *///FFFC30C8 - unsigned int RDFAR; /* RDFAR *///FFFC30CC - char wk15[4]; /* *///FFFC30D4-FFFC30CC-4 - unsigned int TBRAR; /* TBRAR *///FFFC30D4 - unsigned int TDFAR; /* TDFAR *///FFFC30D8 - char wk16[8]; /* *///FFFC30E4-FFFC30D8-4 - union { /* EDOCR *///FFFC30E4 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :28; /* */ - unsigned int FEC : 1; /* FEC */ - unsigned int AEC : 1; /* AEC */ - unsigned int EDH : 1; /* EDH */ - unsigned int NMIE : 1; /* NMIE */ - } BIT; /* */ - } EDOCR; /* */ -}; /* */ -struct st_fld { /* struct FLD */ - union { /* FPMON *///FFFFA800 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char FWE : 1; /* FWE */ - } BIT; /* */ - } FPMON; /* */ - char wk1[1]; /* *///FFFFA802-FFFFA800-1 - union { /* FMODR *///FFFFA802 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char FRDMD : 1; /* FRDMD */ - } BIT; /* */ - } FMODR; /* */ - char wk2[13]; /* *///FFFFA810-FFFFA802-1 - union { /* FASTAT *///FFFFA810 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ROMAE : 1; /* ROMAE */ - unsigned char : 2; /* */ - unsigned char CMDLK : 1; /* CMDLK */ - unsigned char EEPAE : 1; /* EEPAE */ - unsigned char EEPIFE : 1; /* EEPIFE */ - unsigned char EEPRPE : 1; /* EEPRPE */ - unsigned char EEPWPE : 1; /* EEPWPE */ - } BIT; /* */ - } FASTAT; /* */ - union { /* FAEINT *///FFFFA811 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ROMAIE : 1; /* ROMAIE */ - unsigned char : 2; /* */ - unsigned char CMDLKIE : 1; /* CMDLKIE */ - unsigned char EEPAEIE : 1; /* EEPAEIE */ - unsigned char EEPIFEIE : 1; /* EEPIFEIE */ - unsigned char EEPRPEIE : 1; /* EEPRPEIE */ - unsigned char EEPWPEIE : 1; /* EEPWPEIE */ - } BIT; /* */ - } FAEINT; /* */ - char wk3[14]; /* *///FFFFA820-FFFFA811-1 - union { /* ROMMAT *///FFFFA820 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 7; /* */ - unsigned char ROMSEL : 1; /* ROMSEL */ - } BIT; /* */ - } ROMMAT; /* */ - char wk4[30]; /* *///FFFFA840-FFFFA820-2 - union { /* EEPRE0 *///FFFFA840 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 4; /* */ - unsigned char DBRE0 : 4; /* DBRE0 */ - } BIT; /* */ - } EEPRE0; /* */ - char wk5[14]; /* *///FFFFA850-FFFFA840-2 - union { /* EEPWE0 *///FFFFA850 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 4; /* */ - unsigned char DBWE0 : 4; /* DBWE0 */ - } BIT; /* */ - } EEPWE0; /* */ - char wk6[2]; /* *///FFFFA854-FFFFA850-2 - union { /* FCURAME *///FFFFA854 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 7; /* */ - unsigned char FCRME : 1; /* FCRME */ - } BIT; /* */ - } FCURAME; /* */ - char wk7[170]; /* *///FFFFA900-FFFFA854-2 - union { /* FSTATR0 *///FFFFA900 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char FRDY : 1; /* FRDY */ - unsigned char ILGERR : 1; /* ILGERR */ - unsigned char ERSERR : 1; /* ERSERR */ - unsigned char PRGERR : 1; /* PRGERR */ - unsigned char SUSRDY : 1; /* SUSRDY */ - unsigned char : 1; /* */ - unsigned char ERSSPD : 1; /* ERSSPD */ - unsigned char PRGSPD : 1; /* PRGSPD */ - } BIT; /* */ - } FSTATR0; /* */ - union { /* FSTATR1 *///FFFFA901 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char FCUERR : 1; /* FCUERR */ - unsigned char : 2; /* */ - unsigned char FLOCKST : 1; /* FLOCKST */ - unsigned char : 2; /* */ - unsigned char FRDTCT : 1; /* FRDTCT */ - unsigned char FRCRCT : 1; /* FRCRCT */ - } BIT; /* */ - } FSTATR1; /* */ - union { /* FENTRYR *///FFFFA902 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char FKEY : 8; /* FKEY */ - unsigned char FENTRYD : 1; /* FENTRYD */ - unsigned char : 6; /* */ - unsigned char FENTRY0 : 1; /* FENTRY0 */ - } BIT; /* */ - } FENTRYR; /* */ - union { /* FPROTR *///FFFFA904 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char FPKEY : 8; /* FPKEY */ - unsigned char : 7; /* */ - unsigned char FPROTCN : 1; /* FPROTCN */ - } BIT; /* */ - } FPROTR; /* */ - union { /* FRESETR *///FFFFA906 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char FPKEY : 8; /* FPKEY */ - unsigned char : 7; /* */ - unsigned char FRESET : 1; /* FRESET */ - } BIT; /* */ - } FRESETR; /* */ - char wk8[2]; /* *///FFFFA90A-FFFFA906-2 - union { /* FCMDR *///FFFFA90A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char CMDR : 8; /* CMDR */ - unsigned char PCMDR : 8; /* PCMDR */ - } BIT; /* */ - } FCMDR; /* */ - union { /* FRAMECCR *///FFFFA90C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char FRDCLE : 1; /* FRDCLE */ - unsigned char FRCCLE : 1; /* FRCCLE */ - } BIT; /* */ - } FRAMECCR; /* */ - char wk9[10]; /* *///FFFFA918-FFFFA90C-2 - union { /* FCPSR *///FFFFA918 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 7; /* */ - unsigned char ESUSPMD : 1; /* ESUSPMD */ - } BIT; /* */ - } FCPSR; /* */ - union { /* EEPBCCNT *///FFFFA91A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short BCADR :10; /* BCADR */ - unsigned short : 2; /* */ - unsigned short BCSIZE : 1; /* BCSIZE */ - } BIT; /* */ - } EEPBCCNT; /* */ - union { /* FPESTAT *///FFFFA91C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char PEERRST : 8; /* PEERRST */ - } BIT; /* */ - } FPESTAT; /* */ - union { /* EEPBCSTAT *///FFFFA91E - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 7; /* */ - unsigned char BCST : 1; /* BCST */ - } BIT; /* */ - } EEPBCSTAT; /* */ -}; /* */ -struct st_romccr { /* struct ROMCCR*/ - union { /* RCCR *///FFFC1400 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :28; /* */ - unsigned int RCF : 1; /* RCF */ - unsigned int : 3; /* */ - } BIT; /* */ - } RCCR; /* */ -}; /* */ -struct st_stb { /* struct STB */ - union { /* STBCR *///FFFE0014 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char STBY : 1; /* STBY */ - } BIT; /* */ - } CR; /* */ - char wk1[3]; /* *///FFFE0018-FFFE0014-1 - union { /* STBCR2 *///FFFE0018 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char _HUDI : 1; /* H-UDI */ - unsigned char _UBC : 1; /* UBC */ - unsigned char _DMAC : 1; /* DMAC */ - unsigned char : 3; /* */ - unsigned char _DTC : 1; /* DTC */ - } BIT; /* */ - } CR2; /* */ - char wk2[1007]; /* *///FFFE0408-FFFE0018-1 - union { /* STBCR3 *///FFFE0408 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char HIZ : 1; /* HIZ */ - unsigned char _MTU2S : 1; /* MTU2S */ - unsigned char _MTU2 : 1; /* MTU2 */ - unsigned char _POE2 : 1; /* POE2 */ - unsigned char _IIC3 : 1; /* IIC3 */ - unsigned char _ADC0 : 1; /* ADC0 */ - unsigned char : 1; /* */ - unsigned char _FLASH : 1; /* FLASH */ - } BIT; /* */ - } CR3; /* */ - char wk3[3]; /* *///FFFE040C-FFFE0408-1 - union { /* STBCR4 *///FFFE040C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char _SCIF3 : 1; /* SCIF3 */ - unsigned char : 1; /* */ - unsigned char _CMT : 1; /* CMT */ - unsigned char : 1; /* */ - unsigned char _ETHER : 1; /* ETHER */ - } BIT; /* */ - } CR4; /* */ - char wk4[11]; /* *///FFFE0418-FFFE040C-1 - union { /* STBCR5 *///FFFE0418 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char _SCI0 : 1; /* SCI0 */ - unsigned char _SCI1 : 1; /* SCI1 */ - unsigned char _SCI2 : 1; /* SCI2 */ - unsigned char : 1; /* */ - unsigned char _SCI4 : 1; /* SCI4 */ - unsigned char _ADC1 : 1; /* ADC1 */ - unsigned char : 1; /* */ - unsigned char _RSPI : 1; /* RSPI */ - } BIT; /* */ - } CR5; /* */ - char wk5[3]; /* *///FFFE041C-FFFE0418-1 - union { /* STBCR6 *///FFFE041C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char USBSEL : 1; /* USBSEL */ - unsigned char _USB : 1; /* USB */ - unsigned char USBCLK : 1; /* USBCLK */ - unsigned char _RCAN : 1; /* RCAN */ - } BIT; /* */ - } CR6; /* */ -}; /* */ -struct st_sys { /* struct SYS */ - union { /* SYSCR1 *///FFFE0402 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char RAME3 : 1; /* RAME3 */ - unsigned char RAME2 : 1; /* RAME2 */ - unsigned char RAME1 : 1; /* RAME1 */ - unsigned char RAME0 : 1; /* RAME0 */ - } BIT; /* */ - } CR1; /* */ - char wk1[1]; /* *///FFFE0404-FFFE0402-1 - union { /* SYSCR2 *///FFFE0404 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char RAMWE3 : 1; /* RAMWE3 */ - unsigned char RAMWE2 : 1; /* RAMWE2 */ - unsigned char RAMWE1 : 1; /* RAMWE1 */ - unsigned char RAMWE0 : 1; /* RAMWE0 */ - } BIT; /* */ - } CR2; /* */ -}; /* */ -struct st_hudi { /* struct H-UDI */ - union { /* SDIR *///FFFE2000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short TI : 4; /* TI */ - } BIT; /* */ - } SDIR; /* */ -}; /* */ - -#define CPG (*(volatile struct st_cpg *)0xFFFE0010) /* CPG Address*/ -#define INTC (*(volatile struct st_intc *)0xFFFE0800) /* INTC Address*/ -#define UBC (*(volatile struct st_ubc *)0xFFFC04C0) /* UBC Address*/ -#define UBC0 (*(volatile struct st_ubc0 *)0xFFFC0400) /* UBC0 Address*/ -#define UBC1 (*(volatile struct st_ubc0 *)0xFFFC0410) /* UBC1 Address*/ -#define UBC2 (*(volatile struct st_ubc2 *)0xFFFC0420) /* UBC2 Address*/ -#define UBC3 (*(volatile struct st_ubc2 *)0xFFFC0430) /* UBC3 Address*/ -#define DTC (*(volatile struct st_dtc *)0xFFFE6000) /* DTC Address*/ -#define BSC (*(volatile struct st_bsc *)0xFFFC0000) /* BSC Address*/ -#define DMAC (*(volatile struct st_dmac *)0xFFFE1200) /* DMAC Address*/ -#define DMAC0 (*(volatile struct st_dmac0 *)0xFFFE1000) /* DMAC0 Address*/ -#define DMAC1 (*(volatile struct st_dmac0 *)0xFFFE1010) /* DMAC1 Address*/ -#define DMAC2 (*(volatile struct st_dmac2 *)0xFFFE1020) /* DMAC2 Address*/ -#define DMAC3 (*(volatile struct st_dmac2 *)0xFFFE1030) /* DMAC3 Address*/ -#define DMAC4 (*(volatile struct st_dmac4 *)0xFFFE1040) /* DMAC4 Address*/ -#define DMAC5 (*(volatile struct st_dmac4 *)0xFFFE1050) /* DMAC5 Address*/ -#define DMAC6 (*(volatile struct st_dmac4 *)0xFFFE1060) /* DMAC6 Address*/ -#define DMAC7 (*(volatile struct st_dmac4 *)0xFFFE1070) /* DMAC7 Address*/ -#define MTU2 (*(volatile struct st_mtu2 *)0xFFFE420A) /* MTU2 Address*/ -#define MTU20 (*(volatile struct st_mtu20 *)0xFFFE4300) /* MTU20 Address*/ -#define MTU21 (*(volatile struct st_mtu21 *)0xFFFE4380) /* MTU21 Address*/ -#define MTU22 (*(volatile struct st_mtu22 *)0xFFFE4000) /* MTU22 Address*/ -#define MTU23 (*(volatile struct st_mtu23 *)0xFFFE4200) /* MTU23 Address*/ -#define MTU24 (*(volatile struct st_mtu24 *)0xFFFE4200) /* MTU24 Address*/ -#define MTU25 (*(volatile struct st_mtu25 *)0xFFFE4080) /* MTU25 Address*/ -#define MTU2S (*(volatile struct st_mtu2s *)0xFFFE4A0A) /* MTU2S Address*/ -#define MTU2S3 (*(volatile struct st_mtu23 *)0xFFFE4A00) /* MTU2S3 Address*/ -#define MTU2S4 (*(volatile struct st_mtu24 *)0xFFFE4A00) /* MTU2S4 Address*/ -#define MTU2S5 (*(volatile struct st_mtu25 *)0xFFFE4880) /* MTU2S5 Address*/ -#define POE2 (*(volatile struct st_poe2 *)0xFFFE5000) /* POE Address*/ -#define CMT (*(volatile struct st_cmt *)0xFFFEC000) /* CMT Address*/ -#define CMT0 (*(volatile struct st_cmt0 *)0xFFFEC002) /* CMT0 Address*/ -#define CMT1 (*(volatile struct st_cmt0 *)0xFFFEC008) /* CMT1 Address*/ -#define WDT (*(volatile union un_wdt *)0xFFFE0000) /* WDT Address*/ -#define SCI0 (*(volatile struct st_sci *)0xFFFF8000) /* SCI0 Address*/ -#define SCI1 (*(volatile struct st_sci *)0xFFFF8800) /* SCI1 Address*/ -#define SCI2 (*(volatile struct st_sci *)0xFFFF9000) /* SCI2 Address*/ -#define SCI4 (*(volatile struct st_sci *)0xFFFFA000) /* SCI4 Address*/ -#define SCIF3 (*(volatile struct st_scif *)0xFFFE9800) /* SCIF3 Address*/ -#define RSPI (*(volatile struct st_rspi *)0xFFFFB000) /* RSPI Address*/ -#define IIC3 (*(volatile struct st_iic3 *)0xFFFEE000) /* IIC3 Address*/ -#define ADC0 (*(volatile struct st_adc0 *)0xFFFFE800) /* ADC0 Address*/ -#define ADC1 (*(volatile struct st_adc1 *)0xFFFFEC00) /* ADC1 Address*/ -#define RCANET (*(volatile struct st_rcanet *)0xFFFFD000) /* RCAN Address*/ -#define PFC (*(volatile struct st_pfc *)0xFFFE3804) /* PFC Address*/ -#define PA (*(volatile struct st_pa *)0xFFFE3800) /* PA Address*/ -#define PB (*(volatile struct st_pb *)0xFFFE3880) /* PB Address*/ -#define PC (*(volatile struct st_pc *)0xFFFE3900) /* PC Address*/ -#define PD (*(volatile struct st_pd *)0xFFFE3980) /* PD Address*/ -#define PE (*(volatile struct st_pe *)0xFFFE3A00) /* PE Address*/ -#define PF (*(volatile struct st_pf *)0xFFFE3A80) /* PF Address*/ -#define USB (*(volatile struct st_usb *)0xFFFE7000) /* USB Address*/ -#define EtherC (*(volatile struct st_etherc *)0xFFFC3100) /* EtherC Address*/ -#define EDMAC (*(volatile struct st_edmac *)0xFFFC3000) /* EDMAC Address*/ -#define FLD (*(volatile struct st_fld *)0xFFFFA800) /* FLD Address*/ -#define ROMCCR (*(volatile struct st_romccr *)0xFFFC1400) /* ROMCCR Address*/ -#define STB (*(volatile struct st_stb *)0xFFFE0014) /* STB Address*/ -#define SYS (*(volatile struct st_sys *)0xFFFE0402) /* SYS Address*/ -#define HUDI (*(volatile struct st_hudi *)0xFFFE2000) /* H-UDI Address*/ - -#endif /* _IODEFINE_H_ */ - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c deleted file mode 100644 index 58bc67a22..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. In addition to the standard demo tasks, the - * following tasks and tests are defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted very - * frequently. A register containing an unexpected value is indicative of an - * error in the context switching mechanism. Both standard and floating point - * registers are checked. The nature of the reg test tasks necessitates that - * they are written in assembly code. They are defined in regtest.src. - * - * "math" tasks - These are a set of 8 tasks that perform various double - * precision floating point calculations in order to check that the tasks - * floating point registers are being correctly saved and restored during - * context switches. The math tasks are defined in flop.c. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle an LED every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* This file and flop.c both demonstrate the use of - * xPortUsesFloatingPoint() which informs the kernel that a task should maintain - * a floating point context. - * - * *NOTE 3* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * vApplicationTickHook() is used to clear the timer interrupt and relies on - * configUSE_TICK_HOOK being set to 1 in FreeRTOSConfig.h. - * - * *NOTE 4* The traceTASK_SWITCHED_IN and traceTASK_SWITCHED_OUT trace hooks - * are used to save and restore the floating point context respectively for - * those tasks that require it (those for which xPortUsesFloatingPoint() has - * been called). - * - * *NOTE 5* Any interrupt that can cause a context switch requires an asm - * wrapper and must be assigned an interrupt priority of - * portKERNEL_INTERRUPT_PRIORITY. - * - * *NOTE 6* vSetupClockForRunTimeStats() is called by the kernel (via the - * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()) macro to configure an MTU channel - * to produce a time base that is used to log how much processor time each task - * is consuming. The MTU is used to generate a high(ish) frequency interrupt, - * and so also provides an example of how interrupts that don't make use of the - * FreeRTOS kernel can be assigned a priority above any priority used by the - * kernel itself. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo application includes. */ -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Constants required to configure the hardware. */ -#define mainFRQCR_VALUE ( 0x0303 ) /* Input = 12.5MHz, I Clock = 200MHz, B Clock = 50MHz, P Clock = 50MHz */ - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * Just sets up clocks, ports, etc. used by the demo application. - */ -static void prvSetupHardware( void ); - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * The reg test tasks as described at the top of this file. - */ -extern void vRegTest1Task( void *pvParameters ); -extern void vRegTest2Task( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The interrupt handler for the MTU - which is used to maintain the time base - * used by the run time stats. - */ -#pragma interrupt MTU_Match -void MTU_Match( void ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. */ -volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" WEB -page, which is served by the uIP task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/* The time use for the run time stats. */ -unsigned long ulRunTime = 0UL; - -/*-----------------------------------------------------------*/ - -/* - * Creates the majority of the demo application tasks before starting the - * scheduler. - */ -void main(void) -{ -TaskHandle_t xCreatedTask; - - prvSetupHardware(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( vRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Start the standard demo tasks. These don't perform any particular useful - functionality, other than to demonstrate the FreeRTOS API being used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Start the math tasks as described at the top of this file. */ - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient heap memory to create the idle - task. Increase the configTOTAL_HEAP_SIZE setting in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameter ) -{ -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; - - /* Just to remove compiler warning. */ - ( void ) pvParameter; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Inspect all the other tasks to ensure none have experienced any errors. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in GenQ test."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Queue Peek test."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Blocking Queue test."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in BlockTim test."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Semaphore test."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Polling Queue test."; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Create test."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in integer Math test."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in recursive mutex test."; - } - else if( xAreMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in floating point Math test."; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in RegTest."; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in RegTest."; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If the - LED toggles every 5 seconds then everything is ok. A faster toggle indicates - an error. */ - vParTestToggleLED( mainCHECK_LED ); - } -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* A call to vPortMalloc() failed, probably during the creation of a task, - queue or semaphore. Inspect pxCurrentTCB to find which task is currently - executing. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ - /* Code can be added to the idle task here. This function must *NOT* attempt - to block. Also, if the application uses the vTaskDelete() API function then - this function must return regularly to ensure the idle task gets a chance to - clean up the memory used by deleted tasks. */ -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* Just to remove compiler warnings. This function will only actually - get called if configCHECK_FOR_STACK_OVERFLOW is set to a non zero value. - By default this demo does not use the stack overflow checking functionality - as the SuperH will normally execute an exception if the stack overflows. */ - ( void ) pxTask; - ( void ) pcTaskName; - - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ -volatile unsigned long ul; - - /* Set the CPU and peripheral clocks. */ - CPG.FRQCR.WORD = mainFRQCR_VALUE; - - /* Wait for the clock to settle. */ - for( ul = 0; ul < 99; ul++ ) - { - nop(); - } - - /* Initialise the ports used to toggle LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ -/* The peripheral clock is divided by 32 before feeding the compare match -peripheral (CMT). */ -const unsigned long ulCompareMatch = ( configPERIPHERAL_CLOCK_HZ / ( configTICK_RATE_HZ * 32 ) ) + 1; - - /* Configure a timer to create the RTOS tick interrupt. This example uses - the compare match timer, but the multi function timer or possible even the - watchdog timer could also be used. Ensure vPortTickInterrupt() is installed - as the interrupt handler for whichever peripheral is used. */ - - /* Turn the CMT on. */ - STB.CR4.BIT._CMT = 0; - - /* Set the compare match value for the required tick frequency. */ - CMT0.CMCOR = ( unsigned short ) ulCompareMatch; - - /* Divide the peripheral clock by 32. */ - CMT0.CMCSR.BIT.CKS = 0x01; - - /* Set the CMT interrupt priority - the interrupt priority must be - configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to generate - the tick interrupt. */ - INTC.IPR08.BIT._CMT0 = portKERNEL_INTERRUPT_PRIORITY; - - /* Clear the interrupt flag. */ - CMT0.CMCSR.BIT.CMF = 0; - - /* Enable the compare match interrupt. */ - CMT0.CMCSR.BIT.CMIE = 0x01; - - /* Start the timer. */ - CMT.CMSTR.BIT.STR0 = 0x01; -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ - /* Clear the tick inerrupt. This is called from an interrupt context. */ - CMT0.CMCSR.BIT.CMF = 0; -} -/*-----------------------------------------------------------*/ - -void vSetupClockForRunTimeStats( void ) -{ - /* Configure an MTU channel to generate a periodic interrupt that is used - as the run time stats time base. The run time stats keep a track of how - much processing time each task is using. */ - - /* Turn the MTU2 on. */ - STB.CR3.BIT._MTU2 = 0; - - /* Clear counter on compare match A. */ - MTU20.TCR.BIT.CCLR = 0x01; - - /* Compare match value to give very approximately 10 interrupts per - millisecond. */ - MTU20.TGRA = 5000; - - /* Ensure the interrupt is clear. */ - MTU20.TSR.BIT.TGFA = 0; - - /* Enable the compare match interrupt. */ - MTU20.TIER.BIT.TGIEA = 0x01; - - /* Set the interrupt priority. */ - INTC.IPR09.BIT._MTU20G = portKERNEL_INTERRUPT_PRIORITY + 1; - - /* Start the count. */ - MTU2.TSTR.BIT.CST0 = 1; -} -/*-----------------------------------------------------------*/ - -void MTU_Match( void ) -{ -volatile unsigned char ucStatus; - - /* Increment the run time stats time base. */ - ulRunTime++; - - /* Clear the interrupt. */ - ucStatus = MTU20.TSR.BYTE; - MTU20.TSR.BIT.TGFA = 0; -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. This just returns a string - that is displaed on the "Task Stats" WEB page served by this demo. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src deleted file mode 100644 index 3f189ecd1..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src +++ /dev/null @@ -1,451 +0,0 @@ -;/* -; * FreeRTOS V202011.00 -; * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -; * -; * Permission is hereby granted, free of charge, to any person obtaining a copy of -; * this software and associated documentation files (the "Software"), to deal in -; * the Software without restriction, including without limitation the rights to -; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -; * the Software, and to permit persons to whom the Software is furnished to do so, -; * subject to the following conditions: -; * -; * The above copyright notice and this permission notice shall be included in all -; * copies or substantial portions of the Software. -; * -; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -; * -; * http://www.FreeRTOS.org -; * http://aws.amazon.com/freertos -; * -; * 1 tab == 4 spaces! -; */ - - .import _ulRegTest1CycleCount - .import _ulRegTest2CycleCount - .import _vPortYield - - .export _vRegTest1Task - .export _vRegTest2Task - - .section P, code, align=4 - - - -_vRegTest1Task: - - ; Fill the registers with known values. - mov #2, r1 - mov #3, r2 - mov #4, r3 - mov #5, r4 - mov #6, r5 - mov #7, r6 - mov #8, r7 - mov #9, r8 - mov #10, r9 - mov #11, r10 - mov #12, r11 - mov #13, r12 - mov #14, r13 - mov #15, r14 - - mov #16, r0 - lds r0, macl - mov #17, r0 - lds r0, mach - mov #18, r0 - ldc r0, gbr - - ; Also fill the flop registers with known values. - lds r1, fpul - fsts fpul, fr1 - lds r2, fpul - fsts fpul, fr2 - lds r3, fpul - fsts fpul, fr3 - lds r4, fpul - fsts fpul, fr4 - lds r5, fpul - fsts fpul, fr5 - lds r6, fpul - fsts fpul, fr6 - lds r7, fpul - fsts fpul, fr7 - lds r8, fpul - fsts fpul, fr8 - lds r9, fpul - fsts fpul, fr9 - lds r10, fpul - fsts fpul, fr10 - lds r11, fpul - fsts fpul, fr11 - lds r12, fpul - fsts fpul, fr12 - lds r13, fpul - fsts fpul, fr13 - lds r14, fpul - fsts fpul, fr14 - -_vRegTest1Loop: - - ; Reset r1 which was used in the tests. - mov #2, r1 - - ; Test that the registers still contain the expected values. If not, jump to - ; vRegTestError, which will stop this function looping and so cause it to stop - ; incrementing its loop counter. Both the standard and flop registers are - ; checked. - mov #2, r0 - cmp/eq r0, r1 - bf _vRegTest1Error - flds fr1, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #3, r0 - cmp/eq r0, r2 - bf _vRegTest1Error - flds fr2, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #4, r0 - cmp/eq r0, r3 - bf _vRegTest1Error - flds fr3, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #5, r0 - cmp/eq r0, r4 - bf _vRegTest1Error - flds fr4, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #6, r0 - cmp/eq r0, r5 - bf _vRegTest1Error - flds fr5, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #7, r0 - cmp/eq r0, r6 - bf _vRegTest1Error - flds fr6, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #8, r0 - cmp/eq r0, r7 - bf _vRegTest1Error - flds fr7, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #9, r0 - cmp/eq r0, r8 - bf _vRegTest1Error - flds fr8, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #10, r0 - cmp/eq r0, r9 - bf _vRegTest1Error - flds fr9, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #11, r0 - cmp/eq r0, r10 - bf _vRegTest1Error - flds fr10, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #12, r0 - cmp/eq r0, r11 - bf _vRegTest1Error - flds fr11, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #13, r0 - cmp/eq r0, r12 - bf _vRegTest1Error - flds fr12, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #14, r0 - cmp/eq r0, r13 - bf _vRegTest1Error - flds fr13, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #15, r0 - cmp/eq r0, r14 - bf _vRegTest1Error - flds fr14, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - sts macl, r0 - mov #16, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - sts mach, r0 - mov #17, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - stc gbr, r0 - mov #18, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - ; Increment the loop counter to indicate that this task is still running and - ; still healthy. - mov.l #_ulRegTest1CycleCount, r0 - mov.l @r0, r1 - add #1, r1 - mov.l r1, @r0 - - ; Jump back to test all the registers again. - bra _vRegTest1Loop - nop - -;----------------------------------------------------------- - -_vRegTest1Error: - bra _vRegTest1Error - nop - -;----------------------------------------------------------- - -_vRegTest2Task: - - ; Fill the standard registers with known values. - mov #12, r1 - mov #13, r2 - mov #14, r3 - mov #15, r4 - mov #16, r5 - mov #17, r6 - mov #18, r7 - mov #19, r8 - mov #110, r9 - mov #111, r10 - mov #112, r11 - mov #113, r12 - mov #114, r13 - - mov #115, r0 - lds r0, macl - mov #116, r0 - lds r0, mach - mov #117, r0 - ldc r0, gbr - - ; Also fill the flop registers with known values. - lds r1, fpul - fsts fpul, fr1 - lds r2, fpul - fsts fpul, fr2 - lds r3, fpul - fsts fpul, fr3 - lds r4, fpul - fsts fpul, fr4 - lds r5, fpul - fsts fpul, fr5 - lds r6, fpul - fsts fpul, fr6 - lds r7, fpul - fsts fpul, fr7 - lds r8, fpul - fsts fpul, fr8 - lds r9, fpul - fsts fpul, fr9 - lds r10, fpul - fsts fpul, fr10 - lds r11, fpul - fsts fpul, fr11 - lds r12, fpul - fsts fpul, fr12 - lds r13, fpul - fsts fpul, fr13 - lds r14, fpul - fsts fpul, fr14 - -_vRegTest2Loop: - - ; Reset r1 which was used in the tests. - mov #12, r1 - - ; Test that the registers still contain the expected values. If not, jump to - ; vRegTestError, which will stop this function looping and so cause it to stop - ; incrementing its loop counter. Both the standard and flop registers are - ; checked. - mov #12, r0 - cmp/eq r0, r1 - bf _vRegTest2Error - flds fr1, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #13, r0 - cmp/eq r0, r2 - bf _vRegTest2Error - flds fr2, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #14, r0 - cmp/eq r0, r3 - bf _vRegTest2Error - flds fr3, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #15, r0 - cmp/eq r0, r4 - bf _vRegTest2Error - flds fr4, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #16, r0 - cmp/eq r0, r5 - bf _vRegTest2Error - flds fr5, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #17, r0 - cmp/eq r0, r6 - bf _vRegTest2Error - flds fr6, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #18, r0 - cmp/eq r0, r7 - bf _vRegTest2Error - flds fr7, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #19, r0 - cmp/eq r0, r8 - bf _vRegTest2Error - flds fr8, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #110, r0 - cmp/eq r0, r9 - bf _vRegTest2Error - flds fr9, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #111, r0 - cmp/eq r0, r10 - bf _vRegTest2Error - flds fr10, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #112, r0 - cmp/eq r0, r11 - bf _vRegTest2Error - flds fr11, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #113, r0 - cmp/eq r0, r12 - bf _vRegTest2Error - flds fr12, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #114, r0 - cmp/eq r0, r13 - bf _vRegTest2Error - flds fr13, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - sts macl, r0 - mov #115, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - sts mach, r0 - mov #116, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - stc gbr, r0 - mov #117, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - ; Increment the loop counter to indicate that this task is still running and - ; still healthy. - mov.l #_ulRegTest2CycleCount, r0 - mov.l @r0, r1 - add #1, r1 - mov.l r1, @r0 - - ; Jump back to test all the registers again. - bra _vRegTest2Loop - nop - -;----------------------------------------------------------- - -_vRegTest2Error: - - bra _vRegTest2Error - nop - - - .end - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c deleted file mode 100644 index f3b5d3044..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c +++ /dev/null @@ -1,106 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :resetprg.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Reset Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include -#include <_h_c_lib.h> -//#include // Remove the comment when you use errno -//#include // Remove the comment when you use rand() -#include "typedefine.h" -#include "stacksct.h" - -#define SR_Init 0x000000F0 -#ifdef _FPD // when -fpu=double is specified -#define FPSCR_Init 0x000C0001 -#else -#define FPSCR_Init 0x00040001 -#endif -#define INT_OFFSET 0x10 - -extern _UINT INT_Vectors; - -#ifdef __cplusplus -extern "C" { -#endif -void PowerON_Reset_PC(void); -void Manual_Reset_PC(void); -void main(void); -#ifdef __cplusplus -} -#endif - -//#ifdef __cplusplus // Enable I/O in the application(both SIM I/O and hardware I/O) -//extern "C" { -//#endif -//extern void _INIT_IOLIB(void); -//extern void _CLOSEALL(void); -//#ifdef __cplusplus -//} -//#endif - -//extern void srand(_UINT); // Remove the comment when you use rand() -//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok() - -//#ifdef __cplusplus // Use Hardware Setup -//extern "C" { -//#endif -//extern void HardwareSetup(void); -//#ifdef __cplusplus -//} -//#endif - -//#ifdef __cplusplus // Remove the comment when you use global class object -//extern "C" { // Sections C$INIT and C$END will be generated -//#endif -//extern void _CALL_INIT(void); -//extern void _CALL_END(void); -//#ifdef __cplusplus -//} -//#endif - -#pragma section ResetPRG - -#pragma entry PowerON_Reset_PC - -void PowerON_Reset_PC(void) -{ - set_vbr((void *)((_UBYTE *)&INT_Vectors - INT_OFFSET)); - - set_fpscr(FPSCR_Init); - - _INITSCT(); - -// _CALL_INIT(); // Remove the comment when you use global class object - -// _INIT_IOLIB(); // Enable I/O in the application(both SIM I/O and hardware I/O) - -// errno=0; // Remove the comment when you use errno -// srand((_UINT)1); // Remove the comment when you use rand() -// _s1ptr=NULL; // Remove the comment when you use strtok() - -// HardwareSetup(); // Use Hardware Setup - - set_cr(SR_Init); - - main(); - -// _CLOSEALL(); // Close I/O in the application(both SIM I/O andhardware I/O) - -// _CALL_END(); // Remove the comment when you use global class object - - sleep(); -} - -//#pragma entry Manual_Reset_PC // Remove the comment when you use Manual Reset -void Manual_Reset_PC(void) -{ -} diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h deleted file mode 100644 index fb2eddb1a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h +++ /dev/null @@ -1,11 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :stacksct.h */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Setting of Stack area */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ -#pragma stacksize 0x400 /* Do not modify this line. */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h deleted file mode 100644 index 6d86149ca..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h +++ /dev/null @@ -1,27 +0,0 @@ - -#ifndef FREERTOS_STDINT -#define FREERTOS_STDINT - -/******************************************************************************* - * THIS IS NOT A FULL stdint.h IMPLEMENTATION - It only contains the definitions - * necessary to build the FreeRTOS code. It is provided to allow FreeRTOS to be - * built using compilers that do not provide their own stdint.h definition. - * - * To use this file: - * - * 1) Copy this file into the directory that contains your FreeRTOSConfig.h - * header file, as that directory will already be in the compilers include - * path. - * - * 2) Rename the copied file stdint.h. - * - */ - -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef short int16_t; -typedef unsigned short uint16_t; -typedef long int32_t; -typedef unsigned long uint32_t; - -#endif /* FREERTOS_STDINT */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h deleted file mode 100644 index 372d68078..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 217c650c6..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Hardware includes. */ -#include "hwEthernet.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the FIO1 LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn LED 4 on. */ - vParTestSetLED( 4, 1 ); - } - else - { - /* Turn LED 4 off. */ - vParTestSetLED( 4, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h deleted file mode 100644 index 6d3f73f12..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h +++ /dev/null @@ -1,902 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************** -* Copyright (C) 2009. Renesas Technology Corp., All Rights Reserved. -*""FILE COMMENT""*********** Technical reference data ************************** -* System Name : SH7216 Sample Program -* File Name : vect.h -* Abstract : Definition of Vector -* Version : 0.02.00 -* Device : SH7216 -* Tool-Chain : High-performance Embedded Workshop (Ver.4.05.01). -* : C/C++ compiler package for the SuperH RISC engine family -* : (Ver.9.03 Release00). -* OS : None -* H/W Platform: R0K572167 (CPU board) -* Description : -******************************************************************************** -* History : Mar.30,2009 Ver.0.02.00 -*""FILE COMMENT END""**********************************************************/ -#ifndef VECT_H -#define VECT_H - - -//;<> -// 0 Power On Reset PC -extern void PowerON_Reset_PC(void); - -//;<> -// 1 Power On Reset SP - -//;<> -// 2 Manual Reset PC -extern void Manual_Reset_PC(void); - -//;<> -// 3 Manual Reset SP - -// 4 Illegal code -#pragma interrupt INT_Illegal_code -extern void INT_Illegal_code(void); - -// 5 Reserved - -// 6 Illegal slot -#pragma interrupt INT_Illegal_slot -extern void INT_Illegal_slot(void); - -// 7 Reserved - -// 8 Reserved - -// 9 CPU Address error -#pragma interrupt INT_CPU_Address -extern void INT_CPU_Address(void); - -// 10 DMAC Address error -#pragma interrupt INT_DMAC_Address -extern void INT_DMAC_Address(void); - -// 11 NMI -#pragma interrupt INT_NMI -extern void INT_NMI(void); - -// 12 User breakpoint trap -#pragma interrupt INT_User_Break -extern void INT_User_Break(void); - -// 13 Reserved - -// 14 H-UDI -#pragma interrupt INT_HUDI -extern void INT_HUDI(void); - -// 15 Register bank over -#pragma interrupt INT_Bank_Overflow -extern void INT_Bank_Overflow(void); - -// 16 Register bank under -#pragma interrupt INT_Bank_Underflow -extern void INT_Bank_Underflow(void); - -// 17 ZERO_DIV -#pragma interrupt INT_Divide_by_Zero -extern void INT_Divide_by_Zero(void); - -// 18 OVER_DIV -#pragma interrupt INT_Divide_Overflow -extern void INT_Divide_Overflow(void); - -// 19 Reserved - -// 20 Reserved - -// 21 Reserved - -// 22 Reserved - -// 23 Reserved - -// 24 Reserved - -// 25 Reserved - -// 26 Reserved - -// 27 Reserved - -// 28 Reserved - -// 29 Reserved - -// 30 Reserved - -// 31 Reserved - -// 32 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA32 -extern void INT_TRAPA32(void); - -// 33 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA33 -extern void INT_TRAPA33(void); - -// 34 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA34 -extern void INT_TRAPA34(void); - -// 35 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA35 -extern void INT_TRAPA35(void); - -// 36 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA36 -extern void INT_TRAPA36(void); - -// 37 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA37 -extern void INT_TRAPA37(void); - -// 38 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA38 -extern void INT_TRAPA38(void); - -// 39 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA39 -extern void INT_TRAPA39(void); - -// 40 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA40 -extern void INT_TRAPA40(void); - -// 41 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA41 -extern void INT_TRAPA41(void); - -// 42 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA42 -extern void INT_TRAPA42(void); - -// 43 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA43 -extern void INT_TRAPA43(void); - -// 44 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA44 -extern void INT_TRAPA44(void); - -// 45 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA45 -extern void INT_TRAPA45(void); - -// 46 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA46 -extern void INT_TRAPA46(void); - -// 47 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA47 -extern void INT_TRAPA47(void); - -// 48 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA48 -extern void INT_TRAPA48(void); - -// 49 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA49 -extern void INT_TRAPA49(void); - -// 50 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA50 -extern void INT_TRAPA50(void); - -// 51 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA51 -extern void INT_TRAPA51(void); - -// 52 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA52 -extern void INT_TRAPA52(void); - -// 53 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA53 -extern void INT_TRAPA53(void); - -// 54 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA54 -extern void INT_TRAPA54(void); - -// 55 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA55 -extern void INT_TRAPA55(void); - -// 56 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA56 -extern void INT_TRAPA56(void); - -// 57 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA57 -extern void INT_TRAPA57(void); - -// 58 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA58 -extern void INT_TRAPA58(void); - -// 59 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA59 -extern void INT_TRAPA59(void); - -// 60 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA60 -extern void INT_TRAPA60(void); - -// 61 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA61 -extern void INT_TRAPA61(void); - -// 62 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA62 -extern void INT_TRAPA62(void); - -// 63 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA63 -extern void INT_TRAPA63(void); - -// 64 Interrupt IRQ0 -#pragma interrupt INT_IRQ0(resbank) -extern void INT_IRQ0(void); - -// 65 Interrupt IRQ1 -#pragma interrupt INT_IRQ1(resbank) -extern void INT_IRQ1(void); - -// 66 Interrupt IRQ2 -#pragma interrupt INT_IRQ2(resbank) -extern void INT_IRQ2(void); - -// 67 Interrupt IRQ3 -#pragma interrupt INT_IRQ3(resbank) -extern void INT_IRQ3(void); - -// 68 Interrupt IRQ4 -#pragma interrupt INT_IRQ4(resbank) -extern void INT_IRQ4(void); - -// 69 Interrupt IRQ5 -#pragma interrupt INT_IRQ5(resbank) -extern void INT_IRQ5(void); - -// 70 Interrupt IRQ6 -#pragma interrupt INT_IRQ6(resbank) -extern void INT_IRQ6(void); - -// 71 Interrupt IRQ7 -#pragma interrupt INT_IRQ7(resbank) -extern void INT_IRQ7(void); - -// 72 Reserved - -// 73 Reserved - -// 74 Reserved - -// 75 Reserved - -// 76 Reserved - -// 77 Reserved - -// 78 Reserved - -// 79 Reserved - -// 80 Interrupt PINT0 -#pragma interrupt INT_PINT0(resbank) -extern void INT_PINT0(void); - -// 81 Interrupt PINT1 -#pragma interrupt INT_PINT1(resbank) -extern void INT_PINT1(void); - -// 82 Interrupt PINT2 -#pragma interrupt INT_PINT2(resbank) -extern void INT_PINT2(void); - -// 83 Interrupt PINT3 -#pragma interrupt INT_PINT3(resbank) -extern void INT_PINT3(void); - -// 84 Interrupt PINT4 -#pragma interrupt INT_PINT4(resbank) -extern void INT_PINT4(void); - -// 85 Interrupt PINT5 -#pragma interrupt INT_PINT5(resbank) -extern void INT_PINT5(void); - -// 86 Interrupt PINT6 -#pragma interrupt INT_PINT6(resbank) -extern void INT_PINT6(void); - -// 87 Interrupt PINT7 -#pragma interrupt INT_PINT7(resbank) -extern void INT_PINT7(void); - -// 88 Reserved - -// 89 Reserved - -// 90 Reserved - -// 91 ROM FIFE -#pragma interrupt INT_ROM_FIFE(resbank) -extern void INT_ROM_FIFE(void); - -// 92 A/D ADI0 -#pragma interrupt INT_AD_ADI0(resbank) -extern void INT_AD_ADI0(void); - -// 93 Reserved - -// 94 Reserved - -// 95 Reserved - -// 96 A/D ADI1 -#pragma interrupt INT_AD_ADI1(resbank) -extern void INT_AD_ADI1(void); - -// 97 Reserved - -// 98 Reserved - -// 99 Reserved - -// 100 Reserved - -// 101 Reserved - -// 102 Reserved - -// 103 Reserved - -// 104 RCANET0 ERS_0 -#pragma interrupt INT_RCANET0_ERS_0 -extern void INT_RCANET0_ERS_0(void); - -// 105 RCANET0 OVR_0 -#pragma interrupt INT_RCANET0_OVR_0 -extern void INT_RCANET0_OVR_0(void); - -// 106 RCANET0 RM01_0 -#pragma interrupt INT_RCANET0_RM01_0 -extern void INT_RCANET0_RM01_0(void); - -// 107 RCANET0 SLE_0 -#pragma interrupt INT_RCANET0_SLE_0 -extern void INT_RCANET0_SLE_0(void); - -// 108 DMAC0 DEI0 -#pragma interrupt INT_DMAC0_DEI0(resbank) -extern void INT_DMAC0_DEI0(void); - -// 109 DMAC0 HEI0 -#pragma interrupt INT_DMAC0_HEI0(resbank) -extern void INT_DMAC0_HEI0(void); - -// 110 Reserved - -// 111 Reserved - -// 112 DMAC1 DEI1 -#pragma interrupt INT_DMAC1_DEI1(resbank) -extern void INT_DMAC1_DEI1(void); - -// 113 DMAC1 HEI1 -#pragma interrupt INT_DMAC1_HEI1(resbank) -extern void INT_DMAC1_HEI1(void); - -// 114 Reserved - -// 115 Reserved - -// 116 DMAC2 DEI2 -#pragma interrupt INT_DMAC2_DEI2(resbank) -extern void INT_DMAC2_DEI2(void); - -// 117 DMAC2 HEI2 -#pragma interrupt INT_DMAC2_HEI2(resbank) -extern void INT_DMAC2_HEI2(void); - -// 118 Reserved - -// 119 Reserved - -// 120 DMAC3 DEI3 -#pragma interrupt INT_DMAC3_DEI3(resbank) -extern void INT_DMAC3_DEI3(void); - -// 121 DMAC3 HEI3 -#pragma interrupt INT_DMAC3_HEI3(resbank) -extern void INT_DMAC3_HEI3(void); - -// 122 Reserved - -// 123 Reserved - -// 124 DMAC4 DEI4 -#pragma interrupt INT_DMAC4_DEI4(resbank) -extern void INT_DMAC4_DEI4(void); - -// 125 DMAC4 HEI4 -#pragma interrupt INT_DMAC4_HEI4(resbank) -extern void INT_DMAC4_HEI4(void); - -// 126 Reserved - -// 127 Reserved - -// 128 DMAC5 DEI5 -#pragma interrupt INT_DMAC5_DEI5(resbank) -extern void INT_DMAC5_DEI5(void); - -// 129 DMAC5 HEI5 -#pragma interrupt INT_DMAC5_HEI5(resbank) -extern void INT_DMAC5_HEI5(void); - -// 130 Reserved - -// 131 Reserved - -// 132 DMAC6 DEI6 -#pragma interrupt INT_DMAC6_DEI6(resbank) -extern void INT_DMAC6_DEI6(void); - -// 133 DMAC6 HEI6 -#pragma interrupt INT_DMAC6_HEI6(resbank) -extern void INT_DMAC6_HEI6(void); - -// 134 Reserved - -// 135 Reserved - -// 136 DMAC7 DEI7 -#pragma interrupt INT_DMAC7_DEI7(resbank) -extern void INT_DMAC7_DEI7(void); - -// 137 DMAC7 HEI7 -#pragma interrupt INT_DMAC7_HEI7(resbank) -extern void INT_DMAC7_HEI7(void); - -// 138 Reserved - -// 139 Reserved - -// 140 CMT CMI0 -#pragma interrupt INT_CMT_CMI0(resbank) -extern void INT_CMT_CMI0(void); - -// 141 Reserved - -// 142 Reserved - -// 143 Reserved - -// 144 CMT CMI1 -#pragma interrupt INT_CMT_CMI1(resbank) -extern void INT_CMT_CMI1(void); - -// 145 Reserved - -// 146 Reserved - -// 147 Reserved - -// 148 BSC CMTI -#pragma interrupt INT_BSC_CMTI(resbank) -extern void INT_BSC_CMTI(void); - -// 149 Reserved - -// 150 USB EP4FULL -#pragma interrupt INT_USB_EP4FULL(resbank) -extern void INT_USB_EP4FULL(void); - -// 151 USB EP5EMPTY -#pragma interrupt INT_USB_EP5EMPTY(resbank) -extern void INT_USB_EP5EMPTY(void); - -// 152 WDT ITI -#pragma interrupt INT_WDT_ITI(resbank) -extern void INT_WDT_ITI(void); - -// 153 E-DMAC EINT0 -#pragma interrupt INT_EDMAC_EINT0(resbank) -extern void INT_EDMAC_EINT0(void); - -// 154 USB EP1FULL -#pragma interrupt INT_USB_EP1FULL(resbank) -extern void INT_USB_EP1FULL(void); - -// 155 USB EP2EMPTY -#pragma interrupt INT_USB_EP2EMPTY(resbank) -extern void INT_USB_EP2EMPTY(void); - -// 156 MTU2 MTU0 TGI0A -#pragma interrupt INT_MTU2_MTU0_TGI0A(resbank) -extern void INT_MTU2_MTU0_TGI0A(void); - -// 157 MTU2 MTU0 TGI0B -#pragma interrupt INT_MTU2_MTU0_TGI0B(resbank) -extern void INT_MTU2_MTU0_TGI0B(void); - -// 158 MTU2 MTU0 TGI0C -#pragma interrupt INT_MTU2_MTU0_TGI0C(resbank) -extern void INT_MTU2_MTU0_TGI0C(void); - -// 159 MTU2 MTU0 TGI0D -#pragma interrupt INT_MTU2_MTU0_TGI0D(resbank) -extern void INT_MTU2_MTU0_TGI0D(void); - -// 160 MTU2 MTU0 TGI0V -#pragma interrupt INT_MTU2_MTU0_TGI0V(resbank) -extern void INT_MTU2_MTU0_TGI0V(void); - -// 161 MTU2 MTU0 TGI0E -#pragma interrupt INT_MTU2_MTU0_TGI0E(resbank) -extern void INT_MTU2_MTU0_TGI0E(void); - -// 162 MTU2 MTU0 TGI0F -#pragma interrupt INT_MTU2_MTU0_TGI0F(resbank) -extern void INT_MTU2_MTU0_TGI0F(void); - -// 163 Reserved - -// 164 MTU2 MTU1 TGI1A -#pragma interrupt INT_MTU2_MTU1_TGI1A(resbank) -extern void INT_MTU2_MTU1_TGI1A(void); - -// 165 MTU2 MTU1 TGI1B -#pragma interrupt INT_MTU2_MTU1_TGI1B(resbank) -extern void INT_MTU2_MTU1_TGI1B(void); - -// 166 Reserved - -// 167 Reserved - -// 168 MTU2 MTU1 TGI1V -#pragma interrupt INT_MTU2_MTU1_TGI1V(resbank) -extern void INT_MTU2_MTU1_TGI1V(void); - -// 169 MTU2 MTU1 TGI1U -#pragma interrupt INT_MTU2_MTU1_TGI1U(resbank) -extern void INT_MTU2_MTU1_TGI1U(void); - -// 170 Reserved - -// 171 Reserved - -// 172 MTU2 MTU2 TGI2A -#pragma interrupt INT_MTU2_MTU2_TGI2A(resbank) -extern void INT_MTU2_MTU2_TGI2A(void); - -// 173 MTU2 MTU2 TGI2B -#pragma interrupt INT_MTU2_MTU2_TGI2B(resbank) -extern void INT_MTU2_MTU2_TGI2B(void); - -// 174 Reserved - -// 175 Reserved - -// 176 MTU2 MTU2 TGI2V -#pragma interrupt INT_MTU2_MTU2_TGI2V(resbank) -extern void INT_MTU2_MTU2_TGI2V(void); - -// 177 MTU2 MTU2 TGI2U -#pragma interrupt INT_MTU2_MTU2_TGI2U(resbank) -extern void INT_MTU2_MTU2_TGI2U(void); - -// 178 Reserved - -// 179 Reserved - -// 180 MTU2 MTU3 TGI3A -#pragma interrupt INT_MTU2_MTU3_TGI3A(resbank) -extern void INT_MTU2_MTU3_TGI3A(void); - -// 181 MTU2 MTU3 TGI3B -#pragma interrupt INT_MTU2_MTU3_TGI3B(resbank) -extern void INT_MTU2_MTU3_TGI3B(void); - -// 182 MTU2 MTU3 TGI3C -#pragma interrupt INT_MTU2_MTU3_TGI3C(resbank) -extern void INT_MTU2_MTU3_TGI3C(void); - -// 183 MTU2 MTU3 TGI3D -#pragma interrupt INT_MTU2_MTU3_TGI3D(resbank) -extern void INT_MTU2_MTU3_TGI3D(void); - -// 184 MTU2 MTU3 TGI3V -#pragma interrupt INT_MTU2_MTU3_TGI3V(resbank) -extern void INT_MTU2_MTU3_TGI3V(void); - -// 185 Reserved - -// 186 Reserved - -// 187 Reserved - -// 188 MTU2 MTU4 TGI4A -#pragma interrupt INT_MTU2_MTU4_TGI4A(resbank) -extern void INT_MTU2_MTU4_TGI4A(void); - -// 189 MTU2 MTU4 TGI4B -#pragma interrupt INT_MTU2_MTU4_TGI4B(resbank) -extern void INT_MTU2_MTU4_TGI4B(void); - -// 190 MTU2 MTU4 TGI4C -#pragma interrupt INT_MTU2_MTU4_TGI4C(resbank) -extern void INT_MTU2_MTU4_TGI4C(void); - -// 191 MTU2 MTU4 TGI4D -#pragma interrupt INT_MTU2_MTU4_TGI4D(resbank) -extern void INT_MTU2_MTU4_TGI4D(void); - -// 192 MTU2 MTU4 TGI4V -#pragma interrupt INT_MTU2_MTU4_TGI4V(resbank) -extern void INT_MTU2_MTU4_TGI4V(void); - -// 193 Reserved - -// 194 Reserved - -// 195 Reserved - -// 196 MTU2 MTU5 TGI5U -#pragma interrupt INT_MTU2_MTU5_TGI5U(resbank) -extern void INT_MTU2_MTU5_TGI5U(void); - -// 197 MTU2 MTU5 TGI5V -#pragma interrupt INT_MTU2_MTU5_TGI5V(resbank) -extern void INT_MTU2_MTU5_TGI5V(void); - -// 198 MTU2 MTU5 TGI5W -#pragma interrupt INT_MTU2_MTU5_TGI5W(resbank) -extern void INT_MTU2_MTU5_TGI5W(void); - -// 199 Reserved - -// 200 POE2 OEI1 -#pragma interrupt INT_POE2_OEI1(resbank) -extern void INT_POE2_OEI1(void); - -// 201 POE2 OEI2 -#pragma interrupt INT_POE2_OEI2(resbank) -extern void INT_POE2_OEI2(void); - -// 202 Reserved - -// 203 Reserved - -// 204 MTU2S MTU3S TGI3A -#pragma interrupt INT_MTU2S_MTU3S_TGI3A(resbank) -extern void INT_MTU2S_MTU3S_TGI3A(void); - -// 205 MTU2S MTU3S TGI3B -#pragma interrupt INT_MTU2S_MTU3S_TGI3B(resbank) -extern void INT_MTU2S_MTU3S_TGI3B(void); - -// 206 MTU2S MTU3S TGI3C -#pragma interrupt INT_MTU2S_MTU3S_TGI3C(resbank) -extern void INT_MTU2S_MTU3S_TGI3C(void); - -// 207 MTU2S MTU3S TGI3D -#pragma interrupt INT_MTU2S_MTU3S_TGI3D(resbank) -extern void INT_MTU2S_MTU3S_TGI3D(void); - -// 208 MTU2S MTU3S TGI3V -#pragma interrupt INT_MTU2S_MTU3S_TGI3V(resbank) -extern void INT_MTU2S_MTU3S_TGI3V(void); - -// 209 Reserved - -// 210 Reserved - -// 211 Reserved - -// 212 MTU2S MTU4S TGI4A -#pragma interrupt INT_MTU2S_MTU4S_TGI4A(resbank) -extern void INT_MTU2S_MTU4S_TGI4A(void); - -// 213 MTU2S MTU4S TGI4B -#pragma interrupt INT_MTU2S_MTU4S_TGI4B(resbank) -extern void INT_MTU2S_MTU4S_TGI4B(void); - -// 214 MTU2S MTU4S TGI4C -#pragma interrupt INT_MTU2S_MTU4S_TGI4C(resbank) -extern void INT_MTU2S_MTU4S_TGI4C(void); - -// 215 MTU2S MTU4S TGI4D -#pragma interrupt INT_MTU2S_MTU4S_TGI4D(resbank) -extern void INT_MTU2S_MTU4S_TGI4D(void); - -// 216 MTU2S MTU4S TGI4V -#pragma interrupt INT_MTU2S_MTU4S_TGI4V(resbank) -extern void INT_MTU2S_MTU4S_TGI4V(void); - -// 217 Reserved - -// 218 Reserved - -// 219 Reserved - -// 220 MTU2S MTU5S TGI5U -#pragma interrupt INT_MTU2S_MTU5S_TGI5U(resbank) -extern void INT_MTU2S_MTU5S_TGI5U(void); - -// 221 MTU2S MTU5S TGI5V -#pragma interrupt INT_MTU2S_MTU5S_TGI5V(resbank) -extern void INT_MTU2S_MTU5S_TGI5V(void); - -// 222 MTU2S MTU5S TGI5W -#pragma interrupt INT_MTU2S_MTU5S_TGI5W(resbank) -extern void INT_MTU2S_MTU5S_TGI5W(void); - -// 223 Reserved - -// 224 POE2 OEI3 -#pragma interrupt INT_POE2_OEI3(resbank) -extern void INT_POE2_OEI3(void); - -// 225 Reserved - -// 226 USB USI0 -#pragma interrupt INT_USB_USI0(resbank) -extern void INT_USB_USI0(void); - -// 227 USB USI1 -#pragma interrupt INT_USB_USI1(resbank) -extern void INT_USB_USI1(void); - -// 228 IIC3 STPI -#pragma interrupt INT_IIC3_STPI(resbank) -extern void INT_IIC3_STPI(void); - -// 229 IIC3 NAKI -#pragma interrupt INT_IIC3_NAKI(resbank) -extern void INT_IIC3_NAKI(void); - -// 230 IIC3 RXI -#pragma interrupt INT_IIC3_RXI(resbank) -extern void INT_IIC3_RXI(void); - -// 231 IIC3 TXI -#pragma interrupt INT_IIC3_TXI(resbank) -extern void INT_IIC3_TXI(void); - -// 232 IIC3 TEI -#pragma interrupt INT_IIC3_TEI(resbank) -extern void INT_IIC3_TEI(void); - -// 233 RSPI SPERI -#pragma interrupt INT_RSPI_SPERI(resbank) -extern void INT_RSPI_SPERI(void); - -// 234 RSPI SPRXI -#pragma interrupt INT_RSPI_SPRXI(resbank) -extern void INT_RSPI_SPRXI(void); - -// 235 RSPI SPTXI -#pragma interrupt INT_RSPI_SPTXI(resbank) -extern void INT_RSPI_SPTXI(void); - -// 236 SCI SCI4 ERI4 -#pragma interrupt INT_SCI_SCI4_ERI4(resbank) -extern void INT_SCI_SCI4_ERI4(void); - -// 237 SCI SCI4 RXI4 -#pragma interrupt INT_SCI_SCI4_RXI4(resbank) -extern void INT_SCI_SCI4_RXI4(void); - -// 238 SCI SCI4 TXI4 -#pragma interrupt INT_SCI_SCI4_TXI4(resbank) -extern void INT_SCI_SCI4_TXI4(void); - -// 239 SCI SCI4 TEI4 -#pragma interrupt INT_SCI_SCI4_TEI4(resbank) -extern void INT_SCI_SCI4_TEI4(void); - -// 240 SCI SCI0 ERI0 -#pragma interrupt INT_SCI_SCI0_ERI0(resbank) -extern void INT_SCI_SCI0_ERI0(void); - -// 241 SCI SCI0 RXI0 -#pragma interrupt INT_SCI_SCI0_RXI0(resbank) -extern void INT_SCI_SCI0_RXI0(void); - -// 242 SCI SCI0 TXI0 -#pragma interrupt INT_SCI_SCI0_TXI0(resbank) -extern void INT_SCI_SCI0_TXI0(void); - -// 243 SCI SCI0 TEI0 -#pragma interrupt INT_SCI_SCI0_TEI0(resbank) -extern void INT_SCI_SCI0_TEI0(void); - -// 244 SCI SCI1 ERI1 -#pragma interrupt INT_SCI_SCI1_ERI1(resbank) -extern void INT_SCI_SCI1_ERI1(void); - -// 245 SCI SCI1 RXI1 -#pragma interrupt INT_SCI_SCI1_RXI1(resbank) -extern void INT_SCI_SCI1_RXI1(void); - -// 246 SCI SCI1 TXI1 -#pragma interrupt INT_SCI_SCI1_TXI1(resbank) -extern void INT_SCI_SCI1_TXI1(void); - -// 247 SCI SCI1 TEI1 -#pragma interrupt INT_SCI_SCI1_TEI1(resbank) -extern void INT_SCI_SCI1_TEI1(void); - -// 248 SCI SCI2 ERI2 -#pragma interrupt INT_SCI_SCI2_ERI2(resbank) -extern void INT_SCI_SCI2_ERI2(void); - -// 249 SCI SCI2 RXI2 -#pragma interrupt INT_SCI_SCI2_RXI2(resbank) -extern void INT_SCI_SCI2_RXI2(void); - -// 250 SCI SCI2 TXI2 -#pragma interrupt INT_SCI_SCI2_TXI2(resbank) -extern void INT_SCI_SCI2_TXI2(void); - -// 251 SCI SCI2 TEI2 -#pragma interrupt INT_SCI_SCI2_TEI2(resbank) -extern void INT_SCI_SCI2_TEI2(void); - -// 252 SCIF SCIF3 BRI3 -#pragma interrupt INT_SCIF_SCIF3_BRI3(resbank) -extern void INT_SCIF_SCIF3_BRI3(void); - -// 253 SCIF SCIF3 ERI3 -#pragma interrupt INT_SCIF_SCIF3_ERI3(resbank) -extern void INT_SCIF_SCIF3_ERI3(void); - -// 254 SCIF SCIF3 RXI3 -#pragma interrupt INT_SCIF_SCIF3_RXI3(resbank) -extern void INT_SCIF_SCIF3_RXI3(void); - -// 255 SCIF SCIF3 TXI3 -#pragma interrupt INT_SCIF_SCIF3_TXI3(resbank) -extern void INT_SCIF_SCIF3_TXI3(void); - -// Dummy -#pragma interrupt Dummy(resbank) -extern void Dummy(void); - -#endif /* VECT_H */ - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c deleted file mode 100644 index 2d488d439..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c +++ /dev/null @@ -1,553 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vecttbl.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Initialize of Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include "vect.h" - -extern void vPortStartFirstTask( void ); -extern void vPortYieldHandler( void ); -extern void vPortPreemptiveTick( void ); -extern void vEMAC_ISR_Wrapper( void ); -extern void MTU_Match( void ); - -#pragma section VECTTBL - -void *RESET_Vectors[] = { -//;<> -//;0 Power On Reset PC - (void*) PowerON_Reset_PC, -//;<> -// 1 Power On Reset SP - __secend("S"), -//;<> -//;2 Manual Reset PC - (void*) Manual_Reset_PC, -//;<> -// 3 Manual Reset SP - __secend("S") - -}; -#pragma section INTTBL -void *INT_Vectors[] = { -// 4 Illegal code - (void*) INT_Illegal_code, -// 5 Reserved - (void*) Dummy, -// 6 Illegal slot - (void*) INT_Illegal_slot, -// 7 Reserved - (void*) Dummy, -// 8 Reserved - (void*) Dummy, -// 9 CPU Address error - (void*) INT_CPU_Address, -// 10 DMAC Address error - (void*) INT_DMAC_Address, -// 11 NMI - (void*) INT_NMI, -// 12 User breakpoint trap - (void*) INT_User_Break, -// 13 Reserved - (void*) Dummy, -// 14 H-UDI - (void*) INT_HUDI, -// 15 Register bank over - (void*) INT_Bank_Overflow, -// 16 Register bank under - (void*) INT_Bank_Underflow, -// 17 ZERO_DIV - (void*) INT_Divide_by_Zero, -// 18 OVER_DIV - (void*) INT_Divide_Overflow, -// 19 Reserved - (void*) Dummy, -// 20 Reserved - (void*) Dummy, -// 21 Reserved - (void*) Dummy, -// 22 Reserved - (void*) Dummy, -// 23 Reserved - (void*) Dummy, -// 24 Reserved - (void*) Dummy, -// 25 Reserved - (void*) Dummy, -// 26 Reserved - (void*) Dummy, -// 27 Reserved - (void*) Dummy, -// 28 Reserved - (void*) Dummy, -// 29 Reserved - (void*) Dummy, -// 30 Reserved - (void*) Dummy, -// 31 Reserved - (void*) Dummy, -// 32 TRAPA (User Vecter) -// (void*) INT_TRAPA32, - (void*) vPortStartFirstTask, -// 33 TRAPA (User Vecter) -// (void*) INT_TRAPA33, - (void*) vPortYieldHandler, -// 34 TRAPA (User Vecter) - (void*) INT_TRAPA34, -// 35 TRAPA (User Vecter) - (void*) INT_TRAPA35, -// 36 TRAPA (User Vecter) - (void*) INT_TRAPA36, -// 37 TRAPA (User Vecter) - (void*) INT_TRAPA37, -// 38 TRAPA (User Vecter) - (void*) INT_TRAPA38, -// 39 TRAPA (User Vecter) - (void*) INT_TRAPA39, -// 40 TRAPA (User Vecter) - (void*) INT_TRAPA40, -// 41 TRAPA (User Vecter) - (void*) INT_TRAPA41, -// 42 TRAPA (User Vecter) - (void*) INT_TRAPA42, -// 43 TRAPA (User Vecter) - (void*) INT_TRAPA43, -// 44 TRAPA (User Vecter) - (void*) INT_TRAPA44, -// 45 TRAPA (User Vecter) - (void*) INT_TRAPA45, -// 46 TRAPA (User Vecter) - (void*) INT_TRAPA46, -// 47 TRAPA (User Vecter) - (void*) INT_TRAPA47, -// 48 TRAPA (User Vecter) - (void*) INT_TRAPA48, -// 49 TRAPA (User Vecter) - (void*) INT_TRAPA49, -// 50 TRAPA (User Vecter) - (void*) INT_TRAPA50, -// 51 TRAPA (User Vecter) - (void*) INT_TRAPA51, -// 52 TRAPA (User Vecter) - (void*) INT_TRAPA52, -// 53 TRAPA (User Vecter) - (void*) INT_TRAPA53, -// 54 TRAPA (User Vecter) - (void*) INT_TRAPA54, -// 55 TRAPA (User Vecter) - (void*) INT_TRAPA55, -// 56 TRAPA (User Vecter) - (void*) INT_TRAPA56, -// 57 TRAPA (User Vecter) - (void*) INT_TRAPA57, -// 58 TRAPA (User Vecter) - (void*) INT_TRAPA58, -// 59 TRAPA (User Vecter) - (void*) INT_TRAPA59, -// 60 TRAPA (User Vecter) - (void*) INT_TRAPA60, -// 61 TRAPA (User Vecter) - (void*) INT_TRAPA61, -// 62 TRAPA (User Vecter) - (void*) INT_TRAPA62, -// 63 TRAPA (User Vecter) - (void*) INT_TRAPA63, -// 64 Interrupt IRQ0 - (void*) INT_IRQ0, -// 65 Interrupt IRQ1 - (void*) INT_IRQ1, -// 66 Interrupt IRQ2 - (void*) INT_IRQ2, -// 67 Interrupt IRQ3 - (void*) INT_IRQ3, -// 68 Interrupt IRQ4 - (void*) INT_IRQ4, -// 69 Interrupt IRQ5 - (void*) INT_IRQ5, -// 70 Interrupt IRQ6 - (void*) INT_IRQ6, -// 71 Interrupt IRQ7 - (void*) INT_IRQ7, -// 72 Reserved - (void*) Dummy, -// 73 Reserved - (void*) Dummy, -// 74 Reserved - (void*) Dummy, -// 75 Reserved - (void*) Dummy, -// 76 Reserved - (void*) Dummy, -// 77 Reserved - (void*) Dummy, -// 78 Reserved - (void*) Dummy, -// 79 Reserved - (void*) Dummy, -// 80 Interrupt PINT0 - (void*) INT_PINT0, -// 81 Interrupt PINT1 - (void*) INT_PINT1, -// 82 Interrupt PINT2 - (void*) INT_PINT2, -// 83 Interrupt PINT3 - (void*) INT_PINT3, -// 84 Interrupt PINT4 - (void*) INT_PINT4, -// 85 Interrupt PINT5 - (void*) INT_PINT5, -// 86 Interrupt PINT6 - (void*) INT_PINT6, -// 87 Interrupt PINT7 - (void*) INT_PINT7, -// 88 Reserved - (void*) Dummy, -// 89 Reserved - (void*) Dummy, -// 90 Reserved - (void*) Dummy, -// 91 ROM FIFE - (void*) INT_ROM_FIFE, -// 92 A/D ADI0 - (void*) INT_AD_ADI0, -// 93 Reserved - (void*) Dummy, -// 94 Reserved - (void*) Dummy, -// 95 Reserved - (void*) Dummy, -// 96 A/D ADI1 - (void*) INT_AD_ADI1, -// 97 Reserved - (void*) Dummy, -// 98 Reserved - (void*) Dummy, -// 99 Reserved - (void*) Dummy, -// 100 Reserved - (void*) Dummy, -// 101 Reserved - (void*) Dummy, -// 102 Reserved - (void*) Dummy, -// 103 Reserved - (void*) Dummy, -// 104 RCANET0 ERS_0 - (void*) INT_RCANET0_ERS_0, -// 105 RCANET0 OVR_0 - (void*) INT_RCANET0_OVR_0, -// 106 RCANET0 RM01_0 - (void*) INT_RCANET0_RM01_0, -// 107 RCANET0 SLE_0 - (void*) INT_RCANET0_SLE_0, -// 108 DMAC0 DEI0 - (void*) INT_DMAC0_DEI0, -// 109 DMAC0 HEI0 - (void*) INT_DMAC0_HEI0, -// 110 Reserved - (void*) Dummy, -// 111 Reserved - (void*) Dummy, -// 112 DMAC1 DEI1 - (void*) INT_DMAC1_DEI1, -// 113 DMAC1 HEI1 - (void*) INT_DMAC1_HEI1, -// 114 Reserved - (void*) Dummy, -// 115 Reserved - (void*) Dummy, -// 116 DMAC2 DEI2 - (void*) INT_DMAC2_DEI2, -// 117 DMAC2 HEI2 - (void*) INT_DMAC2_HEI2, -// 118 Reserved - (void*) Dummy, -// 119 Reserved - (void*) Dummy, -// 120 DMAC3 DEI3 - (void*) INT_DMAC3_DEI3, -// 121 DMAC3 HEI3 - (void*) INT_DMAC3_HEI3, -// 122 Reserved - (void*) Dummy, -// 123 Reserved - (void*) Dummy, -// 124 DMAC4 DEI4 - (void*) INT_DMAC4_DEI4, -// 125 DMAC4 HEI4 - (void*) INT_DMAC4_HEI4, -// 126 Reserved - (void*) Dummy, -// 127 Reserved - (void*) Dummy, -// 128 DMAC5 DEI5 - (void*) INT_DMAC5_DEI5, -// 129 DMAC5 HEI5 - (void*) INT_DMAC5_HEI5, -// 130 Reserved - (void*) Dummy, -// 131 Reserved - (void*) Dummy, -// 132 DMAC6 DEI6 - (void*) INT_DMAC6_DEI6, -// 133 DMAC6 HEI6 - (void*) INT_DMAC6_HEI6, -// 134 Reserved - (void*) Dummy, -// 135 Reserved - (void*) Dummy, -// 136 DMAC7 DEI7 - (void*) INT_DMAC7_DEI7, -// 137 DMAC7 HEI7 - (void*) INT_DMAC7_HEI7, -// 138 Reserved - (void*) Dummy, -// 139 Reserved - (void*) Dummy, -// 140 CMT CMI0 -// (void*) INT_CMT_CMI0, - (void*) vPortPreemptiveTick, -// 141 Reserved - (void*) Dummy, -// 142 Reserved - (void*) Dummy, -// 143 Reserved - (void*) Dummy, -// 144 CMT CMI1 - (void*) INT_CMT_CMI1, -// 145 Reserved - (void*) Dummy, -// 146 Reserved - (void*) Dummy, -// 147 Reserved - (void*) Dummy, -// 148 BSC CMTI - (void*) INT_BSC_CMTI, -// 149 Reserved - (void*) Dummy, -// 150 USB EP4FULL - (void*) INT_USB_EP4FULL, -// 151 USB EP5EMPTY - (void*) INT_USB_EP5EMPTY, -// 152 WDT ITI - (void*) INT_WDT_ITI, -// 153 E-DMAC EINT0 - (void*) vEMAC_ISR_Wrapper, -// 154 USB EP1FULL - (void*) INT_USB_EP1FULL, -// 155 USB EP2EMPTY - (void*) INT_USB_EP2EMPTY, -// 156 MTU2 MTU0 TGI0A -// (void*) INT_MTU2_MTU0_TGI0A, - (void*) MTU_Match, -// 157 MTU2 MTU0 TGI0B - (void*) INT_MTU2_MTU0_TGI0B, -// 158 MTU2 MTU0 TGI0C - (void*) INT_MTU2_MTU0_TGI0C, -// 159 MTU2 MTU0 TGI0D - (void*) INT_MTU2_MTU0_TGI0D, -// 160 MTU2 MTU0 TGI0V - (void*) INT_MTU2_MTU0_TGI0V, -// 161 MTU2 MTU0 TGI0E - (void*) INT_MTU2_MTU0_TGI0E, -// 162 MTU2 MTU0 TGI0F - (void*) INT_MTU2_MTU0_TGI0F, -// 163 Reserved - (void*) Dummy, -// 164 MTU2 MTU1 TGI1A - (void*) INT_MTU2_MTU1_TGI1A, -// 165 MTU2 MTU1 TGI1B - (void*) INT_MTU2_MTU1_TGI1B, -// 166 Reserved - (void*) Dummy, -// 167 Reserved - (void*) Dummy, -// 168 MTU2 MTU1 TGI1V - (void*) INT_MTU2_MTU1_TGI1V, -// 169 MTU2 MTU1 TGI1U - (void*) INT_MTU2_MTU1_TGI1U, -// 170 Reserved - (void*) Dummy, -// 171 Reserved - (void*) Dummy, -// 172 MTU2 MTU2 TGI2A - (void*) INT_MTU2_MTU2_TGI2A, -// 173 MTU2 MTU2 TGI2B - (void*) INT_MTU2_MTU2_TGI2B, -// 174 Reserved - (void*) Dummy, -// 175 Reserved - (void*) Dummy, -// 176 MTU2 MTU2 TGI2V - (void*) INT_MTU2_MTU2_TGI2V, -// 177 MTU2 MTU2 TGI2U - (void*) INT_MTU2_MTU2_TGI2U, -// 178 Reserved - (void*) Dummy, -// 179 Reserved - (void*) Dummy, -// 180 MTU2 MTU3 TGI3A - (void*) INT_MTU2_MTU3_TGI3A, -// 181 MTU2 MTU3 TGI3B - (void*) INT_MTU2_MTU3_TGI3B, -// 182 MTU2 MTU3 TGI3C - (void*) INT_MTU2_MTU3_TGI3C, -// 183 MTU2 MTU3 TGI3D - (void*) INT_MTU2_MTU3_TGI3D, -// 184 MTU2 MTU3 TGI3V - (void*) INT_MTU2_MTU3_TGI3V, -// 185 Reserved - (void*) Dummy, -// 186 Reserved - (void*) Dummy, -// 187 Reserved - (void*) Dummy, -// 188 MTU2 MTU4 TGI4A - (void*) INT_MTU2_MTU4_TGI4A, -// 189 MTU2 MTU4 TGI4B - (void*) INT_MTU2_MTU4_TGI4B, -// 190 MTU2 MTU4 TGI4C - (void*) INT_MTU2_MTU4_TGI4C, -// 191 MTU2 MTU4 TGI4D - (void*) INT_MTU2_MTU4_TGI4D, -// 192 MTU2 MTU4 TGI4V - (void*) INT_MTU2_MTU4_TGI4V, -// 193 Reserved - (void*) Dummy, -// 194 Reserved - (void*) Dummy, -// 195 Reserved - (void*) Dummy, -// 196 MTU2 MTU5 TGI5U - (void*) INT_MTU2_MTU5_TGI5U, -// 197 MTU2 MTU5 TGI5V - (void*) INT_MTU2_MTU5_TGI5V, -// 198 MTU2 MTU5 TGI5W - (void*) INT_MTU2_MTU5_TGI5W, -// 199 Reserved - (void*) Dummy, -// 200 POE2 OEI1 - (void*) INT_POE2_OEI1, -// 201 POE2 OEI2 - (void*) INT_POE2_OEI2, -// 202 Reserved - (void*) Dummy, -// 203 Reserved - (void*) Dummy, -// 204 MTU2S MTU3S TGI3A - (void*) INT_MTU2S_MTU3S_TGI3A, -// 205 MTU2S MTU3S TGI3B - (void*) INT_MTU2S_MTU3S_TGI3B, -// 206 MTU2S MTU3S TGI3C - (void*) INT_MTU2S_MTU3S_TGI3C, -// 207 MTU2S MTU3S TGI3D - (void*) INT_MTU2S_MTU3S_TGI3D, -// 208 MTU2S MTU3S TGI3V - (void*) INT_MTU2S_MTU3S_TGI3V, -// 209 Reserved - (void*) Dummy, -// 210 Reserved - (void*) Dummy, -// 211 Reserved - (void*) Dummy, -// 212 MTU2S MTU4S TGI4A - (void*) INT_MTU2S_MTU4S_TGI4A, -// 213 MTU2S MTU4S TGI4B - (void*) INT_MTU2S_MTU4S_TGI4B, -// 214 MTU2S MTU4S TGI4C - (void*) INT_MTU2S_MTU4S_TGI4C, -// 215 MTU2S MTU4S TGI4D - (void*) INT_MTU2S_MTU4S_TGI4D, -// 216 MTU2S MTU4S TGI4V - (void*) INT_MTU2S_MTU4S_TGI4V, -// 217 Reserved - (void*) Dummy, -// 218 Reserved - (void*) Dummy, -// 219 Reserved - (void*) Dummy, -// 220 MTU2S MTU5S TGI5U - (void*) INT_MTU2S_MTU5S_TGI5U, -// 221 MTU2S MTU5S TGI5V - (void*) INT_MTU2S_MTU5S_TGI5V, -// 222 MTU2S MTU5S TGI5W - (void*) INT_MTU2S_MTU5S_TGI5W, -// 223 Reserved - (void*) Dummy, -// 224 POE2 OEI3 - (void*) INT_POE2_OEI3, -// 225 Reserved - (void*) Dummy, -// 226 USB USI0 - (void*) INT_USB_USI0, -// 227 USB USI1 - (void*) INT_USB_USI1, -// 228 IIC3 STPI - (void*) INT_IIC3_STPI, -// 229 IIC3 NAKI - (void*) INT_IIC3_NAKI, -// 230 IIC3 RXI - (void*) INT_IIC3_RXI, -// 231 IIC3 TXI - (void*) INT_IIC3_TXI, -// 232 IIC3 TEI - (void*) INT_IIC3_TEI, -// 233 RSPI SPERI - (void*) INT_RSPI_SPERI, -// 234 RSPI SPRXI - (void*) INT_RSPI_SPRXI, -// 235 RSPI SPTXI - (void*) INT_RSPI_SPTXI, -// 236 SCI SCI4 ERI4 - (void*) INT_SCI_SCI4_ERI4, -// 237 SCI SCI4 RXI4 - (void*) INT_SCI_SCI4_RXI4, -// 238 SCI SCI4 TXI4 - (void*) INT_SCI_SCI4_TXI4, -// 239 SCI SCI4 TEI4 - (void*) INT_SCI_SCI4_TEI4, -// 240 SCI SCI0 ERI0 - (void*) INT_SCI_SCI0_ERI0, -// 241 SCI SCI0 RXI0 - (void*) INT_SCI_SCI0_RXI0, -// 242 SCI SCI0 TXI0 - (void*) INT_SCI_SCI0_TXI0, -// 243 SCI SCI0 TEI0 - (void*) INT_SCI_SCI0_TEI0, -// 244 SCI SCI1 ERI1 - (void*) INT_SCI_SCI1_ERI1, -// 245 SCI SCI1 RXI1 - (void*) INT_SCI_SCI1_RXI1, -// 246 SCI SCI1 TXI1 - (void*) INT_SCI_SCI1_TXI1, -// 247 SCI SCI1 TEI1 - (void*) INT_SCI_SCI1_TEI1, -// 248 SCI SCI2 ERI2 - (void*) INT_SCI_SCI2_ERI2, -// 249 SCI SCI2 RXI2 - (void*) INT_SCI_SCI2_RXI2, -// 250 SCI SCI2 TXI2 - (void*) INT_SCI_SCI2_TXI2, -// 251 SCI SCI2 TEI2 - (void*) INT_SCI_SCI2_TEI2, -// 252 SCIF SCIF3 BRI3 - (void*) INT_SCIF_SCIF3_BRI3, -// 253 SCIF SCIF3 ERI3 - (void*) INT_SCIF_SCIF3_ERI3, -// 254 SCIF SCIF3 RXI3 - (void*) INT_SCIF_SCIF3_RXI3, -// 255 SCIF SCIF3 TXI3 - (void*) INT_SCIF_SCIF3_TXI3, -// xx Reserved - (void*) Dummy -}; - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 5d4bba033..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "hwEthernet.h" -#include "hwEthernetPhy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 3 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 5 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section RX_DESCR - ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section TX_DESCR - ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; -#pragma section - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvSetupPortPinsAndReset( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *xCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Setup the SH hardware for MII communications. */ - prvSetupPortPinsAndReset(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - EtherC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - EtherC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phyReset(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - xCurrentRxDesc->status &= ~( FP1 | FP0 ); - xCurrentRxDesc->status |= ACT; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - uip_buf = ( void * ) xCurrentRxDesc->buf_p; - - /* Move onto the next buffer in the ring. */ - xCurrentRxDesc = xCurrentRxDesc->next; - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phyStatus() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - case PHY_LINK_10H: - EtherC.ECMR.BIT.DM = 0; - lReturn = pdPASS; - break; - - /* Full duplex link */ - case PHY_LINK_100F: - case PHY_LINK_10F: - EtherC.ECMR.BIT.DM = 1; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - EtherC.ECMR.BIT.RE = 1; - EtherC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - xCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( xCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( xCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - xCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - xCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - xCurrentRxDesc->status |= ACT; - xCurrentRxDesc = xCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( (xCurrentRxDesc->status & FP0) == FP0 ) - { - ulReturn = xCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvSetupPortPinsAndReset( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - PFC.PACRL4.BIT.PA12MD = 0x7; /* Set TX_CLK input (EtherC) */ - PFC.PACRL3.BIT.PA11MD = 0x7; /* Set TX_EN output (EtherC) */ - PFC.PACRL3.BIT.PA10MD = 0x7; /* Set MII_TXD0 output (EtherC) */ - PFC.PACRL3.BIT.PA9MD = 0x7; /* Set MII_TXD1 output (EtherC) */ - PFC.PACRL3.BIT.PA8MD = 0x7; /* Set MII_TXD2 output (EtherC) */ - PFC.PACRL2.BIT.PA7MD = 0x7; /* Set MII_TXD3 output (EtherC) */ - PFC.PACRL2.BIT.PA6MD = 0x7; /* Set TX_ER output (EtherC) */ - PFC.PDCRH4.BIT.PD31MD = 0x7; /* Set RX_DV input (EtherC) */ - PFC.PDCRH4.BIT.PD30MD = 0x7; /* Set RX_ER input (EtherC) */ - PFC.PDCRH4.BIT.PD29MD = 0x7; /* Set MII_RXD3 input (EtherC) */ - PFC.PDCRH4.BIT.PD28MD = 0x7; /* Set MII_RXD2 input (EtherC) */ - PFC.PDCRH3.BIT.PD27MD = 0x7; /* Set MII_RXD1 input (EtherC) */ - PFC.PDCRH3.BIT.PD26MD = 0x7; /* Set MII_RXD0 input (EtherC) */ - PFC.PDCRH3.BIT.PD25MD = 0x7; /* Set RX_CLK input (EtherC) */ - PFC.PDCRH3.BIT.PD24MD = 0x7; /* Set CRS input (EtherC) */ - PFC.PDCRH2.BIT.PD23MD = 0x7; /* Set COL input (EtherC) */ - PFC.PDCRH2.BIT.PD22MD = 0x7; /* Set WOL output (EtherC) */ - PFC.PDCRH2.BIT.PD21MD = 0x7; /* Set EXOUT output (EtherC) */ - PFC.PDCRH2.BIT.PD20MD = 0x7; /* Set MDC output (EtherC) */ - PFC.PDCRH1.BIT.PD19MD = 0x7; /* Set LINKSTA input (EtherC) */ - PFC.PDCRH1.BIT.PD18MD = 0x7; /* Set MDIO input/output (EtherC) */ - - STB.CR4.BIT._ETHER = 0x0; - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - EtherC.ECSR.LONG = 0x00000037; /* Clear all EtherC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* TODO: Check bit 5 */ - EtherC.ECSIPR.LONG = 0x00000020; /* Disable EtherC status change interrupt */ - EtherC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - EtherC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all EtherC and EDMAC status bits */ - EDMAC.RDLAR = ( void * ) xCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - - /* Set the EDMAC interrupt priority - the interrupt priority must be - configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to - generate the tick interrupt. */ - INTC.IPR19.BIT._EDMAC = portKERNEL_INTERRUPT_PRIORITY; - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; /* Enable Rx and Tx end interrupts. */ - - /* Clear the interrupt flag. */ - CMT0.CMCSR.BIT.CMF = 0; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern SemaphoreHandle_t xEMACSemaphore; -static long ulTxEndInts = 0; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - ++ulTxEndInts; - if( ulTxEndInts >= 2 ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - ulTxEndInts = 0; - } - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src deleted file mode 100644 index 8bf031975..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src +++ /dev/null @@ -1,53 +0,0 @@ -;/* -; * FreeRTOS V202011.00 -; * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -; * -; * Permission is hereby granted, free of charge, to any person obtaining a copy of -; * this software and associated documentation files (the "Software"), to deal in -; * the Software without restriction, including without limitation the rights to -; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -; * the Software, and to permit persons to whom the Software is furnished to do so, -; * subject to the following conditions: -; * -; * The above copyright notice and this permission notice shall be included in all -; * copies or substantial portions of the Software. -; * -; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -; * -; * http://www.FreeRTOS.org -; * http://aws.amazon.com/freertos -; * -; * 1 tab == 4 spaces! -; */ - - .import _vEMAC_ISR_Handler - .import _pxCurrentTCB - .export _vEMAC_ISR_Wrapper - - .INCLUDE "ISR_Support.inc" - - .section P - -;----------------------------------------------------------- - -_vEMAC_ISR_Wrapper: - - portSAVE_CONTEXT - - mov.l #_vEMAC_ISR_Handler, r0 - jsr @r0 - nop - - portRESTORE_CONTEXT - -;----------------------------------------------------------- - - - - .end - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 6c2ae8161..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,254 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


    Refresh count = %d


    %s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( void ); - ( void ) arg; - - /* Get the state of the LEDs that are on the FIO1 port. */ - if( lParTestGetLEDState() ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, "LED

    ", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


    Refresh count = %d", ( int ) lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

    -

    404 - file not found

    -

    Go here instead.

    -
    - - \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -

    -

    Task statistics

    -Page will refresh every 2 seconds.

    -

    Task          State  Priority  Stack	#
    ************************************************
    -%! rtos-stats -
    -
    - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -LED and LCD IO
    - -

    - -Use the check box to turn on or off LED 4, then click "Update IO". - - -

    -
    -%! led-io -

    - - -

    - - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -

    -

    Run-time statistics

    -Page will refresh every 2 seconds.

    -

    Task            Abs Time      % Time
    ****************************************
    -%! run-time -
    -
    - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -

    -

    Network statistics

    -
    LocalRemoteStateRetransmissionsTimerFlags
    %d%u.%u.%u.%u:%u%s%u%u%c %c
    -
    -IP           Packets received
    -             Packets sent
    -             Forwaded
    -             Dropped
    -IP errors    IP version/header length
    -             IP length, high byte
    -             IP length, low byte
    -             IP fragments
    -             Header checksum
    -             Wrong protocol
    -ICMP	     Packets received
    -             Packets sent
    -             Packets dropped
    -             Type errors
    -             Checksum errors
    -TCP          Packets received
    -             Packets sent
    -             Packets dropped
    -             Checksum errors
    -             Data packets without ACKs
    -             Resets
    -             Retransmissionsa
    -             Syn to closed port
    -UDP          Packets dropped
    -             Packets received
    -             Packets sent
    -             Packets chkerr
    -	     No connection avaliable
    -
    %! net-stats
    -
    - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

    -


    -
    -

    Network connections

    -

    - - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 5bee12c84..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,4376 +0,0 @@ -static const char data_404_html[] = { -/* /404.html */ -0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x20, 0x20, -0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, -0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, -0x22, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, -0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, -0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, -0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, -0x68, 0x31, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, -0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, -0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, -0x33, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, -0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x0d, 0x0a, 0x20, -0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, }; - -static const char data_index_html[] = { -/* /index.html */ -0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, -0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, -0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, -0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, -0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, -0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, -0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x4c, -0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, -0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, -0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, -0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, -0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, -0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, -0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, -0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, -0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, -0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x0d, 0x0a, -}; - -static const char data_index_shtml[] = { -/* /index.shtml */ -0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, -0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, -0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, -0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, -0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, -0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, -0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, -0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, -0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, -0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, -0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, -0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, -0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, -0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, -0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, -0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, -0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, -0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, -0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, -0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, -0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, -0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, -0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, -0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, -0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, -0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, -0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, -0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, -0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, -0x3c, 0x68, 0x72, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, -0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x32, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, -0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, -0x0a, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, -0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, -0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, -0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, -0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, -0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, -0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, -0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, -0x63, 0x6b, 0x09, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, -0x0d, 0x0a, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, -0x73, 0x74, 0x61, 0x74, 0x73, 0x0d, 0x0a, 0x3c, 0x2f, 0x70, -0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, -0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, -0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x0d, -0x0a, }; - -static const char data_io_shtml[] = { -/* /io.shtml */ -0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, -0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, -0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, -0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, -0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, -0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, -0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, -0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, -0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x72, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, -0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, -0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x0d, 0x0a, -0x0d, 0x0a, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x0d, 0x0a, 0x55, -0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, -0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, -0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, -0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, -0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, -0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, -0x20, 0x49, 0x4f, 0x22, 0x2e, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, -0x0a, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x72, -0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, -0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, -0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, -0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0x0d, 0x0a, 0x25, -0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0x0d, 0x0a, -0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x69, 0x6e, 0x70, 0x75, -0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, -0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, -0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, -0x49, 0x4f, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, -0x72, 0x6d, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, -0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, -0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, -0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, -0x0a, 0x0d, 0x0a, }; - -static const char data_logo_jpg[] = { -/* /logo.jpg */ -0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x00, -0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, -0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, -0xff, 0xdb, 0x00, 0x43, 0x00, 0x03, 0x02, 0x02, 0x03, 0x02, -0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x04, 0x05, -0x08, 0x05, 0x05, 0x04, 0x04, 0x05, 0x0a, 0x07, 0x07, 0x06, -0x08, 0x0c, 0x0a, 0x0c, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0d, -0x0e, 0x12, 0x10, 0x0d, 0x0e, 0x11, 0x0e, 0x0b, 0x0b, 0x10, -0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0x0c, 0x0f, -0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, -0xdb, 0x00, 0x43, 0x01, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, -0x09, 0x05, 0x05, 0x09, 0x14, 0x0d, 0x0b, 0x0d, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, -0x00, 0x11, 0x08, 0x01, 0x9b, 0x02, 0xd0, 0x03, 0x01, 0x22, -0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, -0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, -0xff, 0xc4, 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, -0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, -0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, -0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, -0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, -0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, -0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, -0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, -0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, -0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, -0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, -0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, -0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, -0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, -0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, -0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, -0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, -0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, -0xf8, 0xf9, 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, -0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, -0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, -0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, -0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, -0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, -0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, -0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, -0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, -0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, -0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, -0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, -0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, -0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, -0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, -0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, -0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, -0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, -0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, -0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, -0x00, 0x3f, 0x00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 0x00, 0xa2, -0x8a, 0x28, 0x00, 0xa6, 0x93, 0xe9, 0x41, 0x34, 0x94, 0x00, -0x53, 0x49, 0xa1, 0x8d, 0x46, 0xed, 0xc5, 0x00, 0x2b, 0x35, -0x31, 0x9e, 0xa3, 0x77, 0xa8, 0x9e, 0x4a, 0x00, 0x91, 0xa5, -0xc0, 0xa8, 0x5a, 0x60, 0x3a, 0xd0, 0xa9, 0x24, 0xe0, 0xec, -0x5c, 0xfb, 0x9e, 0x94, 0xd7, 0xf0, 0xf4, 0x37, 0x84, 0x35, -0xe3, 0x3c, 0xf8, 0x1f, 0xea, 0xb7, 0x11, 0x1e, 0x7b, 0xf0, -0x3a, 0xfe, 0x39, 0xf6, 0xc5, 0x44, 0x9b, 0x5f, 0x0a, 0xb9, -0x13, 0x72, 0x4b, 0xdd, 0x57, 0x66, 0x16, 0xb1, 0xe3, 0xcd, -0x0f, 0x45, 0x46, 0x37, 0x5a, 0x94, 0x3b, 0xc7, 0xfc, 0xb2, -0x84, 0xf9, 0xb2, 0x7f, 0xdf, 0x29, 0x93, 0xfa, 0x57, 0x15, -0x7d, 0xf1, 0xe2, 0xca, 0x26, 0x2b, 0x69, 0xe1, 0xdd, 0x7a, -0xf4, 0x0f, 0xe3, 0x5b, 0x3d, 0xaa, 0x7f, 0x33, 0x9f, 0xd2, -0xbd, 0x62, 0xdf, 0xc3, 0xda, 0x5d, 0xa7, 0xfa, 0x9d, 0x3a, -0xd6, 0x23, 0xea, 0x90, 0xa8, 0xfe, 0x95, 0x6c, 0x5a, 0x42, -0xa3, 0x88, 0x90, 0x7d, 0x14, 0x57, 0x93, 0x5e, 0x8e, 0x61, -0x57, 0xf8, 0x75, 0xa3, 0x0f, 0x48, 0xdd, 0xfd, 0xed, 0xfe, -0x87, 0x87, 0x88, 0xc3, 0xe6, 0x95, 0xdf, 0xee, 0xab, 0xc6, -0x9a, 0xf2, 0x87, 0x33, 0xfb, 0xdb, 0xfd, 0x0f, 0x02, 0x9b, -0xf6, 0x86, 0xb8, 0x8d, 0x8f, 0xfc, 0x51, 0xba, 0xb8, 0x1e, -0xe9, 0xff, 0x00, 0xd6, 0xa8, 0x8f, 0xed, 0x25, 0x1a, 0x0f, -0xde, 0x78, 0x53, 0x57, 0x53, 0xec, 0xa2, 0xbe, 0x81, 0x6b, -0x2b, 0x76, 0xeb, 0x04, 0x6d, 0xf5, 0x41, 0x51, 0x36, 0x91, -0x63, 0x27, 0x5b, 0x38, 0x0f, 0xd6, 0x35, 0xff, 0x00, 0x0a, -0xe0, 0x78, 0x1c, 0xdb, 0xec, 0xe3, 0x17, 0xfe, 0x00, 0xbf, -0xcc, 0xf2, 0xde, 0x5b, 0x9e, 0x27, 0x78, 0xe3, 0xd7, 0xce, -0x9c, 0x7f, 0xcc, 0xf0, 0x33, 0xfb, 0x4c, 0x69, 0x8a, 0x7f, -0x79, 0xe1, 0xfd, 0x65, 0x3e, 0x91, 0x21, 0xff, 0x00, 0xd9, -0xa9, 0x47, 0xed, 0x3f, 0xe1, 0xf5, 0x20, 0x3e, 0x91, 0xad, -0x2f, 0xfd, 0xb0, 0x8c, 0xff, 0x00, 0xed, 0x4a, 0xf7, 0x66, -0xf0, 0xe6, 0x93, 0x27, 0xde, 0xd3, 0x6d, 0x1b, 0xeb, 0x02, -0xff, 0x00, 0x85, 0x57, 0x7f, 0x07, 0xe8, 0x52, 0xfd, 0xed, -0x1e, 0xc4, 0xff, 0x00, 0xdb, 0xba, 0x7f, 0x85, 0x66, 0xf0, -0x79, 0xe2, 0xdb, 0x17, 0x1f, 0x9c, 0x3f, 0xe0, 0x99, 0x3c, -0x07, 0x11, 0xaf, 0x87, 0x1d, 0x07, 0xeb, 0x4f, 0xfc, 0x99, -0xe2, 0xf1, 0x7e, 0xd3, 0x5e, 0x14, 0x90, 0xfc, 0xf0, 0x6a, -0x90, 0xfb, 0xbd, 0xb0, 0xfe, 0x8c, 0x6a, 0xf4, 0x5f, 0xb4, -0x5f, 0x82, 0xa4, 0x3f, 0x35, 0xf5, 0xc4, 0x5f, 0xef, 0xda, -0x49, 0xfd, 0x01, 0xaf, 0x52, 0x97, 0xe1, 0xe7, 0x86, 0xa6, -0xfb, 0xfa, 0x15, 0x81, 0xff, 0x00, 0xb6, 0x0b, 0xfe, 0x15, -0x4e, 0x4f, 0x84, 0xfe, 0x10, 0x97, 0xef, 0x78, 0x7e, 0xc7, -0xfe, 0xfd, 0x01, 0x42, 0xa3, 0x9f, 0xc7, 0x6a, 0xd4, 0xdf, -0xac, 0x65, 0xfa, 0x30, 0x58, 0x7e, 0x27, 0x86, 0xd8, 0x8a, -0x32, 0xf5, 0x84, 0x97, 0xe4, 0xce, 0x16, 0x2f, 0x8f, 0x9e, -0x06, 0x97, 0x18, 0xd7, 0x55, 0x73, 0xfd, 0xeb, 0x79, 0x97, -0xf9, 0xa5, 0x5d, 0x87, 0xe3, 0x47, 0x83, 0x67, 0x38, 0x5f, -0x10, 0xda, 0x0f, 0xf7, 0xd8, 0xaf, 0xf3, 0x02, 0xba, 0x19, -0x7e, 0x09, 0xf8, 0x2e, 0x5e, 0xba, 0x0d, 0xb0, 0xfa, 0x2e, -0x2a, 0x8c, 0xbf, 0xb3, 0xf7, 0x81, 0xe6, 0xcf, 0xfc, 0x49, -0xd5, 0x7f, 0xdd, 0x38, 0xa7, 0x7e, 0x20, 0x8f, 0xfc, 0xfa, -0x7f, 0xf8, 0x1a, 0xfd, 0x59, 0x57, 0xe2, 0x88, 0xff, 0x00, -0xcf, 0x87, 0xff, 0x00, 0x81, 0xaf, 0xd5, 0x91, 0xc3, 0xf1, -0x3b, 0xc2, 0x93, 0xfd, 0xdf, 0x12, 0x69, 0x5f, 0x43, 0x79, -0x1a, 0x9f, 0xd4, 0xd5, 0xa8, 0x7c, 0x7f, 0xe1, 0xc9, 0x7e, -0xe6, 0xbf, 0xa6, 0x37, 0xd2, 0xf2, 0x33, 0xff, 0x00, 0xb3, -0x56, 0x5c, 0xff, 0x00, 0xb3, 0x47, 0x82, 0x25, 0x1c, 0x59, -0x4b, 0x1f, 0xfb, 0xb2, 0x55, 0x19, 0xbf, 0x65, 0x7f, 0x05, -0xc9, 0xf7, 0x52, 0xed, 0x3e, 0x92, 0xff, 0x00, 0xf5, 0xa8, -0xf6, 0xf9, 0xf2, 0xde, 0x8d, 0x37, 0xff, 0x00, 0x6f, 0x3f, -0xd5, 0x07, 0xd6, 0x78, 0x9a, 0x3f, 0xf3, 0x0f, 0x49, 0xfa, -0x4e, 0x4b, 0xf4, 0x3a, 0xb4, 0xf1, 0x8e, 0x8d, 0x27, 0xdd, -0xd5, 0xec, 0x4f, 0xd2, 0xe5, 0x3f, 0xc6, 0xa7, 0x8f, 0xc4, -0x9a, 0x6b, 0xfd, 0xdd, 0x46, 0xd5, 0xbe, 0x93, 0xa9, 0xfe, -0xb5, 0xc0, 0xcb, 0xfb, 0x25, 0xf8, 0x49, 0xfe, 0xe5, 0xc5, -0xf4, 0x7f, 0x49, 0x14, 0xff, 0x00, 0x4a, 0xac, 0xdf, 0xb2, -0x47, 0x87, 0xd4, 0xfe, 0xe7, 0x55, 0xd4, 0x22, 0xfa, 0x32, -0xff, 0x00, 0x85, 0x2f, 0xae, 0x67, 0x8b, 0x7c, 0x24, 0x5f, -0xa4, 0xff, 0x00, 0xe0, 0x13, 0xf5, 0xfe, 0x23, 0x8e, 0xf8, -0x28, 0x3f, 0x4a, 0x9f, 0xe7, 0x13, 0xd4, 0x63, 0xd5, 0xad, -0x65, 0xfb, 0x97, 0x31, 0x3f, 0xfb, 0xae, 0x0d, 0x4e, 0x97, -0x22, 0x41, 0x95, 0x60, 0xc3, 0xd4, 0x1a, 0xf2, 0x26, 0xfd, -0x94, 0xed, 0xe2, 0xcf, 0x91, 0xe2, 0x4d, 0x4a, 0x31, 0xff, -0x00, 0x5d, 0x31, 0xfc, 0x85, 0x44, 0xff, 0x00, 0xb3, 0x0d, -0xf4, 0x7f, 0xea, 0x7c, 0x5b, 0xa8, 0xaf, 0xfd, 0xb6, 0x61, -0x4f, 0xfb, 0x47, 0x36, 0x8f, 0xc5, 0x82, 0xfb, 0xa6, 0xbf, -0xc8, 0xa5, 0x9a, 0xe7, 0x71, 0xf8, 0xf2, 0xef, 0xba, 0xa4, -0x7f, 0xc8, 0xf6, 0x61, 0x70, 0x28, 0xfb, 0x47, 0xbd, 0x78, -0x93, 0xfe, 0xcd, 0xfe, 0x24, 0x8b, 0x98, 0x3c, 0x65, 0xa8, -0x0f, 0xfb, 0x7a, 0x71, 0xfd, 0x6a, 0xbc, 0x9f, 0x00, 0x7c, -0x79, 0x17, 0xfa, 0x9f, 0x1a, 0xea, 0x3f, 0x85, 0xf4, 0xa3, -0xfa, 0xd4, 0xbc, 0xdf, 0x31, 0x8e, 0xf8, 0x09, 0x7c, 0xa5, -0x12, 0x1e, 0x7b, 0x9a, 0xc3, 0xe2, 0xcb, 0x27, 0xf2, 0x94, -0x59, 0xee, 0xe2, 0x6a, 0x3c, 0xfa, 0xf0, 0x4f, 0xf8, 0x53, -0x5f, 0x14, 0xed, 0x8f, 0xee, 0x7c, 0x5f, 0x7a, 0xe0, 0x74, -0xdf, 0x78, 0xcd, 0xfc, 0xcd, 0x2a, 0xfc, 0x3d, 0xf8, 0xcb, -0x69, 0xc4, 0x5e, 0x21, 0x92, 0x40, 0x3f, 0xbf, 0x24, 0x6d, -0xff, 0x00, 0xa1, 0x03, 0x53, 0xfd, 0xbb, 0x89, 0x5f, 0x1e, -0x06, 0xa7, 0xca, 0xcf, 0xf5, 0x25, 0x71, 0x26, 0x32, 0x3f, -0x1e, 0x5b, 0x5b, 0xe5, 0xca, 0xff, 0x00, 0x53, 0xdf, 0x7c, -0xef, 0x4a, 0x5f, 0x34, 0x57, 0x81, 0x8f, 0x0f, 0xfc, 0x72, -0xb6, 0x18, 0x5d, 0x4e, 0x39, 0x47, 0xa3, 0x47, 0x6e, 0x7f, -0x5d, 0xb4, 0xa3, 0xfe, 0x17, 0x95, 0xa9, 0x04, 0xc3, 0x6b, -0x73, 0xec, 0xd1, 0x45, 0xfd, 0x31, 0x55, 0xfe, 0xb0, 0xdb, -0xe2, 0xc2, 0x56, 0x5f, 0xf6, 0xe7, 0xf9, 0x32, 0x97, 0x14, -0xdb, 0xe3, 0xc0, 0xd7, 0x5f, 0xf7, 0x0e, 0xff, 0x00, 0x94, -0x8f, 0x7b, 0xf3, 0xa9, 0x44, 0xb9, 0xaf, 0x06, 0x1e, 0x27, -0xf8, 0xd3, 0x69, 0xf7, 0xfc, 0x3b, 0x61, 0x36, 0x3d, 0x61, -0x3f, 0xd2, 0x41, 0x4c, 0x6f, 0x88, 0xbf, 0x17, 0x2d, 0xff, -0x00, 0xd6, 0xf8, 0x42, 0xc9, 0x87, 0xfb, 0x31, 0x48, 0x3f, -0xf6, 0xa1, 0xa7, 0xfe, 0xb2, 0x61, 0x97, 0xc7, 0x4a, 0xa2, -0xff, 0x00, 0xb8, 0x72, 0x2b, 0xfd, 0x6d, 0xc1, 0xc7, 0xe3, -0xa1, 0x55, 0x7a, 0xd3, 0x91, 0xef, 0xe2, 0x60, 0x05, 0x28, -0x9b, 0x3d, 0xeb, 0xe7, 0xb6, 0xf8, 0xc5, 0xf1, 0x26, 0xd8, -0x7e, 0xfb, 0xc1, 0x71, 0x1c, 0x77, 0x51, 0x20, 0xfe, 0xa6, -0xa2, 0x3f, 0x1f, 0xbc, 0x6b, 0x6c, 0x7f, 0x7f, 0xe0, 0xbc, -0x0f, 0xf6, 0x7c, 0xcf, 0xf0, 0xa9, 0xff, 0x00, 0x5a, 0x72, -0xe5, 0xf1, 0x73, 0xaf, 0x58, 0x4b, 0xfc, 0x88, 0xff, 0x00, -0x5d, 0x32, 0x95, 0xf1, 0xf3, 0xaf, 0x5a, 0x73, 0xff, 0x00, -0x23, 0xe8, 0xaf, 0x30, 0x9a, 0x37, 0x9a, 0xf9, 0xe1, 0x3f, -0x69, 0x4d, 0x66, 0x13, 0xfe, 0x91, 0xe1, 0x1b, 0x81, 0xeb, -0xb7, 0x77, 0xf5, 0xab, 0x11, 0xfe, 0xd4, 0xa9, 0x1f, 0xfa, -0xef, 0x0b, 0xdf, 0x0f, 0x5d, 0xae, 0x07, 0xf3, 0xaa, 0x8f, -0x14, 0xe5, 0x2f, 0x7a, 0xb6, 0xf5, 0x52, 0xff, 0x00, 0x22, -0xe3, 0xc6, 0x99, 0x1c, 0xb7, 0xad, 0x6f, 0x58, 0xc9, 0x7e, -0x87, 0xd0, 0x2b, 0x25, 0x2f, 0x99, 0xef, 0x5e, 0x0d, 0x17, -0xed, 0x53, 0xa4, 0x36, 0x7c, 0xdd, 0x12, 0xfe, 0x1f, 0xa9, -0x06, 0xae, 0x41, 0xfb, 0x51, 0x78, 0x61, 0xc0, 0xf3, 0x6d, -0xef, 0xa2, 0xff, 0x00, 0xb6, 0x59, 0xae, 0x88, 0xf1, 0x26, -0x51, 0x2d, 0xb1, 0x11, 0x3a, 0x63, 0xc5, 0xb9, 0x1c, 0xf6, -0xc5, 0x47, 0xe7, 0x75, 0xf9, 0xa3, 0xdb, 0xbc, 0xc1, 0x46, -0xf1, 0x5e, 0x3d, 0x1f, 0xed, 0x35, 0xe0, 0xb2, 0x3e, 0x69, -0xef, 0x50, 0xfb, 0xda, 0xb1, 0xfe, 0x55, 0x61, 0x7f, 0x69, -0x6f, 0x02, 0x9f, 0xbd, 0xa8, 0xdc, 0x27, 0xfb, 0xd6, 0x92, -0x7f, 0x45, 0xae, 0x85, 0x9e, 0xe5, 0x6f, 0xfe, 0x62, 0x61, -0xff, 0x00, 0x81, 0x23, 0xa9, 0x71, 0x26, 0x4a, 0xf6, 0xc5, -0xd3, 0xff, 0x00, 0xc0, 0x91, 0xeb, 0x5e, 0x68, 0xf5, 0xa3, -0xcd, 0xf7, 0xaf, 0x2b, 0x5f, 0xda, 0x3f, 0xc0, 0x0d, 0xd7, -0x5b, 0x75, 0x3e, 0xf6, 0x73, 0xff, 0x00, 0xf1, 0x15, 0x6e, -0x1f, 0x8f, 0xde, 0x03, 0x9c, 0xfc, 0xbe, 0x21, 0x84, 0x7f, -0xbf, 0x14, 0x8b, 0xfc, 0xd6, 0xb4, 0x8e, 0x73, 0x96, 0xcb, -0xe1, 0xc4, 0xc3, 0xff, 0x00, 0x02, 0x5f, 0xe6, 0x6d, 0x1c, -0xff, 0x00, 0x28, 0x9f, 0xc3, 0x8b, 0xa7, 0xff, 0x00, 0x81, -0xc7, 0xfc, 0xcf, 0x4a, 0x0f, 0x9a, 0x5d, 0xd5, 0xc2, 0xc1, -0xf1, 0x93, 0xc1, 0x53, 0x7d, 0xdf, 0x13, 0x69, 0xc3, 0x3f, -0xde, 0x9c, 0x2f, 0xf3, 0xab, 0xf0, 0x7c, 0x4b, 0xf0, 0xa5, -0xc6, 0x3c, 0xaf, 0x13, 0x69, 0x0f, 0x9f, 0x4b, 0xd8, 0xff, -0x00, 0xf8, 0xaa, 0xea, 0x8e, 0x3f, 0x09, 0x3f, 0x86, 0xac, -0x5f, 0xcd, 0x7f, 0x99, 0xd9, 0x0c, 0xcb, 0x03, 0x53, 0xe0, -0xaf, 0x07, 0xff, 0x00, 0x6f, 0x2f, 0xf3, 0x3a, 0xbd, 0xd4, -0xa1, 0xab, 0x0a, 0x0f, 0x17, 0xe8, 0xb7, 0x44, 0x08, 0x75, -0x8b, 0x19, 0x49, 0xec, 0x97, 0x28, 0x7f, 0x91, 0xad, 0x08, -0xaf, 0xa1, 0xb8, 0xc9, 0x8e, 0x68, 0xe4, 0xc7, 0xf7, 0x1c, -0x1a, 0xe9, 0x8d, 0x5a, 0x73, 0xf8, 0x64, 0x9f, 0xcc, 0xec, -0x8d, 0x7a, 0x53, 0xf8, 0x26, 0x9f, 0xa3, 0x45, 0xef, 0x30, -0x52, 0xef, 0xaa, 0xab, 0x32, 0xff, 0x00, 0x78, 0x7e, 0x74, -0xef, 0x39, 0x4f, 0xf1, 0x56, 0x97, 0x46, 0xb7, 0x45, 0x8f, -0x33, 0x34, 0xbb, 0xfd, 0xea, 0xbf, 0x98, 0x3d, 0x69, 0x77, -0x8a, 0x61, 0x72, 0xc6, 0xef, 0x7a, 0x37, 0x7b, 0xd5, 0x7d, -0xe2, 0x97, 0xcc, 0x1e, 0xb4, 0x0c, 0x9f, 0x77, 0xbd, 0x19, -0x35, 0x07, 0x9a, 0x3d, 0x69, 0x43, 0xe6, 0x80, 0x27, 0xdd, -0x46, 0xea, 0x87, 0x75, 0x1b, 0xa8, 0x02, 0x6d, 0xd4, 0xa0, -0xe6, 0xa1, 0x0d, 0x4e, 0xf3, 0x28, 0x02, 0x4a, 0x2a, 0x3d, -0xf4, 0xa1, 0xf3, 0xde, 0x80, 0x24, 0xcd, 0x19, 0xfa, 0xd4, -0x7b, 0xfd, 0xe9, 0x77, 0x7b, 0xd0, 0x03, 0xf3, 0x46, 0x4d, -0x33, 0x75, 0x1b, 0xa8, 0x01, 0xf9, 0x34, 0x6e, 0xa6, 0x6e, -0xa5, 0xdd, 0x40, 0x0e, 0xdd, 0x4a, 0x0e, 0x69, 0x9b, 0xa8, -0x07, 0x34, 0x00, 0xfc, 0xd2, 0xd3, 0x28, 0xa0, 0x07, 0xd1, -0x4c, 0xa2, 0x80, 0x1f, 0x45, 0x37, 0x3f, 0x5a, 0x33, 0xf5, -0xa0, 0x07, 0x51, 0x4d, 0x07, 0xd6, 0x97, 0x34, 0x00, 0xb4, -0x52, 0x66, 0x96, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, -0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, -0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x42, 0x71, 0x4b, 0x4d, 0x3d, -0x68, 0x01, 0x29, 0xa4, 0xd2, 0x93, 0x51, 0xb3, 0x0a, 0x00, -0x47, 0x6a, 0x85, 0xdf, 0x9a, 0x57, 0x6a, 0xad, 0x24, 0x98, -0xef, 0x40, 0x0b, 0x24, 0x98, 0xa7, 0x5a, 0x5b, 0x1b, 0x8f, -0x9d, 0xb8, 0x41, 0xfa, 0xd7, 0x31, 0xa9, 0xf8, 0x89, 0x1b, -0x5b, 0x8b, 0x44, 0xb4, 0x3e, 0x65, 0xfb, 0xa8, 0x96, 0x6d, -0xbc, 0x79, 0x11, 0x1c, 0x80, 0xc4, 0xf4, 0xc9, 0x23, 0x00, -0x75, 0xef, 0xd0, 0x57, 0x6b, 0x6b, 0x18, 0x8a, 0x08, 0xd4, -0x0c, 0x00, 0x31, 0x51, 0x19, 0xa9, 0x36, 0x97, 0x43, 0x38, -0xd4, 0x8c, 0xdb, 0x51, 0xe9, 0xf9, 0x92, 0xaa, 0x84, 0x00, -0x01, 0x80, 0x29, 0x68, 0xa2, 0xac, 0xd0, 0x28, 0xa2, 0xb9, -0xff, 0x00, 0x18, 0xf8, 0xfb, 0x40, 0xf0, 0x06, 0x9e, 0x6f, -0xb5, 0xfd, 0x4a, 0x2d, 0x36, 0xd4, 0x7f, 0x1c, 0x80, 0x9f, -0xd0, 0x02, 0x68, 0x03, 0xa0, 0xa2, 0xbe, 0x27, 0xf8, 0x95, -0xff, 0x00, 0x05, 0x3a, 0xf0, 0x1f, 0x83, 0xef, 0x66, 0x87, -0x4b, 0x91, 0x35, 0x54, 0x8c, 0x90, 0x19, 0x43, 0xae, 0x71, -0xf5, 0x5a, 0xf3, 0x7f, 0x0c, 0xff, 0x00, 0xc1, 0x5a, 0xac, -0xbc, 0x55, 0xe2, 0x28, 0x34, 0xdb, 0x6d, 0x05, 0xf7, 0x4a, -0xc1, 0x41, 0x56, 0x3e, 0xb8, 0xfe, 0xed, 0x00, 0x7e, 0x90, -0x51, 0x5c, 0xe7, 0x87, 0xbc, 0x5d, 0x15, 0xef, 0x84, 0xac, -0x35, 0x9d, 0x48, 0xa6, 0x9e, 0x2e, 0x61, 0x59, 0x4a, 0xc8, -0xdf, 0x77, 0x35, 0x62, 0xd7, 0xc6, 0xba, 0x1d, 0xf4, 0x8b, -0x1c, 0x1a, 0xa5, 0xbc, 0xae, 0xdc, 0x05, 0x56, 0xeb, 0x40, -0x1b, 0x74, 0x52, 0x02, 0x18, 0x64, 0x72, 0x3d, 0x6a, 0x2b, -0x8b, 0x88, 0xed, 0x63, 0x32, 0x48, 0xdb, 0x54, 0x75, 0x26, -0x93, 0x69, 0x2b, 0xb1, 0x36, 0xa2, 0xae, 0xc9, 0xa8, 0xac, -0x31, 0xe3, 0x0d, 0x2c, 0x92, 0x05, 0xc7, 0x4f, 0x63, 0x52, -0x0f, 0x15, 0x69, 0x6d, 0xff, 0x00, 0x2f, 0x03, 0xf2, 0x35, -0xcd, 0xf5, 0xaa, 0x0f, 0xed, 0xaf, 0xbc, 0xe4, 0x58, 0xcc, -0x33, 0xff, 0x00, 0x97, 0x8b, 0xef, 0x46, 0xc5, 0x15, 0x94, -0x3c, 0x4b, 0xa6, 0xb7, 0x4b, 0x91, 0xf9, 0x1a, 0x78, 0xf1, -0x06, 0x9e, 0x7a, 0x5c, 0x2f, 0xe4, 0x6a, 0xd6, 0x22, 0x93, -0xda, 0x4b, 0xef, 0x2d, 0x62, 0x68, 0x3d, 0xa6, 0xbe, 0xf4, -0x69, 0x51, 0x59, 0xe3, 0x5b, 0xb2, 0x6f, 0xf9, 0x6e, 0xb4, -0xf1, 0xab, 0xda, 0x1e, 0x93, 0xad, 0x57, 0xb5, 0xa6, 0xfe, -0xd2, 0xfb, 0xca, 0x55, 0xe9, 0x3f, 0xb4, 0xbe, 0xf2, 0xed, -0x15, 0x50, 0x6a, 0x56, 0xc7, 0xa4, 0xcb, 0x4f, 0x5b, 0xc8, -0x5f, 0xa4, 0x8a, 0x7f, 0x1a, 0xa5, 0x38, 0xbd, 0x99, 0x6a, -0xa4, 0x1e, 0xcd, 0x16, 0x28, 0xa6, 0x23, 0xab, 0x8e, 0x08, -0x34, 0xfa, 0xb3, 0x4b, 0xdc, 0x28, 0xa2, 0x8a, 0x00, 0x28, -0xa2, 0x8a, 0x00, 0x29, 0x31, 0x4b, 0x45, 0x00, 0x26, 0xd1, -0xe8, 0x29, 0x86, 0x25, 0x3d, 0x54, 0x7e, 0x55, 0x25, 0x14, -0xac, 0x85, 0x64, 0xc8, 0x0d, 0xa4, 0x2d, 0xd6, 0x24, 0x3f, -0xf0, 0x1a, 0x63, 0x69, 0x96, 0x8f, 0xd6, 0xda, 0x26, 0xff, -0x00, 0x80, 0x0a, 0xb5, 0x45, 0x4b, 0x84, 0x5e, 0xe8, 0x97, -0x4e, 0x0f, 0x74, 0x8c, 0xe7, 0xf0, 0xfe, 0x9b, 0x2f, 0xde, -0xb1, 0x81, 0xbf, 0xed, 0x98, 0xaa, 0xb2, 0x78, 0x33, 0x44, -0x9b, 0xef, 0xe9, 0x76, 0xcd, 0xff, 0x00, 0x6c, 0xc5, 0x6d, -0xd1, 0x59, 0xbc, 0x3d, 0x29, 0x6f, 0x05, 0xf7, 0x23, 0x19, -0x61, 0xa8, 0x4b, 0xe2, 0x82, 0x7f, 0x24, 0x73, 0x32, 0xfc, -0x37, 0xf0, 0xdc, 0xff, 0x00, 0x7b, 0x48, 0xb6, 0x3f, 0xf0, -0x0a, 0xa7, 0x37, 0xc2, 0x1f, 0x09, 0xcd, 0xf7, 0xb4, 0x88, -0x7f, 0x01, 0x5d, 0x95, 0x15, 0xcf, 0x2c, 0x06, 0x12, 0x5f, -0x15, 0x28, 0xfd, 0xc8, 0xe5, 0x96, 0x59, 0x81, 0x9f, 0xc5, -0x46, 0x2f, 0xfe, 0xdd, 0x47, 0x9f, 0x4b, 0xf0, 0x2b, 0xc1, -0xd2, 0x93, 0x9d, 0x29, 0x17, 0xe8, 0x6a, 0x94, 0xdf, 0xb3, -0xaf, 0x82, 0xa6, 0xff, 0x00, 0x97, 0x07, 0x5f, 0xf7, 0x5f, -0xff, 0x00, 0xad, 0x5e, 0x9d, 0x45, 0x73, 0x4b, 0x27, 0xcb, -0xa5, 0xf1, 0x50, 0x8f, 0xdc, 0x8e, 0x49, 0xe4, 0x39, 0x54, -0xfe, 0x2c, 0x34, 0x3f, 0xf0, 0x14, 0x79, 0x24, 0xbf, 0xb3, -0x1f, 0x82, 0xa4, 0xe9, 0x05, 0xca, 0x7d, 0x24, 0x1f, 0xe1, -0x55, 0x25, 0xfd, 0x95, 0x7c, 0x1d, 0x27, 0x21, 0xaf, 0x13, -0xe9, 0x20, 0xff, 0x00, 0x0a, 0xf6, 0x6a, 0x2b, 0x9e, 0x5c, -0x3f, 0x95, 0x4b, 0x7c, 0x3c, 0x7e, 0xe3, 0x96, 0x5c, 0x2f, -0x92, 0xcf, 0x7c, 0x24, 0x3e, 0xe3, 0xc3, 0x66, 0xfd, 0x92, -0xbc, 0x2c, 0xff, 0x00, 0x72, 0xf2, 0xf5, 0x3f, 0xe0, 0x4b, -0xfe, 0x15, 0x46, 0x5f, 0xd9, 0x0f, 0x43, 0x1f, 0xea, 0xf5, -0x6b, 0xc5, 0x3f, 0x45, 0xaf, 0xa0, 0x28, 0xac, 0x1f, 0x0c, -0xe5, 0x12, 0xff, 0x00, 0x98, 0x75, 0xf8, 0xff, 0x00, 0x99, -0xcd, 0x2e, 0x0f, 0xc8, 0xa5, 0xff, 0x00, 0x30, 0xb1, 0xf9, -0x5d, 0x7e, 0xa7, 0xce, 0xef, 0xfb, 0x24, 0xc2, 0x9f, 0xea, -0x3c, 0x43, 0x75, 0x1d, 0x43, 0x2f, 0xec, 0xb1, 0xaa, 0x47, -0xfe, 0xa3, 0xc5, 0x97, 0x2b, 0xf5, 0x77, 0xfe, 0x86, 0xbe, -0x8e, 0xa2, 0xb1, 0x7c, 0x2b, 0x95, 0x74, 0xa6, 0xd7, 0xa4, -0xa5, 0xfe, 0x66, 0x0f, 0x82, 0xf2, 0x47, 0xf0, 0xd2, 0x6b, -0xd2, 0x52, 0x5f, 0xa9, 0xf3, 0x5f, 0xfc, 0x33, 0x4f, 0x8b, -0x2d, 0x8e, 0x6d, 0xfc, 0x63, 0x28, 0xf4, 0xcc, 0xb2, 0x7f, -0x8d, 0x39, 0x7e, 0x06, 0x7c, 0x4a, 0xb4, 0xe6, 0xdf, 0xc6, -0x1f, 0xf9, 0x15, 0xbf, 0xc2, 0xbe, 0x92, 0xa2, 0xa7, 0xfd, -0x56, 0xc0, 0x2f, 0x81, 0xcd, 0x7a, 0x4e, 0x5f, 0xe6, 0x47, -0xfa, 0x99, 0x96, 0x2f, 0x82, 0x55, 0x23, 0xe9, 0x52, 0x5f, -0xe6, 0x7c, 0xe0, 0x3e, 0x18, 0x7c, 0x60, 0xb4, 0xff, 0x00, -0x55, 0xe2, 0xd0, 0xc3, 0xd3, 0xce, 0x3c, 0xff, 0x00, 0xe3, -0x94, 0xab, 0xe1, 0x0f, 0x8d, 0x56, 0x9d, 0x35, 0xc8, 0x26, -0xff, 0x00, 0x7a, 0x4c, 0xff, 0x00, 0xec, 0xb5, 0xf4, 0x75, -0x15, 0x4b, 0x87, 0x28, 0xaf, 0x86, 0xbd, 0x55, 0xff, 0x00, -0x6f, 0xb2, 0xff, 0x00, 0xd5, 0x3c, 0x3c, 0x7e, 0x0c, 0x4d, -0x65, 0xff, 0x00, 0x71, 0x24, 0x7c, 0xec, 0x2d, 0xfe, 0x37, -0x59, 0x7f, 0xcb, 0x6b, 0x29, 0xbe, 0xab, 0xbb, 0xfa, 0x52, -0x36, 0xbb, 0xf1, 0xb6, 0xdf, 0xad, 0x96, 0x9d, 0x27, 0xd6, -0x0f, 0xf0, 0x35, 0xf4, 0x55, 0x15, 0x7f, 0xd8, 0x53, 0x5f, -0x06, 0x2e, 0xaa, 0xff, 0x00, 0xb7, 0xaf, 0xfa, 0x15, 0xfe, -0xad, 0x4e, 0x3a, 0x53, 0xc7, 0x56, 0x5f, 0xf6, 0xf5, 0xff, -0x00, 0x34, 0x7c, 0xde, 0xfe, 0x3b, 0xf8, 0xcd, 0x6a, 0x7e, -0x7d, 0x13, 0x4e, 0x97, 0xeb, 0x6c, 0xff, 0x00, 0xd1, 0xc5, -0x42, 0xdf, 0x16, 0xbe, 0x2d, 0xdb, 0x9f, 0xde, 0x78, 0x67, -0x4d, 0x61, 0xed, 0x6d, 0x28, 0x3f, 0xfa, 0x32, 0xbe, 0x95, -0xc5, 0x18, 0x1e, 0x95, 0x9b, 0xc8, 0xf1, 0x4b, 0xe1, 0xc7, -0x54, 0xfc, 0x3f, 0xc8, 0xc9, 0xf0, 0xe6, 0x35, 0x7c, 0x19, -0x95, 0x55, 0xff, 0x00, 0x80, 0xbf, 0xd0, 0xf9, 0xa5, 0x7e, -0x3c, 0x7c, 0x44, 0xb6, 0x18, 0xb9, 0xf0, 0x7d, 0xab, 0x9e, -0xfb, 0x04, 0x8b, 0xfd, 0x4d, 0x4c, 0xbf, 0xb4, 0x9f, 0x89, -0xed, 0xff, 0x00, 0xe3, 0xe3, 0xc0, 0xc4, 0xff, 0x00, 0xbb, -0x70, 0xeb, 0xff, 0x00, 0xb2, 0x1a, 0xfa, 0x43, 0x68, 0xf4, -0x1f, 0x95, 0x30, 0xc4, 0x87, 0xaa, 0xaf, 0xe5, 0x49, 0x65, -0x19, 0x9c, 0x7e, 0x1c, 0xc2, 0x5f, 0x38, 0xc5, 0x82, 0xc8, -0xb3, 0x88, 0x7c, 0x19, 0xa4, 0xfe, 0x70, 0x83, 0x3e, 0x78, -0x4f, 0xda, 0x96, 0xf5, 0x48, 0x13, 0xf8, 0x22, 0xea, 0x31, -0xdf, 0x65, 0xd6, 0xef, 0xe7, 0x18, 0xab, 0x10, 0xfe, 0xd5, -0xd6, 0x23, 0xfe, 0x3e, 0x7c, 0x2f, 0xaa, 0x45, 0xfe, 0xe3, -0x2b, 0x7f, 0x3c, 0x57, 0xbd, 0xb5, 0x94, 0x0f, 0xd6, 0x18, -0xcf, 0xd5, 0x45, 0x44, 0xfa, 0x3d, 0x94, 0x9f, 0x7a, 0xca, -0x03, 0xf5, 0x8d, 0x6a, 0x96, 0x5f, 0x9c, 0xc7, 0x6c, 0x72, -0x7e, 0xb4, 0xe3, 0xfa, 0x58, 0xa5, 0x95, 0xf1, 0x04, 0x76, -0xcc, 0x53, 0xf5, 0xa5, 0x1f, 0xd2, 0xc7, 0x8a, 0xa7, 0xed, -0x61, 0xe1, 0x90, 0x3f, 0x79, 0xa3, 0xeb, 0x71, 0x9f, 0xfa, -0xe3, 0x19, 0x1f, 0xfa, 0x32, 0xa6, 0x4f, 0xda, 0xbb, 0xc2, -0x0d, 0xf7, 0xad, 0x75, 0x68, 0xff, 0x00, 0xde, 0xb7, 0x5f, -0xe8, 0xf5, 0xeb, 0xb2, 0x78, 0x63, 0x48, 0x97, 0xef, 0x69, -0x96, 0x8d, 0xf5, 0x85, 0x7f, 0xc2, 0xab, 0x49, 0xe0, 0x6f, -0x0f, 0x4b, 0xf7, 0xf4, 0x5b, 0x16, 0xfa, 0xdb, 0xaf, 0xf8, -0x55, 0x7d, 0x5b, 0x3d, 0x5b, 0x62, 0x60, 0xfd, 0x60, 0xff, -0x00, 0x46, 0x53, 0xc1, 0xf1, 0x2c, 0x7e, 0x1c, 0x5d, 0x37, -0xeb, 0x4d, 0xff, 0x00, 0xf2, 0x47, 0x99, 0x27, 0xed, 0x4f, -0xe0, 0xa6, 0xfb, 0xc7, 0x50, 0x4f, 0xad, 0xaf, 0xff, 0x00, -0x5e, 0xac, 0xc1, 0xfb, 0x4e, 0x78, 0x1e, 0x62, 0x01, 0xbc, -0xb9, 0x8f, 0x3f, 0xdf, 0xb7, 0x22, 0xbb, 0x99, 0x7e, 0x19, -0xf8, 0x56, 0x6e, 0x5f, 0x40, 0xd3, 0xce, 0x7f, 0xe9, 0x82, -0xff, 0x00, 0x85, 0x54, 0x97, 0xe0, 0xf7, 0x83, 0xa5, 0xce, -0x7c, 0x3f, 0x62, 0x33, 0xe9, 0x08, 0x1f, 0xd2, 0xa7, 0xd9, -0x71, 0x02, 0xda, 0xad, 0x27, 0xff, 0x00, 0x6e, 0xcb, 0xfc, -0xc5, 0xec, 0x78, 0xa2, 0x3f, 0xf2, 0xfa, 0x8b, 0xff, 0x00, -0xb7, 0x24, 0xbf, 0xf6, 0xe3, 0x0a, 0x1f, 0xda, 0x17, 0xc0, -0xb3, 0x01, 0xff, 0x00, 0x13, 0xa4, 0x8f, 0x3f, 0xdf, 0x52, -0x2a, 0xfc, 0x3f, 0x1b, 0xfc, 0x0d, 0x3f, 0xdd, 0xf1, 0x1d, -0x9f, 0xe2, 0xc7, 0xfc, 0x29, 0x65, 0xf8, 0x15, 0xe0, 0x99, -0x3f, 0xe6, 0x07, 0x6c, 0xbf, 0xee, 0xa0, 0x15, 0x52, 0x5f, -0xd9, 0xeb, 0xc1, 0x52, 0xf4, 0xd2, 0xd1, 0x7f, 0xdd, 0xaa, -0x4f, 0x3f, 0x8e, 0xea, 0x93, 0xff, 0x00, 0xc0, 0x91, 0x6a, -0x5c, 0x4f, 0x1d, 0xd5, 0x19, 0x7f, 0xe0, 0x68, 0xd8, 0x83, -0xe2, 0xa7, 0x84, 0xee, 0x7f, 0xd5, 0xeb, 0xd6, 0x6d, 0xff, -0x00, 0x6d, 0x2b, 0x4a, 0x0f, 0x1b, 0xe8, 0x37, 0x1f, 0xea, -0xf5, 0x8b, 0x23, 0xff, 0x00, 0x6d, 0xd4, 0x7f, 0x5a, 0xe2, -0x26, 0xfd, 0x9a, 0xbc, 0x1b, 0x37, 0x4b, 0x46, 0x4f, 0xa5, -0x50, 0x9b, 0xf6, 0x59, 0xf0, 0x9c, 0x9f, 0x74, 0xca, 0x9f, -0x4a, 0xaf, 0xac, 0x67, 0x91, 0xde, 0x85, 0x37, 0xe9, 0x26, -0xbf, 0x41, 0xac, 0x57, 0x12, 0x43, 0x7c, 0x35, 0x39, 0x7a, -0x4d, 0xaf, 0xcd, 0x33, 0xd4, 0x53, 0xc4, 0x7a, 0x5c, 0x9f, -0x73, 0x52, 0xb4, 0x6f, 0xa4, 0xeb, 0xfe, 0x35, 0x61, 0x35, -0x3b, 0x59, 0x31, 0xb2, 0xe6, 0x16, 0xfa, 0x38, 0x35, 0xe3, -0x12, 0xfe, 0xc9, 0x9e, 0x1b, 0x71, 0xf2, 0x5e, 0x5c, 0x27, -0xfc, 0x07, 0xff, 0x00, 0xaf, 0x54, 0xe5, 0xfd, 0x90, 0xf4, -0x57, 0xfb, 0x9a, 0xb4, 0xeb, 0xff, 0x00, 0x6c, 0xc1, 0xfe, -0xb5, 0x2f, 0x1b, 0x9d, 0x2f, 0xf9, 0x83, 0x8b, 0xff, 0x00, -0xb8, 0x8b, 0xff, 0x00, 0x91, 0x25, 0xe6, 0x3c, 0x43, 0x1f, -0xf9, 0x80, 0x8b, 0xf4, 0xaa, 0xbf, 0x58, 0x9e, 0xf2, 0x27, -0x42, 0x38, 0x70, 0x7f, 0x1a, 0x76, 0xfc, 0xf7, 0xaf, 0x9d, -0x6e, 0x3f, 0x64, 0x18, 0x06, 0x4d, 0xae, 0xbf, 0x24, 0x6d, -0xdb, 0xf7, 0x58, 0xfe, 0xb5, 0x97, 0x7d, 0xf0, 0x27, 0xe2, -0x57, 0x86, 0xb9, 0xd0, 0x7c, 0x61, 0x78, 0xf1, 0xa8, 0xe1, -0x05, 0xdb, 0xa2, 0xfd, 0x36, 0x96, 0xc7, 0xe9, 0x59, 0xff, -0x00, 0x6b, 0x66, 0x74, 0xf5, 0xad, 0x80, 0x76, 0xfe, 0xec, -0xd4, 0xbf, 0x0b, 0x23, 0x2f, 0xed, 0xcc, 0xe2, 0x8e, 0xb8, -0x8c, 0xb2, 0x56, 0xfe, 0xec, 0xe3, 0x2f, 0xc2, 0xc8, 0xfa, -0x7f, 0x76, 0x68, 0xc9, 0xaf, 0x98, 0xf4, 0xdf, 0x19, 0xfc, -0x6b, 0xf0, 0x30, 0xd9, 0xa9, 0x68, 0xb0, 0x78, 0x8e, 0xd5, -0x33, 0xcb, 0xcf, 0x1a, 0xb9, 0xff, 0x00, 0x81, 0x03, 0x9f, -0xd2, 0xba, 0x8d, 0x0f, 0xf6, 0xb1, 0xf0, 0xe2, 0x07, 0x87, -0xc5, 0xd6, 0x17, 0xbe, 0x0f, 0xbd, 0x4f, 0xe1, 0x9e, 0x26, -0xb8, 0x85, 0xff, 0x00, 0xdd, 0x78, 0xd4, 0x9f, 0xcd, 0x47, -0xd6, 0xbd, 0x1a, 0x19, 0xd6, 0x1a, 0xa5, 0x95, 0x54, 0xe9, -0xbf, 0xef, 0xa6, 0xbf, 0x1d, 0xbf, 0x13, 0xd5, 0xc3, 0xf1, -0x06, 0x12, 0xad, 0x95, 0x75, 0x2a, 0x52, 0xed, 0x38, 0xb8, -0xfe, 0x3f, 0x0f, 0xe2, 0x7b, 0xb7, 0x5a, 0x2b, 0x2b, 0x41, -0xf1, 0x1e, 0x9b, 0xe2, 0x7d, 0x32, 0x1d, 0x43, 0x4a, 0xbc, -0x86, 0xfe, 0xca, 0x51, 0x94, 0x9a, 0x16, 0xca, 0x91, 0x5a, -0x3b, 0xab, 0xdc, 0x8c, 0x94, 0x97, 0x34, 0x5d, 0xd1, 0xf4, -0x91, 0x92, 0x9a, 0x52, 0x8b, 0xba, 0x64, 0xa0, 0xe2, 0x8d, -0xd4, 0xc0, 0x71, 0x4a, 0x0e, 0x6a, 0x8a, 0x1e, 0x0e, 0x69, -0x69, 0x94, 0xb9, 0xc5, 0x00, 0x3a, 0x8a, 0x4c, 0xd2, 0xd0, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x84, 0xe2, 0x80, 0x10, 0x9a, 0x42, 0x71, 0x45, 0x35, -0x8d, 0x00, 0x35, 0x8e, 0x0d, 0x45, 0x23, 0x01, 0x4e, 0x66, -0xa8, 0x24, 0x6a, 0x00, 0x64, 0x8f, 0x8c, 0xf3, 0x58, 0x7e, -0x23, 0xd7, 0xed, 0x3c, 0x39, 0xa3, 0x5f, 0x6a, 0x97, 0xd2, -0x88, 0x6c, 0xec, 0xe1, 0x79, 0xe5, 0x73, 0xd9, 0x54, 0x64, -0xfd, 0x4f, 0xb7, 0x7a, 0xd4, 0x99, 0xfd, 0xeb, 0xe6, 0x8f, -0xdb, 0x2f, 0xc5, 0xf7, 0x56, 0xfa, 0x27, 0x87, 0xfc, 0x27, -0x64, 0xcc, 0xb2, 0xeb, 0xd7, 0x44, 0x4a, 0x57, 0xbc, 0x48, -0x57, 0x23, 0xf1, 0x66, 0x5f, 0xc2, 0xb8, 0x71, 0xd8, 0x95, -0x84, 0xc3, 0xce, 0xb7, 0x65, 0xa7, 0xaf, 0x4f, 0xc4, 0xf3, -0x73, 0x1c, 0x5a, 0xc0, 0xe1, 0x2a, 0x62, 0x3a, 0xa5, 0xa7, -0xae, 0xcb, 0xf1, 0x3b, 0x6f, 0xd9, 0xf6, 0xe2, 0xf3, 0xc4, -0xd6, 0x57, 0x9e, 0x2b, 0xd4, 0x97, 0xfd, 0x3b, 0x59, 0x9c, -0xcf, 0x83, 0xff, 0x00, 0x2c, 0xe2, 0x1c, 0x46, 0x83, 0xd8, -0x0f, 0xd7, 0x27, 0xbd, 0x7b, 0xd4, 0x59, 0xf2, 0xc6, 0x6b, -0xcf, 0xfe, 0x18, 0x68, 0x29, 0xa2, 0x78, 0x76, 0xc2, 0xcd, -0x17, 0x6a, 0xc3, 0x0a, 0xa6, 0x3e, 0x82, 0xbd, 0x08, 0x0c, -0x00, 0x2a, 0xf0, 0x94, 0xdd, 0x2a, 0x10, 0x84, 0xb7, 0xb6, -0xbe, 0xaf, 0x57, 0xf8, 0x97, 0x81, 0xa2, 0xe8, 0x61, 0xa1, -0x09, 0x6a, 0xed, 0xaf, 0xab, 0xd5, 0xfe, 0x22, 0xd1, 0x45, -0x23, 0x30, 0x45, 0x2c, 0x4e, 0x00, 0x19, 0x26, 0xba, 0xce, -0xf3, 0x93, 0xf8, 0x9d, 0xf1, 0x1f, 0x49, 0xf8, 0x59, 0xe1, -0x4b, 0x9d, 0x73, 0x58, 0x9d, 0x60, 0xb6, 0x8b, 0x80, 0x5b, -0xb9, 0xf4, 0xaf, 0xc4, 0x2f, 0xdb, 0x07, 0xf6, 0xd5, 0xf1, -0x0f, 0xc5, 0xbf, 0x15, 0xea, 0x36, 0x16, 0x57, 0xec, 0x34, -0x68, 0xe6, 0x65, 0x89, 0x11, 0xd8, 0x71, 0xf4, 0xcd, 0x7d, -0x1b, 0xff, 0x00, 0x05, 0x5c, 0xfd, 0xa3, 0xe5, 0xbc, 0x4d, -0x33, 0xc2, 0x1a, 0x4d, 0xca, 0xc6, 0xab, 0x2b, 0x34, 0xc1, -0x5b, 0x24, 0x81, 0x5f, 0x0d, 0x7e, 0xcf, 0xdf, 0xb3, 0x8f, -0x88, 0xfe, 0x3f, 0x6b, 0xed, 0x06, 0x97, 0x14, 0x85, 0x16, -0x41, 0xe6, 0x48, 0x22, 0x2e, 0x0e, 0x4d, 0x00, 0x78, 0xfc, -0xb7, 0x93, 0xcc, 0xec, 0xcf, 0x33, 0xb1, 0x27, 0x27, 0x2c, -0x6b, 0xe8, 0x3f, 0xd8, 0x9b, 0xc0, 0xad, 0xe3, 0x5f, 0x8c, -0x5a, 0x2d, 0xbb, 0x21, 0x91, 0x5a, 0xe1, 0x78, 0xf6, 0x07, -0x35, 0xdd, 0x7e, 0xd4, 0xff, 0x00, 0xb2, 0xd0, 0xfd, 0x9f, -0x3c, 0x1f, 0x13, 0xdf, 0xa0, 0x17, 0x92, 0x9d, 0xa0, 0x95, -0x2a, 0x7a, 0x7d, 0x6b, 0xd9, 0x7f, 0xe0, 0x92, 0xff, 0x00, -0x0d, 0xff, 0x00, 0xb4, 0xfc, 0x7f, 0xfd, 0xb1, 0x2c, 0x4c, -0x62, 0xb3, 0xb7, 0x69, 0x37, 0x11, 0xc6, 0xe2, 0x78, 0xe6, -0x80, 0x3e, 0xa0, 0xff, 0x00, 0x82, 0x8f, 0x7c, 0x44, 0xd4, -0x7e, 0x12, 0xfc, 0x24, 0xd3, 0x6d, 0xf4, 0x76, 0x92, 0x39, -0x5d, 0x52, 0x15, 0x11, 0x39, 0x5c, 0x28, 0xc0, 0x3d, 0x08, -0xaf, 0x87, 0x7f, 0x65, 0x2f, 0xda, 0x2f, 0xc4, 0x5e, 0x2b, -0xf8, 0xa9, 0x61, 0x6b, 0x73, 0x7b, 0x70, 0xf0, 0xc6, 0xc3, -0x2a, 0xf2, 0xb1, 0x04, 0xe7, 0xeb, 0x5f, 0x55, 0xff, 0x00, -0xc1, 0x57, 0xfc, 0x45, 0x04, 0x1e, 0x13, 0xf2, 0x9d, 0xc1, -0x68, 0x63, 0xda, 0x8a, 0x5b, 0xf8, 0x8f, 0xff, 0x00, 0xae, -0xbe, 0x10, 0xff, 0x00, 0x82, 0x7f, 0x68, 0x72, 0xeb, 0xff, -0x00, 0x1b, 0xf4, 0x8b, 0x48, 0xd4, 0xb6, 0xf9, 0x95, 0xdc, -0x81, 0x9e, 0x01, 0x14, 0x01, 0xfb, 0xef, 0xa0, 0xb3, 0xc9, -0xa3, 0x59, 0xbc, 0x9f, 0x7d, 0xa2, 0x56, 0x3f, 0x88, 0xae, -0x63, 0xe2, 0x66, 0xa8, 0xd6, 0x3a, 0x43, 0x84, 0x72, 0xac, -0x47, 0x6a, 0xec, 0xe2, 0x8c, 0x45, 0x12, 0x22, 0xfd, 0xd5, -0x00, 0x0a, 0xf2, 0x3f, 0x8b, 0x7a, 0x8f, 0x99, 0x32, 0xdb, -0x83, 0xc1, 0x35, 0xe1, 0x67, 0x55, 0xfd, 0x86, 0x0a, 0x72, -0x5b, 0xbd, 0x0f, 0x9b, 0xe2, 0x1c, 0x4f, 0xd5, 0xb2, 0xfa, -0x92, 0x4f, 0x57, 0xa1, 0xe7, 0xab, 0x7d, 0x74, 0x3f, 0xe5, -0xbb, 0x53, 0xd7, 0x53, 0xbb, 0x5f, 0xf9, 0x6c, 0x7f, 0x3a, -0xaf, 0x45, 0x7e, 0x38, 0xa7, 0x3e, 0xec, 0xfc, 0x05, 0x54, -0x9a, 0xda, 0x4f, 0xef, 0x2d, 0xae, 0xb1, 0x7a, 0xbf, 0xf2, -0xd4, 0xfe, 0x75, 0x20, 0xd7, 0x6f, 0x87, 0xfc, 0xb5, 0xfd, -0x6a, 0x85, 0x15, 0x4a, 0xad, 0x45, 0xb4, 0x99, 0x6a, 0xbd, -0x55, 0xb4, 0xdf, 0xde, 0x68, 0xaf, 0x88, 0xef, 0x94, 0xff, -0x00, 0xac, 0x3f, 0x9d, 0x48, 0x3c, 0x51, 0x7e, 0xbf, 0xc6, -0x4f, 0xe3, 0x59, 0x54, 0x55, 0x2c, 0x45, 0x65, 0xb4, 0xd9, -0x6b, 0x15, 0x88, 0x5b, 0x54, 0x66, 0xca, 0xf8, 0xbe, 0xf9, -0x7f, 0x88, 0xfe, 0x75, 0x3c, 0x7e, 0x38, 0xbd, 0x8f, 0xbb, -0x7e, 0x75, 0xcf, 0xd1, 0x5a, 0xac, 0x66, 0x22, 0x3b, 0x4d, -0x9a, 0xc7, 0x1f, 0x8a, 0x8e, 0xd5, 0x19, 0xdf, 0x68, 0xff, -0x00, 0x13, 0xae, 0x60, 0x70, 0x1d, 0x72, 0x3d, 0xeb, 0xbe, -0xd0, 0xbc, 0x6f, 0x06, 0xaa, 0xca, 0xae, 0x52, 0x32, 0x6b, -0xc0, 0xea, 0x6b, 0x4b, 0xc9, 0x6c, 0xa5, 0x12, 0x2b, 0xb7, -0x1d, 0xb3, 0x5e, 0xd6, 0x0f, 0x3e, 0xc5, 0x61, 0xda, 0x55, -0x1f, 0x34, 0x4f, 0xa2, 0xc0, 0x71, 0x36, 0x33, 0x0b, 0x24, -0xaa, 0xbe, 0x68, 0x9f, 0x4e, 0xa3, 0x87, 0x01, 0x94, 0x82, -0x0f, 0x43, 0x4f, 0xae, 0x13, 0xe1, 0xf7, 0x8b, 0x7f, 0xb4, -0xed, 0x52, 0x09, 0x88, 0x56, 0x5e, 0x06, 0x4f, 0x5a, 0xee, -0xeb, 0xf5, 0x1c, 0x26, 0x26, 0x18, 0xba, 0x4a, 0xad, 0x3d, -0x99, 0xfb, 0x36, 0x0b, 0x19, 0x4f, 0x1d, 0x42, 0x35, 0xa9, -0x3d, 0x18, 0x55, 0x4d, 0x46, 0xed, 0x6c, 0x2c, 0x67, 0x9d, -0xba, 0x46, 0x85, 0xbf, 0x4a, 0xb7, 0x5c, 0xc7, 0xc4, 0x2b, -0xbf, 0xb2, 0xf8, 0x66, 0xec, 0x67, 0x05, 0xe3, 0x20, 0x1f, -0xc2, 0xaf, 0x13, 0x57, 0xd8, 0xd1, 0x9d, 0x4e, 0xc9, 0x97, -0x8c, 0xad, 0xf5, 0x7c, 0x3c, 0xea, 0xf6, 0x4d, 0x9c, 0x6b, -0x7c, 0x52, 0x6f, 0x31, 0xb1, 0x28, 0xc6, 0x6a, 0x64, 0xf8, -0xa4, 0xdf, 0xf3, 0xd0, 0x57, 0x95, 0xed, 0x19, 0xe9, 0x46, -0xc1, 0xe9, 0x5f, 0x92, 0xac, 0xf7, 0x1b, 0xfc, 0xc7, 0xe1, -0xab, 0x89, 0x33, 0x14, 0xef, 0xce, 0x7a, 0xda, 0x7c, 0x51, -0xf5, 0x75, 0xa9, 0xe3, 0xf8, 0x9e, 0xbe, 0xa8, 0x7f, 0x0a, -0xf1, 0xdd, 0x82, 0x8d, 0xa2, 0xb4, 0x5c, 0x41, 0x8d, 0x5d, -0x4d, 0xe3, 0xc5, 0x19, 0x82, 0xfb, 0x47, 0xb4, 0xaf, 0xc4, -0xd8, 0x8f, 0x5d, 0x95, 0x32, 0xfc, 0x48, 0x80, 0xf5, 0xdb, -0x5e, 0x21, 0xb7, 0xdc, 0xd1, 0x82, 0x3f, 0x88, 0xd6, 0xcb, -0x88, 0xf1, 0x88, 0xde, 0x3c, 0x5b, 0x8f, 0x5b, 0x9e, 0xea, -0xbf, 0x11, 0x2d, 0x4f, 0x5d, 0xb5, 0x32, 0xf8, 0xfe, 0xcc, -0xfa, 0x57, 0x82, 0x86, 0x71, 0xfc, 0x66, 0x9c, 0x25, 0x94, -0x74, 0x90, 0xd6, 0xcb, 0x89, 0xb1, 0x4b, 0x74, 0x6f, 0x1e, -0x30, 0xc6, 0x2d, 0xe2, 0x7b, 0xf2, 0xf8, 0xea, 0xc8, 0xf7, -0x1f, 0x9d, 0x4a, 0xbe, 0x35, 0xb0, 0x3d, 0x5e, 0xbe, 0x7e, -0x17, 0x13, 0x0f, 0xf9, 0x6a, 0xd4, 0xa2, 0xf2, 0xe9, 0x7a, -0x4c, 0x6b, 0x55, 0xc5, 0x15, 0xd6, 0xf1, 0x37, 0x8f, 0x19, -0xe2, 0x56, 0xf0, 0x3e, 0x85, 0x4f, 0x17, 0x58, 0x37, 0xfc, -0xb4, 0xab, 0x56, 0x9a, 0xf5, 0xa5, 0xec, 0xbb, 0x23, 0x93, -0x2d, 0x5f, 0x39, 0x0d, 0x42, 0xec, 0x74, 0x98, 0xd7, 0x79, -0xf0, 0xb3, 0xed, 0x37, 0x97, 0xcf, 0x24, 0x8e, 0x59, 0x73, -0x8a, 0xf4, 0xf0, 0x5c, 0x43, 0x53, 0x17, 0x5e, 0x34, 0x79, -0x37, 0x3d, 0x7c, 0xbb, 0x8a, 0x6b, 0x63, 0x71, 0x30, 0xc3, -0xfb, 0x3d, 0xcf, 0x63, 0xa2, 0x8a, 0x2b, 0xee, 0xcf, 0xd2, -0xc2, 0x8a, 0x29, 0x92, 0x48, 0x22, 0x52, 0xcc, 0x70, 0xa2, -0x81, 0x37, 0x6d, 0x58, 0xfa, 0x4c, 0xe2, 0xb9, 0xbd, 0x6b, -0xc6, 0x96, 0x5a, 0x62, 0x61, 0x65, 0x47, 0x7f, 0x4c, 0xd7, -0x03, 0xac, 0xfc, 0x54, 0xb9, 0x97, 0x74, 0x71, 0x2e, 0x07, -0xb5, 0x78, 0xb8, 0xbc, 0xdf, 0x09, 0x84, 0xd2, 0x72, 0xbb, -0xf2, 0x3e, 0x7f, 0x1b, 0x9e, 0xe0, 0xb0, 0x3a, 0x4e, 0x77, -0x7d, 0x91, 0xeb, 0xc6, 0x78, 0xc7, 0x57, 0x5f, 0xce, 0xa1, -0x7d, 0x4a, 0xda, 0x3e, 0xb2, 0xaf, 0xe7, 0x5e, 0x01, 0x73, -0xe3, 0x1b, 0xdb, 0x90, 0x7f, 0x78, 0xe8, 0x4d, 0x50, 0x6d, -0x62, 0xf5, 0x8e, 0x7e, 0xd2, 0xff, 0x00, 0x9d, 0x7c, 0xed, -0x4e, 0x2a, 0xa6, 0xbe, 0x0a, 0x77, 0x3e, 0x52, 0xa7, 0x1a, -0xd2, 0x5f, 0xc3, 0xa4, 0xdf, 0xcc, 0xfa, 0x34, 0x6a, 0x96, -0xc7, 0xa4, 0x8b, 0x52, 0x25, 0xec, 0x32, 0x1c, 0x2c, 0x80, -0xd7, 0xcd, 0xcb, 0xad, 0x5f, 0xaf, 0x4b, 0xa7, 0xa9, 0xa0, -0xf1, 0x2e, 0xa5, 0x13, 0x03, 0xf6, 0x96, 0xa8, 0x8f, 0x15, -0x47, 0xed, 0x53, 0x64, 0x43, 0x8d, 0x60, 0xdf, 0xbd, 0x49, -0x9f, 0x49, 0x67, 0x34, 0xb5, 0xe1, 0x5a, 0x6f, 0xc4, 0x3b, -0xdb, 0x62, 0x3c, 0xd9, 0xc9, 0x15, 0xdd, 0xf8, 0x7b, 0xe2, -0x25, 0xad, 0xe2, 0x84, 0x99, 0xc1, 0x73, 0xef, 0x5e, 0xee, -0x17, 0x3d, 0xc2, 0x62, 0x9a, 0x8d, 0xf9, 0x5f, 0x99, 0xf4, -0x98, 0x2e, 0x24, 0xc1, 0x63, 0x1a, 0x8d, 0xf9, 0x5f, 0x99, -0xdd, 0x51, 0x50, 0x5b, 0x5c, 0xa5, 0xdc, 0x61, 0xd0, 0xe5, -0x4d, 0x4f, 0x5f, 0x42, 0x9a, 0x92, 0xba, 0x3e, 0xa9, 0x35, -0x25, 0x74, 0x14, 0x51, 0x45, 0x31, 0x85, 0x14, 0x51, 0x40, -0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x9d, 0x2a, 0xbd, 0xd5, -0xf4, 0x36, 0x71, 0x97, 0x91, 0xc2, 0x81, 0xef, 0x49, 0xb5, -0x15, 0x76, 0x4c, 0xa4, 0xa2, 0xaf, 0x26, 0x59, 0xa2, 0xb9, -0xe9, 0xbc, 0x6d, 0xa6, 0xc1, 0xf7, 0xa4, 0x03, 0xf1, 0xaa, -0x13, 0x7c, 0x4a, 0xd2, 0xd3, 0x81, 0x20, 0x3f, 0x56, 0xae, -0x19, 0x63, 0xf0, 0xb0, 0xf8, 0xaa, 0x23, 0xce, 0x9e, 0x67, -0x83, 0xa7, 0xf1, 0x55, 0x5f, 0x79, 0xd8, 0x51, 0x5c, 0x62, -0xfc, 0x4a, 0xd3, 0xcf, 0xfc, 0xb4, 0x4f, 0xce, 0xa7, 0x8b, -0xe2, 0x1e, 0x9c, 0xe7, 0xfd, 0x6a, 0x7f, 0xdf, 0x55, 0x0b, -0x32, 0xc2, 0x4b, 0x6a, 0x88, 0xce, 0x39, 0xb6, 0x06, 0x5b, -0x55, 0x5f, 0x79, 0xd6, 0x51, 0x58, 0xb6, 0xbe, 0x2b, 0xd3, -0xae, 0x71, 0x8b, 0x84, 0x04, 0xff, 0x00, 0xb5, 0x5a, 0x09, -0xa8, 0xda, 0xcb, 0xf7, 0x27, 0x43, 0xf8, 0xd7, 0x5c, 0x2b, -0xd2, 0x9e, 0xb1, 0x92, 0x7f, 0x33, 0xbe, 0x18, 0x8a, 0x35, -0x15, 0xe1, 0x34, 0xfe, 0x65, 0xaa, 0x6b, 0x8d, 0xca, 0x41, -0xa1, 0x18, 0x30, 0xc8, 0x39, 0xfa, 0x52, 0x48, 0xdb, 0x50, -0x9a, 0xdc, 0xe8, 0x39, 0xdd, 0x5e, 0x15, 0x65, 0x60, 0x54, -0x66, 0xbc, 0xb3, 0xc6, 0xbe, 0x12, 0xd3, 0x35, 0xb8, 0x5e, -0x2b, 0xdb, 0x18, 0x6e, 0x14, 0xff, 0x00, 0x7d, 0x01, 0x3f, -0x9d, 0x7a, 0x9e, 0xab, 0x20, 0x20, 0xd7, 0x0f, 0xae, 0x30, -0x65, 0x6a, 0x89, 0xd3, 0x85, 0x45, 0xcb, 0x35, 0x74, 0x67, -0x3a, 0x50, 0xab, 0x1e, 0x59, 0xc5, 0x35, 0xe6, 0x7c, 0xff, -0x00, 0x6f, 0xa1, 0x6b, 0x5f, 0x08, 0xb5, 0xb5, 0xd5, 0xfc, -0x15, 0xa8, 0xcf, 0x0a, 0x23, 0x16, 0x97, 0x47, 0xb9, 0x94, -0x9b, 0x3b, 0x80, 0x7a, 0xab, 0x2f, 0x18, 0x3e, 0x8c, 0x39, -0x06, 0xbe, 0x9f, 0xf8, 0x5d, 0xf1, 0x3b, 0x4e, 0xf8, 0x9b, -0xa0, 0x7d, 0xae, 0xd5, 0xd6, 0x1d, 0x46, 0xdc, 0x88, 0xaf, -0xec, 0x0e, 0x43, 0xdb, 0x4d, 0x80, 0x4a, 0x9c, 0xf5, 0x1e, -0x8c, 0x38, 0x3d, 0x8f, 0x07, 0x1e, 0x25, 0xe2, 0x68, 0xc3, -0x23, 0xf3, 0x5e, 0x31, 0xa9, 0xf8, 0xaf, 0x50, 0xf8, 0x7b, -0xe2, 0x28, 0xb5, 0xfd, 0x26, 0xe3, 0xec, 0xd7, 0xf6, 0xed, -0x9c, 0x91, 0x95, 0x95, 0x7b, 0xa3, 0x0e, 0xea, 0x7a, 0x7f, -0x2c, 0x1a, 0xe3, 0xa7, 0x86, 0x8e, 0x16, 0xee, 0x8e, 0x91, -0xed, 0xd3, 0xe5, 0xd8, 0xe0, 0xa5, 0x84, 0x86, 0x0a, 0xee, -0x86, 0x91, 0xeb, 0x1e, 0x9f, 0x2e, 0xc7, 0xe8, 0x40, 0x7c, -0xd3, 0x95, 0xab, 0xce, 0x3e, 0x0c, 0x7c, 0x65, 0xd1, 0xbe, -0x33, 0x78, 0x55, 0x75, 0x5d, 0x36, 0x44, 0x8e, 0xee, 0x22, -0x23, 0xbd, 0xb1, 0xde, 0x19, 0xed, 0xa4, 0xf4, 0x3d, 0xf0, -0x7a, 0x83, 0x8e, 0x45, 0x7a, 0x08, 0x71, 0x5d, 0xc9, 0xa9, -0x2b, 0xa3, 0xd1, 0x8c, 0x94, 0x95, 0xd1, 0x63, 0x39, 0xa7, -0x66, 0xa1, 0x56, 0xe2, 0x9e, 0x1a, 0x99, 0x44, 0x94, 0xa0, -0xd3, 0x41, 0xcf, 0x7a, 0x5a, 0x00, 0x7d, 0x14, 0xd0, 0x69, -0xd4, 0x00, 0x51, 0x45, 0x14, 0x00, 0x53, 0x4f, 0x5a, 0x53, -0xd2, 0x9b, 0x40, 0x06, 0x71, 0x51, 0xb9, 0xa7, 0x31, 0xa8, -0xd9, 0xb8, 0xa0, 0x08, 0xdf, 0xbd, 0x55, 0x95, 0xf1, 0x9a, -0x9a, 0x56, 0xe2, 0xa9, 0xca, 0xf4, 0x01, 0x04, 0xef, 0xc5, -0x7c, 0xb9, 0xf1, 0x59, 0xc7, 0x8e, 0x7f, 0x69, 0xef, 0x0d, -0x68, 0x8a, 0xbb, 0xed, 0xf4, 0x2b, 0x25, 0xb8, 0x97, 0x38, -0x20, 0x49, 0x23, 0x16, 0x23, 0xfe, 0xf9, 0x58, 0xff, 0x00, -0x3a, 0xfa, 0x66, 0xf2, 0x75, 0x89, 0x1d, 0xd8, 0xe1, 0x54, -0x16, 0x24, 0xf6, 0x15, 0xf2, 0xef, 0xec, 0xf5, 0x3f, 0xfc, -0x2c, 0x1f, 0x8c, 0x3e, 0x3e, 0xf1, 0x63, 0x0d, 0xe8, 0xd7, -0x62, 0x08, 0x19, 0x86, 0x70, 0x83, 0x2a, 0x30, 0x7e, 0x8a, -0x3f, 0x3a, 0xf0, 0xf3, 0x3b, 0x55, 0x95, 0x1c, 0x37, 0xf3, -0x49, 0x7d, 0xd1, 0xd7, 0xfc, 0x8f, 0x9c, 0xce, 0x1a, 0xad, -0x2c, 0x3e, 0x13, 0xf9, 0xe6, 0x9b, 0xf4, 0x8f, 0xbc, 0xff, -0x00, 0x24, 0x7d, 0x69, 0xe1, 0xeb, 0x6f, 0x2a, 0xdd, 0x07, -0xa0, 0xad, 0xca, 0xa7, 0xa6, 0xc5, 0xe5, 0xc2, 0x3e, 0x95, -0x72, 0xbd, 0xc3, 0xe8, 0xc2, 0xb9, 0xbf, 0x88, 0xba, 0xe2, -0xf8, 0x73, 0xc1, 0x7a, 0xad, 0xfb, 0x36, 0xd3, 0x1c, 0x0d, -0x83, 0xef, 0x8a, 0xe9, 0x2b, 0xc7, 0x3f, 0x6a, 0xcb, 0xc9, -0x6c, 0xbe, 0x0f, 0xeb, 0x12, 0x23, 0x14, 0x44, 0x89, 0x9d, -0xdb, 0x38, 0xe0, 0x0a, 0x00, 0xfc, 0x2b, 0xfd, 0xa6, 0x3c, -0x55, 0x2f, 0x8f, 0xfe, 0x35, 0x5d, 0x86, 0x90, 0xca, 0xa2, -0x72, 0xa0, 0x93, 0x9e, 0xf5, 0xfa, 0xd5, 0xff, 0x00, 0x04, -0xd6, 0xf8, 0x43, 0xa7, 0xf8, 0x23, 0xe0, 0x92, 0x6b, 0xb2, -0x5a, 0xc4, 0x2f, 0x2f, 0x9c, 0xc8, 0x24, 0xd8, 0x32, 0x14, -0x7b, 0xd7, 0xe2, 0x6e, 0xa5, 0xad, 0xb5, 0xd7, 0x8f, 0x2e, -0x75, 0x09, 0x72, 0xde, 0x65, 0xd1, 0x6c, 0xb1, 0xed, 0xbb, -0xfc, 0x2b, 0xf6, 0x87, 0xf6, 0x5c, 0xfd, 0xa9, 0xfc, 0x1f, -0x6d, 0xf0, 0x1a, 0xd3, 0x4b, 0x9a, 0xfa, 0x1d, 0x3e, 0x5b, -0x2b, 0x73, 0x1a, 0xab, 0x3a, 0xee, 0x63, 0xc9, 0x27, 0xad, -0x00, 0x7c, 0x67, 0xff, 0x00, 0x05, 0x5c, 0xf8, 0x8e, 0xfe, -0x21, 0xf8, 0x8d, 0xa7, 0x68, 0x31, 0x4a, 0xcc, 0x90, 0xee, -0x76, 0x4c, 0xf1, 0x5f, 0x67, 0x7f, 0xc1, 0x30, 0xbc, 0x00, -0xbe, 0x14, 0xf8, 0x47, 0x75, 0xad, 0x4d, 0x18, 0x8d, 0xee, -0x40, 0x01, 0x88, 0xe7, 0x68, 0xe4, 0xff, 0x00, 0x21, 0x5f, -0x95, 0x5f, 0xb4, 0x47, 0x8d, 0x23, 0xf8, 0xb3, 0xfb, 0x42, -0xea, 0x17, 0xc9, 0x3f, 0x99, 0x68, 0x26, 0xf2, 0xd1, 0x98, -0xe4, 0x60, 0x1e, 0xd5, 0xfa, 0x67, 0xae, 0xfe, 0xd5, 0xde, -0x0e, 0xfd, 0x99, 0xff, 0x00, 0x67, 0x5d, 0x33, 0x40, 0xb0, -0x99, 0x6f, 0xf5, 0x79, 0xec, 0x7f, 0xe5, 0xd1, 0xd7, 0xf7, -0x6c, 0x47, 0x53, 0x93, 0xd6, 0x80, 0x3e, 0x54, 0xff, 0x00, -0x82, 0xa2, 0xfc, 0x56, 0x8f, 0xc4, 0xfe, 0x2c, 0xfe, 0xc8, -0xb7, 0x97, 0x7a, 0xac, 0xd9, 0x60, 0x1b, 0x3d, 0x2b, 0x73, -0xfe, 0x09, 0x0d, 0xf0, 0xe4, 0xea, 0xff, 0x00, 0x11, 0x75, -0x1f, 0x10, 0x49, 0x16, 0xe8, 0xac, 0xa3, 0x0a, 0xac, 0x47, -0x7e, 0xbf, 0xd6, 0xbe, 0x21, 0xf1, 0x27, 0x89, 0x35, 0x7f, -0x8d, 0x1f, 0x10, 0x16, 0x59, 0xa4, 0x96, 0x7b, 0x8b, 0xc9, -0xce, 0xd0, 0xf9, 0x24, 0x64, 0xe6, 0xbf, 0x6c, 0xff, 0x00, -0xe0, 0x9c, 0x9f, 0x01, 0xff, 0x00, 0xe1, 0x50, 0xfc, 0x21, -0x37, 0x57, 0x51, 0xa0, 0xbf, 0xd4, 0x64, 0xde, 0x58, 0x29, -0x07, 0x6e, 0x07, 0xaf, 0xf9, 0xe2, 0x80, 0x3e, 0xb3, 0x99, -0xbc, 0xb8, 0x99, 0xbd, 0x06, 0x6b, 0xc0, 0x3c, 0x79, 0x7d, -0xf6, 0xed, 0x7e, 0x4e, 0x72, 0x13, 0x8a, 0xf7, 0x2d, 0x7a, -0xe8, 0x59, 0xe9, 0x37, 0x12, 0x93, 0xd1, 0x4d, 0x7c, 0xe7, -0x7f, 0x72, 0x6f, 0x2f, 0xa7, 0x98, 0xff, 0x00, 0x13, 0x1a, -0xf8, 0x2e, 0x29, 0xaf, 0x68, 0x42, 0x8a, 0xeb, 0xa9, 0xf9, -0x97, 0x1a, 0x62, 0x2d, 0x4e, 0x9e, 0x1d, 0x3d, 0xf5, 0x2b, -0xd1, 0x45, 0x15, 0xf9, 0xc9, 0xf9, 0x38, 0x51, 0x52, 0xdb, -0x5b, 0xbd, 0xd4, 0xeb, 0x12, 0x0c, 0xb3, 0x1e, 0x2b, 0xa1, -0x4f, 0x00, 0xea, 0x32, 0x20, 0x71, 0x13, 0x73, 0xf5, 0xae, -0x9a, 0x58, 0x6a, 0xd5, 0xee, 0xe9, 0x46, 0xe7, 0x5d, 0x1c, -0x25, 0x7c, 0x4d, 0xdd, 0x18, 0x37, 0x63, 0x99, 0xa2, 0xba, -0x49, 0x7c, 0x09, 0xa8, 0x46, 0xb9, 0xf2, 0x5c, 0xfe, 0x15, -0x97, 0x75, 0xa1, 0x5f, 0x5a, 0x1f, 0x9a, 0xda, 0x4c, 0x7d, -0x29, 0xcf, 0x0b, 0x5e, 0x9f, 0xc7, 0x06, 0x8a, 0xa9, 0x82, -0xc4, 0xd1, 0x57, 0x9d, 0x36, 0xbe, 0x46, 0x7d, 0x14, 0xe6, -0x46, 0x8d, 0xb0, 0xea, 0x54, 0xfa, 0x1a, 0x6d, 0x73, 0x1c, -0x41, 0x45, 0x14, 0x52, 0x03, 0x67, 0xc2, 0x9a, 0x9b, 0x69, -0xda, 0xb4, 0x4c, 0x09, 0xe4, 0xf4, 0xcd, 0x7d, 0x0b, 0x63, -0x38, 0xb8, 0xb6, 0x8d, 0xc1, 0xce, 0x45, 0x7c, 0xcb, 0x6c, -0xfe, 0x5d, 0xc4, 0x6c, 0x3a, 0x83, 0xc5, 0x7d, 0x11, 0xe1, -0x47, 0xdf, 0xa2, 0xc1, 0x93, 0x96, 0xc7, 0x35, 0xfa, 0x0f, -0x0b, 0x56, 0x93, 0xe7, 0xa4, 0xf6, 0x3f, 0x52, 0xe0, 0xbc, -0x44, 0x9f, 0xb4, 0xa0, 0xf6, 0x5a, 0x9b, 0x55, 0xe6, 0xff, -0x00, 0x17, 0xb5, 0x1f, 0x2a, 0xc6, 0x3b, 0x70, 0x79, 0x7e, -0xb5, 0xe8, 0xf9, 0xe0, 0x9a, 0xf0, 0xef, 0x8a, 0x5a, 0xaf, -0xdb, 0x35, 0xd3, 0x0a, 0x9f, 0x96, 0x31, 0x5e, 0xf7, 0x10, -0x57, 0xf6, 0x38, 0x19, 0x2e, 0xb2, 0xd0, 0xfa, 0x5e, 0x28, -0xc4, 0xac, 0x3e, 0x5d, 0x25, 0x7d, 0x65, 0xa1, 0xc5, 0xd1, -0x46, 0x68, 0xcd, 0x7e, 0x40, 0x7e, 0x0e, 0x14, 0x51, 0x45, -0x03, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, -0x28, 0xa2, 0x80, 0x0a, 0xf6, 0x0f, 0x84, 0x96, 0x5b, 0x74, -0xc1, 0x39, 0x1f, 0x7b, 0x26, 0xbc, 0x7c, 0x8d, 0xd8, 0x03, -0xa9, 0x38, 0xaf, 0xa0, 0x7c, 0x05, 0x63, 0xf6, 0x1f, 0x0f, -0xdb, 0x0c, 0x60, 0x95, 0xaf, 0xad, 0xe1, 0xaa, 0x5e, 0xd3, -0x18, 0xe5, 0xfc, 0xa8, 0xfb, 0x8e, 0x10, 0xa1, 0xed, 0x71, -0xee, 0xa7, 0x48, 0xa3, 0xa5, 0xa2, 0x8a, 0xce, 0xd6, 0x35, -0x98, 0x34, 0x6b, 0x66, 0x96, 0x66, 0xc6, 0x07, 0x03, 0x3d, -0x6b, 0xf5, 0x39, 0xce, 0x34, 0xe2, 0xe5, 0x27, 0x64, 0x8f, -0xda, 0x6a, 0x54, 0x8d, 0x28, 0xb9, 0xcd, 0xd9, 0x22, 0x7b, -0xdb, 0xf8, 0xb4, 0xeb, 0x76, 0x9a, 0x66, 0xda, 0xaa, 0x32, -0x6b, 0xc9, 0x7c, 0x59, 0xf1, 0x22, 0x6b, 0x99, 0x5e, 0x1b, -0x36, 0xfd, 0xd7, 0x4e, 0x0d, 0x64, 0xf8, 0xb3, 0xc7, 0x97, -0x3a, 0xf4, 0xa5, 0x21, 0x67, 0x8a, 0x0e, 0x98, 0x3d, 0xeb, -0x93, 0xaf, 0xcd, 0x33, 0x6c, 0xfa, 0x55, 0xdb, 0xa5, 0x85, -0x76, 0x8f, 0x7e, 0xe7, 0xe4, 0x39, 0xe7, 0x13, 0x4f, 0x10, -0xdd, 0x0c, 0x1b, 0xb4, 0x7a, 0xbe, 0xe4, 0xb7, 0x57, 0x52, -0xde, 0x49, 0xbe, 0x46, 0x24, 0xf5, 0xeb, 0x51, 0x51, 0x45, -0x7c, 0x5b, 0x6e, 0x4e, 0xec, 0xfc, 0xf5, 0xb7, 0x27, 0xcd, -0x27, 0x76, 0x14, 0x51, 0x45, 0x21, 0x05, 0x14, 0x51, 0x40, -0x06, 0x07, 0xa5, 0x49, 0x0d, 0xc4, 0xb6, 0xec, 0x1a, 0x33, -0x83, 0x51, 0xd1, 0x4d, 0x69, 0xaa, 0x04, 0xda, 0x77, 0x47, -0x79, 0xe1, 0x1f, 0x1d, 0xcb, 0x67, 0x2a, 0x45, 0x71, 0x29, -0x2b, 0xf5, 0xaf, 0x5f, 0xd3, 0x6f, 0xe3, 0xd4, 0xad, 0x96, -0x68, 0xce, 0x54, 0x8a, 0xf9, 0x90, 0x12, 0xad, 0xb9, 0x4e, -0x0d, 0x7a, 0x27, 0xc3, 0xcf, 0x19, 0xbd, 0xbd, 0xc2, 0x5a, -0xce, 0xcc, 0xea, 0xdc, 0x0e, 0x78, 0x15, 0xf6, 0xf9, 0x1e, -0x73, 0x28, 0x4d, 0x61, 0xeb, 0xbd, 0x1e, 0xcc, 0xfd, 0x1f, -0x87, 0x38, 0x82, 0x54, 0xea, 0x2c, 0x2e, 0x25, 0xe8, 0xf6, -0x67, 0xb1, 0x51, 0x4c, 0x8e, 0x41, 0x22, 0x86, 0x5e, 0x41, -0xef, 0x4f, 0xaf, 0xd2, 0xf7, 0x3f, 0x5d, 0x4e, 0xfa, 0x85, -0x14, 0x51, 0x40, 0xc2, 0xa8, 0xea, 0x1a, 0xb5, 0xbe, 0x9d, -0x13, 0x3c, 0xb2, 0x01, 0x8e, 0xd9, 0xac, 0x3f, 0x15, 0xf8, -0xde, 0xdf, 0xc3, 0xf1, 0x94, 0x07, 0x7c, 0xe7, 0xa0, 0x06, -0xbc, 0x6f, 0x5c, 0xf1, 0x4d, 0xde, 0xb9, 0x3b, 0x33, 0x49, -0x22, 0x2f, 0xa0, 0x35, 0xf3, 0x19, 0x9e, 0x79, 0x47, 0x03, -0x78, 0x43, 0xde, 0x9f, 0x63, 0xe3, 0xf3, 0x8e, 0x23, 0xa1, -0x97, 0x5e, 0x9c, 0x3d, 0xe9, 0xf6, 0xec, 0x77, 0x9e, 0x22, -0xf8, 0xa4, 0x80, 0x34, 0x50, 0x29, 0x1d, 0xb2, 0x2b, 0x84, -0xd4, 0xbc, 0x57, 0x7d, 0x7f, 0xd2, 0x77, 0x0b, 0xe9, 0x9a, -0xc7, 0x24, 0x9e, 0xbc, 0xfd, 0x69, 0x2b, 0xf3, 0x9c, 0x56, -0x69, 0x8a, 0xc5, 0xbb, 0xce, 0x5a, 0x1f, 0x93, 0x63, 0x73, -0x9c, 0x6e, 0x3a, 0x4d, 0xd4, 0x9d, 0x97, 0x64, 0x4c, 0xf7, -0xb7, 0x12, 0x7d, 0xf9, 0x09, 0xfa, 0xd4, 0x44, 0x96, 0x39, -0x3c, 0xd2, 0x51, 0x5e, 0x53, 0x6d, 0xee, 0xcf, 0x11, 0xca, -0x52, 0xdd, 0xdc, 0x36, 0x8a, 0x3a, 0x51, 0x45, 0x22, 0x6c, -0x4f, 0x15, 0xec, 0xb0, 0x60, 0xab, 0x1e, 0x3d, 0xeb, 0x4e, -0xd7, 0xc5, 0xb7, 0x76, 0xa4, 0x63, 0x71, 0x03, 0xfd, 0xaa, -0xc5, 0xa2, 0xb6, 0xa7, 0x5a, 0xad, 0x2f, 0x82, 0x56, 0x3a, -0x69, 0xe2, 0x2b, 0x51, 0xfe, 0x1c, 0x9a, 0x3d, 0x6b, 0xc1, -0xbf, 0x10, 0x25, 0xd4, 0x25, 0x16, 0xee, 0x9f, 0x8e, 0x6b, -0xbb, 0xbc, 0xba, 0x02, 0x21, 0xce, 0x32, 0x33, 0x5e, 0x49, -0xf0, 0xc3, 0x47, 0x69, 0xe6, 0x7b, 0x93, 0xd3, 0x38, 0x15, -0xe9, 0x5a, 0xa4, 0x9b, 0x46, 0x07, 0x61, 0x5f, 0xac, 0x64, -0x35, 0xab, 0xd7, 0xc2, 0xa9, 0xd7, 0x77, 0xec, 0x7e, 0xdf, -0xc3, 0x55, 0xf1, 0x38, 0x9c, 0x1a, 0xa9, 0x89, 0x77, 0xec, -0x64, 0xea, 0xb7, 0x83, 0x69, 0xe6, 0xb8, 0x9d, 0x66, 0xf3, -0xef, 0x73, 0x5b, 0x7a, 0xc4, 0xe4, 0x2b, 0x73, 0x5c, 0x1e, -0xb7, 0x7a, 0x50, 0x37, 0x35, 0xf4, 0xa7, 0xd7, 0x1c, 0xcf, -0x88, 0x6e, 0xb2, 0x1e, 0xbe, 0x61, 0xf8, 0xd1, 0xaf, 0x0b, -0x7f, 0xb4, 0x28, 0x6c, 0x6d, 0xc8, 0xeb, 0x5e, 0xf5, 0xe2, -0x4d, 0x5c, 0xc5, 0x1c, 0xad, 0x93, 0x80, 0x2b, 0xe3, 0x8f, -0x8d, 0xbe, 0x25, 0xf3, 0xef, 0x2e, 0x23, 0x0c, 0x72, 0x58, -0x8a, 0xf2, 0x33, 0x2a, 0xde, 0xc6, 0x8d, 0xd7, 0x53, 0xc3, -0xcd, 0xf1, 0x1f, 0x57, 0xa1, 0x75, 0xbb, 0x33, 0xbe, 0x03, -0x7e, 0xd1, 0x5a, 0x87, 0xc1, 0x4f, 0x8b, 0x76, 0xba, 0xaa, -0xcf, 0x2f, 0xf6, 0x45, 0xd3, 0x88, 0x2f, 0xa0, 0x12, 0x10, -0x8e, 0x84, 0xf0, 0x58, 0x77, 0xc1, 0x3d, 0x7b, 0x64, 0xd7, -0xec, 0x57, 0x86, 0xbc, 0x47, 0x65, 0xe2, 0x9d, 0x12, 0xd3, -0x54, 0xb0, 0x97, 0xcd, 0xb4, 0xb9, 0x40, 0xe8, 0x48, 0xc1, -0x1e, 0xc7, 0xdc, 0x57, 0xf3, 0xf1, 0xe2, 0x09, 0x37, 0x2b, -0xd7, 0xe9, 0x17, 0xfc, 0x13, 0x33, 0xf6, 0x84, 0x93, 0xc6, -0x5e, 0x16, 0xb8, 0xf0, 0x6e, 0xa7, 0x72, 0xf3, 0x5f, 0x69, -0xdf, 0x24, 0x6d, 0x23, 0x64, 0xe0, 0x0c, 0xa9, 0xfc, 0x54, -0x7e, 0x68, 0x6b, 0x9f, 0x2a, 0xad, 0x29, 0xc1, 0xc2, 0x47, -0x26, 0x49, 0x88, 0x9d, 0x4a, 0x6e, 0x13, 0x3e, 0xfb, 0x47, -0xc9, 0xa9, 0x83, 0x55, 0x18, 0xa4, 0xf7, 0xab, 0x09, 0x25, -0x7b, 0xe7, 0xd3, 0x96, 0x83, 0x53, 0xf7, 0x55, 0x75, 0x6c, -0xd4, 0xaa, 0x72, 0x28, 0x02, 0x4a, 0x70, 0x39, 0xa6, 0x03, -0x4b, 0x40, 0x0f, 0xa2, 0x90, 0x1a, 0x5a, 0x00, 0x46, 0xe9, -0x4d, 0xa5, 0x6e, 0xb4, 0x87, 0xa5, 0x00, 0x46, 0xc6, 0xa1, -0x73, 0xc5, 0x4a, 0xf5, 0x0b, 0x9c, 0x50, 0x04, 0x12, 0x9e, -0x2a, 0x94, 0xcd, 0x80, 0x6a, 0xd4, 0xad, 0x8a, 0xa1, 0x72, -0x70, 0x0d, 0x00, 0x79, 0xef, 0xc7, 0x0f, 0x16, 0x9f, 0x05, -0xfc, 0x2b, 0xf1, 0x36, 0xb0, 0xa4, 0x89, 0x60, 0xb3, 0x64, -0x88, 0x83, 0xff, 0x00, 0x2d, 0x1c, 0x88, 0xd3, 0xff, 0x00, -0x1e, 0x75, 0xaf, 0x3a, 0xfd, 0x89, 0xfc, 0x2a, 0x74, 0xaf, -0x87, 0xef, 0x77, 0x22, 0x91, 0x25, 0xe4, 0xe6, 0x4c, 0x9e, -0xa4, 0x01, 0x81, 0xfd, 0x6b, 0x27, 0xf6, 0xd6, 0xd7, 0x9c, -0x78, 0x4b, 0x41, 0xf0, 0xec, 0x2e, 0x04, 0x9a, 0xa6, 0xa0, -0xac, 0xe9, 0x93, 0xb8, 0xa2, 0x0e, 0x3f, 0x0d, 0xc4, 0x7e, -0x42, 0xbd, 0xcf, 0xe0, 0x9f, 0x87, 0x53, 0xc3, 0xbe, 0x0c, -0xd3, 0x2c, 0xd1, 0x42, 0xf9, 0x50, 0xa0, 0x20, 0x0e, 0xf8, -0xaf, 0x9d, 0xff, 0x00, 0x78, 0xcd, 0xbc, 0xa9, 0xc7, 0xf1, -0x97, 0xfc, 0x03, 0xe5, 0x17, 0xfb, 0x56, 0x79, 0xa6, 0xd4, -0x61, 0xf8, 0xcb, 0xfe, 0x01, 0xe9, 0xb0, 0x2e, 0xc8, 0xc0, -0xa9, 0x29, 0x07, 0x03, 0x14, 0xb5, 0xf4, 0x47, 0xd5, 0x85, -0x79, 0x07, 0xed, 0x57, 0xa2, 0x5d, 0xf8, 0x8b, 0xe0, 0xbe, -0xb9, 0xa7, 0xd9, 0xa9, 0x67, 0x9a, 0x32, 0x18, 0x81, 0x9c, -0x2e, 0x0e, 0x6b, 0xd7, 0xeb, 0x3b, 0xc4, 0x1a, 0x52, 0x6b, -0x7a, 0x35, 0xdd, 0x8c, 0x83, 0x29, 0x3c, 0x65, 0x0f, 0xe3, -0x40, 0x1f, 0xcc, 0x47, 0x8e, 0xf4, 0xd3, 0xa4, 0x78, 0xab, -0x51, 0xb6, 0xc6, 0xd1, 0x14, 0xce, 0x80, 0x63, 0x1d, 0x0e, -0x29, 0xfa, 0x3f, 0x8e, 0xb5, 0x2d, 0x16, 0xd5, 0xa0, 0xb7, -0x9e, 0x45, 0x56, 0x04, 0x70, 0xf5, 0xf5, 0xbf, 0xed, 0xc5, -0xfb, 0x28, 0xea, 0x9e, 0x06, 0xf1, 0xa5, 0xe6, 0xa5, 0x6b, -0x6f, 0x15, 0xbd, 0x84, 0xce, 0xcf, 0x1a, 0x05, 0xe7, 0x19, -0x27, 0x3c, 0x0a, 0xf8, 0xae, 0xee, 0xd2, 0x4b, 0x39, 0xda, -0x27, 0x1f, 0x32, 0x9c, 0x50, 0x04, 0xd0, 0xea, 0x72, 0xc5, -0x7a, 0x6e, 0x49, 0x26, 0x52, 0x72, 0x5b, 0x3c, 0xe6, 0xae, -0xeb, 0x9e, 0x2e, 0xd4, 0xfc, 0x40, 0xea, 0x6e, 0xee, 0xe5, -0x99, 0x14, 0x6d, 0x0a, 0xed, 0x9e, 0x2b, 0x2e, 0xda, 0xd9, -0xee, 0xa4, 0x09, 0x18, 0xcb, 0x1e, 0xd5, 0xf4, 0xf7, 0xec, -0xcd, 0xfb, 0x15, 0xf8, 0x9b, 0xe2, 0xe7, 0x89, 0x2d, 0x5a, -0xf2, 0xd0, 0x47, 0xa4, 0x30, 0xdc, 0xd2, 0x1c, 0xf3, 0xcf, -0xd2, 0x80, 0x3b, 0x3f, 0xf8, 0x27, 0x5f, 0xec, 0xc3, 0x79, -0xf1, 0x3b, 0xe2, 0x65, 0x8e, 0xb1, 0x7f, 0x6d, 0x22, 0xe9, -0x96, 0xe3, 0xcc, 0x12, 0x32, 0x1d, 0xa7, 0xf1, 0xaf, 0xdc, -0x2d, 0x0b, 0x46, 0x83, 0x40, 0xd2, 0x6d, 0xac, 0x2d, 0x94, -0x24, 0x30, 0x20, 0x50, 0x05, 0x70, 0x9f, 0x02, 0xbe, 0x09, -0xe8, 0xbf, 0x05, 0xbc, 0x17, 0x61, 0xa4, 0x69, 0x96, 0xf1, -0xa4, 0x91, 0x44, 0x16, 0x49, 0x02, 0x8c, 0x93, 0xf5, 0xc0, -0xaf, 0x4b, 0xa0, 0x0e, 0x43, 0xe2, 0x55, 0xff, 0x00, 0xd9, -0x3c, 0x3d, 0x38, 0x07, 0x96, 0x15, 0xe1, 0x03, 0xa5, 0x7a, -0xaf, 0xc5, 0xdd, 0x43, 0x10, 0x24, 0x00, 0xfd, 0xe3, 0x8c, -0x57, 0x95, 0x57, 0xe4, 0xbc, 0x47, 0x5b, 0xda, 0xe3, 0x79, -0x7f, 0x95, 0x58, 0xfc, 0x37, 0x8b, 0x2b, 0xfb, 0x6c, 0xc1, -0xc5, 0x7d, 0x95, 0x60, 0xa2, 0x8a, 0x2b, 0xe5, 0x8f, 0x8c, -0x3a, 0x7f, 0x87, 0x96, 0x22, 0xf7, 0xc4, 0x09, 0x9e, 0x91, -0x8c, 0xd7, 0xbd, 0x45, 0x18, 0x48, 0xd5, 0x40, 0x18, 0x02, -0xbc, 0x8f, 0xe0, 0xed, 0x8f, 0x9b, 0x7d, 0x75, 0x39, 0xed, -0x80, 0x2b, 0xd8, 0x6b, 0xf5, 0x7e, 0x1b, 0xa2, 0xa1, 0x83, -0xe7, 0xfe, 0x66, 0x7e, 0xdb, 0xc2, 0x34, 0x3d, 0x9e, 0x5f, -0xed, 0x1a, 0xd6, 0x4d, 0x8c, 0x31, 0xa9, 0xea, 0x07, 0xe5, -0x54, 0x6f, 0xb4, 0x5b, 0x7b, 0xd4, 0x21, 0x90, 0x03, 0xeb, -0x8a, 0xd1, 0xa2, 0xbe, 0xa6, 0x50, 0x8c, 0xd5, 0xa4, 0xae, -0x7d, 0x9c, 0xe9, 0xc2, 0xa2, 0xe5, 0x9a, 0xb9, 0xe1, 0xff, -0x00, 0x10, 0xfc, 0x2e, 0xba, 0x4d, 0xe7, 0x99, 0x16, 0x48, -0x61, 0xda, 0xb8, 0x9a, 0xf6, 0xbf, 0x8a, 0xb1, 0x20, 0xd2, -0x3c, 0xc3, 0xf7, 0xfa, 0x0a, 0xf1, 0x4c, 0x62, 0xbf, 0x1f, -0xcf, 0x30, 0xd0, 0xc2, 0xe3, 0x1c, 0x61, 0xb3, 0xd4, 0xfc, -0x1f, 0x88, 0xf0, 0x94, 0xf0, 0x78, 0xf9, 0x46, 0x9e, 0x89, -0xea, 0x14, 0x51, 0x45, 0x7c, 0xf9, 0xf2, 0xe4, 0xd6, 0x51, -0xf9, 0xb7, 0x91, 0x2f, 0xbd, 0x7d, 0x11, 0xe1, 0x68, 0x4c, -0x3a, 0x3c, 0x20, 0xf5, 0x23, 0x35, 0xe1, 0x1e, 0x18, 0xb3, -0x37, 0x9a, 0xb4, 0x4a, 0x06, 0x79, 0x02, 0xbe, 0x87, 0xb3, -0x87, 0xc8, 0xb5, 0x8e, 0x31, 0xfc, 0x2a, 0x05, 0x7e, 0x83, -0xc2, 0xb4, 0x9f, 0xef, 0x2a, 0xbf, 0x43, 0xf5, 0x2e, 0x0a, -0xa0, 0xff, 0x00, 0x79, 0x59, 0xfa, 0x13, 0x32, 0xee, 0x04, -0x7a, 0xd7, 0x0d, 0xab, 0x7c, 0x39, 0xb7, 0xd4, 0xaf, 0x24, -0x9d, 0xd4, 0x96, 0x63, 0x5d, 0xdd, 0x15, 0xf6, 0xf8, 0x8c, -0x2d, 0x2c, 0x52, 0x51, 0xaa, 0xae, 0x91, 0xfa, 0x26, 0x2f, -0x05, 0x43, 0x1b, 0x15, 0x1a, 0xf1, 0xba, 0x47, 0x99, 0xbf, -0xc2, 0x7b, 0x6f, 0xee, 0x9f, 0xd6, 0xa0, 0x7f, 0x84, 0xb0, -0x9e, 0x99, 0xfd, 0x6b, 0xd4, 0xe8, 0xaf, 0x31, 0xe4, 0x78, -0x17, 0xf6, 0x0f, 0x1e, 0x5c, 0x39, 0x97, 0x4b, 0xfe, 0x5d, -0xa3, 0xc6, 0x75, 0x7f, 0x86, 0xf1, 0x69, 0xb6, 0xaf, 0x36, -0xf3, 0xf2, 0x8c, 0xf3, 0x5c, 0x0b, 0x80, 0x1d, 0x80, 0xe8, -0x0d, 0x7b, 0x87, 0xc4, 0xdd, 0x47, 0xec, 0x5a, 0x14, 0x8a, -0x31, 0x97, 0x18, 0xaf, 0x0d, 0x15, 0xf9, 0xee, 0x79, 0x86, -0xa1, 0x84, 0xc4, 0x2a, 0x54, 0x15, 0xb4, 0xd4, 0xfc, 0xbb, -0x89, 0x30, 0x98, 0x6c, 0x0e, 0x2a, 0x34, 0x70, 0xea, 0xda, -0x6a, 0x14, 0x51, 0x45, 0x7c, 0xe1, 0xf2, 0x43, 0xe1, 0x89, -0xa6, 0x95, 0x51, 0x7a, 0xb5, 0x74, 0x50, 0xf8, 0x0b, 0x50, -0xb8, 0x88, 0x48, 0xb9, 0xc1, 0xff, 0x00, 0x66, 0xaa, 0x78, -0x42, 0xcf, 0xed, 0xba, 0xd4, 0x60, 0x8c, 0x85, 0xaf, 0xa0, -0x6d, 0x2c, 0xa3, 0x86, 0xd9, 0x10, 0x20, 0xc0, 0x03, 0xb5, -0x7d, 0x66, 0x4d, 0x94, 0x43, 0x30, 0x84, 0xa7, 0x55, 0xe8, -0x8f, 0xb7, 0xe1, 0xfc, 0x8a, 0x9e, 0x6b, 0x4e, 0x55, 0x2a, -0xbb, 0x24, 0x78, 0x43, 0x78, 0x07, 0x52, 0x5f, 0xe1, 0xcf, -0xfc, 0x00, 0xd4, 0x2d, 0xe0, 0x9d, 0x4d, 0x7f, 0xe5, 0x9e, -0x7f, 0x0a, 0xfa, 0x0b, 0xec, 0xb1, 0xff, 0x00, 0x70, 0x7e, -0x54, 0x86, 0xca, 0x23, 0xfc, 0x02, 0xbe, 0x85, 0xf0, 0xbe, -0x1d, 0xed, 0x26, 0x7d, 0x4b, 0xe0, 0xcc, 0x2b, 0xda, 0x4c, -0xf0, 0x1b, 0x0f, 0x06, 0x6a, 0x2f, 0xa8, 0x40, 0xad, 0x11, -0xd9, 0xb8, 0x13, 0xc1, 0xaf, 0x78, 0xd2, 0x2d, 0x8d, 0xae, -0x9f, 0x04, 0x44, 0x60, 0xaa, 0xd4, 0xc9, 0x67, 0x0a, 0x30, -0x21, 0x06, 0x6a, 0x6e, 0x82, 0xbd, 0x8c, 0xb3, 0x2a, 0xa7, -0x96, 0xf3, 0x38, 0xbb, 0xb6, 0x7d, 0x06, 0x4f, 0x92, 0x52, -0xca, 0x39, 0xdc, 0x1d, 0xdc, 0x88, 0x2f, 0x2e, 0x92, 0xd2, -0x07, 0x95, 0xc8, 0x0a, 0xa3, 0x35, 0xe1, 0xbe, 0x38, 0xf1, -0x74, 0xba, 0xdd, 0xf7, 0x96, 0x8d, 0x88, 0x97, 0x8e, 0x0f, -0x15, 0xd5, 0xfc, 0x4d, 0xf1, 0x63, 0x40, 0xcd, 0x63, 0x03, -0x75, 0x5e, 0x6b, 0xca, 0x39, 0xef, 0xc9, 0xaf, 0x94, 0xe2, -0x1c, 0xd1, 0xd4, 0x97, 0xd5, 0x69, 0x3d, 0x16, 0xe7, 0xc4, -0x71, 0x56, 0x72, 0xea, 0x4f, 0xea, 0x54, 0x5e, 0x8b, 0x7f, -0x50, 0xa2, 0x8a, 0x2b, 0xe1, 0x4f, 0xcd, 0x82, 0x8a, 0x50, -0x09, 0x38, 0x1c, 0x9a, 0xec, 0x3c, 0x23, 0xe0, 0x39, 0xf5, -0xa7, 0x12, 0xbf, 0xcb, 0x18, 0x3d, 0xeb, 0xab, 0x0f, 0x86, -0xab, 0x8a, 0x9a, 0xa7, 0x49, 0x5d, 0x9d, 0x98, 0x4c, 0x1d, -0x6c, 0x6d, 0x55, 0x4a, 0x84, 0x6e, 0xce, 0x52, 0xda, 0xd2, -0x5b, 0xb6, 0xdb, 0x1a, 0x9c, 0xfd, 0x2a, 0xf7, 0xfc, 0x23, -0x17, 0xc4, 0x64, 0x29, 0xc7, 0xd2, 0xbd, 0xcf, 0x4c, 0xf0, -0x7e, 0x9f, 0x61, 0x12, 0x8f, 0x21, 0x59, 0xc7, 0x7c, 0x56, -0x87, 0xf6, 0x35, 0xa6, 0x31, 0xe4, 0xa8, 0x15, 0xf6, 0x94, -0xb8, 0x59, 0xb8, 0xfe, 0xf2, 0x7a, 0x9f, 0xa1, 0x50, 0xe0, -0xb9, 0x38, 0x5e, 0xb5, 0x4d, 0x4f, 0x9c, 0xe7, 0xd2, 0x2e, -0x6d, 0xb9, 0x90, 0x63, 0xeb, 0x55, 0x33, 0xce, 0x2b, 0xe8, -0xab, 0xff, 0x00, 0x09, 0x69, 0xf7, 0x91, 0x32, 0xb4, 0x23, -0x26, 0xbc, 0x97, 0xc6, 0x7e, 0x0f, 0x7d, 0x22, 0x53, 0x24, -0x71, 0x84, 0x8f, 0xd6, 0xbc, 0x7c, 0xc7, 0x22, 0xab, 0x82, -0x8f, 0xb4, 0x8b, 0xbc, 0x4f, 0x0b, 0x35, 0xe1, 0xba, 0xf9, -0x74, 0x3d, 0xac, 0x1f, 0x34, 0x4e, 0x3e, 0x8a, 0x5a, 0x4a, -0xf9, 0x93, 0xe3, 0x82, 0xa7, 0xb3, 0xb9, 0x6b, 0x4b, 0xa8, -0xe4, 0x43, 0x82, 0x0d, 0x41, 0x41, 0xa6, 0x9b, 0x8b, 0x52, -0x43, 0x52, 0x70, 0x6a, 0x4b, 0x74, 0x7d, 0x15, 0xe1, 0x0b, -0xf1, 0xa9, 0x68, 0x50, 0x4b, 0x9c, 0x9c, 0x62, 0xb7, 0x2b, -0xcf, 0xfe, 0x12, 0xde, 0xf9, 0xda, 0x49, 0x88, 0x9e, 0x13, -0x81, 0x9a, 0xf4, 0x0a, 0xfd, 0xc3, 0x2e, 0xad, 0xed, 0xf0, -0x94, 0xea, 0x3e, 0xc7, 0xf4, 0x76, 0x53, 0x88, 0xfa, 0xce, -0x0a, 0x95, 0x5e, 0xe9, 0x05, 0x65, 0xeb, 0xfa, 0xd4, 0x5a, -0x25, 0x93, 0x4d, 0x21, 0x00, 0xe3, 0x8e, 0x6b, 0x49, 0x9b, -0x6a, 0x92, 0x7b, 0x57, 0x8d, 0xfc, 0x50, 0xf1, 0x29, 0xbc, -0xbb, 0x4b, 0x58, 0x8e, 0x15, 0x7a, 0xd6, 0x39, 0xa6, 0x39, -0x60, 0x70, 0xee, 0xa7, 0x5e, 0x87, 0x3e, 0x75, 0x98, 0xac, -0xb7, 0x09, 0x2a, 0xbf, 0x6b, 0x64, 0x71, 0xda, 0xde, 0xad, -0x2e, 0xb1, 0x7d, 0x24, 0xd2, 0x36, 0x46, 0xe3, 0x8a, 0xa1, -0x45, 0x15, 0xf8, 0xbc, 0xe7, 0x2a, 0x92, 0x73, 0x93, 0xbb, -0x67, 0xf3, 0xdd, 0x4a, 0x92, 0xab, 0x37, 0x39, 0xbb, 0xb6, -0x14, 0x51, 0x4e, 0x8e, 0x36, 0x99, 0xc2, 0x20, 0xcb, 0x1e, -0x82, 0xa7, 0x72, 0x12, 0xbe, 0x88, 0x6d, 0x19, 0xae, 0x87, -0x4d, 0xf0, 0x5d, 0xfd, 0xf0, 0x04, 0xc4, 0x76, 0xd6, 0xaa, -0x7c, 0x36, 0x99, 0xba, 0x82, 0x2b, 0xd1, 0xa7, 0x97, 0x62, -0xaa, 0xae, 0x68, 0xc1, 0x9e, 0xb5, 0x2c, 0xab, 0x1b, 0x59, -0x73, 0x42, 0x9b, 0x38, 0x9c, 0xd1, 0x5d, 0xa4, 0x9f, 0x0d, -0xa5, 0x51, 0xfc, 0x55, 0x9f, 0x75, 0xe0, 0x8b, 0x8b, 0x65, -0x24, 0x6e, 0x34, 0x4f, 0x2e, 0xc5, 0xc1, 0x5e, 0x50, 0x0a, -0x99, 0x4e, 0x36, 0x9a, 0xbc, 0xa9, 0x9c, 0xdd, 0x06, 0xac, -0x5c, 0xd8, 0x4d, 0x6a, 0xc5, 0x5a, 0x26, 0xfc, 0xa9, 0x2c, -0x60, 0x6b, 0x9b, 0xc8, 0xa3, 0xc6, 0x0b, 0x30, 0x15, 0xc1, -0xc9, 0x2e, 0x65, 0x06, 0xb5, 0x3c, 0xcf, 0x67, 0x2e, 0x65, -0x06, 0xb5, 0x3d, 0x8b, 0xe1, 0xd6, 0x9d, 0xf6, 0x3d, 0x1a, -0x36, 0x23, 0x04, 0x8c, 0xd6, 0x96, 0xad, 0x26, 0x59, 0xaa, -0xf6, 0x93, 0x6c, 0x2c, 0x74, 0xb8, 0x93, 0xd1, 0x05, 0x63, -0xea, 0xf2, 0x72, 0x6b, 0xf7, 0x1c, 0x05, 0x15, 0x43, 0x0d, -0x0a, 0x7d, 0x91, 0xfd, 0x1f, 0x96, 0xd0, 0x58, 0x6c, 0x25, -0x3a, 0x4b, 0xa2, 0x39, 0x4d, 0x6e, 0x5f, 0xbd, 0x5e, 0x7b, -0xe2, 0x09, 0xf0, 0xad, 0x5d, 0xae, 0xb9, 0x37, 0xde, 0xe6, -0xbc, 0xeb, 0xc4, 0x53, 0xe1, 0x5b, 0x9a, 0xef, 0x3d, 0x33, -0xcc, 0xbc, 0x73, 0x7b, 0xe4, 0xd8, 0xce, 0xd9, 0xc7, 0x06, -0xbe, 0x1f, 0xf8, 0xab, 0xa9, 0x34, 0xda, 0xdd, 0xc0, 0xcf, -0x01, 0x8d, 0x7d, 0x7d, 0xf1, 0x3f, 0x50, 0xf2, 0x74, 0xf9, -0x06, 0x71, 0x9c, 0xd7, 0xc3, 0xfe, 0x3c, 0xbd, 0xf3, 0xf5, -0x8b, 0xc6, 0xce, 0x7e, 0x73, 0x5f, 0x2d, 0x9c, 0x4a, 0xee, -0x30, 0x3e, 0x33, 0x3f, 0x9f, 0x33, 0x8d, 0x33, 0x83, 0xd6, -0x6e, 0xb7, 0x6e, 0x04, 0xd7, 0xb1, 0x7f, 0xc1, 0x3d, 0xbc, -0x67, 0x27, 0x85, 0xbf, 0x68, 0xfb, 0x78, 0x03, 0x91, 0x15, -0xed, 0xbe, 0x0a, 0xe7, 0x00, 0xba, 0x3a, 0x90, 0x7f, 0xef, -0x92, 0xe3, 0xf1, 0xaf, 0x0a, 0xd5, 0x66, 0x3e, 0x61, 0xe6, -0xbd, 0x0f, 0xf6, 0x3f, 0xf3, 0x13, 0xf6, 0x8e, 0xf0, 0xeb, -0xc7, 0xfd, 0xd9, 0xf3, 0xff, 0x00, 0x7e, 0xdb, 0x1f, 0xae, -0x2b, 0x6c, 0xbe, 0x3c, 0x8d, 0x1b, 0x65, 0x51, 0xe4, 0x92, -0x3f, 0x7a, 0x61, 0x98, 0x10, 0x0e, 0x78, 0xab, 0x91, 0xbd, -0x62, 0xd8, 0xca, 0x5a, 0x08, 0xb3, 0xd7, 0x68, 0xfe, 0x55, -0xa5, 0x13, 0xf4, 0xaf, 0xa3, 0x3e, 0xb4, 0xbe, 0x8d, 0x53, -0x29, 0xaa, 0xb1, 0xbe, 0x40, 0xa9, 0xd0, 0xfb, 0xd0, 0x05, -0x80, 0x69, 0xf5, 0x12, 0x1a, 0x7a, 0x9a, 0x00, 0x91, 0x69, -0x69, 0x9d, 0x29, 0xd4, 0x00, 0xda, 0x46, 0xe2, 0x96, 0x98, -0xe6, 0x80, 0x23, 0x63, 0x50, 0xbd, 0x4a, 0xc6, 0xa0, 0x90, -0xf0, 0x68, 0x02, 0xb4, 0xc6, 0xb3, 0xae, 0x5a, 0xae, 0xcc, -0xdd, 0x6b, 0x27, 0x51, 0xba, 0x4b, 0x3b, 0x79, 0xa7, 0x95, -0xb6, 0xc5, 0x12, 0x17, 0x63, 0xe8, 0x00, 0xc9, 0xa0, 0x4d, -0xd9, 0x5d, 0x9f, 0x22, 0xfc, 0x5d, 0xb9, 0x3f, 0x10, 0xbf, -0x6a, 0x8d, 0x13, 0x42, 0x8c, 0x99, 0x6d, 0xb4, 0x68, 0xe3, -0x57, 0x5e, 0xa1, 0x5d, 0x87, 0x98, 0xdf, 0xa6, 0xca, 0xfb, -0x43, 0xc2, 0xf6, 0xa2, 0x0b, 0x34, 0x00, 0x60, 0x00, 0x2b, -0xe3, 0x0f, 0xd9, 0x7a, 0xc6, 0x4f, 0x1d, 0xfc, 0x50, 0xf1, -0x47, 0x8c, 0xaf, 0x41, 0x96, 0x69, 0xee, 0x9c, 0xa4, 0x87, -0x8c, 0x6e, 0x6e, 0x07, 0x1e, 0x8a, 0x00, 0xaf, 0xb8, 0x34, -0xa8, 0x84, 0x50, 0x0c, 0x0e, 0xd5, 0xf3, 0xb9, 0x3a, 0x75, -0x55, 0x5c, 0x5b, 0xff, 0x00, 0x97, 0x92, 0x76, 0xf4, 0x5a, -0x23, 0xe5, 0x72, 0x04, 0xeb, 0x2a, 0xf8, 0xd7, 0xff, 0x00, -0x2f, 0x26, 0xed, 0xe8, 0xb4, 0x5f, 0x91, 0x7a, 0x8a, 0x28, -0xaf, 0xa2, 0x3e, 0xac, 0x28, 0xa2, 0xb1, 0xfc, 0x4b, 0xe2, -0xed, 0x27, 0xc2, 0x36, 0x66, 0xeb, 0x56, 0xbd, 0x8e, 0xce, -0x1c, 0x67, 0x74, 0x87, 0xad, 0x00, 0x63, 0x78, 0xf3, 0xe1, -0x47, 0x87, 0x3e, 0x23, 0x40, 0x53, 0x5c, 0xd3, 0xd2, 0xf0, -0x85, 0xc2, 0x96, 0x24, 0x62, 0xbe, 0x59, 0xf1, 0xd7, 0xfc, -0x13, 0xc7, 0xc2, 0x7a, 0xbd, 0xec, 0x92, 0x58, 0xe8, 0xd1, -0x22, 0xb1, 0xcf, 0x0c, 0xd5, 0xb7, 0xf1, 0x47, 0xfe, 0x0a, -0x09, 0xe1, 0x8f, 0x05, 0xde, 0x34, 0x5a, 0x6d, 0xc5, 0xb5, -0xf2, 0xa9, 0xc1, 0x3b, 0x58, 0xd7, 0x9b, 0xe9, 0xdf, 0xf0, -0x54, 0x8b, 0x3d, 0x4b, 0x5a, 0xb7, 0xd3, 0xe2, 0xd3, 0xed, -0xd9, 0xa4, 0x6d, 0xb9, 0x11, 0xbf, 0xf8, 0xd0, 0x07, 0x6f, -0xe0, 0x8f, 0xf8, 0x26, 0xdf, 0xc3, 0xdb, 0x12, 0xb3, 0x6a, -0x7a, 0x4c, 0x66, 0x45, 0xc1, 0xe0, 0x9e, 0xb5, 0xf5, 0x57, -0x82, 0x3c, 0x03, 0xa3, 0xfc, 0x3f, 0xd2, 0x22, 0xd3, 0xb4, -0x7b, 0x55, 0xb6, 0xb7, 0x8c, 0x6d, 0x00, 0x7a, 0x53, 0xbc, -0x19, 0xe2, 0x8f, 0xf8, 0x48, 0xfc, 0x27, 0xa7, 0xeb, 0x17, -0x2a, 0x96, 0xbf, 0x6a, 0x88, 0x49, 0x86, 0x3b, 0x40, 0x07, -0xeb, 0x5b, 0x31, 0x5f, 0xdb, 0x4e, 0x40, 0x8e, 0xe2, 0x29, -0x09, 0xec, 0xae, 0x0d, 0x00, 0x58, 0xa6, 0x3b, 0xed, 0x52, -0x4f, 0x61, 0x4f, 0xaa, 0x1a, 0xd5, 0xc7, 0xd9, 0x74, 0xf9, -0x5f, 0x38, 0x38, 0xa8, 0x9c, 0xb9, 0x22, 0xe4, 0xfa, 0x19, -0xd4, 0x9a, 0xa7, 0x07, 0x37, 0xd0, 0xf1, 0x5f, 0x89, 0x3a, -0x8f, 0xdb, 0x75, 0x85, 0x8c, 0x1c, 0x84, 0xce, 0x6b, 0x92, -0xab, 0x9a, 0xbd, 0xd9, 0xbd, 0xd4, 0xee, 0x25, 0x63, 0x9c, -0xb6, 0x05, 0x53, 0xaf, 0xc2, 0xf1, 0x75, 0x9d, 0x7c, 0x44, -0xea, 0x77, 0x67, 0xf3, 0x66, 0x3e, 0xbb, 0xc4, 0xe2, 0xaa, -0x55, 0x7d, 0x58, 0x50, 0x7a, 0x51, 0x52, 0x5b, 0xc5, 0xe7, -0xcf, 0x1c, 0x7f, 0xdf, 0x60, 0x2b, 0x91, 0x2b, 0xe8, 0x8e, -0x24, 0xae, 0xec, 0x8f, 0x63, 0xf8, 0x4d, 0x61, 0xf6, 0x6d, -0x21, 0xa5, 0x23, 0x05, 0xf9, 0xae, 0xfe, 0xb1, 0x3c, 0x29, -0x64, 0xb6, 0x5a, 0x44, 0x28, 0xbf, 0xdd, 0x15, 0xb7, 0x5f, -0xb8, 0xe5, 0xd4, 0x7e, 0xaf, 0x85, 0xa7, 0x4f, 0xb2, 0x3f, -0xa3, 0xb2, 0xac, 0x3f, 0xd5, 0x70, 0x54, 0xa9, 0x76, 0x41, -0x45, 0x35, 0x9c, 0x2f, 0x53, 0x8a, 0xc4, 0xf1, 0x17, 0x89, -0xed, 0xb4, 0x4b, 0x56, 0x66, 0x70, 0x5f, 0x1c, 0x0e, 0xb5, -0xd7, 0x56, 0xb4, 0x28, 0xc1, 0xce, 0x6e, 0xc9, 0x1d, 0xf5, -0xab, 0xd3, 0xc3, 0xc1, 0xd4, 0xa8, 0xec, 0x91, 0xc5, 0x7c, -0x5e, 0xd5, 0x42, 0xb4, 0x16, 0x8a, 0xdc, 0xe3, 0x71, 0x15, -0xe5, 0x75, 0xa7, 0xe2, 0x2d, 0x6a, 0x5d, 0x77, 0x52, 0x7b, -0x89, 0x1f, 0x77, 0x61, 0x59, 0x95, 0xf8, 0xb6, 0x67, 0x8b, -0xfa, 0xee, 0x2a, 0x75, 0x56, 0xdd, 0x0f, 0xe7, 0xbc, 0xe3, -0x1c, 0xb3, 0x0c, 0x6c, 0xeb, 0xc7, 0x6e, 0x9e, 0x81, 0x45, -0x15, 0x24, 0x10, 0xb5, 0xc4, 0xcb, 0x1a, 0x0c, 0x93, 0x5e, -0x66, 0xfa, 0x23, 0xc6, 0x49, 0xb7, 0x64, 0x77, 0x9f, 0x0a, -0xf4, 0xa3, 0x71, 0x7a, 0xb7, 0x0c, 0xbf, 0x28, 0x39, 0xaf, -0x66, 0xae, 0x6b, 0xc0, 0xfa, 0x14, 0x7a, 0x46, 0x87, 0x6c, -0x02, 0xe2, 0x57, 0x40, 0x58, 0x9a, 0xe9, 0x6b, 0xf6, 0x7c, -0x9f, 0x09, 0xf5, 0x4c, 0x24, 0x60, 0xf7, 0x7a, 0xb3, 0xfa, -0x0b, 0x21, 0xc0, 0xbc, 0x06, 0x06, 0x10, 0x96, 0xef, 0x57, -0xf3, 0x0a, 0x28, 0xa2, 0xbd, 0xb3, 0xe8, 0x82, 0x8a, 0x2a, -0x29, 0x9f, 0xcb, 0x89, 0x9b, 0xd0, 0x52, 0x6e, 0xc2, 0x6e, -0xca, 0xe7, 0x94, 0x7c, 0x5f, 0xd4, 0x37, 0xcb, 0x0d, 0xb8, -0x3e, 0xe6, 0xbc, 0xd6, 0xba, 0x2f, 0x1e, 0x6a, 0x06, 0xff, -0x00, 0xc4, 0x13, 0x73, 0x90, 0x9c, 0x0a, 0xe7, 0x6b, 0xf1, -0x3c, 0xd6, 0xbf, 0xd6, 0x31, 0x95, 0x27, 0xe7, 0x6f, 0xb8, -0xfe, 0x76, 0xce, 0xb1, 0x3f, 0x5a, 0xc7, 0xd5, 0xa9, 0xd2, -0xf6, 0xfb, 0x82, 0x8a, 0x29, 0x1b, 0xa5, 0x79, 0x27, 0x86, -0x77, 0x9f, 0x0a, 0xb4, 0xff, 0x00, 0xb4, 0x5f, 0x19, 0x58, -0x71, 0x9a, 0xf6, 0xba, 0xf3, 0xdf, 0x85, 0x7a, 0x62, 0xc1, -0xa7, 0x89, 0x71, 0xcf, 0xad, 0x7a, 0x15, 0x7e, 0xc3, 0x90, -0xd0, 0xf6, 0x18, 0x28, 0xdf, 0x77, 0xa9, 0xfb, 0xdf, 0x0c, -0xe1, 0xbe, 0xaf, 0x97, 0x42, 0xfb, 0xbd, 0x42, 0x8a, 0x28, -0xaf, 0xa2, 0x3e, 0xac, 0x2b, 0x23, 0xc4, 0xda, 0x9a, 0xe9, -0x3a, 0x4c, 0xd3, 0xb1, 0xc1, 0xc6, 0x05, 0x6b, 0xd7, 0x92, -0xfc, 0x58, 0xf1, 0x0b, 0xbc, 0x82, 0xc2, 0x37, 0xf9, 0x41, -0xe7, 0x15, 0xe4, 0xe6, 0x98, 0xb5, 0x82, 0xc2, 0xca, 0xa7, -0x5e, 0x9e, 0xa7, 0x89, 0x9c, 0xe3, 0x96, 0x5f, 0x83, 0x9d, -0x57, 0xbe, 0xcb, 0xd4, 0xe0, 0x35, 0x8b, 0xf7, 0xd4, 0xb5, -0x29, 0x67, 0x63, 0x9c, 0x9a, 0xa5, 0x45, 0x15, 0xf8, 0xac, -0xa4, 0xe7, 0x27, 0x29, 0x6e, 0xcf, 0xe7, 0x89, 0xcd, 0xd4, -0x93, 0x9c, 0xb7, 0x61, 0x45, 0x15, 0xa5, 0xa0, 0x69, 0x6d, -0xab, 0xea, 0x96, 0xf0, 0x63, 0x2a, 0xcd, 0xcd, 0x38, 0x42, -0x55, 0x24, 0xa1, 0x1d, 0xd8, 0xe9, 0xd3, 0x95, 0x59, 0xaa, -0x70, 0xdd, 0x9b, 0xde, 0x02, 0xf0, 0x8b, 0xeb, 0x77, 0x1e, -0x74, 0x89, 0xfb, 0xa4, 0x6e, 0xf5, 0xed, 0xd6, 0x96, 0x91, -0x59, 0xc4, 0x12, 0x24, 0x0a, 0xa0, 0x74, 0x15, 0x53, 0x42, -0xd1, 0x60, 0xd1, 0x2c, 0x96, 0x18, 0x57, 0x6f, 0xad, 0x69, -0xd7, 0xec, 0x79, 0x56, 0x5b, 0x1c, 0xbe, 0x8a, 0x5f, 0x69, -0xee, 0xcf, 0xdf, 0xb2, 0x4c, 0xa6, 0x19, 0x5e, 0x1d, 0x45, -0xaf, 0x7d, 0xee, 0xc2, 0x8a, 0x28, 0xaf, 0x70, 0xfa, 0x30, -0xac, 0x4f, 0x14, 0xe9, 0x51, 0xea, 0x5a, 0x64, 0xa1, 0x97, -0x73, 0x01, 0x9a, 0xdb, 0xa8, 0xe6, 0x50, 0xf1, 0x30, 0x23, -0x20, 0x8e, 0x95, 0x8d, 0x6a, 0x6a, 0xad, 0x37, 0x09, 0x6c, -0xcc, 0x2b, 0xd2, 0x8d, 0x6a, 0x52, 0xa7, 0x25, 0xa3, 0x47, -0xcc, 0xda, 0x8d, 0xb3, 0x5a, 0x5e, 0xcb, 0x1b, 0x70, 0x41, -0xe9, 0x55, 0xab, 0xa1, 0xf1, 0xbd, 0xb0, 0xb7, 0xd7, 0x25, -0x3d, 0x37, 0x1a, 0xe7, 0xab, 0xf0, 0xbc, 0x45, 0x3f, 0x65, -0x5a, 0x50, 0xec, 0xcf, 0xe6, 0xbc, 0x5d, 0x2f, 0x61, 0x5e, -0x74, 0xfb, 0x36, 0x14, 0x51, 0x45, 0x73, 0x1c, 0xa7, 0xa5, -0xfc, 0x1f, 0x94, 0xf9, 0xb2, 0x47, 0x9c, 0x28, 0xaf, 0x5b, -0xaf, 0x17, 0xf8, 0x4f, 0x23, 0x0d, 0x4f, 0xcb, 0x1d, 0xce, -0x4d, 0x7b, 0x45, 0x7e, 0xbb, 0xc3, 0xd2, 0xe6, 0xc0, 0xc5, -0x76, 0x3f, 0x75, 0xe1, 0x59, 0xf3, 0x65, 0xb1, 0x5d, 0x9b, -0x33, 0x75, 0xfb, 0xc1, 0x63, 0xa4, 0xdc, 0x4c, 0x78, 0x21, -0x4e, 0x2b, 0xe7, 0x7d, 0x62, 0xe8, 0xde, 0x6a, 0x32, 0x48, -0x4e, 0x6b, 0xd8, 0x3e, 0x2a, 0x6a, 0x2f, 0x6b, 0xa3, 0x2c, -0x28, 0xdb, 0x4c, 0x87, 0x9a, 0xf1, 0x42, 0x72, 0xc4, 0xd7, -0xcb, 0xf1, 0x3e, 0x27, 0x9e, 0xbc, 0x68, 0x2e, 0x88, 0xf8, -0xde, 0x31, 0xc5, 0xfb, 0x4c, 0x4c, 0x70, 0xeb, 0x68, 0xa1, -0x28, 0xa2, 0x8a, 0xf8, 0xa3, 0xf3, 0xc0, 0x27, 0x15, 0xe8, -0xff, 0x00, 0x0e, 0xbc, 0x18, 0x2f, 0x24, 0x5b, 0xbb, 0x98, -0xfe, 0x50, 0x32, 0x2b, 0xcf, 0x6d, 0x23, 0x13, 0x5d, 0x43, -0x19, 0xe8, 0xcc, 0x01, 0xaf, 0xa2, 0xbc, 0x35, 0x6d, 0x1d, -0xb6, 0x93, 0x0a, 0xc6, 0x30, 0x31, 0x5f, 0x59, 0xc3, 0xd8, -0x28, 0x62, 0xb1, 0x0e, 0xa5, 0x4d, 0x54, 0x4f, 0xb7, 0xe1, -0x5c, 0xba, 0x9e, 0x33, 0x14, 0xea, 0x55, 0xd5, 0x43, 0xa7, -0x99, 0xa5, 0x0d, 0xba, 0x5b, 0xa0, 0x44, 0x50, 0x14, 0x76, -0xa9, 0x30, 0x3d, 0x29, 0x68, 0xaf, 0xd5, 0x92, 0x49, 0x59, -0x1f, 0xb6, 0xa4, 0x92, 0xb2, 0x1b, 0xb0, 0x7a, 0x0a, 0x63, -0x5b, 0xc6, 0xe3, 0x94, 0x53, 0xf8, 0x54, 0xb4, 0x51, 0x64, -0xc1, 0xa4, 0xf7, 0x46, 0x0e, 0xa9, 0xe1, 0x5b, 0x5b, 0xf5, -0x3b, 0x63, 0x45, 0x27, 0xda, 0xb8, 0xd8, 0x7e, 0x1c, 0xbd, -0xb6, 0xbd, 0x14, 0xbc, 0x79, 0x60, 0xee, 0xaf, 0x50, 0xa6, -0x14, 0x1f, 0x7b, 0x03, 0x35, 0xe5, 0xe2, 0x32, 0xcc, 0x36, -0x22, 0x4a, 0x72, 0x8e, 0xa9, 0xdc, 0xf1, 0x71, 0x39, 0x3e, -0x13, 0x15, 0x38, 0xce, 0x71, 0xd5, 0x3b, 0x99, 0xf7, 0x47, -0xcb, 0x87, 0x6f, 0xa5, 0x72, 0x7a, 0xc4, 0xbf, 0x7a, 0xba, -0x6d, 0x4e, 0x4c, 0x03, 0x5c, 0x6e, 0xb5, 0x29, 0x1b, 0xab, -0xd4, 0x4a, 0xda, 0x1e, 0xd2, 0x56, 0x56, 0x38, 0xfd, 0x72, -0x5c, 0x6e, 0xaf, 0x37, 0xf1, 0x25, 0xc7, 0xde, 0xe6, 0xbb, -0x9d, 0x72, 0x7f, 0xbd, 0xcd, 0x79, 0x9f, 0x89, 0x6e, 0x70, -0x18, 0xe6, 0x98, 0xcf, 0x0b, 0xf8, 0xc9, 0xa9, 0x88, 0xad, -0xe5, 0x5c, 0xf4, 0x06, 0xbe, 0x30, 0xf1, 0x4d, 0xc7, 0x99, -0x79, 0x70, 0xd9, 0xea, 0xe4, 0xd7, 0xd3, 0x3f, 0x1b, 0xb5, -0x92, 0x16, 0x70, 0x1b, 0xd6, 0xbe, 0x53, 0xf1, 0x05, 0xc1, -0x2d, 0x21, 0x3d, 0x49, 0xaf, 0x8b, 0xc7, 0xcb, 0xda, 0xe2, -0x6c, 0x8f, 0xcf, 0x73, 0x29, 0xfb, 0x6c, 0x5f, 0x2f, 0x63, -0x90, 0xd4, 0x64, 0xdc, 0xed, 0x5e, 0xfb, 0xfb, 0x02, 0xf8, -0x6a, 0x4d, 0x7b, 0xe3, 0xbc, 0x77, 0x21, 0x77, 0x47, 0x69, -0x6e, 0x17, 0x3e, 0x8e, 0xf2, 0x20, 0x1f, 0xf8, 0xe8, 0x7a, -0xf9, 0xea, 0xf6, 0x4c, 0x93, 0x5f, 0x7c, 0xff, 0x00, 0xc1, -0x2f, 0xbc, 0x0c, 0x86, 0x4b, 0xff, 0x00, 0x10, 0x4b, 0x06, -0x5e, 0x69, 0x59, 0x96, 0x4e, 0x99, 0x48, 0xc0, 0x55, 0xfc, -0x9d, 0xd8, 0xd7, 0xb1, 0x83, 0x87, 0xbc, 0x8f, 0x7f, 0x01, -0x0f, 0x79, 0x79, 0x1f, 0xa6, 0x36, 0xcf, 0x80, 0xa0, 0x74, -0x15, 0xa5, 0x0b, 0xe2, 0xb1, 0x6d, 0xa4, 0xe9, 0x5a, 0x90, -0x36, 0x6b, 0xdc, 0x3e, 0x8c, 0xd3, 0x89, 0xaa, 0xcc, 0x67, -0x26, 0xa8, 0xc4, 0x7a, 0x55, 0xb8, 0xcf, 0x14, 0x01, 0x6d, -0x4e, 0x78, 0xa9, 0x2a, 0x04, 0xa9, 0x41, 0xed, 0x40, 0x12, -0x53, 0x81, 0xcd, 0x34, 0x74, 0xa7, 0x03, 0x40, 0x0d, 0xa8, -0xd8, 0x1a, 0x92, 0x98, 0xc6, 0x80, 0x20, 0x7c, 0xd4, 0x12, -0xf4, 0x35, 0x61, 0xcd, 0x55, 0x99, 0xb8, 0xa0, 0x0a, 0x53, -0x9e, 0xb5, 0xe4, 0xff, 0x00, 0xb4, 0x6f, 0x8a, 0x4f, 0x84, -0xbe, 0x0f, 0xf8, 0x92, 0xf5, 0x0e, 0x26, 0x7b, 0x7f, 0xb3, -0x45, 0xce, 0x3e, 0x79, 0x08, 0x41, 0xfc, 0xeb, 0xd5, 0x6e, -0x1a, 0xbe, 0x58, 0xfd, 0xb5, 0x75, 0xa7, 0xbd, 0xb3, 0xf0, -0x8f, 0x84, 0xed, 0xd8, 0x99, 0x75, 0x0b, 0xe3, 0x73, 0x2a, -0x01, 0xce, 0xc4, 0x1b, 0x57, 0xf3, 0x67, 0x27, 0xfe, 0x03, -0x5e, 0x5e, 0x67, 0x5f, 0xea, 0xf8, 0x3a, 0x95, 0x16, 0xf6, -0xb2, 0xf5, 0x7a, 0x23, 0xc6, 0xce, 0x31, 0x2f, 0x0b, 0x80, -0xab, 0x55, 0x6f, 0x6b, 0x2f, 0x57, 0xa2, 0xfc, 0x59, 0xd4, -0x7e, 0xc7, 0x9e, 0x15, 0xfe, 0xc7, 0xf8, 0x75, 0x67, 0x3b, -0x2f, 0xef, 0x2e, 0xd8, 0xca, 0x7e, 0x9d, 0x07, 0xf2, 0xaf, -0xa8, 0x2d, 0x97, 0x6c, 0x42, 0xbc, 0xef, 0xe1, 0x4e, 0x80, -0x9a, 0x17, 0x86, 0x34, 0xdb, 0x34, 0x1b, 0x56, 0x08, 0x11, -0x00, 0xfa, 0x0a, 0xf4, 0x74, 0x18, 0x50, 0x2b, 0x6c, 0x0d, -0x0f, 0xab, 0x61, 0xa9, 0xd2, 0xec, 0x91, 0xbe, 0x5b, 0x87, -0xfa, 0xa6, 0x0e, 0x95, 0x0e, 0xc9, 0x0e, 0xa2, 0x8a, 0x42, -0x70, 0x32, 0x6b, 0xb8, 0xf4, 0x8c, 0xbf, 0x12, 0xf8, 0x9a, -0xc3, 0xc2, 0x5a, 0x4c, 0xda, 0x8e, 0xa5, 0x30, 0x86, 0xda, -0x21, 0x96, 0x6a, 0xfc, 0x56, 0xfd, 0xbc, 0x3f, 0x6d, 0x8d, -0x57, 0xe2, 0x37, 0x8d, 0xef, 0xb4, 0x4d, 0x1e, 0x5f, 0x2f, -0x47, 0xb6, 0x63, 0x1c, 0x6c, 0x84, 0x83, 0xfa, 0x1a, 0xfa, -0x63, 0xfe, 0x0a, 0x97, 0xfb, 0x4d, 0x9d, 0x03, 0x41, 0xb5, -0xf0, 0xa6, 0x8d, 0x71, 0x89, 0xa5, 0x63, 0xe7, 0x95, 0x3f, -0xfd, 0x6a, 0xfc, 0xcb, 0xf8, 0x57, 0xf0, 0x3b, 0xc5, 0x7f, -0x1b, 0xb5, 0x86, 0xfe, 0xc5, 0xb3, 0x6b, 0xa2, 0xf2, 0x7c, -0xed, 0xea, 0x73, 0x40, 0x1e, 0x7b, 0x36, 0xb3, 0x7b, 0x3b, -0x16, 0x7b, 0xa9, 0x58, 0x93, 0x9e, 0x58, 0x9a, 0xf6, 0x8f, -0xd9, 0x37, 0xc2, 0xb7, 0x1e, 0x36, 0xf8, 0xaf, 0xa3, 0x5b, -0x16, 0x77, 0x0d, 0x75, 0x1a, 0xf5, 0xed, 0x9c, 0x9a, 0xa9, -0xf1, 0xdb, 0xf6, 0x7c, 0xd5, 0x7e, 0x09, 0x5a, 0xdb, 0xae, -0xb1, 0x6a, 0x2d, 0xa7, 0x95, 0xf6, 0x81, 0x9e, 0xf5, 0xf5, -0x0f, 0xfc, 0x12, 0x9f, 0xe1, 0xa7, 0xf6, 0xf7, 0xc4, 0xab, -0x6d, 0x4e, 0x58, 0xb7, 0x45, 0x68, 0x7c, 0xf2, 0x4f, 0xb7, -0x4a, 0x00, 0xfb, 0x33, 0xf6, 0xf1, 0xf8, 0x97, 0x77, 0xf0, -0x3b, 0xe0, 0xe6, 0x96, 0x96, 0x0f, 0x22, 0x48, 0x22, 0x58, -0x10, 0x47, 0xec, 0x06, 0x4f, 0xeb, 0x5f, 0x29, 0x7e, 0xc5, -0xdf, 0xb4, 0xe6, 0xb9, 0xf1, 0x0b, 0xe2, 0xad, 0xbd, 0xad, -0xcd, 0xc4, 0xaf, 0x04, 0x6b, 0xd1, 0xc9, 0xe4, 0x92, 0x3d, -0xeb, 0xdc, 0xff, 0x00, 0xe0, 0xab, 0x9a, 0xa4, 0x07, 0xc1, -0xb0, 0xc5, 0x23, 0x8f, 0xf4, 0x78, 0x8b, 0x05, 0x23, 0xab, -0x57, 0xc7, 0x3f, 0xf0, 0x4c, 0x7d, 0x1d, 0xf5, 0x8f, 0x8d, -0x16, 0x36, 0xc8, 0xa4, 0x82, 0xde, 0x6b, 0x9f, 0x60, 0x45, -0x00, 0x7e, 0xe5, 0xd9, 0x31, 0x7b, 0x38, 0x59, 0xbe, 0xf1, -0x40, 0x4f, 0xe5, 0x5c, 0xd7, 0xc4, 0x4d, 0x43, 0xec, 0x7a, -0x34, 0x83, 0x3d, 0x41, 0xae, 0xa9, 0x54, 0x22, 0x85, 0x1d, -0x00, 0xc5, 0x79, 0x5f, 0xc5, 0xdd, 0x4b, 0xe4, 0x48, 0x14, -0xf5, 0x35, 0xe3, 0x66, 0xf5, 0xfe, 0xaf, 0x83, 0x9c, 0xbc, -0x8f, 0x9f, 0xcf, 0xb1, 0x3f, 0x56, 0xcb, 0xea, 0x4f, 0xca, -0xc7, 0x97, 0x82, 0x4f, 0x27, 0xa9, 0xe6, 0x8a, 0x28, 0xaf, -0xc5, 0x4f, 0xe7, 0xa0, 0xa9, 0xec, 0xe7, 0xfb, 0x35, 0xcc, -0x72, 0xe3, 0x25, 0x0e, 0x45, 0x41, 0x45, 0x52, 0x6e, 0x2e, -0xe8, 0x71, 0x6e, 0x2d, 0x49, 0x74, 0x3b, 0xfb, 0x3f, 0x8a, -0x37, 0x36, 0xb1, 0x2a, 0x08, 0xc6, 0x05, 0x59, 0x93, 0xe2, -0xe4, 0xfb, 0x7f, 0xd5, 0x7e, 0x95, 0xe6, 0xf4, 0x57, 0xb3, -0x1c, 0xeb, 0x1d, 0x15, 0x65, 0x33, 0xe8, 0x23, 0xc4, 0x19, -0x8c, 0x23, 0xca, 0xaa, 0x1d, 0xa5, 0xf7, 0xc4, 0xbb, 0x9b, -0xa1, 0x85, 0x52, 0xb5, 0xcc, 0x6a, 0x1a, 0xb5, 0xc6, 0xa3, -0x26, 0xe9, 0x64, 0x24, 0x7a, 0x55, 0x2a, 0x2b, 0x86, 0xb6, -0x33, 0x11, 0x88, 0xfe, 0x2c, 0xae, 0x79, 0xd8, 0x8c, 0xc3, -0x15, 0x8a, 0xd2, 0xb4, 0xdb, 0x0a, 0x29, 0x40, 0xcd, 0x59, -0xb5, 0xd3, 0x6e, 0x2f, 0x24, 0x0a, 0x91, 0x37, 0x3d, 0xf1, -0x5c, 0x91, 0x8c, 0xa4, 0xed, 0x15, 0x73, 0x86, 0x30, 0x94, -0xdd, 0xa2, 0xae, 0xca, 0xb5, 0xe8, 0xff, 0x00, 0x0e, 0x3c, -0x16, 0xd3, 0xdc, 0x2d, 0xed, 0xca, 0xfe, 0xec, 0x0c, 0x81, -0x52, 0xf8, 0x43, 0xe1, 0x9b, 0x99, 0x52, 0xe2, 0xf3, 0x06, -0x3f, 0x4a, 0xf5, 0x3b, 0x5b, 0x58, 0xec, 0xe1, 0x58, 0xa2, -0x50, 0xaa, 0x3a, 0x57, 0xdd, 0xe4, 0xb9, 0x1c, 0xf9, 0xd6, -0x23, 0x12, 0xac, 0x96, 0xc8, 0xfd, 0x2f, 0x87, 0xb8, 0x72, -0x7e, 0xd1, 0x62, 0xb1, 0x8a, 0xc9, 0x6c, 0x89, 0x12, 0x31, -0x1a, 0xaa, 0xaf, 0x0a, 0x3a, 0x0a, 0x7d, 0x14, 0x57, 0xe8, -0xc7, 0xeb, 0x0b, 0x40, 0xa2, 0x8a, 0x28, 0x00, 0xac, 0xed, -0x76, 0xe7, 0xec, 0xba, 0x64, 0xce, 0x7d, 0x2b, 0x46, 0xb9, -0x0f, 0x89, 0x3a, 0x87, 0xd8, 0xf4, 0x19, 0x46, 0x70, 0x48, -0xc5, 0x71, 0xe3, 0x2a, 0xfb, 0x1c, 0x3c, 0xea, 0x76, 0x4c, -0xf3, 0xf1, 0xf5, 0x96, 0x1f, 0x0b, 0x52, 0xab, 0xe8, 0x99, -0xe2, 0x1a, 0x84, 0xe6, 0xe6, 0xfe, 0xe2, 0x5f, 0xef, 0x39, -0xaa, 0xf4, 0x75, 0xa2, 0xbf, 0x0a, 0x93, 0x72, 0x6e, 0x4f, -0xa9, 0xfc, 0xd9, 0x29, 0x39, 0xc9, 0xc9, 0xf5, 0x0a, 0x92, -0x08, 0xbc, 0xfb, 0x98, 0x63, 0xfe, 0xf3, 0x0a, 0x8e, 0xb5, -0x7c, 0x2f, 0x68, 0x6f, 0x35, 0xa8, 0x46, 0x32, 0x14, 0xe6, -0xae, 0x94, 0x3d, 0xa5, 0x48, 0xc1, 0x75, 0x68, 0xd2, 0x8d, -0x37, 0x56, 0xac, 0x69, 0xae, 0xad, 0x1e, 0xe5, 0xe0, 0xdb, -0x3f, 0xb1, 0xe8, 0xf1, 0x8f, 0x5a, 0xdf, 0xaa, 0xba, 0x74, -0x5e, 0x45, 0x94, 0x49, 0xe8, 0xb5, 0x6a, 0xbf, 0x76, 0xc3, -0xd3, 0xf6, 0x54, 0xa3, 0x05, 0xd1, 0x1f, 0xd2, 0xb8, 0x5a, -0x6a, 0x8d, 0x18, 0x53, 0x5d, 0x10, 0x51, 0x45, 0x15, 0xd0, -0x75, 0x10, 0x5d, 0x4e, 0x2d, 0xa0, 0x92, 0x53, 0xd1, 0x46, -0x6b, 0xe7, 0x5f, 0x14, 0x6a, 0x07, 0x53, 0xd6, 0x6e, 0x25, -0x27, 0x23, 0x79, 0xaf, 0x6d, 0xf1, 0xd6, 0xa4, 0x34, 0xed, -0x0a, 0x76, 0xce, 0x0b, 0x0c, 0x57, 0xcf, 0xf2, 0x36, 0xf7, -0x66, 0xee, 0x4d, 0x7e, 0x75, 0xc5, 0x38, 0x8b, 0xca, 0x14, -0x13, 0xf3, 0x67, 0xe5, 0x1c, 0x69, 0x8a, 0xbc, 0xa9, 0xe1, -0x93, 0xdb, 0x56, 0x36, 0x8a, 0x28, 0xaf, 0x81, 0x3f, 0x31, -0x0a, 0xf5, 0x2f, 0x85, 0x7a, 0x08, 0xc2, 0x5e, 0x38, 0xe4, -0x0c, 0x8a, 0xf3, 0x08, 0x63, 0x32, 0xcc, 0x88, 0x3f, 0x88, -0x81, 0x5f, 0x44, 0x78, 0x53, 0x4b, 0x1a, 0x66, 0x91, 0x04, -0x78, 0xc1, 0xda, 0x2b, 0xeb, 0x78, 0x73, 0x0a, 0xab, 0xe2, -0x9d, 0x59, 0x2d, 0x23, 0xf9, 0x9f, 0x71, 0xc2, 0x78, 0x25, -0x89, 0xc6, 0x3a, 0xd2, 0x5a, 0x43, 0xf3, 0x36, 0xe8, 0xa2, -0x8a, 0xfd, 0x58, 0xfd, 0xb4, 0x28, 0xa2, 0x8a, 0x00, 0x29, -0x08, 0xf9, 0x48, 0xa5, 0xa6, 0x48, 0xdb, 0x50, 0x9f, 0x6a, -0x04, 0xf6, 0x3c, 0x1f, 0xe2, 0x3f, 0xfc, 0x8c, 0x12, 0x7a, -0x0e, 0x2b, 0x94, 0xae, 0xa7, 0xe2, 0x1c, 0xa2, 0x4d, 0x70, -0xaf, 0x71, 0xcd, 0x72, 0xd5, 0xf8, 0x6e, 0x61, 0x6f, 0xad, -0xd4, 0xb7, 0x73, 0xf9, 0xbf, 0x35, 0xd7, 0x1d, 0x55, 0xae, -0xec, 0x28, 0xa2, 0x8a, 0xf3, 0x8f, 0x2c, 0xf4, 0x1f, 0x84, -0xa8, 0x05, 0xfc, 0x8e, 0x7a, 0xf4, 0x15, 0xec, 0xb5, 0xe4, -0x5f, 0x08, 0xa1, 0x2f, 0x70, 0xcd, 0x8e, 0x06, 0x4d, 0x7a, -0xed, 0x7e, 0xbb, 0xc3, 0xb1, 0xb6, 0x06, 0x27, 0xee, 0xbc, -0x2b, 0x1b, 0x65, 0xb1, 0xf9, 0x9e, 0x57, 0xf1, 0x76, 0xe4, -0x17, 0x8d, 0x3f, 0xba, 0x2b, 0xcb, 0x47, 0x4a, 0xf4, 0x6f, -0x8b, 0x88, 0xcb, 0x72, 0xb9, 0xfe, 0x33, 0x5e, 0x73, 0x5f, -0x01, 0x9e, 0x49, 0xcb, 0x1f, 0x3b, 0x9f, 0x98, 0x71, 0x1c, -0xdc, 0xb3, 0x3a, 0x97, 0x0a, 0x28, 0xa2, 0xbc, 0x13, 0xe6, -0x49, 0x20, 0x97, 0xc9, 0x99, 0x24, 0xf4, 0x35, 0xee, 0x1e, -0x04, 0xf1, 0x2c, 0x57, 0xd6, 0x31, 0xc0, 0xdc, 0x3a, 0x8e, -0xf5, 0xe1, 0x75, 0x7f, 0x4a, 0xd6, 0x26, 0xd2, 0xee, 0x16, -0x45, 0x76, 0xc0, 0xec, 0x2b, 0xdb, 0xca, 0xb3, 0x17, 0x97, -0xd6, 0xe6, 0xfb, 0x2f, 0x73, 0xe8, 0x72, 0x5c, 0xd5, 0xe5, -0x55, 0xf9, 0xed, 0x78, 0xbd, 0xcf, 0xa5, 0xb3, 0x9a, 0x5a, -0xf3, 0x0f, 0x0f, 0xfc, 0x4e, 0x46, 0x51, 0x1c, 0xa8, 0x7f, -0x1a, 0xee, 0x74, 0xbf, 0x10, 0xdb, 0xea, 0x43, 0xe5, 0x60, -0x0f, 0xd6, 0xbf, 0x54, 0xc2, 0xe6, 0x58, 0x6c, 0x5a, 0x5e, -0xce, 0x5a, 0x9f, 0xb6, 0x60, 0xf3, 0x6c, 0x26, 0x39, 0x27, -0x4a, 0x7a, 0xf6, 0x35, 0xa8, 0xa4, 0x52, 0x08, 0xe0, 0xe6, -0x96, 0xbd, 0x43, 0xd8, 0x0a, 0x64, 0xa7, 0x08, 0x69, 0xf5, -0x05, 0xcb, 0xed, 0x4a, 0x00, 0xc4, 0xd4, 0xe4, 0xeb, 0x5c, -0x4e, 0xb9, 0x2e, 0x37, 0x57, 0x59, 0xaa, 0x4b, 0xc1, 0xae, -0x1f, 0x5f, 0x9b, 0x05, 0xb9, 0xa0, 0x0e, 0x2b, 0x5d, 0x9b, -0x0a, 0xfc, 0xd7, 0x96, 0x78, 0xb2, 0xef, 0xcb, 0x82, 0x66, -0xcf, 0x40, 0x6b, 0xd1, 0x3c, 0x41, 0x3e, 0x11, 0xab, 0xc7, -0xbc, 0x7d, 0x7d, 0xe4, 0xd8, 0x4c, 0x73, 0xd4, 0x62, 0xa6, -0x4f, 0x96, 0x2d, 0x91, 0x39, 0x72, 0xc5, 0xb3, 0xe5, 0x5f, -0x8d, 0x1a, 0x9f, 0x99, 0x34, 0x8a, 0x0f, 0x53, 0x5f, 0x3b, -0xeb, 0xd3, 0x7c, 0xcf, 0xf5, 0xaf, 0x5e, 0xf8, 0xa7, 0xa8, -0xf9, 0xfa, 0x93, 0x8c, 0xf4, 0x26, 0xbc, 0x53, 0x5c, 0x97, -0x32, 0x35, 0x7c, 0x2a, 0x7e, 0xd3, 0x11, 0x26, 0x7e, 0x6d, -0x17, 0xed, 0x71, 0x52, 0x91, 0xcf, 0x5e, 0x3f, 0x5a, 0xfd, -0x6d, 0xff, 0x00, 0x82, 0x7c, 0xf8, 0x50, 0x78, 0x7f, 0xe0, -0xce, 0x9d, 0x70, 0x55, 0x96, 0x4b, 0x88, 0x12, 0x43, 0x9f, -0xf6, 0xc9, 0x7e, 0x3f, 0x02, 0xb5, 0xf9, 0x2f, 0x67, 0x61, -0x26, 0xb1, 0xab, 0x59, 0x58, 0x44, 0x71, 0x2d, 0xd4, 0xe9, -0x02, 0x9c, 0x67, 0x96, 0x60, 0xa3, 0xf9, 0xd7, 0xee, 0x3f, -0xc0, 0xad, 0x0e, 0x3f, 0x0f, 0x7c, 0x3c, 0xd2, 0xad, 0x62, -0x5d, 0xb1, 0x84, 0xc2, 0x80, 0x31, 0x85, 0x03, 0x6a, 0xfe, -0x82, 0xbe, 0xab, 0x06, 0xad, 0x76, 0x7d, 0xb6, 0x02, 0x3a, -0x36, 0x7a, 0xad, 0xab, 0x74, 0xad, 0x68, 0x0f, 0x4a, 0xc5, -0xb5, 0x3d, 0x2b, 0x5a, 0xdc, 0xe7, 0x15, 0xe9, 0x1e, 0xb1, -0xa9, 0x09, 0xab, 0x91, 0x9e, 0x95, 0x42, 0x0e, 0xd5, 0x7a, -0x2c, 0xd0, 0x05, 0xa4, 0xe9, 0x53, 0x2d, 0x42, 0x87, 0x8a, -0x95, 0x4d, 0x00, 0x48, 0xb4, 0xe5, 0xa6, 0x8e, 0x94, 0xe1, -0xd6, 0x80, 0x12, 0xa2, 0x73, 0x52, 0x1e, 0x95, 0x13, 0x1c, -0xd0, 0x04, 0x6f, 0xde, 0xa9, 0xcd, 0xd0, 0xd5, 0xa7, 0x35, -0x4e, 0x73, 0xd6, 0x80, 0x28, 0x4e, 0x7a, 0xd7, 0xc7, 0xde, -0x3a, 0x94, 0xfc, 0x42, 0xfd, 0xad, 0xad, 0x74, 0xef, 0xde, -0x49, 0x6d, 0xa2, 0x45, 0x1c, 0x6c, 0x8d, 0xf7, 0x55, 0x80, -0xde, 0xc4, 0x0f, 0x7d, 0xcb, 0x5f, 0x59, 0xeb, 0xda, 0x9c, -0x3a, 0x3e, 0x97, 0x7b, 0x7f, 0x70, 0xdb, 0x6d, 0xed, 0x21, -0x79, 0xe4, 0x6e, 0x98, 0x55, 0x52, 0xc7, 0xf4, 0x15, 0xf2, -0x6f, 0xec, 0x7b, 0xa6, 0x4f, 0xe2, 0x6f, 0x11, 0xf8, 0x8b, -0xc5, 0xb7, 0xa0, 0xb5, 0xd5, 0xec, 0xec, 0xe5, 0x88, 0xe3, -0x73, 0xb1, 0x66, 0xc7, 0xf2, 0xaf, 0x9d, 0xcd, 0x5f, 0xb6, -0xab, 0x43, 0x08, 0xbe, 0xd4, 0xae, 0xfd, 0x23, 0xaf, 0xe6, -0x7c, 0xa6, 0x76, 0xfd, 0xbd, 0x6c, 0x36, 0x05, 0x7d, 0xb9, -0x73, 0x3f, 0x48, 0xeb, 0xf9, 0xd8, 0xfb, 0x2f, 0xc3, 0x96, -0xc2, 0x1b, 0x68, 0xc6, 0x31, 0xc5, 0x6f, 0xd5, 0x1d, 0x32, -0x2d, 0x91, 0x81, 0xe8, 0x2a, 0xf5, 0x7d, 0x11, 0xf5, 0x61, -0x58, 0x9e, 0x34, 0xd6, 0x57, 0xc3, 0xfe, 0x15, 0xd5, 0x35, -0x06, 0x60, 0x82, 0x08, 0x19, 0x81, 0x3e, 0xb8, 0xe2, 0xb6, -0xeb, 0xc6, 0x7f, 0x6b, 0x1d, 0x56, 0x5d, 0x37, 0xe0, 0xfe, -0xaf, 0xe4, 0x96, 0x5c, 0xc6, 0x4b, 0x32, 0x9c, 0x60, 0x01, -0x40, 0x1f, 0x87, 0xdf, 0xb5, 0xef, 0x8d, 0xee, 0xbe, 0x21, -0xfc, 0x65, 0xb9, 0x8e, 0x49, 0x9a, 0x60, 0x92, 0x15, 0x03, -0x27, 0x8c, 0x9a, 0xfd, 0x4f, 0xff, 0x00, 0x82, 0x6a, 0xfc, -0x16, 0xd2, 0x7c, 0x11, 0xfb, 0x3e, 0xd9, 0x78, 0x8a, 0xe2, -0xcd, 0x7f, 0xb5, 0x2e, 0xe5, 0x96, 0x5f, 0x31, 0xc0, 0x24, -0x28, 0x27, 0x1d, 0xab, 0xf1, 0x7f, 0x5a, 0xd6, 0x4d, 0xf7, -0xc4, 0x6b, 0xbb, 0xd7, 0xcb, 0xef, 0xbb, 0x20, 0x1e, 0xbc, -0x6e, 0xc5, 0x7e, 0xe4, 0xfc, 0x03, 0xf8, 0xad, 0xa0, 0x59, -0x7e, 0xcb, 0x7a, 0x6a, 0xa5, 0xfd, 0xa5, 0xab, 0xda, 0xdb, -0x32, 0x79, 0x6d, 0x30, 0x0c, 0x48, 0x04, 0x93, 0x8a, 0x00, -0xfc, 0xe2, 0xff, 0x00, 0x82, 0x9c, 0xf8, 0xf4, 0xf8, 0xaf, -0xe3, 0x0d, 0xae, 0x8d, 0x1c, 0x81, 0x92, 0xd4, 0x9c, 0xaa, -0xf6, 0x27, 0x8f, 0xeb, 0x5f, 0x68, 0xff, 0x00, 0xc1, 0x2a, -0x3e, 0x1f, 0x2e, 0x87, 0xf0, 0xf6, 0xff, 0x00, 0x5c, 0x92, -0x20, 0xad, 0x2f, 0xc8, 0xac, 0x7d, 0x3b, 0xd7, 0xe5, 0xcf, -0xc4, 0x0d, 0x71, 0xfe, 0x28, 0x7e, 0xd0, 0xba, 0xa5, 0xdb, -0x4a, 0x24, 0x8d, 0xef, 0x99, 0x51, 0xb7, 0x6e, 0x5c, 0x6e, -0xc7, 0x5a, 0xfd, 0x77, 0xd1, 0xbe, 0x29, 0x78, 0x7b, 0xf6, -0x62, 0xfd, 0x94, 0xac, 0x52, 0x4b, 0x98, 0x1b, 0x52, 0x96, -0xc1, 0xe4, 0x58, 0xc4, 0xaa, 0xac, 0x18, 0x83, 0x82, 0x45, -0x00, 0x7c, 0x85, 0xff, 0x00, 0x05, 0x5a, 0xf8, 0x9c, 0xba, -0x9e, 0xb3, 0x1e, 0x8f, 0x0c, 0xdb, 0xf7, 0x48, 0x43, 0x28, -0x27, 0xa0, 0x35, 0xbb, 0xff, 0x00, 0x04, 0x7a, 0xf8, 0x76, -0x6e, 0x7c, 0x47, 0xab, 0xf8, 0x92, 0x58, 0xc9, 0x58, 0x61, -0xd8, 0x8c, 0x7a, 0x75, 0x03, 0xfc, 0x6b, 0xe0, 0x5f, 0x8a, -0x7f, 0x10, 0x35, 0x1f, 0x8c, 0x3e, 0x3a, 0x6b, 0xdb, 0x89, -0x0c, 0xaf, 0x34, 0xa4, 0x22, 0xe4, 0x9c, 0x02, 0x7d, 0xeb, -0xf7, 0x13, 0xfe, 0x09, 0xf1, 0xf0, 0x8c, 0x7c, 0x2e, 0xf8, -0x11, 0xa6, 0xf9, 0xd1, 0x14, 0xbc, 0xbd, 0x02, 0x57, 0x2c, -0xbb, 0x4e, 0x3a, 0xff, 0x00, 0x5a, 0x00, 0xfa, 0x76, 0x46, -0x11, 0xa1, 0x63, 0xd8, 0x57, 0x83, 0x7c, 0x46, 0xbf, 0xfb, -0x66, 0xb9, 0xb3, 0x39, 0x08, 0x2b, 0xda, 0xf5, 0xdb, 0x9f, -0xb2, 0xe9, 0xb2, 0xbf, 0xb5, 0x7c, 0xeb, 0xab, 0x5c, 0x9b, -0xcd, 0x4e, 0xe2, 0x53, 0xce, 0x5a, 0xbe, 0x13, 0x8a, 0x31, -0x1c, 0xb4, 0xa1, 0x45, 0x75, 0x3f, 0x35, 0xe3, 0x3c, 0x57, -0x2d, 0x18, 0x61, 0xd7, 0x57, 0x72, 0xa5, 0x14, 0x51, 0x5f, -0x9b, 0x9f, 0x92, 0x05, 0x14, 0xa0, 0x64, 0xf1, 0xcd, 0x3f, -0xec, 0xd3, 0xf6, 0x85, 0xcf, 0xe1, 0x4e, 0xcd, 0xec, 0x16, -0x6f, 0x64, 0x47, 0x45, 0x39, 0xa3, 0x91, 0x3e, 0xf4, 0x6c, -0x3f, 0x0a, 0x6d, 0x01, 0xb6, 0xe1, 0x45, 0x14, 0x52, 0x02, -0xd6, 0x9c, 0xaa, 0xd7, 0x48, 0x1b, 0x18, 0xcf, 0x7a, 0xf7, -0x2f, 0x09, 0x69, 0xb6, 0x12, 0x58, 0x2b, 0xac, 0x51, 0x33, -0xfd, 0x2b, 0xc0, 0xc8, 0xcf, 0x7c, 0x57, 0xa3, 0xfc, 0x29, -0xd5, 0x9d, 0x6e, 0x4d, 0xb9, 0x39, 0xcf, 0xa9, 0xaf, 0xa9, -0xc8, 0x31, 0x30, 0xa5, 0x89, 0x54, 0xe7, 0x1b, 0xf3, 0x1f, -0x67, 0xc2, 0xf8, 0xba, 0x74, 0x71, 0x6a, 0x95, 0x48, 0xdf, -0x9b, 0xa9, 0xeb, 0x88, 0xa1, 0x06, 0x00, 0x00, 0x0e, 0xc2, -0x9f, 0x45, 0x15, 0xfa, 0xd1, 0xfb, 0x90, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x57, 0x94, 0xfc, 0x5f, 0xd4, -0x3e, 0x48, 0xad, 0x94, 0xfd, 0xe3, 0x5e, 0xa7, 0x23, 0x6c, -0x42, 0x7d, 0x05, 0x78, 0x2f, 0xc4, 0x4b, 0xf3, 0x7b, 0xaf, -0xba, 0xe7, 0x88, 0xf8, 0xaf, 0x95, 0xe2, 0x3a, 0xfe, 0xcb, -0x06, 0xe0, 0xbe, 0xd6, 0x87, 0xc5, 0x71, 0x66, 0x27, 0xd8, -0xe5, 0xee, 0x0b, 0x79, 0x3b, 0x1c, 0xb5, 0x14, 0x51, 0x5f, -0x93, 0x1f, 0x87, 0x85, 0x76, 0x7f, 0x0c, 0x2c, 0x7e, 0xd3, -0xaa, 0x99, 0x08, 0xc8, 0xce, 0x2b, 0x8c, 0x63, 0x80, 0x6b, -0xd7, 0x3e, 0x13, 0xe9, 0xde, 0x5d, 0xa0, 0x94, 0x8e, 0x71, -0x9e, 0x95, 0xee, 0x64, 0xb4, 0x3d, 0xbe, 0x36, 0x0b, 0xb6, -0xa7, 0xd1, 0xf0, 0xf6, 0x1f, 0xeb, 0x39, 0x8d, 0x35, 0xd1, -0x6a, 0x7a, 0x42, 0xae, 0xd0, 0x07, 0xa5, 0x3a, 0x8a, 0x2b, -0xf6, 0x73, 0xfa, 0x08, 0x28, 0xa2, 0x9a, 0xcd, 0xb4, 0x13, -0xe9, 0x40, 0x1e, 0x67, 0xf1, 0x7b, 0x51, 0xdb, 0x6d, 0x15, -0xb8, 0x3f, 0x78, 0xd7, 0x93, 0xd7, 0x5f, 0xf1, 0x32, 0xf4, -0xdd, 0x6b, 0xdb, 0x33, 0x90, 0x95, 0xc8, 0x57, 0xe2, 0xf9, -0xcd, 0x7f, 0x6f, 0x8d, 0x9c, 0xbb, 0x68, 0x7f, 0x3e, 0x71, -0x06, 0x27, 0xeb, 0x39, 0x8d, 0x49, 0x74, 0x5a, 0x7d, 0xc1, -0x45, 0x14, 0x57, 0x88, 0x7c, 0xe9, 0xad, 0xe1, 0x7b, 0x2f, -0xb7, 0x6b, 0x56, 0xa9, 0x8c, 0xfc, 0xe3, 0xf9, 0xd7, 0xd1, -0xa8, 0x81, 0x10, 0x01, 0xc0, 0x03, 0x15, 0xe2, 0xff, 0x00, -0x0a, 0xac, 0x7e, 0xd1, 0xac, 0x89, 0x08, 0xe1, 0x06, 0x6b, -0xda, 0xeb, 0xf5, 0x1e, 0x18, 0xa3, 0xc9, 0x85, 0x95, 0x4f, -0xe6, 0x7f, 0x91, 0xfb, 0x3f, 0x07, 0x61, 0xfd, 0x9e, 0x0a, -0x55, 0x5f, 0xda, 0x7f, 0x90, 0x51, 0x45, 0x15, 0xf6, 0x47, -0xdf, 0x05, 0x14, 0x51, 0x40, 0x05, 0x41, 0x78, 0xfe, 0x5d, -0xbc, 0x87, 0xd0, 0x54, 0xf5, 0x8b, 0xe2, 0xdb, 0xbf, 0xb1, -0xe8, 0xd3, 0x3e, 0x71, 0xf2, 0xd6, 0x35, 0xa6, 0xa9, 0xd3, -0x94, 0xdf, 0x44, 0x73, 0xe2, 0x2a, 0x2a, 0x54, 0xa5, 0x51, -0xf4, 0x47, 0x84, 0xf8, 0xaa, 0xeb, 0xed, 0x7a, 0xed, 0xcb, -0xe7, 0x80, 0x71, 0x59, 0x34, 0xf9, 0xe4, 0x33, 0x4f, 0x24, -0x84, 0xe4, 0xb3, 0x13, 0x4c, 0xaf, 0xc1, 0xea, 0xcf, 0xda, -0x54, 0x94, 0xfb, 0xb6, 0x7f, 0x34, 0x57, 0xa9, 0xed, 0x6a, -0xca, 0xa3, 0xea, 0xdb, 0x0a, 0x28, 0xa7, 0x20, 0xcb, 0x01, -0x59, 0x18, 0xef, 0xa1, 0xeb, 0xff, 0x00, 0x08, 0x6c, 0xfc, -0xbd, 0x3a, 0x69, 0x8f, 0x73, 0x8a, 0xf4, 0x5a, 0xe5, 0x7e, -0x1c, 0x5a, 0xfd, 0x97, 0xc2, 0xd6, 0xe7, 0x18, 0x2e, 0x4b, -0x7e, 0xb5, 0xd5, 0x57, 0xed, 0xd9, 0x55, 0x2f, 0x65, 0x82, -0xa5, 0x1f, 0x23, 0xfa, 0x2b, 0x25, 0xa3, 0xec, 0x32, 0xfa, -0x30, 0xf2, 0x4f, 0xef, 0x3c, 0xcb, 0xe2, 0xce, 0x9e, 0xcf, -0x08, 0x9f, 0x19, 0x03, 0x80, 0x6b, 0xc9, 0xab, 0xe8, 0xff, -0x00, 0x12, 0x69, 0x23, 0x56, 0xd3, 0x64, 0x8b, 0x1f, 0x36, -0x38, 0xaf, 0x9f, 0xf5, 0xbd, 0x2d, 0xf4, 0xbb, 0xe9, 0x22, -0x20, 0x9c, 0x1e, 0xb8, 0xaf, 0x82, 0xe2, 0x4c, 0x1c, 0xa9, -0x62, 0x3e, 0xb0, 0x96, 0x92, 0x3f, 0x33, 0xe2, 0xec, 0x04, -0xe8, 0xe2, 0xbe, 0xb2, 0x97, 0xbb, 0x2f, 0xcc, 0xa1, 0x45, -0x14, 0x57, 0xc7, 0x1f, 0x02, 0x14, 0x51, 0x45, 0x00, 0x28, -0x66, 0x5e, 0x55, 0x8a, 0x9a, 0xd0, 0xd3, 0xb5, 0xeb, 0xbd, -0x3d, 0xc3, 0x0b, 0x89, 0x00, 0x1e, 0xf5, 0x9d, 0x45, 0x69, -0x09, 0xce, 0x9b, 0xe6, 0x83, 0xb1, 0xa5, 0x3a, 0x93, 0xa5, -0x2e, 0x68, 0x36, 0x99, 0xe9, 0xbe, 0x1b, 0xf8, 0x94, 0xa8, -0xc1, 0x27, 0x72, 0xff, 0x00, 0x5c, 0xd7, 0xa4, 0xe9, 0x5a, -0xc4, 0x3a, 0xb4, 0x3b, 0xe3, 0x3c, 0x57, 0xcd, 0x3c, 0x8e, -0x87, 0x1f, 0x4a, 0xdf, 0xf0, 0xbf, 0x89, 0xa6, 0xd1, 0xaf, -0x54, 0x97, 0x2e, 0x87, 0x8c, 0x13, 0xc5, 0x7d, 0x7e, 0x5b, -0xc4, 0x15, 0x69, 0x49, 0x53, 0xc4, 0x6b, 0x1e, 0xe7, 0xde, -0x65, 0x1c, 0x53, 0x5a, 0x84, 0xa3, 0x4b, 0x15, 0xac, 0x7b, -0x9f, 0x43, 0xd5, 0x3b, 0xd7, 0xc2, 0x9a, 0xad, 0xa1, 0x6b, -0x31, 0xea, 0xf6, 0x6b, 0x2a, 0x90, 0x09, 0x1d, 0x33, 0x4b, -0xa8, 0x3e, 0x01, 0xaf, 0xd3, 0x29, 0xd4, 0x8d, 0x58, 0xa9, -0xc5, 0xe8, 0xcf, 0xd8, 0x29, 0x55, 0x85, 0x68, 0x2a, 0x90, -0x77, 0x4c, 0xe7, 0xb5, 0x49, 0x31, 0x9e, 0x6b, 0x82, 0xd7, -0xe5, 0xf9, 0x9b, 0x9a, 0xec, 0x75, 0x59, 0x7e, 0xf5, 0x79, -0xfe, 0xbd, 0x37, 0xcc, 0xdc, 0xd6, 0x86, 0xa7, 0x11, 0xe2, -0x29, 0xf8, 0x6a, 0xf0, 0xaf, 0x8a, 0xba, 0x8f, 0x93, 0x60, -0xc3, 0x3e, 0xa6, 0xbd, 0x8b, 0xc4, 0xb7, 0x3c, 0x3f, 0x35, -0xf3, 0x57, 0xc6, 0x9d, 0x67, 0xca, 0x49, 0x53, 0x3d, 0x01, -0x15, 0xc7, 0x8b, 0x9f, 0xb3, 0xa2, 0xd9, 0xc1, 0x8e, 0xa9, -0xec, 0xa8, 0x49, 0x9f, 0x30, 0x78, 0xe2, 0xf3, 0xed, 0x1a, -0x8c, 0xed, 0x9e, 0x84, 0xd7, 0x95, 0xea, 0xf2, 0x66, 0x57, -0xfa, 0xd7, 0x71, 0xe2, 0x2b, 0xaf, 0x32, 0x59, 0x5b, 0x3d, -0x58, 0x9a, 0xf3, 0xdd, 0x49, 0xf3, 0x2b, 0xfd, 0x6b, 0xe4, -0x30, 0x8b, 0x9a, 0x4e, 0x47, 0xc1, 0xe0, 0x17, 0x34, 0x9c, -0x99, 0xdb, 0xfe, 0xce, 0xda, 0x0f, 0xfc, 0x24, 0x7f, 0x19, -0xbc, 0x3f, 0x0b, 0x26, 0xf8, 0xad, 0xe5, 0x37, 0x4e, 0x3d, -0x90, 0x12, 0x3f, 0x5c, 0x57, 0xed, 0x9f, 0x86, 0x6c, 0x7f, -0xb3, 0x34, 0x6b, 0x1b, 0x5e, 0x86, 0x18, 0x51, 0x0e, 0x3d, -0x40, 0xe7, 0xf5, 0xaf, 0xca, 0xcf, 0xf8, 0x27, 0x8f, 0x84, -0xce, 0xbf, 0xf1, 0x57, 0x50, 0xd4, 0x19, 0x37, 0x47, 0x69, -0x1c, 0x51, 0x03, 0x8e, 0xee, 0xc5, 0x8f, 0x3f, 0x48, 0xcf, -0xe7, 0x5f, 0xac, 0x36, 0xbc, 0x60, 0x57, 0xd8, 0xe1, 0xe3, -0x6a, 0x67, 0xdf, 0xe1, 0x23, 0xcb, 0x4c, 0xd6, 0xb6, 0x3d, -0x2b, 0x5e, 0xd8, 0xf1, 0x59, 0x16, 0xbd, 0xb9, 0xad, 0x9b, -0x61, 0xd2, 0xba, 0x8e, 0xc3, 0x42, 0x0e, 0xd5, 0x7e, 0x23, -0xd2, 0xa8, 0xc1, 0x57, 0xa2, 0xe9, 0x40, 0x16, 0x63, 0xe9, -0x53, 0x25, 0x42, 0x86, 0xa7, 0x43, 0x9a, 0x00, 0x78, 0x39, -0xa5, 0xa4, 0x1d, 0x29, 0xc3, 0xad, 0x00, 0x31, 0x8d, 0x42, -0xd5, 0x2b, 0x9a, 0x85, 0xcd, 0x00, 0x45, 0x21, 0xc5, 0x51, -0x9d, 0xba, 0xd5, 0xb9, 0x4e, 0x05, 0x51, 0x9d, 0xb8, 0x34, -0x01, 0xe2, 0xff, 0x00, 0xb5, 0x67, 0x89, 0xd7, 0xc3, 0x7f, -0x06, 0x35, 0xdc, 0x36, 0xd9, 0xaf, 0x95, 0x6c, 0xa3, 0xe7, -0x92, 0x5d, 0x80, 0x3f, 0xa6, 0x6a, 0xaf, 0xec, 0x9f, 0xe1, -0x53, 0xa2, 0x7c, 0x39, 0xd3, 0x4b, 0x26, 0xd7, 0xb8, 0x1e, -0x73, 0x71, 0xeb, 0xd2, 0xbc, 0xeb, 0xf6, 0xd1, 0xd5, 0xa4, -0xd6, 0xb5, 0xef, 0x05, 0x78, 0x3a, 0xdd, 0x98, 0xb5, 0xcc, -0xcd, 0x7b, 0x32, 0x2f, 0x71, 0x9f, 0x2d, 0x3d, 0xfa, 0xef, -0x3f, 0x85, 0x7d, 0x35, 0xf0, 0xef, 0x45, 0x4d, 0x17, 0x41, -0xb2, 0xb5, 0x8d, 0x76, 0xac, 0x31, 0x2a, 0x00, 0x07, 0xa0, -0xaf, 0x9d, 0xa5, 0xfe, 0xd1, 0x9a, 0xd4, 0x9f, 0x4a, 0x71, -0x4b, 0xe6, 0xf5, 0x7f, 0x81, 0xf2, 0x74, 0x7f, 0xda, 0xb3, -0xba, 0xb5, 0x3a, 0x52, 0x8a, 0x8f, 0xce, 0x5a, 0xb3, 0xb9, -0xb5, 0x5d, 0xb1, 0x8a, 0x9a, 0x9b, 0x18, 0xda, 0x80, 0x53, -0xab, 0xe8, 0x8f, 0xac, 0x0a, 0xf1, 0x2f, 0xdb, 0x0a, 0xda, -0xe2, 0xf3, 0xe0, 0x5e, 0xbf, 0x05, 0xa4, 0x66, 0x49, 0xe5, -0x88, 0xa0, 0x03, 0xd3, 0xbd, 0x7b, 0x6d, 0x73, 0xbf, 0x10, -0x34, 0x15, 0xf1, 0x37, 0x84, 0x35, 0x3d, 0x38, 0xae, 0xe3, -0x3c, 0x2c, 0x83, 0x8c, 0xf5, 0x14, 0x01, 0xfc, 0xc9, 0x78, -0xaa, 0xd5, 0xf4, 0xbf, 0x11, 0xde, 0xc3, 0xca, 0xbc, 0x52, -0xb0, 0xce, 0x7b, 0xe7, 0x9a, 0xeb, 0x74, 0x6f, 0x8d, 0x7a, -0xee, 0x8f, 0xe1, 0xb6, 0xd2, 0x63, 0xd4, 0x6e, 0xc4, 0x05, -0x4a, 0xec, 0x12, 0x9d, 0xbc, 0xf5, 0xe2, 0xbd, 0x2f, 0xf6, -0xb7, 0xfd, 0x9f, 0x35, 0x6f, 0x87, 0x3e, 0x3f, 0xd4, 0xa4, -0x8e, 0xc6, 0x44, 0xb1, 0x32, 0x17, 0x12, 0xb8, 0x23, 0x76, -0x4e, 0x49, 0xe9, 0x5f, 0x37, 0x10, 0x54, 0xe0, 0xd0, 0x06, -0xae, 0x89, 0xae, 0x4b, 0xa5, 0x6a, 0xa2, 0xf4, 0x3b, 0x09, -0x83, 0x6e, 0xdc, 0x0f, 0x39, 0xcd, 0x75, 0x9e, 0x3a, 0xf8, -0xd3, 0xe2, 0x5f, 0x1b, 0x41, 0x1d, 0xa5, 0xe6, 0xa7, 0x71, -0x35, 0x94, 0x68, 0x11, 0x62, 0x79, 0x09, 0x18, 0xaf, 0x3f, -0x55, 0x2e, 0x40, 0x50, 0x49, 0x3d, 0x85, 0x7a, 0x47, 0xc2, -0x3f, 0x81, 0x5e, 0x24, 0xf8, 0xad, 0xe2, 0x4b, 0x5d, 0x36, -0xcb, 0x4d, 0xbb, 0xf2, 0xa6, 0x60, 0x3c, 0xf5, 0x88, 0xed, -0x1c, 0xfa, 0xe2, 0x80, 0x3d, 0x03, 0xf6, 0x2e, 0xf8, 0x15, -0xa8, 0x7c, 0x5e, 0xf8, 0xb3, 0xa6, 0x40, 0xb6, 0xcc, 0xf6, -0x71, 0x9f, 0x31, 0xd8, 0xa8, 0x23, 0x19, 0xf7, 0xaf, 0xe8, -0x3b, 0xc3, 0xda, 0x3c, 0x5e, 0x1f, 0xd1, 0x6c, 0xf4, 0xf8, -0x14, 0x24, 0x56, 0xf1, 0x2a, 0x00, 0xa3, 0x03, 0x81, 0x5f, -0x3e, 0x7e, 0xc7, 0xff, 0x00, 0xb2, 0x9e, 0x97, 0xf0, 0x13, -0xc2, 0x76, 0x32, 0xbc, 0x29, 0x26, 0xac, 0xf0, 0x00, 0xf2, -0x90, 0x0b, 0x03, 0x8e, 0xfc, 0x0a, 0xfa, 0x52, 0x80, 0x39, -0x0f, 0x88, 0xba, 0x8f, 0xd8, 0xf4, 0x79, 0x00, 0x38, 0x24, -0x57, 0x84, 0x03, 0x9c, 0x9f, 0x5e, 0x6b, 0xd3, 0xbe, 0x2d, -0xea, 0x5d, 0x2d, 0xd4, 0xfd, 0xe2, 0x05, 0x79, 0x8d, 0x7e, -0x47, 0xc4, 0x35, 0xfd, 0xae, 0x35, 0xc7, 0xa4, 0x4f, 0xc2, -0xf8, 0xab, 0x13, 0xed, 0xf3, 0x07, 0x05, 0xb4, 0x55, 0x82, -0x8a, 0x28, 0xaf, 0x98, 0x3e, 0x34, 0xd7, 0xf0, 0xae, 0x9b, -0xfd, 0xa9, 0xac, 0xc5, 0x11, 0xe5, 0x7a, 0x9a, 0xf6, 0xbb, -0x6f, 0x07, 0x5a, 0x2c, 0x28, 0x1a, 0x34, 0x27, 0x1f, 0xdd, -0xaf, 0x3b, 0xf8, 0x51, 0xa6, 0xfd, 0xa2, 0xf9, 0xe7, 0x23, -0x80, 0x70, 0x0d, 0x7b, 0x38, 0xe2, 0xbf, 0x4b, 0xe1, 0xdc, -0x15, 0x37, 0x86, 0xf6, 0xb5, 0x23, 0x76, 0xd9, 0xfb, 0x07, -0x0a, 0x65, 0xd4, 0xa5, 0x83, 0x75, 0xaa, 0xc6, 0xee, 0x4c, -0xe3, 0x35, 0xbf, 0x01, 0xc3, 0x75, 0x6c, 0xde, 0x4a, 0x20, -0x38, 0xec, 0x2b, 0xc7, 0xb5, 0xcd, 0x29, 0xf4, 0x9b, 0xc7, -0x89, 0xb2, 0x79, 0xf4, 0xaf, 0xa5, 0x3a, 0xd7, 0x92, 0xfc, -0x58, 0xd2, 0xd6, 0x17, 0x17, 0x08, 0xb8, 0x1e, 0x82, 0x96, -0x7f, 0x96, 0x52, 0x54, 0x3e, 0xb1, 0x4d, 0x59, 0xa2, 0x78, -0x9f, 0x27, 0xa2, 0xb0, 0xcf, 0x13, 0x49, 0x59, 0xc4, 0xf3, -0x4a, 0x28, 0xa2, 0xbf, 0x35, 0x3f, 0x22, 0x0a, 0xea, 0xfe, -0x1c, 0x4b, 0xe5, 0xeb, 0x68, 0x07, 0xde, 0x73, 0x81, 0x5c, -0xa5, 0x74, 0x9e, 0x02, 0x65, 0x4d, 0x76, 0x37, 0x63, 0xd0, -0xf1, 0xf5, 0xaf, 0x43, 0x2f, 0x7c, 0xb8, 0xba, 0x6f, 0xcc, -0xf4, 0xf2, 0xb7, 0xcb, 0x8d, 0xa4, 0xfc, 0xd1, 0xf4, 0x08, -0xe9, 0x4b, 0x4c, 0x4e, 0x53, 0xf0, 0xa7, 0xd7, 0xee, 0x68, -0xfe, 0x91, 0x41, 0x45, 0x14, 0x50, 0x30, 0xa2, 0x8a, 0x28, -0x02, 0x9e, 0xab, 0x70, 0x2d, 0xac, 0x65, 0x7c, 0xf4, 0x15, -0xf3, 0x96, 0xb1, 0x73, 0xf6, 0xbd, 0x52, 0xe6, 0x4c, 0xe7, -0x2e, 0x6b, 0xdc, 0xbc, 0x7b, 0xa8, 0xad, 0x8e, 0x89, 0x31, -0x2d, 0x82, 0x46, 0x2b, 0xc0, 0x49, 0xc9, 0x24, 0xf5, 0x27, -0x35, 0xf9, 0xbf, 0x14, 0xd7, 0xbd, 0x48, 0x51, 0x5d, 0x35, -0x3f, 0x24, 0xe3, 0x4c, 0x47, 0x35, 0x5a, 0x74, 0x17, 0x4d, -0x44, 0xa2, 0x8a, 0x2b, 0xe1, 0x0f, 0xcd, 0x45, 0x44, 0xf3, -0x25, 0x44, 0x1f, 0xc4, 0xd8, 0xaf, 0x7f, 0xf0, 0x2d, 0x88, -0xb5, 0xd1, 0xe3, 0x3d, 0x09, 0x15, 0xe1, 0xda, 0x0d, 0xaf, -0xdb, 0x35, 0x78, 0x13, 0x19, 0xc1, 0xcd, 0x7d, 0x13, 0xa3, -0x5b, 0xfd, 0x97, 0x4e, 0x85, 0x31, 0xd1, 0x6b, 0xee, 0xf8, -0x5a, 0x8d, 0xea, 0x4e, 0xb3, 0xf4, 0x3f, 0x4a, 0xe0, 0xbc, -0x3f, 0x35, 0x5a, 0x95, 0xdf, 0x4d, 0x0b, 0xd4, 0x51, 0x45, -0x7e, 0x90, 0x7e, 0xb6, 0x15, 0x05, 0xdb, 0xf9, 0x56, 0xf2, -0x37, 0xa2, 0xd4, 0xf5, 0x99, 0xe2, 0x19, 0xbc, 0x8d, 0x1a, -0xe5, 0xc7, 0x5d, 0x86, 0xb2, 0xab, 0x2e, 0x48, 0x4a, 0x5d, -0x91, 0x8d, 0x69, 0xfb, 0x3a, 0x72, 0x9f, 0x64, 0xcf, 0x9f, -0xfc, 0x49, 0x72, 0x6e, 0xf5, 0x8b, 0x99, 0x33, 0x9f, 0x9c, -0xd6, 0x65, 0x4f, 0x7a, 0x73, 0x77, 0x26, 0x7d, 0x6a, 0x0a, -0xfc, 0x1a, 0xac, 0x9c, 0xea, 0x4a, 0x4f, 0xab, 0x3f, 0x99, -0xab, 0xcd, 0xd4, 0xab, 0x39, 0x3e, 0xad, 0x85, 0x14, 0x50, -0x4e, 0x05, 0x64, 0x60, 0xcf, 0x56, 0xf8, 0x3d, 0x6c, 0x04, -0x53, 0xcd, 0xeb, 0xc0, 0xaf, 0x50, 0xae, 0x07, 0xe1, 0x4d, -0xb0, 0x87, 0x4a, 0x1e, 0xa4, 0x64, 0xd7, 0x7d, 0x5f, 0xb3, -0xe4, 0xb0, 0xf6, 0x78, 0x1a, 0x68, 0xfe, 0x83, 0xe1, 0xea, -0x7e, 0xcf, 0x2d, 0xa4, 0xbc, 0x82, 0x8a, 0x28, 0xaf, 0x70, -0xfa, 0x30, 0xa2, 0x8a, 0x28, 0x00, 0xae, 0x0b, 0xe2, 0xa6, -0xa4, 0x2d, 0xf4, 0x87, 0x88, 0x1e, 0x5b, 0x8a, 0xee, 0xd8, -0x85, 0x52, 0x4f, 0x41, 0x5e, 0x29, 0xf1, 0x43, 0x57, 0x17, -0x97, 0xab, 0x0a, 0x36, 0x40, 0x3c, 0xd7, 0xcf, 0x67, 0xb8, -0x8f, 0x61, 0x82, 0x97, 0x77, 0xa1, 0xf2, 0xbc, 0x4b, 0x8b, -0x58, 0x6c, 0xbe, 0x6a, 0xfa, 0xcb, 0x43, 0x86, 0x1d, 0x28, -0xa2, 0x8a, 0xfc, 0x74, 0xfc, 0x10, 0x2a, 0xce, 0x9f, 0x0f, -0x9f, 0x77, 0x1a, 0x0e, 0xe4, 0x55, 0x6a, 0xe8, 0xbc, 0x0f, -0xa7, 0x9b, 0xfd, 0x62, 0x11, 0xb7, 0x23, 0x78, 0xae, 0x8c, -0x3d, 0x37, 0x5a, 0xb4, 0x69, 0xae, 0xac, 0xea, 0xc2, 0x52, -0x75, 0xeb, 0xc2, 0x9a, 0xea, 0xcf, 0x72, 0xf0, 0xfd, 0xa8, -0xb3, 0xd1, 0xed, 0x62, 0x1c, 0x61, 0x2b, 0x4a, 0x99, 0x1a, -0x08, 0xd1, 0x54, 0x74, 0x03, 0x14, 0xfa, 0xfd, 0xde, 0x9c, -0x79, 0x20, 0xa2, 0xba, 0x1f, 0xd2, 0xd4, 0xa0, 0xa9, 0xd3, -0x8c, 0x17, 0x45, 0x61, 0x0f, 0x35, 0xc6, 0x78, 0xcb, 0xc1, -0xcb, 0xab, 0x44, 0xd2, 0x42, 0xaa, 0xad, 0x8e, 0x70, 0x2b, -0xb4, 0xa6, 0xb2, 0x82, 0x08, 0x23, 0x23, 0xd2, 0xb1, 0xc4, -0xe1, 0xa9, 0xe2, 0xa9, 0xba, 0x75, 0x16, 0x87, 0x3e, 0x2f, -0x09, 0x4b, 0x1b, 0x49, 0xd2, 0xaa, 0xae, 0x99, 0xf3, 0x3e, -0xa5, 0xa5, 0x4b, 0xa5, 0xce, 0xe8, 0xe0, 0x9c, 0x1e, 0xb5, -0x4c, 0x1c, 0xfb, 0x57, 0xd0, 0x9a, 0xdf, 0x84, 0xad, 0x75, -0x44, 0x62, 0xb1, 0x22, 0xb9, 0xef, 0x8a, 0xf3, 0x6d, 0x7f, -0xe1, 0xbd, 0xd5, 0xab, 0xb3, 0xc6, 0x7e, 0x5f, 0x6a, 0xfc, -0xbf, 0x1f, 0x90, 0xe2, 0x30, 0xcd, 0xca, 0x92, 0xe6, 0x89, -0xf8, 0xce, 0x67, 0xc3, 0x38, 0xac, 0x1b, 0x72, 0xa2, 0xb9, -0xa2, 0x70, 0x94, 0x55, 0x9b, 0xcb, 0x09, 0x6c, 0x1f, 0x6c, -0x80, 0xfe, 0x55, 0x58, 0x1c, 0xd7, 0xcb, 0xc9, 0x38, 0xbb, -0x49, 0x59, 0x9f, 0x1d, 0x28, 0xca, 0x0f, 0x96, 0x4a, 0xcc, -0x28, 0xa2, 0x8a, 0x42, 0x0a, 0x0f, 0x4e, 0x38, 0xa2, 0x8a, -0x18, 0x99, 0xdf, 0x7c, 0x37, 0xf1, 0x0b, 0x5b, 0xdc, 0x08, -0x1d, 0x89, 0xcf, 0x00, 0x13, 0x5e, 0x95, 0x7f, 0x2e, 0xe5, -0xcf, 0x6a, 0xf0, 0x3d, 0x06, 0xf0, 0xd9, 0xea, 0x91, 0x38, -0x24, 0x73, 0x8c, 0x0a, 0xf6, 0x8f, 0x3f, 0x7d, 0x84, 0x6c, -0x4e, 0x49, 0x5a, 0xfd, 0x3f, 0x86, 0x71, 0x52, 0xab, 0x41, -0xd2, 0x97, 0xd9, 0x3f, 0x64, 0xe0, 0xfc, 0x6c, 0xab, 0xe1, -0xa5, 0x46, 0x6f, 0xe1, 0x31, 0x35, 0x79, 0x70, 0x8d, 0x5e, -0x7d, 0xaf, 0xcd, 0x82, 0xf5, 0xda, 0xeb, 0x52, 0xe1, 0x48, -0xaf, 0x3c, 0xf1, 0x0c, 0xd8, 0x0d, 0xcd, 0x7d, 0xa1, 0xfa, -0x11, 0xe7, 0xbe, 0x27, 0xb9, 0xc2, 0xb9, 0xcf, 0xad, 0x7c, -0x8f, 0xf1, 0xb3, 0x56, 0xdd, 0x24, 0xfc, 0xf7, 0x35, 0xf5, -0x07, 0x8c, 0xef, 0x44, 0x36, 0x93, 0xbe, 0x71, 0x80, 0x6b, -0xe3, 0x0f, 0x8b, 0xda, 0x9f, 0x9d, 0x76, 0xeb, 0x9e, 0xa4, -0xd7, 0x85, 0x9b, 0x54, 0xe5, 0xa5, 0xca, 0x7c, 0xd6, 0x79, -0x57, 0x96, 0x8f, 0x2f, 0x73, 0xc6, 0x35, 0xc9, 0xbe, 0xf5, -0x70, 0xf7, 0xcf, 0x97, 0x6a, 0xea, 0xb5, 0xc9, 0xb8, 0x6e, -0x6b, 0x8f, 0xbd, 0x6c, 0x93, 0x5e, 0x4e, 0x0a, 0x36, 0x47, -0x89, 0x97, 0xc2, 0xd1, 0x3f, 0x43, 0xff, 0x00, 0xe0, 0x9a, -0x3e, 0x10, 0xfb, 0x1f, 0x85, 0xaf, 0x75, 0x97, 0x8c, 0xef, -0xbb, 0xb8, 0x92, 0x50, 0xc4, 0x63, 0xe5, 0x50, 0x23, 0x5f, -0xd4, 0x39, 0xfc, 0x6b, 0xef, 0x7b, 0x51, 0x5f, 0x39, 0xfe, -0xc6, 0x5e, 0x13, 0x1e, 0x18, 0xf8, 0x45, 0xa5, 0xc6, 0x54, -0x87, 0x36, 0xf0, 0xa1, 0xca, 0xe3, 0x9d, 0xbb, 0x89, 0xe8, -0x3a, 0x96, 0xfd, 0x2b, 0xe8, 0xeb, 0x45, 0xe0, 0x57, 0xd8, -0x41, 0x5a, 0x29, 0x1f, 0x79, 0x4d, 0x72, 0xc1, 0x23, 0x56, -0xd5, 0x79, 0x15, 0xb1, 0x00, 0xe9, 0x59, 0x36, 0x8b, 0x93, -0x5b, 0x16, 0xe3, 0x91, 0x56, 0x68, 0x5f, 0x84, 0xd5, 0xd8, -0x6a, 0xa4, 0x22, 0xae, 0xc4, 0x31, 0x40, 0x13, 0xa5, 0x4c, -0xb5, 0x12, 0x0a, 0x99, 0x45, 0x00, 0x48, 0x3a, 0x52, 0x8e, -0xb4, 0x94, 0xab, 0x40, 0x10, 0xb5, 0x44, 0xdc, 0x83, 0x4f, -0x63, 0x50, 0xb9, 0xc5, 0x00, 0x41, 0x33, 0x55, 0x0b, 0x86, -0xe0, 0xd5, 0xb9, 0x9a, 0xb9, 0xdf, 0x17, 0xeb, 0x71, 0x78, -0x77, 0xc3, 0x5a, 0xae, 0xab, 0x39, 0x61, 0x0d, 0x8d, 0xac, -0xb7, 0x2f, 0xb0, 0x64, 0xed, 0x45, 0x2c, 0x71, 0xf9, 0x54, -0xc9, 0xa8, 0xa7, 0x27, 0xd0, 0x99, 0x49, 0x46, 0x2e, 0x4f, -0x64, 0x7c, 0x9f, 0x7b, 0xff, 0x00, 0x17, 0x37, 0xf6, 0xb8, -0xbc, 0x99, 0x3f, 0x7d, 0x65, 0xa3, 0x22, 0x5b, 0xab, 0x2f, -0xcc, 0x06, 0xc1, 0xcf, 0x3f, 0xef, 0xb3, 0x57, 0xda, 0x3a, -0x25, 0xb7, 0x97, 0x6f, 0x18, 0xc5, 0x7c, 0x7d, 0xfb, 0x18, -0x68, 0xd3, 0xea, 0xf3, 0x6b, 0xbe, 0x26, 0xbc, 0xf9, 0xae, -0x6f, 0xee, 0x49, 0x2e, 0x7a, 0xe4, 0x92, 0xcd, 0xfa, 0x9a, -0xfb, 0x4a, 0xc2, 0x2d, 0x91, 0x0f, 0x6a, 0xf0, 0x72, 0x54, -0xe7, 0x46, 0x58, 0x97, 0xbd, 0x49, 0x37, 0xf2, 0xe9, 0xf8, -0x1f, 0x31, 0xc3, 0xc9, 0xd4, 0xc3, 0xcf, 0x17, 0x2d, 0xea, -0xc9, 0xcb, 0xe5, 0xb2, 0xfc, 0x0b, 0x74, 0x51, 0x45, 0x7d, -0x01, 0xf5, 0x26, 0x6f, 0x88, 0x35, 0xfb, 0x3f, 0x0c, 0xe9, -0x33, 0xea, 0x37, 0xf2, 0xac, 0x36, 0xd0, 0x8c, 0xb3, 0x31, -0xc0, 0xaf, 0x9c, 0x35, 0x0f, 0xf8, 0x28, 0x6f, 0xc2, 0x7d, -0x33, 0x5b, 0x9b, 0x4e, 0xb8, 0xd7, 0x2d, 0x52, 0x48, 0x9b, -0x6b, 0x66, 0xe1, 0x78, 0x35, 0xb3, 0xfb, 0x6e, 0xf8, 0xb2, -0x4f, 0x0d, 0xfc, 0x22, 0xba, 0x58, 0x4b, 0x06, 0x90, 0x33, -0x31, 0x53, 0xd8, 0x0a, 0xfe, 0x7f, 0xb5, 0x7d, 0x6a, 0xe7, -0x59, 0xf1, 0x55, 0xd5, 0xc7, 0x98, 0xc5, 0xe7, 0xb9, 0x3c, -0x93, 0x9e, 0xa6, 0x80, 0x3f, 0x74, 0x7c, 0x69, 0xe1, 0x3f, -0x86, 0x5f, 0xb6, 0x2e, 0x9f, 0x29, 0xd2, 0xef, 0x56, 0xfe, -0x7f, 0x2c, 0x9f, 0xdc, 0xfc, 0xe3, 0x18, 0xf6, 0x35, 0xf2, -0x1f, 0x8b, 0xff, 0x00, 0xe0, 0x97, 0x77, 0xab, 0xaa, 0x4b, -0xfd, 0x9d, 0xa4, 0xdc, 0xbd, 0xbe, 0x7e, 0x52, 0x22, 0x3f, -0xe3, 0x5f, 0x49, 0xff, 0x00, 0xc1, 0x2f, 0xfc, 0x20, 0xf6, -0x1f, 0x0d, 0xae, 0xf5, 0x79, 0x98, 0x31, 0x94, 0x88, 0x90, -0xe2, 0xbe, 0xe1, 0xa0, 0x0f, 0xca, 0x6f, 0x87, 0x1f, 0xf0, -0x49, 0xd4, 0xd4, 0x6f, 0xe2, 0x9b, 0x59, 0x33, 0x58, 0x22, -0xb6, 0x48, 0x74, 0x23, 0xff, 0x00, 0x66, 0xaf, 0xbc, 0x7e, -0x08, 0x7e, 0xcb, 0xde, 0x17, 0xf8, 0x2f, 0x63, 0x14, 0x56, -0x56, 0xd1, 0x5c, 0x4f, 0x18, 0xc0, 0x99, 0x94, 0xe7, 0xf9, -0x9a, 0xf6, 0x8a, 0x28, 0x01, 0x00, 0x0a, 0x30, 0x06, 0x00, -0xed, 0x4c, 0x99, 0xc4, 0x68, 0xcc, 0x7b, 0x0c, 0xd4, 0x95, -0x9b, 0xaf, 0x5c, 0x8b, 0x4d, 0x32, 0x67, 0x3e, 0x95, 0x9d, -0x49, 0x28, 0x41, 0xc9, 0xf4, 0x32, 0xab, 0x35, 0x4e, 0x0e, -0x6f, 0xa2, 0x3c, 0x4b, 0xe2, 0x0e, 0xa1, 0xf6, 0xdd, 0x75, -0x94, 0x1c, 0x84, 0xae, 0x62, 0xad, 0x6a, 0x77, 0x06, 0xeb, -0x51, 0xb8, 0x94, 0xf7, 0x73, 0x55, 0x6b, 0xf0, 0xac, 0x55, -0x57, 0x5a, 0xbc, 0xea, 0x3e, 0xac, 0xfe, 0x6b, 0xc6, 0x56, -0x78, 0x8c, 0x45, 0x4a, 0xaf, 0xab, 0x61, 0x45, 0x15, 0x2d, -0xac, 0x3e, 0x7d, 0xd4, 0x51, 0x8e, 0xac, 0xc0, 0x57, 0x32, -0x57, 0x76, 0x47, 0x22, 0x4e, 0x4d, 0x24, 0x7b, 0x17, 0xc2, -0xbd, 0x30, 0xda, 0xe9, 0x2b, 0x2b, 0x2e, 0x0b, 0xf3, 0x5d, -0xfd, 0x63, 0xf8, 0x5e, 0xcf, 0xec, 0x7a, 0x44, 0x2b, 0x8e, -0xd5, 0xb1, 0x5f, 0xb8, 0xe5, 0xf4, 0x56, 0x1f, 0x0b, 0x0a, -0x7d, 0x91, 0xfd, 0x1f, 0x95, 0xe1, 0xd6, 0x17, 0x07, 0x4e, -0x92, 0xe8, 0x82, 0xb8, 0x3f, 0x8a, 0x90, 0x09, 0x34, 0x9f, -0x30, 0xf4, 0x41, 0x9a, 0xef, 0x2b, 0x8e, 0xf8, 0x95, 0x18, -0x97, 0x43, 0x60, 0x7a, 0x0e, 0x6b, 0x3c, 0xd6, 0x3c, 0xf8, -0x3a, 0x8b, 0xc8, 0xcb, 0x3a, 0x8f, 0x3e, 0x5f, 0x55, 0x79, -0x1e, 0x14, 0x3a, 0x73, 0x45, 0x19, 0xce, 0x4d, 0x15, 0xf8, -0x89, 0xfc, 0xe6, 0x82, 0xb7, 0xbc, 0x16, 0xd8, 0xd7, 0xa0, -0xc9, 0xf9, 0x41, 0xc9, 0xac, 0x1a, 0xd8, 0xf0, 0x9f, 0xfc, -0x86, 0xed, 0xc7, 0xab, 0x0c, 0xd7, 0x5e, 0x11, 0xdb, 0x11, -0x07, 0xe6, 0x8e, 0xec, 0x0b, 0xe5, 0xc5, 0x53, 0x7e, 0x68, -0xfa, 0x2a, 0x26, 0xdf, 0x1a, 0x9f, 0x51, 0x52, 0x54, 0x50, -0x10, 0xd1, 0x29, 0x1d, 0x31, 0x52, 0xd7, 0xee, 0xcb, 0x63, -0xfa, 0x5a, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, 0x8a, 0x0a, 0x28, -0xa6, 0xbb, 0x6d, 0x52, 0x7d, 0x05, 0x00, 0x79, 0x7f, 0xc5, -0xfd, 0x4b, 0x11, 0x47, 0x6c, 0xad, 0xcb, 0x1e, 0x45, 0x79, -0x5d, 0x75, 0x9f, 0x12, 0x75, 0x0f, 0xb6, 0xeb, 0xc5, 0x33, -0xc2, 0x0a, 0xe4, 0xeb, 0xf1, 0x6c, 0xe2, 0xbf, 0xb7, 0xc6, -0xd4, 0x97, 0x45, 0xa1, 0xfc, 0xf5, 0x9f, 0x62, 0x7e, 0xb3, -0x98, 0xd4, 0x9f, 0x44, 0xed, 0xf7, 0x05, 0x14, 0x50, 0x4e, -0x01, 0xaf, 0x14, 0xf9, 0xe3, 0xad, 0xf8, 0x6f, 0xa7, 0x1b, -0xbd, 0x5b, 0x7e, 0x32, 0x07, 0x15, 0xee, 0xc8, 0x9b, 0x14, -0x01, 0xd8, 0x62, 0xbc, 0xcb, 0xe1, 0x2e, 0x9d, 0xb2, 0x2f, -0x34, 0x8f, 0x7a, 0xf5, 0x0a, 0xfd, 0x6f, 0x87, 0xa8, 0x7b, -0x1c, 0x12, 0x93, 0xde, 0x5a, 0x9f, 0xba, 0x70, 0xae, 0x1b, -0xd8, 0x65, 0xea, 0x4f, 0x79, 0x6a, 0x14, 0x51, 0x45, 0x7d, -0x41, 0xf6, 0x41, 0x58, 0xfe, 0x2a, 0xff, 0x00, 0x90, 0x34, -0xf9, 0xe9, 0x83, 0x9a, 0xd8, 0xac, 0x5f, 0x17, 0x02, 0xda, -0x1d, 0xc2, 0x8e, 0xa5, 0x71, 0x5c, 0xb8, 0xaf, 0xe0, 0x4f, -0xd1, 0x9c, 0x78, 0xcf, 0xf7, 0x7a, 0x9e, 0x8c, 0xf9, 0xde, -0xe5, 0xb7, 0xdc, 0xca, 0xde, 0xac, 0x6a, 0x3a, 0x92, 0xe4, -0x05, 0xb9, 0x91, 0x47, 0x63, 0x8a, 0x8e, 0xbf, 0x08, 0x96, -0xec, 0xfe, 0x68, 0x97, 0xc4, 0xc2, 0x8a, 0x28, 0x35, 0x2c, -0x93, 0xdb, 0x7e, 0x16, 0x7c, 0xda, 0x39, 0x62, 0x79, 0x3d, -0x05, 0x77, 0x35, 0xe6, 0x7f, 0x09, 0x2f, 0x83, 0xc3, 0x24, -0x7d, 0x31, 0xc0, 0x15, 0xe9, 0x95, 0xfb, 0x4e, 0x4f, 0x35, -0x3c, 0x0d, 0x36, 0xbb, 0x1f, 0xd0, 0x99, 0x05, 0x45, 0x53, -0x2e, 0xa4, 0xd7, 0x60, 0xa2, 0x8a, 0x2b, 0xda, 0x3e, 0x84, -0x28, 0xa2, 0x99, 0x24, 0x82, 0x25, 0x2c, 0xc7, 0x0a, 0x28, -0x13, 0x76, 0x32, 0xbc, 0x4d, 0xac, 0xc5, 0xa3, 0xe9, 0x93, -0x48, 0xec, 0x03, 0x6d, 0xe0, 0x66, 0xbe, 0x7b, 0xd4, 0xaf, -0x5b, 0x50, 0xbb, 0x79, 0x98, 0xe7, 0x24, 0xe2, 0xbb, 0x2f, -0x89, 0x5e, 0x28, 0xfe, 0xd0, 0xbd, 0x92, 0xd6, 0x23, 0xfb, -0xb5, 0xe2, 0xb8, 0x30, 0x30, 0x2b, 0xf2, 0x6c, 0xff, 0x00, -0x30, 0xfa, 0xdd, 0x7f, 0x65, 0x07, 0xee, 0xc7, 0xf3, 0x3f, -0x10, 0xe2, 0x8c, 0xcf, 0xeb, 0xb8, 0x9f, 0x63, 0x4d, 0xfb, -0xb0, 0xfc, 0xc2, 0x8a, 0x28, 0xaf, 0x95, 0x3e, 0x28, 0x0f, -0x4a, 0xf5, 0x7f, 0x85, 0x5a, 0x03, 0x45, 0x12, 0x5d, 0xc8, -0x87, 0x9e, 0x72, 0x6b, 0xcc, 0xb4, 0xdb, 0x26, 0xbf, 0xbb, -0x8e, 0x25, 0xee, 0x45, 0x7d, 0x13, 0xa0, 0x69, 0xeb, 0xa6, -0xe9, 0x76, 0xf0, 0xaf, 0x65, 0x19, 0xaf, 0xb0, 0xe1, 0xbc, -0x1f, 0xb6, 0xc4, 0x3a, 0xd2, 0xda, 0x3f, 0x99, 0xf7, 0xbc, -0x25, 0x80, 0xfa, 0xc6, 0x29, 0xe2, 0x26, 0xb4, 0x86, 0xde, -0xa6, 0x9d, 0x14, 0x51, 0x5f, 0xa9, 0x9f, 0xb4, 0x05, 0x14, -0x51, 0x40, 0x05, 0x45, 0x24, 0x11, 0xce, 0x30, 0xea, 0x1b, -0xeb, 0x52, 0xd1, 0x49, 0xa4, 0xf7, 0x13, 0x49, 0xe8, 0xce, -0x6b, 0x5a, 0xf0, 0x75, 0x9d, 0xfa, 0x92, 0xb0, 0xa8, 0x63, -0x5e, 0x63, 0xe2, 0x9f, 0x01, 0xdd, 0x69, 0x81, 0xe6, 0x45, -0x3e, 0x58, 0xf4, 0x15, 0xee, 0x75, 0x53, 0x50, 0xb2, 0x4b, -0xdb, 0x57, 0x8d, 0xd4, 0x1c, 0x8e, 0x33, 0x5e, 0x0e, 0x3f, -0x27, 0xc3, 0xe3, 0x22, 0xdd, 0xad, 0x2f, 0x23, 0xe6, 0x33, -0x3c, 0x87, 0x0b, 0x8f, 0x83, 0x76, 0xb4, 0xbc, 0x8f, 0x99, -0x4a, 0x95, 0x38, 0x3d, 0x69, 0x2b, 0x73, 0xc6, 0x1a, 0x6f, -0xf6, 0x66, 0xa9, 0x22, 0xf6, 0x27, 0x81, 0x58, 0x75, 0xf9, -0x0d, 0x6a, 0x6e, 0x8d, 0x49, 0x53, 0x96, 0xe8, 0xfc, 0x26, -0xbd, 0x19, 0x61, 0xea, 0xca, 0x94, 0xb7, 0x41, 0x41, 0xe9, -0x45, 0x07, 0xa5, 0x62, 0xce, 0x76, 0x36, 0xde, 0x4d, 0x97, -0xd0, 0x9e, 0xc0, 0x82, 0x6b, 0xd8, 0xb4, 0xfb, 0x93, 0x36, -0x99, 0x1b, 0x1e, 0x38, 0xe2, 0xbc, 0x6e, 0xd5, 0x7c, 0xdb, -0xd4, 0x03, 0xa9, 0x60, 0x2b, 0xd7, 0xe0, 0x5f, 0xb3, 0xe9, -0xb1, 0x27, 0xa2, 0xd7, 0xde, 0xf0, 0xa4, 0x5d, 0xe6, 0xfa, -0x1f, 0xa7, 0x70, 0x4c, 0x25, 0xcd, 0x52, 0x5d, 0x0c, 0x4d, -0x6e, 0x6e, 0xa3, 0x35, 0xe7, 0x3e, 0x25, 0xb8, 0xc0, 0x6e, -0x7b, 0x57, 0x6f, 0xad, 0xcd, 0xcb, 0x73, 0x5e, 0x6d, 0xe2, -0x8b, 0x8c, 0x6e, 0xfa, 0x57, 0xe8, 0xc7, 0xeb, 0x07, 0x92, -0xfc, 0x4a, 0xd4, 0x45, 0xbe, 0x99, 0x37, 0xcd, 0x82, 0x73, -0x5f, 0x15, 0xfc, 0x46, 0xd4, 0x3e, 0xd1, 0xa9, 0x49, 0xce, -0x40, 0xcd, 0x7d, 0x53, 0xf1, 0x8f, 0x53, 0xf2, 0x6d, 0x19, -0x33, 0x8f, 0x94, 0xd7, 0xc6, 0xde, 0x2d, 0xbb, 0xf3, 0xae, -0xe7, 0x6c, 0xf7, 0xaf, 0x92, 0xcd, 0xa7, 0xcd, 0x51, 0x40, -0xf8, 0x6c, 0xf2, 0xa7, 0x3d, 0x58, 0xd3, 0x47, 0x0b, 0xad, -0xcd, 0x92, 0x79, 0xac, 0xcf, 0x0e, 0xe9, 0x12, 0xf8, 0x8f, -0xc5, 0x9a, 0x3e, 0x95, 0x08, 0x2d, 0x2d, 0xe5, 0xe4, 0x50, -0x00, 0x06, 0x7e, 0xf3, 0x81, 0x9c, 0x7b, 0x67, 0x35, 0x36, -0xad, 0x26, 0xe9, 0x0d, 0x7a, 0x2f, 0xec, 0x9d, 0xe1, 0x86, -0xf1, 0x3f, 0xc7, 0x2d, 0x1c, 0x84, 0x0e, 0x96, 0x2a, 0xf7, -0x24, 0x37, 0x42, 0xd8, 0xd8, 0xbf, 0x8e, 0x5c, 0x1f, 0xc2, -0xb7, 0xc1, 0xc3, 0x64, 0x74, 0xe0, 0x29, 0xfc, 0x28, 0xfd, -0x70, 0xf8, 0x59, 0xa4, 0xae, 0x8f, 0xe0, 0xdd, 0x36, 0xdd, -0x53, 0x6a, 0xec, 0xdc, 0x07, 0xa0, 0xed, 0xfa, 0x62, 0xbb, -0xfb, 0x41, 0x8c, 0x56, 0x2e, 0x95, 0x6a, 0xb6, 0x96, 0xd0, -0xc2, 0xa3, 0xe5, 0x8d, 0x02, 0x0c, 0x7b, 0x0c, 0x56, 0xed, -0xb0, 0xe9, 0x5f, 0x4c, 0x7d, 0x81, 0xa9, 0x68, 0x3a, 0x56, -0xbd, 0xb8, 0xce, 0x2b, 0x32, 0xd4, 0x60, 0x0f, 0xad, 0x6b, -0x5b, 0x8e, 0x28, 0x02, 0xf4, 0x23, 0xa5, 0x5d, 0x88, 0x74, -0xaa, 0x70, 0x8e, 0x95, 0x76, 0x2e, 0xd4, 0x01, 0x32, 0x54, -0xeb, 0xda, 0xa1, 0x5a, 0x99, 0x68, 0x01, 0xd4, 0xe1, 0xd2, -0x9b, 0x4f, 0xa0, 0x0a, 0x8f, 0x50, 0x48, 0x78, 0xa9, 0x5a, -0xab, 0xca, 0x71, 0x40, 0x15, 0x66, 0x35, 0xe2, 0xff, 0x00, -0xb5, 0x7d, 0xe8, 0xb6, 0xf8, 0x17, 0xe2, 0x68, 0xfc, 0xdf, -0x2e, 0x4b, 0x85, 0x86, 0x04, 0x19, 0xe5, 0xf7, 0x4c, 0x99, -0x51, 0xf5, 0x5d, 0xd5, 0xec, 0xb3, 0x35, 0x7c, 0xcf, 0xfb, -0x5e, 0x6a, 0x6f, 0xa9, 0xcf, 0xe0, 0xbf, 0x08, 0x42, 0xc7, -0x7e, 0xab, 0xa8, 0x89, 0xa4, 0x5f, 0x54, 0x4e, 0x3f, 0x9b, -0x57, 0x97, 0x99, 0xd4, 0xf6, 0x78, 0x3a, 0xaf, 0xab, 0x56, -0x5e, 0xaf, 0x45, 0xf9, 0x9e, 0x36, 0x71, 0x57, 0xd9, 0x60, -0x2b, 0x3e, 0xad, 0x59, 0x7a, 0xbd, 0x17, 0xe2, 0xce, 0xe3, -0xf6, 0x60, 0xf0, 0xaf, 0xfc, 0x23, 0xdf, 0x0e, 0xf4, 0xa8, -0xda, 0x3d, 0x8f, 0x22, 0x79, 0xac, 0x3d, 0xcf, 0x35, 0xef, -0xd0, 0xae, 0xd8, 0xc0, 0xae, 0x37, 0xc0, 0x7a, 0x52, 0xe9, -0xba, 0x45, 0xb4, 0x0a, 0xb8, 0x58, 0xd1, 0x54, 0x0f, 0xa0, -0xae, 0xd4, 0x70, 0x31, 0x5d, 0x58, 0x5a, 0x2a, 0x85, 0x08, -0x52, 0x5d, 0x12, 0x47, 0x6e, 0x0e, 0x82, 0xc2, 0xe1, 0xa9, -0xd1, 0x5f, 0x65, 0x24, 0x2d, 0x14, 0x52, 0x12, 0x00, 0x24, -0xf0, 0x05, 0x75, 0x1d, 0x87, 0xcf, 0x1f, 0xb7, 0x0f, 0x85, -0x27, 0xf1, 0x47, 0xc1, 0x5d, 0x56, 0x1b, 0x54, 0x2f, 0x70, -0xf1, 0x94, 0x1b, 0x41, 0x24, 0x0c, 0x1c, 0xf4, 0xaf, 0xe7, -0xfb, 0x5e, 0xd1, 0xee, 0x3c, 0x33, 0xe2, 0x59, 0xad, 0xe5, -0x82, 0x48, 0x4c, 0x33, 0x10, 0x0c, 0x8a, 0x41, 0x38, 0x3d, -0x6b, 0xf6, 0xbb, 0xf6, 0xd4, 0xfd, 0xb5, 0x2c, 0xbe, 0x11, -0xdd, 0xc5, 0xe1, 0x78, 0xac, 0xe2, 0xbb, 0x9a, 0xee, 0x36, -0xdf, 0xbf, 0x9d, 0xa3, 0xf2, 0xaf, 0xc7, 0x7f, 0x8c, 0xfe, -0x37, 0x8f, 0xc6, 0xde, 0x29, 0xb8, 0xd4, 0x22, 0x89, 0x21, -0x57, 0x62, 0x42, 0xa0, 0xe0, 0x73, 0x40, 0x1f, 0xaf, 0xff, -0x00, 0xf0, 0x4d, 0x1f, 0x89, 0xfa, 0x5d, 0xdf, 0xc2, 0xc8, -0x34, 0x4f, 0x3e, 0x28, 0x64, 0x83, 0x99, 0x1a, 0x47, 0x55, -0x2c, 0xdc, 0x7a, 0x9a, 0xfb, 0x81, 0x27, 0x8e, 0x45, 0x05, -0x24, 0x56, 0x07, 0xb8, 0x60, 0x6b, 0xf9, 0xba, 0xf8, 0x2b, -0xf1, 0xfb, 0x59, 0xf8, 0x59, 0xa9, 0x45, 0x24, 0x5a, 0x84, -0xd1, 0x5a, 0xab, 0x02, 0x63, 0x50, 0x30, 0x79, 0xfa, 0x57, -0xdb, 0x9e, 0x15, 0xff, 0x00, 0x82, 0xa8, 0xe9, 0xfa, 0x66, -0x9b, 0x0c, 0x17, 0x42, 0x57, 0x91, 0x40, 0x05, 0x88, 0x7c, -0x9f, 0xfc, 0x76, 0x80, 0x3f, 0x5b, 0x37, 0x03, 0xdc, 0x7e, -0x74, 0xb5, 0xf9, 0x81, 0x65, 0xff, 0x00, 0x05, 0x5c, 0xf0, -0xf3, 0x91, 0xbd, 0xe4, 0x4f, 0xfb, 0xe8, 0x7f, 0xec, 0xb5, -0xef, 0x7f, 0xb3, 0x97, 0xed, 0xb9, 0xa4, 0xfc, 0x6d, 0xf1, -0x1d, 0xbe, 0x9b, 0x60, 0xef, 0x23, 0xcc, 0xe1, 0x46, 0x49, -0xfe, 0xab, 0x40, 0x1f, 0x62, 0x57, 0x1d, 0xf1, 0x27, 0x51, -0x16, 0x7a, 0x34, 0x8b, 0x9c, 0x12, 0x2b, 0xb1, 0xaf, 0x26, -0xf8, 0xbb, 0xa9, 0x6e, 0xd9, 0x00, 0x3d, 0x4d, 0x78, 0x99, -0xcd, 0x7f, 0x61, 0x82, 0x9c, 0xbb, 0x9f, 0x3b, 0x9f, 0xe2, -0x7e, 0xad, 0x97, 0xd4, 0x97, 0x56, 0xac, 0x79, 0x90, 0xe7, -0x9f, 0x5e, 0x68, 0xa2, 0x8a, 0xfc, 0x5c, 0xfe, 0x7b, 0x0a, -0xdb, 0xf0, 0x6d, 0x97, 0xdb, 0x7c, 0x41, 0x6e, 0x31, 0x90, -0xa7, 0x26, 0xb1, 0x2b, 0xbe, 0xf8, 0x51, 0xa7, 0x79, 0xf7, -0xef, 0x39, 0x1d, 0x2b, 0xd2, 0xcb, 0xa8, 0xfb, 0x7c, 0x5d, -0x38, 0x79, 0x9e, 0xbe, 0x53, 0x87, 0x78, 0x9c, 0x75, 0x2a, -0x7e, 0x7f, 0x91, 0xec, 0x56, 0xb1, 0xf9, 0x50, 0x22, 0xfa, -0x0a, 0x9a, 0x90, 0x71, 0x4b, 0x5f, 0xb8, 0x25, 0x65, 0x63, -0xfa, 0x39, 0x2e, 0x55, 0x60, 0xae, 0x4b, 0xe2, 0x4e, 0x3f, -0xe1, 0x1f, 0x90, 0x77, 0x3c, 0x57, 0x5b, 0x5c, 0x8f, 0xc4, -0x75, 0x23, 0x42, 0x91, 0xc7, 0x40, 0x0d, 0x79, 0xd9, 0x8f, -0xfb, 0xa5, 0x4f, 0x43, 0xca, 0xcd, 0xbf, 0xdc, 0x6a, 0xfa, -0x33, 0xc2, 0x0e, 0x32, 0x71, 0xd2, 0x92, 0x8c, 0x63, 0xeb, -0x45, 0x7e, 0x1c, 0x7f, 0x38, 0x05, 0x69, 0x78, 0x79, 0x8a, -0x6a, 0xd0, 0x9e, 0xe4, 0xe0, 0x56, 0x6d, 0x68, 0x68, 0x24, -0x2e, 0xad, 0x03, 0x1e, 0x8a, 0x73, 0x5b, 0xd0, 0xd2, 0xac, -0x5f, 0x9a, 0x3a, 0x30, 0xce, 0xd5, 0xe1, 0xea, 0x8f, 0xa3, -0xec, 0xc6, 0xdb, 0x58, 0x87, 0xfb, 0x22, 0xa7, 0xaa, 0xba, -0x69, 0x26, 0xc6, 0x12, 0x7a, 0x95, 0x15, 0x6a, 0xbf, 0x79, -0x87, 0xc2, 0x8f, 0xe9, 0x9a, 0x7a, 0xc1, 0x3f, 0x20, 0xa2, -0x8a, 0x2a, 0xcd, 0x02, 0xaa, 0xea, 0x12, 0xf9, 0x16, 0x53, -0xb9, 0xfe, 0x14, 0x26, 0xad, 0x56, 0x1f, 0x8c, 0x6f, 0x3e, -0xc7, 0xa0, 0x5e, 0x3f, 0xfd, 0x33, 0x6f, 0xe5, 0x58, 0x57, -0x9a, 0xa7, 0x4a, 0x53, 0x7d, 0x13, 0x39, 0xb1, 0x35, 0x15, -0x2a, 0x33, 0xa8, 0xfa, 0x26, 0x78, 0x1e, 0xb5, 0x75, 0xf6, -0xcd, 0x56, 0xe6, 0x5c, 0xe7, 0x2c, 0x45, 0x51, 0xa5, 0x2c, -0x5c, 0x92, 0x7a, 0x93, 0x9a, 0x4a, 0xfc, 0x1a, 0x72, 0xe7, -0x93, 0x93, 0xea, 0x7f, 0x33, 0x54, 0x9b, 0xa9, 0x37, 0x37, -0xd5, 0xdc, 0x28, 0x0b, 0xbd, 0x95, 0x47, 0x52, 0x71, 0x45, -0x5c, 0xd1, 0xed, 0xfe, 0xd5, 0xaa, 0x5b, 0xc7, 0x8c, 0xe5, -0xb3, 0x44, 0x63, 0xcf, 0x25, 0x15, 0xd4, 0x21, 0x07, 0x52, -0x6a, 0x0b, 0xab, 0x3d, 0xc3, 0xe1, 0xfd, 0x97, 0xd9, 0x74, -0x74, 0x38, 0xea, 0x31, 0x5d, 0x55, 0x67, 0x68, 0x76, 0xc2, -0xd7, 0x4d, 0x85, 0x07, 0x1c, 0x66, 0xb4, 0x6b, 0xf7, 0x5c, -0x25, 0x3f, 0x65, 0x42, 0x10, 0xec, 0x8f, 0xe9, 0x4c, 0x0d, -0x1f, 0x61, 0x86, 0x85, 0x3e, 0xc8, 0x28, 0xa2, 0x8a, 0xeb, -0x3b, 0x82, 0xb3, 0xb5, 0xf8, 0xbc, 0xdd, 0x2a, 0xe0, 0x77, -0xda, 0x71, 0x5a, 0x35, 0x15, 0xc2, 0x09, 0x61, 0x75, 0x3c, -0x82, 0x2b, 0x3a, 0x91, 0xe7, 0x83, 0x8f, 0x73, 0x2a, 0xb1, -0xe7, 0xa7, 0x28, 0xf7, 0x47, 0xcc, 0xfa, 0x94, 0x3e, 0x45, -0xf4, 0xa8, 0x7a, 0xe7, 0x9a, 0xad, 0x5b, 0xbe, 0x32, 0xb1, -0x6b, 0x2d, 0x66, 0x5c, 0x8c, 0x6f, 0x39, 0xac, 0x2a, 0xfc, -0x23, 0x11, 0x07, 0x4a, 0xb4, 0xa0, 0xfa, 0x33, 0xf9, 0xa3, -0x15, 0x4d, 0xd1, 0xaf, 0x3a, 0x6f, 0xa3, 0x61, 0x45, 0x14, -0x57, 0x39, 0xcc, 0x75, 0x7f, 0x0f, 0xf5, 0x91, 0xa6, 0x6a, -0xd1, 0xab, 0x1e, 0x09, 0xc7, 0xeb, 0x5e, 0xf1, 0x1c, 0x82, -0x55, 0x0c, 0xa4, 0x10, 0x7d, 0x2b, 0xe6, 0x08, 0x26, 0x6b, -0x79, 0x92, 0x45, 0x24, 0x15, 0x39, 0xe2, 0xbd, 0x4f, 0xc2, -0x9f, 0x11, 0xa3, 0x58, 0x12, 0x19, 0x57, 0x27, 0xa6, 0x4d, -0x7d, 0xdf, 0x0f, 0xe6, 0x94, 0xe8, 0x45, 0xe1, 0xeb, 0x3b, -0x2e, 0x87, 0xe9, 0x5c, 0x2d, 0x9c, 0xd2, 0xc3, 0x41, 0xe1, -0x71, 0x12, 0xb2, 0xe8, 0x7a, 0x7d, 0x15, 0x95, 0x6b, 0xe2, -0x0b, 0x5b, 0x98, 0xc3, 0x07, 0x03, 0x3e, 0xf5, 0x1d, 0xef, -0x8a, 0x6c, 0xac, 0x97, 0x73, 0xb8, 0xfc, 0xeb, 0xf4, 0x07, -0x88, 0xa2, 0xa3, 0xcc, 0xe4, 0xac, 0x7e, 0xa0, 0xf1, 0x74, -0x14, 0x79, 0xdc, 0xd5, 0x8d, 0x76, 0x60, 0xaa, 0x49, 0x38, -0x15, 0xe7, 0xff, 0x00, 0x10, 0x7c, 0x6f, 0x1d, 0x95, 0xab, -0xda, 0xdb, 0x3e, 0x66, 0xe8, 0x71, 0x54, 0x7c, 0x57, 0xf1, -0x36, 0x17, 0xb6, 0x78, 0x6c, 0x9b, 0x12, 0x1e, 0x33, 0x5e, -0x61, 0x79, 0x79, 0x2d, 0xf4, 0xed, 0x2c, 0xad, 0xb9, 0xcd, -0x7c, 0x5e, 0x73, 0x9e, 0xc2, 0x31, 0x74, 0x30, 0xae, 0xed, -0xee, 0xcf, 0xcf, 0xb3, 0xfe, 0x25, 0x84, 0x60, 0xf0, 0xd8, -0x39, 0x5d, 0xbd, 0xd9, 0x1c, 0xd3, 0x35, 0xc4, 0xcf, 0x2b, -0x9c, 0xb3, 0x1c, 0x9a, 0x65, 0x14, 0x57, 0xe7, 0x2d, 0xdf, -0x56, 0x7e, 0x4c, 0xdb, 0x7a, 0xb0, 0xa2, 0x8a, 0xd4, 0xf0, -0xf6, 0x8d, 0x2e, 0xb3, 0xa9, 0x43, 0x1a, 0x26, 0x53, 0x3c, -0x9a, 0xba, 0x74, 0xe5, 0x56, 0x6a, 0x10, 0x5a, 0xb3, 0x5a, -0x54, 0xa5, 0x5a, 0x6a, 0x9c, 0x15, 0xdb, 0x3b, 0x7f, 0x85, -0x5e, 0x1c, 0xf3, 0x99, 0xee, 0xe6, 0x4e, 0x01, 0xe3, 0x35, -0xeb, 0x40, 0x60, 0x62, 0xb3, 0x74, 0x1d, 0x29, 0x34, 0x8b, -0x04, 0x81, 0x07, 0x4e, 0xb5, 0xa7, 0x5f, 0xb5, 0x65, 0x98, -0x35, 0x82, 0xc3, 0x46, 0x9f, 0x5e, 0xa7, 0xf4, 0x2e, 0x4f, -0x80, 0x59, 0x76, 0x12, 0x34, 0x7a, 0xf5, 0xf5, 0x0a, 0x40, -0x41, 0xe8, 0x73, 0x59, 0x3e, 0x27, 0xd4, 0xbf, 0xb2, 0xf4, -0x99, 0xa6, 0x07, 0x0d, 0x8c, 0x0a, 0xf3, 0xff, 0x00, 0x0f, -0x7c, 0x48, 0x51, 0x76, 0xc9, 0x70, 0xe5, 0x86, 0x71, 0x46, -0x27, 0x32, 0xa1, 0x85, 0xab, 0x1a, 0x35, 0x5d, 0x9b, 0x0c, -0x5e, 0x6f, 0x86, 0xc1, 0x57, 0x8d, 0x0a, 0xce, 0xce, 0x47, -0xab, 0xd1, 0x59, 0x9a, 0x66, 0xbb, 0x6d, 0xa9, 0x80, 0x62, -0x35, 0xa5, 0x9c, 0xd7, 0xa3, 0x0a, 0x91, 0xa8, 0xb9, 0xa0, -0xee, 0x8f, 0x5a, 0x9d, 0x58, 0x55, 0x8f, 0x34, 0x1d, 0xd0, -0xb4, 0x51, 0x45, 0x68, 0x6a, 0x14, 0xc7, 0x6c, 0x21, 0xa7, -0xd6, 0x47, 0x88, 0xb5, 0x78, 0xb4, 0x8d, 0x36, 0x69, 0x19, -0xc0, 0x60, 0xbc, 0x0a, 0xca, 0xa5, 0x48, 0xd2, 0x83, 0x9c, -0xb6, 0x46, 0x35, 0xaa, 0x46, 0x8d, 0x37, 0x39, 0xbb, 0x24, -0x78, 0xd7, 0xc4, 0x6b, 0x85, 0x9b, 0x5f, 0x75, 0x5e, 0x89, -0x5c, 0xad, 0x5b, 0xd5, 0xaf, 0x9b, 0x51, 0xd4, 0xa7, 0x9d, -0xbf, 0x88, 0xf1, 0x55, 0x2b, 0xf0, 0xbc, 0x5d, 0x6f, 0x6d, -0x5e, 0x75, 0x17, 0x56, 0x7f, 0x36, 0x63, 0xab, 0xac, 0x46, -0x26, 0xa5, 0x55, 0xd5, 0xb0, 0xa6, 0xb9, 0xc2, 0xd3, 0xaa, -0x2b, 0x86, 0xc2, 0x1a, 0xe3, 0x67, 0x03, 0x2e, 0xf8, 0x6e, -0xd8, 0xdd, 0x6a, 0xf0, 0x80, 0x32, 0x37, 0x66, 0xbd, 0x4e, -0xf5, 0xbc, 0xb8, 0x36, 0xfa, 0x0a, 0xe2, 0x7e, 0x1f, 0x58, -0x17, 0xbc, 0xf3, 0x98, 0x70, 0x06, 0x6b, 0xaf, 0xd5, 0xe5, -0xc2, 0x1a, 0xfd, 0x5b, 0x86, 0xb0, 0xfe, 0xcb, 0x0a, 0xe6, -0xfa, 0xb3, 0xf6, 0xee, 0x11, 0xc3, 0x7b, 0x1c, 0x13, 0xa8, -0xfe, 0xd3, 0x38, 0xfd, 0x6a, 0x6f, 0xbd, 0xcd, 0x79, 0x97, -0x8a, 0xa7, 0xcb, 0xb7, 0x35, 0xe8, 0x1a, 0xd4, 0xdc, 0x37, -0x35, 0xe5, 0x7e, 0x2d, 0xba, 0xd8, 0x25, 0x6c, 0xf4, 0x15, -0xf5, 0xe7, 0xdd, 0x1f, 0x37, 0xfc, 0x6e, 0xd5, 0xb0, 0x67, -0x1b, 0xb1, 0x81, 0x8e, 0x6b, 0xe5, 0x0d, 0x7a, 0x7d, 0xcc, -0xe7, 0xd4, 0xd7, 0xbe, 0x7c, 0x6a, 0xd5, 0x7c, 0xc9, 0x67, -0x01, 0x89, 0xc9, 0xaf, 0x9d, 0x75, 0xc9, 0xb8, 0x6a, 0xf8, -0x6c, 0x54, 0xbd, 0xae, 0x24, 0xfc, 0xdb, 0x1b, 0x3f, 0x6d, -0x8c, 0x39, 0x3d, 0x42, 0x4c, 0xbb, 0x77, 0xaf, 0xac, 0xff, -0x00, 0xe0, 0x9c, 0x9e, 0x15, 0x1a, 0x97, 0x8c, 0x75, 0x6d, -0x55, 0xe2, 0x2c, 0xb1, 0xcb, 0x0c, 0x41, 0x8f, 0x41, 0xb7, -0x73, 0x9f, 0xaf, 0x6f, 0xd2, 0xbe, 0x44, 0xbd, 0x7e, 0x5a, -0xbf, 0x47, 0xbf, 0xe0, 0x9c, 0x1e, 0x14, 0xfe, 0xcf, 0xf8, -0x72, 0xda, 0xab, 0xab, 0x07, 0xbd, 0x9a, 0x69, 0xf2, 0xdc, -0x60, 0x6f, 0xf2, 0xd7, 0xf4, 0x8c, 0x9f, 0xc6, 0xbe, 0x83, -0x05, 0x1d, 0x4f, 0xa9, 0xcb, 0xe1, 0xef, 0x1f, 0x6a, 0xda, -0x8f, 0x5a, 0xd8, 0xb5, 0x07, 0x8a, 0xcb, 0xb5, 0x5e, 0x45, -0x6c, 0x5b, 0x2f, 0x4a, 0xf6, 0x4f, 0xa0, 0x35, 0x2d, 0x46, -0x71, 0x5a, 0xd6, 0xe3, 0x38, 0xac, 0xbb, 0x65, 0xe4, 0x56, -0xb4, 0x0b, 0xc0, 0xa0, 0x0b, 0xb1, 0x0a, 0xb9, 0x18, 0xe6, -0xaa, 0x42, 0x2a, 0xda, 0x76, 0xa0, 0x09, 0xd0, 0x64, 0xd4, -0xa3, 0xa5, 0x40, 0x9d, 0xaa, 0x65, 0xa0, 0x07, 0x0e, 0xb4, -0xfa, 0x67, 0x4a, 0x70, 0xe9, 0x40, 0x14, 0x9a, 0xab, 0x4c, -0x7a, 0xd5, 0x87, 0x35, 0x52, 0x63, 0x40, 0x15, 0x27, 0x3c, -0x57, 0xc8, 0x5e, 0x21, 0xd4, 0x0f, 0xc4, 0x0f, 0xdb, 0x26, -0xd2, 0xda, 0x2e, 0x6d, 0x3c, 0x3f, 0x10, 0xb7, 0x39, 0x18, -0xcb, 0x84, 0x2c, 0xc7, 0xbf, 0xf1, 0x38, 0x1d, 0xbe, 0xef, -0xe3, 0x5f, 0x59, 0x6a, 0xf7, 0xb1, 0xe9, 0xd6, 0x37, 0x37, -0x52, 0x9c, 0x45, 0x04, 0x6d, 0x23, 0x9c, 0xf6, 0x03, 0x27, -0xf9, 0x57, 0xc9, 0x3f, 0xb2, 0x35, 0x8c, 0x9e, 0x2a, 0xf1, -0xd7, 0x89, 0xbc, 0x5b, 0x30, 0x2e, 0xd7, 0x97, 0x72, 0x3a, -0xc8, 0xc7, 0x24, 0xee, 0x62, 0xc7, 0xf9, 0x8a, 0xf9, 0xfc, -0xcd, 0xba, 0x95, 0x70, 0xf8, 0x65, 0xf6, 0xa5, 0x77, 0xe9, -0x1d, 0x7f, 0x3b, 0x1f, 0x2d, 0x9c, 0xb7, 0x56, 0xbe, 0x17, -0x08, 0xbe, 0xd4, 0xd4, 0x9f, 0xa4, 0x75, 0xfc, 0xec, 0x7d, -0x9f, 0xa1, 0xdb, 0x79, 0x50, 0x20, 0xf4, 0x15, 0xaf, 0x55, -0x6c, 0x13, 0x64, 0x75, 0xc5, 0x7c, 0x42, 0xf8, 0xd9, 0xe1, -0x9f, 0x86, 0xa5, 0x13, 0x56, 0xbb, 0xd9, 0x2b, 0x9c, 0x04, -0x51, 0x93, 0x5f, 0x40, 0x7d, 0x49, 0xdf, 0xd6, 0x7e, 0xbd, -0x7c, 0xba, 0x76, 0x93, 0x73, 0x3b, 0x9c, 0x2a, 0xa1, 0xe6, -0xbc, 0xf7, 0xc1, 0x9f, 0xb4, 0x3f, 0x86, 0x3c, 0x73, 0xa8, -0x25, 0xa6, 0x9b, 0x2b, 0xc9, 0x23, 0x10, 0x07, 0x15, 0xd6, -0xfc, 0x41, 0xd2, 0x6f, 0x35, 0xbf, 0x0a, 0x5f, 0xda, 0x58, -0x60, 0xdc, 0xcb, 0x0b, 0x2a, 0x02, 0x71, 0xc9, 0x18, 0xa0, -0x0f, 0xc0, 0x6f, 0xdb, 0xaf, 0xe2, 0x3f, 0xfc, 0x27, 0xff, -0x00, 0x1f, 0x35, 0x89, 0xa0, 0x91, 0xfe, 0xcf, 0x68, 0x4c, -0x09, 0xb8, 0xfa, 0x1e, 0x7a, 0x1a, 0xf9, 0xd8, 0xb1, 0x6e, -0xa4, 0x9f, 0xad, 0x7e, 0x92, 0x78, 0xc3, 0xfe, 0x09, 0x9d, -0xe3, 0xfd, 0x6b, 0x5d, 0xbf, 0xd4, 0x5e, 0xc2, 0x09, 0x5e, -0xe6, 0x66, 0x90, 0x9d, 0xe3, 0x3c, 0x93, 0x5c, 0x75, 0xef, -0xfc, 0x13, 0x23, 0xc7, 0xf6, 0xe4, 0xff, 0x00, 0xc4, 0x9e, -0x17, 0xfa, 0x3d, 0x00, 0x7c, 0x17, 0x45, 0x7d, 0xad, 0x7b, -0xff, 0x00, 0x04, 0xe2, 0xf8, 0x81, 0x6f, 0x9c, 0xe8, 0x20, -0xfd, 0x24, 0xae, 0x7a, 0xfb, 0xf6, 0x02, 0xf1, 0xed, 0xa9, -0x39, 0xf0, 0xfb, 0xff, 0x00, 0xc0, 0x64, 0xff, 0x00, 0xeb, -0xd0, 0x07, 0xc9, 0x4a, 0x37, 0x10, 0x07, 0x53, 0xc5, 0x7e, -0xb1, 0xff, 0x00, 0xc1, 0x27, 0x7e, 0x16, 0x18, 0xe7, 0x93, -0x5e, 0x94, 0x2e, 0xdb, 0x78, 0xf2, 0x0f, 0x7d, 0xc7, 0xf0, -0xaf, 0x90, 0x6d, 0x3f, 0x61, 0xef, 0x1b, 0xc5, 0xa9, 0x5b, -0xa4, 0x9a, 0x04, 0xea, 0xa6, 0x41, 0x93, 0xbc, 0x70, 0x3f, -0x3a, 0xfd, 0x77, 0xfd, 0x89, 0x3e, 0x10, 0x4d, 0xf0, 0xa7, -0xe1, 0x74, 0x70, 0x5d, 0xc1, 0xe4, 0x5d, 0x4e, 0x72, 0xca, -0x4e, 0x4e, 0x05, 0x00, 0x7d, 0x14, 0xed, 0xb4, 0x13, 0xe9, -0x5e, 0x01, 0xe3, 0xfd, 0x43, 0xed, 0xda, 0xe3, 0x28, 0x3c, -0x25, 0x7b, 0xc5, 0xf9, 0x2b, 0x6b, 0x21, 0x5e, 0xb8, 0xaf, -0x9f, 0x75, 0x3d, 0x12, 0xf2, 0xe7, 0x50, 0xb8, 0x98, 0xa3, -0x7c, 0xcc, 0x71, 0xc5, 0x7c, 0x4f, 0x13, 0xca, 0x72, 0xa5, -0x0a, 0x50, 0x57, 0xbb, 0x3f, 0x3a, 0xe3, 0x19, 0x55, 0x95, -0x0a, 0x74, 0x69, 0xab, 0xdd, 0xea, 0x62, 0x51, 0x57, 0xdb, -0x43, 0xba, 0x5f, 0xe0, 0x34, 0xc3, 0xa4, 0xdc, 0x81, 0xf7, -0x6b, 0xf3, 0x77, 0x4a, 0xa2, 0xde, 0x2c, 0xfc, 0x95, 0xd0, -0xaa, 0xb7, 0x8b, 0x29, 0x9e, 0x95, 0xed, 0x1f, 0x0b, 0x34, -0xcf, 0xb2, 0xe9, 0x29, 0x2b, 0x75, 0x61, 0x9a, 0xf2, 0x38, -0x74, 0x9b, 0x89, 0x27, 0x8d, 0x36, 0xfd, 0xe6, 0x02, 0xbe, -0x82, 0xf0, 0xbd, 0x97, 0xd8, 0x74, 0x98, 0x63, 0xef, 0xb4, -0x57, 0xd7, 0xf0, 0xd6, 0x19, 0xcb, 0x13, 0x2a, 0xb2, 0x5b, -0x23, 0xee, 0xb8, 0x43, 0x07, 0x29, 0x63, 0x25, 0x5a, 0x6b, -0xe1, 0x46, 0xc5, 0x14, 0x51, 0x5f, 0xa7, 0x9f, 0xb2, 0x85, -0x72, 0x7f, 0x11, 0x8e, 0x74, 0x47, 0x1d, 0xba, 0x9a, 0xeb, -0x2b, 0x92, 0xf8, 0x8e, 0xf8, 0xf0, 0xfc, 0x8a, 0x06, 0x59, -0xb8, 0xaf, 0x3b, 0x31, 0xff, 0x00, 0x74, 0xa9, 0xe8, 0x79, -0x39, 0xaf, 0xfb, 0x8d, 0x5f, 0x46, 0x78, 0x36, 0x77, 0x12, -0x7d, 0x4d, 0x14, 0xa4, 0x36, 0xe3, 0xf2, 0x9c, 0x66, 0x93, -0x9f, 0x43, 0x5f, 0x86, 0x9f, 0xce, 0x01, 0x57, 0x34, 0x83, -0x8d, 0x4a, 0x0f, 0xaf, 0x35, 0x4f, 0x38, 0xec, 0x6a, 0x7d, -0x3a, 0x4d, 0xb7, 0xd0, 0x81, 0xdd, 0x80, 0xad, 0x29, 0xbb, -0x4e, 0x3e, 0xa6, 0x94, 0x9d, 0xaa, 0x45, 0xf9, 0xa3, 0xe9, -0x2d, 0x26, 0x4f, 0x37, 0x4f, 0x85, 0xb1, 0x8e, 0x2a, 0xed, -0x67, 0xe8, 0x67, 0x76, 0x99, 0x07, 0xb0, 0xad, 0x0a, 0xfd, -0xe6, 0x8b, 0xbd, 0x38, 0xbf, 0x23, 0xfa, 0x6a, 0x83, 0xbd, -0x28, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x6c, 0x6e, 0x15, 0xc1, -0x7c, 0x55, 0xd4, 0x44, 0x1a, 0x2b, 0xc3, 0xdd, 0xc6, 0xda, -0xef, 0x0f, 0x15, 0xe3, 0x5f, 0x16, 0xb5, 0x2f, 0x3b, 0x50, -0x8a, 0xdc, 0x1e, 0x9c, 0xe2, 0xbe, 0x7f, 0x3c, 0xaf, 0xec, -0x30, 0x53, 0x7d, 0x5e, 0x87, 0xcb, 0xf1, 0x26, 0x27, 0xea, -0xd9, 0x75, 0x47, 0xd5, 0xe9, 0xf7, 0x9e, 0x7f, 0x45, 0x14, -0x57, 0xe3, 0x87, 0xe0, 0x41, 0x5d, 0x17, 0x80, 0xac, 0x8d, -0xef, 0x88, 0x62, 0xc7, 0x44, 0xae, 0x76, 0xbd, 0x07, 0xe1, -0x15, 0x91, 0x7d, 0x41, 0xa6, 0x23, 0x8a, 0xf5, 0x32, 0xba, -0x5e, 0xdb, 0x19, 0x4e, 0x1e, 0x67, 0xb3, 0x93, 0x50, 0xfa, -0xc6, 0x3e, 0x95, 0x3f, 0x33, 0xd8, 0x62, 0x5d, 0x88, 0xab, -0xe8, 0x31, 0x52, 0x51, 0x45, 0x7e, 0xdc, 0x95, 0x8f, 0xe8, -0xb4, 0xad, 0xa0, 0x51, 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, -0x00, 0x79, 0x57, 0xc5, 0x3f, 0x0e, 0xb9, 0xff, 0x00, 0x4b, -0x8c, 0x0f, 0x52, 0x4f, 0xa5, 0x79, 0x70, 0xe6, 0xbe, 0x95, -0xd6, 0xb4, 0xc4, 0xd4, 0xec, 0x9e, 0x26, 0x01, 0x8e, 0x38, -0xcd, 0x78, 0x0f, 0x89, 0xb4, 0x79, 0x34, 0x9d, 0x4a, 0x64, -0x61, 0xc6, 0x78, 0xc5, 0x7e, 0x5d, 0xc4, 0x58, 0x07, 0x46, -0xb7, 0xd6, 0x20, 0xb4, 0x96, 0xe7, 0xe3, 0x3c, 0x57, 0x96, -0x3a, 0x15, 0xfe, 0xb7, 0x05, 0xee, 0xcb, 0x7f, 0x53, 0x22, -0x8a, 0x28, 0xaf, 0x8d, 0x3e, 0x00, 0x29, 0x55, 0x9d, 0x0e, -0x55, 0x88, 0xa4, 0xa2, 0x80, 0x2d, 0xc7, 0xaa, 0xdd, 0xc4, -0xb8, 0x59, 0x9a, 0x9b, 0x2e, 0xa7, 0x75, 0x28, 0xf9, 0xa5, -0x24, 0x55, 0x6a, 0x2b, 0x4f, 0x69, 0x3b, 0x5b, 0x99, 0x9a, -0x7b, 0x5a, 0x8d, 0x5b, 0x99, 0xdb, 0xd4, 0x52, 0x4b, 0x1c, -0x9e, 0x4d, 0x25, 0x14, 0x56, 0x66, 0x61, 0x45, 0x15, 0x35, -0xad, 0xa4, 0x97, 0xb3, 0x2c, 0x51, 0x29, 0x2c, 0x4e, 0x29, -0xa4, 0xe4, 0xec, 0xb7, 0x1a, 0x4e, 0x4e, 0xd1, 0x5a, 0x8e, -0xb0, 0xb1, 0x97, 0x53, 0xba, 0x48, 0x21, 0x19, 0x76, 0x38, -0xaf, 0x6e, 0xf0, 0x27, 0x84, 0x17, 0x42, 0xb2, 0x47, 0x94, -0x0f, 0x38, 0xf3, 0xc5, 0x66, 0xfc, 0x3d, 0xf0, 0x3f, 0xf6, -0x52, 0x7d, 0xa6, 0xe9, 0x47, 0x9c, 0x7a, 0x57, 0xa1, 0x57, -0xe9, 0xb9, 0x16, 0x51, 0xec, 0x22, 0xb1, 0x35, 0xd7, 0xbc, -0xf6, 0x5d, 0x8f, 0xd8, 0x78, 0x6b, 0x21, 0x58, 0x58, 0xac, -0x5e, 0x21, 0x7b, 0xef, 0x65, 0xd8, 0x28, 0xa2, 0x90, 0xf1, -0x5f, 0x6a, 0x7e, 0x86, 0x79, 0xff, 0x00, 0xc5, 0x7d, 0x50, -0x5b, 0xd8, 0x45, 0x6e, 0x0f, 0x2d, 0xc9, 0xaf, 0x1a, 0x56, -0x65, 0x6d, 0xca, 0x70, 0x6b, 0xb9, 0xf8, 0xaf, 0xa9, 0x0b, -0x9d, 0x7f, 0xc9, 0x53, 0xc4, 0x68, 0x2b, 0x86, 0xaf, 0xc7, -0x33, 0xca, 0xfe, 0xdf, 0x1d, 0x3e, 0xd1, 0xd0, 0xfc, 0x07, -0x89, 0x31, 0x3f, 0x59, 0xcc, 0x6a, 0x59, 0xe9, 0x1d, 0x3e, -0xe3, 0x53, 0x4f, 0xf1, 0x25, 0xee, 0x9e, 0xdf, 0x2c, 0x9c, -0x57, 0x4d, 0xa7, 0x7c, 0x4d, 0x9a, 0x02, 0x3c, 0xe6, 0x63, -0xf4, 0xae, 0x16, 0x8c, 0x0a, 0xf3, 0xa8, 0xe6, 0x18, 0x9c, -0x3d, 0xbd, 0x9c, 0xd9, 0xe5, 0xe1, 0xf3, 0x3c, 0x66, 0x17, -0xf8, 0x55, 0x1d, 0x8f, 0x5f, 0xb5, 0xf8, 0xb3, 0x62, 0x55, -0x43, 0x89, 0x33, 0xf4, 0xff, 0x00, 0xeb, 0xd5, 0xbf, 0xf8, -0x5a, 0x9a, 0x67, 0xfb, 0x7f, 0xa7, 0xf8, 0xd7, 0x8a, 0x6d, -0x14, 0x6d, 0x06, 0xbd, 0x88, 0xf1, 0x1e, 0x36, 0x2a, 0xda, -0x7d, 0xc7, 0xbd, 0x1e, 0x2d, 0xcc, 0x62, 0xad, 0xa7, 0xdc, -0x7a, 0xcd, 0xff, 0x00, 0xc5, 0x98, 0xd7, 0x3e, 0x40, 0x27, -0xea, 0x3f, 0xfa, 0xf5, 0xc3, 0x78, 0x8f, 0xc5, 0xf7, 0x3e, -0x20, 0x62, 0x1f, 0x2a, 0xa6, 0xb9, 0xf0, 0x80, 0x76, 0xa5, -0xaf, 0x3b, 0x15, 0x9b, 0x62, 0xf1, 0x6b, 0x96, 0xa4, 0xb4, -0xec, 0x79, 0x58, 0xcc, 0xf3, 0x1d, 0x8e, 0x8b, 0x85, 0x59, -0xe9, 0xd8, 0x28, 0xa2, 0x8a, 0xf1, 0xcf, 0x00, 0x29, 0x21, -0xb6, 0x7b, 0xeb, 0x98, 0xe1, 0x4c, 0x65, 0x9a, 0x86, 0xed, -0x5d, 0xb7, 0xc3, 0xdf, 0x0d, 0x3c, 0xf7, 0x0d, 0x77, 0x2a, -0x61, 0x57, 0xa6, 0x6b, 0xbb, 0x05, 0x85, 0x96, 0x32, 0xbc, -0x69, 0x45, 0x6f, 0xb9, 0xe9, 0x65, 0xd8, 0x29, 0xe3, 0xf1, -0x50, 0xa1, 0x15, 0xbb, 0xd7, 0xd0, 0xe8, 0x74, 0x2d, 0x17, -0xfb, 0x1a, 0xd7, 0x9f, 0xbc, 0x56, 0xb3, 0xf5, 0xa9, 0xba, -0x8a, 0xea, 0x35, 0x17, 0x0a, 0x0e, 0x3a, 0x0a, 0xe2, 0xb5, -0xa9, 0xb9, 0x6e, 0x6b, 0xf6, 0xfa, 0x14, 0x63, 0x87, 0xa6, -0xa9, 0xc3, 0x64, 0x7f, 0x46, 0xe1, 0xb0, 0xf0, 0xc2, 0xd2, -0x8d, 0x28, 0x6c, 0x8e, 0x3f, 0x5e, 0x9f, 0x08, 0xdd, 0x6b, -0xc7, 0x7c, 0x7d, 0x7e, 0x20, 0xb2, 0xb9, 0x72, 0x7f, 0x86, -0xbd, 0x47, 0xc4, 0x33, 0xe2, 0x36, 0xe6, 0xbc, 0x23, 0xe2, -0xce, 0xa2, 0x20, 0xd3, 0xdc, 0x67, 0xae, 0x6a, 0xea, 0xcb, -0x96, 0x0d, 0x97, 0x5a, 0x5c, 0x94, 0xe5, 0x23, 0xe5, 0x0f, -0x8a, 0xda, 0x9f, 0x9f, 0x7e, 0xea, 0x09, 0x3c, 0xd7, 0x8a, -0x6b, 0x93, 0x67, 0x35, 0xe8, 0xbe, 0x3c, 0xbd, 0xf3, 0xf5, -0x29, 0x8e, 0x78, 0xcd, 0x79, 0x6e, 0xb3, 0x2e, 0x5c, 0xd7, -0xc2, 0xd2, 0xf7, 0xeb, 0x39, 0x1f, 0x9b, 0x51, 0xfd, 0xed, -0x79, 0x48, 0xc1, 0xbb, 0x7e, 0xb5, 0xfa, 0xf9, 0xfb, 0x1a, -0xe8, 0x67, 0x4b, 0xf8, 0x17, 0xe1, 0x99, 0x1e, 0x3f, 0x2d, -0xe6, 0xb2, 0x87, 0x2a, 0x7a, 0x82, 0x10, 0x67, 0xf5, 0x26, -0xbf, 0x23, 0xf4, 0x5d, 0x2d, 0xf5, 0xef, 0x10, 0x69, 0xda, -0x6a, 0x0c, 0xb5, 0xdd, 0xcc, 0x70, 0x81, 0xfe, 0xf3, 0x01, -0x5f, 0xb7, 0xff, 0x00, 0x0c, 0x74, 0xb4, 0xd2, 0x3c, 0x0d, -0xa1, 0xda, 0x46, 0x15, 0x56, 0x3b, 0x54, 0xc0, 0x5e, 0x9d, -0x33, 0x5f, 0x5d, 0x84, 0x8d, 0x93, 0x67, 0xdc, 0xe0, 0x23, -0x64, 0xd9, 0xda, 0xda, 0x0e, 0x95, 0xb1, 0x6a, 0xb8, 0x22, -0xb3, 0x2d, 0x16, 0xb5, 0xed, 0x57, 0x91, 0x5e, 0x89, 0xeb, -0x1a, 0x76, 0xc3, 0x02, 0xb5, 0x60, 0x18, 0x02, 0xb3, 0x6d, -0xc6, 0x71, 0x5a, 0x90, 0xd0, 0x05, 0xb8, 0x6a, 0xd2, 0xd5, -0x78, 0x7b, 0x55, 0x94, 0x1d, 0x28, 0x02, 0x45, 0x15, 0x32, -0xd4, 0x69, 0xda, 0xa5, 0x1d, 0x28, 0x00, 0xa7, 0xd3, 0x47, -0x5a, 0x75, 0x00, 0x67, 0x3f, 0x5a, 0xa7, 0x31, 0xab, 0x72, -0x9c, 0x55, 0x29, 0x9b, 0xad, 0x00, 0x78, 0xff, 0x00, 0xed, -0x45, 0xe2, 0xd1, 0xe1, 0x2f, 0x83, 0x1e, 0x20, 0x99, 0x65, -0x11, 0xdc, 0xde, 0x46, 0x2c, 0x2d, 0xfa, 0xe4, 0xbc, 0x87, -0x1c, 0x7b, 0x85, 0xdc, 0x7f, 0x0a, 0xc5, 0xfd, 0x90, 0xbc, -0x25, 0xfd, 0x85, 0xf0, 0xeb, 0x4d, 0x91, 0xa3, 0xdb, 0x2d, -0xce, 0xe9, 0xdb, 0x3e, 0xe7, 0x8f, 0xd3, 0x15, 0xc4, 0x7e, -0xda, 0x9a, 0xc3, 0xea, 0xd7, 0xfe, 0x0a, 0xf0, 0x7d, 0xbb, -0x31, 0x7b, 0xbb, 0xb3, 0x79, 0x2a, 0x0e, 0x84, 0x0f, 0x91, -0x3f, 0xf4, 0x27, 0xed, 0xe9, 0x5f, 0x48, 0x7c, 0x30, 0xd1, -0x17, 0x46, 0xf0, 0xfe, 0x9f, 0x6a, 0xab, 0x85, 0x86, 0x25, -0x41, 0xf8, 0x0a, 0xf9, 0xda, 0x7f, 0xed, 0x19, 0xac, 0xe5, -0xd2, 0x9c, 0x52, 0xf9, 0xbd, 0x5f, 0xe0, 0x7c, 0xa5, 0x2f, -0xf6, 0xac, 0xee, 0xa4, 0xfa, 0x52, 0x8a, 0x8f, 0xce, 0x5a, -0xbf, 0xc0, 0xed, 0xe6, 0x99, 0x6c, 0x6c, 0x65, 0x99, 0xce, -0x16, 0x34, 0x2e, 0x4f, 0xd0, 0x57, 0xe1, 0x8f, 0xed, 0xff, -0x00, 0xf1, 0xf7, 0xc4, 0x1a, 0xa7, 0xc5, 0xf9, 0xac, 0xac, -0xf5, 0x19, 0x22, 0x82, 0xdc, 0xb1, 0xdb, 0x1b, 0x10, 0x33, -0x9f, 0xad, 0x7e, 0xcf, 0x7c, 0x68, 0xf1, 0x22, 0x78, 0x57, -0xe1, 0xce, 0xb1, 0x7a, 0xee, 0x13, 0x10, 0xb2, 0x82, 0x7e, -0x95, 0xfc, 0xe6, 0x7c, 0x5f, 0xf1, 0x03, 0xf8, 0xe3, 0xe2, -0x96, 0xaf, 0x76, 0x18, 0x3f, 0x9d, 0x74, 0x51, 0x4a, 0xf2, -0x31, 0xbb, 0x15, 0xf4, 0x47, 0xd5, 0x9f, 0xa0, 0xdf, 0xf0, -0x4b, 0x7b, 0x1d, 0x7f, 0xc6, 0x3e, 0x27, 0x83, 0x53, 0xd4, -0x6f, 0x27, 0x9e, 0xde, 0x32, 0xd2, 0x9d, 0xcd, 0xc7, 0x1d, -0x2b, 0xf5, 0x57, 0x59, 0xd7, 0xac, 0xf4, 0x18, 0x16, 0x5b, -0xb9, 0x92, 0x25, 0x63, 0x85, 0xde, 0xd8, 0xcd, 0x7c, 0x67, -0xff, 0x00, 0x04, 0xc6, 0xf8, 0x7c, 0x9e, 0x1d, 0xf8, 0x64, -0x75, 0x22, 0xa3, 0x73, 0xa0, 0x8c, 0x37, 0xf3, 0xaf, 0x13, -0xff, 0x00, 0x82, 0xb5, 0xfc, 0x79, 0xd6, 0xfc, 0x19, 0xe2, -0x0f, 0x09, 0xe8, 0x9a, 0x1d, 0xf1, 0xb5, 0x76, 0x49, 0xa6, -0x97, 0x07, 0xd0, 0xa8, 0x1c, 0x03, 0x40, 0x1f, 0xa5, 0x9a, -0x6f, 0x8c, 0xb4, 0xdd, 0x56, 0x61, 0x14, 0x13, 0xa3, 0xb1, -0xfe, 0xeb, 0x66, 0xb7, 0x3a, 0xd7, 0xe3, 0xa7, 0xfc, 0x13, -0xb7, 0xc7, 0x9e, 0x37, 0xf8, 0x8d, 0xe3, 0xb6, 0x92, 0xfb, -0x50, 0x69, 0xad, 0x95, 0x95, 0x06, 0x54, 0xff, 0x00, 0x8d, -0x7e, 0xc4, 0xc4, 0xa5, 0x22, 0x45, 0x27, 0x24, 0x00, 0x28, -0x00, 0x31, 0x23, 0x75, 0x55, 0x3f, 0x51, 0x4c, 0x6b, 0x3b, -0x77, 0xfb, 0xd0, 0x46, 0xdf, 0x54, 0x06, 0xa6, 0xa2, 0x80, -0x2a, 0x1d, 0x26, 0xc4, 0x90, 0x4d, 0x95, 0xb9, 0x23, 0xbf, -0x94, 0xbf, 0xe1, 0x56, 0x63, 0x8d, 0x62, 0x50, 0xa8, 0xa1, -0x14, 0x74, 0x0a, 0x30, 0x29, 0xd4, 0x50, 0x03, 0x5b, 0x04, -0x60, 0x8c, 0x8a, 0xaa, 0xda, 0x55, 0xa3, 0xf5, 0xb7, 0x4f, -0xfb, 0xe6, 0xae, 0x51, 0x52, 0xe2, 0xa5, 0xba, 0x22, 0x50, -0x8c, 0xbe, 0x25, 0x73, 0x3c, 0xe8, 0x96, 0x2d, 0xd6, 0xd9, -0x3f, 0x2a, 0x8d, 0xbc, 0x37, 0xa7, 0xb7, 0xfc, 0xbb, 0x2f, -0xe5, 0x5a, 0x94, 0x56, 0x4e, 0x85, 0x27, 0xbc, 0x57, 0xdc, -0x64, 0xf0, 0xf4, 0x5e, 0xf0, 0x5f, 0x72, 0x31, 0xd7, 0xc2, -0xda, 0x72, 0x48, 0xae, 0x2d, 0xd4, 0x32, 0x9c, 0x8a, 0xd5, -0x44, 0x08, 0xa1, 0x47, 0x00, 0x76, 0xa7, 0xd1, 0x55, 0x0a, -0x50, 0xa7, 0xf0, 0x2b, 0x15, 0x4e, 0x8d, 0x3a, 0x5f, 0x04, -0x52, 0xf4, 0x0a, 0x28, 0xa2, 0xb5, 0x36, 0x0a, 0xcc, 0xd6, -0xf4, 0x94, 0xd6, 0x2d, 0x4c, 0x2c, 0x71, 0x5a, 0x74, 0x54, -0x4e, 0x11, 0xa9, 0x17, 0x09, 0x2d, 0x19, 0x9d, 0x4a, 0x71, -0xab, 0x07, 0x09, 0xab, 0xa6, 0x79, 0xdb, 0x7c, 0x2b, 0x87, -0xb3, 0xd4, 0x0f, 0xf0, 0xab, 0xae, 0x1f, 0xf9, 0x57, 0xa5, -0xd1, 0x5e, 0x33, 0xc9, 0x70, 0x4f, 0xec, 0x1e, 0x04, 0xb8, -0x7f, 0x2e, 0x97, 0xfc, 0xbb, 0x3c, 0xb2, 0x4f, 0x85, 0x52, -0x76, 0x23, 0xf3, 0x14, 0xcb, 0x7f, 0x85, 0xf7, 0x10, 0xdd, -0x24, 0x98, 0x1f, 0x29, 0xf6, 0xaf, 0x56, 0xa2, 0xb2, 0xfe, -0xc2, 0xc1, 0x5e, 0xfc, 0xa6, 0x3f, 0xea, 0xd6, 0x5f, 0x74, -0xd4, 0x4a, 0xba, 0x75, 0xa9, 0xb3, 0xb4, 0x8e, 0x23, 0xd5, -0x47, 0x35, 0x6a, 0x8a, 0x2b, 0xdf, 0x8c, 0x54, 0x52, 0x8a, -0xe8, 0x7d, 0x3c, 0x62, 0xa1, 0x15, 0x15, 0xb2, 0x0a, 0x28, -0xa2, 0xa8, 0xa2, 0x39, 0x73, 0xb1, 0xb1, 0xd7, 0x15, 0xe2, -0x7e, 0x31, 0xd0, 0xae, 0xf5, 0x2d, 0x72, 0x69, 0x84, 0x6e, -0x54, 0x70, 0x2b, 0xdc, 0x2a, 0x26, 0x82, 0x37, 0xea, 0x8a, -0x7f, 0x0a, 0xf2, 0x33, 0x2c, 0xbe, 0x39, 0x8d, 0x35, 0x4e, -0x4e, 0xd6, 0x3c, 0x2c, 0xdb, 0x2a, 0x86, 0x6b, 0x49, 0x52, -0x9c, 0xac, 0x93, 0xb9, 0xf3, 0xab, 0x78, 0x62, 0xe9, 0x7f, -0x81, 0xea, 0x26, 0xf0, 0xf5, 0xca, 0x9f, 0xb8, 0xf5, 0xf4, -0x61, 0xb2, 0x80, 0xf5, 0x8d, 0x7f, 0x2a, 0x8d, 0xb4, 0xbb, -0x56, 0xeb, 0x0a, 0x9a, 0xf9, 0x97, 0xc2, 0xd0, 0xe9, 0x33, -0xe3, 0xe5, 0xc1, 0x74, 0xfa, 0x54, 0xfc, 0x0f, 0x9c, 0xa4, -0xd1, 0x6e, 0x14, 0x7d, 0xd3, 0x5e, 0xb7, 0xf0, 0xbf, 0x47, -0x6b, 0x1b, 0x2d, 0xec, 0x30, 0x71, 0x5d, 0x73, 0x68, 0x76, -0x4d, 0xff, 0x00, 0x2c, 0x56, 0xad, 0x43, 0x6f, 0x1d, 0xb2, -0x6d, 0x8d, 0x42, 0x8f, 0x4a, 0xef, 0xcb, 0xb2, 0x15, 0x81, -0xaf, 0xed, 0x9c, 0xaf, 0x63, 0xd3, 0xca, 0x78, 0x66, 0x39, -0x6e, 0x27, 0xeb, 0x0e, 0x77, 0xb1, 0x35, 0x14, 0x51, 0x5f, -0x5c, 0x7d, 0xd0, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x57, 0x27, 0xe2, 0xff, 0x00, 0x09, 0x47, 0xac, 0x42, -0xcf, 0x14, 0x63, 0xcd, 0xc7, 0x26, 0xba, 0xca, 0x2b, 0x9f, -0x11, 0x42, 0x18, 0x9a, 0x6e, 0x9d, 0x45, 0xa3, 0x39, 0x71, -0x38, 0x6a, 0x78, 0xba, 0x4e, 0x95, 0x55, 0x74, 0xcf, 0x9b, -0xf5, 0x9f, 0x0e, 0xdc, 0x69, 0x33, 0x30, 0x93, 0x27, 0x15, -0x91, 0xb8, 0x66, 0xbe, 0x92, 0xd4, 0xbc, 0x3f, 0x69, 0xa8, -0xab, 0x6f, 0x8f, 0x2c, 0x7b, 0xd7, 0x03, 0xae, 0xfc, 0x35, -0x9a, 0x56, 0x66, 0xb7, 0x51, 0x8a, 0xfc, 0xd7, 0x1d, 0xc3, -0xb5, 0xa8, 0xb7, 0x2a, 0x1a, 0xa3, 0xf2, 0x2c, 0xcb, 0x85, -0x2b, 0xd0, 0x6e, 0x78, 0x6f, 0x79, 0x76, 0x3c, 0xb2, 0x8a, -0xe9, 0xee, 0xbe, 0x1f, 0x6a, 0x90, 0x67, 0xe4, 0x1c, 0x7b, -0x1a, 0xca, 0x97, 0xc3, 0x5a, 0x84, 0x67, 0x1e, 0x5f, 0x35, -0xf3, 0x55, 0x30, 0x98, 0x8a, 0x7f, 0x1c, 0x19, 0xf1, 0xf5, -0x30, 0x18, 0xba, 0x4e, 0xd3, 0xa6, 0xfe, 0xe3, 0x36, 0x8a, -0xbe, 0xba, 0x06, 0xa0, 0xc7, 0x02, 0x12, 0x6a, 0x64, 0xf0, -0xc6, 0xa2, 0xdf, 0xf2, 0xee, 0xdf, 0x95, 0x64, 0xa8, 0x56, -0x7b, 0x41, 0xfd, 0xc6, 0x4b, 0x0b, 0x5e, 0x5b, 0x53, 0x7f, -0x71, 0x95, 0x4a, 0x01, 0x6f, 0xba, 0x33, 0x5d, 0x4e, 0x97, -0xe0, 0x0b, 0xcb, 0xe9, 0x55, 0x64, 0x8d, 0xe3, 0x07, 0xbd, -0x76, 0xfa, 0x37, 0xc2, 0xc8, 0xed, 0x1d, 0x5e, 0x47, 0xcf, -0xb5, 0x7a, 0xb8, 0x6c, 0x9b, 0x19, 0x89, 0x7a, 0x46, 0xc8, -0xf6, 0xb0, 0x79, 0x06, 0x3f, 0x18, 0xf4, 0x85, 0x97, 0x99, -0xe6, 0xba, 0x27, 0x86, 0x6e, 0xb5, 0xa9, 0x42, 0x2a, 0x32, -0x8a, 0xf5, 0xdf, 0x0a, 0x78, 0x0a, 0xdf, 0x47, 0x8c, 0x3c, -0xe8, 0x1e, 0x5f, 0x7c, 0x57, 0x49, 0x63, 0xa4, 0xdb, 0xe9, -0xe8, 0x04, 0x71, 0x81, 0xef, 0x57, 0xab, 0xef, 0xf2, 0xdc, -0x8a, 0x8e, 0x0e, 0xd3, 0xa9, 0xef, 0x48, 0xfd, 0x43, 0x29, -0xe1, 0xbc, 0x3e, 0x5f, 0x6a, 0x95, 0x3d, 0xe9, 0x8c, 0x55, -0x0a, 0x30, 0x38, 0x02, 0x9f, 0x45, 0x15, 0xf5, 0x07, 0xd9, -0x05, 0x55, 0xd4, 0x2e, 0x05, 0xad, 0xac, 0x92, 0x1e, 0xc2, -0xad, 0x56, 0x57, 0x88, 0xad, 0xa5, 0xba, 0xd3, 0x24, 0x48, -0x86, 0x58, 0x8a, 0xc6, 0xb3, 0x71, 0xa7, 0x27, 0x1d, 0xec, -0x61, 0x5e, 0x52, 0x8d, 0x29, 0x4a, 0x2a, 0xee, 0xc7, 0x81, -0xf8, 0xa2, 0xf3, 0xed, 0xfa, 0xf5, 0xd4, 0xb9, 0xce, 0x5b, -0x15, 0x95, 0x5b, 0x9a, 0xa7, 0x85, 0xb5, 0x0b, 0x6b, 0x89, -0x59, 0xa1, 0x38, 0x27, 0x39, 0xac, 0x67, 0xb7, 0x9a, 0x23, -0x87, 0x4c, 0x57, 0xe1, 0x98, 0x98, 0xd5, 0xf6, 0xb2, 0x95, -0x48, 0xb4, 0xdb, 0x67, 0xf3, 0x6e, 0x2e, 0x9d, 0x65, 0x5a, -0x53, 0xab, 0x16, 0x9b, 0x6c, 0x65, 0x14, 0x51, 0x9a, 0xe4, -0xd0, 0xe2, 0xd0, 0x28, 0xa3, 0x34, 0x53, 0xb2, 0x0b, 0x20, -0xa2, 0x8a, 0x4d, 0xdc, 0xe2, 0x96, 0x81, 0xa0, 0xb4, 0x72, -0x48, 0x03, 0xad, 0x5d, 0xb2, 0xd1, 0xae, 0xf5, 0x12, 0x04, -0x11, 0xe7, 0x35, 0xe8, 0x3e, 0x15, 0xf8, 0x66, 0xee, 0x56, -0x5b, 0xd5, 0xd9, 0x8e, 0x6b, 0xd2, 0xc2, 0x65, 0xd8, 0x8c, -0x64, 0x94, 0x69, 0xc7, 0x4e, 0xe7, 0xad, 0x81, 0xca, 0xb1, -0x59, 0x84, 0xd4, 0x69, 0x43, 0x4e, 0xfd, 0x0e, 0x6b, 0xc2, -0x7e, 0x0b, 0x9f, 0x57, 0xb9, 0x47, 0x96, 0x32, 0x23, 0x07, -0x35, 0xeb, 0xb1, 0x69, 0x71, 0xe9, 0x36, 0x5e, 0x54, 0x6a, -0x07, 0xd2, 0xb5, 0x6c, 0x34, 0xe8, 0xb4, 0xe8, 0x44, 0x71, -0x0c, 0x01, 0xde, 0xaa, 0x6a, 0xb2, 0x7c, 0xa6, 0xbf, 0x54, -0xca, 0xf2, 0xaa, 0x79, 0x7c, 0x3b, 0xc9, 0xf5, 0x3f, 0x6b, -0xc9, 0xb2, 0x5a, 0x39, 0x55, 0x3d, 0x35, 0x9b, 0xdd, 0x9c, -0xae, 0xa6, 0x48, 0x0d, 0xcd, 0x70, 0xda, 0xcb, 0x1f, 0x9b, -0x9a, 0xec, 0xf5, 0x59, 0x78, 0x6a, 0xe0, 0xf5, 0xb9, 0xbe, -0xf5, 0x7b, 0xc7, 0xd2, 0x9c, 0x27, 0x89, 0x64, 0x24, 0x35, -0x7c, 0xe1, 0xf1, 0xba, 0xfc, 0xc5, 0x13, 0x20, 0x3f, 0xc3, -0x9e, 0x2b, 0xe8, 0x1f, 0x12, 0x5c, 0x7d, 0xee, 0x6b, 0xe5, -0x3f, 0x8f, 0x7a, 0xa8, 0x13, 0x4c, 0xb9, 0xe8, 0xb8, 0xc5, -0x79, 0xd8, 0xf9, 0xf2, 0x50, 0x6c, 0xf2, 0xb3, 0x39, 0xfb, -0x3c, 0x34, 0x99, 0xf3, 0x1f, 0x89, 0xee, 0x0b, 0xdc, 0xce, -0xc4, 0xf5, 0x35, 0xe7, 0x9a, 0x9b, 0xe6, 0x43, 0x5d, 0x96, -0xbd, 0x3e, 0x4b, 0x93, 0xdc, 0x9a, 0xe1, 0xb5, 0x07, 0xcb, -0x35, 0x7c, 0xae, 0x0d, 0x5f, 0x53, 0xe2, 0xb0, 0x11, 0xbe, -0xa7, 0x77, 0xfb, 0x36, 0x68, 0x07, 0xc4, 0x9f, 0x1b, 0x7c, -0x39, 0x07, 0x97, 0xe6, 0xa4, 0x32, 0xb5, 0xcb, 0x0c, 0xf0, -0x36, 0x29, 0x23, 0xeb, 0xf3, 0x6d, 0x1f, 0x8d, 0x7e, 0xce, -0xe8, 0x16, 0x9f, 0x62, 0xd2, 0xed, 0x2d, 0xc0, 0xc0, 0x8e, -0x25, 0x5c, 0x7d, 0x05, 0x7e, 0x5d, 0x7f, 0xc1, 0x3e, 0xbc, -0x28, 0x75, 0xaf, 0x8a, 0x57, 0xfa, 0x93, 0x21, 0x2b, 0x6f, -0x0a, 0x5b, 0x29, 0xed, 0xf3, 0xb8, 0x66, 0xfc, 0x40, 0x8c, -0x7e, 0x75, 0xfa, 0xa9, 0x6a, 0xb8, 0xc5, 0x7d, 0x8e, 0x1d, -0x5a, 0x07, 0xdf, 0x61, 0x23, 0xcb, 0x4c, 0xd4, 0xb4, 0x1c, -0x0a, 0xd7, 0xb5, 0x52, 0x6b, 0x32, 0xd9, 0x7a, 0x56, 0xbd, -0xa2, 0xe3, 0x15, 0xd4, 0x76, 0x1a, 0x36, 0xdd, 0x85, 0x6a, -0x42, 0xb5, 0x9f, 0x6e, 0xbc, 0x8a, 0xd2, 0x84, 0x74, 0xa0, -0x0b, 0x71, 0x0e, 0x95, 0x61, 0x05, 0x43, 0x18, 0xe2, 0xa7, -0x5a, 0x00, 0x91, 0x05, 0x4b, 0x4c, 0x4a, 0x7d, 0x00, 0x2a, -0xd3, 0xa9, 0x07, 0x4a, 0x5a, 0x00, 0xcb, 0x94, 0xf5, 0xaa, -0x33, 0x9a, 0xb7, 0x31, 0xeb, 0x58, 0x1e, 0x29, 0xd6, 0xa2, -0xf0, 0xee, 0x81, 0xa9, 0x6a, 0xb3, 0xb2, 0xac, 0x36, 0x56, -0xf2, 0x5c, 0x31, 0x63, 0x81, 0x85, 0x52, 0x71, 0xfa, 0x52, -0x6d, 0x45, 0x36, 0xc9, 0x94, 0x94, 0x53, 0x93, 0xd9, 0x1f, -0x22, 0x5e, 0x5c, 0x1f, 0x8a, 0xff, 0x00, 0xb5, 0xcd, 0xf3, -0x6d, 0xcd, 0x8e, 0x82, 0x7e, 0xca, 0x9d, 0xc1, 0x31, 0x70, -0xc7, 0xdb, 0xe7, 0x2c, 0x3f, 0x01, 0x5f, 0x6b, 0x78, 0x7e, -0xd4, 0x43, 0x6f, 0x18, 0x1d, 0x85, 0x7c, 0x6d, 0xfb, 0x18, -0x68, 0x73, 0x6a, 0xb7, 0xba, 0xe7, 0x89, 0x6e, 0xd4, 0xbd, -0xc5, 0xec, 0xec, 0xcd, 0x21, 0x1f, 0x78, 0xb3, 0x16, 0x63, -0xf9, 0x9a, 0xfb, 0x63, 0x4e, 0x8f, 0x64, 0x43, 0xe9, 0x5f, -0x3f, 0x92, 0x27, 0x3a, 0x33, 0xc4, 0xcb, 0x7a, 0x92, 0x6f, -0xe5, 0xb2, 0xfc, 0x0f, 0x97, 0xe1, 0xd8, 0xba, 0x98, 0x79, -0xe2, 0xe5, 0xbd, 0x59, 0x39, 0x7c, 0xb6, 0x5f, 0x81, 0xf2, -0xff, 0x00, 0xfc, 0x14, 0x43, 0xc7, 0x12, 0x78, 0x3f, 0xe0, -0x8e, 0xa2, 0xf1, 0xb1, 0x5f, 0xdd, 0x31, 0xc8, 0x38, 0xe4, -0x8c, 0x01, 0x5f, 0x81, 0xf6, 0xda, 0x83, 0x43, 0xa9, 0xad, -0xe3, 0xae, 0xf7, 0x12, 0x6f, 0x20, 0xf7, 0x39, 0xaf, 0xdb, -0x3f, 0xf8, 0x2a, 0xdc, 0x17, 0x97, 0xbf, 0x07, 0xed, 0xed, -0x6d, 0x23, 0x66, 0x8d, 0x98, 0xc9, 0x70, 0xe3, 0xa0, 0x51, -0xeb, 0x5f, 0x88, 0x52, 0x29, 0x57, 0x20, 0xfa, 0xd7, 0xd0, -0x9f, 0x54, 0x7e, 0x9b, 0x7e, 0xcc, 0x3f, 0xf0, 0x50, 0x74, -0xf8, 0x5b, 0xf0, 0xda, 0xdb, 0x41, 0x7d, 0x32, 0xdc, 0xf9, -0x2b, 0x9f, 0x31, 0xa5, 0x39, 0x63, 0xf4, 0x02, 0xbe, 0x43, -0xfd, 0xb3, 0x3e, 0x3f, 0xcd, 0xfb, 0x41, 0xfc, 0x51, 0x1a, -0xcb, 0xc2, 0xb0, 0x43, 0x6d, 0x11, 0x86, 0x35, 0x56, 0x2c, -0x39, 0x3c, 0xf5, 0x1e, 0xd5, 0xe0, 0xeb, 0x71, 0x2a, 0x0f, -0x96, 0x57, 0x5f, 0xa3, 0x11, 0x4c, 0x66, 0x2e, 0x72, 0xc4, -0xb1, 0xf5, 0x26, 0x80, 0x3e, 0xfc, 0xfd, 0x82, 0x7e, 0x3c, -0x68, 0x3f, 0x05, 0x2d, 0x16, 0x4b, 0xcb, 0x58, 0xa7, 0x97, -0xef, 0x16, 0x66, 0xc1, 0xcf, 0xe5, 0x5f, 0x76, 0x5a, 0xff, -0x00, 0xc1, 0x45, 0x3c, 0x2f, 0x38, 0xf9, 0xac, 0xe3, 0x5f, -0xfb, 0x6a, 0x7f, 0xc2, 0xbf, 0x08, 0x2d, 0xf5, 0x5b, 0xcb, -0x51, 0x88, 0x6e, 0xa6, 0x88, 0x7f, 0xb0, 0xe4, 0x55, 0xa4, -0xf1, 0x46, 0xaf, 0x1f, 0xdd, 0xd4, 0x6e, 0x47, 0xfd, 0xb4, -0x34, 0x01, 0xfb, 0xd7, 0x6d, 0xfb, 0x7e, 0xf8, 0x46, 0x7f, -0xbd, 0x0a, 0xaf, 0xfd, 0xb4, 0x3f, 0xfc, 0x4d, 0x6c, 0x5a, -0xfe, 0xdc, 0x5e, 0x0b, 0xb8, 0x03, 0x24, 0x2e, 0x7f, 0xdb, -0x3f, 0xe1, 0x5f, 0x80, 0x91, 0xf8, 0xdf, 0x5d, 0x8b, 0xee, -0xea, 0x77, 0x03, 0xfe, 0x06, 0x6b, 0x73, 0xc3, 0x3e, 0x39, -0xf1, 0x25, 0xfe, 0xb3, 0x69, 0x6a, 0x9a, 0x94, 0xed, 0xbe, -0x41, 0xc6, 0xe3, 0x40, 0x1f, 0xd2, 0x1f, 0xc3, 0xdf, 0x89, -0x1a, 0x6f, 0xc4, 0x6d, 0x3d, 0xae, 0xf4, 0xdc, 0x98, 0xd4, -0x02, 0x79, 0xcf, 0x5a, 0xeb, 0x19, 0x82, 0xa9, 0x62, 0x70, -0x07, 0x24, 0xd7, 0xcd, 0xdf, 0xb0, 0x86, 0x81, 0x7d, 0xa5, -0xfc, 0x16, 0xb3, 0xbb, 0xd4, 0x19, 0xde, 0xe2, 0xef, 0x0d, -0x97, 0xeb, 0x8c, 0x57, 0xb3, 0x7c, 0x52, 0xf1, 0x0f, 0xfc, -0x23, 0x1e, 0x08, 0xd4, 0xef, 0x83, 0x84, 0x75, 0x89, 0x82, -0x93, 0xf4, 0xa0, 0x0a, 0x3a, 0xf7, 0xc6, 0xaf, 0x09, 0xf8, -0x72, 0xfc, 0xd9, 0xde, 0xea, 0x4b, 0x1c, 0xe0, 0x64, 0xae, -0x0f, 0x14, 0xc8, 0x3e, 0x38, 0xf8, 0x32, 0xe3, 0x1b, 0x75, -0x88, 0xf9, 0xf5, 0x53, 0x5f, 0x85, 0x9f, 0x1f, 0x3f, 0x69, -0xef, 0x12, 0xea, 0x1f, 0x14, 0xb5, 0x86, 0xb7, 0xbc, 0x2d, -0x0c, 0x52, 0x14, 0x5d, 0xae, 0xc0, 0x75, 0xfa, 0xd7, 0x19, -0x6f, 0xfb, 0x50, 0x78, 0xae, 0x0c, 0x7f, 0xa4, 0xc8, 0x7f, -0xed, 0xa3, 0x7f, 0x8d, 0x00, 0x7f, 0x42, 0xb0, 0xfc, 0x59, -0xf0, 0x9c, 0xf8, 0xd9, 0xac, 0xc0, 0x73, 0xf5, 0xff, 0x00, -0x0a, 0xb9, 0x17, 0xc4, 0x2f, 0x0e, 0x4c, 0x3e, 0x5d, 0x5e, -0xdc, 0xfe, 0x26, 0xbf, 0x9f, 0x2b, 0x5f, 0xda, 0xd7, 0xc5, -0x30, 0xf5, 0xb9, 0x9f, 0x8f, 0x49, 0x1b, 0xfc, 0x6b, 0x5a, -0xdb, 0xf6, 0xcb, 0xf1, 0x34, 0x3d, 0x6f, 0x2e, 0x07, 0xd2, -0x46, 0xff, 0x00, 0x1a, 0x00, 0xfe, 0x80, 0x62, 0xf1, 0x76, -0x8d, 0x36, 0x36, 0x6a, 0x36, 0xed, 0x9f, 0x46, 0xab, 0x29, -0xae, 0xe9, 0xf2, 0x7d, 0xdb, 0xc8, 0x5b, 0xe8, 0xe2, 0xbf, -0x03, 0x6c, 0xbf, 0x6e, 0x1f, 0x11, 0x5b, 0x91, 0x9b, 0xeb, -0x91, 0xff, 0x00, 0x03, 0x6f, 0xf1, 0xad, 0xbb, 0x3f, 0xdb, -0xdf, 0x5f, 0x87, 0xae, 0xa5, 0x72, 0x3f, 0xe0, 0x4f, 0xfe, -0x34, 0x01, 0xfb, 0xbc, 0xba, 0x85, 0xb3, 0xfd, 0xdb, 0x88, -0xcf, 0xd1, 0x85, 0x48, 0xb3, 0xc4, 0xdd, 0x24, 0x43, 0xf4, -0x61, 0x5f, 0x87, 0x36, 0x7f, 0xf0, 0x50, 0xbd, 0x6e, 0x2c, -0x67, 0x55, 0x9c, 0x7e, 0x32, 0x56, 0xed, 0x97, 0xfc, 0x14, -0x73, 0x57, 0x8b, 0xae, 0xb1, 0x28, 0xfa, 0x97, 0xa0, 0x0f, -0xda, 0xbd, 0xea, 0x7b, 0x8f, 0xce, 0x9d, 0x5f, 0x8e, 0x7a, -0x7f, 0xfc, 0x14, 0xab, 0x53, 0x43, 0xce, 0xb4, 0x7f, 0x16, -0x7f, 0xf1, 0xae, 0x86, 0xcb, 0xfe, 0x0a, 0x65, 0x7e, 0xa0, -0x6e, 0xd6, 0x14, 0xfd, 0x59, 0xbf, 0xc6, 0x80, 0x3f, 0x5a, -0xe8, 0xaf, 0xcb, 0x0b, 0x0f, 0xf8, 0x29, 0xb5, 0xc8, 0xc6, -0xed, 0x56, 0x23, 0xf5, 0x66, 0xff, 0x00, 0x1a, 0xe8, 0x2c, -0xbf, 0xe0, 0xa6, 0xcd, 0xf2, 0xef, 0xbf, 0xb7, 0x6f, 0xce, -0x80, 0x3f, 0x4b, 0xe8, 0xaf, 0xcf, 0x0b, 0x0f, 0xf8, 0x29, -0x95, 0xbb, 0x01, 0xe6, 0x5d, 0x5a, 0x37, 0xd4, 0x7f, 0xf5, -0xeb, 0x7e, 0xcb, 0xfe, 0x0a, 0x4f, 0xa6, 0x3e, 0x3c, 0xc9, -0x6c, 0xcf, 0xe0, 0x7f, 0xc6, 0x80, 0x3e, 0xf0, 0xa2, 0xbe, -0x2b, 0xb4, 0xff, 0x00, 0x82, 0x8c, 0xe8, 0x32, 0x63, 0x7b, -0xd9, 0xfe, 0x4d, 0xfe, 0x35, 0xb5, 0x69, 0xff, 0x00, 0x05, -0x08, 0xf0, 0xb4, 0xd8, 0xde, 0xf6, 0xa3, 0xe8, 0x5b, 0xfc, -0x68, 0x03, 0xeb, 0xaa, 0x2b, 0xe5, 0xfb, 0x3f, 0xdb, 0xc3, -0xc1, 0x97, 0x00, 0x6e, 0x9e, 0x05, 0xcf, 0xa1, 0x35, 0xb1, -0x6b, 0xfb, 0x6c, 0x78, 0x16, 0x7c, 0x6e, 0xbd, 0x89, 0x7f, -0xe0, 0x46, 0x80, 0x3e, 0x88, 0xa2, 0xbc, 0x36, 0xd7, 0xf6, -0xbf, 0xf0, 0x0d, 0xc6, 0x3f, 0xe2, 0x65, 0x12, 0xe7, 0xfd, -0xaa, 0xd5, 0xb6, 0xfd, 0xa9, 0x3c, 0x03, 0x71, 0x8f, 0xf8, -0x9c, 0x42, 0xb9, 0xf5, 0x34, 0x01, 0xeb, 0xb4, 0x57, 0x9a, -0xc1, 0xfb, 0x44, 0x78, 0x12, 0x7c, 0x63, 0x5c, 0x80, 0x67, -0xd4, 0xd5, 0xf8, 0x7e, 0x37, 0xf8, 0x2a, 0x7c, 0x6d, 0xd7, -0xad, 0xb9, 0xff, 0x00, 0x6a, 0x80, 0x3b, 0xba, 0x2b, 0x92, -0x8b, 0xe2, 0xc7, 0x84, 0xa6, 0xfb, 0x9a, 0xed, 0xa7, 0xe2, -0xf8, 0xab, 0x91, 0x7c, 0x41, 0xf0, 0xe4, 0xd8, 0xd9, 0xac, -0xd9, 0xb7, 0xfd, 0xb5, 0x14, 0x01, 0xd0, 0xd1, 0x59, 0x31, -0xf8, 0xb3, 0x45, 0x97, 0xee, 0x6a, 0xb6, 0x8d, 0xff, 0x00, -0x6d, 0x97, 0xfc, 0x6a, 0xc2, 0x6b, 0xba, 0x6b, 0xfd, 0xdb, -0xfb, 0x63, 0xf4, 0x99, 0x7f, 0xc6, 0x80, 0x2f, 0x51, 0x55, -0x97, 0x52, 0xb4, 0x7f, 0xbb, 0x75, 0x0b, 0x7d, 0x24, 0x1f, -0xe3, 0x52, 0x0b, 0x98, 0x5b, 0xa4, 0xa8, 0x7e, 0x8c, 0x28, -0x02, 0x5a, 0x29, 0xa2, 0x45, 0x3d, 0x18, 0x7e, 0x74, 0xb9, -0x07, 0xbd, 0x00, 0x2d, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, -0x40, 0x11, 0x3d, 0xba, 0x48, 0x3e, 0x65, 0x06, 0xa9, 0xc9, -0xa1, 0xda, 0x3f, 0x26, 0x31, 0xf9, 0x56, 0x8d, 0x15, 0x9c, -0xa9, 0xc2, 0x5f, 0x12, 0x32, 0x95, 0x28, 0x4f, 0xe2, 0x8d, -0xcc, 0xd8, 0xf4, 0x1b, 0x48, 0xce, 0x44, 0x63, 0xf2, 0xab, -0x09, 0xa7, 0xc1, 0x1f, 0x44, 0x5f, 0xca, 0xad, 0x51, 0x49, -0x52, 0x84, 0x76, 0x42, 0x8d, 0x1a, 0x70, 0xf8, 0x62, 0x86, -0x04, 0x55, 0x3c, 0x00, 0x3f, 0x0a, 0x7d, 0x14, 0x56, 0xbb, -0x1a, 0xda, 0xdb, 0x05, 0x14, 0x51, 0x40, 0xc2, 0x8a, 0x28, -0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x0a, 0x77, 0x9a, 0x5c, 0x37, -0xca, 0x44, 0x8a, 0x0e, 0x7d, 0xab, 0x9b, 0xbe, 0xf8, 0x6f, -0xa7, 0xde, 0x12, 0x73, 0xb4, 0xff, 0x00, 0xbb, 0x5d, 0x85, -0x15, 0xc9, 0x5b, 0x09, 0x42, 0xbf, 0xf1, 0x20, 0x99, 0xc3, -0x5f, 0x03, 0x86, 0xc4, 0xff, 0x00, 0x1a, 0x09, 0x9e, 0x6d, -0x73, 0xf0, 0x8e, 0xd5, 0xbe, 0xe4, 0x8d, 0xf9, 0x56, 0x45, -0xdf, 0xc2, 0x73, 0x19, 0xf9, 0x24, 0x73, 0xf8, 0x57, 0xb0, -0x52, 0x10, 0x0f, 0x6a, 0xf2, 0x6a, 0x64, 0x58, 0x1a, 0x9f, -0x62, 0xc7, 0x89, 0x57, 0x86, 0xb2, 0xda, 0xbf, 0xf2, 0xee, -0xc7, 0x88, 0xb7, 0xc2, 0xe9, 0xf3, 0xc3, 0xb8, 0xfc, 0x2a, -0x78, 0xbe, 0x13, 0xce, 0xe3, 0xfe, 0x3e, 0x08, 0xfc, 0x2b, -0xd9, 0xb6, 0x0f, 0xee, 0x8a, 0x36, 0x8f, 0x41, 0x5c, 0xcb, -0x87, 0x30, 0x49, 0xea, 0x8e, 0x38, 0xf0, 0x96, 0x5e, 0x9e, -0xa8, 0xf2, 0x48, 0x7e, 0x10, 0x5c, 0x33, 0x0c, 0xdc, 0x71, -0xf4, 0xad, 0xed, 0x2f, 0xe1, 0x65, 0xbd, 0xb1, 0x1e, 0x7b, -0x09, 0x3f, 0x0a, 0xef, 0xe8, 0xae, 0xca, 0x59, 0x26, 0x06, -0x93, 0xba, 0x81, 0xdf, 0x43, 0x87, 0x32, 0xda, 0x0f, 0x99, -0x53, 0xbb, 0xf3, 0x32, 0x6c, 0x3c, 0x33, 0x63, 0xa7, 0x63, -0xca, 0x89, 0x41, 0x1e, 0xd5, 0xaa, 0x06, 0x29, 0x68, 0xaf, -0x6a, 0x9d, 0x38, 0x52, 0x5c, 0xb0, 0x56, 0x47, 0xd0, 0xd3, -0xa5, 0x4e, 0x8c, 0x79, 0x69, 0xc6, 0xcb, 0xc8, 0x46, 0x38, -0x52, 0x6b, 0x07, 0x57, 0x97, 0xe5, 0x35, 0xb7, 0x39, 0xc2, -0x57, 0x33, 0xab, 0xc9, 0xc1, 0xad, 0x0d, 0x4e, 0x5b, 0x58, -0x9b, 0x0a, 0x6b, 0x82, 0xd6, 0xe7, 0xe1, 0xab, 0xb1, 0xd6, -0xe6, 0xe0, 0x8a, 0xf3, 0xed, 0x7a, 0x7c, 0x2b, 0x50, 0x07, -0x9f, 0xf8, 0x9e, 0xef, 0x6a, 0x48, 0x7d, 0x2b, 0xe3, 0x3f, -0x8e, 0x9a, 0xc1, 0x9b, 0x50, 0x99, 0x7d, 0x78, 0xfd, 0x6b, -0xeb, 0x2f, 0x1b, 0xdf, 0x08, 0x2c, 0x67, 0x62, 0x71, 0xc1, -0xaf, 0x88, 0xbe, 0x2e, 0x6a, 0x1e, 0x7e, 0xaf, 0x20, 0xce, -0x7f, 0xfd, 0x75, 0xf3, 0xd9, 0xc4, 0xed, 0x4d, 0x47, 0xb9, -0xf2, 0xb9, 0xf5, 0x4b, 0x52, 0x50, 0x5d, 0x4f, 0x23, 0xd6, -0xe7, 0xfb, 0xd5, 0xc6, 0xde, 0x3e, 0x49, 0xae, 0x93, 0x5b, -0x9b, 0x24, 0x8a, 0xe5, 0x6e, 0xdb, 0xad, 0x79, 0xf8, 0x48, -0xda, 0x28, 0xf3, 0x30, 0x30, 0xb4, 0x51, 0xfa, 0x21, 0xff, -0x00, 0x04, 0xde, 0xf0, 0x72, 0xda, 0x78, 0x46, 0x7d, 0x65, -0xb3, 0xbe, 0xe6, 0x79, 0x66, 0xe4, 0x74, 0xc6, 0x23, 0x5e, -0x7e, 0x80, 0xd7, 0xdd, 0x36, 0x8b, 0x9c, 0x57, 0x80, 0xfe, -0xc7, 0xbe, 0x12, 0x3e, 0x15, 0xf8, 0x3b, 0xa1, 0xdb, 0xbc, -0x62, 0x39, 0xbe, 0xcb, 0x10, 0x90, 0x01, 0xfc, 0x65, 0x43, -0xb8, 0xff, 0x00, 0xbe, 0x98, 0xd7, 0xd0, 0x96, 0x8b, 0x9c, -0x57, 0xd7, 0x41, 0x5a, 0x29, 0x1f, 0x73, 0x4d, 0x72, 0xc1, -0x23, 0x4e, 0xd9, 0x7a, 0x56, 0xbd, 0xaa, 0x60, 0x0a, 0xcd, -0xb5, 0x5e, 0x45, 0x6b, 0xdb, 0x2f, 0x02, 0xac, 0xd0, 0xbf, -0x6c, 0xb5, 0xa3, 0x08, 0xaa, 0x56, 0xe3, 0x81, 0x5a, 0x10, -0x8a, 0x00, 0xb3, 0x18, 0xc6, 0x2a, 0x65, 0xa8, 0x92, 0xa6, -0x5e, 0xb4, 0x01, 0x2a, 0x53, 0xa9, 0x16, 0x96, 0x80, 0x1c, -0x3a, 0x52, 0xd1, 0x45, 0x00, 0x63, 0x4c, 0xd5, 0xe1, 0x7f, -0xb5, 0xdf, 0x8a, 0x8f, 0x86, 0xfe, 0x0b, 0x6a, 0xb1, 0xc6, -0xfb, 0x2e, 0x35, 0x27, 0x4b, 0x18, 0xc0, 0xc6, 0x4e, 0xf3, -0xf3, 0x63, 0xfe, 0x02, 0x0d, 0x7b, 0x84, 0xc7, 0xad, 0x7c, -0x89, 0xfb, 0x67, 0x6a, 0x4f, 0xe2, 0x2f, 0x1b, 0x78, 0x13, -0xc1, 0xb0, 0x1d, 0xdb, 0x9d, 0xaf, 0x66, 0x8c, 0x1c, 0xe4, -0xb1, 0x11, 0xa6, 0x47, 0x4e, 0x00, 0x93, 0xf3, 0xed, 0x5e, -0x3e, 0x6f, 0x59, 0xd1, 0xc1, 0x54, 0x71, 0xdd, 0xe8, 0xbd, -0x5e, 0x87, 0x83, 0x9e, 0xd7, 0x78, 0x7c, 0xba, 0xac, 0xa3, -0xbb, 0x5c, 0xab, 0xd6, 0x5a, 0x7e, 0xa7, 0xa7, 0xfe, 0xcb, -0x3e, 0x15, 0x1a, 0x07, 0xc3, 0x8d, 0x28, 0x14, 0xdb, 0x24, -0xc9, 0xe7, 0x3e, 0x47, 0x73, 0xcd, 0x7d, 0x09, 0x6e, 0xbb, -0x62, 0x15, 0xc5, 0x78, 0x0b, 0x4a, 0x8f, 0x4a, 0xd1, 0xed, -0x2d, 0x94, 0x05, 0x58, 0xa3, 0x54, 0x00, 0x0e, 0xc0, 0x01, -0x5d, 0xc2, 0xe3, 0x68, 0xc7, 0x4a, 0xed, 0xc2, 0x51, 0x58, -0x7c, 0x3c, 0x29, 0x2e, 0x89, 0x23, 0xd1, 0xc0, 0xe1, 0xd6, -0x17, 0x0d, 0x4e, 0x8a, 0xfb, 0x29, 0x23, 0xca, 0xff, 0x00, -0x68, 0xbf, 0x84, 0x96, 0xff, 0x00, 0x17, 0x3c, 0x05, 0x77, -0xa5, 0xcb, 0x01, 0x9e, 0x46, 0x52, 0x15, 0x00, 0xce, 0x6b, -0xf1, 0x97, 0xe2, 0xff, 0x00, 0xec, 0x1f, 0xe3, 0x7f, 0x0d, -0xeb, 0x37, 0x32, 0x2d, 0x9b, 0x41, 0x6c, 0x5d, 0x8a, 0x2f, -0x90, 0xdd, 0x33, 0xc7, 0x7a, 0xfd, 0xf0, 0xac, 0x2d, 0x7f, -0xc1, 0x9a, 0x57, 0x89, 0x39, 0xbf, 0xb6, 0x59, 0x7e, 0xa3, -0x35, 0xd6, 0x76, 0x9f, 0xcd, 0x77, 0x8d, 0x3e, 0x10, 0x6b, -0x5e, 0x05, 0xb7, 0x69, 0xb5, 0x14, 0x28, 0xa0, 0xe3, 0x94, -0x2b, 0x5c, 0x7e, 0x9b, 0xa6, 0x4f, 0xaa, 0xdc, 0x79, 0x36, -0xe8, 0x5e, 0x4f, 0x40, 0x33, 0x5f, 0xa2, 0xff, 0x00, 0xf0, -0x55, 0xa8, 0x7c, 0x3f, 0xe1, 0x6b, 0x8d, 0x37, 0x45, 0xd1, -0xa1, 0x58, 0xee, 0x25, 0x93, 0x74, 0x9b, 0x54, 0x0e, 0x2b, -0xc6, 0xbf, 0xe0, 0x9e, 0x5f, 0x05, 0x6c, 0xbe, 0x2d, 0x78, -0xea, 0xfa, 0x3d, 0x41, 0x01, 0x86, 0x17, 0x8d, 0x06, 0xe8, -0xf7, 0x0c, 0x9c, 0xe6, 0x80, 0x3e, 0x70, 0x6f, 0x85, 0xbe, -0x22, 0x54, 0x0f, 0xf6, 0x09, 0x08, 0x23, 0x23, 0xe5, 0x3f, -0xe1, 0x55, 0x64, 0xf8, 0x7b, 0xaf, 0xc7, 0xd7, 0x4e, 0x97, -0xf0, 0x53, 0x5f, 0xd0, 0x0b, 0xfe, 0xc5, 0x9e, 0x09, 0x30, -0xa2, 0x2c, 0x71, 0x8d, 0xaa, 0x07, 0xfc, 0x7b, 0xaf, 0xf8, -0xd6, 0x55, 0xd7, 0xec, 0x2d, 0xe0, 0xf9, 0xb3, 0xb4, 0xc2, -0x3e, 0xb6, 0xe3, 0xfc, 0x68, 0x03, 0xf0, 0x26, 0x4f, 0x07, -0x6b, 0x31, 0xf5, 0xd3, 0xe6, 0xfc, 0x14, 0xd7, 0x7d, 0xf0, -0x23, 0xc0, 0x7a, 0x96, 0xad, 0xf1, 0x06, 0xc6, 0x29, 0x2c, -0x27, 0xc6, 0xf5, 0x1c, 0xa1, 0xee, 0x6b, 0xf6, 0x7e, 0xf3, -0xf6, 0x00, 0xf0, 0xcc, 0xf9, 0xd9, 0x2d, 0xb8, 0xfa, 0xc1, -0x5a, 0xdf, 0x0e, 0xff, 0x00, 0x62, 0x6d, 0x03, 0xc0, 0xde, -0x20, 0x8f, 0x51, 0x5f, 0xb3, 0xc8, 0x51, 0x83, 0x00, 0xb1, -0x01, 0xd2, 0x80, 0x3d, 0xb3, 0xe1, 0x17, 0x87, 0x57, 0xc2, -0xbf, 0x0e, 0x74, 0x1d, 0x39, 0x53, 0xcb, 0x31, 0xda, 0xa1, -0x65, 0xc6, 0x39, 0x23, 0x35, 0xe4, 0x5f, 0xb7, 0x07, 0x8d, -0x47, 0x84, 0x7e, 0x10, 0xea, 0x2c, 0x1b, 0x6b, 0x34, 0x2e, -0x78, 0xfa, 0x62, 0xbe, 0x8b, 0x44, 0x11, 0xa2, 0xa2, 0x8c, -0x2a, 0x8c, 0x01, 0x5e, 0x2f, 0xfb, 0x4a, 0xfc, 0x16, 0xbb, -0xf8, 0xc9, 0xe1, 0x99, 0x74, 0xdb, 0x72, 0xb8, 0x74, 0xd8, -0x43, 0x63, 0x18, 0xfc, 0x68, 0x03, 0xf9, 0xd1, 0xd7, 0xaf, -0xa5, 0xd5, 0x75, 0x7b, 0xcb, 0xc9, 0x03, 0x16, 0x9a, 0x56, -0x7c, 0x91, 0xea, 0x6b, 0x3e, 0xbf, 0x5c, 0x6f, 0xbf, 0xe0, -0x98, 0xb7, 0xbf, 0xc1, 0x6d, 0x6e, 0x7f, 0xe0, 0x0b, 0xfe, -0x35, 0xcd, 0x5f, 0x7f, 0xc1, 0x31, 0xb5, 0x55, 0xdd, 0xb7, -0x4e, 0x84, 0xfd, 0x23, 0x4f, 0xf1, 0xa0, 0x0f, 0xcb, 0x3a, -0x2b, 0xf4, 0xaa, 0xff, 0x00, 0xfe, 0x09, 0x9d, 0xad, 0x26, -0x4a, 0xe9, 0x31, 0xb7, 0xd1, 0x17, 0xfc, 0x6b, 0x9e, 0xbf, -0xff, 0x00, 0x82, 0x6e, 0xeb, 0xb1, 0x67, 0x1a, 0x40, 0xe3, -0xfd, 0x80, 0x3f, 0xad, 0x00, 0x7e, 0x7b, 0x51, 0x5f, 0x74, -0xdf, 0x7f, 0xc1, 0x3c, 0x3c, 0x43, 0x00, 0x6c, 0x69, 0x2e, -0x3e, 0x8a, 0x3f, 0xc6, 0xb9, 0xeb, 0xcf, 0xd8, 0x1b, 0xc4, -0x50, 0xee, 0xc6, 0x9b, 0x30, 0xc7, 0xa0, 0x1f, 0xe3, 0x40, -0x1f, 0x1b, 0xd1, 0x5f, 0x56, 0xde, 0xfe, 0xc3, 0x3e, 0x23, -0x87, 0x3f, 0xe8, 0x33, 0x8f, 0xc0, 0x7f, 0x8d, 0x63, 0x5c, -0xfe, 0xc5, 0xfe, 0x24, 0x87, 0x38, 0xb5, 0xb8, 0x18, 0xf5, -0x5c, 0xff, 0x00, 0x5a, 0x00, 0xf9, 0xae, 0x8a, 0xf7, 0xcb, -0xbf, 0xd9, 0x1b, 0xc4, 0xd6, 0xff, 0x00, 0xf2, 0xc2, 0x61, -0xf5, 0x51, 0xfe, 0x35, 0x95, 0x71, 0xfb, 0x2f, 0xf8, 0x9e, -0x0c, 0xfe, 0xe5, 0xcf, 0xd5, 0x28, 0x03, 0xc6, 0x77, 0x11, -0xdc, 0xd2, 0x89, 0x5d, 0x7a, 0x3b, 0x0f, 0xa1, 0xaf, 0x53, -0x9f, 0xf6, 0x74, 0xf1, 0x3c, 0x39, 0xfd, 0xc3, 0x7f, 0xdf, -0x3f, 0xfd, 0x7a, 0xcf, 0x9f, 0xe0, 0x4f, 0x8a, 0x20, 0xff, -0x00, 0x97, 0x6c, 0xfe, 0x94, 0x01, 0xc0, 0x2d, 0xe4, 0xe9, -0xd2, 0x57, 0x1f, 0x46, 0xa9, 0x57, 0x56, 0xbc, 0x4e, 0x97, -0x32, 0x0f, 0xf8, 0x15, 0x75, 0x73, 0x7c, 0x1d, 0xf1, 0x34, -0x39, 0xcd, 0x96, 0x71, 0xef, 0x54, 0xe4, 0xf8, 0x61, 0xe2, -0x38, 0xba, 0xe9, 0xec, 0x7f, 0xe0, 0x42, 0x80, 0x31, 0x57, -0xc4, 0x3a, 0x92, 0x7d, 0xdb, 0xc9, 0x47, 0xfc, 0x0a, 0xa7, -0x4f, 0x17, 0x6b, 0x11, 0xf4, 0xbf, 0x97, 0xf3, 0x15, 0x66, -0x5f, 0x00, 0x6b, 0xf1, 0x7d, 0xed, 0x3a, 0x4f, 0xc0, 0x8f, -0xf1, 0xa8, 0x1f, 0xc1, 0xda, 0xcc, 0x7d, 0x74, 0xf9, 0x7f, -0x4a, 0x00, 0x9e, 0x3f, 0x1f, 0x6b, 0xd1, 0x0c, 0x2e, 0xa3, -0x28, 0xfc, 0xbf, 0xc2, 0xad, 0x45, 0xf1, 0x3f, 0xc4, 0x91, -0x74, 0xd4, 0x9f, 0xf1, 0x02, 0xb1, 0x9f, 0xc3, 0x9a, 0x9a, -0x7d, 0xeb, 0x29, 0x47, 0xe1, 0x51, 0x36, 0x8f, 0x7a, 0x9f, -0x7a, 0xda, 0x41, 0xf8, 0x50, 0x07, 0x53, 0x17, 0xc6, 0x1f, -0x14, 0x45, 0xd3, 0x50, 0x63, 0xf5, 0x02, 0xaf, 0x41, 0xf1, -0xdb, 0xc5, 0x50, 0xe3, 0xfd, 0x33, 0x35, 0xc1, 0xb5, 0x8d, -0xc2, 0xf5, 0x86, 0x41, 0xff, 0x00, 0x01, 0xa8, 0xfc, 0x89, -0x07, 0x58, 0xd8, 0x7d, 0x41, 0xa0, 0x0f, 0x51, 0xb7, 0xfd, -0xa3, 0x3c, 0x55, 0x09, 0xff, 0x00, 0x8f, 0x92, 0x7e, 0x86, -0xb4, 0xa0, 0xfd, 0xa8, 0xbc, 0x53, 0x16, 0x3f, 0x7c, 0xfc, -0x7a, 0x30, 0xff, 0x00, 0x0a, 0xf1, 0xa2, 0xa4, 0x75, 0x07, -0xf2, 0xa4, 0xa0, 0x0f, 0x7a, 0xb6, 0xfd, 0xad, 0xfc, 0x4f, -0x06, 0x3f, 0x7d, 0x27, 0x1e, 0x8f, 0xff, 0x00, 0xd6, 0xad, -0x6b, 0x4f, 0xdb, 0x37, 0xc4, 0x90, 0x10, 0x4c, 0xf3, 0x0c, -0x7f, 0xb4, 0x3f, 0xc2, 0xbe, 0x6f, 0xa2, 0x80, 0x3e, 0xaa, -0xb4, 0xfd, 0xb8, 0xfc, 0x43, 0x16, 0x3f, 0xd2, 0x67, 0x18, -0xf5, 0x61, 0xfe, 0x15, 0xb7, 0x67, 0xfb, 0x7b, 0x6b, 0xf0, -0xe3, 0xfd, 0x36, 0x61, 0xff, 0x00, 0x02, 0x1f, 0xe1, 0x5f, -0x1d, 0x51, 0x40, 0x1f, 0x70, 0x59, 0xff, 0x00, 0xc1, 0x41, -0xf5, 0xc8, 0xb1, 0x9d, 0x46, 0x41, 0xf5, 0x61, 0xfe, 0x15, -0xd0, 0xd8, 0xff, 0x00, 0xc1, 0x46, 0x75, 0x98, 0xb1, 0x9d, -0x4c, 0x8f, 0xab, 0xaf, 0xf8, 0x57, 0xe7, 0xf5, 0x14, 0x01, -0xfa, 0x43, 0x63, 0xff, 0x00, 0x05, 0x26, 0xd5, 0x63, 0xc6, -0x75, 0x65, 0xfc, 0x64, 0x5f, 0xf0, 0xae, 0x86, 0xc3, 0xfe, -0x0a, 0x63, 0xa8, 0x80, 0x33, 0xaa, 0x46, 0x7e, 0xb2, 0x2f, -0xf8, 0x57, 0xe5, 0xed, 0x14, 0x01, 0xfa, 0xc7, 0x65, 0xff, -0x00, 0x05, 0x33, 0xbc, 0xe3, 0x3a, 0x84, 0x27, 0xfe, 0xda, -0xa7, 0xf8, 0x57, 0x47, 0x61, 0xff, 0x00, 0x05, 0x31, 0x90, -0x85, 0xdf, 0x73, 0x03, 0x7d, 0x5d, 0x7f, 0xc2, 0xbf, 0x1e, -0xb7, 0x1f, 0x53, 0x4e, 0x59, 0xe4, 0x4f, 0xbb, 0x23, 0x0f, -0xa1, 0x34, 0x01, 0xfb, 0x43, 0x67, 0xff, 0x00, 0x05, 0x29, -0x89, 0xf1, 0xbe, 0x4b, 0x76, 0xff, 0x00, 0x81, 0xaf, 0xf8, -0x56, 0xed, 0x9f, 0xfc, 0x14, 0x7b, 0x4e, 0x93, 0x1b, 0xc5, -0xb1, 0xff, 0x00, 0xb6, 0x8b, 0x5f, 0x88, 0xab, 0x7f, 0x72, -0x9d, 0x27, 0x90, 0x7d, 0x18, 0xd4, 0xcb, 0xad, 0xdf, 0xa7, -0xdd, 0xbb, 0x98, 0x7f, 0xc0, 0xcd, 0x00, 0x7e, 0xe9, 0x59, -0xff, 0x00, 0xc1, 0x43, 0x74, 0x29, 0x71, 0xbe, 0x3b, 0x6f, -0xfb, 0xfa, 0x2b, 0x72, 0xcf, 0xf6, 0xfa, 0xf0, 0xbc, 0xf8, -0xde, 0x90, 0x7e, 0x13, 0x8a, 0xfc, 0x17, 0x4f, 0x13, 0xea, -0xb1, 0xfd, 0xdb, 0xe9, 0xc7, 0xfc, 0x0c, 0xd5, 0x98, 0xfc, -0x6f, 0xad, 0xc7, 0x8c, 0x6a, 0x13, 0x7f, 0xdf, 0x46, 0x80, -0x3f, 0x7e, 0x2d, 0xbf, 0x6e, 0x3f, 0x07, 0xcd, 0x8d, 0xde, -0x48, 0xff, 0x00, 0xb7, 0x81, 0xfe, 0x15, 0xad, 0x6b, 0xfb, -0x65, 0x78, 0x2a, 0xe3, 0x19, 0x9a, 0x35, 0xff, 0x00, 0xb6, -0xeb, 0xfe, 0x15, 0xfc, 0xfe, 0x47, 0xf1, 0x23, 0x5f, 0x8b, -0xa6, 0xa1, 0x37, 0xfd, 0xf6, 0x6a, 0xdc, 0x3f, 0x16, 0xbc, -0x47, 0x0e, 0x31, 0x7d, 0x27, 0x1f, 0xed, 0x1a, 0x00, 0xfe, -0x83, 0x6d, 0x7f, 0x6b, 0x0f, 0x03, 0xdc, 0x90, 0x3e, 0xdb, -0x12, 0xff, 0x00, 0xdb, 0x65, 0x35, 0xab, 0x07, 0xed, 0x27, -0xe0, 0x99, 0xfa, 0x6a, 0x90, 0x8f, 0xac, 0xab, 0x5f, 0xcf, -0x5c, 0x3f, 0x1b, 0xbc, 0x4b, 0x0e, 0x3f, 0xd2, 0xdc, 0xe3, -0xfe, 0x9a, 0x1a, 0xbf, 0x0f, 0xed, 0x09, 0xe2, 0x68, 0xb1, -0xfb, 0xf9, 0x0e, 0x3f, 0xe9, 0xb1, 0xa0, 0x0f, 0xe8, 0x62, -0x0f, 0x8e, 0xde, 0x0d, 0x9f, 0x18, 0xd5, 0xe0, 0x1f, 0x59, -0x07, 0xf8, 0xd5, 0xf8, 0x7e, 0x2f, 0x78, 0x4e, 0x6f, 0xbb, -0xac, 0xdb, 0x7f, 0xdf, 0xc1, 0xfe, 0x35, 0xfc, 0xf4, 0x5b, -0xfe, 0xd3, 0x1e, 0x26, 0x83, 0xa4, 0x92, 0x1f, 0xa4, 0xe4, -0x7f, 0x4a, 0xd2, 0xb7, 0xfd, 0xab, 0xbc, 0x4d, 0x0e, 0x32, -0xf3, 0x7f, 0xdf, 0xf3, 0x40, 0x1f, 0xd0, 0x94, 0x3f, 0x11, -0xfc, 0x35, 0x3f, 0xdc, 0xd6, 0x2d, 0x3f, 0x19, 0x47, 0xf8, -0xd5, 0xc8, 0xbc, 0x63, 0xa1, 0xcd, 0xf7, 0x35, 0x5b, 0x46, -0xfa, 0x4a, 0xb5, 0xfc, 0xfc, 0x5a, 0xfe, 0xd8, 0xde, 0x24, -0x83, 0xac, 0x97, 0x3f, 0x84, 0xe6, 0xb5, 0xed, 0x3f, 0x6d, -0xbf, 0x10, 0x45, 0x8c, 0xcd, 0x76, 0x0f, 0xfd, 0x76, 0x34, -0x01, 0xfb, 0xf2, 0x9a, 0xfe, 0x99, 0x27, 0xdd, 0xd4, 0x2d, -0x9b, 0xe9, 0x2a, 0xff, 0x00, 0x8d, 0x4e, 0xba, 0x95, 0xa3, -0xfd, 0xdb, 0xa8, 0x5b, 0xe9, 0x20, 0xaf, 0xc1, 0xab, 0x3f, -0xdb, 0xc3, 0x5c, 0x83, 0x19, 0xba, 0xbb, 0x1f, 0x59, 0x58, -0xd6, 0xed, 0x9f, 0xfc, 0x14, 0x13, 0x58, 0x8f, 0x19, 0xbf, -0xba, 0x1f, 0xf6, 0xd5, 0xa8, 0x03, 0xf7, 0x35, 0x6e, 0x22, -0x71, 0x95, 0x91, 0x08, 0xf6, 0x61, 0x4f, 0x0c, 0x0f, 0x42, -0x0d, 0x7e, 0x27, 0xd8, 0x7f, 0xc1, 0x45, 0x35, 0x58, 0x80, -0xdd, 0xa9, 0x5c, 0x0f, 0xac, 0xad, 0x5d, 0x0e, 0x9f, 0xff, -0x00, 0x05, 0x22, 0xd4, 0x93, 0x19, 0xd4, 0xe6, 0xff, 0x00, -0xbf, 0xcd, 0xfe, 0x14, 0x01, 0xfb, 0x21, 0x45, 0x7e, 0x49, -0xe9, 0xff, 0x00, 0xf0, 0x52, 0xdb, 0xf1, 0x8c, 0xea, 0x52, -0x7e, 0x33, 0x37, 0xf8, 0x57, 0x43, 0x61, 0xff, 0x00, 0x05, -0x31, 0xba, 0xe3, 0x75, 0xf3, 0x37, 0xd6, 0x53, 0xfe, 0x14, -0x01, 0xfa, 0x97, 0x45, 0x7e, 0x6c, 0x69, 0xff, 0x00, 0xf0, -0x52, 0xf6, 0x60, 0x37, 0xce, 0x1b, 0xfe, 0xda, 0x13, 0xfd, -0x2b, 0x7e, 0xcf, 0xfe, 0x0a, 0x53, 0x6e, 0xd8, 0xde, 0x50, -0xfd, 0x5c, 0xff, 0x00, 0x85, 0x00, 0x7e, 0x84, 0x51, 0x5f, -0x0a, 0xd9, 0x7f, 0xc1, 0x48, 0x34, 0xd9, 0x31, 0xbd, 0x23, -0x3f, 0x56, 0xff, 0x00, 0xeb, 0x56, 0xdd, 0x97, 0xfc, 0x14, -0x4f, 0x42, 0x94, 0x80, 0xf0, 0xc7, 0xf8, 0x31, 0xff, 0x00, -0x0a, 0x00, 0xfb, 0x3e, 0x8a, 0xf9, 0x32, 0xd3, 0xf6, 0xff, -0x00, 0xf0, 0xbc, 0xa0, 0x6f, 0x8d, 0x32, 0x7f, 0xdb, 0x3f, -0xe1, 0x5b, 0xd6, 0x1f, 0xb7, 0x27, 0x83, 0xae, 0xb1, 0xbb, -0x6a, 0xe7, 0xfd, 0xb3, 0xff, 0x00, 0xc4, 0xd0, 0x07, 0xd1, -0x97, 0x8f, 0xb5, 0x6b, 0x94, 0xd5, 0xa5, 0xce, 0x6b, 0x85, -0xd1, 0x7f, 0x69, 0xff, 0x00, 0x08, 0xf8, 0xa2, 0xe1, 0x2d, -0xa0, 0x9f, 0x12, 0xc8, 0x70, 0xa0, 0x1c, 0xf3, 0xf9, 0x57, -0x5b, 0xa8, 0x5c, 0xac, 0xb0, 0xef, 0x53, 0x95, 0x61, 0x91, -0x40, 0x1c, 0xa6, 0xb9, 0x37, 0xde, 0xaf, 0x3b, 0xf1, 0x0c, -0xd8, 0x56, 0xae, 0xdb, 0x5b, 0x9b, 0x25, 0xab, 0xce, 0x7c, -0x49, 0x3f, 0x0d, 0xcd, 0x00, 0x79, 0x17, 0xc5, 0x1d, 0x43, -0xc8, 0xd2, 0xe4, 0x19, 0xc1, 0x39, 0xaf, 0x89, 0x7e, 0x21, -0xde, 0x79, 0xda, 0xac, 0xc7, 0x35, 0xf5, 0x87, 0xc6, 0x6d, -0x4f, 0xca, 0xb5, 0x29, 0x9e, 0xc6, 0xbe, 0x35, 0xf1, 0x7d, -0xd7, 0x9b, 0x7b, 0x33, 0x67, 0xa9, 0x35, 0xf2, 0x19, 0xac, -0xf9, 0xab, 0x28, 0x9f, 0x09, 0x9d, 0xd4, 0xe7, 0xaf, 0x18, -0x1c, 0x1e, 0xb1, 0x2e, 0x5c, 0xd4, 0x3e, 0x0f, 0xd0, 0xcf, -0x8a, 0x3c, 0x67, 0xa2, 0xe9, 0x41, 0x3c, 0xc1, 0x77, 0x79, -0x1c, 0x6c, 0xbe, 0xa9, 0xb8, 0x6e, 0xff, 0x00, 0xc7, 0x73, -0x51, 0xea, 0x72, 0x65, 0xda, 0xbd, 0x23, 0xf6, 0x4f, 0xf0, -0xfb, 0x78, 0x87, 0xe3, 0x76, 0x92, 0x15, 0x37, 0x7d, 0x95, -0x24, 0x9f, 0x9e, 0x80, 0xe3, 0x68, 0xfd, 0x5a, 0xba, 0xf0, -0x91, 0xd5, 0x23, 0xb7, 0x05, 0x4e, 0xee, 0x28, 0xfd, 0x6d, -0xf8, 0x69, 0xa6, 0xae, 0x99, 0xe1, 0x0d, 0x36, 0x20, 0xa1, -0x73, 0x1e, 0xfc, 0x01, 0x8e, 0xbd, 0x3f, 0x4c, 0x57, 0x77, -0x68, 0xbc, 0x0a, 0xc4, 0xd2, 0x6d, 0x56, 0xd2, 0xce, 0xde, -0x05, 0x18, 0x58, 0xa3, 0x54, 0x03, 0x1d, 0x80, 0xc5, 0x74, -0x16, 0x8b, 0x85, 0x15, 0xf4, 0x87, 0xd7, 0x1a, 0x56, 0xab, -0xc8, 0xad, 0x78, 0x17, 0xa5, 0x66, 0xda, 0x2e, 0x48, 0xad, -0x68, 0x17, 0x91, 0x40, 0x17, 0xa1, 0x5e, 0x95, 0xa1, 0x08, -0xe9, 0x54, 0xe1, 0x15, 0x7a, 0x2a, 0x00, 0x9d, 0x6a, 0x55, -0xa8, 0xd0, 0x54, 0xab, 0x40, 0x12, 0x0e, 0x94, 0xe1, 0xd6, -0x92, 0x95, 0x68, 0x01, 0xd4, 0x51, 0x45, 0x00, 0x60, 0x4c, -0x7a, 0xd7, 0xc4, 0x3a, 0x6e, 0xaf, 0x1f, 0xc4, 0x3f, 0xda, -0xcf, 0x5d, 0xd4, 0xb2, 0x65, 0xb7, 0xd3, 0xa4, 0x36, 0xf1, -0x6f, 0x50, 0x36, 0x88, 0x86, 0xcc, 0x71, 0xfe, 0xd6, 0x6b, -0xec, 0xaf, 0x16, 0x6a, 0xa9, 0xa1, 0x78, 0x73, 0x56, 0xd4, -0xe4, 0x3f, 0x25, 0x95, 0xa4, 0xb7, 0x0d, 0xce, 0x38, 0x44, -0x2c, 0x79, 0xed, 0xd2, 0xbe, 0x04, 0xfd, 0x92, 0xae, 0xe4, -0xd4, 0x3c, 0x45, 0xad, 0x6a, 0xb7, 0x2d, 0xbe, 0xe2, 0x63, -0xbd, 0xdf, 0xd5, 0xd9, 0x8b, 0x31, 0xfc, 0xeb, 0xe6, 0xf3, -0x47, 0xed, 0x71, 0x38, 0x6c, 0x3f, 0x47, 0x2b, 0xbf, 0x91, -0xf2, 0x59, 0xcb, 0xf6, 0xd8, 0xbc, 0x1e, 0x17, 0xa3, 0x97, -0x33, 0xff, 0x00, 0xb7, 0x51, 0xf7, 0x9e, 0x8d, 0x7e, 0x16, -0x15, 0xe7, 0x8a, 0xe9, 0xad, 0x35, 0x0f, 0x94, 0x0c, 0xd7, -0x98, 0xe9, 0x3a, 0xa8, 0xda, 0x06, 0xea, 0xe8, 0xad, 0x35, -0x6e, 0x07, 0xcd, 0x5f, 0x48, 0x7d, 0x69, 0xdd, 0x25, 0xd2, -0x38, 0xeb, 0x8a, 0x59, 0xa5, 0x5f, 0x29, 0x80, 0x3c, 0x90, -0x71, 0x5c, 0xa2, 0x6a, 0xf8, 0x1d, 0x7f, 0x5a, 0x73, 0x6b, -0x5c, 0x7d, 0xef, 0xd6, 0x80, 0x3e, 0x62, 0xfd, 0xa0, 0xbf, -0x63, 0xf3, 0xf1, 0x8f, 0xc6, 0x12, 0x6a, 0xd7, 0x56, 0x90, -0xdc, 0x8d, 0xbb, 0x50, 0xc8, 0x37, 0x57, 0x5f, 0xfb, 0x2b, -0xfe, 0xcb, 0xf6, 0x1f, 0x03, 0xe5, 0xbb, 0x98, 0x58, 0x5b, -0xc1, 0x34, 0xce, 0x1f, 0x7a, 0x26, 0x0f, 0x00, 0x8f, 0x4a, -0xf6, 0xd5, 0xd6, 0xc7, 0xaf, 0xeb, 0x52, 0x2e, 0xb4, 0x3f, -0xbd, 0x40, 0x1d, 0x57, 0x98, 0xbf, 0xde, 0x14, 0x6f, 0x5f, -0x51, 0x5c, 0xc0, 0xd6, 0x47, 0xad, 0x3c, 0x6b, 0x20, 0x9e, -0xbf, 0xad, 0x00, 0x74, 0xbb, 0x81, 0xee, 0x28, 0xc8, 0xf5, -0xae, 0x77, 0xfb, 0x60, 0x1e, 0xff, 0x00, 0xad, 0x3c, 0x6a, -0xea, 0x7b, 0xd0, 0x06, 0xfe, 0x68, 0xcd, 0x61, 0x8d, 0x58, -0x7a, 0xd3, 0x86, 0xaa, 0x3f, 0xbd, 0xfa, 0xd0, 0x06, 0xdd, -0x15, 0x8e, 0xba, 0xa8, 0xfe, 0xf7, 0xeb, 0x4f, 0x1a, 0xa8, -0xfe, 0xf0, 0xa0, 0x0d, 0x5a, 0x2b, 0x30, 0x6a, 0x9e, 0xf4, -0xff, 0x00, 0xed, 0x20, 0x7b, 0x8a, 0x00, 0xbe, 0x54, 0x37, -0x50, 0x0f, 0xd6, 0xa3, 0x6b, 0x58, 0x5f, 0xef, 0x43, 0x19, -0xfa, 0xa8, 0xaa, 0xc3, 0x52, 0x04, 0xf6, 0xa7, 0x0d, 0x41, -0x7d, 0xa8, 0x01, 0x5b, 0x49, 0xb1, 0x7f, 0xbd, 0x67, 0x6e, -0xdf, 0x58, 0x94, 0xff, 0x00, 0x4a, 0x85, 0xfc, 0x3b, 0xa5, -0x49, 0xf7, 0xf4, 0xcb, 0x36, 0xff, 0x00, 0x7a, 0xdd, 0x0f, -0xf4, 0xa9, 0xc5, 0xfa, 0x52, 0x8b, 0xe4, 0x3e, 0xd4, 0x01, -0x42, 0x4f, 0x07, 0x68, 0x33, 0x7d, 0xfd, 0x17, 0x4f, 0x6f, -0xad, 0xaa, 0x7f, 0x85, 0x55, 0x93, 0xe1, 0xd7, 0x85, 0xa5, -0xfb, 0xfe, 0x1e, 0xd3, 0x4f, 0xfd, 0xba, 0xa0, 0xfe, 0x95, -0xb7, 0xf6, 0xc4, 0xa5, 0xfb, 0x52, 0x7a, 0xd0, 0x07, 0x2f, -0x37, 0xc2, 0x3f, 0x06, 0x4f, 0x9d, 0xfe, 0x1a, 0xd3, 0x9b, -0x3f, 0xf4, 0xee, 0xb5, 0x4a, 0x6f, 0x81, 0x9e, 0x03, 0x9f, -0x3b, 0xbc, 0x31, 0xa7, 0xf3, 0xe9, 0x08, 0x15, 0xdb, 0x0b, -0x84, 0x3d, 0xe9, 0x7c, 0xf4, 0xf5, 0xa0, 0x0f, 0x37, 0xb8, -0xfd, 0x9c, 0x3e, 0x1d, 0xdc, 0x92, 0x5b, 0xc3, 0x16, 0x23, -0xe9, 0x18, 0xac, 0xcb, 0x8f, 0xd9, 0x4b, 0xe1, 0xad, 0xc7, -0x5f, 0x0e, 0x5a, 0x03, 0xed, 0x18, 0xaf, 0x5c, 0x12, 0xa1, -0xfe, 0x21, 0x4b, 0xe6, 0x2f, 0xa8, 0xa0, 0x0f, 0x0f, 0xb9, -0xfd, 0x8e, 0x7e, 0x1b, 0x4e, 0x0f, 0xfc, 0x48, 0xed, 0xc7, -0xd2, 0x31, 0x59, 0x37, 0x5f, 0xb0, 0xff, 0x00, 0xc3, 0xa9, -0xf3, 0xb7, 0x4a, 0x81, 0x33, 0xff, 0x00, 0x4c, 0xc5, 0x7d, -0x0d, 0xbd, 0x4f, 0x71, 0x4b, 0xb8, 0x7a, 0x8a, 0x00, 0xf9, -0x7e, 0xef, 0xf6, 0x04, 0xf0, 0x0d, 0xc1, 0x25, 0x6c, 0x6d, -0xd4, 0xff, 0x00, 0xb9, 0x58, 0xb7, 0x7f, 0xf0, 0x4e, 0xdf, -0x06, 0x4d, 0x9d, 0x90, 0x5a, 0x0c, 0xfa, 0xa9, 0x15, 0xf5, -0xd6, 0x47, 0xad, 0x2d, 0x00, 0x7c, 0x55, 0x79, 0xff, 0x00, -0x04, 0xd9, 0xf0, 0xbc, 0xb9, 0xf2, 0xe3, 0xb2, 0xe7, 0xd5, -0x4f, 0xf8, 0x56, 0x15, 0xef, 0xfc, 0x13, 0x2b, 0x45, 0x91, -0x5b, 0xcb, 0x86, 0xc0, 0x9f, 0xc7, 0xfc, 0x2b, 0xef, 0x2a, -0x28, 0x03, 0xf3, 0xb6, 0xf7, 0xfe, 0x09, 0x7f, 0x68, 0xdf, -0xea, 0xed, 0x6c, 0x08, 0xff, 0x00, 0x3e, 0xd5, 0xcf, 0x5f, -0xff, 0x00, 0xc1, 0x2e, 0xfa, 0xec, 0xd3, 0xac, 0xdb, 0xe8, -0xb9, 0xfe, 0x95, 0xfa, 0x67, 0x45, 0x00, 0x7e, 0x56, 0x5e, -0xff, 0x00, 0xc1, 0x2f, 0x6e, 0x40, 0x3b, 0x34, 0x8b, 0x56, -0xfa, 0x46, 0x7f, 0xc2, 0xb9, 0xeb, 0xff, 0x00, 0xf8, 0x26, -0x3e, 0xa5, 0x1e, 0x76, 0xe8, 0x91, 0x9f, 0xa4, 0x6d, 0xfd, -0x05, 0x7e, 0xba, 0x51, 0x40, 0x1f, 0x8d, 0x57, 0xdf, 0xf0, -0x4d, 0x6d, 0x66, 0x2c, 0xed, 0xd0, 0xce, 0x3f, 0xd9, 0x47, -0xff, 0x00, 0x0a, 0xc0, 0xbc, 0xff, 0x00, 0x82, 0x73, 0xeb, -0x91, 0x03, 0xff, 0x00, 0x12, 0x59, 0x47, 0xfc, 0x06, 0x41, -0xfd, 0x2b, 0xf6, 0xcf, 0x68, 0x3d, 0x85, 0x31, 0xa0, 0x8d, -0xba, 0xa2, 0x9f, 0xa8, 0xa0, 0x0f, 0xc3, 0x0b, 0xdf, 0xf8, -0x27, 0xd6, 0xbf, 0x0e, 0x71, 0xa3, 0xdc, 0x8f, 0xa0, 0x92, -0xb0, 0xef, 0xbf, 0x61, 0x2f, 0x10, 0xdb, 0x9e, 0x34, 0xab, -0xa1, 0xf4, 0x57, 0xff, 0x00, 0x0a, 0xfd, 0xe7, 0x6b, 0x0b, -0x67, 0xfb, 0xd0, 0x46, 0xdf, 0x55, 0x15, 0x04, 0x9a, 0x0e, -0x9d, 0x37, 0xdf, 0xb2, 0x85, 0xbe, 0xa8, 0x28, 0x03, 0xf0, -0x12, 0xeb, 0xf6, 0x2a, 0xf1, 0x1c, 0x39, 0xff, 0x00, 0x89, -0x75, 0xd0, 0xff, 0x00, 0x80, 0x3f, 0xf8, 0x56, 0x45, 0xcf, -0xec, 0x81, 0xe2, 0x58, 0x73, 0x8b, 0x2b, 0x91, 0xf5, 0x89, -0xff, 0x00, 0xc2, 0xbf, 0xa0, 0x99, 0x3c, 0x1f, 0xa2, 0xcb, -0xf7, 0xb4, 0xdb, 0x73, 0xff, 0x00, 0x00, 0xaa, 0x72, 0xfc, -0x39, 0xf0, 0xd4, 0xdf, 0x7f, 0x47, 0xb6, 0x3f, 0x81, 0x1f, -0xd6, 0x80, 0x3f, 0x9e, 0xcb, 0x9f, 0xd9, 0x57, 0xc4, 0xd1, -0x67, 0xfd, 0x16, 0xe0, 0x7d, 0x63, 0x6f, 0xf0, 0xac, 0xbb, -0x8f, 0xd9, 0xaf, 0xc5, 0x10, 0x7f, 0xcb, 0xb4, 0x9f, 0x8c, -0x6d, 0xfe, 0x15, 0xfd, 0x0d, 0xcf, 0xf0, 0x8b, 0xc2, 0x37, -0x03, 0xe7, 0xd1, 0x2d, 0xff, 0x00, 0x0c, 0xff, 0x00, 0x8d, -0x66, 0xdc, 0x7c, 0x04, 0xf0, 0x45, 0xc6, 0x77, 0x68, 0xb1, -0x8f, 0xa3, 0x1a, 0x00, 0xfe, 0x79, 0x67, 0xf8, 0x01, 0xe2, -0x78, 0x7f, 0xe5, 0xd5, 0xcf, 0xfd, 0xb3, 0x6f, 0xf0, 0xaa, -0x13, 0x7c, 0x13, 0xf1, 0x3c, 0x3d, 0x6c, 0xd8, 0xff, 0x00, -0xc0, 0x4f, 0xf8, 0x57, 0xf4, 0x2d, 0x73, 0xfb, 0x33, 0x78, -0x0a, 0xe3, 0xae, 0x92, 0x07, 0xd1, 0x8d, 0x65, 0x5d, 0x7e, -0xc9, 0x3e, 0x01, 0xb8, 0x1f, 0xf1, 0xe1, 0xb7, 0xf5, 0xfe, -0xb4, 0x01, 0xfc, 0xf9, 0x4d, 0xf0, 0x9b, 0xc4, 0x90, 0x83, -0x9b, 0x07, 0x3f, 0xf0, 0x13, 0xfe, 0x15, 0x4a, 0x4f, 0x87, -0x5e, 0x20, 0x8b, 0xae, 0x9b, 0x37, 0xe0, 0xa6, 0xbf, 0xa0, -0x3b, 0xaf, 0xd8, 0xb3, 0xc0, 0x97, 0x19, 0xc4, 0x05, 0x4f, -0xd0, 0xff, 0x00, 0x8d, 0x62, 0xdd, 0x7e, 0xc1, 0xfe, 0x0a, -0x9b, 0x3b, 0x48, 0x1f, 0x54, 0x3f, 0xe3, 0x40, 0x1f, 0x81, -0xb2, 0x78, 0x2b, 0x5c, 0x8b, 0xae, 0x9b, 0x3f, 0xfd, 0xf1, -0x55, 0xdf, 0xc3, 0x1a, 0xb4, 0x7f, 0x7b, 0x4f, 0xb8, 0x1f, -0xf6, 0xcc, 0xd7, 0xef, 0x0d, 0xdf, 0xfc, 0x13, 0xe3, 0xc2, -0x53, 0x64, 0xa4, 0xca, 0x3e, 0xa8, 0x7f, 0xf8, 0xaa, 0xc5, -0xbb, 0xff, 0x00, 0x82, 0x72, 0xf8, 0x7a, 0x5c, 0xf9, 0x77, -0x09, 0xff, 0x00, 0x7c, 0x9f, 0xf1, 0xa0, 0x0f, 0xc3, 0x27, -0xd1, 0x35, 0x08, 0xfa, 0xd9, 0x5c, 0x7f, 0xdf, 0xb6, 0xff, -0x00, 0x0a, 0x88, 0xe9, 0xd7, 0x6b, 0xd6, 0xd6, 0x61, 0xf5, -0x8c, 0xd7, 0xed, 0xad, 0xf7, 0xfc, 0x13, 0x5f, 0x4b, 0x70, -0x7c, 0xbb, 0x88, 0xcf, 0xfc, 0x07, 0xff, 0x00, 0xaf, 0x5c, -0xf5, 0xef, 0xfc, 0x13, 0x36, 0x16, 0xce, 0xc9, 0x11, 0xbf, -0xe0, 0x3f, 0xfd, 0x7a, 0x00, 0xfc, 0x68, 0x36, 0x73, 0x8e, -0xb0, 0xc8, 0x3e, 0xa8, 0x69, 0xa6, 0x19, 0x07, 0x54, 0x61, -0xf8, 0x57, 0xeb, 0xcd, 0xef, 0xfc, 0x13, 0x26, 0x53, 0x9d, -0x88, 0xad, 0xf4, 0x8f, 0xff, 0x00, 0xaf, 0x58, 0x17, 0xbf, -0xf0, 0x4c, 0x9b, 0xfe, 0x76, 0xda, 0x16, 0xfa, 0x42, 0x4f, -0xf5, 0xa0, 0x0f, 0xca, 0x32, 0xa4, 0x75, 0x04, 0x52, 0x57, -0xe9, 0xde, 0xa3, 0xff, 0x00, 0x04, 0xd0, 0xd5, 0xa3, 0x07, -0x1a, 0x74, 0x84, 0x7b, 0x42, 0xdf, 0xe3, 0x5c, 0xdd, 0xf7, -0xfc, 0x13, 0x73, 0x57, 0x8f, 0x38, 0xd2, 0xa5, 0x1f, 0xf6, -0xc5, 0x85, 0x00, 0x7e, 0x74, 0x51, 0x5f, 0x7b, 0x5e, 0xff, -0x00, 0xc1, 0x3b, 0x35, 0xa8, 0xb3, 0x8d, 0x2a, 0x7f, 0xc2, -0x16, 0xac, 0x0b, 0xcf, 0xf8, 0x27, 0xfe, 0xb7, 0x16, 0x71, -0xa6, 0x5c, 0x8c, 0x7a, 0x44, 0xd4, 0x01, 0xf1, 0x45, 0x15, -0xf5, 0xc5, 0xf7, 0xec, 0x29, 0xae, 0x5b, 0xe7, 0xfd, 0x06, -0xed, 0x7f, 0xed, 0x9b, 0x56, 0x25, 0xd7, 0xec, 0x53, 0xe2, -0x08, 0xb3, 0x8b, 0x5b, 0xc1, 0xff, 0x00, 0x6c, 0x4d, 0x00, -0x7c, 0xc5, 0x45, 0x7d, 0x0b, 0x73, 0xfb, 0x20, 0x78, 0x86, -0x13, 0xc4, 0x57, 0x5f, 0xf7, 0xe0, 0xd6, 0x5d, 0xcf, 0xec, -0xab, 0xe2, 0x48, 0x3f, 0xe5, 0x9d, 0xc0, 0xfa, 0xdb, 0x9a, -0x00, 0xf0, 0xfd, 0xc4, 0x77, 0x3f, 0x9d, 0x3c, 0x5c, 0x48, -0xa3, 0x89, 0x1c, 0x7d, 0x18, 0xd7, 0xac, 0x5c, 0x7e, 0xcd, -0x9e, 0x25, 0x84, 0x9f, 0xdd, 0xcb, 0xc7, 0xfd, 0x30, 0x35, -0x9f, 0x37, 0xc0, 0x2f, 0x11, 0xc5, 0x9f, 0xdd, 0x39, 0xff, -0x00, 0xb6, 0x46, 0x80, 0x3c, 0xe4, 0x5f, 0x5c, 0xaf, 0x4b, -0x89, 0x47, 0xd1, 0xcd, 0x4a, 0x35, 0x7b, 0xe5, 0xe9, 0x7b, -0x70, 0x3e, 0x92, 0xb7, 0xf8, 0xd7, 0x69, 0x37, 0xc1, 0x4f, -0x11, 0x45, 0xff, 0x00, 0x2e, 0xee, 0x7f, 0xed, 0x99, 0xaa, -0x53, 0x7c, 0x27, 0xf1, 0x0c, 0x5f, 0xf2, 0xe7, 0x21, 0xff, -0x00, 0x80, 0x1a, 0x00, 0xe7, 0x57, 0xc4, 0x3a, 0xa2, 0x7d, -0xdd, 0x46, 0xe8, 0x7d, 0x26, 0x6f, 0xf1, 0xab, 0x30, 0x78, -0xcf, 0x5c, 0xb7, 0xfb, 0x9a, 0xad, 0xd8, 0xff, 0x00, 0xb6, -0xad, 0xfe, 0x35, 0x72, 0x6f, 0x87, 0x7a, 0xec, 0x23, 0x26, -0xc6, 0x43, 0xff, 0x00, 0x01, 0x35, 0x9d, 0x37, 0x86, 0x35, -0x4b, 0x7f, 0xf5, 0x96, 0x33, 0x2f, 0xfc, 0x00, 0xd0, 0x07, -0xd3, 0xbf, 0xb0, 0xf6, 0xa1, 0xe2, 0x5f, 0x18, 0xfc, 0x65, -0xd2, 0xad, 0xe4, 0xbf, 0x9e, 0x7b, 0x58, 0xd8, 0x3b, 0xab, -0xb1, 0x23, 0xad, 0x7e, 0xd2, 0x4e, 0xc6, 0x3b, 0x15, 0x07, -0x8c, 0x0c, 0x57, 0xe5, 0xa7, 0xfc, 0x12, 0xcb, 0xc1, 0x8d, -0x77, 0xe3, 0x3d, 0x53, 0x54, 0x9e, 0xdd, 0x93, 0xec, 0xea, -0x15, 0x4b, 0xa9, 0x1c, 0xfb, 0x57, 0xea, 0x3e, 0xac, 0xfe, -0x5d, 0xb0, 0x1d, 0x28, 0x03, 0x8d, 0xd6, 0xe6, 0xe5, 0xb9, -0xaf, 0x35, 0xf1, 0x2d, 0xc7, 0xde, 0xe6, 0xbb, 0xcd, 0x72, -0x6e, 0x1e, 0xbc, 0xbb, 0xc5, 0x57, 0x5e, 0x5c, 0x72, 0x36, -0x7a, 0x03, 0x49, 0xe8, 0x27, 0xa1, 0xf3, 0x57, 0xc6, 0xed, -0x5c, 0x97, 0x98, 0x6f, 0xc8, 0x19, 0xc7, 0x35, 0xf2, 0xaf, -0x88, 0xa7, 0xcc, 0x8e, 0x73, 0x9c, 0xd7, 0xbb, 0xfc, 0x63, -0xd5, 0x0c, 0xb7, 0x12, 0x8c, 0xf5, 0x26, 0xbe, 0x79, 0xf1, -0x0c, 0xdf, 0x33, 0x73, 0x5f, 0x0b, 0x5e, 0x5e, 0xd7, 0x14, -0xcf, 0xcd, 0xb1, 0x32, 0xf6, 0xd8, 0xc6, 0x72, 0x97, 0xcf, -0x96, 0x35, 0xf5, 0xbf, 0xfc, 0x13, 0x83, 0xc2, 0x4b, 0xa8, -0xf8, 0xb7, 0x5d, 0xd6, 0x24, 0x8f, 0x70, 0x8d, 0xa1, 0xb6, -0x8d, 0xb6, 0xf1, 0x81, 0xba, 0x47, 0x19, 0xfa, 0x88, 0xeb, -0xe4, 0x2b, 0xc7, 0xce, 0x6b, 0xf4, 0xa3, 0xfe, 0x09, 0xdf, -0xe1, 0x31, 0xa4, 0xfc, 0x36, 0x4b, 0xe2, 0x00, 0x92, 0xe7, -0x7d, 0xc3, 0x10, 0x3a, 0xef, 0x6c, 0x29, 0x3f, 0xf0, 0x14, -0xaf, 0xa3, 0xc1, 0xc7, 0xde, 0x3e, 0xb3, 0x01, 0x0f, 0x7a, -0xfd, 0x8f, 0xb1, 0xed, 0x47, 0x4a, 0xda, 0xb5, 0xe8, 0x2b, -0x22, 0xd5, 0x79, 0x15, 0xb5, 0x6c, 0xbc, 0x0a, 0xf6, 0x0f, -0x78, 0xd4, 0xb5, 0xed, 0x5a, 0xd6, 0xe3, 0xa5, 0x66, 0x5b, -0x2f, 0x02, 0xb5, 0x2d, 0xd6, 0x80, 0x2f, 0xc2, 0x3a, 0x55, -0xf8, 0xc7, 0x15, 0x4a, 0x11, 0xd3, 0xb5, 0x5e, 0x8c, 0x71, -0x40, 0x12, 0xad, 0x4c, 0xa2, 0xa2, 0x5a, 0x99, 0x68, 0x01, -0xd4, 0xe1, 0xd2, 0x9b, 0x4f, 0xa0, 0x02, 0x8a, 0x28, 0xa0, -0x0f, 0x24, 0xf8, 0xfb, 0x74, 0xd6, 0x5f, 0x05, 0x7c, 0x77, -0x22, 0x9f, 0x98, 0x68, 0x97, 0x8a, 0x08, 0xec, 0x4c, 0x2c, -0x3f, 0xad, 0x7c, 0x33, 0xfb, 0x2b, 0x5d, 0x8b, 0x4b, 0x0b, -0xe7, 0xe8, 0x5a, 0x45, 0x1f, 0xa5, 0x7d, 0xc5, 0xfb, 0x41, -0x40, 0xf7, 0x3f, 0x04, 0x7c, 0x78, 0x91, 0x8d, 0xcf, 0xfd, -0x89, 0x78, 0xc0, 0x7a, 0xe2, 0x16, 0x27, 0xf4, 0x15, 0xf9, -0xfb, 0xfb, 0x3d, 0x5f, 0x8b, 0x4d, 0x1e, 0xe4, 0xe7, 0x1f, -0xbd, 0xfe, 0x95, 0xe0, 0x57, 0x8d, 0xf3, 0x3a, 0x2d, 0xf4, -0x8b, 0x3e, 0x5f, 0x15, 0x1e, 0x6c, 0xe2, 0x83, 0x7d, 0x23, -0x23, 0xec, 0x2d, 0x2f, 0x5c, 0xdb, 0xb7, 0xe6, 0xae, 0x86, -0xdb, 0x5c, 0x1b, 0x47, 0xcd, 0x5e, 0x1e, 0x9e, 0x2f, 0x82, -0xcd, 0x41, 0x69, 0x81, 0x3e, 0xc4, 0x53, 0xcf, 0xc5, 0x08, -0x20, 0x5f, 0x96, 0x65, 0x1f, 0x88, 0xaf, 0x66, 0x75, 0xa9, -0xc3, 0xe2, 0x67, 0xd0, 0x54, 0xaf, 0x4e, 0x9f, 0xc4, 0xcf, -0x7a, 0x4d, 0x7b, 0xde, 0x9e, 0xda, 0xe8, 0xc7, 0x5a, 0xf9, -0xf5, 0xbe, 0x2e, 0xc4, 0x9f, 0xf2, 0xf2, 0xa3, 0xf1, 0x15, -0x19, 0xf8, 0xc3, 0x0f, 0x3f, 0xe9, 0x49, 0xf9, 0x8a, 0xe5, -0x78, 0xea, 0x09, 0xda, 0xe7, 0x1b, 0xcc, 0xb0, 0xe9, 0xdb, -0x98, 0xfa, 0x08, 0x6b, 0xa3, 0xfb, 0xd5, 0x22, 0xeb, 0x99, -0xfe, 0x2a, 0xf9, 0xf2, 0x2f, 0x8b, 0xb0, 0x93, 0xff, 0x00, -0x1f, 0x2b, 0xf9, 0x8a, 0xb7, 0x17, 0xc5, 0xa8, 0x4f, 0xfc, -0xb7, 0x4f, 0xcc, 0x55, 0x2c, 0x6d, 0x17, 0xf6, 0x8a, 0x59, -0x86, 0x1d, 0xfd, 0xa3, 0xdf, 0x06, 0xb8, 0x3f, 0xbd, 0x4f, -0x1a, 0xe0, 0x1f, 0xc5, 0x5e, 0x15, 0x17, 0xc5, 0x5b, 0x73, -0xd6, 0x65, 0xfc, 0xc5, 0x59, 0x4f, 0x8a, 0x56, 0xc7, 0x1f, -0xbd, 0x5f, 0xfb, 0xe8, 0x56, 0x8b, 0x15, 0x45, 0xfd, 0xa3, -0x55, 0x8c, 0xa0, 0xfe, 0xd1, 0xee, 0x0b, 0xae, 0x0f, 0xef, -0x53, 0xd7, 0x5b, 0xff, 0x00, 0x6a, 0xbc, 0x56, 0x3f, 0x89, -0xb6, 0x87, 0xfe, 0x5a, 0xaf, 0xe6, 0x2a, 0xd4, 0x7f, 0x12, -0x2c, 0xcf, 0xfc, 0xb6, 0x1f, 0xf7, 0xd0, 0xaa, 0x58, 0x8a, -0x4f, 0xed, 0x1a, 0x2c, 0x4d, 0x17, 0xf6, 0x8f, 0x64, 0x5d, -0x6f, 0xfd, 0xaa, 0x90, 0x6b, 0x7e, 0xff, 0x00, 0xad, 0x78, -0xf2, 0x7c, 0x44, 0xb2, 0x3f, 0xf2, 0xdc, 0x7e, 0x62, 0xac, -0xa7, 0x8f, 0xac, 0xcf, 0xfc, 0xb7, 0x1f, 0x98, 0xab, 0x55, -0x60, 0xfa, 0x96, 0xab, 0x53, 0x7b, 0x49, 0x1e, 0xb6, 0x35, -0xbe, 0x3e, 0xf5, 0x48, 0x35, 0xbf, 0x7a, 0xf2, 0x68, 0xfc, -0x75, 0x66, 0x7f, 0xe5, 0xe0, 0x7e, 0x62, 0xac, 0x2f, 0x8d, -0x6d, 0x4f, 0xfc, 0xbc, 0xa7, 0xfd, 0xf4, 0x29, 0xfb, 0x48, -0xbe, 0xa5, 0x2a, 0x90, 0x7d, 0x4f, 0x54, 0x1a, 0xdf, 0xfb, -0x55, 0x20, 0xd6, 0xff, 0x00, 0xda, 0xaf, 0x2e, 0x4f, 0x18, -0x5b, 0x36, 0x31, 0x72, 0x9f, 0xf7, 0xd0, 0xa9, 0x97, 0xc5, -0x96, 0xff, 0x00, 0xf3, 0xf0, 0x9f, 0xf7, 0xd0, 0xaa, 0xe6, -0x5d, 0xca, 0xe6, 0x8f, 0x73, 0xd3, 0x97, 0x5a, 0xff, 0x00, -0x6a, 0x9e, 0x35, 0xbf, 0xf6, 0xab, 0xcd, 0x13, 0xc5, 0x10, -0x9e, 0x04, 0xe8, 0x7f, 0xe0, 0x42, 0xa4, 0x5f, 0x13, 0x44, -0x47, 0xfa, 0xd5, 0xff, 0x00, 0xbe, 0x85, 0x3b, 0xa1, 0xdd, -0x1e, 0x96, 0xba, 0xdf, 0xfb, 0x54, 0xf1, 0xad, 0xfb, 0xd7, -0x9b, 0x0f, 0x12, 0x46, 0x7f, 0xe5, 0xaa, 0xfe, 0x62, 0xa4, -0x1e, 0x23, 0x4c, 0x7f, 0xac, 0x1f, 0x81, 0x14, 0xee, 0x87, -0x74, 0x7a, 0x42, 0xeb, 0x7f, 0xed, 0x53, 0xc6, 0xb6, 0x3d, -0x6b, 0xce, 0x57, 0xc4, 0x49, 0xff, 0x00, 0x3d, 0x17, 0xf3, -0xa9, 0x57, 0xc4, 0x0b, 0xff, 0x00, 0x3d, 0x07, 0xe7, 0x40, -0x1e, 0x8a, 0xba, 0xd7, 0xbd, 0x3c, 0x6b, 0x43, 0xd6, 0xbc, -0xec, 0x6b, 0xcb, 0x8f, 0xf5, 0x9f, 0xad, 0x3d, 0x75, 0xe5, -0xfe, 0xfd, 0x00, 0x7a, 0x22, 0xeb, 0x23, 0xd6, 0xa4, 0x1a, -0xcf, 0xa9, 0xaf, 0x3a, 0x5d, 0x79, 0x7f, 0xbe, 0x2a, 0x55, -0xd7, 0x57, 0xfb, 0xe3, 0xf3, 0xa0, 0x0f, 0x43, 0x1a, 0xc0, -0xf5, 0xa7, 0x8d, 0x5c, 0x7a, 0xd7, 0x9e, 0x0d, 0x74, 0x7f, -0x7f, 0xf5, 0xa9, 0x06, 0xba, 0x3f, 0xe7, 0xa0, 0xfc, 0xe8, -0x03, 0xd0, 0x97, 0x56, 0x1e, 0xb4, 0xe5, 0xd5, 0x87, 0xad, -0x79, 0xf0, 0xd7, 0x46, 0x3e, 0xf8, 0xa9, 0x17, 0x5d, 0x1f, -0xdf, 0x14, 0x01, 0xe8, 0x03, 0x56, 0x1f, 0xde, 0xc5, 0x3c, -0x6a, 0xc3, 0xfb, 0xd5, 0xe7, 0xeb, 0xae, 0x0f, 0xef, 0x8a, -0x91, 0x75, 0xc1, 0xfd, 0xfa, 0x00, 0xef, 0xd7, 0x54, 0x00, -0x7d, 0xea, 0x70, 0xd5, 0x41, 0x3d, 0x6b, 0x82, 0x5d, 0x70, -0x7f, 0x7e, 0x9e, 0x35, 0xc1, 0xfd, 0xe1, 0x40, 0x1d, 0xe8, -0xd4, 0xc1, 0xee, 0x29, 0x46, 0xa4, 0x0f, 0xa5, 0x70, 0x83, -0x5c, 0x1f, 0xde, 0x14, 0xf5, 0xd6, 0xc7, 0xf7, 0xa8, 0x03, -0xbb, 0x1a, 0x82, 0x9f, 0x4a, 0x51, 0x7e, 0xbe, 0xd5, 0xc3, -0x8d, 0x70, 0x7f, 0x78, 0x53, 0xd7, 0x5c, 0x1f, 0xde, 0xa0, -0x0e, 0xdc, 0x5e, 0xa9, 0xa5, 0x17, 0x88, 0x6b, 0x8a, 0x1a, -0xe0, 0xfe, 0xf5, 0x48, 0xba, 0xe0, 0xfe, 0xf0, 0xa0, 0x0e, -0xcc, 0x5d, 0x21, 0xa5, 0x17, 0x08, 0x7b, 0xd7, 0x1c, 0x35, -0xb1, 0xfd, 0xe1, 0x52, 0x2e, 0xb6, 0x3f, 0xbd, 0x40, 0x1d, -0x77, 0x9e, 0x9e, 0xb4, 0xa2, 0x55, 0x3d, 0xeb, 0x93, 0x5d, -0x6d, 0x7f, 0xbd, 0x4f, 0x5d, 0x6c, 0x7f, 0x78, 0x50, 0x07, -0x55, 0xe6, 0x2f, 0xa8, 0xa3, 0x7a, 0xfa, 0x8a, 0xe6, 0x06, -0xb2, 0xb8, 0xfb, 0xc2, 0x9e, 0x35, 0x95, 0x3f, 0xc4, 0x28, -0x03, 0xa5, 0xc8, 0xf5, 0xa3, 0x35, 0xce, 0x8d, 0x65, 0x7f, -0xbc, 0x3f, 0x3a, 0x78, 0xd6, 0x17, 0x3f, 0x78, 0x50, 0x06, -0xfe, 0x69, 0x6b, 0x08, 0x6a, 0xea, 0x7f, 0x88, 0x53, 0x86, -0xac, 0xa7, 0xf8, 0xe8, 0x03, 0x6e, 0x8a, 0xc7, 0x1a, 0xb0, -0xfe, 0xf0, 0xa7, 0x8d, 0x54, 0x7f, 0x78, 0x50, 0x06, 0xad, -0x15, 0x98, 0xba, 0xa2, 0xf7, 0x61, 0x4f, 0x1a, 0xa2, 0xfa, -0x8a, 0x00, 0xd0, 0xa2, 0xa8, 0x8d, 0x49, 0x73, 0xd4, 0x52, -0x8d, 0x45, 0x7b, 0x91, 0x40, 0x16, 0xca, 0x29, 0xea, 0xa0, -0xfe, 0x14, 0xd6, 0xb7, 0x8d, 0xba, 0xc6, 0x87, 0xea, 0xa2, -0xa0, 0xfe, 0xd0, 0x4f, 0x51, 0x4e, 0x17, 0xc8, 0x7b, 0xd0, -0x00, 0xfa, 0x6d, 0xa4, 0x9f, 0x7a, 0xda, 0x26, 0xfa, 0xa8, -0xaa, 0xf2, 0x78, 0x77, 0x4c, 0x9b, 0xef, 0xd8, 0xc0, 0xdf, -0x54, 0x15, 0x64, 0x5e, 0x21, 0xef, 0x4a, 0x2e, 0xe3, 0x3d, -0xe8, 0x03, 0x2a, 0x5f, 0x05, 0x68, 0x93, 0xe7, 0x7e, 0x9b, -0x01, 0xcf, 0xfb, 0x02, 0xa9, 0x4d, 0xf0, 0xc7, 0xc3, 0x53, -0x8f, 0x9b, 0x4b, 0x87, 0xf0, 0x15, 0xd2, 0x0b, 0x94, 0x3d, -0xe9, 0x44, 0xe8, 0x7f, 0x8a, 0x80, 0x38, 0x9b, 0x8f, 0x82, -0x9e, 0x11, 0xb9, 0xce, 0xfd, 0x2d, 0x39, 0xf4, 0xc7, 0xf8, -0x56, 0x74, 0xff, 0x00, 0xb3, 0xc7, 0x82, 0xae, 0x33, 0xbb, -0x4e, 0x23, 0x3e, 0x84, 0x7f, 0x85, 0x7a, 0x47, 0x9c, 0x9f, -0xde, 0x14, 0x79, 0xab, 0xfd, 0xe1, 0x40, 0x1e, 0x47, 0x73, -0xfb, 0x2d, 0x78, 0x16, 0xe7, 0x39, 0xb2, 0x75, 0xcf, 0xa1, -0x5f, 0xf0, 0xac, 0xab, 0xbf, 0xd8, 0xf3, 0xc0, 0xb7, 0x39, -0xfd, 0xd4, 0xab, 0x9f, 0x65, 0x3f, 0xd2, 0xbd, 0xcb, 0x7a, -0xfa, 0x8a, 0x0c, 0x8a, 0x3f, 0x88, 0x7e, 0x74, 0x01, 0xf3, -0x6e, 0xa9, 0xfb, 0x0d, 0xf8, 0x36, 0xf2, 0x32, 0x22, 0x66, -0x52, 0x7f, 0xbc, 0xa3, 0xfc, 0x2b, 0xcf, 0xfc, 0x41, 0xff, -0x00, 0x04, 0xf5, 0xd1, 0x65, 0xdc, 0xd0, 0x5c, 0x27, 0xe2, -0x71, 0xff, 0x00, 0xb2, 0xd7, 0xd9, 0x57, 0x17, 0xa9, 0x1a, -0xf0, 0x6b, 0x16, 0xfb, 0x54, 0x03, 0x3f, 0x30, 0xa0, 0x0f, -0x09, 0xf8, 0x17, 0xf0, 0x0a, 0xd3, 0xe0, 0xae, 0x9f, 0x79, -0x04, 0x7b, 0x4c, 0x93, 0x36, 0x4b, 0x2f, 0x7f, 0xd2, 0xbb, -0x9d, 0x7a, 0x5f, 0xdd, 0x9c, 0x56, 0xb6, 0xa5, 0xa9, 0xa9, -0xcf, 0xcc, 0x2b, 0x8c, 0xd6, 0xb5, 0x31, 0xb4, 0xfc, 0xc2, -0x80, 0x39, 0x6d, 0x7a, 0x6c, 0x2b, 0xf3, 0x5e, 0x43, 0xe3, -0xdb, 0xe1, 0x06, 0x9f, 0x70, 0xd9, 0xec, 0x45, 0x7a, 0x46, -0xbd, 0xa9, 0x29, 0x56, 0xe4, 0x57, 0x88, 0xfc, 0x55, 0xd4, -0xc4, 0x5a, 0x73, 0x80, 0xc3, 0x90, 0x78, 0xac, 0x6b, 0x4b, -0x92, 0x9b, 0x67, 0x3e, 0x22, 0x7c, 0x94, 0xa5, 0x23, 0xe5, -0x0f, 0x8a, 0x17, 0xfe, 0x7d, 0xf3, 0x8c, 0xf7, 0x35, 0xe2, -0xfa, 0xf4, 0xb9, 0x90, 0xd7, 0xa3, 0xf8, 0xe6, 0xf3, 0xce, -0xbf, 0x94, 0xe7, 0x38, 0xaf, 0x2c, 0xd6, 0xa5, 0xdd, 0x29, -0xaf, 0x86, 0xa1, 0xef, 0xd5, 0x72, 0x3f, 0x37, 0xc3, 0x7e, -0xf2, 0xbc, 0xa4, 0x60, 0xdc, 0x65, 0xdc, 0x28, 0xfb, 0xc4, -0xe0, 0x57, 0xec, 0x97, 0xec, 0xcd, 0xe1, 0xaf, 0xf8, 0x46, -0x3e, 0x17, 0x69, 0x36, 0xa4, 0x61, 0x92, 0x18, 0xe3, 0x23, -0xd0, 0xaa, 0x0c, 0xfe, 0xb9, 0xaf, 0xc8, 0xff, 0x00, 0x87, -0x3a, 0x01, 0xf1, 0x57, 0xc4, 0x5f, 0x0e, 0xe9, 0x42, 0x31, -0x2a, 0x5c, 0x5f, 0xc2, 0xb2, 0x21, 0x19, 0xcc, 0x61, 0x81, -0x7f, 0xfc, 0x74, 0x1a, 0xfd, 0xad, 0xf0, 0x3d, 0x89, 0xb1, -0xf0, 0xe5, 0x84, 0x64, 0x61, 0xbc, 0xb0, 0xc7, 0x3e, 0xfc, -0xff, 0x00, 0x5a, 0xfb, 0x0c, 0x24, 0x6d, 0x16, 0xcf, 0xbd, -0xc0, 0xc6, 0xd1, 0x6c, 0xeb, 0x2d, 0x47, 0x23, 0xad, 0x6d, -0x5a, 0xe3, 0x02, 0xb2, 0x2d, 0x17, 0x18, 0xad, 0xab, 0x55, -0xe9, 0x5d, 0xe7, 0xa6, 0x6a, 0x5b, 0x0e, 0x82, 0xb5, 0x2d, -0xc7, 0x02, 0xb3, 0xed, 0x85, 0x69, 0x5b, 0x8e, 0x94, 0x01, -0x76, 0x2a, 0xbb, 0x1f, 0x35, 0x52, 0x11, 0x57, 0x23, 0xe9, -0x40, 0x13, 0x2d, 0x4a, 0xb5, 0x1a, 0x76, 0xa9, 0x07, 0x4a, -0x00, 0x5a, 0x7d, 0x34, 0x75, 0xa7, 0x50, 0x01, 0x45, 0x14, -0x50, 0x07, 0x0f, 0xe3, 0x6d, 0x38, 0x6a, 0xfe, 0x12, 0xd7, -0x2c, 0x59, 0x77, 0x0b, 0xab, 0x19, 0xe0, 0x23, 0xd7, 0x74, -0x6c, 0xbf, 0xd6, 0xbf, 0x2b, 0x7c, 0x17, 0x76, 0xde, 0x14, -0xb8, 0xd6, 0x34, 0xb9, 0x09, 0x46, 0x86, 0xe0, 0xaf, 0x27, -0x9c, 0x0e, 0x9f, 0xa5, 0x7e, 0xb5, 0xce, 0xa1, 0x94, 0x83, -0xd0, 0xf1, 0x5f, 0x97, 0xbf, 0xb4, 0xe7, 0x82, 0x25, 0xf0, -0x0f, 0xc5, 0x3d, 0x59, 0x90, 0x6d, 0xb6, 0xbc, 0x25, 0xd0, -0x8e, 0xc7, 0xa8, 0xfd, 0x08, 0xfc, 0x8d, 0x78, 0x19, 0xb3, -0x74, 0x63, 0x0c, 0x4c, 0x7e, 0xcb, 0xfc, 0x1f, 0xfc, 0x13, -0xe6, 0x33, 0xc6, 0xe8, 0x46, 0x9e, 0x32, 0x3f, 0x61, 0xd9, -0xfa, 0x3f, 0xf8, 0x36, 0x38, 0xcd, 0x7f, 0xe2, 0x3b, 0xdb, -0x48, 0xd1, 0x89, 0x7e, 0x9d, 0x6b, 0x8f, 0xbd, 0xf1, 0xe5, -0xe4, 0xec, 0x76, 0x4a, 0x40, 0xfa, 0x9a, 0xc1, 0xb9, 0x8e, -0x4b, 0x87, 0x76, 0x73, 0x96, 0x35, 0x9c, 0xe8, 0xf1, 0xb7, -0x7c, 0x57, 0xc1, 0xd5, 0xc6, 0x54, 0xc4, 0x37, 0x76, 0x7e, -0x67, 0x5f, 0x1f, 0x57, 0x15, 0x26, 0xf9, 0x8e, 0x81, 0xbc, -0x5d, 0x7c, 0x4f, 0x33, 0x37, 0xe6, 0x69, 0xa7, 0xc5, 0x77, -0x9f, 0xf3, 0xdd, 0xbf, 0x33, 0x58, 0x1e, 0x66, 0x71, 0x4c, -0x92, 0xb9, 0x75, 0xee, 0x70, 0xda, 0x4d, 0xea, 0xce, 0x8d, -0x3c, 0x5f, 0x7a, 0x3f, 0xe5, 0xe1, 0xbf, 0x3a, 0xb1, 0x1f, -0x8d, 0xaf, 0x94, 0x7f, 0xae, 0x27, 0xf1, 0x35, 0xc8, 0x51, -0x55, 0xaf, 0x73, 0x4b, 0x49, 0x6d, 0x26, 0x76, 0xc9, 0xe3, -0xeb, 0xf5, 0xff, 0x00, 0x96, 0xa7, 0xf3, 0x35, 0x61, 0x3e, -0x22, 0x5f, 0x2f, 0xfc, 0xb5, 0x3f, 0x99, 0xae, 0x0b, 0x71, -0xa3, 0x71, 0xa7, 0xcd, 0x35, 0xf6, 0x8a, 0x4e, 0xa2, 0xfb, -0x4c, 0xf4, 0x68, 0xfe, 0x26, 0x5e, 0xaf, 0xfc, 0xb4, 0x3f, -0x99, 0xab, 0x51, 0x7c, 0x52, 0xbc, 0x4c, 0x7e, 0xf1, 0xbf, -0x33, 0x5e, 0x61, 0xe6, 0x1f, 0x5a, 0x5f, 0x31, 0xbd, 0x6a, -0x95, 0x4a, 0xab, 0xed, 0x0d, 0x54, 0xac, 0xb6, 0x99, 0xea, -0xf1, 0x7c, 0x5a, 0xba, 0x5f, 0xf9, 0x68, 0xc3, 0xf1, 0x35, -0x6e, 0x3f, 0x8b, 0xd7, 0x0a, 0x39, 0x99, 0xbf, 0x5a, 0xf1, -0xd1, 0x33, 0x7a, 0xd2, 0xf9, 0xef, 0xeb, 0x54, 0xab, 0x56, -0x5f, 0x68, 0xd1, 0x62, 0x31, 0x0b, 0x69, 0x9e, 0xd9, 0x17, -0xc6, 0x49, 0x46, 0x3f, 0x7a, 0x7f, 0x5a, 0xb9, 0x17, 0xc6, -0x69, 0x07, 0x59, 0xff, 0x00, 0x9d, 0x78, 0x47, 0xda, 0x5f, -0xd6, 0x97, 0xed, 0x4f, 0x56, 0xb1, 0x55, 0xd7, 0xda, 0x2d, -0x63, 0x31, 0x4b, 0x69, 0x1f, 0x41, 0x45, 0xf1, 0xa4, 0xf1, -0xfb, 0xfe, 0x7f, 0x1a, 0xb9, 0x17, 0xc6, 0x83, 0xde, 0x71, -0xf9, 0x9a, 0xf9, 0xc8, 0x5d, 0x3f, 0xbd, 0x38, 0x5e, 0xb8, -0xab, 0x58, 0xdc, 0x42, 0xea, 0x68, 0xb3, 0x0c, 0x5a, 0xea, -0x7d, 0x31, 0x0f, 0xc6, 0x8e, 0x47, 0xef, 0xff, 0x00, 0x53, -0x57, 0x62, 0xf8, 0xcc, 0x09, 0xff, 0x00, 0x5f, 0xfa, 0x9a, -0xf9, 0x70, 0x5f, 0xb8, 0xe8, 0x4f, 0xe7, 0x4f, 0x1a, 0x93, -0xe7, 0xef, 0x1a, 0xd1, 0x66, 0x18, 0x85, 0xd4, 0xd5, 0x66, -0x98, 0xb5, 0xd4, 0xfa, 0xb2, 0x2f, 0x8c, 0xcb, 0xff, 0x00, -0x3f, 0x1c, 0xfd, 0x4d, 0x5d, 0x87, 0xe3, 0x22, 0x9f, 0xf9, -0x78, 0xc7, 0xe2, 0x6b, 0xe4, 0x91, 0xaa, 0xc8, 0xbd, 0x1c, -0xd4, 0x8b, 0xad, 0x4c, 0x3f, 0x88, 0xd6, 0xab, 0x34, 0xc4, -0x23, 0x65, 0x9c, 0xe2, 0x91, 0xf5, 0xfc, 0x3f, 0x18, 0xd7, -0xfe, 0x7e, 0x7f, 0x53, 0x57, 0x22, 0xf8, 0xc4, 0xa7, 0xfe, -0x5e, 0x7f, 0x53, 0x5f, 0x1c, 0xae, 0xbf, 0x32, 0xff, 0x00, -0xcb, 0x42, 0x2a, 0x54, 0xf1, 0x2d, 0xc8, 0xe9, 0x29, 0xad, -0x56, 0x6f, 0x5d, 0x1b, 0x2c, 0xf7, 0x12, 0xba, 0x1f, 0x67, -0xc5, 0xf1, 0x80, 0x7f, 0xcf, 0xc8, 0xfc, 0xcd, 0x5a, 0x8b, -0xe2, 0xe8, 0x3f, 0xf2, 0xf0, 0x0f, 0xe2, 0x6b, 0xe2, 0xc4, -0xf1, 0x55, 0xd8, 0xff, 0x00, 0x96, 0x95, 0x32, 0xf8, 0xca, -0xf1, 0x7a, 0x48, 0x2b, 0x45, 0x9d, 0x56, 0x5b, 0x9b, 0x2e, -0x21, 0xae, 0xba, 0x1f, 0x6d, 0x45, 0xf1, 0x6c, 0x63, 0xfd, -0x7a, 0xd5, 0xb8, 0xfe, 0x2c, 0x29, 0xc7, 0xef, 0x94, 0xd7, -0xc4, 0x51, 0xf8, 0xe2, 0xf5, 0x71, 0xf3, 0xe6, 0xac, 0x27, -0xc4, 0x1b, 0xd4, 0x3f, 0x78, 0x7e, 0x75, 0xb2, 0xcf, 0x2a, -0x75, 0x46, 0xd1, 0xe2, 0x4a, 0xab, 0x73, 0xed, 0xf8, 0xbe, -0x2a, 0x29, 0xff, 0x00, 0x96, 0x89, 0x56, 0xa3, 0xf8, 0xa1, -0x19, 0x3f, 0x7d, 0x7f, 0x5a, 0xf8, 0x79, 0x3e, 0x23, 0xde, -0x2f, 0x7f, 0xd6, 0xac, 0xc7, 0xf1, 0x3a, 0xed, 0x71, 0xd6, -0xb5, 0x59, 0xf4, 0xba, 0x9d, 0x11, 0xe2, 0x69, 0x75, 0x3e, -0xe2, 0x4f, 0x89, 0x90, 0x91, 0xf7, 0x87, 0xe6, 0x6a, 0xc4, -0x7f, 0x12, 0x20, 0x27, 0xef, 0x8f, 0xc0, 0x9a, 0xf8, 0x7e, -0x2f, 0x8a, 0xb7, 0x2a, 0x3a, 0x9f, 0xf3, 0xf8, 0xd5, 0xa8, -0xbe, 0x2e, 0x4e, 0xbd, 0xdb, 0xfc, 0xfe, 0x35, 0xb2, 0xcf, -0x97, 0x53, 0x78, 0xf1, 0x32, 0xea, 0x7d, 0xbc, 0x9f, 0x10, -0xad, 0xcf, 0xfc, 0xb4, 0xc7, 0xe3, 0x56, 0x13, 0xc7, 0xd6, -0xc7, 0xfe, 0x5a, 0xd7, 0xc4, 0x91, 0xfc, 0x60, 0x94, 0x75, -0x63, 0x56, 0xe2, 0xf8, 0xc6, 0xe0, 0xf2, 0xc6, 0xb6, 0x8e, -0x7d, 0x0e, 0xa6, 0xf1, 0xe2, 0x68, 0x75, 0x3e, 0xd9, 0x4f, -0x1c, 0xdb, 0x1f, 0xf9, 0x6b, 0x53, 0x27, 0x8c, 0xed, 0xcf, -0xfc, 0xb6, 0x15, 0xf1, 0x6c, 0x5f, 0x19, 0x5b, 0xbb, 0xe3, -0xfc, 0xfd, 0x6a, 0xec, 0x5f, 0x19, 0xb1, 0xfc, 0x75, 0xb2, -0xcf, 0x29, 0xb3, 0xa2, 0x3c, 0x47, 0x49, 0xee, 0x7d, 0x98, -0xbe, 0x30, 0x81, 0xb1, 0xfb, 0xe1, 0x53, 0x27, 0x8b, 0x21, -0x6f, 0xf9, 0x6c, 0x2b, 0xe3, 0x88, 0x7e, 0x33, 0x0e, 0x3e, -0x7f, 0xd7, 0xff, 0x00, 0xaf, 0x57, 0x61, 0xf8, 0xca, 0xbd, -0xdf, 0xfc, 0xfe, 0x75, 0xaa, 0xce, 0xa9, 0x33, 0x78, 0xf1, -0x0d, 0x06, 0x7d, 0x82, 0xbe, 0x27, 0x8c, 0xff, 0x00, 0xcb, -0x65, 0xfc, 0xea, 0x54, 0xf1, 0x2a, 0x1e, 0x92, 0x03, 0xf8, -0xd7, 0xc8, 0xf1, 0x7c, 0x64, 0x43, 0xfc, 0x7f, 0xad, 0x5c, -0x8b, 0xe3, 0x12, 0x63, 0x99, 0x3f, 0x5a, 0xdd, 0x66, 0xf4, -0x59, 0xd0, 0xb3, 0xdc, 0x3b, 0x3e, 0xb2, 0x5f, 0x10, 0x8f, -0xef, 0x8f, 0xce, 0xa4, 0x4f, 0x10, 0x67, 0xf8, 0xc5, 0x7c, -0xab, 0x17, 0xc6, 0x14, 0x27, 0xfd, 0x67, 0xeb, 0xff, 0x00, -0xd7, 0xab, 0xb0, 0xfc, 0x60, 0x4c, 0x7f, 0xad, 0xc7, 0xe3, -0xff, 0x00, 0xd7, 0xad, 0x16, 0x69, 0x41, 0xf5, 0x36, 0x8e, -0x75, 0x86, 0x7d, 0x4f, 0xa8, 0x97, 0x5f, 0xff, 0x00, 0x6a, -0x9e, 0xba, 0xff, 0x00, 0xfb, 0x55, 0xf3, 0x34, 0x3f, 0x17, -0xd0, 0x9c, 0x79, 0xb5, 0x72, 0x2f, 0x8b, 0x8b, 0x81, 0xfb, -0xd1, 0xf9, 0xd6, 0xab, 0x31, 0xa0, 0xfa, 0x9b, 0x2c, 0xd7, -0x0c, 0xfa, 0x9f, 0x48, 0x8d, 0x78, 0x7f, 0x7e, 0xa4, 0x5d, -0x78, 0x71, 0xf3, 0x57, 0xce, 0xd1, 0xfc, 0x5b, 0x56, 0xff, -0x00, 0x96, 0x80, 0xd5, 0xc8, 0x7e, 0x2c, 0x2f, 0x1f, 0x3a, -0xd6, 0x8b, 0x1d, 0x45, 0xf5, 0x35, 0x59, 0x96, 0x1d, 0xfd, -0xa3, 0xe8, 0x15, 0xd7, 0x47, 0xf7, 0xa9, 0xe3, 0x5d, 0x1f, -0xdf, 0xaf, 0x05, 0x8f, 0xe2, 0xaa, 0x1e, 0x37, 0x2d, 0x5a, -0x8f, 0xe2, 0x8c, 0x64, 0xf2, 0x56, 0xb4, 0x58, 0xba, 0x2f, -0xa9, 0xaa, 0xc7, 0x50, 0x7f, 0x68, 0xf7, 0x41, 0xae, 0x7f, -0xb5, 0x4f, 0x5d, 0x73, 0x9f, 0xbd, 0x5e, 0x23, 0x1f, 0xc4, -0xd8, 0x8f, 0x71, 0x56, 0x93, 0xe2, 0x4c, 0x07, 0xad, 0x5a, -0xc4, 0x52, 0x7f, 0x68, 0xd1, 0x62, 0xe8, 0xbf, 0xb4, 0x7b, -0x42, 0xeb, 0x7f, 0xed, 0x54, 0x8b, 0xae, 0x7f, 0xb5, 0x5e, -0x36, 0x9f, 0x11, 0xad, 0xce, 0x39, 0xc7, 0xe3, 0x56, 0x13, -0xe2, 0x05, 0xb3, 0x7f, 0x11, 0xcd, 0x5a, 0xad, 0x4d, 0xf5, -0x2d, 0x62, 0x29, 0x3f, 0xb4, 0x7a, 0xfa, 0xeb, 0x9f, 0xed, -0x53, 0xc6, 0xb7, 0xcf, 0xde, 0xaf, 0x25, 0x4f, 0x1d, 0xdb, -0x37, 0x47, 0x22, 0xac, 0x2f, 0x8d, 0xad, 0xd8, 0x71, 0x27, -0xe7, 0x55, 0xed, 0x21, 0xdc, 0xb5, 0x56, 0x9b, 0xda, 0x47, -0xaa, 0x8d, 0x73, 0xfd, 0xaa, 0x90, 0x6b, 0x78, 0xfe, 0x2a, -0xf2, 0xd4, 0xf1, 0x8c, 0x07, 0xfe, 0x5a, 0x54, 0xc9, 0xe2, -0xd8, 0x4f, 0xfc, 0xb5, 0x14, 0xf9, 0xe3, 0xdc, 0xa5, 0x38, -0xbd, 0x99, 0xe9, 0xeb, 0xad, 0xff, 0x00, 0xb5, 0x52, 0x0d, -0x6f, 0xfd, 0xaa, 0xf3, 0x24, 0xf1, 0x4c, 0x47, 0xfe, 0x5a, -0x0a, 0x99, 0x7c, 0x4a, 0x87, 0xf8, 0xc7, 0xe7, 0x55, 0x74, -0x3e, 0x64, 0xcf, 0x4a, 0x1a, 0xdf, 0xfb, 0x54, 0xf1, 0xad, -0x7f, 0xb4, 0x6b, 0xcd, 0xd7, 0xc4, 0x6a, 0x71, 0xf3, 0x8f, -0xce, 0xa5, 0x5f, 0x10, 0x0e, 0xbb, 0xa9, 0x95, 0xa1, 0xe8, -0xeb, 0xad, 0xff, 0x00, 0xb5, 0x4f, 0x5d, 0x6f, 0xa7, 0xcd, -0x5e, 0x72, 0xba, 0xf8, 0xc7, 0xde, 0xa9, 0x46, 0xbc, 0x3b, -0x35, 0x00, 0x7a, 0x20, 0xd6, 0xbf, 0xda, 0xa9, 0x17, 0x5b, -0xff, 0x00, 0x6a, 0xbc, 0xe9, 0x75, 0xe1, 0xfd, 0xea, 0x91, -0x75, 0xd1, 0xc7, 0xcd, 0x40, 0x1e, 0x88, 0xba, 0xd7, 0xfb, -0x54, 0xf5, 0xd6, 0xbf, 0xda, 0xaf, 0x3c, 0x5d, 0x70, 0x7f, -0x7a, 0xa4, 0x5d, 0x70, 0x7f, 0x7a, 0x80, 0x3d, 0x09, 0x75, -0xa1, 0xeb, 0x4d, 0x93, 0x5a, 0x1f, 0xde, 0xae, 0x09, 0x75, -0xc1, 0xfd, 0xea, 0x6c, 0xba, 0xe7, 0xcb, 0xf7, 0xa8, 0x03, -0xad, 0xbb, 0xd6, 0xb2, 0x0f, 0xcd, 0x58, 0x17, 0xda, 0xcf, -0x5f, 0x9a, 0xb9, 0xeb, 0xbd, 0x70, 0x0c, 0xfc, 0xd9, 0xac, -0x0b, 0xfd, 0x77, 0x39, 0xf9, 0xa8, 0x03, 0x6f, 0x53, 0xd6, -0x78, 0x3f, 0x35, 0x71, 0x9a, 0xc6, 0xb1, 0xf2, 0x93, 0xba, -0xa8, 0x6a, 0x3a, 0xef, 0x5f, 0x9a, 0xb8, 0xed, 0x67, 0x5e, -0xc2, 0x91, 0xba, 0x80, 0x1f, 0xae, 0x6b, 0x39, 0xdd, 0xf3, -0x57, 0x83, 0xfc, 0x5e, 0xd7, 0x7f, 0x72, 0xcb, 0xbf, 0xa2, -0xd7, 0x73, 0xad, 0x6b, 0x65, 0xb7, 0x7c, 0xd5, 0xf3, 0xff, -0x00, 0xc5, 0x9d, 0x70, 0x96, 0x94, 0x16, 0xed, 0x5c, 0x18, -0xd7, 0xfb, 0x96, 0x79, 0x99, 0x8b, 0xb6, 0x1d, 0xd8, 0xf1, -0x8f, 0x10, 0xde, 0xf9, 0xb3, 0xca, 0xc4, 0xe7, 0x26, 0xb8, -0x0d, 0x51, 0xf7, 0x4a, 0xd5, 0xd2, 0xea, 0x37, 0x25, 0xcb, -0x9f, 0xad, 0x72, 0xba, 0x86, 0x4b, 0x13, 0x5f, 0x2d, 0x84, -0x85, 0x99, 0xf1, 0x98, 0x28, 0x72, 0xb3, 0xdb, 0xbf, 0x62, -0x6f, 0x0b, 0x0f, 0x12, 0x7c, 0x64, 0x5b, 0x86, 0x46, 0x75, -0xb3, 0x83, 0x8c, 0x0e, 0x8c, 0xec, 0x14, 0x1f, 0xcb, 0x75, -0x7e, 0xb7, 0x59, 0xc6, 0xb1, 0xa2, 0xaa, 0x8c, 0x28, 0x18, -0x00, 0x76, 0x15, 0xf9, 0xe1, 0xff, 0x00, 0x04, 0xda, 0xf0, -0xc8, 0x9a, 0xe7, 0x5a, 0xd5, 0xdb, 0x9c, 0xdd, 0x2c, 0x2b, -0xc7, 0xf7, 0x13, 0x71, 0xff, 0x00, 0xd0, 0xd6, 0xbf, 0x44, -0xed, 0x97, 0xa5, 0x7d, 0x8d, 0x05, 0x68, 0x23, 0xef, 0x30, -0xd1, 0xe5, 0xa6, 0x8d, 0x5b, 0x45, 0xe4, 0x56, 0xcd, 0xaa, -0x74, 0xac, 0x8b, 0x41, 0xd3, 0x8a, 0xda, 0xb4, 0x1c, 0x0a, -0xdc, 0xea, 0x34, 0xed, 0x57, 0xa5, 0x69, 0xc0, 0x2b, 0x3e, -0x05, 0xc6, 0x2b, 0x4e, 0x01, 0xd2, 0x80, 0x2d, 0xc2, 0x3a, -0x55, 0xa5, 0xaa, 0xf0, 0x8e, 0x2a, 0xca, 0xd0, 0x04, 0x8b, -0x53, 0x2d, 0x44, 0x83, 0x26, 0xa5, 0x1d, 0x28, 0x01, 0x69, -0xf4, 0xd1, 0xd6, 0x9d, 0x40, 0x05, 0x14, 0x51, 0x40, 0x18, -0xb3, 0x2d, 0x7c, 0xef, 0xfb, 0x5b, 0x7c, 0x1f, 0x1f, 0x10, -0x3c, 0x2a, 0x35, 0x3b, 0x74, 0x53, 0x77, 0x62, 0x87, 0x77, -0x1c, 0xed, 0xec, 0xdf, 0x86, 0x4e, 0x7d, 0x89, 0xaf, 0xa3, -0x24, 0x4c, 0xd5, 0x2b, 0xab, 0x74, 0x9a, 0x36, 0x8e, 0x44, -0x59, 0x11, 0x81, 0x0c, 0xac, 0x32, 0x08, 0xf4, 0x22, 0xb2, -0xab, 0x4a, 0x15, 0xa9, 0xca, 0x9c, 0xd5, 0xd3, 0x30, 0xaf, -0x46, 0x18, 0x8a, 0x72, 0xa3, 0x51, 0x5e, 0x32, 0x56, 0x67, -0xe3, 0x6e, 0xa3, 0xe1, 0xe9, 0x2d, 0x2e, 0x24, 0x86, 0x58, -0xca, 0x48, 0x84, 0x86, 0x52, 0x39, 0x06, 0xb2, 0x2e, 0x34, -0x8e, 0xbc, 0x57, 0xdd, 0x1f, 0xb4, 0x0f, 0xec, 0xc5, 0x37, -0xda, 0x2e, 0xf5, 0xbd, 0x06, 0x01, 0x25, 0xa8, 0x1b, 0xde, -0x31, 0x8d, 0xc9, 0x93, 0xc8, 0xc6, 0x39, 0x51, 0xd8, 0xf6, -0x15, 0xf2, 0xe5, 0xef, 0x84, 0x6e, 0x2d, 0xef, 0x3e, 0xcd, -0x34, 0x5e, 0x5c, 0x84, 0xfe, 0x07, 0xe8, 0x6b, 0xf1, 0x7c, -0xcb, 0x05, 0x89, 0xca, 0xea, 0xf2, 0xcd, 0x5e, 0x0f, 0x69, -0x74, 0xff, 0x00, 0x80, 0xcf, 0xe7, 0xcc, 0xdf, 0x2e, 0xc5, -0xe4, 0xb5, 0xdc, 0x66, 0xaf, 0x4d, 0xbf, 0x76, 0x5d, 0x3d, -0x1f, 0x66, 0x79, 0x54, 0x9a, 0x39, 0x3d, 0xaa, 0xb4, 0x9a, -0x3b, 0xf6, 0x53, 0x5e, 0xe7, 0x65, 0xf0, 0xe2, 0x49, 0x14, -0x1f, 0x28, 0x1f, 0xca, 0xae, 0x9f, 0x85, 0xce, 0x57, 0xfe, -0x3d, 0xf3, 0xf8, 0x8a, 0x28, 0xaa, 0x93, 0x57, 0x15, 0x05, -0x56, 0xa2, 0xb9, 0xf3, 0xc9, 0xd2, 0x64, 0x5f, 0xe1, 0x3f, -0x95, 0x30, 0xe9, 0xb2, 0x0f, 0x5f, 0xca, 0xbe, 0x82, 0x93, -0xe1, 0x71, 0xe7, 0xf7, 0x03, 0xf3, 0x15, 0x56, 0x4f, 0x85, -0xcd, 0xff, 0x00, 0x3c, 0x7f, 0x95, 0x75, 0x7b, 0x3a, 0xa7, -0x6f, 0xb3, 0xac, 0x78, 0x21, 0xd3, 0xe4, 0x1e, 0xb4, 0xdf, -0xb1, 0x49, 0xe9, 0x5e, 0xe7, 0x27, 0xc2, 0xc6, 0xff, 0x00, -0x9e, 0x27, 0xf2, 0xff, 0x00, 0xeb, 0x55, 0x69, 0x3e, 0x16, -0xb0, 0xff, 0x00, 0x96, 0x43, 0xf1, 0xa5, 0xcb, 0x53, 0xb0, -0x72, 0x56, 0xec, 0x78, 0x99, 0xb4, 0x90, 0x76, 0xa4, 0x36, -0xcf, 0xe9, 0x5e, 0xc9, 0x27, 0xc3, 0x07, 0xe7, 0x11, 0x8f, -0xcc, 0x55, 0x79, 0x3e, 0x17, 0xcb, 0xff, 0x00, 0x3c, 0xff, -0x00, 0x5a, 0x56, 0xa9, 0xd8, 0x5f, 0xbd, 0x5d, 0x0f, 0x22, -0xf2, 0x1f, 0xd2, 0x90, 0xc2, 0xe3, 0xf8, 0x4d, 0x7a, 0xb4, -0x9f, 0x0c, 0xa7, 0x1f, 0xc0, 0x6a, 0xbc, 0x9f, 0x0d, 0xae, -0x17, 0xa2, 0x7e, 0xb4, 0x5e, 0x7d, 0x85, 0x7a, 0x9f, 0xca, -0x79, 0x87, 0x96, 0xde, 0x86, 0x93, 0x63, 0x7a, 0x1a, 0xf4, -0x87, 0xf8, 0x73, 0x72, 0x33, 0xf2, 0x8f, 0xfb, 0xe8, 0x54, -0x0f, 0xf0, 0xf2, 0xe8, 0x0f, 0xb9, 0xfc, 0xa9, 0x5e, 0x5d, -0x83, 0x9e, 0x5d, 0x51, 0xe7, 0xc5, 0x48, 0xa0, 0x8c, 0x57, -0x76, 0xfe, 0x00, 0xbc, 0x03, 0xfd, 0x59, 0x35, 0x03, 0xf8, -0x0e, 0xf0, 0x7f, 0xcb, 0x2f, 0xd6, 0x8e, 0x67, 0xd8, 0x39, -0xdf, 0x54, 0x71, 0x54, 0x57, 0x5e, 0xfe, 0x0a, 0xba, 0x5f, -0xf9, 0x66, 0x2a, 0x06, 0xf0, 0x7d, 0xdf, 0xfc, 0xf2, 0xa3, -0x9b, 0xc8, 0x3d, 0xa7, 0x91, 0xcb, 0xd1, 0x5d, 0x23, 0x78, -0x4e, 0xe8, 0x75, 0x8a, 0xa2, 0x6f, 0x0b, 0xdc, 0x0f, 0xf9, -0x66, 0x7f, 0x3a, 0x39, 0xd0, 0x7b, 0x44, 0x60, 0x51, 0x5b, -0x6d, 0xe1, 0xbb, 0x81, 0xff, 0x00, 0x2c, 0xcd, 0x44, 0xda, -0x04, 0xeb, 0xd5, 0x0d, 0x1c, 0xe8, 0x7e, 0xd2, 0x26, 0x4d, -0x15, 0xa6, 0xda, 0x24, 0xc3, 0xf8, 0x4d, 0x31, 0xb4, 0x79, -0xc7, 0xf0, 0xb7, 0xe2, 0x29, 0xf3, 0x47, 0xb8, 0x7b, 0x48, -0xf7, 0x28, 0x67, 0xeb, 0x46, 0xe3, 0xeb, 0x57, 0x0e, 0x99, -0x32, 0xff, 0x00, 0x09, 0x1f, 0x85, 0x30, 0xe9, 0xf2, 0x8f, -0x4a, 0x39, 0xa3, 0xdc, 0x7e, 0xd2, 0x3d, 0xca, 0xdb, 0xcf, -0xa9, 0xa5, 0xf3, 0x1b, 0xd6, 0xa6, 0x36, 0x12, 0x8e, 0xd4, -0x86, 0xce, 0x41, 0xda, 0x9d, 0xd7, 0x70, 0xe6, 0x89, 0x17, -0x98, 0xde, 0xb4, 0xef, 0x39, 0xbd, 0x69, 0xdf, 0x65, 0x90, -0x76, 0xa4, 0xfb, 0x33, 0xfa, 0x51, 0x74, 0x3b, 0xc4, 0x4f, -0x3d, 0xbd, 0x69, 0x7e, 0xd2, 0xd4, 0x9e, 0x43, 0xfa, 0x52, -0x18, 0x9b, 0xd2, 0x8d, 0x02, 0xd1, 0x24, 0xfb, 0x5b, 0xd2, -0xfd, 0xad, 0xfd, 0xea, 0x1f, 0x2d, 0x87, 0x6a, 0x4d, 0x87, -0xd0, 0xd1, 0x64, 0x2e, 0x58, 0x96, 0x7e, 0xdc, 0xde, 0x9f, -0xad, 0x38, 0x6a, 0x0e, 0x3b, 0x9f, 0xce, 0xaa, 0x60, 0xfa, -0x1a, 0x4a, 0x5c, 0xa8, 0x39, 0x22, 0x5f, 0x5d, 0x4d, 0xc1, -0xfb, 0xed, 0xf9, 0x9a, 0x91, 0x75, 0x79, 0x17, 0xa4, 0x8c, -0x3f, 0x13, 0x59, 0x94, 0x53, 0xe5, 0x41, 0xc9, 0x13, 0x5d, -0x75, 0xd9, 0x81, 0xe2, 0x57, 0xfc, 0xea, 0x44, 0xf1, 0x05, -0xc2, 0xf4, 0x99, 0xbf, 0xef, 0xa3, 0x58, 0x94, 0x52, 0xe5, -0x42, 0xe4, 0x47, 0x42, 0x9e, 0x26, 0xba, 0x1f, 0xf2, 0xdd, -0x8f, 0xe3, 0x53, 0x27, 0x8b, 0x6e, 0xd4, 0xff, 0x00, 0xae, -0x63, 0xff, 0x00, 0x02, 0xae, 0x62, 0x8a, 0x76, 0x7d, 0xc7, -0xca, 0xfa, 0x33, 0xad, 0x4f, 0x1a, 0x5e, 0x2f, 0x49, 0x4f, -0xfd, 0xf4, 0x6a, 0xc2, 0x78, 0xee, 0xf5, 0x7f, 0xe5, 0xa3, -0x1f, 0xf8, 0x11, 0xae, 0x2f, 0x71, 0xf7, 0xa3, 0x71, 0xa6, -0x9c, 0x97, 0x52, 0xbd, 0xfe, 0x92, 0x67, 0x78, 0x9f, 0x10, -0xef, 0x53, 0xf8, 0x8f, 0xfd, 0xf5, 0x56, 0x23, 0xf8, 0x93, -0x78, 0xa7, 0xef, 0x37, 0xe0, 0xd5, 0xe7, 0x7b, 0xcf, 0xad, -0x2e, 0xf6, 0xf5, 0x35, 0x5c, 0xd5, 0x3a, 0x48, 0x6a, 0x55, -0x57, 0xda, 0x3d, 0x32, 0x3f, 0x8a, 0x37, 0x69, 0xdd, 0xff, -0x00, 0xef, 0xaa, 0xb7, 0x1f, 0xc5, 0x7b, 0x91, 0xd5, 0x9f, -0xfe, 0xfa, 0xaf, 0x28, 0xf3, 0x1b, 0xd6, 0x97, 0xce, 0x7f, -0x53, 0x4d, 0x55, 0xaa, 0xbe, 0xd1, 0x6a, 0xad, 0x75, 0xb4, -0x8f, 0x60, 0x8b, 0xe2, 0xec, 0xcb, 0xd5, 0xdf, 0xfe, 0xfa, -0x35, 0x6e, 0x3f, 0x8c, 0x32, 0x8e, 0xb2, 0x30, 0xff, 0x00, -0x81, 0x57, 0x8b, 0x0b, 0x87, 0x1d, 0xe8, 0x17, 0x2e, 0x3b, -0xd5, 0xac, 0x45, 0x75, 0xf6, 0x8b, 0x58, 0x9c, 0x4a, 0xfb, -0x47, 0xba, 0x45, 0xf1, 0x91, 0x87, 0x59, 0x1b, 0xfe, 0xfa, -0x35, 0x72, 0x2f, 0x8c, 0xc7, 0xfe, 0x7a, 0x1f, 0xfb, 0xe8, -0xd7, 0x80, 0x7d, 0xa9, 0xe9, 0xc2, 0xf1, 0xfd, 0x6a, 0xd6, -0x2f, 0x10, 0xba, 0x9a, 0x2c, 0x6e, 0x29, 0x7d, 0xa3, 0xe8, -0xa8, 0x7e, 0x33, 0x8e, 0xf2, 0x9f, 0xfb, 0xea, 0xad, 0xc5, -0xf1, 0x9d, 0x4f, 0xfc, 0xb5, 0x3f, 0xf7, 0xd5, 0x7c, 0xd8, -0xb7, 0xad, 0xeb, 0x4e, 0x1a, 0x83, 0x8f, 0xe2, 0x3f, 0x9d, -0x68, 0xb1, 0xd8, 0x85, 0xd4, 0xd1, 0x66, 0x58, 0xb5, 0xd4, -0xfa, 0x7e, 0x1f, 0x8c, 0xc8, 0x3f, 0xe5, 0xa9, 0xff, 0x00, -0xbe, 0x8d, 0x5b, 0x8b, 0xe3, 0x2a, 0x71, 0xfb, 0xd3, 0xff, -0x00, 0x7d, 0x1a, 0xf9, 0x5c, 0x6a, 0x4e, 0x3a, 0x3b, 0x7e, -0x66, 0x9e, 0xba, 0xbc, 0x83, 0xfe, 0x5a, 0x30, 0xfc, 0x4d, -0x68, 0xb3, 0x1c, 0x42, 0x35, 0x59, 0xb6, 0x2d, 0x1f, 0x59, -0x43, 0xf1, 0x91, 0x0f, 0xfc, 0xb6, 0x3f, 0xf7, 0xd5, 0x5c, -0x8b, 0xe3, 0x1c, 0x64, 0x0f, 0xdf, 0xb7, 0xfd, 0xf4, 0x6b, -0xe4, 0x55, 0xd6, 0xa6, 0x1f, 0xf2, 0xd5, 0xff, 0x00, 0x33, -0x52, 0x2f, 0x88, 0x6e, 0x07, 0x49, 0x9f, 0xf3, 0xad, 0x16, -0x6b, 0x88, 0x46, 0xcb, 0x3a, 0xc5, 0x23, 0xec, 0x48, 0x7e, -0x30, 0x46, 0x71, 0xfb, 0xf2, 0x3f, 0xe0, 0x46, 0xae, 0x45, -0xf1, 0x81, 0x0e, 0x3f, 0xd2, 0x0f, 0xe6, 0x6b, 0xe3, 0x44, -0xf1, 0x35, 0xd2, 0xff, 0x00, 0xcb, 0xc3, 0x7e, 0x75, 0x32, -0x78, 0xb6, 0xed, 0x7a, 0x4e, 0xdf, 0xad, 0x6a, 0xb3, 0x8a, -0xe8, 0xd9, 0x67, 0xd8, 0x95, 0xba, 0x3e, 0xd1, 0x8b, 0xe2, -0xea, 0x7f, 0xcf, 0x73, 0xff, 0x00, 0x7d, 0x1a, 0xb5, 0x17, -0xc5, 0xc4, 0x3f, 0xf2, 0xdf, 0xf5, 0xaf, 0x8a, 0x93, 0xc6, -0x97, 0xaa, 0x3f, 0xd7, 0xb7, 0xe6, 0x6a, 0x64, 0xf1, 0xdd, -0xea, 0xf4, 0x94, 0xfe, 0x66, 0xb6, 0x59, 0xdd, 0x55, 0xd0, -0xdd, 0x71, 0x15, 0x75, 0xba, 0x3e, 0xdb, 0x87, 0xe2, 0xc4, -0x67, 0xfe, 0x5a, 0x83, 0xf8, 0xd5, 0xb8, 0xfe, 0x2b, 0x44, -0x7f, 0xe5, 0xa0, 0xfc, 0xeb, 0xe2, 0x28, 0xfe, 0x21, 0xde, -0xaf, 0x59, 0x4f, 0xe6, 0x6a, 0xc2, 0x7c, 0x4a, 0xbc, 0x5f, -0xf9, 0x68, 0x7f, 0x33, 0x5a, 0xac, 0xf6, 0x7d, 0x8d, 0xe3, -0xc4, 0x95, 0x16, 0xe8, 0xfb, 0x7a, 0x3f, 0x8a, 0x50, 0x91, -0xcb, 0x03, 0xf8, 0xd4, 0xb2, 0x7c, 0x4e, 0x81, 0x87, 0xde, -0x1f, 0x9d, 0x7c, 0x4b, 0x1f, 0xc5, 0x0b, 0xc5, 0xeb, 0x21, -0xfc, 0xcd, 0x4c, 0x3e, 0x2b, 0xdc, 0xa7, 0xfc, 0xb4, 0x7f, -0xd6, 0xb7, 0x8e, 0x7a, 0xde, 0xe7, 0x44, 0x38, 0x95, 0xf5, -0x3e, 0xcb, 0x97, 0xe2, 0x15, 0xbc, 0xbf, 0xc7, 0x8f, 0xc6, -0xb3, 0xee, 0xbc, 0x63, 0x6f, 0x28, 0x38, 0x97, 0x9f, 0x73, -0x5f, 0x24, 0x27, 0xc6, 0x07, 0x4f, 0xbd, 0x23, 0x7e, 0x20, -0xd4, 0xe9, 0xf1, 0x85, 0x5c, 0xe3, 0xce, 0x39, 0xfc, 0x6b, -0xd3, 0xa5, 0x9b, 0xc2, 0x7b, 0x9e, 0xc5, 0x0c, 0xfa, 0x9c, -0xfe, 0x26, 0x7d, 0x1d, 0xa9, 0x78, 0x90, 0x30, 0x24, 0x3e, -0x7e, 0x86, 0xb9, 0x1d, 0x4f, 0x5d, 0x32, 0x12, 0x03, 0x57, -0x96, 0x41, 0xf1, 0x1b, 0xed, 0x7f, 0xf2, 0xd8, 0x8a, 0xd0, -0x8b, 0xc4, 0xd1, 0xce, 0x39, 0x7c, 0xd7, 0xb1, 0x4f, 0x15, -0x4e, 0xae, 0xcc, 0xf7, 0xe8, 0xe3, 0x69, 0x56, 0xd9, 0x9b, -0x5a, 0xa6, 0xa2, 0x4a, 0x30, 0xcf, 0x3f, 0x5a, 0xf0, 0x8f, -0x89, 0x77, 0x2d, 0x3c, 0xf2, 0x1e, 0xd5, 0xeb, 0x37, 0x57, -0x8b, 0x74, 0x0e, 0xd6, 0xc8, 0xaf, 0x24, 0xf1, 0xfa, 0x0d, -0xd2, 0x0e, 0xf5, 0x96, 0x39, 0xfe, 0xea, 0xe6, 0x19, 0x8c, -0x97, 0xb0, 0xba, 0x3c, 0x9a, 0xe1, 0x7a, 0xd6, 0x1e, 0xa0, -0x83, 0x06, 0xba, 0x1b, 0x84, 0xeb, 0x5a, 0xbf, 0x0c, 0xfc, -0x07, 0x73, 0xf1, 0x17, 0xc7, 0xba, 0x6e, 0x8d, 0x04, 0x65, -0xe2, 0x69, 0x04, 0xb7, 0x2c, 0x31, 0xf2, 0x42, 0xa4, 0x6e, -0x3c, 0xfd, 0x40, 0xfa, 0x91, 0x5f, 0x37, 0x86, 0xbc, 0xa4, -0x92, 0x3e, 0x4f, 0x09, 0x79, 0x4d, 0x45, 0x75, 0x3f, 0x40, -0x7f, 0x61, 0x6f, 0x03, 0x3f, 0x85, 0x7e, 0x14, 0x58, 0x49, -0x34, 0x66, 0x39, 0xe7, 0x43, 0x3b, 0x82, 0x39, 0xdd, 0x23, -0x16, 0xfd, 0x17, 0x68, 0xfc, 0x2b, 0xea, 0x7b, 0x65, 0xae, -0x3f, 0xe1, 0xf7, 0x87, 0x53, 0xc3, 0x7e, 0x1c, 0xb3, 0xb2, -0x54, 0x11, 0xb0, 0x50, 0xcc, 0xa3, 0xb1, 0xc7, 0x4f, 0xc0, -0x00, 0x3f, 0x0a, 0xed, 0x2d, 0x97, 0xa5, 0x7d, 0x9c, 0x57, -0x2a, 0x48, 0xfd, 0x02, 0x31, 0xe5, 0x8a, 0x46, 0x9d, 0xa2, -0xe0, 0x0a, 0xd9, 0xb4, 0x5e, 0x95, 0x97, 0x6a, 0xbc, 0x0a, -0xd9, 0xb3, 0x5e, 0x05, 0x51, 0x46, 0x8c, 0x03, 0x91, 0x5a, -0x30, 0xf6, 0xaa, 0x56, 0xeb, 0xcd, 0x5f, 0x89, 0x7a, 0x50, -0x05, 0xa8, 0x87, 0x02, 0xac, 0xa0, 0xa8, 0x23, 0x1c, 0x55, -0x85, 0x14, 0x01, 0x22, 0xd4, 0xa3, 0xa5, 0x46, 0xb5, 0x25, -0x00, 0x2a, 0xf5, 0xa7, 0x53, 0x56, 0x9d, 0x40, 0x05, 0x14, -0x51, 0x40, 0x19, 0xce, 0xb9, 0xed, 0x55, 0xa4, 0x4e, 0x6a, -0xe9, 0x5a, 0x89, 0xd2, 0x80, 0x33, 0x26, 0x88, 0x10, 0x72, -0x33, 0x9a, 0xf1, 0xff, 0x00, 0x89, 0xdf, 0x00, 0x74, 0xaf, -0x17, 0xab, 0xde, 0x69, 0xd1, 0x25, 0x8e, 0xa3, 0x9d, 0xe4, -0x00, 0x7c, 0xb9, 0x4f, 0xd3, 0x3f, 0x29, 0xf7, 0x1f, 0x95, -0x7b, 0x54, 0x91, 0xe2, 0xab, 0x49, 0x17, 0x5a, 0xce, 0xa5, -0x38, 0x55, 0x8b, 0x85, 0x45, 0x74, 0xfa, 0x33, 0x2a, 0xb4, -0xa9, 0xd7, 0x83, 0xa7, 0x56, 0x29, 0xc5, 0xee, 0x99, 0xf1, -0xcd, 0xc7, 0x82, 0xb5, 0x1f, 0x06, 0xc8, 0x57, 0x56, 0xd3, -0x2e, 0x6d, 0xe1, 0x5e, 0x3e, 0xd2, 0xa8, 0x5e, 0x2f, 0x4f, -0xbc, 0x38, 0xa9, 0xd6, 0xdb, 0x4e, 0xb9, 0xc2, 0xc5, 0x75, -0x0b, 0x13, 0xd0, 0x6f, 0x00, 0xfe, 0x55, 0xf5, 0x94, 0xf6, -0xcb, 0x22, 0x95, 0x65, 0x0c, 0xa7, 0x82, 0xac, 0x32, 0x0d, -0x72, 0xba, 0x9f, 0xc3, 0x3f, 0x0d, 0x6a, 0x1b, 0x8c, 0x9a, -0x25, 0x9a, 0xb1, 0xe4, 0xbc, 0x50, 0x84, 0x27, 0xf1, 0x15, -0xe0, 0xcf, 0x24, 0xc3, 0xff, 0x00, 0xcb, 0xa6, 0xe3, 0xf8, -0xfe, 0x67, 0xcc, 0xcf, 0x87, 0x30, 0x9f, 0xf2, 0xe5, 0xb8, -0x7e, 0x2b, 0xf1, 0x3e, 0x75, 0x93, 0xc3, 0xca, 0x79, 0x03, -0x23, 0xda, 0xa2, 0x6f, 0x0e, 0x8f, 0xee, 0x7e, 0x95, 0xed, -0x57, 0x3f, 0x03, 0x7c, 0x38, 0xc7, 0x30, 0xc7, 0x73, 0x6c, -0xde, 0xb1, 0xcc, 0x7f, 0x95, 0x67, 0xcd, 0xf0, 0x3a, 0xd0, -0x67, 0xc8, 0xd5, 0xf5, 0x18, 0x3e, 0x92, 0x66, 0xb9, 0x5e, -0x49, 0x3f, 0xb3, 0x53, 0xf0, 0x38, 0xa5, 0xc3, 0xb5, 0x3e, -0xcd, 0x5f, 0xc0, 0xf2, 0x07, 0xf0, 0xd8, 0xfe, 0xe7, 0xe9, -0x51, 0xb7, 0x86, 0x97, 0xfb, 0x9f, 0xa5, 0x7a, 0xbc, 0x9f, -0x04, 0x9d, 0x7e, 0xe7, 0x88, 0xaf, 0x87, 0xfb, 0xca, 0x1b, -0xfa, 0xd4, 0x0d, 0xf0, 0x62, 0xf9, 0x7e, 0xe7, 0x89, 0x66, -0xff, 0x00, 0x81, 0xda, 0x86, 0xff, 0x00, 0xd9, 0xeb, 0x37, -0x92, 0xd7, 0xfe, 0x75, 0xf8, 0x99, 0x3e, 0x1e, 0xc4, 0x74, -0x9a, 0xfc, 0x4f, 0x29, 0x6f, 0x0c, 0x2e, 0x7f, 0xd5, 0xfe, -0x95, 0x13, 0x78, 0x5d, 0x09, 0x3f, 0xbb, 0xfd, 0x2b, 0xd4, -0xdf, 0xe1, 0x16, 0xb3, 0x1f, 0xfa, 0xbd, 0x7a, 0x29, 0x7f, -0xeb, 0xa5, 0xb6, 0x3f, 0xf6, 0x63, 0x55, 0x65, 0xf8, 0x65, -0xe2, 0x98, 0xff, 0x00, 0xd5, 0xde, 0x69, 0xb2, 0x8f, 0xf6, -0xc3, 0xa9, 0xff, 0x00, 0xd0, 0x4d, 0x64, 0xf2, 0x7c, 0x4a, -0xd9, 0xa3, 0x19, 0x64, 0x38, 0xb5, 0xb3, 0x4f, 0xe7, 0xff, -0x00, 0x00, 0xf3, 0x06, 0xf0, 0xac, 0x67, 0x3f, 0xbb, 0xfd, -0x2a, 0x16, 0xf0, 0x8c, 0x5f, 0xf3, 0xce, 0xbd, 0x32, 0x4f, -0x01, 0x78, 0xb2, 0x1e, 0x7c, 0x8d, 0x3e, 0x7f, 0xf7, 0x25, -0x23, 0xf9, 0x81, 0x55, 0xe4, 0xf0, 0x9f, 0x8a, 0xe3, 0x1f, -0xf2, 0x02, 0x86, 0x4f, 0x74, 0xb9, 0x4f, 0xea, 0x6b, 0x17, -0x95, 0x62, 0xd7, 0xd9, 0x4f, 0xe6, 0x73, 0xbc, 0x93, 0x1c, -0xbe, 0xca, 0x7f, 0x34, 0x79, 0xa3, 0x78, 0x3e, 0x23, 0x9f, -0xdd, 0xfe, 0x95, 0x0b, 0xf8, 0x32, 0x23, 0xff, 0x00, 0x2c, -0xff, 0x00, 0x9d, 0x7a, 0x53, 0x78, 0x7b, 0xc4, 0xc9, 0x9d, -0xfe, 0x1b, 0x63, 0xfe, 0xed, 0xc2, 0x1f, 0xeb, 0x50, 0xbe, -0x95, 0xad, 0xc7, 0xfe, 0xb3, 0xc3, 0x77, 0x0b, 0xfe, 0xeb, -0xab, 0x54, 0x3c, 0xb3, 0x16, 0xbf, 0xe5, 0xdf, 0xe2, 0xbf, -0xcc, 0xc9, 0xe4, 0xf8, 0xe5, 0xff, 0x00, 0x2e, 0xbf, 0x15, -0xfe, 0x67, 0x9a, 0xb7, 0x82, 0x62, 0x3f, 0xf2, 0xcf, 0xf4, -0xaa, 0xef, 0xe0, 0x68, 0x4f, 0xf0, 0x1f, 0xca, 0xbd, 0x29, -0xe3, 0xb9, 0x88, 0x7e, 0xf7, 0x44, 0xbe, 0x4f, 0xa4, 0x61, -0xbf, 0xad, 0x42, 0xf7, 0x10, 0xaf, 0x0f, 0x61, 0x7d, 0x1f, -0xfb, 0xd6, 0xe7, 0xfc, 0x6b, 0x17, 0x80, 0xc4, 0xad, 0xe9, -0x33, 0x17, 0x95, 0xe2, 0xd6, 0xf4, 0x59, 0xe6, 0x92, 0x78, -0x0e, 0x3f, 0xee, 0x1f, 0xca, 0xab, 0xbf, 0x80, 0x90, 0xff, -0x00, 0x07, 0xe8, 0x7f, 0xc6, 0xbd, 0x41, 0xaf, 0x74, 0xe5, -0xfb, 0xe6, 0x58, 0xbf, 0xdf, 0x85, 0x87, 0xf4, 0xa8, 0xfe, -0xdb, 0xa4, 0x37, 0xfc, 0xbd, 0x2f, 0xfd, 0xf0, 0xdf, 0xe1, -0x58, 0xbc, 0x25, 0x65, 0xbd, 0x37, 0xf7, 0x33, 0x9d, 0xe0, -0x71, 0x0b, 0x7a, 0x32, 0xfb, 0x99, 0xe5, 0x8f, 0xe0, 0x04, -0x3f, 0xc1, 0xfa, 0x1a, 0xaf, 0x27, 0xc3, 0xc4, 0x3f, 0xc0, -0x7f, 0x2a, 0xf5, 0xbf, 0x37, 0x4b, 0x7e, 0x97, 0x51, 0x7e, -0x23, 0x14, 0xbe, 0x4e, 0x9e, 0xff, 0x00, 0x76, 0xe2, 0x13, -0xf8, 0xd6, 0x6f, 0x0d, 0x35, 0xbc, 0x1f, 0xdc, 0xcc, 0x9e, -0x12, 0xa2, 0xde, 0x9b, 0xfb, 0x99, 0xe3, 0x52, 0x7c, 0x39, -0x5f, 0xf9, 0xe7, 0x9f, 0xa8, 0xaa, 0xcf, 0xf0, 0xe4, 0x7f, -0xcf, 0x31, 0xf9, 0x57, 0xb8, 0xff, 0x00, 0x66, 0x5b, 0x49, -0xf7, 0x65, 0x88, 0xff, 0x00, 0xc0, 0x85, 0x27, 0xf6, 0x24, -0x67, 0xa1, 0x43, 0xf4, 0x20, 0xd6, 0x4e, 0x92, 0x5b, 0xa3, -0x07, 0x46, 0x2b, 0x78, 0xb3, 0xc1, 0x9f, 0xe1, 0xca, 0x67, -0xfd, 0x5f, 0xe8, 0x6a, 0xb3, 0xfc, 0x37, 0x43, 0xff, 0x00, -0x2c, 0x8f, 0xe0, 0x2b, 0xe8, 0x26, 0xf0, 0xf0, 0x3d, 0x14, -0x1a, 0x89, 0xbc, 0x38, 0x3f, 0xb8, 0x0f, 0xe1, 0x59, 0xfb, -0x38, 0x19, 0x7b, 0x2a, 0x67, 0xcf, 0x52, 0x7c, 0x37, 0x1c, -0xe2, 0x16, 0xfc, 0xaa, 0xac, 0x9f, 0x0d, 0xbf, 0xe9, 0x89, -0xfc, 0x8d, 0x7d, 0x14, 0xfe, 0x1b, 0x1f, 0xf3, 0xcc, 0x7e, -0x42, 0xa2, 0x6f, 0x0d, 0x2e, 0x7f, 0xd5, 0x8f, 0xca, 0xa7, -0xd9, 0x41, 0x8b, 0xd8, 0x53, 0x67, 0xce, 0x12, 0x7c, 0x37, -0x1f, 0xf3, 0xcc, 0x8f, 0xc2, 0xab, 0x49, 0xf0, 0xe0, 0x7f, -0x70, 0xff, 0x00, 0xdf, 0x35, 0xf4, 0x9b, 0x78, 0x65, 0x7f, -0xb8, 0x3f, 0x2a, 0x89, 0xbc, 0x2e, 0xa7, 0x39, 0x41, 0xf9, -0x52, 0xf6, 0x10, 0x27, 0xea, 0xd4, 0xcf, 0x9a, 0x64, 0xf8, -0x6e, 0x7b, 0x21, 0xff, 0x00, 0xbe, 0x6a, 0xb3, 0xfc, 0x37, -0x6f, 0xee, 0x1f, 0xca, 0xbe, 0x98, 0x7f, 0x09, 0xc6, 0x7f, -0xe5, 0x92, 0xfe, 0x55, 0x0b, 0xf8, 0x46, 0x2c, 0x7f, 0xaa, -0x5f, 0xca, 0x97, 0xd5, 0xe0, 0x4f, 0xd5, 0x60, 0x7c, 0xca, -0xff, 0x00, 0x0f, 0x18, 0x7f, 0x09, 0xfc, 0xaa, 0xbc, 0x9f, -0x0f, 0xe4, 0xec, 0x0f, 0xe5, 0x5f, 0x4e, 0xbf, 0x84, 0x23, -0x3f, 0xc0, 0x3f, 0x2a, 0x85, 0xfc, 0x1b, 0x19, 0x1c, 0xa0, -0xfc, 0xaa, 0x7e, 0xad, 0x1e, 0x8c, 0x9f, 0xaa, 0x47, 0xb9, -0xf3, 0x03, 0xf8, 0x06, 0x61, 0xfc, 0x2d, 0xf9, 0x54, 0x0f, -0xe0, 0x49, 0xc7, 0xf0, 0x37, 0xfd, 0xf3, 0x5f, 0x4f, 0x3f, -0x82, 0x61, 0x3f, 0xf2, 0xcc, 0x7e, 0x55, 0x5d, 0xfc, 0x0b, -0x17, 0x68, 0xd7, 0xf2, 0xa5, 0xf5, 0x6f, 0x31, 0x3c, 0x1f, -0x99, 0xf3, 0x0b, 0xf8, 0x26, 0x71, 0xfc, 0x27, 0xfe, 0xf9, -0xa8, 0x5f, 0xc1, 0xd3, 0x8f, 0xe0, 0x3f, 0xf7, 0xcd, 0x7d, -0x3c, 0xfe, 0x04, 0x4f, 0xee, 0x8f, 0xca, 0xa0, 0x93, 0xc0, -0x4a, 0x7f, 0x84, 0x7e, 0x42, 0x97, 0xd5, 0x9f, 0x72, 0x7e, -0xa8, 0xfb, 0x9f, 0x31, 0x3f, 0x84, 0xa7, 0x1f, 0xf2, 0xcc, -0xff, 0x00, 0xdf, 0x35, 0x0b, 0x78, 0x5e, 0x61, 0xff, 0x00, -0x2c, 0xcf, 0xe2, 0x2b, 0xe9, 0xa9, 0x3e, 0x1f, 0xa3, 0x7f, -0x00, 0xfc, 0xaa, 0xbb, 0xfc, 0x3c, 0x5e, 0x7f, 0x76, 0xbf, -0xf7, 0xcd, 0x2f, 0xab, 0xcf, 0xa3, 0x17, 0xd5, 0x67, 0xdc, -0xf9, 0xa1, 0xbc, 0x37, 0x38, 0xff, 0x00, 0x96, 0x44, 0xfe, -0x15, 0x13, 0x78, 0x7a, 0x61, 0xff, 0x00, 0x2c, 0xdb, 0xf2, -0xaf, 0xa5, 0x24, 0xf8, 0x77, 0xff, 0x00, 0x4c, 0xd7, 0xf2, -0xaa, 0xd2, 0xfc, 0x3a, 0x07, 0xfe, 0x59, 0x2f, 0xfd, 0xf2, -0x29, 0x7b, 0x09, 0xf7, 0x27, 0xea, 0xf5, 0x57, 0x53, 0xe6, -0xf3, 0xa1, 0xca, 0x3f, 0x80, 0xfe, 0x54, 0xd3, 0xa3, 0x49, -0x9f, 0xb8, 0x7f, 0x2a, 0xfa, 0x29, 0xfe, 0x1c, 0x8f, 0xf9, -0xe4, 0x3f, 0x21, 0x55, 0x9f, 0xe1, 0xc7, 0xfd, 0x32, 0x1f, -0x95, 0x2f, 0x65, 0x50, 0x5e, 0xc6, 0xaf, 0x73, 0xe7, 0xa3, -0xa4, 0x4a, 0x3f, 0x85, 0xbf, 0x2a, 0x63, 0x69, 0xb2, 0x0e, -0xc7, 0xf2, 0xaf, 0x7f, 0x93, 0xe1, 0xb7, 0x5f, 0xdd, 0x2f, -0xe0, 0x2a, 0xac, 0x9f, 0x0d, 0xc0, 0xff, 0x00, 0x96, 0x5f, -0xa0, 0xa5, 0xec, 0xea, 0x0b, 0xd9, 0xd6, 0x47, 0x83, 0x9b, -0x07, 0x1d, 0x69, 0xa6, 0xc6, 0x41, 0xdb, 0xf4, 0xaf, 0x71, -0x93, 0xe1, 0xcf, 0xfd, 0x33, 0xfd, 0x07, 0xf8, 0xd5, 0x69, -0x3e, 0x1b, 0xe7, 0xfe, 0x59, 0x8f, 0xfb, 0xe6, 0x97, 0x2d, -0x4e, 0xc2, 0xe5, 0xad, 0xd8, 0xf1, 0x63, 0x67, 0x20, 0xed, -0x4d, 0xfb, 0x33, 0xfa, 0x57, 0xb1, 0x3f, 0xc3, 0x62, 0x33, -0xf2, 0x01, 0xf8, 0x55, 0x67, 0xf8, 0x74, 0xc3, 0xf8, 0x3f, -0x4a, 0x56, 0x9f, 0x61, 0x7e, 0xf7, 0xb1, 0xe4, 0xbf, 0x67, -0x7f, 0x4a, 0x43, 0x0b, 0x8f, 0xe1, 0x35, 0xea, 0x6f, 0xf0, -0xee, 0x4e, 0xc9, 0xfa, 0x55, 0x77, 0xf8, 0x7b, 0x2f, 0xf7, -0x29, 0x5e, 0x7d, 0x82, 0xf3, 0xec, 0x79, 0x9f, 0x94, 0xc3, -0xf8, 0x4d, 0x1b, 0x1b, 0xd0, 0xd7, 0xa2, 0xc9, 0xe0, 0x09, -0x80, 0xfb, 0xa6, 0xab, 0xc9, 0xe0, 0x5b, 0x8f, 0xee, 0x1a, -0x39, 0x9f, 0x60, 0xe7, 0x92, 0xfb, 0x27, 0x03, 0xb0, 0xfa, -0x1a, 0x31, 0x5d, 0xbb, 0xf8, 0x22, 0xe0, 0x1f, 0xb8, 0x7f, -0x2a, 0x85, 0xfc, 0x1b, 0x70, 0x3f, 0x80, 0xfe, 0x54, 0xb9, -0xdf, 0x61, 0x7b, 0x47, 0xd5, 0x1c, 0x6e, 0x31, 0x45, 0x75, -0x8f, 0xe1, 0x1b, 0x81, 0xff, 0x00, 0x2c, 0xcd, 0x42, 0xde, -0x15, 0x9c, 0x1f, 0xf5, 0x74, 0xf9, 0xfc, 0x83, 0xda, 0x79, -0x1c, 0xcd, 0x15, 0xd0, 0x37, 0x86, 0xa7, 0x1f, 0xf2, 0xca, -0xa3, 0x3e, 0x1f, 0x98, 0x1f, 0xf5, 0x67, 0xf0, 0xa3, 0x9d, -0x0f, 0xda, 0xa3, 0x0e, 0x8a, 0xd8, 0x6d, 0x0a, 0x61, 0xff, -0x00, 0x2c, 0xc8, 0xa8, 0xce, 0x8d, 0x28, 0xfe, 0x03, 0x47, -0x3c, 0x43, 0xda, 0xc4, 0xcb, 0xa2, 0xb4, 0x4e, 0x93, 0x20, -0xfe, 0x13, 0x4c, 0x3a, 0x64, 0x83, 0xb7, 0xe7, 0x4f, 0x9e, -0x23, 0xf6, 0x91, 0xee, 0x51, 0xa5, 0xdc, 0x6a, 0xd9, 0xd3, -0xa4, 0xf4, 0x34, 0xc3, 0x60, 0xe3, 0xff, 0x00, 0xd5, 0x4f, -0x9a, 0x3d, 0xc7, 0xcf, 0x1e, 0xe5, 0x7d, 0xe6, 0x99, 0x23, -0x1c, 0x75, 0xab, 0x3f, 0x63, 0x7a, 0x63, 0xda, 0x3e, 0x29, -0xa9, 0x22, 0x94, 0xa2, 0x53, 0x3c, 0xd3, 0x42, 0x63, 0xb9, -0xab, 0x62, 0xc9, 0xbd, 0xc5, 0x1f, 0x66, 0x3d, 0x2b, 0x4e, -0x64, 0x69, 0xce, 0xba, 0x10, 0xc7, 0x73, 0x35, 0xb9, 0xca, -0xb1, 0x15, 0xad, 0xa7, 0x78, 0x9e, 0x58, 0x5c, 0x09, 0x1a, -0xb2, 0x64, 0x88, 0x8e, 0x31, 0x50, 0x34, 0x44, 0x8f, 0x6a, -0xeb, 0xa5, 0x5e, 0x50, 0x77, 0x8b, 0x3b, 0x28, 0xe2, 0x67, -0x49, 0xa7, 0x16, 0x7a, 0x2d, 0xa7, 0x89, 0x56, 0x48, 0xb2, -0x1f, 0x9f, 0xad, 0x72, 0x5e, 0x2f, 0xbe, 0x17, 0x6e, 0xc4, -0x9e, 0x48, 0xac, 0x88, 0x6e, 0x24, 0xb5, 0xe8, 0x4e, 0xdf, -0x4a, 0x8b, 0x50, 0x91, 0xee, 0x30, 0xdc, 0x91, 0x5e, 0xd7, -0xd7, 0x5d, 0x5a, 0x7c, 0xad, 0x9f, 0x47, 0xfd, 0xa2, 0xeb, -0x52, 0xe4, 0x93, 0x39, 0x8b, 0x90, 0x79, 0x35, 0xf7, 0x4f, -0xec, 0x43, 0xf0, 0x75, 0xb4, 0x6f, 0x0e, 0xff, 0x00, 0xc2, -0x41, 0xa9, 0x5a, 0x18, 0xae, 0x6e, 0xdf, 0xcd, 0x02, 0x45, -0xc3, 0x14, 0xc7, 0xee, 0xc7, 0xfe, 0xcd, 0xf8, 0x8a, 0xf1, -0xcf, 0xd9, 0xef, 0xf6, 0x7a, 0xbb, 0xf1, 0xd6, 0xb3, 0x06, -0xa7, 0xaa, 0x5a, 0xe3, 0x4c, 0x42, 0x1e, 0x18, 0x65, 0x00, -0x89, 0xbf, 0xda, 0x23, 0xb2, 0x8f, 0x7e, 0xb5, 0xfa, 0x17, -0xe1, 0xad, 0x12, 0x1d, 0x0f, 0x4c, 0x86, 0xce, 0x01, 0xf2, -0xa0, 0xe4, 0x81, 0x8d, 0xc7, 0xb9, 0xaf, 0x6f, 0x2c, 0xc3, -0x4a, 0x2b, 0xdb, 0x4f, 0xe4, 0x7d, 0x16, 0x51, 0x84, 0x94, -0x57, 0xb7, 0x9a, 0xdf, 0x6f, 0xf3, 0x37, 0x2d, 0x13, 0x1d, -0xab, 0x5e, 0xd6, 0x31, 0x91, 0x59, 0xf6, 0xd1, 0xd6, 0xbd, -0xac, 0x75, 0xef, 0x9f, 0x4e, 0x68, 0xdb, 0x20, 0xe2, 0xb6, -0x2d, 0x53, 0x00, 0x56, 0x6d, 0xb2, 0x72, 0x2b, 0x62, 0xd9, -0x7e, 0x51, 0x40, 0x17, 0x6d, 0x97, 0x15, 0x7e, 0x21, 0x55, -0x60, 0x15, 0x76, 0x11, 0x40, 0x13, 0xc6, 0xb8, 0xa9, 0xd7, -0xb5, 0x46, 0x8a, 0x6a, 0x60, 0x31, 0x40, 0x0f, 0x4e, 0xd4, -0xfa, 0x45, 0xa5, 0xa0, 0x07, 0x0e, 0x94, 0xb4, 0x51, 0x40, -0x05, 0x14, 0x51, 0x40, 0x15, 0xca, 0xf1, 0x51, 0x32, 0x55, -0x82, 0xb4, 0xd2, 0xb9, 0x34, 0x01, 0x4d, 0xd3, 0x9a, 0x85, -0xe2, 0xe0, 0xd5, 0xe6, 0x5a, 0x8d, 0xa3, 0xa0, 0x0c, 0xe7, -0x87, 0xda, 0xab, 0xc9, 0x07, 0xb5, 0x6a, 0x18, 0xb3, 0x50, -0xbc, 0x34, 0x01, 0x94, 0xf0, 0x7b, 0x54, 0x0d, 0x6d, 0x9e, -0xd5, 0xae, 0xd0, 0x66, 0xa3, 0x6b, 0x7e, 0x28, 0x03, 0x19, -0xed, 0xb3, 0xd0, 0x54, 0x4d, 0x6b, 0xed, 0x5b, 0x26, 0xdb, -0x8f, 0xfe, 0xb5, 0x46, 0xd6, 0xd4, 0x01, 0x8d, 0xf6, 0x51, -0xe9, 0x51, 0xb5, 0xaf, 0x6a, 0xdb, 0xfb, 0x2e, 0x7f, 0xfd, -0x55, 0x19, 0xb4, 0xe6, 0x80, 0x31, 0x0d, 0xa6, 0x29, 0x86, -0xcf, 0x27, 0xa0, 0xad, 0xc3, 0x6b, 0xc5, 0x30, 0xda, 0x50, -0x06, 0x1b, 0xd9, 0xf1, 0xd2, 0xa3, 0x6b, 0x4f, 0x6a, 0xdd, -0x36, 0xbc, 0xd4, 0x6d, 0x69, 0xc5, 0x00, 0x61, 0x1b, 0x21, -0xfd, 0xda, 0x8e, 0x4b, 0x25, 0x63, 0x82, 0x80, 0xfd, 0x45, -0x6f, 0xfd, 0x92, 0x98, 0xd6, 0x78, 0xa0, 0x0e, 0x6e, 0x4d, -0x1a, 0xde, 0x4f, 0xbd, 0x6f, 0x1b, 0x7d, 0x50, 0x1a, 0xac, -0xfe, 0x1c, 0xb0, 0x7f, 0xbd, 0x61, 0x6e, 0xdf, 0x58, 0x54, -0xff, 0x00, 0x4a, 0xea, 0x8d, 0xa0, 0x3f, 0xfe, 0xaa, 0x63, -0x59, 0x0c, 0x7f, 0xf5, 0xa8, 0x03, 0x91, 0x7f, 0x07, 0xe9, -0x0f, 0xf7, 0xb4, 0xab, 0x36, 0xfa, 0xdb, 0xa1, 0xfe, 0x95, -0x52, 0x6f, 0x01, 0x68, 0x52, 0xf0, 0x74, 0x7b, 0x31, 0xfe, -0xec, 0x21, 0x7f, 0x90, 0xae, 0xdf, 0xec, 0x94, 0xd6, 0xb2, -0xcf, 0xff, 0x00, 0xaa, 0x80, 0x3c, 0xf6, 0x6f, 0x85, 0xde, -0x1d, 0x97, 0x96, 0xd3, 0x10, 0x7f, 0xb9, 0x23, 0xaf, 0xf2, -0x35, 0x03, 0x7c, 0x28, 0xd0, 0x3f, 0x86, 0xce, 0x54, 0xff, -0x00, 0x76, 0xe2, 0x4f, 0xfe, 0x2a, 0xbd, 0x1c, 0xd8, 0x8f, -0xf2, 0x29, 0x8d, 0x67, 0xc7, 0x1c, 0x52, 0x69, 0x3d, 0xc4, -0xd2, 0x7b, 0x9e, 0x6c, 0x7e, 0x15, 0x68, 0xf8, 0xc2, 0xfd, -0xa9, 0x3f, 0xdd, 0xb8, 0x7f, 0xf1, 0xaa, 0xf3, 0x7c, 0x2a, -0xb2, 0x3f, 0xea, 0xaf, 0x2f, 0xa2, 0xfa, 0x4c, 0x4d, 0x7a, -0x77, 0xd8, 0x69, 0x86, 0xcb, 0x3d, 0x05, 0x43, 0xa7, 0x07, -0xbc, 0x51, 0x9b, 0xa5, 0x4d, 0xef, 0x15, 0xf7, 0x1e, 0x55, -0x27, 0xc2, 0x92, 0x39, 0x8f, 0x59, 0xbe, 0x4f, 0x62, 0xd9, -0x15, 0x5d, 0xbe, 0x19, 0xea, 0x28, 0x7f, 0x75, 0xad, 0x39, -0xff, 0x00, 0xae, 0x91, 0x83, 0xfd, 0x2b, 0xd6, 0x5a, 0xca, -0x99, 0xf6, 0x1a, 0x87, 0x87, 0xa3, 0x2d, 0xe0, 0xbe, 0xe4, -0x67, 0x2c, 0x2d, 0x09, 0x6f, 0x4d, 0x7d, 0xc8, 0xf2, 0x39, -0x3e, 0x1e, 0x6b, 0xca, 0x7e, 0x5d, 0x5e, 0xdd, 0x87, 0xfb, -0x70, 0x0f, 0xf0, 0xa8, 0x5f, 0xc0, 0x5e, 0x24, 0x4f, 0xbb, -0x7f, 0x60, 0xdf, 0xef, 0x46, 0x47, 0xfe, 0xcb, 0x5e, 0xbc, -0xd6, 0x46, 0x9a, 0xd6, 0x5c, 0x7f, 0xf5, 0xab, 0x27, 0x83, -0xc3, 0x3f, 0xf9, 0x76, 0xbe, 0xe4, 0x62, 0xf2, 0xfc, 0x23, -0xde, 0x94, 0x7e, 0xe4, 0x78, 0xf3, 0x78, 0x2f, 0xc4, 0xc9, -0xfc, 0x5a, 0x74, 0xbf, 0x42, 0xc3, 0xf9, 0xad, 0x42, 0xfe, -0x1a, 0xf1, 0x2c, 0x59, 0xff, 0x00, 0x89, 0x6d, 0xac, 0xd8, -0xfe, 0xec, 0xc0, 0x7f, 0x3c, 0x57, 0xb1, 0x9b, 0x2f, 0xf3, -0x8a, 0x4f, 0xb0, 0xfa, 0x0f, 0xd2, 0xb2, 0x79, 0x7e, 0x15, -0xef, 0x4d, 0x18, 0xcb, 0x2a, 0xc1, 0x4b, 0x7a, 0x48, 0xf1, -0x76, 0xd1, 0xf5, 0xf8, 0xf3, 0xbf, 0x40, 0xe9, 0xfd, 0xc9, -0x50, 0xff, 0x00, 0x5a, 0x81, 0xe0, 0xd4, 0x63, 0xff, 0x00, -0x59, 0xe1, 0xfb, 0xc3, 0x8f, 0xf9, 0xe6, 0x9b, 0xbf, 0x95, -0x7b, 0x5b, 0x58, 0xff, 0x00, 0x9c, 0x53, 0x7e, 0xc3, 0xed, -0xfa, 0x56, 0x4f, 0x2a, 0xc2, 0x3f, 0xb3, 0xf8, 0xb3, 0x07, -0x92, 0xe0, 0x5f, 0xd8, 0xfc, 0x59, 0xe2, 0x0d, 0x24, 0xc3, -0xef, 0x68, 0x5a, 0x92, 0xff, 0x00, 0xdb, 0xb9, 0xa8, 0xda, -0xea, 0x31, 0xf7, 0xb4, 0xbd, 0x41, 0x3e, 0xb0, 0x7f, 0xf5, -0xeb, 0xdc, 0x5a, 0xcb, 0x02, 0xa3, 0x36, 0x5e, 0xd5, 0x9b, -0xca, 0x30, 0xaf, 0xa3, 0xfb, 0xcc, 0x9e, 0x43, 0x82, 0x7d, -0x1f, 0xde, 0x78, 0x79, 0xbc, 0xb2, 0x1f, 0x7e, 0x0b, 0x98, -0xff, 0x00, 0xde, 0x84, 0xd2, 0x1b, 0xdd, 0x24, 0xf0, 0xd3, -0x14, 0xff, 0x00, 0x7e, 0x36, 0x1f, 0xd2, 0xbd, 0xae, 0x4d, -0x32, 0x37, 0x3f, 0x34, 0x6a, 0x7e, 0xa2, 0xab, 0xc9, 0xa1, -0xda, 0xb8, 0xf9, 0xad, 0xa2, 0x23, 0xde, 0x31, 0x59, 0x3c, -0x97, 0x0e, 0xf6, 0x6d, 0x7c, 0xff, 0x00, 0xe0, 0x18, 0xbe, -0x1f, 0xc2, 0x3d, 0x9c, 0x97, 0xcf, 0xfe, 0x01, 0xe3, 0xaa, -0xfa, 0x5b, 0x9e, 0x2e, 0xa1, 0x1f, 0x53, 0x8a, 0x71, 0xb7, -0xd3, 0xdb, 0xa5, 0xd5, 0xb1, 0xff, 0x00, 0xb6, 0xab, 0xfe, -0x35, 0xea, 0xb2, 0xf8, 0x4f, 0x4d, 0x9b, 0x3b, 0xec, 0xa1, -0x39, 0xff, 0x00, 0x62, 0xa9, 0x49, 0xe0, 0x4d, 0x16, 0x43, -0x96, 0xd3, 0xa1, 0x27, 0xe9, 0x59, 0x3c, 0x92, 0x9f, 0x49, -0xbf, 0xc0, 0xc1, 0xf0, 0xed, 0x2f, 0xb3, 0x51, 0xfe, 0x07, -0x9b, 0xff, 0x00, 0x67, 0xd9, 0xb7, 0x4b, 0x88, 0x0f, 0xd1, -0xc5, 0x34, 0xe8, 0xf0, 0x37, 0x46, 0x8c, 0xfd, 0x1a, 0xbd, -0x11, 0xfe, 0x1c, 0xe8, 0x4f, 0xd7, 0x4f, 0x4f, 0xc1, 0x98, -0x7f, 0x5a, 0x81, 0xfe, 0x1a, 0x68, 0x4d, 0xca, 0xd9, 0x94, -0xff, 0x00, 0x76, 0x57, 0xff, 0x00, 0xe2, 0xaa, 0x1e, 0x48, -0xba, 0x54, 0xfc, 0x0c, 0xdf, 0x0e, 0x47, 0xa5, 0x57, 0xf7, -0x7f, 0xc1, 0x38, 0x1f, 0xec, 0x04, 0x6e, 0x81, 0x4f, 0xe3, -0x4d, 0x6f, 0x0e, 0x0f, 0xf9, 0xe6, 0x3f, 0x2a, 0xee, 0x1f, -0xe1, 0x86, 0x98, 0xdf, 0x71, 0xee, 0xa2, 0xff, 0x00, 0x76, -0x63, 0xfd, 0x6a, 0x06, 0xf8, 0x63, 0x6c, 0xbf, 0xea, 0xf5, -0x2b, 0xf5, 0xfa, 0xba, 0x9f, 0xe9, 0x59, 0x3c, 0x92, 0x6b, -0x6a, 0x9f, 0x81, 0x8b, 0xe1, 0xda, 0x9d, 0x2a, 0xfe, 0x07, -0x12, 0x7c, 0x34, 0xbf, 0xf3, 0xcc, 0x7e, 0x55, 0x13, 0x78, -0x69, 0x7f, 0xe7, 0x98, 0xfc, 0xab, 0xb7, 0x6f, 0x87, 0x33, -0xaf, 0xfa, 0xad, 0x6a, 0xe1, 0x7f, 0xde, 0x8c, 0x1f, 0xea, -0x2a, 0x3f, 0xf8, 0x57, 0xfa, 0x98, 0xe9, 0xaf, 0xb7, 0xe3, -0x6a, 0x0f, 0xfe, 0xcd, 0x59, 0x7f, 0x62, 0xd7, 0xe9, 0x35, -0xf8, 0x98, 0xbe, 0x1e, 0xc4, 0xf4, 0x9a, 0xfc, 0x4e, 0x1d, -0xbc, 0x30, 0x87, 0xfe, 0x59, 0x0f, 0xca, 0xa1, 0x7f, 0x0b, -0x46, 0x47, 0xfa, 0xa1, 0xf9, 0x57, 0x7e, 0x3c, 0x0b, 0xaa, -0x0f, 0xf9, 0x8e, 0xe7, 0xeb, 0x66, 0xbf, 0xfc, 0x55, 0x29, -0xf0, 0x66, 0xa6, 0xbf, 0xf3, 0x15, 0x89, 0xff, 0x00, 0xde, -0xb5, 0xc7, 0xf2, 0x6a, 0xcd, 0xe4, 0xf8, 0x95, 0xd5, 0x7e, -0x3f, 0xe4, 0x64, 0xf2, 0x0c, 0x5a, 0xd9, 0xc5, 0xfc, 0xdf, -0xf9, 0x1e, 0x74, 0xde, 0x14, 0x88, 0xff, 0x00, 0xcb, 0x11, -0xf9, 0x54, 0x2f, 0xe1, 0x28, 0x8f, 0xfc, 0xb1, 0x51, 0xf8, -0x57, 0xa5, 0x7f, 0xc2, 0x29, 0xaa, 0x28, 0xff, 0x00, 0x8f, -0x9b, 0x37, 0xff, 0x00, 0x7a, 0x16, 0x1f, 0xfb, 0x35, 0x46, -0xfe, 0x1c, 0xd5, 0x13, 0xfe, 0x59, 0xda, 0xc9, 0xf4, 0x2c, -0xbf, 0xe3, 0x59, 0x3c, 0xab, 0x16, 0xbe, 0xca, 0x7f, 0x33, -0x09, 0x64, 0x98, 0xe5, 0xf6, 0x53, 0xf9, 0x9e, 0x66, 0xfe, -0x0e, 0x84, 0xff, 0x00, 0xcb, 0x21, 0xf9, 0x54, 0x12, 0x78, -0x2e, 0x03, 0xff, 0x00, 0x2c, 0x85, 0x7a, 0x6b, 0xe8, 0xba, -0xa2, 0x8e, 0x34, 0xe8, 0x5c, 0xfb, 0x5c, 0xe3, 0xff, 0x00, -0x65, 0xaa, 0xb2, 0xe9, 0xda, 0xa2, 0x7f, 0xcc, 0x1c, 0x37, -0xfb, 0xb7, 0x19, 0xff, 0x00, 0xd9, 0x6b, 0x3f, 0xec, 0xcc, -0x5f, 0xfc, 0xfb, 0xfc, 0x57, 0xf9, 0x99, 0x7f, 0x63, 0xe3, -0xbf, 0xe7, 0xd7, 0xe2, 0xbf, 0xcc, 0xf3, 0x57, 0xf0, 0x44, -0x3f, 0xf3, 0xc8, 0x7e, 0x55, 0x0b, 0xf8, 0x1e, 0x13, 0xff, -0x00, 0x2c, 0x97, 0xf2, 0xaf, 0x46, 0x78, 0x35, 0x35, 0x38, -0x3a, 0x14, 0xa7, 0xfd, 0xd9, 0x41, 0xfe, 0x95, 0x0b, 0x0b, -0xd5, 0x3f, 0x36, 0x87, 0x76, 0x3e, 0x8b, 0x9f, 0xe9, 0x53, -0xfd, 0x99, 0x8a, 0xff, 0x00, 0x9f, 0x7f, 0x8a, 0xff, 0x00, -0x32, 0x5e, 0x4f, 0x8d, 0x5f, 0xf2, 0xeb, 0xf1, 0x5f, 0xe6, -0x79, 0xc3, 0xf8, 0x12, 0x23, 0xff, 0x00, 0x2c, 0xc7, 0xe5, -0x55, 0xa4, 0xf0, 0x04, 0x47, 0xfe, 0x59, 0x0a, 0xf4, 0xe2, -0xd2, 0x0f, 0xbf, 0xa4, 0x5f, 0x27, 0xd6, 0x16, 0xa8, 0x9a, -0xf2, 0xd1, 0x3f, 0xd6, 0xdb, 0xdc, 0x45, 0xfe, 0xf4, 0x46, -0xb3, 0x79, 0x7e, 0x21, 0x6f, 0x49, 0x99, 0x4b, 0x2a, 0xc5, -0x2d, 0xe8, 0xb3, 0xcb, 0xe4, 0xf8, 0x7f, 0x1f, 0xfc, 0xf2, -0x5f, 0xc6, 0xab, 0xbf, 0xc3, 0xd4, 0x3f, 0xf2, 0xc5, 0x7f, -0x2a, 0xf5, 0x51, 0x7f, 0xa4, 0xb9, 0xe6, 0x56, 0x5f, 0xf7, -0x93, 0x14, 0xf1, 0x26, 0x94, 0xfc, 0x7d, 0xad, 0x17, 0xea, -0x31, 0x58, 0x3c, 0x1d, 0x55, 0xbd, 0x37, 0xf7, 0x1c, 0xd2, -0xc0, 0x56, 0x8f, 0xc5, 0x49, 0xfd, 0xcc, 0xf1, 0xf7, 0xf8, -0x74, 0xbf, 0xf3, 0xc1, 0x7f, 0x23, 0x55, 0x9f, 0xe1, 0xc2, -0xff, 0x00, 0xcf, 0x15, 0x3f, 0x85, 0x7b, 0x49, 0x8b, 0x4c, -0x6e, 0x97, 0xb0, 0xfe, 0x26, 0x81, 0x69, 0xa7, 0x30, 0xe2, -0xf6, 0xdf, 0xfe, 0xfb, 0x03, 0xfa, 0xd6, 0x6f, 0x0c, 0xd6, -0xf0, 0x7f, 0x73, 0x30, 0x78, 0x49, 0x2d, 0xe9, 0xbf, 0xb9, -0x9e, 0x1a, 0xff, 0x00, 0x0e, 0x07, 0xfc, 0xf0, 0x1f, 0x95, -0x57, 0x7f, 0x87, 0x03, 0xfe, 0x78, 0x2f, 0xe5, 0x5e, 0xf6, -0x34, 0x8b, 0x59, 0x7e, 0xe5, 0xc4, 0x4f, 0xfe, 0xeb, 0x83, -0xfd, 0x69, 0xff, 0x00, 0xf0, 0x8d, 0xa3, 0x8c, 0xa9, 0x0c, -0x3d, 0x85, 0x62, 0xe8, 0xc5, 0x6e, 0x8c, 0x65, 0x87, 0x8a, -0xf8, 0x91, 0xf3, 0xc4, 0x9f, 0x0d, 0x97, 0xfe, 0x78, 0x0f, -0xc8, 0xd5, 0x69, 0x3e, 0x1b, 0x2f, 0xfc, 0xf0, 0xfd, 0x0d, -0x7d, 0x18, 0xfe, 0x17, 0x1f, 0xdd, 0xcf, 0xe1, 0x51, 0x37, -0x85, 0x97, 0xfb, 0xbf, 0xa5, 0x67, 0xec, 0xa9, 0x99, 0xfb, -0x1a, 0x47, 0xcd, 0xf2, 0x7c, 0x36, 0x1f, 0xf3, 0xc3, 0xf4, -0xaa, 0xaf, 0xf0, 0xd8, 0x7f, 0xcf, 0x1c, 0x7e, 0x15, 0xf4, -0xab, 0x78, 0x51, 0x4f, 0xf0, 0xfe, 0x95, 0x0b, 0x78, 0x49, -0x0f, 0xf0, 0x7e, 0x94, 0xbd, 0x8c, 0x08, 0x78, 0x7a, 0x6c, -0xf9, 0xa2, 0x4f, 0x86, 0xf8, 0xff, 0x00, 0x96, 0x5f, 0xa1, -0xaa, 0x77, 0x3f, 0x0e, 0x59, 0x54, 0xe2, 0x2f, 0xd0, 0xd7, -0xd3, 0xcf, 0xe1, 0x18, 0xc9, 0xfb, 0x9f, 0xa5, 0x57, 0x9f, -0xc1, 0x71, 0x30, 0x3f, 0x27, 0xe9, 0x4b, 0xea, 0xf0, 0xe8, -0x2f, 0xaa, 0xd3, 0x3e, 0x50, 0xbc, 0xf0, 0x44, 0xb0, 0x83, -0x84, 0xc7, 0xe1, 0x58, 0x77, 0x7e, 0x1e, 0x9a, 0x02, 0x77, -0x46, 0x7f, 0x2a, 0xfa, 0xca, 0xf7, 0xe1, 0xfc, 0x52, 0x83, -0xf2, 0xe0, 0xff, 0x00, 0xbb, 0xff, 0x00, 0xd7, 0xae, 0x53, -0x5a, 0xf8, 0x6a, 0x8a, 0xac, 0x42, 0x92, 0x3d, 0x42, 0xd7, -0x35, 0x5a, 0x0e, 0x2a, 0xf1, 0x39, 0x2a, 0xe1, 0xa5, 0x05, -0x78, 0x33, 0xe6, 0x89, 0x34, 0x93, 0x9e, 0x54, 0xd4, 0x47, -0x4b, 0x23, 0xf8, 0x6b, 0xd7, 0xb5, 0x3f, 0x87, 0xf3, 0x99, -0x8a, 0xdb, 0xc2, 0xf2, 0xbf, 0xf7, 0x51, 0x09, 0xad, 0x4f, -0x0c, 0xfc, 0x08, 0xd5, 0x7c, 0x46, 0xe4, 0x3e, 0x6d, 0xb8, -0xce, 0xd1, 0x1e, 0xf6, 0x1f, 0x5e, 0x46, 0x3f, 0x3a, 0xcb, -0x0f, 0x4b, 0x17, 0x89, 0x97, 0x25, 0x18, 0x37, 0xf9, 0x7d, -0xfb, 0x18, 0xe1, 0x68, 0x63, 0x71, 0x93, 0xe4, 0xa1, 0x4d, -0xcb, 0xf2, 0xfb, 0xf6, 0x3c, 0x25, 0x74, 0x29, 0x6e, 0xa5, -0x11, 0xc3, 0x0b, 0xca, 0xec, 0x70, 0xa8, 0x8a, 0x49, 0x3f, -0x41, 0x5e, 0xe5, 0xf0, 0x73, 0xf6, 0x67, 0xb8, 0xd7, 0x67, -0x8a, 0xf3, 0x5b, 0xb6, 0x06, 0x2e, 0x1d, 0x6d, 0xa4, 0xce, -0xd5, 0xff, 0x00, 0xae, 0x9f, 0xfc, 0x4f, 0xe7, 0x5e, 0xf1, -0xe0, 0x2f, 0xd9, 0xe7, 0x4a, 0xf0, 0xba, 0xc5, 0x2c, 0xa4, -0xcb, 0x73, 0x8f, 0xde, 0x31, 0x19, 0x62, 0x7e, 0xb9, 0xc0, -0x1f, 0x41, 0xf8, 0xd7, 0xaf, 0x69, 0xba, 0x64, 0x36, 0x30, -0xac, 0x30, 0x44, 0xb1, 0x46, 0xbd, 0x15, 0x45, 0x7d, 0xfe, -0x5d, 0x93, 0x3a, 0x36, 0xa9, 0x89, 0x77, 0x7d, 0xba, 0x7f, -0xc1, 0x3f, 0x4f, 0xca, 0xb2, 0x07, 0x42, 0xd5, 0x71, 0x8e, -0xf2, 0xed, 0xd1, 0x7a, 0xf7, 0xfc, 0x8a, 0x5e, 0x19, 0xf0, -0xcd, 0x97, 0x87, 0x2c, 0x92, 0xde, 0xd2, 0x14, 0x4c, 0x28, -0x05, 0x82, 0xe3, 0x3f, 0xe0, 0x3d, 0xab, 0xa8, 0xb5, 0x8b, -0x38, 0xa8, 0x2d, 0xe0, 0xe4, 0x56, 0xa5, 0xb4, 0x15, 0xf5, -0x47, 0xdb, 0x16, 0x6d, 0xa3, 0xe9, 0x5a, 0xb6, 0xb1, 0xf4, -0xe2, 0xab, 0x5b, 0xc1, 0xed, 0x5a, 0xb6, 0xf0, 0xe2, 0x80, -0x2d, 0x5b, 0x47, 0x8c, 0x56, 0xb5, 0xbc, 0x7c, 0x0e, 0x2a, -0x95, 0xb4, 0x55, 0xab, 0x04, 0x74, 0x01, 0x62, 0x15, 0xe9, -0x57, 0x22, 0x5a, 0x82, 0x24, 0xe6, 0xad, 0xc6, 0x31, 0x40, -0x12, 0xad, 0x4a, 0x05, 0x46, 0xbd, 0xaa, 0x64, 0xe9, 0x40, -0x0a, 0x3a, 0x52, 0x8e, 0xb4, 0x52, 0xaf, 0x5a, 0x00, 0x75, -0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x0c, 0xa4, 0x23, -0xd2, 0x9c, 0x46, 0x29, 0x28, 0x02, 0x32, 0x29, 0xbb, 0x6a, -0x62, 0x33, 0x4d, 0xdb, 0x40, 0x10, 0x14, 0xa6, 0x98, 0xf2, -0x3a, 0x54, 0xe5, 0x69, 0x36, 0xfb, 0x50, 0x05, 0x56, 0x8f, -0x8e, 0x94, 0xc3, 0x17, 0xb5, 0x5b, 0x29, 0xed, 0x49, 0xb6, -0x80, 0x29, 0x98, 0x87, 0x71, 0x4c, 0xf2, 0x6a, 0xe1, 0x4e, -0x69, 0x3c, 0xba, 0x00, 0xa4, 0x61, 0xc7, 0x24, 0x53, 0x7c, -0x91, 0xe9, 0x57, 0x8c, 0x74, 0x9e, 0x55, 0x00, 0x50, 0xf2, -0x07, 0xa5, 0x30, 0xdb, 0x83, 0xda, 0xb4, 0x3c, 0xbf, 0x6a, -0x0c, 0x7e, 0xd4, 0x01, 0x9d, 0xf6, 0x7f, 0x6a, 0x63, 0x5b, -0x8c, 0xf4, 0xad, 0x13, 0x0f, 0xad, 0x27, 0x95, 0x8e, 0xd4, -0x01, 0x9a, 0x6d, 0x87, 0xb0, 0xa6, 0x35, 0xb0, 0xcd, 0x69, -0x18, 0x32, 0x69, 0x3c, 0x9f, 0x6a, 0x00, 0xcc, 0xfb, 0x35, -0x35, 0xad, 0xab, 0x50, 0xc1, 0xea, 0x29, 0xa6, 0x00, 0x07, -0x4a, 0x00, 0xca, 0xfb, 0x2f, 0xb5, 0x37, 0xec, 0xde, 0xd9, -0xad, 0x53, 0x0f, 0xad, 0x21, 0x80, 0x50, 0x06, 0x51, 0xb6, -0xf6, 0xa6, 0x35, 0xa8, 0x07, 0xa5, 0x6b, 0x79, 0x1e, 0xf4, -0x86, 0xdc, 0x66, 0x80, 0x32, 0x0d, 0xaf, 0xb5, 0x30, 0xda, -0xf3, 0xd2, 0xb5, 0xcc, 0x1e, 0xd4, 0x9f, 0x66, 0xc7, 0x6a, -0x00, 0xc5, 0x7b, 0x61, 0xe9, 0x4d, 0x36, 0xbe, 0xd5, 0xb2, -0xd6, 0xb9, 0x3d, 0x29, 0x9f, 0x65, 0xf6, 0xfd, 0x28, 0x03, -0x18, 0xda, 0x80, 0x69, 0xa6, 0xd3, 0x35, 0xb0, 0xd6, 0xdc, -0xd3, 0x7e, 0xcb, 0xed, 0x40, 0x18, 0xc6, 0xd3, 0x03, 0x34, -0xc3, 0x6b, 0xc5, 0x6d, 0x35, 0xaf, 0xb5, 0x33, 0xec, 0xc3, -0xd2, 0x80, 0x31, 0x8d, 0xa7, 0xb0, 0xa6, 0x9b, 0x3c, 0x76, -0x15, 0xb5, 0xf6, 0x5f, 0x6a, 0x6b, 0x5a, 0xf1, 0xcd, 0x00, -0x62, 0x35, 0xa0, 0xf4, 0xa6, 0x1b, 0x4c, 0x75, 0x15, 0xb4, -0x6d, 0x4f, 0x61, 0x4d, 0x6b, 0x5a, 0x00, 0xc3, 0x6b, 0x40, -0x3b, 0x53, 0x1a, 0xd3, 0x3d, 0xb1, 0x5b, 0x9f, 0x66, 0xe3, -0xa5, 0x30, 0xdb, 0x63, 0xad, 0x00, 0x61, 0x9b, 0x30, 0x07, -0xbd, 0x45, 0xf6, 0x4f, 0x6a, 0xdf, 0x36, 0xd9, 0x1d, 0x2a, -0x33, 0x69, 0x40, 0x18, 0x4d, 0x67, 0x4c, 0x36, 0x5e, 0xc2, -0xb7, 0x4d, 0xaf, 0xb5, 0x34, 0xda, 0x63, 0xb5, 0x00, 0x61, -0x9b, 0x3c, 0x76, 0xa8, 0xcd, 0x9e, 0x49, 0xe2, 0xb7, 0x8d, -0xa8, 0xc7, 0xdd, 0xa8, 0xcd, 0xa7, 0xb1, 0xfc, 0xa8, 0x03, -0x0c, 0xd9, 0xfb, 0x53, 0x5a, 0xd3, 0xd0, 0x56, 0xe9, 0xb4, -0xc7, 0x63, 0x4c, 0x6b, 0x5e, 0xd8, 0xa0, 0x0c, 0x13, 0x67, -0xed, 0x4c, 0x6b, 0x4c, 0x76, 0xad, 0xef, 0xb1, 0x8f, 0x4a, -0x63, 0x5a, 0x73, 0x40, 0x18, 0x26, 0xd3, 0xbe, 0x29, 0x86, -0xd3, 0x3d, 0xab, 0x79, 0xad, 0x3f, 0x1a, 0x8c, 0xda, 0x1f, -0x4a, 0x00, 0xc2, 0x36, 0x9d, 0xba, 0x54, 0x66, 0xd3, 0x1d, -0xab, 0x74, 0xd9, 0xf3, 0xd2, 0x9a, 0xf6, 0x84, 0xf1, 0x8c, -0x50, 0x06, 0x11, 0xb5, 0xe3, 0xa5, 0x33, 0xec, 0x99, 0xed, -0x5b, 0x9f, 0x63, 0xf6, 0xa4, 0x36, 0x9c, 0x7d, 0xda, 0x00, -0xc3, 0x36, 0x87, 0xd3, 0x14, 0xc6, 0xb5, 0xf6, 0xad, 0xb3, -0x69, 0x9e, 0xa2, 0x93, 0xec, 0x7e, 0xd8, 0xa0, 0x0c, 0x09, -0x2c, 0x12, 0x4f, 0xbd, 0x1a, 0xb0, 0xff, 0x00, 0x68, 0x03, -0x55, 0xa4, 0xd0, 0x2c, 0xa4, 0xce, 0xfb, 0x3b, 0x77, 0xfa, -0xc4, 0xa7, 0xfa, 0x57, 0x4a, 0xd6, 0x98, 0x14, 0xcf, 0xb2, -0x7b, 0x50, 0x07, 0x26, 0xde, 0x16, 0xd3, 0x1b, 0xfe, 0x61, -0xd6, 0xbf, 0xf7, 0xe5, 0x7f, 0xc2, 0xa2, 0x7f, 0x07, 0xe9, -0x47, 0xae, 0x9f, 0x07, 0xe0, 0xb8, 0xae, 0xb8, 0xda, 0x64, -0xd3, 0x0d, 0xa6, 0x07, 0x4a, 0x00, 0xe2, 0xe4, 0xf0, 0x3e, -0x93, 0x27, 0xfc, 0xb9, 0xaa, 0xff, 0x00, 0xba, 0x6a, 0xb3, -0xfc, 0x3e, 0xd2, 0x8f, 0x48, 0xa4, 0x53, 0xfe, 0xcb, 0x9a, -0xee, 0x8d, 0xa7, 0x3d, 0x2a, 0x26, 0xb4, 0xf4, 0x14, 0x0a, -0xc8, 0xe2, 0x07, 0x81, 0x2c, 0x97, 0xee, 0x4d, 0x77, 0x1f, -0xfb, 0xb3, 0x7f, 0xf5, 0xa8, 0xff, 0x00, 0x84, 0x26, 0x30, -0x3e, 0x4d, 0x4b, 0x51, 0x4f, 0xa4, 0xff, 0x00, 0xfd, 0x6a, -0xed, 0x8d, 0xa1, 0x1d, 0xaa, 0x36, 0xb5, 0xf6, 0xcd, 0x66, -0xe9, 0xc1, 0xef, 0x14, 0x66, 0xe9, 0x53, 0x96, 0xf1, 0x5f, -0x71, 0xc4, 0xbf, 0x83, 0x67, 0xfe, 0x0d, 0x5e, 0xf1, 0x7f, -0xde, 0x21, 0xaa, 0x26, 0xf0, 0x7e, 0xa2, 0x3e, 0xe6, 0xb2, -0xe4, 0x7a, 0x3c, 0x20, 0xff, 0x00, 0x5a, 0xee, 0x4d, 0xaf, -0xb5, 0x21, 0xb6, 0xc7, 0x63, 0x59, 0xbc, 0x3d, 0x17, 0xf6, -0x17, 0xdc, 0x8c, 0x9e, 0x13, 0x0e, 0xf7, 0xa6, 0xbe, 0xe4, -0x70, 0x87, 0xc3, 0x3a, 0xd2, 0x67, 0x6d, 0xfc, 0x0f, 0xfe, -0xfc, 0x64, 0x53, 0x1b, 0x43, 0xf1, 0x00, 0xe3, 0xcd, 0xb0, -0x71, 0xeb, 0x86, 0x1f, 0xd2, 0xbb, 0xd3, 0x6f, 0xec, 0x45, -0x27, 0xd9, 0xff, 0x00, 0x1a, 0xcd, 0xe0, 0xb0, 0xcf, 0x7a, -0x6b, 0xee, 0x31, 0x79, 0x76, 0x12, 0x5b, 0xd2, 0x5f, 0x71, -0xe7, 0xcd, 0xe1, 0xbd, 0x7a, 0x4e, 0xb2, 0x58, 0x2f, 0xb8, -0xdd, 0xfe, 0x14, 0xab, 0xe0, 0x0b, 0x9b, 0xae, 0x6e, 0xb5, -0x00, 0x07, 0x75, 0x8a, 0x3e, 0xbf, 0x89, 0x3f, 0xd2, 0xbd, -0x04, 0x5b, 0x64, 0xf4, 0xa7, 0x0b, 0x6a, 0x71, 0xc2, 0x61, -0xe1, 0xb4, 0x17, 0xdc, 0x54, 0x70, 0x18, 0x58, 0x6b, 0x1a, -0x6b, 0xee, 0x38, 0xeb, 0x2f, 0x87, 0xfa, 0x55, 0xa3, 0x06, -0x31, 0xbc, 0xe7, 0xfe, 0x9a, 0x9c, 0x8f, 0xc8, 0x0a, 0xe8, -0x6d, 0x34, 0xd8, 0x6d, 0x63, 0x11, 0xc1, 0x12, 0x44, 0x83, -0xf8, 0x51, 0x70, 0x2b, 0x51, 0x6d, 0x7d, 0xaa, 0x54, 0xb5, -0xf6, 0xae, 0xa4, 0x92, 0x56, 0x48, 0xed, 0x49, 0x45, 0x59, -0x14, 0xe2, 0xb7, 0xab, 0x91, 0x5b, 0x70, 0x2a, 0xcc, 0x56, -0xb9, 0xed, 0x56, 0xe3, 0xb6, 0xe0, 0x71, 0x4c, 0x64, 0x30, -0x5b, 0x63, 0x15, 0xa5, 0x6d, 0x6f, 0xd3, 0x8a, 0x58, 0x2d, -0xbd, 0x8d, 0x69, 0x5b, 0xdb, 0xf4, 0xe2, 0x80, 0x16, 0xda, -0x0a, 0xd3, 0x82, 0x2e, 0x05, 0x36, 0x08, 0x31, 0x8e, 0x2a, -0xfc, 0x31, 0x62, 0x80, 0x25, 0xb7, 0x8f, 0xa5, 0x68, 0xc2, -0x98, 0x15, 0x04, 0x31, 0xe3, 0xb5, 0x5f, 0x89, 0x3d, 0xa8, -0x02, 0x44, 0x18, 0xab, 0x08, 0xb8, 0xa6, 0x22, 0x73, 0xc8, -0xa9, 0x95, 0x78, 0xa0, 0x07, 0x01, 0xe9, 0x52, 0x2d, 0x35, -0x45, 0x3e, 0x80, 0x0a, 0x75, 0x20, 0x14, 0xea, 0x00, 0x28, -0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, -0x00, 0x6e, 0x0d, 0x27, 0x4a, 0x7d, 0x26, 0x28, 0x01, 0x98, -0x14, 0x60, 0x53, 0xf1, 0xee, 0x68, 0xc5, 0x00, 0x46, 0x47, -0xb7, 0x14, 0x9b, 0x69, 0xf4, 0x50, 0x04, 0x7b, 0x45, 0x1b, -0x05, 0x49, 0x45, 0x00, 0x47, 0xb0, 0x53, 0x7c, 0xba, 0x9a, -0x8c, 0x0a, 0x00, 0x80, 0xa5, 0x26, 0xca, 0x9b, 0x6e, 0x69, -0x36, 0x7b, 0x50, 0x04, 0x5b, 0x29, 0xac, 0x99, 0xa9, 0xf6, -0x7b, 0x51, 0xb7, 0xda, 0x80, 0x2b, 0x79, 0x74, 0x79, 0x75, -0x67, 0x60, 0xf4, 0xa4, 0xda, 0x28, 0x02, 0xb7, 0x97, 0xed, -0x41, 0x8b, 0x35, 0x67, 0x60, 0xa4, 0xd9, 0x40, 0x15, 0x7c, -0x9a, 0x4f, 0x2b, 0xda, 0xad, 0x6c, 0x34, 0x9b, 0x73, 0x40, -0x15, 0x4c, 0x43, 0xb8, 0xa6, 0x98, 0xc5, 0x5c, 0xf2, 0xe9, -0x36, 0x50, 0x05, 0x33, 0x10, 0xa6, 0xf9, 0x23, 0xd2, 0xae, -0xf9, 0x74, 0x9e, 0x5e, 0x28, 0x02, 0x91, 0x84, 0x53, 0x3c, -0xae, 0x78, 0xab, 0xed, 0x1f, 0xb5, 0x34, 0xc7, 0x40, 0x14, -0x4c, 0x34, 0x9e, 0x45, 0x5f, 0xf2, 0xa9, 0x0c, 0x5e, 0xd4, -0x01, 0x9e, 0x6d, 0xc6, 0x29, 0xbe, 0x45, 0x68, 0x98, 0x87, -0xa5, 0x37, 0xc9, 0xa0, 0x0c, 0xe3, 0x6f, 0x48, 0x6d, 0xf3, -0xda, 0xb4, 0x7c, 0x91, 0xe9, 0x48, 0x62, 0x14, 0x01, 0x98, -0xd6, 0xc0, 0x76, 0xa6, 0x1b, 0x71, 0xe9, 0x5a, 0xa6, 0x15, -0xf4, 0xa6, 0x98, 0x68, 0x03, 0x2f, 0xec, 0xb9, 0xa8, 0xcd, -0xb0, 0x27, 0xa5, 0x6b, 0xf9, 0x3e, 0xd4, 0xc3, 0x07, 0x14, -0x01, 0x94, 0x6d, 0xb8, 0xa8, 0x8d, 0xa8, 0xf4, 0xad, 0x83, -0x06, 0x7b, 0x52, 0x1b, 0x7a, 0x00, 0xc7, 0xfb, 0x36, 0x29, -0x8d, 0x6d, 0xcf, 0x4a, 0xd9, 0xfb, 0x38, 0xf4, 0xa6, 0x9b, -0x71, 0x9e, 0xd4, 0x01, 0x8d, 0xf6, 0x6a, 0x69, 0xb5, 0xf6, -0xad, 0x9f, 0xb3, 0x03, 0xdb, 0x34, 0x9f, 0x66, 0xf6, 0x14, -0x01, 0x8c, 0x6d, 0x72, 0x3a, 0x53, 0x0d, 0xb7, 0xb5, 0x6d, -0x1b, 0x6f, 0x6a, 0x61, 0xb6, 0xc7, 0x6a, 0x00, 0xc5, 0x36, -0xbc, 0x70, 0x29, 0x86, 0xd4, 0x63, 0xa6, 0x6b, 0x6d, 0xad, -0x86, 0x29, 0xbf, 0x65, 0x1e, 0x94, 0x01, 0x86, 0xd6, 0xbe, -0xd4, 0xc3, 0x68, 0x3d, 0x2b, 0x6d, 0xad, 0x79, 0xe9, 0x4d, -0xfb, 0x2e, 0x3b, 0x50, 0x06, 0x1f, 0xd9, 0x00, 0xed, 0x4c, -0x6b, 0x41, 0x9e, 0x95, 0xb8, 0x6d, 0x79, 0xa6, 0xfd, 0x94, -0x50, 0x06, 0x17, 0xd9, 0x07, 0xa5, 0x35, 0xad, 0x00, 0xad, -0xd6, 0xb5, 0xe2, 0x99, 0xf6, 0x50, 0x7b, 0x50, 0x06, 0x11, -0xb4, 0x19, 0xe9, 0x4d, 0x36, 0x75, 0xbd, 0xf6, 0x4f, 0x6a, -0x63, 0x5a, 0x0f, 0x4a, 0x00, 0xc1, 0x6b, 0x41, 0xe9, 0x4c, -0x36, 0x63, 0xd0, 0x56, 0xf7, 0xd9, 0x47, 0xa6, 0x29, 0x86, -0xd0, 0x7a, 0x50, 0x06, 0x01, 0xb3, 0x07, 0xb6, 0x69, 0x8f, -0x67, 0xfe, 0xcd, 0x74, 0x06, 0xcf, 0xda, 0xa3, 0x36, 0x80, -0xf5, 0x14, 0x01, 0x80, 0xd6, 0x63, 0x1f, 0x76, 0xa3, 0xfb, -0x27, 0xb6, 0x2b, 0xa0, 0x6b, 0x30, 0x07, 0x4a, 0x61, 0xb3, -0x18, 0xe9, 0x40, 0x1c, 0xfb, 0x5a, 0xfb, 0x53, 0x7e, 0xc9, -0x5b, 0xe6, 0xd3, 0xdb, 0x14, 0xc6, 0xb4, 0x1d, 0xff, 0x00, -0x95, 0x00, 0x60, 0x9b, 0x4a, 0x43, 0x6b, 0xed, 0x5b, 0xc6, -0xcf, 0xd8, 0x0a, 0x69, 0xb3, 0x03, 0xb5, 0x00, 0x60, 0x9b, -0x4f, 0x6a, 0x4f, 0xb2, 0x67, 0xb7, 0xe7, 0x5b, 0xc6, 0xcb, -0xda, 0x90, 0x59, 0x0c, 0xf4, 0xa0, 0x0c, 0x3f, 0xb2, 0x7b, -0x52, 0xfd, 0x93, 0xfd, 0x9a, 0xdc, 0x16, 0x63, 0x3f, 0x76, -0x94, 0x59, 0x83, 0xd4, 0x50, 0x06, 0x28, 0xb3, 0x23, 0xa8, -0xa9, 0x52, 0xd3, 0xda, 0xb6, 0x16, 0xcc, 0x7a, 0x54, 0xa9, -0x68, 0x3d, 0x28, 0x03, 0x2a, 0x3b, 0x4e, 0x7a, 0x55, 0xb8, -0xad, 0x46, 0x7a, 0x56, 0x8a, 0x5a, 0x0f, 0x4a, 0xb1, 0x1d, -0xaf, 0xb5, 0x00, 0x52, 0x86, 0xdb, 0x18, 0xad, 0x1b, 0x7b, -0x7f, 0x6a, 0x9e, 0x2b, 0x50, 0x3b, 0x73, 0x57, 0x22, 0xb7, -0xc0, 0xe9, 0x40, 0x11, 0x43, 0x00, 0x18, 0xab, 0xb1, 0x42, -0x05, 0x3a, 0x38, 0x00, 0xed, 0x56, 0xe3, 0x8a, 0x80, 0x12, -0x28, 0xea, 0xd2, 0x2e, 0x31, 0x42, 0x26, 0x05, 0x4c, 0xab, -0x40, 0x0e, 0x55, 0xa9, 0x02, 0xe2, 0x91, 0x56, 0x9e, 0x06, -0x68, 0x01, 0x40, 0xc5, 0x39, 0x69, 0x29, 0xc0, 0x60, 0x50, -0x02, 0xd1, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x52, 0x62, 0x96, 0x8a, 0x00, -0x4c, 0x51, 0x8a, 0x5a, 0x28, 0x01, 0x30, 0x29, 0x08, 0xa7, -0x51, 0x40, 0x0c, 0xa2, 0x9f, 0x45, 0x00, 0x32, 0x8a, 0x76, -0x28, 0xc5, 0x00, 0x36, 0x8a, 0x76, 0x28, 0xc0, 0xa0, 0x06, -0xd1, 0x8a, 0x76, 0x05, 0x1b, 0x68, 0x01, 0xb8, 0x14, 0x98, -0x14, 0xed, 0xb4, 0x6d, 0xa0, 0x06, 0x91, 0x4d, 0xdb, 0xed, -0x52, 0x11, 0x8a, 0x4a, 0x00, 0x8f, 0x6d, 0x1b, 0x6a, 0x4a, -0x28, 0x02, 0x3d, 0xb9, 0xa4, 0xd9, 0x52, 0xe2, 0x8c, 0x50, -0x04, 0x5b, 0x28, 0xd9, 0xed, 0x52, 0x60, 0x51, 0x81, 0x40, -0x11, 0x14, 0xa6, 0xec, 0xa9, 0xf0, 0x28, 0xdb, 0x40, 0x10, -0x6c, 0xf6, 0xa6, 0x98, 0xf1, 0x56, 0x76, 0x8a, 0x69, 0x19, -0xa0, 0x08, 0x36, 0x52, 0x6c, 0xf6, 0xcd, 0x4f, 0xb6, 0x93, -0x6f, 0xb5, 0x00, 0x43, 0xb3, 0xda, 0x98, 0x63, 0xc9, 0xab, -0x3b, 0x7d, 0xa9, 0x36, 0x1a, 0x00, 0xad, 0xe5, 0xd1, 0xb0, -0x55, 0x9d, 0x86, 0x93, 0x65, 0x00, 0x56, 0xf2, 0xbd, 0xa9, -0xad, 0x17, 0xb5, 0x5b, 0xd9, 0x49, 0xb3, 0x14, 0x01, 0x53, -0xc9, 0xf6, 0xa4, 0xf2, 0x7d, 0xaa, 0xde, 0xd1, 0x46, 0xd1, -0x40, 0x14, 0xfc, 0x9a, 0x69, 0x83, 0x35, 0x73, 0xcb, 0xa4, -0xf2, 0xe8, 0x02, 0x91, 0x83, 0x14, 0x9e, 0x4e, 0x6a, 0xe9, -0x8e, 0x93, 0xcb, 0x14, 0x01, 0x40, 0xdb, 0xfb, 0x53, 0x4c, -0x22, 0xaf, 0x94, 0xe6, 0x93, 0xca, 0x1e, 0x94, 0x01, 0x9e, -0x6d, 0xf9, 0xe0, 0x53, 0x4d, 0xbf, 0xb5, 0x68, 0xf9, 0x5e, -0xd4, 0x9e, 0x50, 0x3d, 0xb3, 0x40, 0x19, 0xdf, 0x66, 0xcf, -0x6a, 0x69, 0xb5, 0x15, 0xa4, 0xd1, 0x71, 0x4c, 0xf2, 0x85, -0x00, 0x66, 0xfd, 0x98, 0x67, 0xa5, 0x21, 0xb6, 0xe2, 0xb4, -0xfc, 0x9a, 0x4f, 0x26, 0x80, 0x32, 0xbe, 0xcb, 0xed, 0xcd, -0x30, 0xdb, 0x71, 0xd2, 0xb5, 0x9a, 0x13, 0xe9, 0x4c, 0x36, -0xf8, 0xed, 0x40, 0x19, 0x46, 0xd7, 0xda, 0xa3, 0xfb, 0x2f, -0xb5, 0x6c, 0x18, 0x38, 0xe9, 0x4c, 0x30, 0x7b, 0x50, 0x06, -0x43, 0x5a, 0xd3, 0x3e, 0xcb, 0xed, 0x5b, 0x3f, 0x67, 0xa8, -0xcc, 0x03, 0x34, 0x01, 0x91, 0xf6, 0x6f, 0x6a, 0x43, 0x6d, -0x9e, 0x82, 0xb5, 0xfe, 0xce, 0x0f, 0x6a, 0x6f, 0xd9, 0xc7, -0x7a, 0x00, 0xc6, 0xfb, 0x37, 0xb5, 0x27, 0xd9, 0xbd, 0xab, -0x67, 0xec, 0xc3, 0xd2, 0x90, 0xdb, 0x0a, 0x00, 0xc6, 0x16, -0xb9, 0xed, 0x4a, 0x6d, 0x40, 0xfe, 0x1a, 0xd7, 0xfb, 0x28, -0x1d, 0xa8, 0x36, 0xd4, 0x01, 0x90, 0x2d, 0x73, 0xda, 0x94, -0x5a, 0x67, 0xb5, 0x6b, 0x2d, 0xb7, 0x1d, 0x29, 0x45, 0xbf, -0xb5, 0x00, 0x65, 0x2d, 0xae, 0x3b, 0x54, 0x8b, 0x69, 0xed, -0x5a, 0x42, 0xdc, 0x0e, 0xd5, 0x22, 0xdb, 0x7b, 0x50, 0x06, -0x7a, 0x5a, 0xfb, 0x55, 0x88, 0xed, 0xb1, 0x8e, 0x2a, 0xe0, -0x80, 0x01, 0x52, 0xa4, 0x3d, 0x38, 0xa0, 0x0a, 0xa9, 0x07, -0xb5, 0x58, 0x8e, 0x1c, 0x62, 0xac, 0x24, 0x5c, 0xd4, 0xa8, -0x98, 0xed, 0x40, 0x11, 0xc7, 0x17, 0x15, 0x3a, 0x27, 0x14, -0xe5, 0x4a, 0x94, 0x2e, 0x3b, 0x50, 0x03, 0x51, 0x7a, 0x54, -0xa1, 0x71, 0x40, 0x5c, 0x53, 0xc0, 0xe2, 0x80, 0x00, 0x29, -0xd4, 0x52, 0x81, 0x9a, 0x00, 0x00, 0xe6, 0x9d, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x52, 0x60, 0x52, -0xd1, 0x40, 0x09, 0x81, 0x46, 0x3d, 0xcd, 0x2d, 0x14, 0x00, -0x98, 0xf7, 0x34, 0x9b, 0x69, 0xd4, 0x50, 0x03, 0x76, 0xd1, -0xb6, 0x9d, 0x45, 0x00, 0x37, 0x6d, 0x1b, 0x69, 0xd4, 0x50, -0x03, 0x70, 0x69, 0x08, 0xa7, 0xd2, 0x62, 0x80, 0x19, 0x81, -0x46, 0x05, 0x3f, 0x1e, 0xe6, 0x8c, 0x7b, 0x9a, 0x00, 0x66, -0x05, 0x1b, 0x69, 0xdb, 0x68, 0xdb, 0x40, 0x0d, 0xdb, 0x46, -0xda, 0x76, 0xda, 0x36, 0xd0, 0x03, 0x76, 0xd2, 0x6d, 0xcd, -0x3f, 0x6d, 0x18, 0x34, 0x00, 0xcd, 0x94, 0x9b, 0x2a, 0x4c, -0x1a, 0x31, 0xf5, 0xa0, 0x08, 0x8a, 0x52, 0x6c, 0xf6, 0xa9, -0x4a, 0xd2, 0x60, 0x50, 0x04, 0x5b, 0x7d, 0xa8, 0xdb, 0x52, -0xed, 0xa3, 0x6d, 0x00, 0x41, 0xb2, 0x8d, 0x95, 0x3e, 0xda, -0x36, 0xd0, 0x05, 0x7f, 0x2f, 0xda, 0x8f, 0x2e, 0xa7, 0xdb, -0x46, 0xda, 0x00, 0xae, 0x63, 0x14, 0x9b, 0x3d, 0xaa, 0xce, -0xdf, 0x6a, 0x4d, 0x94, 0x01, 0x59, 0x93, 0x8e, 0x94, 0xdd, -0x86, 0xad, 0x79, 0x78, 0xa4, 0x29, 0x8a, 0x00, 0xad, 0xe5, -0xe6, 0x93, 0xca, 0xf6, 0xab, 0x3b, 0x69, 0x36, 0xd0, 0x05, -0x6f, 0x26, 0x9a, 0x63, 0xcf, 0x6a, 0xb6, 0x56, 0x93, 0x67, -0xb5, 0x00, 0x52, 0xf2, 0x68, 0xf2, 0x6a, 0xe7, 0x97, 0x49, -0xb2, 0x80, 0x29, 0xf9, 0x1f, 0xe7, 0x14, 0x79, 0x15, 0x73, -0x60, 0xa4, 0xd9, 0x40, 0x14, 0xfc, 0x9a, 0x4f, 0x23, 0xda, -0xae, 0xf9, 0x74, 0x9e, 0x5d, 0x00, 0x52, 0xfb, 0x3d, 0x27, -0x91, 0xed, 0x57, 0xbc, 0xba, 0x3c, 0xba, 0x00, 0xa1, 0xe4, -0x63, 0xb6, 0x29, 0xc2, 0x1e, 0xf5, 0x6f, 0xcb, 0xf6, 0xa5, -0x11, 0xf1, 0x40, 0x15, 0x04, 0x34, 0xe5, 0x86, 0xad, 0x79, -0x74, 0xa2, 0x3c, 0x50, 0x05, 0x71, 0x16, 0x69, 0xcb, 0x16, -0x2a, 0xc0, 0x4c, 0x53, 0x82, 0x50, 0x04, 0x4b, 0x1e, 0x05, -0x3d, 0x52, 0xa4, 0x0b, 0x83, 0xcd, 0x3b, 0x6f, 0xb5, 0x00, -0x34, 0x27, 0xad, 0x3b, 0x6f, 0xb5, 0x38, 0x0e, 0x29, 0x68, -0x01, 0x00, 0xa5, 0xa5, 0x03, 0x34, 0xa0, 0x62, 0x80, 0x10, -0x0a, 0x75, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x02, 0x11, -0x9a, 0x4d, 0xb4, 0xea, 0x28, 0x01, 0xbb, 0x68, 0xdb, 0x4e, -0xa2, 0x80, 0x1b, 0x83, 0x46, 0x0d, 0x3a, 0x8a, 0x00, 0x66, -0x31, 0x45, 0x3e, 0x8a, 0x00, 0x65, 0x14, 0xfa, 0x28, 0x01, -0x94, 0x9b, 0x69, 0xf8, 0xa6, 0xd0, 0x02, 0x6d, 0xa4, 0xdb, -0x4e, 0xa2, 0x80, 0x1b, 0xb6, 0x8d, 0xbe, 0xd4, 0xea, 0x28, -0x01, 0x9b, 0x7d, 0xa8, 0xdb, 0xed, 0x4f, 0xa2, 0x80, 0x19, -0xb7, 0xeb, 0x49, 0xb3, 0xda, 0xa4, 0xa2, 0x80, 0x23, 0xda, -0x28, 0xda, 0x2a, 0x4a, 0x28, 0x02, 0x3d, 0x82, 0x93, 0x65, -0x49, 0x81, 0x46, 0x05, 0x00, 0x47, 0xb2, 0x8d, 0xbe, 0xd5, -0x26, 0x05, 0x21, 0x18, 0xa0, 0x06, 0x6d, 0xa7, 0x05, 0xc7, -0x6a, 0x29, 0xf4, 0x00, 0xcd, 0xb4, 0xa0, 0x53, 0xa8, 0xa0, -0x04, 0xdb, 0x4b, 0x45, 0x38, 0x74, 0xa0, 0x04, 0x03, 0x34, -0xa0, 0x52, 0xd1, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, -0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, -0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x1f, 0xff, -0xd9, }; - -static const char data_runtime_shtml[] = { -/* /runtime.shtml */ -0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, -0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, -0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, -0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, -0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, -0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0x0d, -0x0a, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, -0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, -0x0d, 0x0a, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, -0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, -0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, -0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, -0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, -0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, -0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, -0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, -0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, -0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, -0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, -0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, -0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, -0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, -0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, -0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, -0x0d, 0x0a, 0x3c, 0x68, 0x72, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x32, -0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, -0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, -0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, 0x0a, 0x50, 0x61, 0x67, -0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, -0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, -0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, -0x2e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, -0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, -0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, -0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, -0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0x0d, 0x0a, 0x25, 0x21, -0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x0d, -0x0a, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, -0x6f, 0x6e, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, -0x6e, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, -0x79, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, -0x3e, 0x0d, 0x0a, 0x0d, 0x0a, }; - -static const char data_stats_shtml[] = { -/* /stats.shtml */ -0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, -0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, -0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, -0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, -0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, -0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, -0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, -0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, -0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x72, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, -0x0d, 0x0a, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, -0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, -0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, -0x0a, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, -0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, -0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, -0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, -0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, -0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, -0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, -0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, -0x0d, 0x0a, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, -0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, -0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, -0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, -0x70, 0x65, 0x64, 0x0d, 0x0a, 0x49, 0x50, 0x20, 0x65, 0x72, -0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, -0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, -0x74, 0x68, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, -0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, -0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x0d, 0x0a, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, -0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, -0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, -0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, -0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, -0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x0d, 0x0a, 0x49, -0x43, 0x4d, 0x50, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, -0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, -0x65, 0x69, 0x76, 0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, -0x6e, 0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, -0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, -0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, -0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, -0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x0d, 0x0a, -0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, -0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x0d, -0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, -0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, -0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, -0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, -0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0x0d, 0x0a, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, -0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, -0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, -0x74, 0x0d, 0x0a, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, -0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, -0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, -0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x0d, -0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, -0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0x0d, 0x0a, -0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, -0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, -0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x0d, -0x0a, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, -0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, -0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, -0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, -0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, -0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, -0x73, 0x0d, 0x0a, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, -0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, -0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x0d, -0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, -0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, }; - -static const char data_tcp_shtml[] = { -/* /tcp.shtml */ -0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, -0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, -0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, -0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, -0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, -0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, -0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, -0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, -0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x72, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x0d, 0x0a, 0x3c, -0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, -0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, -0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, 0x0a, 0x3c, -0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, -0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, -0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, -0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, -0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, -0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, -0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, -0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, -0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, -0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, -0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, -0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x0d, 0x0a, 0x25, -0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, -0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0d, 0x0a, 0x3c, -0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, -0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, -0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, -0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, -0x0a, 0x0d, 0x0a, }; - - - -const struct httpd_fsdata_file file_404_html[] = {NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}; - -const struct httpd_fsdata_file file_index_html[] = {file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}; - -const struct httpd_fsdata_file file_index_shtml[] = {file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}; - -const struct httpd_fsdata_file file_io_shtml[] = {file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}; - -const struct httpd_fsdata_file file_logo_jpg[] = {file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10, 0}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}; - -const struct httpd_fsdata_file file_stats_shtml[] = {file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 62572085f..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,163 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt b/FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file
    LocalRemoteStateRetransmissionsTimerFlags